summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorRoger Leigh <rleigh@debian.org>2008-10-26 16:11:41 +0000
committerRoger Leigh <rleigh@debian.org>2008-10-26 16:11:41 +0000
commitdfae5860833782af557deb35e286d7e186fe3cf5 (patch)
treee3b4282ae08e120f78cd0c097f7cb3b570e94da2 /doc
parent3b59bb0a607ec27ea60f07d1cd5d1bbb4483c832 (diff)
Imported Upstream version 4.3.99+cvs20050702
Diffstat (limited to 'doc')
-rw-r--r--doc/FAQ.html10
-rw-r--r--doc/Makefile.am189
-rw-r--r--doc/Makefile.in998
-rw-r--r--doc/README.maintaining814
-rw-r--r--doc/appendices.texi15
-rw-r--r--doc/copying.texi28
-rw-r--r--doc/developer/Makefile.am191
-rw-r--r--doc/developer/Makefile.in636
-rw-r--r--doc/developer/copying.xml40
-rw-r--r--doc/developer/dither.xml679
-rw-r--r--doc/developer/escp2.xml1843
-rw-r--r--doc/developer/gpl-appendix.xml502
-rw-r--r--doc/developer/gutenprint.pdfbin0 -> 426243 bytes
-rw-r--r--doc/developer/gutenprint.xml59
-rw-r--r--doc/developer/html-stamp (renamed from doc/html-stamp)0
-rw-r--r--doc/developer/introduction.xml62
-rw-r--r--doc/developer/new-printer.xml883
-rw-r--r--doc/developer/problems.xml22
-rw-r--r--doc/developer/reference-html/a2122.html220
-rw-r--r--doc/developer/reference-html/c1717.html278
-rw-r--r--doc/developer/reference-html/c194.html167
-rw-r--r--doc/developer/reference-html/c1968.html953
-rw-r--r--doc/developer/reference-html/c200.html396
-rw-r--r--doc/developer/reference-html/c39.html182
-rw-r--r--doc/developer/reference-html/c464.html1702
-rw-r--r--doc/developer/reference-html/c48.html213
-rw-r--r--doc/developer/reference-html/f14.html229
-rw-r--r--doc/developer/reference-html/index.html481
-rw-r--r--doc/developer/reference-html/x1669.html348
-rw-r--r--doc/developer/reference-html/x1734.html1922
-rw-r--r--doc/developer/reference-html/x2153.html616
-rw-r--r--doc/developer/reference-html/x271.html1230
-rw-r--r--doc/developer/reference-html/x67.html182
-rw-r--r--doc/developer/reference-html/x79.html612
-rw-r--r--doc/developer/reference-html/x955.html2297
-rw-r--r--doc/developer/using.xml238
-rw-r--r--doc/developer/weave.xml1409
-rw-r--r--doc/dither.texi504
-rw-r--r--doc/escp2.texi919
-rw-r--r--doc/functions.texi744
-rw-r--r--doc/gimpprint.dvibin350616 -> 0 bytes
-rw-r--r--doc/gimpprint.info94
-rw-r--r--doc/gimpprint.info-11100
-rw-r--r--doc/gimpprint.info-21080
-rw-r--r--doc/gimpprint.info-31007
-rw-r--r--doc/gimpprint.info-41151
-rw-r--r--doc/gimpprint.info-5872
-rw-r--r--doc/gimpprint.ps11226
-rw-r--r--doc/gimpprint.texi130
-rw-r--r--doc/gpl.texi396
-rw-r--r--doc/gutenprint-stamp0
-rw-r--r--doc/gutenprint.dox.in1078
-rw-r--r--doc/gutenprint/gutenprint.tag8996
-rw-r--r--doc/gutenprint/html/annotated.html47
-rw-r--r--doc/gutenprint/html/array_8h.html61
-rw-r--r--doc/gutenprint/html/bit-ops_8h.html555
-rw-r--r--doc/gutenprint/html/channel_8h.html885
-rw-r--r--doc/gutenprint/html/classes.html17
-rw-r--r--doc/gutenprint/html/color_8h.html60
-rw-r--r--doc/gutenprint/html/curve-cache_8h.html447
-rw-r--r--doc/gutenprint/html/curve_8h.html193
-rw-r--r--doc/gutenprint/html/deprecated.html21
-rw-r--r--doc/gutenprint/html/dir_000000.html20
-rw-r--r--doc/gutenprint/html/dir_000001.html143
-rw-r--r--doc/gutenprint/html/dirs.html18
-rw-r--r--doc/gutenprint/html/dither_8h.html1822
-rw-r--r--doc/gutenprint/html/doxygen.css309
-rw-r--r--doc/gutenprint/html/doxygen.pngbin0 -> 1281 bytes
-rw-r--r--doc/gutenprint/html/files.html39
-rw-r--r--doc/gutenprint/html/functions.html177
-rw-r--r--doc/gutenprint/html/functions_vars.html177
-rw-r--r--doc/gutenprint/html/globals.html21
-rw-r--r--doc/gutenprint/html/globals_0x62.html21
-rw-r--r--doc/gutenprint/html/globals_0x63.html24
-rw-r--r--doc/gutenprint/html/globals_0x64.html22
-rw-r--r--doc/gutenprint/html/globals_0x67.html21
-rw-r--r--doc/gutenprint/html/globals_0x6e.html21
-rw-r--r--doc/gutenprint/html/globals_0x70.html27
-rw-r--r--doc/gutenprint/html/globals_0x73.html644
-rw-r--r--doc/gutenprint/html/globals_0x74.html21
-rw-r--r--doc/gutenprint/html/globals_defs.html95
-rw-r--r--doc/gutenprint/html/globals_enum.html31
-rw-r--r--doc/gutenprint/html/globals_eval.html83
-rw-r--r--doc/gutenprint/html/globals_func.html474
-rw-r--r--doc/gutenprint/html/globals_type.html62
-rw-r--r--doc/gutenprint/html/globals_vars.html29
-rw-r--r--doc/gutenprint/html/group__array.html607
-rw-r--r--doc/gutenprint/html/group__color.html504
-rw-r--r--doc/gutenprint/html/group__curve.html2470
-rw-r--r--doc/gutenprint/html/group__image.html353
-rw-r--r--doc/gutenprint/html/group__intl.html243
-rw-r--r--doc/gutenprint/html/group__intl__internal.html243
-rw-r--r--doc/gutenprint/html/group__list.html1312
-rw-r--r--doc/gutenprint/html/group__papersize.html277
-rw-r--r--doc/gutenprint/html/group__printer.html997
-rw-r--r--doc/gutenprint/html/group__sequence.html1484
-rw-r--r--doc/gutenprint/html/group__util.html1835
-rw-r--r--doc/gutenprint/html/group__vars.html6594
-rw-r--r--doc/gutenprint/html/group__version.html441
-rw-r--r--doc/gutenprint/html/gutenprint-intl-internal_8h.html38
-rw-r--r--doc/gutenprint/html/gutenprint-intl_8h.html38
-rw-r--r--doc/gutenprint/html/gutenprint-module_8h.html59
-rw-r--r--doc/gutenprint/html/gutenprint-version_8h.html60
-rw-r--r--doc/gutenprint/html/gutenprint_8h.html34
-rw-r--r--doc/gutenprint/html/image_8h.html54
-rw-r--r--doc/gutenprint/html/index.html14
-rw-r--r--doc/gutenprint/html/list_8h.html120
-rw-r--r--doc/gutenprint/html/module_8h.html311
-rw-r--r--doc/gutenprint/html/modules.html27
-rw-r--r--doc/gutenprint/html/mxml_8h.html1367
-rw-r--r--doc/gutenprint/html/pages.html16
-rw-r--r--doc/gutenprint/html/paper_8h.html50
-rw-r--r--doc/gutenprint/html/path_8h.html102
-rw-r--r--doc/gutenprint/html/printers_8h.html100
-rw-r--r--doc/gutenprint/html/sequence_8h.html111
-rw-r--r--doc/gutenprint/html/string-list_8h.html418
-rw-r--r--doc/gutenprint/html/structdither__matrix__impl.html396
-rw-r--r--doc/gutenprint/html/structstp__cached__curve__t.html121
-rw-r--r--doc/gutenprint/html/structstp__color.html99
-rw-r--r--doc/gutenprint/html/structstp__colorfuncs__t.html124
-rw-r--r--doc/gutenprint/html/structstp__curve__point__t.html86
-rw-r--r--doc/gutenprint/html/structstp__dither__matrix__generic.html146
-rw-r--r--doc/gutenprint/html/structstp__dither__matrix__normal.html146
-rw-r--r--doc/gutenprint/html/structstp__dither__matrix__short.html146
-rw-r--r--doc/gutenprint/html/structstp__dotsize.html71
-rw-r--r--doc/gutenprint/html/structstp__double__bound__t.html80
-rw-r--r--doc/gutenprint/html/structstp__family.html74
-rw-r--r--doc/gutenprint/html/structstp__image.html285
-rw-r--r--doc/gutenprint/html/structstp__int__bound__t.html80
-rw-r--r--doc/gutenprint/html/structstp__lineactive__t.html71
-rw-r--r--doc/gutenprint/html/structstp__linebounds__t.html96
-rw-r--r--doc/gutenprint/html/structstp__linebufs__t.html71
-rw-r--r--doc/gutenprint/html/structstp__linecount__t.html71
-rw-r--r--doc/gutenprint/html/structstp__lineoff__t.html71
-rw-r--r--doc/gutenprint/html/structstp__module.html221
-rw-r--r--doc/gutenprint/html/structstp__module__version.html71
-rw-r--r--doc/gutenprint/html/structstp__mxml__attr__s.html71
-rw-r--r--doc/gutenprint/html/structstp__mxml__node__s.html196
-rw-r--r--doc/gutenprint/html/structstp__mxml__text__s.html71
-rw-r--r--doc/gutenprint/html/structstp__mxml__value__s.html96
-rw-r--r--doc/gutenprint/html/structstp__papersize__t.html310
-rw-r--r--doc/gutenprint/html/structstp__param__string__t.html79
-rw-r--r--doc/gutenprint/html/structstp__parameter__t.html709
-rw-r--r--doc/gutenprint/html/structstp__pass__t.html171
-rw-r--r--doc/gutenprint/html/structstp__printfuncs__t.html299
-rw-r--r--doc/gutenprint/html/structstp__raw__t.html80
-rw-r--r--doc/gutenprint/html/structstp__shade.html96
-rw-r--r--doc/gutenprint/html/structstp__weave__t.html196
-rw-r--r--doc/gutenprint/html/unionstp__mxml__value__u.html146
-rw-r--r--doc/gutenprint/html/util_8h.html140
-rw-r--r--doc/gutenprint/html/vars_8h.html477
-rw-r--r--doc/gutenprint/html/weave_8h.html822
-rw-r--r--doc/gutenprint/html/xml_8h.html700
-rw-r--r--doc/gutenprintui2-stamp0
-rw-r--r--doc/gutenprintui2.dox.in1078
-rw-r--r--doc/gutenprintui2/gutenprintui2.tag1121
-rw-r--r--doc/gutenprintui2/html/annotated.html20
-rw-r--r--doc/gutenprintui2/html/classes.html17
-rw-r--r--doc/gutenprintui2/html/curve_8h.html610
-rw-r--r--doc/gutenprintui2/html/dir_000000.html20
-rw-r--r--doc/gutenprintui2/html/dir_000001.html26
-rw-r--r--doc/gutenprintui2/html/dirs.html18
-rw-r--r--doc/gutenprintui2/html/doxygen.css309
-rw-r--r--doc/gutenprintui2/html/doxygen.pngbin0 -> 1281 bytes
-rw-r--r--doc/gutenprintui2/html/files.html18
-rw-r--r--doc/gutenprintui2/html/functions.html105
-rw-r--r--doc/gutenprintui2/html/functions_vars.html105
-rw-r--r--doc/gutenprintui2/html/gammacurve_8h.html315
-rw-r--r--doc/gutenprintui2/html/globals.html126
-rw-r--r--doc/gutenprintui2/html/globals_defs.html32
-rw-r--r--doc/gutenprintui2/html/globals_enum.html20
-rw-r--r--doc/gutenprintui2/html/globals_eval.html28
-rw-r--r--doc/gutenprintui2/html/globals_func.html89
-rw-r--r--doc/gutenprintui2/html/globals_type.html23
-rw-r--r--doc/gutenprintui2/html/gutenprintui_8h.html1953
-rw-r--r--doc/gutenprintui2/html/index.html14
-rw-r--r--doc/gutenprintui2/html/struct__StpuiCurve.html396
-rw-r--r--doc/gutenprintui2/html/struct__StpuiCurveClass.html171
-rw-r--r--doc/gutenprintui2/html/struct__StpuiGammaCurve.html196
-rw-r--r--doc/gutenprintui2/html/struct__StpuiGammaCurveClass.html146
-rw-r--r--doc/gutenprintui2/html/structstpui__image.html221
-rw-r--r--doc/gutenprintui2/html/structstpui__plist__t.html346
-rw-r--r--doc/gutenprintui2/html/typebuiltins_8h.html187
-rw-r--r--doc/indices.texi14
-rw-r--r--doc/integrating.texi192
-rw-r--r--doc/introduction.texi38
-rw-r--r--doc/manual-html/gimpprint_1.html63
-rw-r--r--doc/manual-html/gimpprint_10.html53
-rw-r--r--doc/manual-html/gimpprint_11.html86
-rw-r--r--doc/manual-html/gimpprint_12.html558
-rw-r--r--doc/manual-html/gimpprint_13.html45
-rw-r--r--doc/manual-html/gimpprint_14.html102
-rw-r--r--doc/manual-html/gimpprint_15.html141
-rw-r--r--doc/manual-html/gimpprint_16.html184
-rw-r--r--doc/manual-html/gimpprint_17.html61
-rw-r--r--doc/manual-html/gimpprint_18.html156
-rw-r--r--doc/manual-html/gimpprint_19.html38
-rw-r--r--doc/manual-html/gimpprint_2.html495
-rw-r--r--doc/manual-html/gimpprint_20.html315
-rw-r--r--doc/manual-html/gimpprint_21.html22
-rw-r--r--doc/manual-html/gimpprint_22.html22
-rw-r--r--doc/manual-html/gimpprint_23.html37
-rw-r--r--doc/manual-html/gimpprint_24.html29
-rw-r--r--doc/manual-html/gimpprint_25.html611
-rw-r--r--doc/manual-html/gimpprint_26.html31
-rw-r--r--doc/manual-html/gimpprint_27.html152
-rw-r--r--doc/manual-html/gimpprint_28.html77
-rw-r--r--doc/manual-html/gimpprint_29.html111
-rw-r--r--doc/manual-html/gimpprint_3.html41
-rw-r--r--doc/manual-html/gimpprint_30.html246
-rw-r--r--doc/manual-html/gimpprint_31.html87
-rw-r--r--doc/manual-html/gimpprint_32.html723
-rw-r--r--doc/manual-html/gimpprint_33.html247
-rw-r--r--doc/manual-html/gimpprint_34.html29
-rw-r--r--doc/manual-html/gimpprint_35.html52
-rw-r--r--doc/manual-html/gimpprint_36.html560
-rw-r--r--doc/manual-html/gimpprint_37.html663
-rw-r--r--doc/manual-html/gimpprint_38.html115
-rw-r--r--doc/manual-html/gimpprint_39.html59
-rw-r--r--doc/manual-html/gimpprint_4.html82
-rw-r--r--doc/manual-html/gimpprint_40.html115
-rw-r--r--doc/manual-html/gimpprint_41.html52
-rw-r--r--doc/manual-html/gimpprint_42.html457
-rw-r--r--doc/manual-html/gimpprint_43.html189
-rw-r--r--doc/manual-html/gimpprint_44.html117
-rw-r--r--doc/manual-html/gimpprint_45.html49
-rw-r--r--doc/manual-html/gimpprint_46.html249
-rw-r--r--doc/manual-html/gimpprint_47.html124
-rw-r--r--doc/manual-html/gimpprint_5.html36
-rw-r--r--doc/manual-html/gimpprint_6.html106
-rw-r--r--doc/manual-html/gimpprint_7.html39
-rw-r--r--doc/manual-html/gimpprint_8.html66
-rw-r--r--doc/manual-html/gimpprint_9.html79
-rw-r--r--doc/manual-html/gimpprint_foot.html33
-rw-r--r--doc/manual-html/gimpprint_toc.html108
-rw-r--r--doc/manual-html/print-color.pngbin11217 -> 0 bytes
-rw-r--r--doc/manual-html/print-main.pngbin17787 -> 0 bytes
-rw-r--r--doc/manual-html/print-setup.pngbin3539 -> 0 bytes
-rw-r--r--doc/new-printer.texi707
-rw-r--r--doc/overview.texi19
-rw-r--r--doc/print-color.eps788
-rw-r--r--doc/print-color.pngbin11217 -> 0 bytes
-rw-r--r--doc/print-color.txt1
-rw-r--r--doc/print-main.eps551
-rw-r--r--doc/print-main.pngbin17787 -> 0 bytes
-rw-r--r--doc/print-main.txt1
-rw-r--r--doc/print-setup.eps225
-rw-r--r--doc/print-setup.pngbin3539 -> 0 bytes
-rw-r--r--doc/print-setup.txt1
-rw-r--r--doc/problems.texi17
-rw-r--r--doc/programs.texi278
-rw-r--r--doc/stamp-vti3
-rw-r--r--doc/users_guide/Makefile.am318
-rw-r--r--doc/users_guide/Makefile.in875
-rw-r--r--doc/users_guide/README2
-rw-r--r--doc/users_guide/cups-edition.sgml58
-rw-r--r--doc/users_guide/cups.sgml30
-rw-r--r--doc/users_guide/figures/CVS/Entries19
-rw-r--r--doc/users_guide/figures/CVS/Repository1
-rw-r--r--doc/users_guide/figures/CVS/Root1
-rw-r--r--doc/users_guide/figures/CVS/Tag1
-rw-r--r--doc/users_guide/figures/README24
-rw-r--r--doc/users_guide/figures/cups_admin.eps594
-rw-r--r--doc/users_guide/figures/cups_admin_device.eps581
-rw-r--r--doc/users_guide/figures/cups_admin_make.eps599
-rw-r--r--doc/users_guide/figures/cups_admin_model.eps620
-rw-r--r--doc/users_guide/figures/cups_admin_success.eps573
-rw-r--r--doc/users_guide/figures/cups_config_printer.eps675
-rw-r--r--doc/users_guide/figures/cups_my_printer.eps647
-rw-r--r--doc/users_guide/figures/cups_printers.eps572
-rw-r--r--doc/users_guide/figures/cups_startup.eps596
-rw-r--r--doc/users_guide/figures/gimp-print-gui-1.eps825
-rw-r--r--doc/users_guide/figures/gimp-print-gui.eps851
-rw-r--r--doc/users_guide/figures/gimp-print-new-printer.eps440
-rw-r--r--doc/users_guide/figures/gimp-print-print-color-adjust.eps605
-rw-r--r--doc/users_guide/figures/gimp-print-setup.eps463
-rw-r--r--doc/users_guide/figures/gimp_image.eps1024
-rw-r--r--doc/users_guide/figures/gimp_startup.eps483
-rw-r--r--doc/users_guide/gimp-edition.sgml58
-rw-r--r--doc/users_guide/gimp.sgml22
-rw-r--r--doc/users_guide/history.sgml10
-rw-r--r--doc/users_guide/html/HTML.manifest21
-rw-r--r--doc/users_guide/html/a630.html (renamed from doc/users_guide/html/gfdl.html)117
-rw-r--r--doc/users_guide/html/c29.html58
-rw-r--r--doc/users_guide/html/c443.html (renamed from doc/users_guide/html/c447.html)97
-rw-r--r--doc/users_guide/html/c568.html (renamed from doc/users_guide/html/c570.html)230
-rw-r--r--doc/users_guide/html/c61.html (renamed from doc/users_guide/html/ch-gimp-and-gimp-print.html)74
-rw-r--r--doc/users_guide/html/docbook.css20
-rw-r--r--doc/users_guide/html/figures/cups_admin.pngbin11105 -> 0 bytes
-rw-r--r--doc/users_guide/html/figures/cups_admin_device.pngbin10515 -> 0 bytes
-rw-r--r--doc/users_guide/html/figures/cups_admin_make.pngbin11540 -> 0 bytes
-rw-r--r--doc/users_guide/html/figures/cups_admin_model.pngbin12445 -> 0 bytes
-rw-r--r--doc/users_guide/html/figures/cups_admin_success.pngbin10441 -> 0 bytes
-rw-r--r--doc/users_guide/html/figures/cups_config_printer.pngbin15395 -> 0 bytes
-rw-r--r--doc/users_guide/html/figures/cups_my_printer.pngbin14544 -> 0 bytes
-rw-r--r--doc/users_guide/html/figures/cups_printers.pngbin10008 -> 0 bytes
-rw-r--r--doc/users_guide/html/figures/cups_startup.pngbin11252 -> 0 bytes
-rw-r--r--doc/users_guide/html/figures/gimp-print-gui-1.pngbin24241 -> 0 bytes
-rw-r--r--doc/users_guide/html/figures/gimp-print-gui.pngbin26080 -> 0 bytes
-rw-r--r--doc/users_guide/html/figures/gimp-print-new-printer.pngbin1438 -> 0 bytes
-rw-r--r--doc/users_guide/html/figures/gimp-print-print-color-adjust.pngbin11402 -> 0 bytes
-rw-r--r--doc/users_guide/html/figures/gimp-print-setup.pngbin2973 -> 0 bytes
-rw-r--r--doc/users_guide/html/figures/gimp_image.pngbin35648 -> 0 bytes
-rw-r--r--doc/users_guide/html/figures/gimp_startup.pngbin3890 -> 0 bytes
-rw-r--r--doc/users_guide/html/index.html (renamed from doc/users_guide/html/book1.html)204
-rw-r--r--doc/users_guide/html/ln12.html88
-rw-r--r--doc/users_guide/html/stylesheet-images/caution.gifbin1039 -> 0 bytes
-rw-r--r--doc/users_guide/html/stylesheet-images/home.gifbin995 -> 0 bytes
-rw-r--r--doc/users_guide/html/stylesheet-images/important.gifbin1081 -> 0 bytes
-rw-r--r--doc/users_guide/html/stylesheet-images/next.gifbin964 -> 0 bytes
-rw-r--r--doc/users_guide/html/stylesheet-images/note.gifbin1070 -> 0 bytes
-rw-r--r--doc/users_guide/html/stylesheet-images/prev.gifbin944 -> 0 bytes
-rw-r--r--doc/users_guide/html/stylesheet-images/tip.gifbin1029 -> 0 bytes
-rw-r--r--doc/users_guide/html/stylesheet-images/toc-blank.gifbin95 -> 0 bytes
-rw-r--r--doc/users_guide/html/stylesheet-images/toc-minus.gifbin843 -> 0 bytes
-rw-r--r--doc/users_guide/html/stylesheet-images/toc-plus.gifbin846 -> 0 bytes
-rw-r--r--doc/users_guide/html/stylesheet-images/up.gifbin922 -> 0 bytes
-rw-r--r--doc/users_guide/html/stylesheet-images/warning.gifbin1052 -> 0 bytes
-rw-r--r--doc/users_guide/html/x452.html (renamed from doc/users_guide/html/x456.html)148
-rw-r--r--doc/users_guide/html/x544.html (renamed from doc/users_guide/html/x548.html)77
-rw-r--r--doc/users_guide/html/x559.html (renamed from doc/users_guide/html/x562.html)98
-rw-r--r--doc/users_guide/html/x640.html (renamed from doc/users_guide/html/x642.html)43
-rw-r--r--doc/users_guide/html/x650.html (renamed from doc/users_guide/html/x652.html)43
-rw-r--r--doc/users_guide/html/x654.html (renamed from doc/users_guide/html/x656.html)43
-rw-r--r--doc/users_guide/html/x660.html (renamed from doc/users_guide/html/x662.html)43
-rw-r--r--doc/users_guide/html/x696.html (renamed from doc/users_guide/html/x698.html)43
-rw-r--r--doc/users_guide/html/x701.html (renamed from doc/users_guide/html/x703.html)43
-rw-r--r--doc/users_guide/html/x705.html (renamed from doc/users_guide/html/x707.html)43
-rw-r--r--doc/users_guide/html/x709.html (renamed from doc/users_guide/html/x711.html)43
-rw-r--r--doc/users_guide/html/x712.html (renamed from doc/users_guide/html/x714.html)43
-rw-r--r--doc/users_guide/html/x715.html (renamed from doc/users_guide/html/x717.html)43
-rw-r--r--doc/users_guide/html/x720.html (renamed from doc/users_guide/html/x722.html)37
-rw-r--r--doc/users_guide/html/x85.html373
-rw-r--r--doc/users_guide/title.sgml32
-rw-r--r--doc/users_guide/users-guide.pdfbin393572 -> 217286 bytes
-rw-r--r--doc/users_guide/users-guide.ps14972
-rw-r--r--doc/users_guide/users-guide.sgml18
-rw-r--r--doc/users_guide/util-edition.sgml57
-rw-r--r--doc/users_guide/utils.sgml8
-rw-r--r--doc/using.texi46
-rw-r--r--doc/version.texi3
-rw-r--r--doc/weave.texi1290
342 files changed, 73654 insertions, 59062 deletions
diff --git a/doc/FAQ.html b/doc/FAQ.html
index d3dcdc9..a9599ff 100644
--- a/doc/FAQ.html
+++ b/doc/FAQ.html
@@ -1,10 +1,10 @@
<html>
<head>
-<title>The Gimp-Print FAQ</title>
+<title>The Gutenprint FAQ</title>
</head>
<body>
-<h2>Gimp-Print FAQ</h2>
+<h2>Gutenprint FAQ</h2>
<ol>
@@ -37,7 +37,7 @@ understand this, don't worry; just do it. If you're nervous about
doing that, reboot.
<p><li>If you don't have the Gimp installed on your system, and just
-want to compile Gimp-Print for CUPS (for example), you need to pass
+want to compile Gutenprint for CUPS (for example), you need to pass
<tt>configure</tt> the option <tt>--with-gimp=no</tt>, so it won't try
to look for the Gimp and fail.
@@ -63,7 +63,7 @@ printing</h3>
<p>Many Epson printers (in particular) do this if they encounter an
error in the command stream. This usually indicates a bug in
-Gimp-Print; please report it to <a
+Gutenprint; please report it to <a
mailto="gimp-print-devel@sourceforge.net">gimp-print-devel@sourceforge.net</a>
or via the bug tracking system at <a
href="http://gimp-print.sourceforge.net">http://gimp-print.sourceforge.net</a>.
@@ -187,7 +187,7 @@ it. Of course, as soon as you've read back status from the printer,
you know it's working (although if you're unable to read status out of
the printer, you might have a different problem; see above).
-<p>Printing to your printer from Gimp-Print, whether you use the Print
+<p>Printing to your printer from Gutenprint, whether you use the Print
plugin, the CUPS driver, or the Ghostscript driver, will also take the
printer out of packet mode. But then again, if you successfully print
to your printer, you know it's working, so why worry? If you're
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 053a189..dde0386 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,4 +1,4 @@
-## $Id: Makefile.am,v 1.27.2.3 2002/05/11 23:07:16 rleigh Exp $
+## $Id: Makefile.am,v 1.41 2005/04/19 01:31:03 rlk Exp $
## Copyright (C) 2000 Roger Leigh
##
## This program is free software; you can redistribute it and/or modify
@@ -23,171 +23,70 @@ AUTOMAKE_OPTIONS = 1.4 gnu
MAINT_CHARSET = latin1
-SUBDIRS = users_guide
+SUBDIRS = developer users_guide
+include $(top_srcdir)/scripts/global.mk
-## Variables
-
-MANUAL = gimpprint
-HTMLDIR = manual-html
-DOCS = $(MANUAL).dvi $(MANUAL).ps html-stamp
-
-IMAGES = \
- print-color.png \
- print-main.png \
- print-setup.png
-
-EPS_IMAGES = $(addsuffix .eps,$(basename $(IMAGES)))
-TEXT_IMAGES = $(addsuffix .txt,$(basename $(IMAGES)))
-
-if MAINTAINER_MODE
-MAINT_MODE = true
-else
-MAINT_MODE = false
-endif
-
-USER_GUIDE = $(MANUAL).ps html
+## Variables
-STANDARD_TARGETS=@USER_GUIDE@
+docdir = $(datadir)/doc/$(PACKAGE)
+## Rules
if MAINTAINER_MODE
-ALL_LOCAL_TARGETS = docs
+all-local: gutenprint-stamp gutenprintui2-stamp
else
-ALL_LOCAL_TARGETS = $(STANDARD_TARGETS)
+all-local:
endif
+# Rerun doxygen whenever autogen is run
+gutenprintui2: gutenprintui2-stamp
+gutenprintui2-stamp: gutenprintui2.dox $(top_srcdir)/configure
+ $(RM) -rf gutenprintui2/html
+ $(DOXYGEN) gutenprintui2.dox
+ touch $@
-## Data
-
-info_TEXINFOS = gimpprint.texi
-
-gimpprint_TEXINFOS = overview.texi copying.texi gpl.texi introduction.texi using.texi functions.texi programs.texi problems.texi appendices.texi dither.texi weave.texi escp2.texi new-printer.texi indices.texi integrating.texi version.texi
+gutenprint: gutenprint-stamp
+gutenprint-stamp: gutenprint.dox $(top_srcdir)/configure
+ $(RM) -rf gutenprint/html
+ $(DOXYGEN) gutenprint.dox
+ touch $@
-
-## Rules
-
-all-local: $(DOCS)
-
-docs: $(DOCS)
- cd users_guide; $(MAKE) docs
+docs: gutenprint-stamp
+ cd developer; $(MAKE)
+ cd users_guide; $(MAKE)
ps: $(MANUAL).ps
+ cd developer; $(MAKE) ps
cd users_guide; $(MAKE) ps
pdf: $(MANUAL).pdf
+ cd developer; $(MAKE) pdf
cd users_guide; $(MAKE) pdf
-
-TEXI2DVIFLAGS = -I $(srcdir)
-gimpprint.dvi: $(EPS_IMAGES) $(addprefix $(srcdir)/,$(gimpprint_TEXINFOS) $(info_TEXINFOS))
- $(TEXI2DVI) $(TEXI2DVIFLAGS) $(srcdir)/gimpprint.texi
-
-%.eps: %.png
- $(CONVERT) $< EPS2:$@
-
-html: html-stamp
+html:
+ cd developer; $(MAKE) html
cd users_guide; $(MAKE) html
-## Note the rather weird way of setting the exit status; this is because
-## texi2html doesn't set the exit status.
-html-stamp: $(addprefix $(srcdir)/,$(gimpprint_TEXINFOS) $(info_TEXINFOS))
- $(RM) -rf $(HTMLDIR)-tmp
- mkdir $(HTMLDIR)-tmp
- images="$(addprefix $(srcdir)/, $(IMAGES))"; \
- for image in $$images ; do \
- cp -p $$image $(HTMLDIR)-tmp ; \
- done
- cd $(HTMLDIR)-tmp ; \
- $(TEXI2HTML) -menu -split_node -number -expandinfo \
- -I ../$(srcdir) ../$(srcdir)/$(MANUAL).texi 2>&1
- $(RM) -rf $(HTMLDIR)
- mv $(HTMLDIR)-tmp $(HTMLDIR)
- touch html-stamp
-
-$(MANUAL).ps: $(MANUAL).dvi
- TEXPICTS=$(srcdir):. $(DVIPS) $< -o $@
-
-$(MANUAL).pdf: $(MANUAL).dvi
- TEXPICTS=$(srcdir):. $(DVIPDF) $< $@
-
-install-data-local: $(STANDARD_TARGETS)
- if test -n '$(STANDARD_TARGETS)' ; then \
- $(mkinstalldirs) $(DESTDIR)$(datadir)/$(PACKAGE)/doc ; \
- $(mkinstalldirs) $(DESTDIR)$(datadir)/$(PACKAGE)/doc/$(HTMLDIR) ; \
- if test -f $(MANUAL).ps ; then \
- $(INSTALL_DATA) $(MANUAL).ps $(DESTDIR)$(datadir)/$(PACKAGE)/doc ; \
- elif test -f $(srcdir)/$(MANUAL).ps ; then \
- $(INSTALL_DATA) $(srcdir)/$(MANUAL).ps $(DESTDIR)$(datadir)/$(PACKAGE)/doc ; \
- fi ; \
- if test -d $(HTMLDIR) ; then \
- HTMLSRCDIR="$(HTMLDIR)" ; \
- elif test -d $(srcdir)/$(HTMLDIR) ; then \
- HTMLSRCDIR="$(srcdir)/$(HTMLDIR)" ; \
- fi ; \
- for file in $$HTMLSRCDIR/* ; do \
- if test -f $$file ; then \
- $(INSTALL_DATA) $$file $(DESTDIR)$(datadir)/$(PACKAGE)/doc/$(HTMLDIR) ; \
- fi ; \
- done ; \
- fi
-
-dist-hook: html
- for dir in $(HTMLDIR) ; do \
- if test -d $(srcdir)/$$dir ; then \
- mkdir $(distdir)/$$dir; \
- for dirfile in $(srcdir)/$$dir/*; do \
- if test -f $$dirfile ; then \
- cp -p $$dirfile $(distdir)/$$dir; \
- fi \
- done \
- fi \
- done
-
-CLEAN_MANUALS = \
- $(RM) -rf html-stamp $(HTMLDIR) ; \
- $(RM) -f $(MANUAL).pdf $(MANUAL).ps $(MANUAL).dvi ; \
- $(RM) -f $(EPS_IMAGES)
-
-clean-local:
- if test $(srcdir) = '.' -a $(MAINT_MODE) = false ; then \
- echo 'clean-local: Not removing $(HTMLDIR)' ; \
- echo 'clean-local: Not removing $(MANUAL).pdf' ; \
- echo 'clean-local: Not removing $(MANUAL).ps' ; \
- echo 'clean-local: Not removing $(MANUAL).dvi' ; \
- echo 'clean-local: Not removing EPS figures' ; \
- else \
- $(CLEAN_MANUALS) ; \
- fi
- -$(RM) -rf *.tex *.log *.aux *.gz *.out *.junk *.fot
- -$(RM) -rf *.ky *.pg *.toc *.tp *.vr *.vrs
- -$(RM) -rf $(HTMLDIR)-tmp
-
-veryclean:
- $(MAKE) MAINT_MODE=true clean
-
-maintainer-clean-local:
- $(CLEAN_MANUALS)
-
-# We duplicate mostlyclean-aminfo here because we do not want to remove
-# the .dvi and .ps files that mostlyclean-aminfo wants to remove. The
-# reason why is that we do not want make clean to force a rebuild of the
-# doc, since users may not have the texinfo tools required to do so.
-# Unfortunately, this generates a warning about overriding commands for
-# mostlyclean-aminfo.
-mostlyclean-aminfo:
- -$(RM) -f gimpprint.aux gimpprint.cp gimpprint.cps \
- gimpprint.fn gimpprint.fns gimpprint.ky gimpprint.kys \
- gimpprint.log gimpprint.pg gimpprint.toc \
- gimpprint.tp gimpprint.tps gimpprint.vr gimpprint.vrs \
- gimpprint.op gimpprint.tr gimpprint.cv gimpprint.cn
-
## Clean
-MAINTAINERCLEANFILES = Makefile.in html-stamp
-
-EXTRA_DIST = $(DOCS) $(IMAGES) $(EPS_IMAGES) $(TEXT_IMAGES) FAQ.html README.maintaining
-
-.PHONY: html ps pdf docs clean-manuals
+maintainer-clean-local:
+ $(RM) -r gutenprint
+
+MAINTAINERCLEANFILES = \
+ Makefile.in \
+ gutenprint-stamp
+
+EXTRA_DIST = \
+ FAQ.html \
+ README.maintaining \
+ gutenprint.dox.in \
+ gutenprintui2.dox.in \
+ gutenprint \
+ gutenprintui2 \
+ gutenprint-stamp \
+ gutenprintui2-stamp
+
+.PHONY: html ps pdf docs
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 01dcff8..4d3a468 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,6 +1,8 @@
-# Makefile.in generated automatically by automake 1.4 from Makefile.am
+# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# @configure_input@
-# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -10,385 +12,374 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
+@SET_MAKE@
-SHELL = @SHELL@
-
+# Variables
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = @bindir@
-sbindir = @sbindir@
-libexecdir = @libexecdir@
-datadir = @datadir@
-sysconfdir = @sysconfdir@
-sharedstatedir = @sharedstatedir@
-localstatedir = @localstatedir@
-libdir = @libdir@
-infodir = @infodir@
-mandir = @mandir@
-includedir = @includedir@
-oldincludedir = /usr/include
-
-DESTDIR =
-
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
-
top_builddir = ..
-
-ACLOCAL = @ACLOCAL@
-AUTOCONF = @AUTOCONF@
-AUTOMAKE = @AUTOMAKE@
-AUTOHEADER = @AUTOHEADER@
-
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-transform = @program_transform_name@
-
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
-host_alias = @host_alias@
+build_triplet = @build@
host_triplet = @host@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/gutenprint.dox.in $(srcdir)/gutenprintui2.dox.in \
+ $(top_srcdir)/scripts/global.mk
+subdir = doc
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gimp.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \
+ $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \
+ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = gutenprint.dox gutenprintui2.dox
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
ALL_LINGUAS = @ALL_LINGUAS@
-AS = @AS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-BISON_PROG = @BISON_PROG@
-BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
+BUILD_CUPS_FALSE = @BUILD_CUPS_FALSE@
+BUILD_CUPS_PPDS_FALSE = @BUILD_CUPS_PPDS_FALSE@
+BUILD_CUPS_PPDS_TRUE = @BUILD_CUPS_PPDS_TRUE@
+BUILD_CUPS_TRUE = @BUILD_CUPS_TRUE@
+BUILD_ESCPUTIL_FALSE = @BUILD_ESCPUTIL_FALSE@
+BUILD_ESCPUTIL_TRUE = @BUILD_ESCPUTIL_TRUE@
+BUILD_FOOMATIC_3_FALSE = @BUILD_FOOMATIC_3_FALSE@
+BUILD_FOOMATIC_3_TRUE = @BUILD_FOOMATIC_3_TRUE@
+BUILD_FOOMATIC_FALSE = @BUILD_FOOMATIC_FALSE@
+BUILD_FOOMATIC_TRUE = @BUILD_FOOMATIC_TRUE@
+BUILD_GENPPD_STATIC_FALSE = @BUILD_GENPPD_STATIC_FALSE@
+BUILD_GENPPD_STATIC_TRUE = @BUILD_GENPPD_STATIC_TRUE@
+BUILD_GHOSTSCRIPT_FALSE = @BUILD_GHOSTSCRIPT_FALSE@
+BUILD_GHOSTSCRIPT_TRUE = @BUILD_GHOSTSCRIPT_TRUE@
+BUILD_GIMP2_FALSE = @BUILD_GIMP2_FALSE@
+BUILD_GIMP2_TRUE = @BUILD_GIMP2_TRUE@
+BUILD_GIMP_FALSE = @BUILD_GIMP_FALSE@
+BUILD_GIMP_TRUE = @BUILD_GIMP_TRUE@
+BUILD_LIBGUTENPRINTUI2_FALSE = @BUILD_LIBGUTENPRINTUI2_FALSE@
+BUILD_LIBGUTENPRINTUI2_TRUE = @BUILD_LIBGUTENPRINTUI2_TRUE@
+BUILD_LIBGUTENPRINTUI_FALSE = @BUILD_LIBGUTENPRINTUI_FALSE@
+BUILD_LIBGUTENPRINTUI_TRUE = @BUILD_LIBGUTENPRINTUI_TRUE@
+BUILD_MODULES_FALSE = @BUILD_MODULES_FALSE@
+BUILD_MODULES_TRUE = @BUILD_MODULES_TRUE@
+BUILD_TESTPATTERN_FALSE = @BUILD_TESTPATTERN_FALSE@
+BUILD_TESTPATTERN_TRUE = @BUILD_TESTPATTERN_TRUE@
+BUILD_TEST_FALSE = @BUILD_TEST_FALSE@
+BUILD_TEST_TRUE = @BUILD_TEST_TRUE@
+BUILD_TRANSLATED_CUPS_PPDS_FALSE = @BUILD_TRANSLATED_CUPS_PPDS_FALSE@
+BUILD_TRANSLATED_CUPS_PPDS_TRUE = @BUILD_TRANSLATED_CUPS_PPDS_TRUE@
CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
CONVERT = @CONVERT@
-CUPS_BACKEND_BIN = @CUPS_BACKEND_BIN@
-CUPS_BIN = @CUPS_BIN@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
CUPS_CFLAGS = @CUPS_CFLAGS@
-CUPS_CONF = @CUPS_CONF@
CUPS_CONFIG = @CUPS_CONFIG@
-CUPS_FILTER_BIN = @CUPS_FILTER_BIN@
-CUPS_INSTALL = @CUPS_INSTALL@
CUPS_LIBS = @CUPS_LIBS@
-CUPS_MAN = @CUPS_MAN@
-CUPS_NOINST_BIN = @CUPS_NOINST_BIN@
-CUPS_PKG = @CUPS_PKG@
+CUPS_PPDS_AT_TOP_LEVEL_FALSE = @CUPS_PPDS_AT_TOP_LEVEL_FALSE@
+CUPS_PPDS_AT_TOP_LEVEL_TRUE = @CUPS_PPDS_AT_TOP_LEVEL_TRUE@
CUPS_PPD_PS_LEVEL = @CUPS_PPD_PS_LEVEL@
-DATADIRNAME = @DATADIRNAME@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
DB2HTML = @DB2HTML@
DB2PDF = @DB2PDF@
DB2PS = @DB2PS@
-DLLTOOL = @DLLTOOL@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DIALOG = @DIALOG@
+DOXYGEN = @DOXYGEN@
DVIPDF = @DVIPDF@
DVIPS = @DVIPS@
ECHO = @ECHO@
-ESCPUTIL_BIN = @ESCPUTIL_BIN@
-ESCPUTIL_MAN = @ESCPUTIL_MAN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
-FOOMATIC_3_NOINST_BIN = @FOOMATIC_3_NOINST_BIN@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FIND = @FIND@
FOOMATIC_CONFIGURE = @FOOMATIC_CONFIGURE@
-FOOMATIC_INSTALL = @FOOMATIC_INSTALL@
FOOMATIC_KITLOAD = @FOOMATIC_KITLOAD@
-FOOMATIC_NOINST_BIN = @FOOMATIC_NOINST_BIN@
-FOOMATIC_OLDIDS_NOINST_BIN = @FOOMATIC_OLDIDS_NOINST_BIN@
FOOMATIC_PPDFILE = @FOOMATIC_PPDFILE@
-GENCAT = @GENCAT@
-GIMPPRINT_BINARY_AGE = @GIMPPRINT_BINARY_AGE@
-GIMPPRINT_CFLAGS = @GIMPPRINT_CFLAGS@
-GIMPPRINT_CURRENT_INTERFACE = @GIMPPRINT_CURRENT_INTERFACE@
-GIMPPRINT_DEPLIBS = @GIMPPRINT_DEPLIBS@
-GIMPPRINT_INTERFACE_AGE = @GIMPPRINT_INTERFACE_AGE@
-GIMPPRINT_LIBS = @GIMPPRINT_LIBS@
-GIMPPRINT_MAJOR_VERSION = @GIMPPRINT_MAJOR_VERSION@
-GIMPPRINT_MICRO_VERSION = @GIMPPRINT_MICRO_VERSION@
-GIMPPRINT_MINOR_VERSION = @GIMPPRINT_MINOR_VERSION@
-GIMPPRINT_VERSION = @GIMPPRINT_VERSION@
+GENPPD_LIBS = @GENPPD_LIBS@
+GIMP2_CFLAGS = @GIMP2_CFLAGS@
+GIMP2_LIBS = @GIMP2_LIBS@
GIMPTOOL = @GIMPTOOL@
+GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@
GIMPTOOL_CHECK = @GIMPTOOL_CHECK@
-GIMP_BIN = @GIMP_BIN@
GIMP_CFLAGS = @GIMP_CFLAGS@
GIMP_CFLAGS_NOUI = @GIMP_CFLAGS_NOUI@
GIMP_DATA_DIR = @GIMP_DATA_DIR@
GIMP_LIBS = @GIMP_LIBS@
GIMP_LIBS_NOUI = @GIMP_LIBS_NOUI@
GIMP_PLUGIN_DIR = @GIMP_PLUGIN_DIR@
-GLIBC21 = @GLIBC21@
-GMOFILES = @GMOFILES@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_CONFIG = @GLIB_CONFIG@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GMSGFMT = @GMSGFMT@
GNUCFLAGS = @GNUCFLAGS@
-IJS_BIN = @IJS_BIN@
+GTK2_CFLAGS = @GTK2_CFLAGS@
+GTK2_LIBS = @GTK2_LIBS@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_CONFIG = @GTK_CONFIG@
+GTK_LIBS = @GTK_LIBS@
+GUTENPRINTUI2_BINARY_AGE = @GUTENPRINTUI2_BINARY_AGE@
+GUTENPRINTUI2_CFLAGS = @GUTENPRINTUI2_CFLAGS@
+GUTENPRINTUI2_CURRENT_INTERFACE = @GUTENPRINTUI2_CURRENT_INTERFACE@
+GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@
+GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@
+GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la
+GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@
+GUTENPRINTUI_BINARY_AGE = @GUTENPRINTUI_BINARY_AGE@
+GUTENPRINTUI_CFLAGS = @GUTENPRINTUI_CFLAGS@
+GUTENPRINTUI_CURRENT_INTERFACE = @GUTENPRINTUI_CURRENT_INTERFACE@
+GUTENPRINTUI_INTERFACE_AGE = @GUTENPRINTUI_INTERFACE_AGE@
+GUTENPRINTUI_LIBDEPS = @GUTENPRINTUI_LIBDEPS@
+GUTENPRINTUI_LIBS = $(top_builddir)/src/gutenprintui/libgutenprintui.la
+GUTENPRINTUI_VERSION = @GUTENPRINTUI_VERSION@
+GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@
+GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@
+GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@
+GUTENPRINT_INTERFACE_AGE = @GUTENPRINT_INTERFACE_AGE@
+GUTENPRINT_LIBDEPS = @GUTENPRINT_LIBDEPS@
+
+# Libraries
+GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la
+GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@
+GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@
+GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@
+GUTENPRINT_VERSION = @GUTENPRINT_VERSION@
IJS_CFLAGS = @IJS_CFLAGS@
IJS_CONFIG = @IJS_CONFIG@
-IJS_INSTALL = @IJS_INSTALL@
IJS_LIBS = @IJS_LIBS@
-INCLUDES = @INCLUDES@
-INSTOBJEXT = @INSTOBJEXT@
-INTLBISON = @INTLBISON@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SAMPLES_FALSE = @INSTALL_SAMPLES_FALSE@
+INSTALL_SAMPLES_TRUE = @INSTALL_SAMPLES_TRUE@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTALL_USER_GUIDE_FALSE = @INSTALL_USER_GUIDE_FALSE@
+INSTALL_USER_GUIDE_TRUE = @INSTALL_USER_GUIDE_TRUE@
INTLLIBS = @INTLLIBS@
-INTLOBJS = @INTLOBJS@
-INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
+LDFLAGS = @LDFLAGS@
LEX = @LEX@
-LIBGIMPPRINT_LIBS = @LIBGIMPPRINT_LIBS@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBICONV = @LIBICONV@
-LIBM = @LIBM@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
LIBREADLINE_DEPS = @LIBREADLINE_DEPS@
+LIBS = $(INTLLIBS) @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_DEPS = @LIBTOOL_DEPS@
LN_S = @LN_S@
LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
-LT_AGE = @LT_AGE@
-LT_CURRENT = @LT_CURRENT@
-LT_RELEASE = @LT_RELEASE@
-LT_REVISION = @LT_REVISION@
MAINT = @MAINT@
MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@
-MAIN_BIN = @MAIN_BIN@
-MAIN_DAT = @MAIN_DAT@
-MAIN_MAN = @MAIN_MAN@
-MAIN_SCR = @MAIN_SCR@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
-OBJDUMP = @OBJDUMP@
+MSGMERGE = @MSGMERGE@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
PLUG_IN_PATH = @PLUG_IN_PATH@
-POFILES = @POFILES@
POSUB = @POSUB@
-PRINT_VASPRINTF = @PRINT_VASPRINTF@
RANLIB = @RANLIB@
RELEASE_DATE = @RELEASE_DATE@
RM = @RM@
-SAMPLE_IMAGES = @SAMPLE_IMAGES@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
STRIP = @STRIP@
-TESTPATTERN_BIN = @TESTPATTERN_BIN@
-TEST_BIN = @TEST_BIN@
TEXI2HTML = @TEXI2HTML@
-USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
+USE_LEVEL3_PS_FALSE = @USE_LEVEL3_PS_FALSE@
+USE_LEVEL3_PS_TRUE = @USE_LEVEL3_PS_TRUE@
USE_NLS = @USE_NLS@
+USE_NLS_FALSE = @USE_NLS_FALSE@
+USE_NLS_TRUE = @USE_NLS_TRUE@
VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
YACC = @YACC@
-YACC_PROG = @YACC_PROG@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
cups_bindir = @cups_bindir@
cups_conf_datadir = @cups_conf_datadir@
cups_conf_serverbin = @cups_conf_serverbin@
cups_conf_serverroot = @cups_conf_serverroot@
cups_exec_prefix = @cups_exec_prefix@
cups_prefix = @cups_prefix@
+cups_sbindir = @cups_sbindir@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+gimp2_plug_indir = @gimp2_plug_indir@
gimp_plug_indir = @gimp_plug_indir@
-gimpprint_cflags = @gimpprint_cflags@
-gimpprint_libs = @gimpprint_libs@
-
+gutenprint_cflags = @gutenprint_cflags@
+gutenprint_libs = @gutenprint_libs@
+gutenprintui2_cflags = @gutenprintui2_cflags@
+gutenprintui2_libs = @gutenprintui2_libs@
+gutenprintui_cflags = @gutenprintui_cflags@
+gutenprintui_libs = @gutenprintui_libs@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
AUTOMAKE_OPTIONS = 1.4 gnu
-
MAINT_CHARSET = latin1
+SUBDIRS = developer users_guide
+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(LOCAL_CPPFLAGS) $(GNUCFLAGS)
+docdir = $(datadir)/doc/$(PACKAGE)
+MAINTAINERCLEANFILES = \
+ Makefile.in \
+ gutenprint-stamp
+
+EXTRA_DIST = \
+ FAQ.html \
+ README.maintaining \
+ gutenprint.dox.in \
+ gutenprintui2.dox.in \
+ gutenprint \
+ gutenprintui2 \
+ gutenprint-stamp \
+ gutenprintui2-stamp
+
+all: all-recursive
-SUBDIRS = users_guide
-
-MANUAL = gimpprint
-HTMLDIR = manual-html
-DOCS = $(MANUAL).dvi $(MANUAL).ps html-stamp
-
-IMAGES = print-color.png print-main.png print-setup.png
-
-
-EPS_IMAGES = $(addsuffix .eps,$(basename $(IMAGES)))
-
-TEXT_IMAGES = $(addsuffix .txt,$(basename $(IMAGES)))
-@MAINTAINER_MODE_TRUE@MAINT_MODE = true
-@MAINTAINER_MODE_FALSE@MAINT_MODE = false
-
-USER_GUIDE = $(MANUAL).ps html
-
-STANDARD_TARGETS = @USER_GUIDE@
-@MAINTAINER_MODE_TRUE@ALL_LOCAL_TARGETS = docs
-@MAINTAINER_MODE_FALSE@ALL_LOCAL_TARGETS = $(STANDARD_TARGETS)
-
-info_TEXINFOS = gimpprint.texi
-
-gimpprint_TEXINFOS = overview.texi copying.texi gpl.texi introduction.texi using.texi functions.texi programs.texi problems.texi appendices.texi dither.texi weave.texi escp2.texi new-printer.texi indices.texi integrating.texi version.texi
-
-TEXI2DVIFLAGS = -I $(srcdir)
-
-CLEAN_MANUALS = $(RM) -rf html-stamp $(HTMLDIR) ; $(RM) -f $(MANUAL).pdf $(MANUAL).ps $(MANUAL).dvi ; $(RM) -f $(EPS_IMAGES)
-
-
-MAINTAINERCLEANFILES = Makefile.in html-stamp
-
-EXTRA_DIST = $(DOCS) $(IMAGES) $(EPS_IMAGES) $(TEXT_IMAGES) FAQ.html README.maintaining
-mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
-CONFIG_HEADER = ../config.h
-CONFIG_CLEAN_FILES =
-TEXI2DVI = texi2dvi
-TEXINFO_TEX = $(top_srcdir)/scripts/texinfo.tex
-INFO_DEPS = gimpprint.info
-DVIS = gimpprint.dvi
-TEXINFOS = gimpprint.texi
-DIST_COMMON = $(gimpprint_TEXINFOS) Makefile.am Makefile.in stamp-vti \
-version.texi
-
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
-TAR = tar
-GZIP_ENV = --best
-all: all-redirect
.SUFFIXES:
-.SUFFIXES: .dvi .info .ps .texi .texinfo .txi
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps doc/Makefile
-
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-
-$(srcdir)/version.texi: @MAINTAINER_MODE_TRUE@stamp-vti
- @:
-
-$(srcdir)/stamp-vti: gimpprint.texi $(top_srcdir)/configure.in
- @echo "@set UPDATED `$(SHELL) $(top_srcdir)/scripts/mdate-sh $(srcdir)/gimpprint.texi`" > vti.tmp
- @echo "@set EDITION $(VERSION)" >> vti.tmp
- @echo "@set VERSION $(VERSION)" >> vti.tmp
- @cmp -s vti.tmp $(srcdir)/version.texi \
- || (echo "Updating $(srcdir)/version.texi"; \
- cp vti.tmp $(srcdir)/version.texi)
- -@rm -f vti.tmp
- @cp $(srcdir)/version.texi $@
-
-mostlyclean-vti:
- -rm -f vti.tmp
-
-clean-vti:
-
-distclean-vti:
-
-maintainer-clean-vti:
- -@MAINTAINER_MODE_TRUE@rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
-
-gimpprint.info: gimpprint.texi version.texi $(gimpprint_TEXINFOS)
-gimpprint.dvi: gimpprint.texi version.texi $(gimpprint_TEXINFOS)
-
-
-.texi.info:
- @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
- cd $(srcdir) \
- && $(MAKEINFO) `echo $< | sed 's,.*/,,'`
-
-.texi.dvi:
- TEXINPUTS=$(top_srcdir)/scripts/texinfo.tex:$$TEXINPUTS \
- MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
-
-.texi:
- @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
- cd $(srcdir) \
- && $(MAKEINFO) `echo $< | sed 's,.*/,,'`
-
-.texinfo.info:
- @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
- cd $(srcdir) \
- && $(MAKEINFO) `echo $< | sed 's,.*/,,'`
-
-.texinfo:
- @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
- cd $(srcdir) \
- && $(MAKEINFO) `echo $< | sed 's,.*/,,'`
-
-.texinfo.dvi:
- TEXINPUTS=$(top_srcdir)/scripts/texinfo.tex:$$TEXINPUTS \
- MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
-
-.txi.info:
- @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
- cd $(srcdir) \
- && $(MAKEINFO) `echo $< | sed 's,.*/,,'`
-
-.txi.dvi:
- TEXINPUTS=$(top_srcdir)/scripts/texinfo.tex:$$TEXINPUTS \
- MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
-
-.txi:
- @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
- cd $(srcdir) \
- && $(MAKEINFO) `echo $< | sed 's,.*/,,'`
-.dvi.ps:
- $(DVIPS) $< -o $@
-
-install-info-am: $(INFO_DEPS)
- @$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(infodir)
- @list='$(INFO_DEPS)'; \
- for file in $$list; do \
- d=$(srcdir); \
- for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
- if test -f $$d/$$ifile; then \
- echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; \
- $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; \
- else : ; fi; \
- done; \
- done
- @$(POST_INSTALL)
- @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
- list='$(INFO_DEPS)'; \
- for file in $$list; do \
- echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\
- install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\
- done; \
- else : ; fi
-
-uninstall-info:
- $(PRE_UNINSTALL)
- @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
- ii=yes; \
- else ii=; fi; \
- list='$(INFO_DEPS)'; \
- for file in $$list; do \
- test -z "$ii" \
- || install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \
- done
- @$(NORMAL_UNINSTALL)
- list='$(INFO_DEPS)'; \
- for file in $$list; do \
- (cd $(DESTDIR)$(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \
- done
-
-dist-info: $(INFO_DEPS)
- list='$(INFO_DEPS)'; \
- for base in $$list; do \
- d=$(srcdir); \
- for file in `cd $$d && eval echo $$base*`; do \
- test -f $(distdir)/$$file \
- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $$d/$$file $(distdir)/$$file; \
- done; \
- done
-
-mostlyclean-aminfo:
- -rm -f gimpprint.aux gimpprint.cp gimpprint.cps gimpprint.dvi \
- gimpprint.fn gimpprint.fns gimpprint.ky gimpprint.kys \
- gimpprint.ps gimpprint.log gimpprint.pg gimpprint.toc \
- gimpprint.tp gimpprint.tps gimpprint.vr gimpprint.vrs \
- gimpprint.op gimpprint.tr gimpprint.cv gimpprint.cn
-
-clean-aminfo:
-
-distclean-aminfo:
-
-maintainer-clean-aminfo:
- cd $(srcdir) && for i in $(INFO_DEPS); do \
- rm -f $$i; \
- if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \
- rm -f $$i-[0-9]*; \
- fi; \
- done
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/scripts/global.mk $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+gutenprint.dox: $(top_builddir)/config.status $(srcdir)/gutenprint.dox.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+gutenprintui2.dox: $(top_builddir)/config.status $(srcdir)/gutenprintui2.dox.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
@@ -396,13 +387,14 @@ maintainer-clean-aminfo:
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
-
-@SET_MAKE@
-
-all-recursive install-data-recursive install-exec-recursive \
-installdirs-recursive install-recursive uninstall-recursive \
-check-recursive installcheck-recursive info-recursive dvi-recursive:
- @set fnord $(MAKEFLAGS); amf=$$2; \
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -414,7 +406,7 @@ check-recursive installcheck-recursive info-recursive dvi-recursive:
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ || eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
@@ -422,13 +414,24 @@ check-recursive installcheck-recursive info-recursive dvi-recursive:
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
- @set fnord $(MAKEFLAGS); amf=$$2; \
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
dot_seen=no; \
- rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
- rev="$$subdir $$rev"; \
- test "$$subdir" = "." && dot_seen=yes; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
done; \
- test "$$dot_seen" = "no" && rev=". $$rev"; \
+ rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
@@ -438,262 +441,265 @@ maintainer-clean-recursive:
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ || eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
-tags: TAGS
-
-ID: $(HEADERS) $(SOURCES) $(LISP)
- list='$(SOURCES) $(HEADERS)'; \
- unique=`for i in $$list; do echo $$i; done | \
- awk ' { files[$$0] = 1; } \
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- here=`pwd` && cd $(srcdir) \
- && mkid -f$$here/ID $$unique $(LISP)
+ mkid -fID $$unique
+tags: TAGS
-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
- fi; \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
done; \
- list='$(SOURCES) $(HEADERS)'; \
- unique=`for i in $$list; do echo $$i; done | \
- awk ' { files[$$0] = 1; } \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-
-mostlyclean-tags:
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
-clean-tags:
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
- -rm -f TAGS ID
-
-maintainer-clean-tags:
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-
-subdir = doc
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
+ $(mkdir_p) $(distdir)/../scripts
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
if test -d $$d/$$file; then \
- cp -pr $$/$$file $(distdir)/$$file; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $$d/$$file $(distdir)/$$file || :; \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
fi; \
done
- for subdir in $(SUBDIRS); do \
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d $(distdir)/$$subdir \
- || mkdir $(distdir)/$$subdir \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
- chmod 777 $(distdir)/$$subdir; \
- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
|| exit 1; \
fi; \
done
- $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info
- $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook
-info-am: $(INFO_DEPS)
-info: info-recursive
-dvi-am: $(DVIS)
-dvi: dvi-recursive
check-am: all-am
check: check-recursive
-installcheck-am:
-installcheck: installcheck-recursive
-install-exec-am:
+all-am: Makefile all-local
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
install-exec: install-exec-recursive
-
-install-data-am: install-info-am install-data-local
install-data: install-data-recursive
+uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-install: install-recursive
-uninstall-am: uninstall-info
-uninstall: uninstall-recursive
-all-am: Makefile $(INFO_DEPS) all-local
-all-redirect: all-recursive
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
-installdirs: installdirs-recursive
-installdirs-am:
- $(mkinstalldirs) $(DESTDIR)$(infodir)
-
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f Makefile $(CONFIG_CLEAN_FILES)
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-mostlyclean-am: mostlyclean-vti mostlyclean-aminfo mostlyclean-tags \
- mostlyclean-generic
+clean: clean-recursive
-mostlyclean: mostlyclean-recursive
+clean-am: clean-generic clean-libtool mostlyclean-am
-clean-am: clean-vti clean-aminfo clean-tags clean-generic \
- mostlyclean-am clean-local
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
-clean: clean-recursive
+dvi: dvi-recursive
-distclean-am: distclean-vti distclean-aminfo distclean-tags \
- distclean-generic clean-am
- -rm -f libtool
+dvi-am:
-distclean: distclean-recursive
+info: info-recursive
-maintainer-clean-am: maintainer-clean-vti maintainer-clean-aminfo \
- maintainer-clean-tags maintainer-clean-generic \
- distclean-am maintainer-clean-local
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-.PHONY: mostlyclean-vti distclean-vti clean-vti maintainer-clean-vti \
-install-info-am uninstall-info mostlyclean-aminfo distclean-aminfo \
-clean-aminfo maintainer-clean-aminfo install-data-recursive \
-uninstall-data-recursive install-exec-recursive \
-uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \
-all-recursive check-recursive installcheck-recursive info-recursive \
-dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \
-maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
-distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
-dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
-install-exec install-data-local install-data-am install-data install-am \
-install uninstall-am uninstall all-local all-redirect all-am all \
-installdirs-am installdirs mostlyclean-generic distclean-generic \
-clean-generic maintainer-clean-generic clean mostlyclean distclean \
-maintainer-clean
+pdf-am:
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am all-local check \
+ check-am clean clean-generic clean-libtool clean-recursive \
+ ctags ctags-recursive distclean distclean-generic \
+ distclean-libtool distclean-recursive distclean-tags distdir \
+ dvi dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-exec install-exec-am \
+ install-info install-info-am install-man install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic \
+ maintainer-clean-local maintainer-clean-recursive mostlyclean \
+ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+ pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-info-am
@SET_MAKE@
-all-local: $(DOCS)
+export STP_MODULE_PATH = $(top_builddir)/src/main/.libs:$(top_builddir)/src/main
+export STP_DATA_PATH = $(top_srcdir)/src/main
-docs: $(DOCS)
- cd users_guide; $(MAKE) docs
+# Rules
-ps: $(MANUAL).ps
- cd users_guide; $(MAKE) ps
+$(top_builddir)/src/main/libgutenprint.la:
+ cd $(top_builddir)/src/main; \
+ $(MAKE)
-pdf: $(MANUAL).pdf
- cd users_guide; $(MAKE) pdf
-gimpprint.dvi: $(EPS_IMAGES) $(addprefix $(srcdir)/,$(gimpprint_TEXINFOS) $(info_TEXINFOS))
- $(TEXI2DVI) $(TEXI2DVIFLAGS) $(srcdir)/gimpprint.texi
+$(top_builddir)/src/gutenprintui/libgutenprintui.la:
+ cd $(top_builddir)/src/gutenprintui; \
+ $(MAKE)
-%.eps: %.png
- $(CONVERT) $< EPS2:$@
+$(top_builddir)/src/gutenprintui2/libgutenprintui2.la:
+ cd $(top_builddir)/src/gutenprintui2; \
+ $(MAKE)
-html: html-stamp
- cd users_guide; $(MAKE) html
+@MAINTAINER_MODE_TRUE@all-local: gutenprint-stamp gutenprintui2-stamp
+@MAINTAINER_MODE_FALSE@all-local:
-html-stamp: $(addprefix $(srcdir)/,$(gimpprint_TEXINFOS) $(info_TEXINFOS))
- $(RM) -rf $(HTMLDIR)-tmp
- mkdir $(HTMLDIR)-tmp
- images="$(addprefix $(srcdir)/, $(IMAGES))"; \
- for image in $$images ; do \
- cp -p $$image $(HTMLDIR)-tmp ; \
- done
- cd $(HTMLDIR)-tmp ; \
- $(TEXI2HTML) -menu -split_node -number -expandinfo \
- -I ../$(srcdir) ../$(srcdir)/$(MANUAL).texi 2>&1
- $(RM) -rf $(HTMLDIR)
- mv $(HTMLDIR)-tmp $(HTMLDIR)
- touch html-stamp
-
-$(MANUAL).ps: $(MANUAL).dvi
- TEXPICTS=$(srcdir):. $(DVIPS) $< -o $@
-
-$(MANUAL).pdf: $(MANUAL).dvi
- TEXPICTS=$(srcdir):. $(DVIPDF) $< $@
-
-install-data-local: $(STANDARD_TARGETS)
- if test -n '$(STANDARD_TARGETS)' ; then \
- $(mkinstalldirs) $(DESTDIR)$(datadir)/$(PACKAGE)/doc ; \
- $(mkinstalldirs) $(DESTDIR)$(datadir)/$(PACKAGE)/doc/$(HTMLDIR) ; \
- if test -f $(MANUAL).ps ; then \
- $(INSTALL_DATA) $(MANUAL).ps $(DESTDIR)$(datadir)/$(PACKAGE)/doc ; \
- elif test -f $(srcdir)/$(MANUAL).ps ; then \
- $(INSTALL_DATA) $(srcdir)/$(MANUAL).ps $(DESTDIR)$(datadir)/$(PACKAGE)/doc ; \
- fi ; \
- if test -d $(HTMLDIR) ; then \
- HTMLSRCDIR="$(HTMLDIR)" ; \
- elif test -d $(srcdir)/$(HTMLDIR) ; then \
- HTMLSRCDIR="$(srcdir)/$(HTMLDIR)" ; \
- fi ; \
- for file in $$HTMLSRCDIR/* ; do \
- if test -f $$file ; then \
- $(INSTALL_DATA) $$file $(DESTDIR)$(datadir)/$(PACKAGE)/doc/$(HTMLDIR) ; \
- fi ; \
- done ; \
- fi
+# Rerun doxygen whenever autogen is run
+gutenprintui2: gutenprintui2-stamp
+gutenprintui2-stamp: gutenprintui2.dox $(top_srcdir)/configure
+ $(RM) -rf gutenprintui2/html
+ $(DOXYGEN) gutenprintui2.dox
+ touch $@
-dist-hook: html
- for dir in $(HTMLDIR) ; do \
- if test -d $(srcdir)/$$dir ; then \
- mkdir $(distdir)/$$dir; \
- for dirfile in $(srcdir)/$$dir/*; do \
- if test -f $$dirfile ; then \
- cp -p $$dirfile $(distdir)/$$dir; \
- fi \
- done \
- fi \
- done
+gutenprint: gutenprint-stamp
+gutenprint-stamp: gutenprint.dox $(top_srcdir)/configure
+ $(RM) -rf gutenprint/html
+ $(DOXYGEN) gutenprint.dox
+ touch $@
-clean-local:
- if test $(srcdir) = '.' -a $(MAINT_MODE) = false ; then \
- echo 'clean-local: Not removing $(HTMLDIR)' ; \
- echo 'clean-local: Not removing $(MANUAL).pdf' ; \
- echo 'clean-local: Not removing $(MANUAL).ps' ; \
- echo 'clean-local: Not removing $(MANUAL).dvi' ; \
- echo 'clean-local: Not removing EPS figures' ; \
- else \
- $(CLEAN_MANUALS) ; \
- fi
- -$(RM) -rf *.tex *.log *.aux *.gz *.out *.junk *.fot
- -$(RM) -rf *.ky *.pg *.toc *.tp *.vr *.vrs
- -$(RM) -rf $(HTMLDIR)-tmp
+docs: gutenprint-stamp
+ cd developer; $(MAKE)
+ cd users_guide; $(MAKE)
+
+ps: $(MANUAL).ps
+ cd developer; $(MAKE) ps
+ cd users_guide; $(MAKE) ps
-veryclean:
- $(MAKE) MAINT_MODE=true clean
+pdf: $(MANUAL).pdf
+ cd developer; $(MAKE) pdf
+ cd users_guide; $(MAKE) pdf
+
+html:
+ cd developer; $(MAKE) html
+ cd users_guide; $(MAKE) html
maintainer-clean-local:
- $(CLEAN_MANUALS)
-
-# We duplicate mostlyclean-aminfo here because we do not want to remove
-# the .dvi and .ps files that mostlyclean-aminfo wants to remove. The
-# reason why is that we do not want make clean to force a rebuild of the
-# doc, since users may not have the texinfo tools required to do so.
-# Unfortunately, this generates a warning about overriding commands for
-# mostlyclean-aminfo.
-mostlyclean-aminfo:
- -$(RM) -f gimpprint.aux gimpprint.cp gimpprint.cps \
- gimpprint.fn gimpprint.fns gimpprint.ky gimpprint.kys \
- gimpprint.log gimpprint.pg gimpprint.toc \
- gimpprint.tp gimpprint.tps gimpprint.vr gimpprint.vrs \
- gimpprint.op gimpprint.tr gimpprint.cv gimpprint.cn
-
-.PHONY: html ps pdf docs clean-manuals
+ $(RM) -r gutenprint
+.PHONY: html ps pdf docs
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/doc/README.maintaining b/doc/README.maintaining
index cbcbd77..642a123 100644
--- a/doc/README.maintaining
+++ b/doc/README.maintaining
@@ -1,220 +1,288 @@
BUILD SCRIPTS: how they work and how to modify them
===================================================
-A guide to the GIMP-Print build system.
+A guide to the Gutenprint build system.
Introduction
------------
-GIMP-Print uses GNU autoconf and automake to generate the scripts that build
-the software. It also uses libtool to create shared libraries. This file
-describes how they work together. It also discusses the thinking behind how
-they are used in GIMP-Print, and how to modify the GIMP-Print build scripts
-without breaking other things. If you have used autoconf and automake before,
-there will be little that is new in this file, but you should note the
-conventions used in GIMP-Print.
+Gutenprint uses GNU autoconf and automake to generate the scripts that
+build the software. It also uses libtool to create shared libraries.
+This file describes how they work together. It also discusses the
+thinking behind how they are used in Gutenprint, and how to modify the
+Gutenprint build scripts without breaking other things. If you have
+used autoconf and automake before, there will be little that is new in
+this file, but you should note the conventions used in Gutenprint.
This file is split into the following sections:
- o Integration of the autotools
- o Normal use of the tools
- - Using CVS
- - Setting up the build scripts from CVS
- - Building the package
- o configure.in.in
- - Layout
- - AC_SUBST
- - AC_DEFINE and AC_DEFINE_UNQUOTED
- - AM_CONDITIONAL
- o Makefile.am
- - Automake basics
- - Make and subdirectories
- - Conditional compilation
- - When automake is not enough...
- + Rule syntax
- + Correctly referencing files
- o aclocal
- o config.h
- o libgimpprint and libprintut
- o automake subtleties
- o libtool tricks
- o Testing changes to the build scripts
- o Further information
- o Known problems
-
-I hope you find this useful. If any part was not clear, or there was something
-that you would like covering, please let me know!
-
- -- Roger Leigh <roger@whinlatter.uklinux.net>
-
- $Id: README.maintaining,v 1.8.2.1 2004/04/19 00:01:48 rlk Exp $
-
-
-1. Integration of the autotools
+ o Setting up the autotools
+ o Integration of the autotools
+ o Normal use of the tools
+ - Using CVS
+ - Setting up the build scripts from CVS
+ - Building the package
+ o configure.ac
+ - Layout
+ - AC_SUBST
+ - AC_DEFINE and AC_DEFINE_UNQUOTED
+ - AM_CONDITIONAL
+ o Makefile.am
+ - Automake basics
+ - Make and subdirectories
+ - Conditional compilation
+ - When automake is not enough...
+ + Rule syntax
+ + Correctly referencing files
+ o aclocal
+ o config.h
+ o libgutenprint
+ o automake subtleties
+ o libtool tricks
+ o Testing changes to the build scripts
+ o Further information
+ o Known problems
+
+I hope you find this useful. If any part was not clear, or there was
+something that you would like covering, please let me know!
+
+ -- Roger Leigh <rleigh@debian.org>
+
+ $Id: README.maintaining,v 1.19 2004/09/17 18:37:42 rleigh Exp $
+
+
+1. Setting up the autotools
+---------------------------
+
+To build Gutenprint from CVS, or to regenerate the build scripts after
+modifying them, you need to install a number of GNU tools:
+
+i. GNU autoconf (at least 2.54)
+ii. GNU automake (at least 1.5; 1.7 recommended)
+iii. GNU libtool (at least 1.4.3; 1.5 recommended)
+iv. GNU gettext (at least 0.11.x)
+v. GNU make (any recent version)
+
+and also
+
+vi. pkg-config (at least 0.15.0)
+
+GNU autoconf made some incompatible changes between the 2.13 and 2.50
+stable releases. You cannot use a configure.in written for 2.13 with
+2.5x releases. This means that to build the 4.2-branch and the
+mainline on the same machine, you need to install multiple versions of
+the autotools. You can do this by running configure with the same
+--prefix, but also use --program-suffix=VERSION where VERSION is the
+autoconf version you are building.
+
+Debian GNU/Linux has an autoconf2.13 package with a wrapper script
+which can correctly invoke the right autoconf version. This makes
+using the old and new versions together very easy. To get it,
+
+1. download the Debian (.deb) package from
+ ftp://ftp.debian.org/debian/pool/main/a/autoconf2.13/
+2. extract the file with
+ ar -xv autoconf2.13_2.13-43_all.deb data.tar.gz
+ ==> x - data.tar.gz
+ tar -xzf data.tar.gz ./usr/bin
+3. copy ./usr/bin/autoconf-wrapper to /usr/bin
+4. symlink `autoconf', `autoreconf' and `autoheader' to
+ `autoconf-wrapper' (your real autoconf versions are named
+ autoconfVERSION).
+5. You may have to edit the wrapper to get in to invoke the right 2.5x
+ version.
+
+Similar problems may be seen with GNU automake, but you can again
+configure with a program suffix. You will, however, need to update a
+symlink manually, perhaps using one in your home bindir. automake 1.4
+works with autoconf2.13; automake1.5 works with autoconf2.13 and 2.5x
+but is old; automake1.6+ will only work with new 2.5x autoconf
+versions but are the current releases. I suggest using 1.4 and 1.7
+together. Different versions of autoconf need separate aclocal
+directories, to prevent m4 macros clashing.
+
+GNU gettext 0.11.x (current) releases will not work properly with
+current CVS Gutenprint because of changes to gettextize. We need to
+use autopoint, but this will break backward compatibility with 0.10.x
+releases (due to a new autoconf macro being required). The change
+will need to be made at some point in the near future.
+
+Hopefully these compatibility problems will not be as bad in the
+future...
+
+
+2. Integration of the autotools
-------------------------------
-Each directory has a Makefile.am file which is processed by automake to produce
-a Makefile.in. In the root directory there is a configure.in.in which is
-processed by autogen.sh to produce configure.in. configure.in is processed by
-autoconf to make a script called configure. When run, configure does various
-tests and checks, and then reads each Makefile.in to make a Makefile, and also
-generates a header called config.h from config.h.in. config.h.in is produced
-with autoheader from configure.in and acconfig.h. autoconf also requires a
+Each directory has a Makefile.am file which is processed by automake
+to produce a Makefile.in. In the root directory there is a
+configure.ac.in which is processed by autoconf to make a script called
+configure. When run, configure does various tests and checks, and
+then reads each Makefile.in to make a Makefile, and also generates a
+header called config.h from config.h.in. config.h.in is produced with
+autoheader from configure.ac and acconfig.h. autoconf also requires a
file aclocal.m4 which is generated by aclocal.
-All these files are generated simply by running `./autogen.sh' in the top
-directory. If you are using a distributed version of GIMP-Print, as opposed to
-CVS, then they will already be present and the following will not be necessary.
+All these files are generated simply by running `./autogen.sh' in the
+top directory. If you are using a distributed version of Gutenprint,
+as opposed to CVS, then they will already be present and the following
+will not be necessary.
-This is probably best demonstrated graphically. The relationships between the
-files are as follows:
+This is probably best demonstrated graphically. The relationships
+between the files are as follows:
During package setup (from CVS), running autogen.sh:
- autogen.sh
- configure.in.in ------------> configure.in
+ autogen.sh
+ m4extra/stp_release.m4.in ------------> m4/stp_release.m4
- gettext files added
- libtool files added
- aclocal
- configure.in ------------> aclocal.m4
+ gettext files added
+ libtool files added
+ aclocal
+ m4/* + m4local/* + configure.ac ------------> aclocal.m4
- autoheader
- acconfig.h + configure.in ------------> config.h.in
+ autoheader
+ acconfig.h + configure.ac ------------> config.h.in
- automake
- Makefile.am ------------> Makefile.in
+ automake
+ Makefile.am ------------> Makefile.in
- autoconf
- aclocal.m4 + configure.in ------------> configure
+ autoconf
+ aclocal.m4 + configure.ac ------------> configure
Running configure:
- configure
- Makefile.in ------------> Makefile
- config.h.in ------------> config.h
- headers.h.in ------------> headers.h
- manpage.n.in ------------> manpage.n
+ configure (->config.status)
+ Makefile.in ------------> Makefile
+ config.h.in ------------> config.h
+ headers.h.in ------------> headers.h
+ manpage.n.in ------------> manpage.n
-2. Normal use of the tools
+3. Normal use of the tools
--------------------------
-This section describes how to use the scripts for basic day-to-day working.
+This section describes how to use the scripts for basic day-to-day
+working.
-2.1 Using CVS
+3.1 Using CVS
-------------
-The latest working copy of GIMP-Print (HEAD) and all prior releases are
-available from CVS either anonymously (read-only with CVS pserver) or
-authenticated (read-write with SSH). The modulename for GIMP-Print is 'print'.
+The latest working copy of Gutenprint (HEAD) and all prior releases
+are available from CVS either anonymously (read-only with CVS pserver)
+or authenticated (read-write with SSH). The modulename for Gutenprint
+is 'print'.
Anonymous CVS access:
-The module you wish to check out must be specified as the modulename. When
-prompted for a password for anonymous, simply press the Enter key.
+The module you wish to check out must be specified as the modulename.
+When prompted for a password for anonymous, simply press the Enter
+key.
- $ cvs -d:pserver:anonymous@cvs.gimp-print.sourceforge.net:/cvsroot/gimp-
- print login
- $ cvs -z3
- -d:pserver:anonymous@cvs.gimp-print.sourceforge.net:/cvsroot/gimp-print
- co modulename
+ $ cvs -d:pserver:anonymous@cvs.gimp-print.sourceforge.net:/cvsroot/gimp-
+ print login
+ $ cvs -z3
+ -d:pserver:anonymous@cvs.gimp-print.sourceforge.net:/cvsroot/gimp-print
+ co modulename
Developer CVS access via SSH:
-Only project developers can access the CVS tree via this method. SSH1 must be
-installed on your client machine. Substitute modulename and developername with
-the proper values. Enter your site password when prompted. See the sourceforge
-documentation for more details, including how to use RSA keys for
-authentication.
+Only project developers can access the CVS tree via this method. SSH1
+must be installed on your client machine. Substitute modulename and
+developername with the proper values. Enter your site password when
+prompted. See the sourceforge documentation for more details,
+including how to use RSA keys for authentication.
- $ export CVS_RSH=ssh
- $ cvs -z3
- -ddevelopername@cvs.gimp-print.sourceforge.net:/cvsroot/gimp-print
- co modulename
+ $ export CVS_RSH=ssh
+ $ cvs -z3
+ -ddevelopername@cvs.gimp-print.sourceforge.net:/cvsroot/gimp-print
+ co modulename
-The CVS info documentation has very detailed explanations of everything that
-can be done with CVS.
+The CVS info documentation has very detailed explanations of
+everything that can be done with CVS.
-2.2 Setting up the build scripts from CVS
+3.2 Setting up the build scripts from CVS
-----------------------------------------
-After initially getting a copy of GIMP-Print from CVS, or if any of the scripts
-have changed, simply run autogen.sh:
+After initially getting a copy of Gutenprint from CVS, or if any of
+the scripts have changed, simply run autogen.sh:
- $ ./autogen.sh [options]
+ $ ./autogen.sh [options]
-Note that one can pass any options to autogen.sh that one would normally pass
-to configure. './configure --help' will give a complete list of options one
-can use.
+Note that one can pass any options to autogen.sh that one would
+normally pass to configure. './configure --help' will give a complete
+list of options one can use.
-2.3 Building the package
+3.3 Building the package
------------------------
-The normal method is to run the `configure' script, and then `make'. The
-package can then be installed with 'make install':
+The normal method is to run the `configure' script, and then `make'.
+The package can then be installed with 'make install':
- $ ./configure
- $ make
- $ make [DESTDIR=... VAR1=val1 VARn=valn] install
+ $ ./configure
+ $ make
+ $ make [DESTDIR=... VAR1=val1 VARn=valn] install
-If the build scripts have been modified, it will not normally be necessary to
-re-run autogen.sh: the Makefiles will notice and regenerate themselves, running
-autoconf, automake, aclocal and configure again if needed. If configure.in.in
-has been modified, re-run autogen.sh manually to regenerate configure.in.
+If the build scripts have been modified, it will not normally be
+necessary to re-run autogen.sh: the Makefiles will notice and
+regenerate themselves, running autoconf, automake, aclocal and
+configure again if needed.
-The build is only guaranteed to work if make is run from the top level. It
-should be possible to make individual subdirectories, but sometimes this will
-cause problems e.g. if it depends on some other directory that should have
-been built first.
+The build is only guaranteed to work if make is run from the top
+level. It should be possible to make individual subdirectories, but
+sometimes this will cause problems e.g. if it depends on some other
+directory that should have been built first.
A common problem is getting errors about a non-existent file called
-`doc/version.texi'. This file is automatically generated. It will
-be generated if you run make after running './autogen.sh' or
-'./configure --enable-maintainer-mode'. It is only generated if
-`maintainer-mode' is enabled.
-
-Other packages (including the extra development packages on some systems) must
-be installed on your system to build correctly. These include: autoconf,
-automake, libtool, gtk, gdk, gimp 1.2, cups, foomatic, makeinfo, readline
-texi2html. Not all these need to be installed, depending on the configure
-options used. It might be necessary to get the latest releases of some of
-these packages, as critical bugs present in easrlier releases have been fixed.
-The latest gettext and texi2html are strongly suggested.
-
-2.4 Extra make targets
+`doc/version.texi'. This file is automatically generated. It will be
+generated if you run make after running './autogen.sh' or './configure
+--enable-maintainer-mode'. It is only generated if `maintainer-mode'
+is enabled, and should be present in the release tarball.
+
+Other packages (including the extra development packages on some
+systems) must be installed on your system to build correctly. These
+include: autoconf, automake, libtool, gtk, gdk, gimp 1.2, gimp 2.0,
+cups, foomatic, makeinfo, jade/jadetex, readline, SGML tools,
+texi2html. Not all these need to be installed, depending on the
+configure options used. It might be necessary to get the latest
+releases of some of these packages, as critical bugs present in
+earlier releases have been fixed. The latest gettext and texi2html
+are strongly suggested.
+
+3.4 Extra make targets
----------------------
-The Makefiles can do much more than build the package. `targets' can be
-given to make, which do various things. They are used as follows:
+The Makefiles can do much more than build the package. `targets' can
+be given to make, which do various things. They are used as follows:
- $ make target1 target2 ...
+ $ make target1 target2 ...
Some of the targets available are:
- all same as make with no targets
- clean remove everything generated by 'make all'
- distclean as clean, and everything generated by configure
- maintainer-clean as distclean, and everything generated by
- autogen.sh
- install install the package
- uninstall uninstall the package
- tags make tags tables
- dist make a distribution
- distcheck as dist, but test it as well
- gimp-dist package the for inclusion in the GIMP tree
+ all same as make with no targets
+ clean remove everything generated by 'make all'
+ distclean as clean, and everything generated by configure
+ maintainer-clean as distclean, and everything generated by
+ autogen.sh
+ install install the package
+ uninstall uninstall the package
+ tags make tags tables
+ dist make a distribution
+ distcheck as dist, but test it as well
Other targets are available. See Makefile.in for details.
-3. configure.in.in
-------------------
+4. configure.ac
+---------------
-This file is a Bourne shell script with m4 macros embedded in it. It is parsed
-with sed to produce configure.in, which has hard-coded release dates in it.
-autoconf expands the m4 macros to produce configure.
+This file is a Bourne shell script with m4 macros embedded in it.
+autoconf expands the m4 macros to produce configure. The configure
+script includes macros from the m4 and m4local directories, including
+ones to hard-code the release date into configure.
-3.1 Layout
+4.1 Layout
----------
The file is split into mostly discrete sections:
+
i. Versioning details (including library versioning)
ii. autoconf and automake initialisation
iii. libtool setup
-iv. Default settings
+iv. Default settings (now part of v)
v. configure --with and --enable options
vi. Checks for programs
vii. Compiler flags
@@ -226,64 +294,65 @@ xii. CUPS path settings
xiii. Definitions and substitutions
xiv. Parse and output files
-The ordering of sections is based solely on that some checks depend on checks
-being performed previously. There is sometimes some overlap between sections,
-but any additions should go into the appropriate section, if at all possible.
-A new section may be created if there is no suitable section.
+The ordering of sections is based solely on that some checks depend on
+checks being performed previously. There is sometimes some overlap
+between sections, but any additions should go into the appropriate
+section, if at all possible. A new section may be created if there is
+no suitable section.
-3.2 AC_SUBST
+4.2 AC_SUBST
------------
-The main use of the configure script is to produce customised Makefiles, and
-other files too. This is done through the use of AC_SUBST, which makes a
-variable get substituted in a file:
+The main use of the configure script is to produce customised
+Makefiles, and other files too. This is done through the use of
+AC_SUBST, which makes a variable get substituted in a file:
- ESCPUTIL_BIN="escputil"
- AC_SUBST(ESCPUTIL_BIN)
+ ESCPUTIL_BIN="escputil"
+ AC_SUBST(ESCPUTIL_BIN)
-will replace any instance of @ESCPUTIL_BIN@ in a template file (ending in
-.in'). E.g.
+will replace any instance of @ESCPUTIL_BIN@ in a template file (ending
+in .in'). E.g.
- bin_PROGRAMS = @ESCPUTIL_BIN@
+ bin_PROGRAMS = @ESCPUTIL_BIN@
-3.3 AC_DEFINE and AC_DEFINE_UNQUOTED
+4.3 AC_DEFINE and AC_DEFINE_UNQUOTED
------------------------------------
These macros are used to insert a #define in config.h.
- AC_DEFINE(MACRO)
+ AC_DEFINE(MACRO)
-will cause '#define MACRO 1' to appear in config.h (this will be of the form
-'#undef MACRO' in config.h.in)
+will cause '#define MACRO 1' to appear in config.h (this will be of
+the form '#undef MACRO' in config.h.in)
-AC_DEFINE_UNQUOTED is the same as AC_DEFINE, except that a second option
-can be used to define a string literal.
+AC_DEFINE_UNQUOTED is the same as AC_DEFINE, except that a second
+option can be used to define a string literal.
-3.4 AM_CONDITIONAL
+4.4 AM_CONDITIONAL
------------------
-This is used to make certain parts of a Makefile conditional depending on
-what happens in configure. It is used in the form:
+This is used to make certain parts of a Makefile conditional depending
+on what happens in configure. It is used in the form:
- AM_CONDITIONAL(NAME, test)
- where name is the name of the conditional you define, and test
- is a check that must return true for the conditional to be
- defined.
+ AM_CONDITIONAL(NAME, test)
+ where name is the name of the conditional you define, and test
+ is a check that must return true for the conditional to be
+ defined.
This is used in a Makefile.am as follows:
- if NAME
- [do stuff]
- endif
+ if NAME
+ [do stuff]
+ endif
-Not that only one line can be made conditional, and that you cannot also use
-normal make conditionals. Its main use is to define macros, or to make a
-rule conditional.
+Note that you cannot also use normal make conditionals. Its main use
+is to define macros, or to make a rule conditional.
-4. Makefile.am
+5. Makefile.am
--------------
-There is a Makefile.am in each directory, apart from a few where the Makefile
-the next level up handles things. Each Makefile.am is split into several
-sections:
+There is a Makefile.am in each directory, apart from a few where the
+Makefile the next level up handles things. Each Makefile.am is split
+into several sections:
+
i. Macros common to every Makefile.am
ii. Path macros
iii. Compiler macros
@@ -296,262 +365,245 @@ v. Rules
vi. Cleaning macros
vii. EXTRA_DIST
-Keeping everything in this logical order keeps them neat and readable. Not
-every Makefile.am will have all these sections, but those that are present
-should be ordered in this way.
+Keeping everything in this logical order keeps them neat and readable.
+Not every Makefile.am will have all these sections, but those that are
+present should be ordered in this way.
-4.1 Automake basics
+5.1 Automake basics
-------------------
-Automake parses Makefile.am, and generates rules in Makefile.in depending on
-what it finds. There are `primary' variables, such as PROGRAMS, SCRIPTS,
-MANS, HEADERS and DATA that describe the type of source one is defining. These
-are coupled with a location to install into. For example, these are a few
-standard locations: bindir, sbindir, mandir, datadir, pkgdatadir. You can
-define your own quite easily. They are used together as follows:
-
- bin_PROGRAMS = myprog [where bindir=$(prefix)/bin]
- pkgdata_DATA = datafile1 datafile2
- [where pkgdatadir=$(prefix)/share/$(PACKAGE)]
-
-Note! the 'dir' postfix is stripped off the location. I.e. bindir -> bin.
-That is all there is to it! You can use these simple variables to describe
-everything in your source, and where is gets installed to.
- In the case of PROGRAMS, one also has to specify the SOURCES as well.
-E.g. in the example above, a binary called `myprog' was defined. The sources
-for this program are defined as follows:
-
- myprog_SOURCES = myprog.c myprog.h
-
-automake will create all of the rules needed to build and install everything.
-An extra point is that suppose one doesn't want to install something? For this
-there is a 'noinst' macro, so that noinst_PROGRAMS will not ever be installed.
-One might also want noinst_HEADERS. If one wanted to install headers, one would
-define
-
- includedir=$(prefix)/include
+Automake parses Makefile.am, and generates rules in Makefile.in
+depending on what it finds. There are `primary' variables, such as
+PROGRAMS, SCRIPTS, MANS, HEADERS and DATA that describe the type of
+source one is defining. These are coupled with a location to install
+into. For example, these are a few standard locations: bindir,
+sbindir, mandir, datadir, pkgdatadir. You can define your own quite
+easily. They are used together as follows:
+
+ bin_PROGRAMS = myprog [where bindir=$(prefix)/bin]
+ pkgdata_DATA = datafile1 datafile2
+ [where pkgdatadir=$(prefix)/share/$(PACKAGE)]
+
+Note! the 'dir' postfix is stripped off the location. I.e. bindir ->
+bin. That is all there is to it! You can use these simple variables
+to describe everything in your source, and where is gets installed to.
+
+In the case of PROGRAMS, one also has to specify the SOURCES as well.
+E.g. in the example above, a binary called `myprog' was defined. The
+sources for this program are defined as follows:
+
+ myprog_SOURCES = myprog.c myprog.h
+
+automake will create all of the rules needed to build and install
+everything. An extra point is that suppose one doesn't want to
+install something? For this there is a 'noinst' macro, so that
+noinst_PROGRAMS will not ever be installed. One might also want
+noinst_HEADERS. If one wanted to install headers, one would define
+
+ includedir=$(prefix)/include
and then
- pkgincludedir=$(includedir)/$(PACKAGE).
+ pkgincludedir=$(includedir)/$(PACKAGE).
Now
- pkginclude_HEADERS = myheader.h
-
-will install the header into the correct location. Some of the locations in the
-above examples are defined by default. The others must be defined by hand.
- There are also some macros with specific functions. Any file that is not
-mentioned in a macro, and also and MANS, will have to be put in an EXTRA_DIST
-macro, so that automake knows to distribute them.
- Also, some files might not be automatically cleaned. There are CLEANFILES,
-DISTCLEANFILES and MAINTAINERCLEANFILES macros for use with the 'clean',
-'distclean' and 'maintainer-clean' make targets respectively. Use with caution!
-One does not want to clean things that cannot be recreated! CLEANFILES should
-be regenerated with 'make' as part of the build process, DISTCLEANFILES by
-configure (e.g. Makefiles) and MAINTAINERCLEANFILES should be created by
-'autogen.sh' and the programs it calls (e.g. Makefile.in's which are created by
-automake).
-
-4.2 Make and subdirectories
+ pkginclude_HEADERS = myheader.h
+
+will install the header into the correct location. Some of the
+locations in the above examples are defined by default. The others
+must be defined by hand.
+
+There are also some macros with specific functions. Any file that is
+not mentioned in a macro, and also and MANS, will have to be put in an
+EXTRA_DIST macro, so that automake knows to distribute them.
+
+Also, some files might not be automatically cleaned. There are
+CLEANFILES, DISTCLEANFILES and MAINTAINERCLEANFILES macros for use
+with the 'clean', 'distclean' and 'maintainer-clean' make targets
+respectively. Use with caution! One does not want to clean things
+that cannot be recreated! CLEANFILES should be regenerated with
+'make' as part of the build process, DISTCLEANFILES by configure
+(e.g. Makefiles) and MAINTAINERCLEANFILES should be created by
+'autogen.sh' and the programs it calls (e.g. Makefile.in's which are
+created by automake).
+
+5.2 Make and subdirectories
---------------------------
If a Makefile.am has a SUBDIRS macro, make will recurse through these
-subdirectories, running make in each one. e.g. in the top-level Makefile.am:
+subdirectories, running make in each one. e.g. in the top-level
+Makefile.am:
- SUBDIRS = intl lib man src test po
+ SUBDIRS = intl lib man src test po
-In this case the order of directories is critical: lib, src and test depend on
-intl being built and src and test depend on lib being built. Also, test depends
-on libgimpprint in src and po must be run after all the source has been built
-(as it parses all C source, possibly including dynamically generated code). The
-same applies in src/Makefile.am: most directories require libgimpprint for
-linking with, and libgimpprint requires printdef.
- Therefore the order of building is critical! It should be technically
+In this case the order of directories is critical: lib, src and test
+depend on intl being built and src and test depend on lib being built.
+Also, test depends on libgutenprint in src and po must be run after all
+the source has been built (as it parses all C source, possibly
+including dynamically generated code). The same applies in
+src/Makefile.am: most directories require libgutenprint for linking
+with, and libgutenprint requires printdef.
+
+Therefore the order of building is critical! It should be technically
possible to run make in any subdirectory and have all the dependencies
-satisfied by rules in that Makefile. Unfortunately, this requires complex rules
-in each directory, and this cannot be done as the source tree gets bigger and
-more complex. As a result, one should only run make from the top level, as
-only this is certain to satisfy all dependencies.
+satisfied by rules in that Makefile. Unfortunately, this requires
+complex rules in each directory, and this cannot be done as the source
+tree gets bigger and more complex. As a result, one should only run
+make from the top level, as only this is certain to satisfy all
+dependencies.
-4.3 Conditional compilation
+5.3 Conditional compilation
---------------------------
-Most of the source is conditionally compiled according to the defaults in
-configure.in.in, which may be overridden by passing options to configure,
-or possibly by the results of configure checks. Depending on the result,
-configure may substitute what to build into the generated Makefile, e.g.:
+Most of the source is conditionally compiled according to the defaults
+in configure.ac, which may be overridden by passing options to
+configure, or possibly by the results of configure checks. Depending
+on the result, configure may substitute what to build into the
+generated Makefile, e.g.:
- bin_PROGRAMS = @ESCPUTIL_BIN@
- EXTRA_PROGRAMS = escputil
+ if BUILD_ESCPUTIL
+ bin_PROGRAMS = escputil
+ endif
-It is important to have the EXTRA_ macro, as otherwise the source will
-not get distributed.
+If you use @@ substitutions, make sure that you use the EXTRA_ prefix
+(e.g. EXTRA_PROGRAMS), so that automake knows what is to be built.
-4.4 When automake is not enough...
+5.4 When automake is not enough...
----------------------------------
-When one wants to do something that is not within the scope of the facilities
-automake provides, one can write one's own rules, just like in any other
-Makefile.
+When one wants to do something that is not within the scope of the
+facilities automake provides, one can write one's own rules, just like
+in any other Makefile.
4.4.1 Rule syntax
Make rules take the following form:
- target ... : prerequisites ...
- commands
- ...
- ...
+ target ... : prerequisites ...
+ commands
+ ...
+ ...
where
- target is the name of a file (or files) to create
- prerequisites are files that are needed to make the target
- commands are commands to make the target
+ target is the name of a file (or files) to create
+ prerequisites are files that are needed to make the target
+ commands are commands to make the target
+
+The target will only be made if it does not exist or the timestamp on
+any of the prerequisites is newer, indicating that it is out of date.
-The target will only be made if it does not exist or the timestamp on any of the
-prerequisites is newer, indicating that it is out of date.
- make is a complex program, and this is just the bare basic operation. See
-the GNU make info documentation for a detailed explanation.
+make is a complex program, and this is just the bare basic
+operation. See the GNU make info documentation for a detailed
+explanation.
4.4.2 Correctly referencing files
-A file may be present either in the _source_ or _build_ directory, which may or
-may not be the same. The source directory contains the unchanging source files,
-whereas the build directory contains all the generated files, such as
-Makefiles, object code, libraries and executables and also generated headers, C
-source and manual pages. The macros to use are:
+A file may be present either in the _source_ or _build_ directory,
+which may or may not be the same. The source directory contains the
+unchanging source files, whereas the build directory contains all the
+generated files, such as Makefiles, object code, libraries and
+executables and also generated headers, C source and manual pages.
+The macros to use are:
- $(srcdir) The equivalent directory in the source tree
- . The build directory (which is the current directory)
- $(top_srcdir) The highest level of the source tree
- $(top_builddir) The highest level of the build tree
+ $(srcdir) The equivalent directory in the source tree
+ . The build directory (current directory)
+ $(top_srcdir) The highest level of the source tree
+ $(top_builddir) The highest level of the build tree
-5. aclocal
+6. aclocal
----------
-aclocal contains all the macros that are needed by autoconf to generate
-configure from configure.in. It is created by running 'aclocal'. If any of the
-macros are not present on your system, you can point out where the macros
-distributed with GIMP-Print are by using '-I macrodir' with aclocal. E.g. if
-AM_PATH_GIMPPRINT is missing, you can make it use src/main/gimpprint.m4 with
-'aclocal -I src/main'.
+aclocal contains all the macros that are needed by autoconf to
+generate configure from configure.ac. It is created by running
+'aclocal'. If any of the macros are not present on your system, you
+can point out where the macros distributed with Gutenprint are by
+using '-I macrodir' with aclocal.
-6. config.h
+7. config.h
-----------
-config.h is created by configure and included by all of the C source files in
-the distribution. It is created from config.h.in by 'configure'. config.h.in
-is created from configure.in and acconfig.h by 'autoheader'. If you add any
-AC_DEFINE, or AC_DEFINE_UNQUOTED macros to configure.in.in, you may be required
-to add entries to acconfig.h. If you defined 'HAVE_FOO_H' you would add
-something like:
- /* Define if foo.h is present */
- #undef HAVE_FOO_H
-to acconfig.h
+config.h is created by configure and should beincluded by all of the C
+source files in the distribution. It is created from config.h.in by
+'configure'. config.h.in is created from configure.ac by
+'autoheader'.
-7. libgimpprint and libprintut
+8. libgutenprint
+----------------
-Any source that is to link with libgimpprint should include the gimp-print.h
+Any source that is to link with libgutenprint should include the gutenprint.h
header. The right way to do this is as follows:
- #ifdef INCLUDE_GIMP_PRINT_H
- # include INCLUDE_GIMP_PRINT_H
- #else
- # include <gimp-print.h>
- #endif
+ #include <gutenprint/gutenprint.h>
-This is so that an installed version of libgimpprint can be linked against.
- To ensure proper linking, the Makefile.am should have the following:
+To ensure proper linking, the Makefile.am should have the following:
- program_LDADD = $(LIBGIMPPRINT_LIBS)
+ program_LDADD = $(LIBGUTENPRINT_LIBS)
The Makefile.am should also include any necessary CFLAGS with:
- INCLUDES = @INCLUDES@ $(LIBGIMPPRINT_CFLAGS)
-
-It is used with INCLUDES and not CFLAGS because is usually is used to specify
-header locations.
- If a program uses the utility library libprintut, it must include
-libprintut.h:
-
- #include "../../lib/libprintut.h"
+ LOCAL_CPPFLAGS = $(LIBGUTENPRINT_CFLAGS)
-To link, the library must be specified in the same way as for libgimpprint:
- program_LDADD = ../../lib/libprintut.la $(INTLLIBS) ../../lib/libprintut.la
-
-Note that if it is using gettext, then you have to specify it _twice_. If every
-binary is to link with it, then use LIBS instead:
-
- LIBS = @LIBS@ ../../lib/libprintut.la $(INTLLIBS) ../../lib/libprintut.la
-
-
-8. automake subtleties
+9. automake subtleties
----------------------
-Automake parses Makefile.am to produce Makefile.in. Makefile.am looks much like
-a normal Makefile, e.g. you can write your own rules in it. However, it is not
-entirely like a normal Makefile. In particular, automake conditionals are not
-the same as make conditionals in that they only work for single lines, not
-whole blocks of lines. Therefore if you want to make a rule conditional, just
-surround the 'target: dependencies' line:
-
- if BUILD_CUPS
- install-data-local: ppd
- endif
- $(mkinstalldirs) $(DESTDIR)$(cups_modeldir)
- cd ppd ; \
- for ppdfile in * ; do \
- $(INSTALL_DATA) $$ppdfile $(DESTDIR)$(cups_modeldir) ; \
- done
+Automake parses Makefile.am to produce Makefile.in. Makefile.am looks
+much like a normal Makefile, e.g. you can write your own rules in it.
+However, it is not entirely like a normal Makefile. In particular,
+automake conditionals are not the same as make conditionals (which are
+not available).
Another gotcha is that automake adds rules of its own, so you must make sure
-that the names do not clash, or you may get obscure problems occurring.
+that the names do not clash, or you may get obscure problems occuring
+when you override an automake rule.
-9. libtool tricks
------------------
-
-libtool is used to create shared libraries. One gotcha with libtool is that if
-a program is linked with a libtool shared library in the build tree, then it is
-actually created in '.libs/program', and not 'program'. However, if it is
-statically linked (e.g. the platform does not support shared libraries, or you
-used --disable-shared with configure, perhaps to make the build faster), then
-it will be created as 'program'. This is so that you can run the program
-before you install it. If it is linked with shared libraries, a wrapper script
-does some magic with LD_LIBRARY_PATH. However, this means that your install
-rules must take this into account by checking that '.libs/program exists', and
-installing it if it is present, but otherwise installing 'program'. Automake
-install rules do this automatically, but it you write your own, you must take
-this into consideration.
-
+10. libtool tricks
+------------------
-10. Testing changes to the build scripts
+libtool is used to create shared libraries. One gotcha with libtool
+is that if a program is linked with a libtool shared library in the
+build tree, then it is actually created in '.libs/program', and not
+'program'. However, if it is statically linked (e.g. the platform
+does not support shared libraries, or you used --disable-shared with
+configure, perhaps to make the build faster), then it will be created
+as 'program'. This is so that you can run the program before you
+install it. If it is linked with shared libraries, a wrapper script
+does some magic with LD_LIBRARY_PATH. However, this means that your
+install rules must take this into account by checking that
+'.libs/program exists', and installing it if it is present, but
+otherwise installing 'program'. Automake install rules do this
+automatically, but it you write your own, you must take this into
+consideration. The best option is to not use custom install rules for
+binaries.
+
+
+11. Testing changes to the build scripts
---------------------------------------
-If you make a change to one of the scripts, simply running autogen.sh and
-seeing if 'make' and 'make install' work is not enough. In particular, you
-must check that it does not break 'VPATH' builds where the source and build
-directories are not the same.
-To do this:
+If you make a change to one of the scripts, simply running autogen.sh
+and seeing if 'make' and 'make install' work is not enough. In
+particular, you must check that it does not break 'VPATH' builds where
+the source and build directories are not the same. To do this:
- $ mkdir /var/tmp/tmp-build
- $ cd /var/tmp/tmp-build
- $ ~roger/gimp-print/current/configure --with-cups
- $ make
- $ make DESTDIR=/var/tmp/tmp-inst install
+ $ mkdir /var/tmp/tmp-build
+ $ cd /var/tmp/tmp-build
+ $ ~roger/gutenprint/current/configure [options]
+ $ make
+ $ make DESTDIR=/var/tmp/tmp-inst install
-You should also test that 'make install' works with and without DESTDIR set.
-Note that the current stable gettext release does not support DESTDIR, but the
-CVS version does. The current gettext also breaks in VPATH due to
-MKINSTALLDIRS being wrongly defined. This is also fixed in CVS.
+You should also test that 'make install' works with and without
+DESTDIR set. Note that old gettext releases do not support DESTDIR,
+but the current 0.10.x versions do. The old gettext also breaks in
+VPATH builds due to MKINSTALLDIRS being wrongly defined. This is also
+fixed in the current version.
-11. Further information
+12. Further information
-----------------------
autoconf: autoconf.info
automake: automake.info
CVS: cvs.info
-gettext: gettext.info (but it's not very comprehensive)
+gettext: gettext.info
libtool: libtool.info
make: make.info
-12. Known problems
+13. Known problems
------------------
If you have a version of the Gimp older than about 1.1.27, your
@@ -561,6 +613,8 @@ This should only be a problem when building from CVS; the configure
script included in released versions will not have this problem.
-13. Updating PO files
-wget -r -np -nH --cut-dirs=3 --accept '.po' --cache=off http://www.iro.umontreal.ca/translation/maint/gimp-print/ \ No newline at end of file
+
+Local Variables:
+mode: text
+End: \ No newline at end of file
diff --git a/doc/appendices.texi b/doc/appendices.texi
deleted file mode 100644
index 0170e74..0000000
--- a/doc/appendices.texi
+++ /dev/null
@@ -1,15 +0,0 @@
-@node Appendices, Data Type and Variable Index, Problems, Top
-@chapter Appendices
-@cindex Appendices
-
-@menu
-* Dithering:: Dither algorithms.
-* Weaving:: Weaving algorithms.
-* ESC/P2:: Epson ESC/P2 printer control language.
-* New Printer:: Adding a new printer to libgimpprint.
-@end menu
-
-@include dither.texi
-@include weave.texi
-@include escp2.texi
-@include new-printer.texi
diff --git a/doc/copying.texi b/doc/copying.texi
deleted file mode 100644
index 2422223..0000000
--- a/doc/copying.texi
+++ /dev/null
@@ -1,28 +0,0 @@
-@node Copying, Overview, Instructions, Top
-@include gpl.texi
-
-@unnumbered Copying summary
-GIMP-Print is @dfn{free}; this means that everyone is free to use it and
-free to redistribute it on a free basis. GIMP-Print is not in the public
-domain; it is copyrighted and there are restrictions on its
-distribution, but these restrictions are designed to permit everything
-that a good cooperating citizen would want to do. What is not allowed is
-to try to prevent others from further sharing any version of GIMP-Print
-that they might get from you.
-
-Specifically, we want to make sure that you have the right to give away
-copies of GIMP-Print, that you receive source code or else can get it if
-you want it, that you can change GIMP-Print or use pieces of it in new
-free programs, and that you know you can do these things.
-
-To make sure that everyone has such rights, we have to forbid you to
-deprive anyone else of these rights. For example, if you distribute
-copies of GIMP-Print, 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 tell them their rights.
-
-Also, for our own protection, we must make certain that everyone finds
-out that there is no warranty for GIMP-Print. If GIMP-Print is modified
-by someone else and passed on, we want their recipients to know that
-what they have is not what we distributed, so that any problems
-introduced by others will no reflect on our reputation.
diff --git a/doc/developer/Makefile.am b/doc/developer/Makefile.am
new file mode 100644
index 0000000..e59d4da
--- /dev/null
+++ b/doc/developer/Makefile.am
@@ -0,0 +1,191 @@
+## $Id: Makefile.am,v 1.16 2005/01/30 16:01:52 rleigh Exp $
+## Copyright (C) 2001 Andy Stewart and Roger Leigh
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+## Process this file with automake to produce Makefile.in.
+
+AUTOMAKE_OPTIONS = 1.4 gnu
+
+@SET_MAKE@
+
+MAINT_CHARSET = latin1
+
+include $(top_srcdir)/scripts/global.mk
+
+
+## Variables
+
+MANUAL_SRC_FILES = \
+ copying.xml \
+ dither.xml \
+ escp2.xml \
+ gutenprint.xml \
+ gpl-appendix.xml \
+ introduction.xml \
+ new-printer.xml \
+ problems.xml \
+ using.xml \
+ weave.xml
+
+HTMLDIR = reference-html
+
+if INSTALL_USER_GUIDE
+STANDARD_TARGETS = html
+endif
+
+DISTHOOKDIRS = $(HTMLDIR)
+
+
+if MAINTAINER_MODE
+MAINT_MODE = true
+else
+MAINT_MODE = false
+endif
+
+if MAINTAINER_MODE
+ALL_LOCAL_TARGETS = docs
+else
+ALL_LOCAL_TARGETS = $(STANDARD_TARGETS)
+endif
+
+all-local: $(ALL_LOCAL_TARGETS)
+
+
+## Rules
+
+dist-hook: html-stamp
+ for dir in $(DISTHOOKDIRS) ; do \
+ if test -d $(srcdir)/$$dir ; then \
+ mkdir $(distdir)/$$dir; \
+ for dirfile in $(srcdir)/$$dir/*; do \
+ if test -f $$dirfile ; then \
+ cp -p $$dirfile $(distdir)/$$dir ; \
+ fi ; \
+ if test -d $$dirfile ; then \
+ cp -pR $$dirfile $(distdir)/$$dir ; \
+ fi ; \
+ done \
+ fi \
+ done
+ for file in $(DISTHOOKFILES) ; do \
+ if test -f $$file ; then \
+ cp -p $$file $(distdir) ; \
+ fi ; \
+ done
+
+docs: html pdf
+
+pdf: gutenprint.pdf
+
+gutenprint.pdf: $(MANUAL_SRC_FILES)
+ if test $(srcdir) = '.' ; then \
+ : ; \
+ else \
+ for file in $(MANUAL_SRC_FILES) ; do \
+ if test -L $$file ; then \
+ $(RM) -f $$file ; \
+ fi ; \
+ $(LN_S) -f $(srcdir)/$$file $$file ; \
+ done ; \
+ fi ; \
+ $(DB2PDF) gutenprint.xml
+
+html: html-stamp
+
+# This ugly workaround with SOURCE is because db2html doesn't seem to like
+# "./users-guide.sgml". Note that db2ps does not have the same limitation.
+# html-stamp should *only* be called by html--it's just a timestamp!
+
+html-stamp: $(MANUAL_SRC_FILES)
+ if test $(srcdir) = '.' ; then \
+ : ; \
+ else \
+ for file in $(MANUAL_SRC_FILES) ; do \
+ if test -L $$file ; then \
+ $(RM) -f $$file ; \
+ fi ; \
+ $(LN_S) -f $(srcdir)/$$file $$file ; \
+ done ; \
+ fi
+ $(DB2HTML) gutenprint.xml
+ -$(RM) -rf $(HTMLDIR)
+ mv gutenprint $(HTMLDIR)
+ chmod a+rx $(HTMLDIR)
+ touch html-stamp
+
+install-data-local: $(STANDARD_TARGETS)
+ if test -n '$(STANDARD_TARGETS)' ; then \
+ $(mkinstalldirs) $(DESTDIR)$(datadir)/$(PACKAGE)/doc/$(HTMLDIR) ; \
+ if test -f gutenprint.pdf ; then \
+ $(INSTALL_DATA) gutenprint.pdf $(DESTDIR)$(datadir)/$(PACKAGE)/doc ; \
+ elif test -f $(srcdir)/gutenprint.pdf ; then \
+ $(INSTALL_DATA) $(srcdir)/gutenprint.pdf $(DESTDIR)$(datadir)/$(PACKAGE)/doc ; \
+ fi ; \
+ if test -d $(HTMLDIR) ; then \
+ HTMLGENDIR="$(HTMLDIR)" ; \
+ elif test -d $(srcdir)/$(HTMLDIR) ; then \
+ HTMLGENDIR="$(srcdir)/$(HTMLDIR)" ; \
+ else \
+ exit 1 ; \
+ fi ; \
+ for file in $$HTMLGENDIR/*.html $$HTMLGENDIR/*.css ; do \
+ if test -f $$file ; then \
+ $(INSTALL_DATA) $$file $(DESTDIR)$(datadir)/$(PACKAGE)/doc/$(HTMLDIR) ; \
+ fi ; \
+ done ; \
+ fi
+
+uninstall-local:
+ -$(RM) -r $(DESTDIR)$(datadir)/$(PACKAGE)/doc
+
+CLEAN_MANUALS = \
+ $(RM) -f gutenprint.pdf gutenprint.ps; \
+ $(RM) -rf *html-stamp $(HTMLDIR)
+
+clean-local:
+ if test $(srcdir) = "." -a $(MAINT_MODE) = false ; then \
+ echo "clean-local: Not removing $(HTMLDIR)" ; \
+ echo 'clean-local: Not removing gutenprint.pdf' ; \
+ echo 'clean-local: Not removing gutenprint.ps' ; \
+ else \
+ $(CLEAN_MANUALS) ; \
+ fi
+ if test $(srcdir) = "." ; then \
+ : ; \
+ else \
+ $(RM) -f $(MANUAL_SRC_FILES) ; \
+ fi
+ -$(RM) -rf *.tex *.log *.aux *.dvi *.gz *.out *.junk *.out *.fot
+ -$(RM) -rf db2html* DB2HTML*
+
+veryclean:
+ $(MAKE) MAINT_MODE=true clean
+
+maintainer-clean-local:
+ $(CLEAN_MANUALS)
+
+
+## Clean
+
+MAINTAINERCLEANFILES = Makefile.in *html-stamp
+
+
+EXTRA_DIST = \
+ $(MANUAL_SRC_FILES) \
+ gutenprint.pdf \
+ html-stamp
+
+.PHONY: docs html ps pdf
diff --git a/doc/developer/Makefile.in b/doc/developer/Makefile.in
new file mode 100644
index 0000000..6674208
--- /dev/null
+++ b/doc/developer/Makefile.in
@@ -0,0 +1,636 @@
+# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Variables
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/scripts/global.mk
+subdir = doc/developer
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gimp.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \
+ $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \
+ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CUPS_FALSE = @BUILD_CUPS_FALSE@
+BUILD_CUPS_PPDS_FALSE = @BUILD_CUPS_PPDS_FALSE@
+BUILD_CUPS_PPDS_TRUE = @BUILD_CUPS_PPDS_TRUE@
+BUILD_CUPS_TRUE = @BUILD_CUPS_TRUE@
+BUILD_ESCPUTIL_FALSE = @BUILD_ESCPUTIL_FALSE@
+BUILD_ESCPUTIL_TRUE = @BUILD_ESCPUTIL_TRUE@
+BUILD_FOOMATIC_3_FALSE = @BUILD_FOOMATIC_3_FALSE@
+BUILD_FOOMATIC_3_TRUE = @BUILD_FOOMATIC_3_TRUE@
+BUILD_FOOMATIC_FALSE = @BUILD_FOOMATIC_FALSE@
+BUILD_FOOMATIC_TRUE = @BUILD_FOOMATIC_TRUE@
+BUILD_GENPPD_STATIC_FALSE = @BUILD_GENPPD_STATIC_FALSE@
+BUILD_GENPPD_STATIC_TRUE = @BUILD_GENPPD_STATIC_TRUE@
+BUILD_GHOSTSCRIPT_FALSE = @BUILD_GHOSTSCRIPT_FALSE@
+BUILD_GHOSTSCRIPT_TRUE = @BUILD_GHOSTSCRIPT_TRUE@
+BUILD_GIMP2_FALSE = @BUILD_GIMP2_FALSE@
+BUILD_GIMP2_TRUE = @BUILD_GIMP2_TRUE@
+BUILD_GIMP_FALSE = @BUILD_GIMP_FALSE@
+BUILD_GIMP_TRUE = @BUILD_GIMP_TRUE@
+BUILD_LIBGUTENPRINTUI2_FALSE = @BUILD_LIBGUTENPRINTUI2_FALSE@
+BUILD_LIBGUTENPRINTUI2_TRUE = @BUILD_LIBGUTENPRINTUI2_TRUE@
+BUILD_LIBGUTENPRINTUI_FALSE = @BUILD_LIBGUTENPRINTUI_FALSE@
+BUILD_LIBGUTENPRINTUI_TRUE = @BUILD_LIBGUTENPRINTUI_TRUE@
+BUILD_MODULES_FALSE = @BUILD_MODULES_FALSE@
+BUILD_MODULES_TRUE = @BUILD_MODULES_TRUE@
+BUILD_TESTPATTERN_FALSE = @BUILD_TESTPATTERN_FALSE@
+BUILD_TESTPATTERN_TRUE = @BUILD_TESTPATTERN_TRUE@
+BUILD_TEST_FALSE = @BUILD_TEST_FALSE@
+BUILD_TEST_TRUE = @BUILD_TEST_TRUE@
+BUILD_TRANSLATED_CUPS_PPDS_FALSE = @BUILD_TRANSLATED_CUPS_PPDS_FALSE@
+BUILD_TRANSLATED_CUPS_PPDS_TRUE = @BUILD_TRANSLATED_CUPS_PPDS_TRUE@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CONVERT = @CONVERT@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CUPS_CFLAGS = @CUPS_CFLAGS@
+CUPS_CONFIG = @CUPS_CONFIG@
+CUPS_LIBS = @CUPS_LIBS@
+CUPS_PPDS_AT_TOP_LEVEL_FALSE = @CUPS_PPDS_AT_TOP_LEVEL_FALSE@
+CUPS_PPDS_AT_TOP_LEVEL_TRUE = @CUPS_PPDS_AT_TOP_LEVEL_TRUE@
+CUPS_PPD_PS_LEVEL = @CUPS_PPD_PS_LEVEL@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DB2HTML = @DB2HTML@
+DB2PDF = @DB2PDF@
+DB2PS = @DB2PS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DIALOG = @DIALOG@
+DOXYGEN = @DOXYGEN@
+DVIPDF = @DVIPDF@
+DVIPS = @DVIPS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FIND = @FIND@
+FOOMATIC_CONFIGURE = @FOOMATIC_CONFIGURE@
+FOOMATIC_KITLOAD = @FOOMATIC_KITLOAD@
+FOOMATIC_PPDFILE = @FOOMATIC_PPDFILE@
+GENPPD_LIBS = @GENPPD_LIBS@
+GIMP2_CFLAGS = @GIMP2_CFLAGS@
+GIMP2_LIBS = @GIMP2_LIBS@
+GIMPTOOL = @GIMPTOOL@
+GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@
+GIMPTOOL_CHECK = @GIMPTOOL_CHECK@
+GIMP_CFLAGS = @GIMP_CFLAGS@
+GIMP_CFLAGS_NOUI = @GIMP_CFLAGS_NOUI@
+GIMP_DATA_DIR = @GIMP_DATA_DIR@
+GIMP_LIBS = @GIMP_LIBS@
+GIMP_LIBS_NOUI = @GIMP_LIBS_NOUI@
+GIMP_PLUGIN_DIR = @GIMP_PLUGIN_DIR@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_CONFIG = @GLIB_CONFIG@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMSGFMT = @GMSGFMT@
+GNUCFLAGS = @GNUCFLAGS@
+GTK2_CFLAGS = @GTK2_CFLAGS@
+GTK2_LIBS = @GTK2_LIBS@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_CONFIG = @GTK_CONFIG@
+GTK_LIBS = @GTK_LIBS@
+GUTENPRINTUI2_BINARY_AGE = @GUTENPRINTUI2_BINARY_AGE@
+GUTENPRINTUI2_CFLAGS = @GUTENPRINTUI2_CFLAGS@
+GUTENPRINTUI2_CURRENT_INTERFACE = @GUTENPRINTUI2_CURRENT_INTERFACE@
+GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@
+GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@
+GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la
+GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@
+GUTENPRINTUI_BINARY_AGE = @GUTENPRINTUI_BINARY_AGE@
+GUTENPRINTUI_CFLAGS = @GUTENPRINTUI_CFLAGS@
+GUTENPRINTUI_CURRENT_INTERFACE = @GUTENPRINTUI_CURRENT_INTERFACE@
+GUTENPRINTUI_INTERFACE_AGE = @GUTENPRINTUI_INTERFACE_AGE@
+GUTENPRINTUI_LIBDEPS = @GUTENPRINTUI_LIBDEPS@
+GUTENPRINTUI_LIBS = $(top_builddir)/src/gutenprintui/libgutenprintui.la
+GUTENPRINTUI_VERSION = @GUTENPRINTUI_VERSION@
+GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@
+GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@
+GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@
+GUTENPRINT_INTERFACE_AGE = @GUTENPRINT_INTERFACE_AGE@
+GUTENPRINT_LIBDEPS = @GUTENPRINT_LIBDEPS@
+
+# Libraries
+GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la
+GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@
+GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@
+GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@
+GUTENPRINT_VERSION = @GUTENPRINT_VERSION@
+IJS_CFLAGS = @IJS_CFLAGS@
+IJS_CONFIG = @IJS_CONFIG@
+IJS_LIBS = @IJS_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SAMPLES_FALSE = @INSTALL_SAMPLES_FALSE@
+INSTALL_SAMPLES_TRUE = @INSTALL_SAMPLES_TRUE@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTALL_USER_GUIDE_FALSE = @INSTALL_USER_GUIDE_FALSE@
+INSTALL_USER_GUIDE_TRUE = @INSTALL_USER_GUIDE_TRUE@
+INTLLIBS = @INTLLIBS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBREADLINE_DEPS = @LIBREADLINE_DEPS@
+LIBS = $(INTLLIBS) @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLUG_IN_PATH = @PLUG_IN_PATH@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+RELEASE_DATE = @RELEASE_DATE@
+RM = @RM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TEXI2HTML = @TEXI2HTML@
+USE_LEVEL3_PS_FALSE = @USE_LEVEL3_PS_FALSE@
+USE_LEVEL3_PS_TRUE = @USE_LEVEL3_PS_TRUE@
+USE_NLS = @USE_NLS@
+USE_NLS_FALSE = @USE_NLS_FALSE@
+USE_NLS_TRUE = @USE_NLS_TRUE@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+cups_bindir = @cups_bindir@
+cups_conf_datadir = @cups_conf_datadir@
+cups_conf_serverbin = @cups_conf_serverbin@
+cups_conf_serverroot = @cups_conf_serverroot@
+cups_exec_prefix = @cups_exec_prefix@
+cups_prefix = @cups_prefix@
+cups_sbindir = @cups_sbindir@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+gimp2_plug_indir = @gimp2_plug_indir@
+gimp_plug_indir = @gimp_plug_indir@
+gutenprint_cflags = @gutenprint_cflags@
+gutenprint_libs = @gutenprint_libs@
+gutenprintui2_cflags = @gutenprintui2_cflags@
+gutenprintui2_libs = @gutenprintui2_libs@
+gutenprintui_cflags = @gutenprintui_cflags@
+gutenprintui_libs = @gutenprintui_libs@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+AUTOMAKE_OPTIONS = 1.4 gnu
+MAINT_CHARSET = latin1
+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(LOCAL_CPPFLAGS) $(GNUCFLAGS)
+MANUAL_SRC_FILES = \
+ copying.xml \
+ dither.xml \
+ escp2.xml \
+ gutenprint.xml \
+ gpl-appendix.xml \
+ introduction.xml \
+ new-printer.xml \
+ problems.xml \
+ using.xml \
+ weave.xml
+
+HTMLDIR = reference-html
+@INSTALL_USER_GUIDE_TRUE@STANDARD_TARGETS = html
+DISTHOOKDIRS = $(HTMLDIR)
+@MAINTAINER_MODE_FALSE@MAINT_MODE = false
+@MAINTAINER_MODE_TRUE@MAINT_MODE = true
+@MAINTAINER_MODE_FALSE@ALL_LOCAL_TARGETS = $(STANDARD_TARGETS)
+@MAINTAINER_MODE_TRUE@ALL_LOCAL_TARGETS = docs
+CLEAN_MANUALS = \
+ $(RM) -f gutenprint.pdf gutenprint.ps; \
+ $(RM) -rf *html-stamp $(HTMLDIR)
+
+MAINTAINERCLEANFILES = Makefile.in *html-stamp
+EXTRA_DIST = \
+ $(MANUAL_SRC_FILES) \
+ gutenprint.pdf \
+ html-stamp
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/scripts/global.mk $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/developer/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/developer/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/../../scripts
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-hook
+check-am: all-am
+check: check-am
+all-am: Makefile all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-local
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+ clean-libtool clean-local dist-hook distclean \
+ distclean-generic distclean-libtool distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-data-local install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic \
+ maintainer-clean-local mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-info-am uninstall-local
+
+
+@SET_MAKE@
+
+export STP_MODULE_PATH = $(top_builddir)/src/main/.libs:$(top_builddir)/src/main
+export STP_DATA_PATH = $(top_srcdir)/src/main
+
+# Rules
+
+$(top_builddir)/src/main/libgutenprint.la:
+ cd $(top_builddir)/src/main; \
+ $(MAKE)
+
+$(top_builddir)/src/gutenprintui/libgutenprintui.la:
+ cd $(top_builddir)/src/gutenprintui; \
+ $(MAKE)
+
+$(top_builddir)/src/gutenprintui2/libgutenprintui2.la:
+ cd $(top_builddir)/src/gutenprintui2; \
+ $(MAKE)
+
+all-local: $(ALL_LOCAL_TARGETS)
+
+dist-hook: html-stamp
+ for dir in $(DISTHOOKDIRS) ; do \
+ if test -d $(srcdir)/$$dir ; then \
+ mkdir $(distdir)/$$dir; \
+ for dirfile in $(srcdir)/$$dir/*; do \
+ if test -f $$dirfile ; then \
+ cp -p $$dirfile $(distdir)/$$dir ; \
+ fi ; \
+ if test -d $$dirfile ; then \
+ cp -pR $$dirfile $(distdir)/$$dir ; \
+ fi ; \
+ done \
+ fi \
+ done
+ for file in $(DISTHOOKFILES) ; do \
+ if test -f $$file ; then \
+ cp -p $$file $(distdir) ; \
+ fi ; \
+ done
+
+docs: html pdf
+
+pdf: gutenprint.pdf
+
+gutenprint.pdf: $(MANUAL_SRC_FILES)
+ if test $(srcdir) = '.' ; then \
+ : ; \
+ else \
+ for file in $(MANUAL_SRC_FILES) ; do \
+ if test -L $$file ; then \
+ $(RM) -f $$file ; \
+ fi ; \
+ $(LN_S) -f $(srcdir)/$$file $$file ; \
+ done ; \
+ fi ; \
+ $(DB2PDF) gutenprint.xml
+
+html: html-stamp
+
+# This ugly workaround with SOURCE is because db2html doesn't seem to like
+# "./users-guide.sgml". Note that db2ps does not have the same limitation.
+# html-stamp should *only* be called by html--it's just a timestamp!
+
+html-stamp: $(MANUAL_SRC_FILES)
+ if test $(srcdir) = '.' ; then \
+ : ; \
+ else \
+ for file in $(MANUAL_SRC_FILES) ; do \
+ if test -L $$file ; then \
+ $(RM) -f $$file ; \
+ fi ; \
+ $(LN_S) -f $(srcdir)/$$file $$file ; \
+ done ; \
+ fi
+ $(DB2HTML) gutenprint.xml
+ -$(RM) -rf $(HTMLDIR)
+ mv gutenprint $(HTMLDIR)
+ chmod a+rx $(HTMLDIR)
+ touch html-stamp
+
+install-data-local: $(STANDARD_TARGETS)
+ if test -n '$(STANDARD_TARGETS)' ; then \
+ $(mkinstalldirs) $(DESTDIR)$(datadir)/$(PACKAGE)/doc/$(HTMLDIR) ; \
+ if test -f gutenprint.pdf ; then \
+ $(INSTALL_DATA) gutenprint.pdf $(DESTDIR)$(datadir)/$(PACKAGE)/doc ; \
+ elif test -f $(srcdir)/gutenprint.pdf ; then \
+ $(INSTALL_DATA) $(srcdir)/gutenprint.pdf $(DESTDIR)$(datadir)/$(PACKAGE)/doc ; \
+ fi ; \
+ if test -d $(HTMLDIR) ; then \
+ HTMLGENDIR="$(HTMLDIR)" ; \
+ elif test -d $(srcdir)/$(HTMLDIR) ; then \
+ HTMLGENDIR="$(srcdir)/$(HTMLDIR)" ; \
+ else \
+ exit 1 ; \
+ fi ; \
+ for file in $$HTMLGENDIR/*.html $$HTMLGENDIR/*.css ; do \
+ if test -f $$file ; then \
+ $(INSTALL_DATA) $$file $(DESTDIR)$(datadir)/$(PACKAGE)/doc/$(HTMLDIR) ; \
+ fi ; \
+ done ; \
+ fi
+
+uninstall-local:
+ -$(RM) -r $(DESTDIR)$(datadir)/$(PACKAGE)/doc
+
+clean-local:
+ if test $(srcdir) = "." -a $(MAINT_MODE) = false ; then \
+ echo "clean-local: Not removing $(HTMLDIR)" ; \
+ echo 'clean-local: Not removing gutenprint.pdf' ; \
+ echo 'clean-local: Not removing gutenprint.ps' ; \
+ else \
+ $(CLEAN_MANUALS) ; \
+ fi
+ if test $(srcdir) = "." ; then \
+ : ; \
+ else \
+ $(RM) -f $(MANUAL_SRC_FILES) ; \
+ fi
+ -$(RM) -rf *.tex *.log *.aux *.dvi *.gz *.out *.junk *.out *.fot
+ -$(RM) -rf db2html* DB2HTML*
+
+veryclean:
+ $(MAKE) MAINT_MODE=true clean
+
+maintainer-clean-local:
+ $(CLEAN_MANUALS)
+
+.PHONY: docs html ps pdf
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/developer/copying.xml b/doc/developer/copying.xml
new file mode 100644
index 0000000..858c18b
--- /dev/null
+++ b/doc/developer/copying.xml
@@ -0,0 +1,40 @@
+<chapter>
+ <title>Copying, modification and redistribution</title>
+ <para>
+ Gutenprint is <emphasis>free</emphasis>; this means that everyone
+ is free to use it and free to redistribute it on a free basis.
+ Gutenprint is not in the public domain; it is copyrighted and
+ there are restrictions on its distribution, but these restrictions
+ are designed to permit everything that a good cooperating citizen
+ would want to do. What is not allowed is to try to prevent others
+ from further sharing any version of Gutenprint that they might get
+ from you.
+ </para>
+ <para>
+ Specifically, we want to make sure that you have the right to give
+ away copies of Gutenprint, that you receive source code or else
+ can get it if you want it, that you can change Gutenprint or use
+ pieces of it in new free programs, and that you know you can do
+ these things.
+ </para>
+ <para>
+ To make sure that everyone has such rights, we have to forbid you
+ to deprive anyone else of these rights. For example, if you
+ distribute copies of Gutenprint, 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 tell them their
+ rights.
+ </para>
+ <para>
+ Also, for our own protection, we must make certain that everyone
+ finds out that there is no warranty for Gutenprint. If Gutenprint
+ is modified by someone else and passed on, we want their
+ recipients to know that what they have is not what we distributed,
+ so that any problems introduced by others will no reflect on our
+ reputation.
+ </para>
+ <para>
+ Gutenprint is licensed under the terms of the GNU General Public
+ License (GPL), reproduced in <xref linkend="gpl"/>.
+ </para>
+</chapter>
diff --git a/doc/developer/dither.xml b/doc/developer/dither.xml
new file mode 100644
index 0000000..030fdbd
--- /dev/null
+++ b/doc/developer/dither.xml
@@ -0,0 +1,679 @@
+<chapter>
+ <title>Dithering</title>
+ <para>
+ The dithering code in
+ <filename>src/main/print-dither.c</filename> attempts to
+ reproduce various shades of gray (or all colors) from only a few
+ different inks (black, cyan, magenta, yellow, and sometimes
+ light cyan and light magenta). The dots can't vary in darkness
+ or size (except for certain special printers), and so we need to
+ lay down a certain fraction of dots to represent each distinct
+ level.
+ </para>
+ <para>
+ This sounds straightforward; in practice, it isn't. Completely
+ random distribution of dots (simple probabilistic dithering)
+ would create grainy clumps and light spots. The smoothest
+ pattern results from an equidistant spacing of dots.
+ Approximating this requires sophisticated algorithms. We have
+ two dithering algorithms, an ordered dither algorithm that uses
+ a grid (matrix) to decide whether to print, and a modified
+ Floyd-Steinberg error diffusion algorithm that uses a grid in a
+ slightly different way.
+ </para>
+ <para>
+ We currently have three dithering functions:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><literal>dither_fastblack</literal></term>
+ <listitem>
+ <para>
+ This produces pure black or white from a pre-dithered
+ input. This is used for two purposes: for printing pure
+ black and white very quickly (e.g. text), and for printing
+ pre-screened monochrome output that was rasterized
+ externally.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>dither_black</literal></term>
+ <listitem>
+ <para>
+ This produces black from grayscale input. The new
+ dither_black can produce either a single or multiple
+ levels of black, for printers supporting variable dot
+ size.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>dither_cmyk</literal></term>
+ <listitem>
+ <para>
+ This produces 3, 4, 5, 6, or 7 color output (CMY, CMYK,
+ CcMmYK, CcMmYy, CcMmYyK, or any variants). The new
+ routine can handle single or multiple levels of each
+ color.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ There is a choice of dithering algorithms. Four of them are
+ based on a basic error diffusion, with a few tweaks of my own.
+ The other one is &lsquo;ordered&rsquo;. However, they all share
+ the basic operation in common. First, the algorithm picks what
+ kind of dot (if there are multiple dot sizes and/or tones that
+ may be picked) is the candidate to be printed. This decision is
+ made based on the darkness at the point being dithered. Then,
+ it decides whether the dot will be printed at all. What this is
+ based on depends upon which algorithm family we use. This is
+ all described in more detail below.
+ </para>
+ <para>
+ Ordered dithering works by comparing the value at a given point
+ with the value of a tiled matrix. If the value at the point is
+ greater than the value in the matrix, the dot is printed. The
+ matrix should consist of a set of evenly spaced points between 0
+ and the upper limit. The choice of matrix is very important for
+ print quality. A good dither matrix will emphasize high
+ frequency components, which distributes dots evenly with a
+ minimum of clumping. The matrices used here are all simple
+ matrices that are expanded recursively to create larger matrices
+ with the same kind of even point distribution. This is
+ described below.
+ </para>
+ <para>
+ Note that it is important to use different matrices for the two
+ sub-operations, because otherwise the choice about whether to
+ print and the choice of dot size will be correlated. The usual
+ result is that the print is either too dark or too light, but
+ there can be other problems.
+ </para>
+ <para>
+ Ordered dithering works quite well on single dot size, four
+ color printers. It has not been well tested on four color,
+ variable dot size printers. It should be avoided on six color
+ printers.
+ </para>
+ <para>
+ Error diffusion works by taking the output error at a given
+ pixel and &ldquo;diffusing&rdquo; it into surrounding pixels.
+ Output error is the difference between the amount of ink output
+ and the input level at each pixel. For simple printers, with
+ one or four ink colors and only one dot size, the amount of ink
+ output is either 65536 (i. e. full output) or 0 (no output).
+ The difference between this and the input level is the error.
+ Normal error diffusion adds part of this error to the adjoining
+ pixels in the next column and the next row (the algorithm simply
+ scans each row in turn, never backing up). The error adds up
+ until it reaches a threshold (half of the full output level, or
+ 32768), at which point a dot is output, the output is subtracted
+ from the current value, and the (now negative) error is diffused
+ similarly.
+ </para>
+ <para>
+ Error diffusion works quite well in general, but it tends to
+ generate artifacts which usually appear as worm-like lines or
+ areas of anomalous density. I have devised some ways, as
+ described below, of ameliorating these artifacts.
+ </para>
+ <para>
+ There are two sub-classes of error diffusion that we use here,
+ &lsquo;random&rsquo; and &lsquo;hybrid&rsquo;. One of the
+ techniques that we use to ameliorate the artifacts is to use a
+ fuzzy threshold rather than the hard threshold of half of the
+ output level. Random error diffusion uses a pseudo-random
+ number to perturb the threshold, while hybrid error diffusion
+ uses a matrix. Hybrid error diffusion worked very poorly in
+ 3.1.3, and I couldn't figure out why until I found a bug. It
+ now works very well.
+ </para>
+ <para>
+ There is one additional variant (on both sub-classes), called
+ &lsquo;adaptive hybrid&rsquo; and &lsquo;adaptive random&rsquo;.
+ The adaptive variant takes advantage of the fact that the
+ patterns that ordered dithering create are less visible at very
+ low densities, while the artifacts created by error diffusion
+ are more objectionable at low densities. At low densities,
+ therefore, it uses ordered dithering; at higher densities it
+ uses error diffusion.
+ </para>
+ <para>
+ Handling multiple output levels makes life a bit more
+ complicated. In principle, it shouldn't be much harder: simply
+ figure out what the ratio between the available output levels is
+ and have multiple thresholds. In practice, getting these right
+ involves a lot of trial and error. The other thing that's
+ important is to maximize the number of dots that have some ink.
+ This will reduce the amount of speckling. More on this later.
+ </para>
+ <para>
+ The next question: how do we handle black when printing in
+ color? Black ink is much darker than colored inks. It's
+ possible to produce black by adding some mixture of cyan,
+ magenta, and yellow&mdash;in principle. In practice, the black
+ really isn't very black, and different inks and different papers
+ will produce different color casts. However, by using CMY to
+ produce gray, we can output a lot more dots! This makes for a
+ much smoother image. What's more, one cyan, one magenta, and
+ one yellow dot produce less darkness than one black dot, so
+ we're outputting that many more dots. Better yet, with 6 or 7
+ color printers, we have to output even more light ink dots. So
+ Epson Stylus Photo printers can produce really smooth grays---if
+ we do everything right. The right idea is to use CMY at lower
+ black levels, and gradually mix in black as the overall amount
+ of ink increases, so the black dots don't really become visible
+ within the ink mass.
+ </para>
+ <para>
+ Variable dot sizes are handled by dividing the range between 0
+ and 65536 into segments. Each segment can either represent a
+ range in which all of one kind of ink (color and/or dot size) is
+ used, with varying amounts of ink, or a transition region
+ between inks, in which equal numbers of dots are printed but the
+ amount of each ink will be adjusted throughout the range. Each
+ range is represented by four numbers:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Bottom of the range.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Top of the range.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Value of the lighter ink.
+ </para>
+ </listitem>
+ <listitem>
+ <para>Value of the darker ink.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ In addition, the bit patterns and which type of ink are also
+ represented, but they don't affect the actual algorithm.
+ </para>
+ <para>
+ As mentioned above, the basic algorithm is the same whether we
+ use ordered dither or error diffusion. We perform the following
+ steps on each color of each pixel:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Compute the value of the particular color we're printing.
+ This isn't usually the pure CMY value; it's adjusted to
+ improve saturation and to limit the use of black in light
+ toned regions (to avoid speckling).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Find the range containing this value.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Compute where this value lies within the range. We scale
+ the endpoints between 0 and 65536 for this purpose. So for
+ example, if the bottom of the range is 10,000 and the top of
+ the range is 20,000, and the value is 12,500, we're 1/4 of
+ the way between the bottom and the top of the range, so our
+ scale point is 16384.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Compute the &ldquo;virtual value&rdquo;. The virtual value
+ is the distance between the value of the lighter and the
+ value of the darker ink. So if the value of the light ink
+ is 32768 and the dark ink is 65536, we compute a virtual
+ value scaled appropriately between these two values, which
+ is 40960 in this case.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Using either error diffusion or ordered dither, the standard
+ threshold is 1/2 of the value (20480 in this case). Using
+ ordered dither, we want to compute a value between 0 and
+ 40960 that we will compare the input value against to decide
+ whether to print. Using pure error diffusion, we would
+ compare the accumulated error against 20480 to decide
+ whether to print. In practice, we use the same matrix
+ method to decide whether to print. The correct amount of
+ ink will be printed this way, but we minimize the squiggly
+ lines characteristic of error diffusion by dithering the
+ threshold in this fashion. A future enhancement will allow
+ us to control the amount of dithering applied to the
+ threshold.
+ </para>
+ </listitem>
+ </orderedlist>
+ <para>
+ The matrices were generated by Thomas Tonino
+ <email>ttonino@bio.vu.nl</email> with an algorithm of his
+ devising. The algorithm is designed to maximize the spacing
+ between dots at any given density by searching the matrix for
+ holes and placing a dot in the largest available hole. It
+ requires careful selection of initial points to achieve good
+ results, and is very time consuming. For best results, a
+ different matrix must be used for modes with 2:1 aspect ratio
+ (e.g. 1440&times;720) than for 1:1 (e. g. 720&times;720). It is
+ essential with any of these matrices that every point be used.
+ Skipping points generates low-frequency noise.
+ </para>
+ <para>
+ It's essential to use different matrices for deciding whether to
+ print and for deciding what color (dark or light) to print.
+ This should be obvious; the decision about whether to print at
+ all should be as independent as possible from the decision about
+ what color to print, because any bias will result in excess
+ light or dark ink being printed, shifting the tonal balance. We
+ actually use the same matrices, but we shift them vertically and
+ horizontally. Assuming that the matrices are not
+ self-correlated, this will yield good results.
+ </para>
+ <para>
+ The ranges are computed from a list of ink values (between 0 and
+ 1 for each possible combination of dot size and ink tone, where
+ the value represents the darkness of the ink) and the desired
+ maximum density of the ink. This is done in dither_set_ranges,
+ and needs more documentation.
+ </para>
+ <para>
+ I stated earlier that I've tweaked the basic error diffusion
+ algorithm. Here's what I've done to improve it:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ We use a variable threshold to decide when to print, as
+ discussed above. This does two things for us: it reduces
+ the slightly squiggly diagonal lines that are the mark of
+ error diffusion; and it allows us to lay down some ink even
+ in very light areas near the edge of the image. The
+ squiggly lines that error diffusion algorithms tend to
+ generate are caused by the gradual accumulation of error.
+ This error is partially added horizontally and partially
+ vertically. The horizontal accumulation results in a dot
+ eventually being printed. The vertical accumulation results
+ in a dot getting laid down in roughly the same horizontal
+ position in the next row. The diagonal squigglies result
+ from the error being added to pixels one forward and one
+ below the current pixel; these lines slope from the top
+ right to the bottom left of the image.
+ </para>
+ <para>
+ Error diffusion also results in pale areas being completely
+ white near the top left of the image (the origin of the
+ printing coordinates). This is because enough error has to
+ accumulate for anything at all to get printed. In very pale
+ areas it takes quite a long time to build up anything
+ printable at all; this results in the bare spots.
+ </para>
+ <para>
+ Randomizing the threshold somewhat breaks up the diagonals
+ to some degree by randomizing the exact location that the
+ accumulated output crosses the threshold. It reduces the
+ false white areas by allowing some dots to be printed even
+ when the accumulated output level is very low. It doesn't
+ result in excess ink because the full output level is still
+ subtracted and diffused.
+ </para>
+ <para>
+ Excessive randomization leads to blobs at high densities.
+ Therefore, as the density increases, the degree of
+ randomization decreases.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Alternating scan direction between rows (first row is
+ scanned left to right, second is scanned right to left, and
+ so on). This also helps break up white areas, and it also
+ seems to break up squigglies a bit. Furthermore, it
+ eliminates directional biases in the horizontal direction.
+ This isn't necessary for ordered dither, but it doesn't hurt
+ either.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Diffusing the error into more pixels. Instead of diffusing
+ the entire error into (X+1, Y) and (X, Y+1), we diffuse it
+ into (X+1, Y), (X+K, Y+1), (X, Y+1), (X-K, Y+1) where K
+ depends upon the output level (it never exceeds about 10
+ dots, and is greater at higher output levels). This really
+ reduces squigglies and graininess. The amount of this
+ spread can be controlled; for line art, it should be less
+ than for photographs (of course, line art doesn't usually
+ contain much light color, but the <emphasis>error</emphasis>
+ value can be small in places!) In addition to requiring
+ more computation, a wide ink spread results in patterning at
+ high dot densities (note that the dot density can be high
+ even in fairly pale regions if multiple dot sizes are in
+ use).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Don't lay down any colored ink if we're laying down black
+ ink. There's no point; the colored ink won't show. We
+ still pretend that we did for purposes of error diffusion
+ (otherwise excessive error will build up, and will take a
+ long time to clear, resulting in heavy bleeding of ink into
+ surrounding areas, which is very ugly indeed), but we don't
+ bother wasting the ink. How well this will do with variable
+ dot size remains to be seen.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Oversampling. This is how to print 1440&times;720 with Epson
+ Stylus printers. Printing full density at 1440&times;720 will
+ result in excess ink being laid down. The trick is to print
+ only every other dot. We still compute the error as though we
+ printed every dot. It turns out that randomizing which dots
+ are printed results in very speckled output. This can be
+ taken too far; oversampling at 1440&times;1440 or
+ 1440&times;2880 virtual resolution results in other problems.
+ However, at present 1440&times;1440 (which is more accurately
+ called "1440&times;720 enhanced", as the Epson printers cannot
+ print 1440 rows per inch) does quite well, although it's slow.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ What about multiple output levels? For 6 and 7 color printers,
+ simply using different threshold levels has a problem: the pale
+ inks have trouble being seen when a lot of darker ink is being
+ printed. So rather than just using the output level of the
+ particular color to decide which ink to print, we look at the
+ total density (sum of all output levels). If the density's high
+ enough, we prefer to use the dark ink. Speckling is less
+ visible when there's a lot of ink, anyway. I haven't yet
+ figured out what to do for multiple levels of one color.
+ </para>
+ <para>
+ You'll note that I haven't quoted a single source on color or
+ printing theory. I simply did all of this empirically.
+ </para>
+ <para>
+ There are various other tricks to reduce speckling. One that
+ I've seen is to reduce the amount of ink printed in regions
+ where one color (particularly cyan, which is perceived as the
+ darkest) is very pale. This does reduce speckling all right,
+ but it also results in strange tonal curves and weird (to my
+ eye) colors.
+ </para>
+ <para>
+ Before any dither routine is used,
+ <function>init_dither</function> must be called. This takes
+ three arguments: the input width (number of pixels in the
+ input), the output width (number of pixels in the output), and a
+ <type>stp_vars_t</type> structure containing the parameters for
+ the print job.
+ </para>
+ <para>
+ <function>init_dither</function> returns a pointer to an opaque
+ object representing the dither. This object is passed as the first
+ argument to all of the dither-related routines.
+ </para>
+ <para>
+ After a page is fully dithered, <function>free_dither</function>
+ must be called to free the dither object and perform any
+ cleanup. In the future, this may do more (such as flush
+ output). This arrangement permits using these routines with
+ programs that create multiple output pages, such as GhostScript.
+ </para>
+ <para>
+ The dithering routines themselves have a number of control knobs
+ that control internal aspects of the dithering process. These
+ knobs are accessible via a number of functions that can be
+ called after <function>init_dither</function>.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <function>dither_set_density</function> takes a double
+ between 0 and 1 representing the desired ink density for
+ printing solid colors. This is used in a number of places
+ in the dithering routine to make decisions.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <function>dither_set_black_density</function> takes a double
+ between 0 and 1 representing the desired ink density for
+ printing black ink in color printing. This is used to
+ balance black against color ink. By default, this is equal
+ to the density set by
+ <function>dither_set_density</function>. By setting it
+ higher, more black ink will be printed. For example, if the
+ base density is .4 and the black density is .8, twice as
+ much black ink will be printed as would otherwise be called
+ for.
+ </para>
+ <para>
+ This is not used when printing in monochrome. When printing
+ monochrome, the base density
+ (<function>dither_set_density</function>) should be adjusted
+ appropriately.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <function>dither_set_ink_budget</function> takes an unsigned
+ number representing the most ink that may be deposited at a
+ given point. This number is arbitrary; the limit is
+ computed by summing the size of each ink dot, which is
+ supplied as a parameter in
+ <function>dither_set_X_ranges</function>. By default, there
+ is no limit.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <function>dither_set_black_lower</function> takes a double
+ that should be between 0 and 1 that represents the lowest
+ density level at which black ink will start to mix in with
+ colored ink to generate grays. The lower this is, the less
+ density is required to use black ink. Setting this too low
+ will result in speckling from black dots, particularly on 6
+ and 7 color printers. Setting this too high will make it
+ hard to get satisfactory black or may result in sharp
+ transition between blended colors and black. Default:
+ 0.0468.
+ </para>
+ <para>
+ It is important to note that since the density scale is
+ never linear (and since this value is adjusted via other
+ things happening during the dithering process) that this
+ does not mean that 95% gray will use any black ink. At this
+ setting, there will be no black ink used until about 50%
+ gray.
+ </para>
+ <para>
+ This only applies to color mode.
+ </para>
+ <para>
+ This value should be set lower for printers capable of
+ variable dot size, since more dots can be laid down close to
+ each other.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <function>dither_set_black_upper</function> takes a double
+ that should be between 0 and 1 that represents the highest
+ density level at which colored inks will be mixed to create
+ gray. Setting this too low will result in speckly dark
+ grays because there is not enough ink to fill all the holes,
+ or sharp transition between blended colors and black if it
+ is too close to the value of
+ <function>dither_set_black_upper</function> Setting this too
+ high will result in poor black and dark tone quality.
+ Default: 0.5. This results in 10% and darker grays being
+ printed with essentially all black.
+ </para>
+ <para>
+ This only applies to color mode.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <function>dither_set_black_levels</function> takes three
+ doubles that represent the amount of cyan, magenta, and
+ yellow respectively that are blended to create gray. The
+ defaults are 1.0 for each, which is probably too low for
+ most printers. These values are adjusted to create a good
+ gray balance. Setting these too low will result in pale
+ light and midtone grays, with a sharp transition to darker
+ tones as black mixes in. Setting them too high will result
+ in overly dark grays and use of too much ink, possibly
+ creating bleed-through.
+ </para>
+ <para>
+ This only applies to color mode.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <function>dither_set_randomizers</function> takes four
+ integer values representing the degree of randomness used
+ for cyan, magenta, yellow, and black. This is used to allow
+ some printing to take place in pale areas. Zero is the most
+ random; greater than 8 or so gives very little randomness at
+ all. Defaults are 0 for cyan, magenta, and yellow, and 4
+ for black. Setting the value for black too low will result
+ in black speckling in pale areas. Setting values too high
+ will result in pale areas getting no ink at all.
+ </para>
+ <para>
+ This currently only applies to single dot size in color and
+ black. It should be extended to operate in variable dot
+ size mode, although actually applying it correctly will be
+ tricky.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <function>dither_set_ink_darkness</function> takes three
+ doubles representing the contribution to perceived darkness
+ of cyan, magenta, and yellow. This is used to help decide
+ when to switch between light and dark inks in 6 and 7 color
+ printers (with light cyan, light magenta, and possibly light
+ yellow). Setting these too low will result in too much
+ light ink being laid down, creating flat spots in the
+ darkness curves and bleed-through. Setting them too high
+ will result in dark ink being used in pale areas, creating
+ speckle. The defaults are .4 for cyan, .3 for magenta, and
+ .2 for yellow. Dark cyan will show against yellow much more
+ than dark magenta will show against cyan, since the cyan
+ appears much darker than the yellow.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <function>dither_set_light_inks</function> takes three
+ doubles between 0 and 1 representing the ratio in darkness
+ between the light and dark versions of the inks. Setting
+ these too low will result in too much dark ink being used in
+ pale areas, creating speckling, while setting them too high
+ will result in very smooth texture but too much use of light
+ ink, resulting in flat spots in the density curves and ink
+ bleed-through. There are no defaults. Any light ink
+ specified as zero indicates that there is no light ink for
+ that color.
+ </para>
+ <para>
+ This only applies to 6 and 7 color printers in single dot
+ size color mode, and only to those inks which have light
+ versions (usually cyan and magenta).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <function>dither_set_ink_spread</function> takes a small
+ integer representing the amount of ink spread in the dither.
+ Larger numbers mean less spread. Larger values are
+ appropriate for line art and solid tones; they will yield
+ sharper transitions but more dither artifacts. Smaller
+ values are more appropriate for photos. They will reduce
+ resolution and sharpness but reduce dither artifacts up to a
+ point. A value of 16 or higher implies minimum ink spread
+ at any resolution no matter what the overdensity. A value
+ of 14 is typical for photos on single dot size, 6 color
+ printers. For 4 color printers, subtract 1 (more spread;
+ the dots are farther apart). For variable dot size
+ printers, add 1 (more small dots are printed; less spread is
+ desirable).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <function>dither_set_adaptive_divisor</function> takes a
+ float representing the transition point between error
+ diffusion and ordered dither if adaptive dithering is used.
+ The float is a fraction of the printing density. For
+ example, if you wish the transition to be at 1/4 of the
+ maximum density (which works well on simple 4-color
+ printers), you would pass .25 here. With six colors and/or
+ with multiple dot sizes, the values should be set lower.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <function>dither_set_transition</function> takes a float
+ representing the exponent of the transition curve between
+ light and dark inks/dot sizes. A value less than 1 (typical
+ when using error diffusion) mixes in less dark ink/small
+ dots at lower ends of the range, to reduce speckling. When
+ using ordered dithering, this must be set to 1.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <function>dither_set_X_ranges_simple</function>
+ (<literal>X</literal> = <literal>c</literal>,
+ <literal>m</literal>, <literal>y</literal> or
+ <literal>k</literal>) describes the ink choices available
+ for each color. This is useful in typical cases where a
+ four color printer with variable dot sizes is in use. It is
+ passed an array of doubles between (0, 1] representing the
+ relative darkness of each dot size. The dot sizes are
+ assigned bit patterns (and ink quantities, see
+ <function>dither_set_ink_budget</function> above) from 1 to
+ the number of levels. This also requires a density, which
+ is the desired density for this color. This density need
+ not equal the density specified in
+ <function>dither_set_density</function>. Setting it lower
+ will tend to print more dark ink (because the curves are
+ calculated for this color assuming a lower density than is
+ actually supplied).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <function>dither_set_X_ranges</function>
+ (<literal>X</literal> = <literal>c</literal>,
+ <literal>m</literal>, <literal>y</literal> or
+ <literal>k</literal>) describes in a more general way the
+ ink choices available for each color. For each possible ink
+ choice, a bit pattern, dot size, value (i. e. relative
+ darkness), and whether the ink is the dark or light variant
+ ink is specified.
+ </para>
+ </listitem>
+ </itemizedlist>
+</chapter>
diff --git a/doc/developer/escp2.xml b/doc/developer/escp2.xml
new file mode 100644
index 0000000..5e4749d
--- /dev/null
+++ b/doc/developer/escp2.xml
@@ -0,0 +1,1843 @@
+<chapter>
+ <title>ESC/P2</title>
+ <para>
+ This is a description of the ESC/P2 raster commands used by the
+ Gutenprint printer driver, which is a subset of the complete
+ command set. The full documents are found on <ulink
+ url="http://www.ercipd.com/isv/edr_docs.htm">
+ <citetitle>http://www.ercipd.com/isv/edr_docs.htm</citetitle></ulink>.
+ Note that these are <emphasis>not</emphasis> always correct, and
+ are certainly not complete.
+ </para>
+ <para>
+ All ESCP/2 raster commands begin with the <literal>ESC</literal>
+ character (0x1b), followed by either one or two command characters
+ and arguments where applicable. Older commands generally have one
+ command character. Newer commands usually have a
+ &lsquo;<literal>(</literal>&rsquo; (left parenthesis) followed by
+ a command character and a byte count for the arguments that
+ follow. The byte count is a 16-bit (2 byte) binary integer, in
+ little endian order.
+ </para>
+ <para>
+ All arguments listed here are of the form
+ <literal>name[bytes]</literal> where <literal>[bytes]</literal> is
+ the number of bytes that comprise the argument. The arguments
+ themselves are usually one, two, or four byte integers, always
+ little endian (the least significant bits come first). Presumably
+ this is to match Intel processors.
+ </para>
+ <para>
+ In some cases, the same command sequence identifies different
+ versions of the same command, depending upon the number of bytes
+ of arguments.
+ </para>
+ <sect1>
+ <title>Standard commands</title>
+ <variablelist>
+ <title>ESC/P2 Commands</title>
+ <varlistentry>
+ <term><literal>ESC @</literal></term>
+ <listitem>
+ <para>
+ Reset the printer. Discards any output, ejects the
+ existing page, returns all settings to their default.
+ Always use this before printing a page.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC (G <varname>BC</varname>=1
+ <varname>ON1</varname></literal></term>
+ <listitem>
+ <para>
+ Turn on graphics mode. <varname>ON</varname> should be
+ <constant>1</constant> (turn on graphics mode).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC (U <varname>BC</varname>=1
+ <varname>UNIT1</varname></literal></term>
+ <listitem>
+ <para>
+ Set basic unit of measurement used by printer. This is
+ expressed in multiples of 1/3600". At 720 DPI,
+ <varname>UNIT</varname> is <constant>5</constant>; at
+ 360 DPI, <varname>UNIT</varname> is
+ <constant>10</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC (U <varname>BC</varname>=5
+ <varname>PAGEUNITS1</varname> <varname>VUNIT1</varname>
+ <varname>HUNIT1</varname>
+ <varname>BASEUNIT2</varname></literal></term>
+ <listitem>
+ <para>
+ Set basic units of measurement used by the printer.
+ <varname>PAGEUNIT</varname> is the unit of page
+ measurement (for commands that set page dimensions and
+ the like). <varname>VUNIT</varname> is the unit of
+ vertical measurement (for vertical movement commands).
+ <varname>HUNIT</varname> is the unit of horizontal
+ movement (for horizontal positioning commands). All of
+ these units are expressed in
+ <varname>BASEUNIT</varname>, which is in reciprocal
+ inches. Typically, <varname>BASEUNIT</varname> is
+ <constant>1440</constant>. In 720 DPI mode,
+ <varname>PAGEUNIT</varname>, <varname>VUNIT</varname>,
+ and <varname>HUNIT</varname> are all
+ <constant>2</constant>; in 1440&times;720 DPI mode,
+ <varname>PAGEUNIT</varname> and <varname>VUNIT</varname>
+ are normally set to <constant>2</constant>;
+ <varname>HUNIT</varname> is set to
+ <constant>1</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC (K <varname>BC</varname>=2
+ <varname>ZERO1</varname>
+ <varname>GRAYMODE1</varname></literal></term>
+ <listitem>
+ <para>
+ Set color or grayscale mode, on printers supporting an
+ explicit grayscale mode. These printers can be
+ identified because they are advertised as having more
+ black nozzles than nozzles of individual colors.
+ Setting grayscale mode allows use of these extra nozzles
+ for faster printing. <varname>GRAYMODE</varname> should
+ be <constant>0</constant> or <constant>2</constant> for
+ color, <constant>1</constant> for grayscale.
+ <varname>ZERO</varname> should always be
+ <constant>0</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC (i <varname>BC</varname>=1
+ <varname>MICROWEAVE1</varname></literal></term>
+ <listitem>
+ <para>
+ If <varname>MICROWEAVE</varname> is
+ <constant>1</constant>, use microweave mode. On older
+ printers, this is used to turn on microweave; on newer
+ printers, it prints one row at a time. All printers
+ support this mode. It should only be used at 720 (or
+ 1440&times;720) DPI. The Epson Stylus Pro series
+ indicates additional modes:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>2</constant></term>
+ <listitem>
+ <para>
+ &ldquo;Full-overlap&rdquo;
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>3</constant></term>
+ <listitem>
+ <para>
+ &ldquo;Four-pass&rdquo;
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>4</constant></term>
+ <listitem>
+ <para>
+ &ldquo;Full-overlap 2&rdquo;
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any of these commands can be used with the high four
+ bits set to either <constant>3</constant> or
+ <constant>0</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC U
+ <varname>DIRECTION1</varname></literal></term>
+ <listitem>
+ <para>
+ If <varname>DIRECTION</varname> is
+ <constant>1</constant>, print unidirectionally; if
+ <constant>0</constant>, print bidirectionally.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC (s <varname>BC</varname>=1
+ <varname>SPEED1</varname></literal></term>
+ <listitem>
+ <para>
+ On some older printers, this controls the print head
+ speed. <varname>SPEED</varname> of
+ <constant>2</constant> is 10 inches/sec;
+ <varname>SPEED</varname> of <constant>0</constant> or 1
+ is 20.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC (e <varname>BC</varname>=2
+ <varname>ZERO1</varname>
+ <varname>DOTSIZE1</varname></literal></term>
+ <listitem>
+ <para>
+ Choose print dotsize. <varname>DOTSIZE</varname> can
+ take on various values, depending upon the printer.
+ Almost all printers support <constant>0</constant> and
+ <constant>2</constant>. Variable dot size printers
+ allow a value of <varname>16</varname>. Other than the
+ value of <varname>16</varname>, this appears to be
+ ignored at resolutions of 720 DPI and above.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC (C <varname>BC</varname>=2
+ <varname>PAGELENGTH2</varname></literal></term>
+ <term><literal>ESC (C <varname>BC</varname>=4
+ <varname>PAGELENGTH4</varname></literal></term>
+ <listitem>
+ <para>
+ Set the length of the page in &ldquo;pageunits&rdquo;
+ (see <literal>ESC (U</literal> above). The second form
+ of the command allows setting of longer page lengths on
+ new printers (these happen to be the printers that
+ support variable dot size).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC (c <varname>BC</varname>=4
+ <varname>TOP2</varname>
+ <varname>LENGTH2</varname></literal></term>
+ <term><literal>ESC (c <varname>BC</varname>=8
+ <varname>TOP4</varname>
+ <varname>LENGTH4</varname></literal></term>
+ <listitem>
+ <para>
+ Set the vertical page margins of the page in
+ &ldquo;pageunits&rdquo; (see <literal>ESC (U</literal>
+ above). The margins are specified as the top of the
+ page and the length of the page. The second form of the
+ command allows setting of longer page lengths on new
+ printers (these happen to be the printers that support
+ variable dot size).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC (S <varname>BC</varname>=8
+ <varname>WIDTH4</varname>
+ <varname>LENGTH4</varname></literal></term>
+ <listitem>
+ <para>
+ Set the width and length of the printed page region in
+ &ldquo;pageunits&rdquo; (see <literal>ESC (U</literal>
+ above).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC (v <varname>BC</varname>=2
+ <varname>ADVANCE2</varname></literal></term>
+ <term><literal>ESC (v <varname>BC</varname>=4
+ <varname>ADVANCE4</varname></literal></term>
+ <listitem>
+ <para>
+ Feed vertically <varname>ADVANCE</varname>
+ &ldquo;vertical units&rdquo; (see <literal>ESC
+ (U</literal> above) from the current print head
+ position.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC (V <varname>BC</varname>=2
+ <varname>ADVANCE2</varname></literal></term>
+ <term><literal>ESC (V <varname>BC</varname>=4
+ <varname>ADVANCE4</varname></literal></term>
+ <listitem>
+ <para>
+ Feed vertically <varname>ADVANCE</varname>
+ &ldquo;vertical units&rdquo; (see <literal>ESC
+ (U</literal> above) from the top margin.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC ($ <varname>BC</varname>=4
+ <varname>OFFSET4</varname></literal></term>
+ <listitem>
+ <para>
+ Set horizontal position to <varname>OFFSET</varname>
+ from the left margin. This command operates on printers
+ of the 740 class and newer (all printers with variable
+ dot size).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC $
+ <varname>OFFSET2</varname></literal></term>
+ <listitem>
+ <para>
+ Set horizontal position to <varname>OFFSET</varname>
+ from the left margin. This command operates on printers
+ of the 740 class and newer (all printers with variable
+ dot size).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC (\ <varname>BC</varname>=4
+ <varname>UNITS2</varname>
+ <varname>OFFSET2</varname></literal></term>
+ <listitem>
+ <para>
+ Set horizontal position to <varname>OFFSET</varname>
+ from the previous print head position, measured in
+ <varname>UNITS</varname>. <varname>UNITS</varname> is
+ measured in inverse inches, and should be set to 1440 in
+ all cases. This operates on all 1440 dpi printers that
+ do not support variable dot size.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC (/ <varname>BC</varname>=4
+ <varname>OFFSET4</varname></literal></term>
+ <listitem>
+ <para>
+ Set horizontal position to <varname>OFFSET</varname>
+ from the previous print head position, measured in
+ &ldquo;horizontal units&rdquo; (see <literal>ESC
+ (U</literal> above). This operates on all variable dot
+ size printers.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC \
+ <varname>OFFSET2</varname></literal></term>
+ <listitem>
+ <para>
+ Set horizontal position to <varname>OFFSET</varname>
+ from the previous print head position, measured in basic
+ unit of measurement (see <literal>ESC (U</literal>
+ above). This is used on all 720 dpi printers, and can
+ also be used on 1440 dpi printers in lower resolutions
+ to save a few bytes. Note that
+ <varname>OFFSET</varname> may be negative. The range of
+ values for this command is between
+ <constant>-16384</constant> and
+ <constant>16383</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC r
+ <varname>COLOR1</varname></literal></term>
+ <term><literal>ESC (r <varname>BC</varname>=2
+ <varname>DENSITY1</varname>
+ <varname>COLOR1</varname></literal></term>
+ <listitem>
+ <para>
+ Set the ink color. The first form is used on four-color
+ printers; the second on six-color printers.
+ <varname>DENSITY</varname> is <constant>0</constant> for
+ dark inks, <constant>1</constant> for light.
+ <varname>COLOR</varname> is
+ </para>
+ <table>
+ <title>Colors</title>
+ <tgroup cols="2" align="left">
+ <colspec colnum="1" colname="id"/>
+ <colspec colnum="2" colname="color"/>
+ <thead>
+ <row>
+ <entry><varname>COLOR</varname></entry>
+ <entry>Color name</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><constant>0</constant></entry>
+ <entry>Black</entry>
+ </row>
+ <row>
+ <entry><constant>1</constant></entry>
+ <entry>Magenta</entry>
+ </row>
+ <row>
+ <entry><constant>2</constant></entry>
+ <entry>Cyan</entry>
+ </row>
+ <row>
+ <entry><constant>4</constant></entry>
+ <entry>Yellow</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ This command is not used on variable dot size printers
+ in softweave mode.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC . <varname>COMPRESS1</varname>
+ <varname>VSEP1</varname> <varname>HSEP1</varname>
+ <varname>LINES1</varname> <varname>WIDTH2</varname>
+ data...</literal></term>
+ <listitem>
+ <para>
+ Print data. <varname>COMPRESS</varname> signifies the
+ compression mode.
+ </para>
+ <table>
+ <title>Compression modes</title>
+ <tgroup cols="2" align="left">
+ <colspec colnum="1" colname="id"/>
+ <colspec colnum="2" colname="compression"/>
+ <thead>
+ <row>
+ <entry><varname>COMPRESS</varname></entry>
+ <entry>Compression mode</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><constant>0</constant></entry>
+ <entry>No compression</entry>
+ </row>
+ <row>
+ <entry><constant>1</constant></entry>
+ <entry>
+ TIFF compression (incorrectly documented as
+ &ldquo;run length encoded&rdquo;)
+ </entry>
+ </row>
+ <row>
+ <entry><constant>2</constant></entry>
+ <entry>
+ TIFF compression with a special command set.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ <varname>VSEP</varname> depends upon resolution and
+ printer type. At 360 DPI, it is always
+ <constant>10</constant>. At 720 DPI, it is normally
+ <constant>5</constant>5. On the ESC 600, it is
+ <constant>40</constant> (8 &times; 5}). On some other
+ printers, it varies.
+ </para>
+ <para>
+ <varname>HSEP1</varname> is <constant>10</constant> at
+ 360 DPI and <constant>5</constant> at 720 or 1440 DPI
+ (1440 DPI cannot be printed in one pass; it is printed
+ in two passes, with the dots separated in each pass by
+ 1/720").
+ </para>
+ <para>
+ <varname>LINES</varname> is the number of lines to be
+ printed. It should be <constant>1</constant> in
+ microweave and 360 DPI. At 720 DPI softweave, it should
+ be the number of lines to be actually printed.
+ </para>
+ <para>
+ <varname>WIDTH</varname> is the number of pixels to be
+ printed in each row. Following this command, a carriage
+ return (<constant>13</constant> decimal,
+ <literal>0A</literal> hex) should be output to return
+ the print head position to the left margin.
+ </para>
+ <para>
+ The basic data format is a string of bytes, with data
+ from left to right on the page. Within each byte, the
+ highest bit is first.
+ </para>
+ <para>
+ The TIFF compression is implemented as one count byte
+ followed by one or more data bytes. There are two
+ cases:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ If the count byte is <constant>128</constant> or
+ less, it is followed by ([count] + 1) data bytes.
+ So if the count byte is <constant>0</constant>, it
+ is followed by 1 data byte; if it is
+ <constant>128</constant>, it is followed by 129 data
+ bytes.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If the count byte is greater than 128, it is
+ followed by one byte. This byte is repeated (257 -
+ [count]) times. So if [count] is 129, the next byte
+ is treated as though it were repeated 128 times; if
+ [count] is 255, it is treated as though it were
+ repeated twice.
+ </para>
+ </listitem>
+ </orderedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC i <varname>COLOR1</varname>
+ <varname>COMPRESS1</varname> <varname>BITS1</varname>
+ <varname>BYTES2</varname> <varname>LINES2</varname>
+ data...</literal></term>
+ <listitem>
+ <para>
+ Print data in the newer printers (that support variable
+ dot size), and Stylus Pro models.
+ <varname>COLOR</varname> is the color.
+ </para>
+ <table>
+ <title>Extended Colors</title>
+ <tgroup cols="2" align="left">
+ <colspec colnum="1" colname="id"/>
+ <colspec colnum="2" colname="color"/>
+ <thead>
+ <row>
+ <entry><varname>COLOR</varname></entry>
+ <entry>Color name</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><constant>0</constant></entry>
+ <entry>Black</entry>
+ </row>
+ <row>
+ <entry><constant>1</constant></entry>
+ <entry>Magenta</entry>
+ </row>
+ <row>
+ <entry><constant>2</constant></entry>
+ <entry>Cyan</entry>
+ </row>
+ <row>
+ <entry><constant>4</constant></entry>
+ <entry>Yellow</entry>
+ </row>
+ <row>
+ <entry><constant>5</constant></entry>
+ <entry>Alternate black (Stylus C70/C80)</entry>
+ </row>
+ <row>
+ <entry><constant>6</constant></entry>
+ <entry>Alternate black (Stylus C70/C80)</entry>
+ </row>
+ <row>
+ <entry><constant>16</constant></entry>
+ <entry>Gray (&ldquo;light black&rdquo;)</entry>
+ </row>
+ <row>
+ <entry><constant>17</constant></entry>
+ <entry>Light magenta</entry>
+ </row>
+ <row>
+ <entry><constant>18</constant></entry>
+ <entry>Light cyan</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ <varname>COMPRESS</varname> signifies the compression
+ mode:
+ </para>
+ <table>
+ <title>Compression modes</title>
+ <tgroup cols="2" align="left">
+ <colspec colnum="1" colname="id"/>
+ <colspec colnum="2" colname="compression"/>
+ <thead>
+ <row>
+ <entry><varname>COMPRESS</varname></entry>
+ <entry>Compression mode</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><constant>0</constant></entry>
+ <entry>No compression</entry>
+ </row>
+ <row>
+ <entry><constant>1</constant></entry>
+ <entry>
+ TIFF compression (incorrectly documented as
+ &ldquo;run length encoded&rdquo;)
+ </entry>
+ </row>
+ <row>
+ <entry><constant>2</constant></entry>
+ <entry>
+ TIFF compression with a special command set, or
+ &ldquo;run length encoding 2&rdquo; on some
+ printers.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ <varname>BITS</varname> is the number of bits per pixel.
+ </para>
+ <para>
+ <varname>BYTES</varname> is the number of bytes wide for
+ each row (ceiling(BITS &times; width_of_row, 8)}). Note
+ that this is different from the <literal>ESC .</literal>
+ command above.
+ </para>
+ <para>
+ <varname>LINES</varname> is the number of lines to be
+ printed. This command is the only way to get variable
+ dot size printing. In variable dot mode, the size of
+ the dots increases as the value (<constant>1</constant>,
+ <constant>2</constant>, or <constant>3</constant>)
+ increases.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC (D <varname>BC</varname>=4
+ <varname>BASE2</varname> <varname>VERTICAL1</varname>
+ <varname>HORIZONTAL1</varname></literal></term>
+ <listitem>
+ <para>
+ Set printer horizontal and vertical spacing. It only
+ applies to variable dot size printers in softweave mode
+ (and possibly other high end printers).
+ </para>
+ <para>
+ <varname>BASE</varname> is the base unit for this
+ command; it must be <constant>14400</constant>.
+ </para>
+ <para>
+ <varname>VERTICAL</varname> is the distance in these
+ units between printed rows; it should be
+ ((separation_in_nozzles &times; <varname>BASE</varname>
+ &divide; 720).
+ </para>
+ <para>
+ <varname>HORIZONTAL</varname> is the horizontal
+ separation between dots in a row. Depending upon the
+ printer, this should be either (14400 &divide; 720) or
+ (14400 &divide; 360). The Stylus Pro 9000 manual
+ suggests that the settings should match the chosen
+ resolution, but that is apparently not the case (or not
+ always the case) on other printers.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC (R <varname>BC</varname>=8 00 R E M O T E
+ 1</literal></term>
+ <listitem>
+ <para>
+ Enters &ldquo;remote mode&rdquo;. This is a special,
+ undocumented command set that is used to set up various
+ printer options, such as paper feed tray, and perform
+ utility functions such as head cleaning and alignment.
+ It does not appear that anything here is actually
+ required to make the printer print. Our best
+ understanding of what is in a remote command sequence is
+ described in a separate section below.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>ESC 01 @EJL [sp] ID\r\n</literal></term>
+ <listitem>
+ <para>
+ Return the printer ID. This is considered a remote mode
+ command, although the syntax is that of a conventional
+ command. This returns the following information:
+ </para>
+ <informalexample>
+ <screen>@EJL ID\r
+MFG:EPSON;
+CMD:ESCPL2,BDC;
+MDL:[printer model];
+CLS:PRINTER;
+DES:EPSON [printer model];
+\f</screen>
+ </informalexample>
+ <para>
+ After all data has been sent, a form feed byte should be
+ sent.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ All newer Epson printers (STC 440, STP 750) require the
+ following command to be sent at least once to enable printing
+ at all. This command specifically takes the printer out of the
+ 1284.4 packet mode communication protocol and enables normal
+ data transfer. Sending it multiple times is is not harmful, so
+ it is normally sent at the beginning of each job:
+ </para>
+ <informalexample>
+ <screen>ESC 01@EJL[space]1284.4[newline]@EJL[space][space][space][space]
+[space][newline]ESC@</screen>
+ </informalexample>
+ <para>
+ The proper sequence of initialization commands is:
+ </para>
+ <informalexample>
+ <screen>magic command
+ESC @
+remote mode if needed
+ESC (G
+ESC (U
+ESC (K (if appropriate)
+ESC (i
+ESC U (if needed)
+ESC (s (if appropriate)
+ESC (e
+ESC (C
+ESC (c
+ESC (S
+ESC (D (if needed)
+ESC (V (optional -- this can be accomplished with ESC (v)</screen>
+ </informalexample>
+ <para>
+ For printing, the proper sequence is:
+ </para>
+ <informalexample>
+ <screen>ESC (v</screen>
+ </informalexample>
+ <para>
+ and repeat for each color:
+ </para>
+ <!-- This needs better formatting... -->
+ <informalexample>
+ <screen>ESC ($ or ESC (\ or ESC \
+ESC (r or ESC r (if needed---not used with "ESC i" and not needed if the color
+has not changed from the previous printed line)
+ESC . or ESC i ...data... [return] (0A hex)</screen>
+ </informalexample>
+ <para>
+ To terminate a page:
+ </para>
+ <informalexample>
+ <screen>[formfeed] (0C hex)
+ESC @</screen>
+ </informalexample>
+</sect1>
+<sect1>
+ <title>Remote Mode Commands</title>
+ <para>
+ The following description of remote commands comes out of an
+ examination of the sequences used by the printer utilities
+ bundled with the Windows drivers for the ESC740, and from other
+ sources (some Epson manuals, experimentation, analysis of print
+ files). It is largely speculative as these commands are not all
+ documented in the Epson documentation we have access to.
+ Generally, newer manuals provide more thorough documentation.
+ </para>
+ <para>
+ Remote command mode is entered when the printer is sent the
+ following sequence:
+ </para>
+ <informalexample>
+ <screen>ESC (R BC=8 00 R E M O T E 1</screen>
+ </informalexample>
+ <para>
+ Remote mode commands are then sent, and terminated with the
+ following sequence:
+ </para>
+ <informalexample>
+ <screen>ESC 00 00 00</screen>
+ </informalexample>
+ <para>
+ All remote mode commands must be sent before the initial
+ <literal>ESC (G</literal> command is sent.
+ </para>
+ <para>
+ This introductory sequence is then followed by a sequence of
+ commands. Each command is constructed as follows:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Two ASCII bytes indicating the function
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ A byte count (two bytes, little-endian) for the parameters
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Binary parameters, if any
+ </para>
+ </listitem>
+ </orderedlist>
+ <para>
+ This is a list of all remote commands we have seen:
+ </para>
+ <variablelist>
+ <title>ESC/P2 Remote Mode Commands</title>
+ <varlistentry>
+ <term><literal>NC <varname>BC</varname>=2 00
+ 00</literal></term>
+ <listitem>
+ <para>
+ Print a nozzle check pattern.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>VI <varname>BC</varname>=2 00
+ 00</literal></term>
+ <listitem>
+ <para>
+ On my 740, prints the following, probably &ldquo;version
+ information&rdquo;:
+ </para>
+ <informalexample>
+ <screen>W01286 I02382\r\n</screen>
+ </informalexample>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* AI <varname>BC</varname>=3 00 00 00</literal></term>
+ <listitem>
+ <para>
+ Prints a &ldquo;printer ID&rdquo;. On one 870, prints the
+ following:
+ </para>
+ <informalexample>
+ <screen>51-51-50-51-49-48\r\n</screen>
+ </informalexample>
+ <para>
+ The Windows driver has a text entry field where this
+ number can be entered, but its purpose is unknown.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* LD <varname>BC</varname>=0</literal></term>
+ <listitem>
+ <para>
+ Load printer defaults from NVRAM, DIP switches, and/or
+ ROM. This apparently does not load factory defaults per
+ se, but any settings that are saved. This is commonly
+ used right at the end of each print job after the
+ <literal>ESC @</literal> printer reset command.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* CH <varname>BC</varname>=2 00
+ <varname>xx</varname></literal></term>
+ <listitem>
+ <para>
+ Perform a head cleaning cycle. The heads to clean are
+ determined by parameter <varname>xx</varname>:
+ </para>
+ <table>
+ <title>Head cleaning parameters</title>
+ <tgroup cols="2" align="left">
+ <colspec colnum="1" colname="id"/>
+ <colspec colnum="2" colname="description"/>
+ <thead>
+ <row>
+ <entry><varname>xx</varname></entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><constant>00</constant></entry>
+ <entry>Clean all heads</entry>
+ </row>
+ <row>
+ <entry><constant>01</constant></entry>
+ <entry>Clean black head</entry>
+ </row>
+ <row>
+ <entry><constant>02</constant></entry>
+ <entry>Clean color heads</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ While <varname>xx</varname> = <constant>00</constant> is
+ likely supported by all printers, <varname>xx</varname>
+ = <constant>01</constant> and <constant>02</constant>
+ are not.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* DT <varname>BC</varname>=3 00
+ <varname>xx</varname> 00</literal></term>
+ <listitem>
+ <para>
+ Print an alignment pattern. There are three patterns,
+ which are picked via the choice of
+ <varname>xx</varname>. Pattern <constant>0</constant>
+ is coarse, pattern <constant>1</constant> is medium, and
+ pattern <constant>2</constant> is fine.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* DA <varname>BC</varname>=4 00
+ <varname>xx</varname> 00
+ <varname>yy</varname></literal></term>
+ <listitem>
+ <para>
+ Set results for the alignment pattern.
+ <varname>xx</varname> is the pattern
+ (<constant>1</constant>--<constant>3</constant>);
+ <varname>yy</varname> is the best choice from the set
+ (<constant>1</constant>--<constant>7</constant> or
+ <constant>1</constant>--<constant>15</constant>). This
+ does not save to NVRAM, so when the printer is powered
+ off, the setting will be lost.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* SV <varname>BC</varname>=0</literal></term>
+ <listitem>
+ <para>
+ Save the current settings to NVRAM.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* RS <varname>BC</varname>=1
+ 01</literal></term>
+ <listitem>
+ <para>
+ Reset the printer.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* IQ <varname>BC</varname>=1
+ 01</literal></term>
+ <listitem>
+ <para>
+ Get ink quantity. This requires direct access to the
+ printer port. The return looks like
+ </para>
+ <informalexample>
+ <screen>IQ:KKCCMMYY</screen>
+ </informalexample>
+ <para>
+ or
+ </para>
+ <informalexample>
+ <screen>IQ:KKCCMMYYccmm</screen>
+ </informalexample>
+ <para>
+ (for 4-color and 6-color printers respectively), where
+ each pair of digits are hexadecimal representations of
+ percent.
+ </para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+<para>
+ The following two commands have been observed on an STP 870.
+</para>
+<variablelist>
+ <varlistentry>
+ <term><literal>* IR <varname>BC</varname>=2 00
+ <varname>xx</varname></literal></term>
+ <listitem>
+ <para>
+ <emphasis>Function unknown</emphasis>. This command has
+ been observed on an STP 870 with
+ <varname>xx</varname>=<constant>03</constant> at the start
+ of a job and <varname>xx</varname>=<constant>02</constant>
+ at the end of a job (where it is followed by an
+ <literal>LD</literal> command). When in roll mode, the
+ values change to
+ <varname>xx</varname>=<constant>01</constant> at the start
+ of a job and <varname>xx</varname>=<constant>00</constant>
+ at the end of a job.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* FP <varname>BC</varname>=3 00
+ <varname>pos</varname>[2]</literal></term>
+ <listitem>
+ <para>
+ Specify the horizontal left margin in units of 1/360 inch.
+ The default value for <varname>pos</varname> is
+ <constant>0</constant>. For borderless printing on
+ printers that support it, a value of
+ <constant>-80</constant> (<constant>FFB0h</constant>)
+ should be used.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ The commands below are partially documented in the Stylus Pro
+ 9000 manual. Much of this information is interpreted; none is
+ tested.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><literal>* SN <varname>BC</varname>=3 00
+ <varname>xx</varname> <varname>yy</varname></literal></term>
+ <listitem>
+ <para>
+ Select Mechanism Sequence. <varname>xx</varname>
+ controls which sub-operation is performed.
+ <varname>xx</varname>=<constant>00</constant> selects
+ the &ldquo;Feed paper sequence setting&rdquo;.
+ <varname>yy</varname> can take on the following values
+ (on the STP 870, at any rate):
+ </para>
+ <table>
+ <title>Media types</title>
+ <tgroup cols="2" align="left">
+ <colspec colnum="1" colname="id"/>
+ <colspec colnum="2" colname="description"/>
+ <thead>
+ <row>
+ <entry><varname>yy</varname></entry>
+ <entry>Media type</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><constant>0</constant></entry>
+ <entry>Default</entry>
+ </row>
+ <row>
+ <entry><constant>1</constant></entry>
+ <entry>Plain paper</entry>
+ </row>
+ <row>
+ <entry><constant>2</constant></entry>
+ <entry>Postcards</entry>
+ </row>
+ <row>
+ <entry><constant>3</constant></entry>
+ <entry>
+ Film (photo quality glossy film, transparencies)
+ </entry>
+ </row>
+ <row>
+ <entry><constant>4</constant></entry>
+ <entry>Envelopes</entry>
+ </row>
+ <row>
+ <entry><constant>5</constant></entry>
+ <entry>Plain paper (fast load)</entry>
+ </row>
+ <row>
+ <entry><constant>6</constant></entry>
+ <entry>
+ Back light film (although this has been observed
+ with heavyweight matte paper)
+ </entry>
+ </row>
+ <row>
+ <entry><constant>7</constant></entry>
+ <entry>
+ Matte paper (observed with 360 dpi inkjet paper,
+ and photo quality inkjet paper)
+ </entry>
+ </row>
+ <row>
+ <entry><constant>8</constant></entry>
+ <entry>Photo paper</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ Experimentation suggests that this setting changes
+ details of how the printers' cut sheet feeder works,
+ presumably to tune it for different types of paper.
+ </para>
+ <para>
+ <varname>xx</varname>=<constant>01</constant> controls
+ the platen gap setting;
+ <varname>yy</varname>=<constant>00</constant> is the
+ default, <varname>yy</varname>=<constant>1</constant> or
+ <constant>2</constant> are higher settings.
+ </para>
+ <para>
+ <varname>xx</varname>=<constant>02</constant> controls
+ paper loading speed
+ (<varname>yy</varname>=<constant>0</constant> is normal,
+ <constant>1</constant> is fast, <constant>2</constant>
+ is slow). It appears that <constant>1</constant> is
+ used when printing on &ldquo;plain paper&rdquo;,
+ &ldquo;360dpi ink jet paper&rdquo; or &ldquo;ink jet
+ transparencies&rdquo;, and
+ <varname>yy</varname>=<constant>00</constant> for all
+ other paper type settings.
+ </para>
+ <para>
+ <varname>xx</varname>=<constant>07</constant> controls
+ duplex printing for printers with that capability
+ (<varname>yy</varname>=<varname>0</varname> is default,
+ for non-duplex printing; <constant>1</constant> is front
+ side of the paper, and <varname>2</varname> is back
+ side).
+ </para>
+ <para>
+ <varname>xx</varname>=<constant>09</constant> controls
+ zero margin printing on the printers with the capability
+ of printing zero-margin on all sides (Stylus Photo
+ 780/790, 890, and 1280/1290).
+ <varname>yy</varname>=<constant>0</constant> is the
+ default; <constant>1</constant> enables zero margin
+ printing.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* PP <varname>BC</varname>=3 00
+ <varname>xx</varname>
+ <varname>yy</varname></literal></term>
+ <listitem>
+ <para>
+ Set Paper Path.
+ <varname>xx</varname>=<constant>2</constant> indicates
+ manual feed,
+ <varname>xx</varname>=<constant>3</constant> is for roll
+ paper. <varname>yy</varname> selects &ldquo;paper path
+ number&rdquo;.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* AC <varname>BC</varname>=2 00
+ <varname>xx</varname></literal></term>
+ <listitem>
+ <para>
+ Set Auto Cutting State.
+ <varname>xx</varname>=<constant>0</constant> selects
+ auto cutting off,
+ <varname>xx</varname>=<constant>1</constant> selects
+ auto cutting on, and
+ <varname>xx</varname>=<constant>2</constant> indicates
+ horizontal print page line on. It appears that with
+ auto cutting on, roll paper is cut automatically at the
+ point a formfeed character is sent. The formfeed
+ character is normally used to eject a page; with this
+ turned on, it also cuts the roll paper. Horizontal
+ print page line on prints a narrow line of black dots at
+ the position the paper should be cut manually.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* DR <varname>BC</varname>=4 00 xx
+ <varname>DT2</varname></literal></term>
+ <listitem>
+ <para>
+ Set Drying Time.
+ <varname>xx</varname>=<constant>00</constant> sets the
+ drying time &ldquo;per scan&rdquo; (per pass?);
+ <varname>xx</varname>=<constant>01</constant> sets the
+ drying time per page. <varname>DT</varname> indicates
+ the drying time, which is in seconds if page mode is
+ used and in milliseconds if scan mode is used.
+ <varname>DT</varname> must not exceed 3600 seconds in
+ per-page mode and 10000 milliseconds in per-scan mode.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* IK <varname>BC</varname>=2 00
+ <varname>xx</varname></literal></term>
+ <listitem>
+ <para>
+ Select Ink Type.
+ <varname>xx</varname>=<constant>00</constant> selects
+ dye ink. Pigment ink is apparently selected by
+ <varname>xx</varname>=<constant>01</constant>. This
+ probably does not apply to the consumer-grade printers.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* PZ BC=2 00 xx</literal></term>
+ <listitem>
+ <para>
+ Set Pause After Printing.
+ <varname>xx</varname>=<constant>00</constant> selects no
+ pause after printing;
+ <varname>xx</varname>=<constant>01</constant> selects
+ pause after printing. If turned on, the printer is
+ paused after the page is ejected (by the FF byte). If
+ cutting is turned on, the printer is paused
+ <emphasis>after</emphasis> the cutting or printing of
+ the horizontal cut line.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* EX <varname>BC</varname>=6 00 00 00 00 0x14
+ <varname>xx</varname></literal></term>
+ <listitem>
+ <para>
+ Set Vertical Print Page Line Mode.
+ <varname>xx</varname>=<constant>00</constant> is off,
+ <varname>xx</varname>=<constant>01</constant> is on. If
+ turned on, this prints vertical trim lines at the left
+ and right margins.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* EX <varname>BC</varname>=6 00 00 00 00 0x05
+ <varname>xx</varname></literal></term>
+ <listitem>
+ <para>
+ Set Roll Paper Mode. If <varname>xx</varname> is
+ <constant>0</constant>, roll paper mode is off; if
+ <varname>xx</varname> is <constant>1</constant>, roll
+ paper mode is on.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* EX <varname>BC</varname>=3 00
+ <varname>xx</varname> <varname>yy</varname></literal></term>
+ <listitem>
+ <para>
+ Appears to be a synonym for the <literal>SN</literal>
+ command described above.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* PH <varname>BC</varname>=2 00
+ <varname>xx</varname></literal></term>
+ <listitem>
+ <para>
+ Select Paper Thickness. Set the paper thickness
+ <varname>xx</varname> in .1 mm units. This must not
+ exceed <constant>0x10</constant> (1.6 mm). If the
+ thickness is set &ldquo;more than&rdquo; .6 mm (which
+ probably means &ldquo;at least&rdquo; 0.6 mm, since the
+ other case reads &ldquo;less than 0.5 mm&rdquo;), the
+ platen gap is set high irrespective of the
+ <literal>SN</literal> command.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* PM <varname>BC</varname>=2 00
+ 00</literal></term>
+ <listitem>
+ <para>
+ <emphasis>Function unknown</emphasis>. Used on the STC
+ 3000 at least when using roll feed, and on the STP 870
+ in all print files analysed to date.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* ST <varname>BC</varname>=2 00
+ <varname>xx</varname></literal></term>
+ <listitem>
+ <para>
+ Epson's STP 750/1200 programming guide refers to the
+ <literal>ST</literal> command as &ldquo;Set printer
+ state reply&rdquo;. If <varname>xx</varname> is
+ <constant>0</constant> or <constant>2</constant>, the
+ printer will not send status replies. If
+ <varname>xx</varname> is <constant>1</constant> or
+ <constant>3</constant>, the printer will send status
+ replies. The status replies consist of state, error
+ codes, ink leve, firmware version, and warning status.
+ </para>
+ <para>
+ The actual reply is documented as
+ </para>
+ <informalexample>
+ <screen>@BDC ST\r
+ST: xx;
+[ER: yy;]
+IQ: n1n2n3n4;
+[WR: w1,w2...;]
+RV: zz;
+AI:CW:02kkccmmyy, MI:mm
+[TC:tttt;]
+INK:...;
+\f</screen>
+ </informalexample>
+ <para>
+ (<literal>\r</literal> is carriage return;
+ <literal>\n</literal> is newline; <literal>\f</literal>
+ is formfeed.)
+ </para>
+ <para>
+ <literal>ST</literal> is the printer status:
+ </para>
+ <table>
+ <title>Printer status codes</title>
+ <tgroup cols="2" align="left">
+ <colspec colnum="1" colname="status"/>
+ <colspec colnum="2" colname="description"/>
+ <thead>
+ <row>
+ <entry>Status code</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><constant>00</constant></entry>
+ <entry>Error</entry>
+ </row>
+ <row>
+ <entry><constant>01</constant></entry>
+ <entry>Self-test</entry>
+ </row>
+ <row>
+ <entry><constant>02</constant></entry>
+ <entry>Busy</entry>
+ </row>
+ <row>
+ <entry><constant>03</constant></entry>
+ <entry>Waiting while printing</entry>
+ </row>
+ <row>
+ <entry><constant>04</constant></entry>
+ <entry>Idle</entry>
+ </row>
+ <row>
+ <entry><constant>07</constant></entry>
+ <entry>Cleaning/filling ink heads</entry>
+ </row>
+ <row>
+ <entry><constant>08</constant></entry>
+ <entry>Not yet initialized/filling heads</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ <literal>ER</literal>, if provided, is the error status:
+ </para>
+ <table>
+ <title>Printer error codes</title>
+ <tgroup cols="2" align="left">
+ <colspec colnum="1" colname="error"/>
+ <colspec colnum="2" colname="description"/>
+ <thead>
+ <row>
+ <entry>Error code</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><constant>00</constant></entry>
+ <entry>Fatal Error</entry>
+ </row>
+ <row>
+ <entry><constant>01</constant></entry>
+ <entry>Interface not selected</entry>
+ </row>
+ <row>
+ <entry><constant>04</constant></entry>
+ <entry>Paper jam</entry>
+ </row>
+ <row>
+ <entry><constant>05</constant></entry>
+ <entry>Out of ink</entry>
+ </row>
+ <row>
+ <entry><constant>06</constant></entry>
+ <entry>Paper out</entry>
+ </row>
+ <row>
+ <entry><constant>0D</constant></entry>
+ <entry>Paper gap error</entry>
+ </row>
+ <row>
+ <entry><constant>10</constant></entry>
+ <entry>Maintenance request</entry>
+ </row>
+ <row>
+ <entry><constant>11</constant></entry>
+ <entry>Tear-off mode selected</entry>
+ </row>
+ <row>
+ <entry><constant>12</constant></entry>
+ <entry>Double feed error</entry>
+ </row>
+ <row>
+ <entry><constant>1C</constant></entry>
+ <entry>Cutter position error</entry>
+ </row>
+ <row>
+ <entry><constant>1D</constant></entry>
+ <entry>Cutter jam</entry>
+ </row>
+ <row>
+ <entry><constant>1E</constant></entry>
+ <entry>Ink color error</entry>
+ </row>
+ <row>
+ <entry><constant>23</constant></entry>
+ <entry>Ink combination error</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ <literal>IQ</literal> is the amount of ink left, as a
+ (decimal!) percentage expressed in hexadecimal. The
+ values are black, cyan, magenta, and yellow. 6 and 7
+ color printers usually specify two or three additional
+ values for light cyan, light magenta, and gray.
+ However, some low end 6-color printers specify only four
+ values.
+ </para>
+ <para>
+ For printers with different ink cartridge options, the
+ following additional values may appear:
+ </para>
+ <table>
+ <title>Printer additional ink codes</title>
+ <tgroup cols="2" align="left">
+ <colspec colnum="1" colname="code"/>
+ <colspec colnum="2" colname="description"/>
+ <thead>
+ <row>
+ <entry>Ink code</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><constant>NA</constant></entry>
+ <entry>Ink cartridge is not inserted</entry>
+ </row>
+ <row>
+ <entry><constant>RE</constant></entry>
+ <entry>
+ Ink cartridge information cannot be read
+ </entry>
+ </row>
+ <row>
+ <entry><constant>WE</constant></entry>
+ <entry>
+ Ink cartridge information cannot be written
+ </entry>
+ </row>
+ <row>
+ <entry><constant>CI</constant></entry>
+ <entry>
+ Ink cartridge is inserted, but has not been read
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ <literal>WR</literal>, if provided, is the warning status:
+ </para>
+ <table>
+ <title>Printer warning codes</title>
+ <tgroup cols="2" align="left">
+ <colspec colnum="1" colname="warning"/>
+ <colspec colnum="2" colname="description"/>
+ <thead>
+ <row>
+ <entry>Warning code</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><constant>10</constant></entry>
+ <entry>
+ Black ink low (Photo black on printers using
+ UltraChrome&reg; ink)
+ </entry>
+ </row>
+ <row>
+ <entry><constant>11</constant></entry>
+ <entry>Cyan</entry>
+ </row>
+ <row>
+ <entry><constant>12</constant></entry>
+ <entry>Magenta</entry>
+ </row>
+ <row>
+ <entry><constant>13</constant></entry>
+ <entry>Yellow</entry>
+ </row>
+ <row>
+ <entry><constant>14</constant></entry>
+ <entry>Light cyan (presumably)</entry>
+ </row>
+ <row>
+ <entry><constant>15</constant></entry>
+ <entry>Light magenta (presumably)</entry>
+ </row>
+ <row>
+ <entry><constant>17</constant></entry>
+ <entry>
+ Gray (with UltraChrome-compatible printers)
+ </entry>
+ </row>
+ <row>
+ <entry><constant>18</constant></entry>
+ <entry>Matte black 1 (UltraChrome)</entry>
+ </row>
+ <row>
+ <entry><constant>19</constant></entry>
+ <entry>Matte black 2 (UltraChrome)</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ <literal>RV</literal> is the firmware revision (one byte
+ ASCII).
+ </para>
+ <para>
+ <literal>AI</literal> is actuator information. These
+ are two byte ASCII codes that indicate ``ink weight rank
+ ID'' of KCMY, respectively.
+ </para>
+ <para>
+ <literal>TC</literal>, if provided, is the total time of
+ cleaning or ink filling (?).
+ </para>
+ <para>
+ <literal>RC</literal>, if provided, is the firmware
+ revision.
+ </para>
+ <para>
+ <literal>INK:</literal> and <literal>MI</literal> are
+ <emphasis>not documented</emphasis>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* SM <varname>BC</varname>=2 00
+ <varname>xx</varname></literal></term>
+ <listitem>
+ <para>
+ Set Status Reply Rate. <varname>xx</varname> is the
+ repeat interval in seconds. If <varname>xx</varname> is
+ <constant>0</constant>, the status is returned only when
+ the printer's state changes.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* ST <varname>BC</varname>=1
+ 01</literal></term>
+ <listitem>
+ <para>
+ Reply Printer Status. The reply is formatted as follows:
+ </para>
+ <informalexample>
+ <screen>@BDC PS\r\nST:<varname>xx</varname>;\f</screen>
+ </informalexample>
+ <para>
+ <literal>\r</literal> is carriage return;
+ <literal>\n</literal> is newline; <literal>\f</literal> is
+ formfeed). If <varname>xx</varname> (the reply value) is
+ <constant>0</constant> or <constant>2</constant>,
+ automatic status update is disabled; if
+ <constant>1</constant> or <constant>3</constant>, it is
+ enabled.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* SM <varname>BC</varname>=1
+ 01</literal></term>
+ <listitem>
+ <para>
+ Reply Printer Status Rate. The reply is formatted as
+ follows:
+ </para>
+ <informalexample>
+ <screen>@BDC PS\r\nST:xx;\f</screen>
+ </informalexample>
+ <para>
+ <literal>\r</literal> is carriage return;
+ <literal>\n</literal> is newline; <literal>\f</literal> is
+ formfeed). See <literal>SM
+ <varname>BC</varname>=2</literal> above for the meaning of
+ the return value.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* ??
+ <varname>BC</varname>=<varname>xx</varname>
+ <varname>y</varname>[1] &hellip;
+ <varname>y</varname>[xx]</literal></term>
+ <listitem>
+ <para>
+ Echo Parameters (perhaps better described as Echo
+ Commands). The command string is executed (it would
+ appear from the documentation), and the string sent is
+ returned using a sequence similar to that described in
+ the <literal>ST <varname>BC</varname>=1</literal> and
+ <literal>SM <varname>BC</varname>=1</literal> commands.
+ Note that in this case the number of bytes is variable!
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* SM <varname>BC</varname>=2 00
+ 02</literal></term>
+ <listitem>
+ <para>
+ <emphasis>Function unknown</emphasis>. Used on the STC
+ 3000 at least when using roll feed.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* JE <varname>BC</varname>=1
+ 00</literal></term>
+ <listitem>
+ <para>
+ <emphasis>Function unknown</emphasis>. On new printers
+ (STC 740 or newer), this command should be sent after
+ all data has been sent. If this command is not sent,
+ and the printer is connected to a Windows system, the
+ last page of the job will not print completely. The
+ most likely explanation for for this is that the Windows
+ driver typically puts the printer in 1284.4 packet mode,
+ and this command has the effect of flushing the buffer
+ in the printer.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>* CO <varname>BC</varname>=8 00
+ <varname>cutter</varname>[1] <varname>page</varname>[1]
+ <varname>unit</varname>[1]
+ <varname>position</varname>[4]</literal></term>
+ <listitem>
+ <para>
+ Specify paper cutting on Stylus Photo 2200 (and perhaps
+ some other printers). <varname>cutter</varname> must be
+ 0. <varname>page</varname> should be one of the
+ following:
+ </para>
+ <table>
+ <title>Paper cutting codes</title>
+ <tgroup cols="2" align="left">
+ <colspec colnum="1" colname="code"/>
+ <colspec colnum="2" colname="description"/>
+ <thead>
+ <row>
+ <entry>Code</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><constant>0</constant></entry>
+ <entry>All pages</entry>
+ </row>
+ <row>
+ <entry><constant>1</constant></entry>
+ <entry>First page only</entry>
+ </row>
+ <row>
+ <entry><constant>2</constant></entry>
+ <entry>Last page only</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ <varname>unit</varname> should be one of the following:
+ </para>
+ <table>
+ <title>Paper cutting units</title>
+ <tgroup cols="2" align="left">
+ <colspec colnum="1" colname="code"/>
+ <colspec colnum="2" colname="description"/>
+ <thead>
+ <row>
+ <entry>Code</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><constant>0</constant></entry>
+ <entry>1/360 in.</entry>
+ </row>
+ <row>
+ <entry><constant>1</constant></entry>
+ <entry>1/720 in.</entry>
+ </row>
+ <row>
+ <entry><constant>2</constant></entry>
+ <entry>1/1440 in.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ This command should be used twice. The first
+ <literal>CO</literal> command specifies where the page
+ will be cut at the top, and the second specifies where
+ the page will be cut at the bottom. This permits
+ cutting both the top and the bottom of the page.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+ <sect1>
+ <title>Appropriate Remote Commands</title>
+
+ <para>
+ All of the remote commands described above are wrapped up with
+ the usual boilerplate. The files always start with
+ <literal>00 00 00</literal> and the &ldquo;magic&rdquo;
+ command described above, then two <literal>ESC @</literal>s to
+ reset the printer. The remote command sequences come next; if
+ they print anything that is usually followed by a
+ <literal>FF</literal> (<literal>0C</literal> hex) character to
+ feed the page, then the file ends with another two
+ <literal>ESC @</literal>s to get back to the ground state.
+ </para>
+ <para>
+ An alignment sequence goes like this:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Host uses <literal>DT</literal> to print an alignment
+ sheet.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ User eyeballs the sheet to see which is the best aligned
+ pattern.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Host sends a <literal>DA</literal> command indicating
+ which pattern the user chose.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If the user said &ldquo;realign&rdquo;, meaning he isn't
+ done yet, go to step 1.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ We are done: host sends a <literal>SV</literal> command
+ and exits.
+ </para>
+ </listitem>
+ </orderedlist>
+
+ <para>
+ The sequence used (by the STC 3000, at least) to print from
+ the roll feed is (with byte count omitted):
+ </para>
+ <informalexample>
+ <screen>PM 00 00
+SN 00 00 00
+EX 00 00 00 00 05 01
+ST 00 01
+SM 00 02</screen>
+ </informalexample>
+ <para>
+ The sequence used by the STP 870 to print on plain paper is
+ </para>
+ <informalexample>
+ <screen>PM 00 00
+IR 00 03
+SN 00 00 01
+SN 00 01 00
+SN 00 02 01
+EX 00 00 00 00 05 00
+FP 00 00 00</screen>
+ </informalexample>
+ <para>
+ and the job finishes with
+ </para>
+ <informalexample>
+ <screen>IR 00 02
+LD</screen>
+ </informalexample>
+ <para>
+ For different paper type settings on the STP 870, the
+ arguments to <literal>SN</literal> vary. The arguments to the
+ first and third <literal>SN</literal> commands are as outlined
+ in the description of the <literal>SN</literal> command above;
+ the arguments to the second (&ldquo;platen gap&rdquo;) are
+ <literal>00 01 01</literal> for thick papers (&ldquo;matte
+ paper&mdash;heavyweight&rdquo;, &ldquo;photo paper&rdquo; and
+ &ldquo;premium glossy photo paper&rdquo;) and <literal>00 01
+ 00</literal> for all others.
+ </para>
+ <para>
+ For roll-mode printing, the STP 870's sequence changes as
+ follows. <literal>IR</literal>'s arguments become <literal>00
+ 01</literal> in the header, and <literal>00 00</literal> after
+ the job, and <literal>EX</literal>'s last argument changes
+ from <constant>00</constant> to <constant>01</constant>.
+ </para>
+ <para>
+ For zero-margin printing on the STP 870, the arguments to
+ <literal>FP</literal> become <literal>00 0xb0 0xff</literal>.
+ This moves the origin about 5.5mm to the left, to a point one
+ tenth of an inch to the left of the left-hand edge of the
+ paper, allowing printing right up to (and beyond) the edge of
+ the paper. Some printers (at least the STP 870) include white
+ absorbent pads at the left margin position and other positions
+ (89mm and 100mm on the STP 870) to soak up ink which misses
+ the edge of the paper. Printing off the edge of paper of a
+ width not aligned with a pad could result in making a mess of
+ the inside of the printer and ink getting on the reverse of
+ the paper.
+ </para>
+ </sect1>
+</chapter>
diff --git a/doc/developer/gpl-appendix.xml b/doc/developer/gpl-appendix.xml
new file mode 100644
index 0000000..0119611
--- /dev/null
+++ b/doc/developer/gpl-appendix.xml
@@ -0,0 +1,502 @@
+<!--
+ The GNU Public License 2 in DocBook
+ Markup by Eric Baudais <baudais@okstate.edu>
+ Maintained by the GNOME Documentation Project
+ http://developer.gnome.org/projects/gdp
+ Version: 1.0.1
+ Last Modified: Nov 16, 2000
+-->
+
+<appendix id="gpl">
+ <appendixinfo>
+ <releaseinfo>
+ Version 2, June 1991
+ </releaseinfo>
+ <copyright>
+ <year>2000</year><holder>Free Software Foundation, Inc.</holder>
+ </copyright>
+ <legalnotice id="gpl-legalnotice">
+ <para>
+ <address>Free Software Foundation, Inc.
+ <street>59 Temple Place, Suite 330</street>,
+ <city>Boston</city>,
+ <state>MA</state>
+ <postcode>02111-1307</postcode>
+ <country>USA</country>
+ </address>
+ </para>
+ <para>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+ </para>
+ </legalnotice>
+ </appendixinfo>
+ <title>GNU General Public License</title>
+
+ <sect1 id="gpl-preamble">
+ <title>Preamble</title>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ We protect your rights with two steps:
+
+ <orderedlist numeration="arabic">
+ <listitem>
+ <para>
+ copyright the software, and
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ offer you this license which gives you legal permission to
+ copy, distribute and/or modify the software.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ The precise terms and conditions for copying, distribution and
+ modification follow.
+ </para>
+
+ </sect1>
+
+ <sect1 id="gpl-terms">
+ <title>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</title>
+
+ <sect2 id="gpl-sect0">
+ <title>Section 0</title>
+ <para>
+ 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 <quote>work based on the Program</quote> 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 <quote>modification</quote>.)
+ Each licensee is addressed as <quote>you</quote>.
+ </para>
+
+ <para>
+ 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.
+ </para>
+ </sect2>
+
+ <sect2 id="gpl-sect1">
+ <title>Section 1</title>
+ <para>
+ 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.
+ </para>
+
+ <para>
+ 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.
+ </para>
+ </sect2>
+
+ <sect2 id="gpl-sect2">
+ <title>Section 2</title>
+ <para>
+ 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 <link linkend="gpl-sect1">Section 1</link> above, provided
+ that you also meet all of these conditions:
+
+ <orderedlist numeration="loweralpha">
+ <listitem>
+ <para>
+ You must cause the modified files to carry prominent
+ notices stating that you changed the files and the date
+ of any change.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 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.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 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.
+
+ <note>
+ <title>Exception:</title>
+ <para>
+ 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.)
+ </para>
+ </note>
+
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ 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.
+ </para>
+ </sect2>
+
+ <sect2 id="gpl-sect3">
+ <title>Section 3</title>
+
+ <para>
+ You may copy and distribute the Program (or a work based on
+ it, under <link linkend="gpl-sect2">Section 2</link> in object
+ code or executable form under the terms of <link
+ linkend="gpl-sect1">Sections 1</link> and <link
+ linkend="gpl-sect2">2</link> above provided that you also do
+ one of the following:
+
+ <orderedlist numeration="loweralpha">
+ <listitem>
+ <para>
+ 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,
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 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,
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 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.)
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ 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.
+ </para>
+ </sect2>
+
+ <sect2 id="gpl-sect4">
+ <title>Section 4</title>
+
+ <para>
+ 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.
+ </para>
+ </sect2>
+
+ <sect2 id="gpl-sect5">
+ <title>Section 5</title>
+
+ <para>
+ 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.
+ </para>
+ </sect2>
+
+ <sect2 id="gpl-sect6">
+ <title>Section 6</title>
+
+ <para>
+ 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.
+ </para>
+ </sect2>
+
+ <sect2 id="gpl-sect7">
+ <title>Section 7</title>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ This section is intended to make thoroughly clear what is
+ believed to be a consequence of the rest of this License.
+ </para>
+ </sect2>
+
+ <sect2 id="gpl-sect8">
+ <title>Section 8</title>
+
+ <para>
+ 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.
+ </para>
+ </sect2>
+
+ <sect2 id="gpl-sect9">
+ <title>Section 9</title>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ 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.
+ </para>
+ </sect2>
+
+ <sect2 id="gpl-sect10">
+ <title>Section 10</title>
+
+ <para>
+ 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.
+ </para>
+ </sect2>
+
+ <sect2 id="gpl-sect11">
+ <title>NO WARRANTY</title>
+ <subtitle>Section 11</subtitle>
+
+ <para>
+ 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.
+ </para>
+ </sect2>
+
+ <sect2 id="gpl-sect12">
+ <title>Section 12</title>
+
+ <para>
+ 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.
+ </para>
+ </sect2>
+ </sect1>
+</appendix>
+
diff --git a/doc/developer/gutenprint.pdf b/doc/developer/gutenprint.pdf
new file mode 100644
index 0000000..ec324b0
--- /dev/null
+++ b/doc/developer/gutenprint.pdf
Binary files differ
diff --git a/doc/developer/gutenprint.xml b/doc/developer/gutenprint.xml
new file mode 100644
index 0000000..fe7f9a5
--- /dev/null
+++ b/doc/developer/gutenprint.xml
@@ -0,0 +1,59 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"/usr/share/sgml/docbook/dtd/xml/4.2/docbookx.dtd" [
+ <!ENTITY copying SYSTEM "copying.xml">
+ <!ENTITY dither SYSTEM "dither.xml">
+ <!ENTITY escp2 SYSTEM "escp2.xml">
+ <!ENTITY gpl SYSTEM "gpl-appendix.xml">
+ <!ENTITY introduction SYSTEM "introduction.xml">
+ <!ENTITY new-printer SYSTEM "new-printer.xml">
+ <!ENTITY problems SYSTEM "problems.xml">
+ <!ENTITY using SYSTEM "using.xml">
+ <!ENTITY weave SYSTEM "weave.xml">
+]>
+<book>
+
+ <bookinfo>
+ <title>The Developer's Guide to Gutenprint</title>
+ <date>7th Nov, 2003</date>
+ <pubdate>7th Nov, 2003</pubdate>
+ <corpauthor>
+ The Gutenprint Project
+ </corpauthor>
+ <copyright>
+ <year>2003</year>
+ <holder>The Gutenprint Project</holder>
+ </copyright>
+ <legalnotice>
+ <para>
+ 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.
+ </para>
+ <para>
+ 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.
+ </para>
+ <para>
+ You should have received a copy of the GNU General Public
+ License along with this program; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+ </para>
+ </legalnotice>
+ </bookinfo>
+
+&introduction;
+&copying;
+&using;
+&problems;
+&new-printer;
+&escp2;
+&weave;
+&dither;
+&gpl;
+
+</book>
diff --git a/doc/html-stamp b/doc/developer/html-stamp
index e69de29..e69de29 100644
--- a/doc/html-stamp
+++ b/doc/developer/html-stamp
diff --git a/doc/developer/introduction.xml b/doc/developer/introduction.xml
new file mode 100644
index 0000000..7fad264
--- /dev/null
+++ b/doc/developer/introduction.xml
@@ -0,0 +1,62 @@
+<preface>
+ <title>Preface</title>
+ <indexterm><primary>reading</primary></indexterm>
+ <indexterm><primary>manual, how to read</primary></indexterm>
+ <para>
+ Gutenprint is the print facility of the GNU Image Manipulation
+ Program (GIMP). It is in addition a suite of drivers that may be
+ used with common UNIX spooling systems using Ghostscript or CUPS.
+ These drivers provide printing quality for Linux, MacOS X and UNIX
+ on a par with proprietary vendor-supplied drivers in many cases,
+ and can be used for many of the most demanding printing tasks,
+ especially for high quality printing on modern inkjets, including
+ &ldquo;photographic quality&rdquo; models which offer very high
+ resolutions and several inks. The core of Gutenprint is a shared
+ library (libgutenprint) which may be used by any program that
+ wishes to produce high-quality printed output.
+ </para>
+ <para>
+ This manual documents the use of the
+ <application>Gutenprint</application> package, focusing mainly on
+ the libgutenprint library that is the core of
+ <application>Gutenprint</application>. Parts of the manual which
+ describe the use of libgutenprint are aimed primarily at
+ programmers, and do assume that the reader is familiar with C
+ programming, and using standard programming tools on GNU or UNIX
+ systems.
+ </para>
+ <para>
+ For the end-user, there is a separate manual documenting
+ programs that come with Gutenprint, including the
+ <application>GIMP</application> <command>print</command> plugin,
+ and the <application>CUPS</application> and
+ <application>Ghostscript</application> drivers.
+ </para>
+ <para>
+ To learn how to use libgutenprint in your own programs is to look
+ at the source of the <command>testpattern</command>, located in
+ <filename class="directory">src/testpattern</filename>, as well as
+ the source of the other programs that use libgutenprint, and
+ libgutenprint itself. Most importantly, please consult the API
+ reference and libgutenprint headers.
+ </para>
+ <para>
+ The manual is split into several parts for the programmer. It
+ starts with a simple usage example of how to link a program with
+ libgutenprint, then how to integrate this into package build
+ scripts, using <command>make</command>,
+ <command>autoconf</command> and <command>automake</command>. The
+ appendices cover the detail of the inner workings of some parts of
+ libgutenprint.
+ </para>
+ <para>
+ The following sections detail the dither and weave algorithms used
+ in libgutenprint, the ESC/P2 printer control language used in Epson
+ printers and how to add support for a new printer to libgutenprint.
+ </para>
+ <para>
+ <literallayout>We hope you enjoy using Gutenprint!
+&mdash;The Gutenprint project
+ </literallayout>
+ </para>
+</preface>
diff --git a/doc/developer/new-printer.xml b/doc/developer/new-printer.xml
new file mode 100644
index 0000000..ec83d61
--- /dev/null
+++ b/doc/developer/new-printer.xml
@@ -0,0 +1,883 @@
+<chapter>
+ <title>Adding a new printer</title>
+ <para>
+ This chapter covers adding a new ESCP/2, PCL, or Canon printer.
+ Writing a new driver module is not covered.
+ </para>
+ <para>
+ The three steps to adding a printer are:
+ <orderedlist>
+ <listitem>
+ <para>
+ Add an entry to <filename>printers.xml</filename>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Add the appropriate code and data to the appropriate
+ driver module.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Tune the printer.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ <para>
+ Printer information is stored in two places: in
+ <filename>printers.xml</filename> (which contains the list of
+ printer models available to the the upper-level application),
+ and in the appropriate driver file
+ (<filename>print-escp2.c</filename>,
+ <filename>print-pcl.c</filename>, or
+ <filename>print-canon.c</filename>).
+ </para>
+ <sect1>
+ <title><filename>printers.xml</filename></title>
+ <para>
+ <filename>printers.xml</filename> is an XML file that contains
+ very simple printer definitions. A schema may be used to
+ validate the XML (<filename>src/main/gutenprint.xsd</filename>).
+ This is an example definition:
+ </para>
+ <informalexample>
+ <programlisting>&lt;printer name="EPSON Stylus Color 1500" driver="escp2-1500"&gt;
+&lt;color value="true"/&gt;
+&lt;model value="2"/&gt;
+&lt;gamma value="0.597"/&gt;
+&lt;density value="1.0"/&gt;
+&lt;/printer&gt;</programlisting>
+ </informalexample>
+ <para>
+ There are other tags that may be present. The only ones that
+ are mandatory are <literal>&lt;printer&gt;</literal>,
+ <literal>&lt;color&gt;</literal> and
+ <literal>&lt;model&gt;</literal>. The other optional parameters
+ (<literal>&lt;gamma&gt;</literal> and
+ <literal>&lt;density&gt;</literal> in this case) can be used to
+ adjust control settings. This is probably not the right place
+ for them; the printer drivers themselves should contain this
+ information. There's probably no good reason for anything but
+ gamma and density to be in here. Gamma refers to the printer's
+ gamma factor; density is the desired base ink density for the
+ printer. The Epson driver contains the density information for
+ each printer at each resolution internally. An even better
+ driver would adjust density and possibly even gamma for paper
+ type. All the more reason not to have that information here.
+ </para>
+ <para>
+ If you really are curious about what tags are permitted, please
+ see the schema. These are the definitions of the tags that do
+ matter:
+ </para>
+ <variablelist>
+ <title>printdef XML elements</title>
+ <varlistentry>
+ <term><literal>&lt;family&gt;</literal></term>
+ <listitem>
+ <para>
+ This defines what driver module this printer uses. The
+ attribute <literal>name</literal> is the name of the
+ family driver to associate the printers with, for example
+ <literal>escp2</literal>, <literal>pcl</literal>,
+ <literal>canon</literal>, <literal>ps</literal> or
+ <literal>raw</literal>. This tag may only contain
+ <literal>&lt;printer&gt;</literal> elements.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>&lt;printer&gt;</literal></term>
+ <listitem>
+ <para>
+ This starts the definition of a printer. It must contain
+ the attributes <literal>name</literal> and
+ <literal>driver</literal>. <literal>name</literal> should
+ be is the full name of the printer, and must be human
+ readable. <literal>driver</literal> should consist of
+ alphanumerics and hyphens, and be fairly short.
+ <literal>name</literal> is what will appear in the
+ user-visible listing of printers, and may be translated
+ into the user's language, while <literal>driver</literal>
+ is what is actually used to key into the list of printers.
+ It is legal to have multiple printers with the same driver
+ name.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>&lt;color&gt;</literal></term>
+ <listitem>
+ <para>
+ This tag may not contain any content, but the
+ <literal>value</literal> attribute may be set to
+ <literal>true</literal> or <literal>false</literal>. This
+ indicates that this printer is capable of color, or is not
+ capable of color respectively.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>&lt;model&gt;</literal></term>
+ <listitem>
+ <para>
+ This defines a model number. This tag may not contain any
+ content, but the <literal>value</literal> attribute may be
+ set to a positive integer. This is passed into the
+ driver, which may do whatever it cares to with
+ it&mdash;index into a table, compute on, or whatever.
+ This need not be unique.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+ <sect1>
+ <title>The driver file</title>
+ <para>
+ Adding a new printer to a driver module
+ <filename>print-canon.c</filename>,
+ <filename>print-escp2.c</filename>,
+ <filename>print-lexmark.c</filename>, or
+ <filename>print-pcl.c</filename> or
+ (<filename>print-ps.c</filename> is really ad hoc) requires a
+ bit more planning. Each driver is somewhat different, but they
+ all generally have a vector of printer definitions, and the code
+ does some special casing based on particular printer
+ capabilities. The PCL and Canon drivers are quite similar; the
+ Canon driver was actually cribbed from the PCL driver, but it
+ then returned the favor.
+ </para>
+ <para>
+ The Epson driver is a little bit different. Canon and PCL
+ printers have some amount of intelligence; a lot of them have
+ specific ink options, and know about specific paper sizes and
+ types, and must be told the right thing. Epson printers have
+ somewhat less intelligence and will more or less do exactly what
+ the host tells it to do in a fairly regular fashion. I actually
+ prefer this; it isn't materially more work for the host to
+ compute things like exact paper sizes and such, it allows a lot
+ more tweaking, and it may be why Epson has been more open with
+ information&mdash;the communication protocol doesn't really
+ contain very much IP, so they have less reason to keep it
+ secret.
+ </para>
+ <para>
+ The sections about PCL and Canon printers need completing.
+ </para>
+ <sect2>
+ <title>Epson inkjet printers</title>
+ <para>
+ The <varname>model_capabilities</varname> vector in
+ <filename>print-escp2.c</filename> contains one entry for each
+ defined printer model. The <literal>model</literal> parameter
+ in <filename>printers.xml</filename> is an index into this
+ table.
+ </para>
+ <para>
+ In general, the new printers have fewer eccentricities than
+ the older printers. That doesn't mean they're simpler, just
+ that they're more consistent.
+ </para>
+ <para>
+ <type>escp2_printer_t</type> is a C struct defined as follows:
+ </para>
+ <informalexample>
+ <programlisting>typedef struct escp2_printer
+{
+model_cap_t flags; /* Bitmask of flags, see below */
+/*****************************************************************************/
+int nozzles; /* Number of nozzles per color */
+int min_nozzles; /* Minimum number of nozzles per color */
+int nozzle_separation; /* Separation between rows, in 1/360" */
+int black_nozzles; /* Number of black nozzles (may be extra) */
+int min_black_nozzles; /* # of black nozzles (may be extra) */
+int black_nozzle_separation; /* Separation between rows */
+/*****************************************************************************/
+int xres; /* Normal distance between dots in */
+ /* softweave mode (inverse inches) */
+int enhanced_xres; /* Distance between dots in highest */
+ /* quality modes */
+int base_separation; /* Basic unit of row separation */
+int base_resolution; /* Base hardware spacing (above this */
+ /* always requires multiple passes) */
+int enhanced_resolution;/* Above this we use the */
+ /* enhanced_xres rather than xres */
+int resolution_scale; /* Scaling factor for ESC(D command */
+int max_black_resolution; /* Above this resolution, we */
+ /* must use color parameters */
+ /* rather than (faster) black */
+ /* only parameters*/
+int max_hres;
+int max_vres;
+int min_hres;
+int min_vres;
+/*****************************************************************************/
+int max_paper_width; /* Maximum paper width, in points */
+int max_paper_height; /* Maximum paper height, in points */
+int min_paper_width; /* Maximum paper width, in points */
+int min_paper_height; /* Maximum paper height, in points */
+ /* Softweave: */
+int left_margin; /* Left margin, points */
+int right_margin; /* Right margin, points */
+int top_margin; /* Absolute top margin, points */
+int bottom_margin; /* Absolute bottom margin, points */
+ /* "Micro"weave: */
+int m_left_margin; /* Left margin, points */
+int m_right_margin; /* Right margin, points */
+int m_top_margin; /* Absolute top margin, points */
+int m_bottom_margin; /* Absolute bottom margin, points */
+/*****************************************************************************/
+int extra_feed; /* Extra distance the paper can be spaced */
+ /* beyond the bottom margin, in 1/360". */
+ /* (maximum useful value is */
+ /* nozzles * nozzle_separation) */
+int separation_rows; /* Some printers require funky spacing */
+ /* arguments in microweave mode. */
+int pseudo_separation_rows;/* Some printers require funky */
+ /* spacing arguments in softweave mode */
+
+int zero_margin_offset; /* Offset to use to achieve */
+ /* zero-margin printing */
+/*****************************************************************************/
+ /* The stylus 480 and 580 have an unusual arrangement of
+ color jets that need special handling */
+const int *head_offset;
+int initial_vertical_offset;
+int black_initial_vertical_offset;
+
+/*****************************************************************************/
+const int *dot_sizes; /* Vector of dot sizes for resolutions */
+const double *densities; /* List of densities for each printer */
+const escp2_variable_inklist_t *inks; /* Choices of inks for this printer */
+/*****************************************************************************/
+const double *lum_adjustment;
+const double *hue_adjustment;
+const double *sat_adjustment;
+const paperlist_t *paperlist;
+} escp2_printer_t;</programlisting>
+ </informalexample>
+ <para>
+ The printer definition block is divided into 8 sections.
+ The first section is a set of miscellaneous printer options.
+ These are described in the code, and will not be discussed
+ further here.
+ </para>
+ <para>
+ The second section describes the number of nozzles and the
+ separation between nozzles in base units. The base unit is
+ 1/360" for all currently supported printers, but future
+ printers may support a smaller base unit.
+ </para>
+ <para>
+ Many printers have more black nozzles than nozzles of other
+ colors, and when used in black and white mode, it's possible
+ to use these extra nozzles, which speeds up printing. As an
+ example, a printer that is specified to have 48 cyan, magenta,
+ and yellow nozzles, and 144 black nozzles, can use all 144
+ black nozzles when printing black ink only. When printing in
+ color, only 48 nozzles of each color (including black) can be
+ used.
+ </para>
+ <para>
+ Most printers can print using either the number of nozzles
+ available or any smaller number. Some printers require that
+ all of the nozzles be used. Those printers will set
+ <varname>min_nozzles</varname> and/or
+ <varname>min_black_nozzles</varname> to the same value as
+ <varname>nozzles</varname> and/or
+ <varname>black_nozzles</varname>.
+ </para>
+ <para>
+ The third section defines basic units of measure for the
+ printer, including the standard separation between dots, the
+ base nozzle separation, and the minimum and maximum printing
+ resolutions the printer supports. Most of these are fairly
+ self-explanatory, but some are not obvious.
+ </para>
+ <para>
+ Most Epson printers, other than the high-end Stylus Pro
+ models, cannot print dots spaced more closely than 1/360" or
+ 1/720" apart (this is the setting for <varname>xres</varname>.
+ This is true even for printers that support resolutions of
+ 1440 or 2880 DPI. In these cases, the data must be printed in
+ 2, 4, or 8 passes. While the printer can position the head to
+ a resolution of 1/1440" or 1/2880", the head cannot deposit
+ ink that frequently.
+ </para>
+ <para>
+ Some printers can only print in their very best quality (using
+ the smallest dots available) printing at a lower resolution.
+ For example, the Stylus Photo EX can normally print with a dot
+ spacing of 1/720". The smallest dot size cannot be printed
+ with a dot spacing of less than 1/360", however. In this
+ case, we use <varname>enhanced_xres</varname> to specify the
+ resolution to be used in this enhanced mode, and
+ <varname>enhanced_resolution</varname> to specify the printing
+ resolution above which we use the
+ <varname>enhanced_xres</varname>.
+ </para>
+ <para>
+ The <varname>resolution_scale</varname> command is used to
+ specify scaling factors for the dot separation on newer
+ printers. It should always be 14400 with current printers.
+ </para>
+ <para>
+ The fourth section specifies the minimum and maximum paper
+ sizes, and the margins. Some printers allow use of narrower
+ margins when softweave is used; both sets of margins are
+ specified.
+ </para>
+ <para>
+ There is a convenient <function>INCH</function> macro defined
+ to make specification of the
+ <varname>max_paper_width</varname> and
+ <varname>max_paper_height</varname> more legible. It
+ multiplies <constant>72</constant> by the provided expression
+ to get the appropriate number of points. For example, to
+ specify 8.5", <literal>INCH(17/2)</literal> expands to
+ <literal>(72 * 17/2)</literal>, which is evaluated left to
+ right, and hence generates the correct value.
+ </para>
+ <para>
+ The fifth section specifies some miscellaneous values that are
+ required for certain printers. For most printers, the correct
+ values are <constant>1</constant> for
+ <varname>separation_rows</varname> and <constant>0</constant>
+ for the others. Very, very few printers require (or allow)
+ <varname>separation_rows</varname> to be anything but
+ <constant>1</constant> and
+ <varname>pseudo_separation_rows</varname> other than
+ <constant>0</constant>. The Stylus Color 1520, Stylus Color
+ 800, Stylus Color 850, and (strangely enough to my mind, since
+ it's a newer printer) Stylus Color 660 seem to be the only
+ exceptions.
+ </para>
+ <para>
+ <varname>zero_margin_offset</varname> is used to specify an
+ additional negative horizontal offset required to print to the
+ edges of the paper on newer Stylus Photo printers. These must
+ be determined empirically; good starting values are
+ <constant>100</constant> for 1440 DPI and
+ <constant>50</constant> for 2880 DPI printers. The goal is to
+ print to the edge of the page, but not over it.
+ </para>
+ <para>
+ The sixth section specifies head offsets for printers that do
+ not have the color jets aligned. Certain printers, such as
+ the Stylus Color 480, have an unusual head arrangement whereby
+ instead of all of the colors being aligned vertically, the
+ nozzles are configured in groups. These printers are easy to
+ determine; if the normal head offset of zero for each color is
+ used, the printing will be vertically out of alignment. Most
+ of these printers require specification of a negative offset
+ for printing to the top edge of the paper; typically these
+ printers do not require such an offset when printing black
+ only.
+ </para>
+ <para>
+ The seventh section specifies the most difficult values to
+ tune, the dot sizes, printing densities, and ink values (for
+ variable dot size enabled printers). These will be described
+ in detail below.
+ </para>
+ <para>
+ The last section specifies luminosity, hue, and saturation
+ adjustment vectors for the printer, and the paper definitions.
+ These are used to adjust the color in
+ <emphasis>Photograph</emphasis> and <emphasis>Solid
+ Colors</emphasis> output modes. These are each vectors of 48
+ (actually 49, as the first value must be duplicated) doubles
+ that remap the luminosity, hue, and saturation respectively.
+ The hue is calculated, and the value used to interpolate
+ between the two closest points in each vector.
+ </para>
+ <para>
+ The paper definitions is a set of paper definitions. The
+ paper definition contains the name of the paper type, special
+ settings that are required for printers to process the paper
+ correctly, and a set of adjustment values. These are not
+ currently discussed here.
+ </para>
+ <para>
+ The lists of dot sizes and densities contain values for 13
+ printing modes: 120/180 DPI using printer weaving (single row;
+ incorrectly referred to as &ldquo;microweave&rdquo;) and
+ &ldquo;soft&rdquo; weaving (the driver determines the exact
+ pattern of dot layout), 360 DPI microweave and softweave,
+ 720&times;360 DPI microweave and softweave, 720 DPI microweave
+ and softweave, 1440&times;720 microweave and softweave,
+ 2880&times;720 microweave and softweave, and 2880&times;1440
+ softweave only. Printer weaving is referred to as
+ &ldquo;microweave&rdquo; for historical reasons.
+ </para>
+ <para>
+ For the dot sizes, the value for each element in the vector
+ selects the dot size to be used when printing at this (or
+ similar) resolution. The dot sizes are determined by
+ consulting the programming manual for the printer and
+ experimenting as described below. Current Epson printers
+ always use dot sizes less than <constant>16</constant>
+ (<constant>0x10</constant>), to indicate single dot size (each
+ dot is represented by 1 bit, and it's either printed or not),
+ and dot sizes of <constant>16</constant> or greater to
+ indicate variable dot size (each dot is represented by 2 bits,
+ and it can either be not printed or take on 2 or 3 values,
+ representing the relative size of the printed dot). Variable
+ dot sizes permit the use of very small dots (which would be
+ too small to fill the page and produce solid black) in light
+ areas, while allowing the page to be filled with larger dots
+ in darker areas.
+ </para>
+ <para>
+ Even single dot size printers can usually produce dots of
+ different sizes; it's just illegal to actually try to switch
+ dot size during a page. These dots are also much bigger than
+ those used in true variable dot size printing.
+ </para>
+ <para>
+ A dot size of <constant>-1</constant> indicates that this
+ resolution is illegal for the printer in question. Any
+ resolutions that would use this dot size will not be presented
+ to the user. A dot size of <constant>-2</constant> indicates
+ that this resolution is legal, but that the driver is not to
+ attempt to set any dot size. Some very old printers do not
+ support the command to set the dot size.
+ </para>
+ <para>
+ Most printers support a dot size of <constant>0</constant> as
+ a mode-specific default, but it's often a bigger dot than
+ necessary. Printers usually also support some dot sizes
+ between <constant>1</constant> and <constant>3</constant>.
+ Usually <constant>1</constant> is the right dot size for 720
+ and 1440 DPI printing, and <constant>3</constant> works best
+ at 360 DPI.
+ </para>
+ <para>
+ Variable dot size printers usually support 2 or 3 sets of
+ variable dot sizes. Older printers based on a 6 picolitre
+ drop (the 480, 720, 740, 750, 900, and 1200) support two: mode
+ 16 (0x10 in hexadecimal) for normal variable dots at 1440 or
+ 720 DPI, and mode 17 (0x10) for special larger dots at 360
+ DPI. Newer printers based on 4 picolitre drops normally
+ support three sizes: <constant>0x10</constant> for 4 pl base
+ drops, <constant>0x11</constant> for 6 pl base drops, and
+ <constant>0x12</constant> for special large drops. On these
+ printers, <constant>0x10</constant> usually works best at
+ 1440&times;720 and <constant>0x11</constant> works best at
+ 720&times;720. Unfortunately, <constant>0x10</constant>
+ doesn't seem to generate quite enough density at
+ 720&times;720, because if it did the output would be very
+ smooth. Perhaps it's possible to tweak things&hellip;
+ </para>
+ <para>
+ The list of densities is a list of base density values for all
+ of the above listed modes. &ldquo;Density&rdquo; refers to
+ the amount of ink deposited when a solid color (or solid
+ black) is printed. So if the density is
+ <constant>0.5</constant>, solid black actually prints only
+ half the possible dots. &ldquo;Base density&rdquo; refers to
+ the fact that the density value can be scaled in the GUI or on
+ the Ghostscript command line. The density value specified
+ (which is not made visible to the user) is multiplied by the
+ base density to obtain the effective density value. All other
+ things (such as ink drop size) remaining the same, doubling
+ the resolution requires halving the base density. The base
+ density in the density vector may exceed
+ <constant>1</constant>, as many paper types require lower
+ density than the base driver. The driver ensures that the
+ actual density never exceeds <constant>1</constant>.
+ </para>
+ <para>
+ Tuning the density should be done on high quality paper
+ (usually glossy photo paper). The goal is to find the lowest
+ density value that results in solid black (no visible gaps
+ under a fairly high power magnifying glass or loupe). If an
+ appropriate density value is found for 720 DPI, it could be
+ divided by 2 for 1440&times;720, by 4 for 2880&times;720, and
+ by 8 for 2880&times;1440.
+ </para>
+ <para>
+ However, for printers that offer a choice of dot size, this
+ may not be the best strategy. The best choice for dot size is
+ the smallest dot size that allows choosing a density value not
+ greater than <constant>1</constant> that gives full coverage.
+ This dot size may be different for different resolutions.
+ Tuning variable dot size printers is more complicated; the
+ process is described below.
+ </para>
+ <para>
+ The last member is a pointer to a structure containing a list
+ of ink values for variable dot size (or 6 color) inks. We
+ model variable dot size inks as producing a certain
+ &ldquo;value&rdquo; of ink for each available dot size, where
+ the largest dot size has a value of <constant>1</constant>.
+ 6-color inks are handled similarly; the light cyan and light
+ magenta inks are treated as a fractional ink value. The
+ combination of variable dot size and 6 color inks, of course,
+ just creates that many more different ink choices.
+ </para>
+ <para>
+ This structure is actually rather complicated; it contains
+ entries for each combination of physical printer resolution
+ (180, 360, 720, and 1440 DPI), ink colors (4, 6, and 7), and
+ single and variable dot sizes (since some printer modes can't
+ handle variable dot size inks). Since there's so much data,
+ it's actually a somewhat deeply nested structure.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ An <type>escp2_printer_t</type> contains a pointer
+ (essentially, a reference rather than a copy) to an
+ <type>escp2_variable_inklist_t</type>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ An <type>escp2_variable_inklist_t</type> contains pointers
+ to <type>escp2_variable_inkset_t</type> structures. There
+ is one such pointer for each combination of resolution,
+ dot type, and ink colors as described above. Yes, this is
+ rather inflexible.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ An <type>escp2_variable_inkset_t</type> contains pointers
+ to <type>escp2_variable_ink_t</type> structures. There is
+ one such pointer for each of the four colors (C, M, Y, and
+ K).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ An <type>escp2_variable_ink_t</type> contains a pointer to
+ the actual list of ink values
+ (<type>simple_dither_range_t</type>), the number of ink
+ values, and a density value to be used for computing the
+ transitions. This density value is actually a scaling
+ value; it is multiplied by the effective density to
+ compute the density to be used for computing the
+ transitions. Normally, this value is
+ <constant>1</constant>, but in some cases it may be
+ possible to get smoother results with a different value
+ (in particular, the single dot size 6-color inks work best
+ with the effective density scaled to
+ <constant>.75</constant> for this purpose). A lower
+ density lowers the transition points, which results in
+ more ink being deposited.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ A <type>simple_dither_range_t</type> is a structure containing four values:
+ <itemizedlist>
+ <listitem>
+ <para>
+ The value of the particular ink
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The bit pattern used to represent the ink
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Whether the ink is light (0) or dark (1), for inks
+ with light and dark variants
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The relative amount of ink actually deposited by
+ this dot (not currently used for much; it can be
+ used for ink reduction purposes, to reduce the
+ amount of ink deposited on the paper).
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ These things are interesting as arrays. From an array of
+ <type>simple_dither_range_t</type>'s, the dither code
+ computes transition values that it looks up at run time to
+ decide what ink to print, as well as whether to print at
+ all.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ <emphasis>Really</emphasis> confused now? Yup. You'll
+ probably find it easier to simply read the code.
+ </para>
+ </sect2>
+ <sect2>
+ <title>Tuning the printer</title>
+ <para>
+ Now, how do you use all this to tune a printer? There are a
+ number of ways to do it; this one is my personal favorite.
+ </para>
+ <para>
+ There's a file named <filename>test/cyan-sweep.tif</filename>.
+ This consists of a thin bar of cyan sweeping from white to
+ almost pure cyan, and from pure cyan to black. The first
+ thing to do is to pick the appropriate
+ <type>simple_dither_range_t</type> (or create a whole new
+ <type>escp2_variable_inklist_t</type>) and comment out all but
+ the darkest ink (this means you'll be using the largest dots
+ of dark ink). At 8.5" width (the width of a letter-size piece
+ of paper), the bar will be 1/8" high. Printing it on wider or
+ narrower paper will change the height accordingly. Print it
+ width-wise across a piece of photo quality paper in line art
+ mode using ordered or adaptive hybrid dither. Do not use
+ photographic mode; the colors in photographic mode vary
+ non-linearly depending upon the presence of the three color
+ components, while in line art mode the colors are much purer.
+ Make sure that all the color adjustments are set to defaults
+ (1.0). Use the highest quality version of the print mode
+ you're testing to reduce banding and other artifacts. This is
+ much easier to do with the Gimp than with Ghostscript.
+ </para>
+ <para>
+ At this stage, you want to look for four things:
+ <orderedlist>
+ <listitem>
+ <para>
+ The black near the center of the line is solid, but not
+ more so than that.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The cyan immediately to the left of the black is
+ <emphasis>almost</emphasis> solid.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The dark cyan at the far right of the page is solid, but
+ not more so. You can try tuning the density so that it
+ isn't quite solid, then nudging up the density until it
+ is.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Both sweeps sweep smoothly from light to dark. In
+ particular, the dark half of the bar shouldn't visibly
+ change color; it should go smoothly from cyan to black.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ <para>
+ Repeat this stage until you have everything just right. Use
+ the positioning entry boxes in the dialog to position each bar
+ exactly 1/8" further down the page. Adjacent bars will be
+ touching.
+ </para>
+ <para>
+ The next step is to uncomment out the second darkest dot size.
+ If you're using variable dots, use the second largest dot size
+ of the dark ink rather than the largest dot size of the light
+ ink. This will give you two inks.
+ </para>
+ <para>
+ When you recompile the plugin, you simply need to copy the new
+ executable into the correct place. You do not need to exit
+ and restart the Gimp.
+ </para>
+ <para>
+ Print another bar adjacent to the first one. Your goal is to
+ match the bar using a single dot size as closely as possible.
+ You'll find that the dark region of the bar shouldn't change
+ to any great degree, but the light half probably will. If the
+ lighter part of the light half is too dark, you need to
+ increase the value of the smaller dot; if it's too light, you
+ need to decrease the value. The reasoning is that if the
+ value is too low, the ink isn't being given enough credit for
+ its contribution to the darkness of the ink, and vice versa.
+ Repeat until you have a good match. Make sure you let the ink
+ dry fully, which will take a few minutes. Wet ink will look
+ too dark. Don't look at the paper too closely; hold it at a
+ distance. The extra graininess of the largest dot size will
+ probably make it look lighter than it should; if you hold it
+ far enough away so that you can't see the dots, you'll get a
+ more accurate picture of what's going on.
+ </para>
+ <para>
+ After you have what looks like a good match, print another bar
+ using only the largest dot size (or dark ink, for single dot
+ size 6-color printers). You want to ensure that the bars
+ touching each other look identical, or as close as possible to
+ it; your eye won't give you a good reading if the bars are
+ separated from each other. You'll probably have to repeat the
+ procedure.
+ </para>
+ <para>
+ The next step is to comment out all but the largest and
+ third-largest dot size, and repeat the procedure. When they
+ match, use all three dot sizes of dark ink. Again, the goal
+ is to match the single dot size.
+ </para>
+ <para>
+ You'll probably find the match is imperfect. Now you have to
+ figure out what region isn't right, which takes some
+ experimentation. Even small adjustments can make a noticeable
+ difference in what you see. At this stage, it's very
+ important to hold the page far enough from your eye; when you
+ use all three dot sizes, the texture will be much more even,
+ which sometimes makes it look darker and sometimes lighter.
+ </para>
+ <para>
+ After this is calibrated, it's time to calibrate the light ink
+ against the dark ink. To do this, comment out all but the
+ large dot version of the two inks, and repeat the procedure.
+ This is trickier, because the hues of the inks might not be
+ quite identical. Look at the dark half of the bar as well as
+ the light half to see that the hue really doesn't change as
+ you sweep from cyan to black. Sometimes it's easier to judge
+ that way. You may find that it looks blotchy, in which case
+ you should switch from ordered dither to adaptive hybrid.
+ </para>
+ <para>
+ After you have the light and dark inks calibrated against each
+ other, it's time to add everything back in. Usually you don't
+ want to use the largest dot size of light ink. These dots
+ will be much larger than the small dots of dark ink, but
+ they'll still be lighter. This will cause problems when
+ printing mixed colors, since you'll be depositing more ink on
+ lighter regions of the page, and you'll probably get strange
+ color casts that you can't get rid of in neutral tones. I
+ normally use only the smallest one or two dot sizes of light
+ ink.
+ </para>
+ <para>
+ After you've tweaked everything, print the color bar with
+ saturation set to zero. This will print neutral tones using
+ color inks. Your goal here is to look for neutral tonality.
+ If you're using a 6-color printer and get a yellow cast, it
+ means that the values for your light inks are too high
+ (remember, that means they're getting too much credit, so
+ you're not depositing enough cyan and magenta ink, and the
+ yellow dominates). If you get a bluish or bluish-purple cast,
+ your light inks are too low (you're not giving them enough
+ credit, so too much cyan and magenta is deposited, which
+ overwhelms the yellow). Make sure you do this on very white,
+ very high grade inkjet paper that's designed for
+ 1440&times;720 DPI or higher; otherwise the ink will spread on
+ contact and you'll get values that aren't really true for high
+ grade paper. You can, of course, calibrate for low grade
+ paper if that's what you're going to use, but that shouldn't
+ be put into the distribution.
+ </para>
+ <para>
+ You can also fully desaturate this bar inside the Gimp and
+ print it as monochrome (don't print the cyan as monochrome;
+ the driver does funny things with luminance), for comparison.
+ You'll find it very hard to get rid of all color casts.
+ </para>
+ <para>
+ There are other ways of tuning printers, but this one works
+ pretty well for me.
+ </para>
+ </sect2>
+ <sect2>
+ <title>Canon inkjet printers</title>
+ <para>
+ Basically, a new Canon printer can be added to
+ <filename>print-canon.c</filename> in a similar way as
+ described above for the epson inkjet printers. The main
+ differences are noted here.
+ </para>
+ <para>
+ In general, Canon printers have more &ldquo;built-in
+ intelligence&ldquo; than Epson printers which results in the
+ fact that the driver only has to tell the printing conditions
+ like resolutions, dot sizes, etc. to the printer and
+ afterwards transfer the raster data line by line for each
+ color used.
+ </para>
+ <para>
+ <type>canon_cap_t</type> is a C struct defined as follows:
+ </para>
+ <informalexample>
+ <programlisting>typedef struct canon_caps {
+int model; /* model number as used in printers.xml */
+int max_width; /* maximum printable paper size */
+int max_height;
+int base_res; /* base resolution - shall be 150 or 180 */
+int max_xdpi; /* maximum horizontal resolution */
+int max_ydpi; /* maximum vertical resolution */
+int max_quality;
+int border_left; /* left margin, points */
+int border_right; /* right margin, points */
+int border_top; /* absolute top margin, points */
+int border_bottom; /* absolute bottom margin, points */
+int inks; /* installable cartridges (CANON_INK_*) */
+int slots; /* available paperslots */
+int features; /* special bjl settings */
+canon_dot_size_t dot_sizes; /* Vector of dot sizes for resolutions */
+canon_densities_t densities; /* List of densities for each printer */
+canon_variable_inklist_t *inxs; /* Choices of inks for this printer */
+} canon_cap_t;</programlisting>
+ </informalexample>
+ <para>
+ Since there are Canon printers which print in resolutions of
+ 2<superscript>n</superscript> &times; 150 DPI (e.g. 300, 600,
+ 1200) and others which support resolutions of
+ 2<superscript>n</superscript> &times; 180 DPI (e.g. 360, 720,
+ 1440), there's a base resolution (150 or 180, respectively)
+ given in the <type>canon_cap_t</type>. The structs
+ <type>canon_dot_size_t</type>, <type>canon_densities_t</type>
+ and <type>canon_variable_inklist_t</type> refer to resolutions
+ being multiples of the base resolution.
+ </para>
+ <para>
+ For the Canon driver, the struct <type>canon_dot_size_t</type>
+ holds values for a model's capabilities at a given resolution,
+ or <constant>-1</constant> if the resolution is not supported.
+ <constant>0</constant> if it can be used and
+ <constant>1</constant> if the resolution can be used for
+ variable dot size printing.
+ </para>
+ <para>
+ In <type>canon_densities_t</type> the base densities for each
+ resolution can be specified like for an epson printer. The
+ same holds true for <type>canon_variable_inklist_t</type>.
+ See the descriptions above to learn about how to adjust your
+ model's output to yield nice results.
+ </para>
+ <para>
+ There's a slight difference though in the way the Canon driver
+ and the escp2 driver define their variable inklists: In the
+ Canon driver, you need to define an inklist like this:
+ </para>
+ <informalexample>
+ <programlisting>static const canon_variable_inklist_t canon_ink_myinks[] =
+{
+{
+ 1,4, /* 1bit/pixel, 4 colors */
+ &amp;ci_CMYK_1, &amp;ci_CMYK_1, &amp;ci_CMYK_1,
+ &amp;ci_CMYK_1, &amp;ci_CMYK_1, &amp;ci_CMYK_1,
+},
+{
+ 3,4, /* 3bit/pixel, 4 colors */
+ &amp;ci_CMYK_3, &amp;ci_CMYK_3, &amp;ci_CMYK_3,
+ &amp;ci_CMYK_3, &amp;ci_CMYK_3, &amp;ci_CMYK_3,
+},
+};</programlisting>
+ </informalexample>
+ <para>
+ where the <literal>&amp;ci_CMYK_1</literal> and
+ <literal>&amp;ci_CMYK_3</literal> entries are references to a
+ previously defined const of type
+ <type>canon_variable_inkset_t</type>.
+ </para>
+ </sect2>
+ </sect1>
+</chapter> \ No newline at end of file
diff --git a/doc/developer/problems.xml b/doc/developer/problems.xml
new file mode 100644
index 0000000..d60a83a
--- /dev/null
+++ b/doc/developer/problems.xml
@@ -0,0 +1,22 @@
+ <chapter>
+ <title>Reporting Bugs</title>
+ <para>
+ If you find a bug in Gutenprint or have any suggestions for
+ modification or improvement, please send electronic mail to the
+ Gutenprint bug reporting address,
+ <email>gimp-print-devel@lists.sourceforge.net</email>. Please
+ include the version number, which you can find at the bottom of
+ each manual page. Also include in your message the output that
+ the program produced and the output you expected, if applicable,
+ otherwise the best description of the problem that you can
+ provide.
+ </para>
+ <para>
+ If you have other questions, comments or suggestions about
+ Gutenprint, contact the developers via electronic mail to the
+ Gutenprint mailing list
+ <email>gimp-print-devel@lists.sourceforge.net</email>. They
+ will try to help you out, although they may not have time to fix
+ your problems.
+ </para>
+ </chapter> \ No newline at end of file
diff --git a/doc/developer/reference-html/a2122.html b/doc/developer/reference-html/a2122.html
new file mode 100644
index 0000000..df22a8b
--- /dev/null
+++ b/doc/developer/reference-html/a2122.html
@@ -0,0 +1,220 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>GNU General Public License</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Dithering"
+HREF="c1968.html"><LINK
+REL="NEXT"
+TITLE="TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION"
+HREF="x2153.html"></HEAD
+><BODY
+CLASS="appendix"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The Developer's Guide to Gutenprint</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="c1968.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="x2153.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="appendix"
+><H1
+><A
+NAME="gpl"
+></A
+>Appendix A. GNU General Public License</H1
+><DIV
+CLASS="sect1"
+><H1
+CLASS="sect1"
+><A
+NAME="gpl-preamble"
+>A.1. Preamble</A
+></H1
+><P
+>&#13; 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.
+ </P
+><P
+>&#13; 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.
+ </P
+><P
+>&#13; 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.
+ </P
+><P
+>&#13; 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.
+ </P
+><P
+>&#13; We protect your rights with two steps:
+
+ <P
+></P
+><OL
+TYPE="1"
+><LI
+><P
+>&#13; copyright the software, and
+ </P
+></LI
+><LI
+><P
+>&#13; offer you this license which gives you legal permission to
+ copy, distribute and/or modify the software.
+ </P
+></LI
+></OL
+>
+ </P
+><P
+>&#13; 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.
+ </P
+><P
+>&#13; 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.
+ </P
+><P
+>&#13; The precise terms and conditions for copying, distribution and
+ modification follow.
+ </P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="c1968.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="x2153.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Dithering</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/reference-html/c1717.html b/doc/developer/reference-html/c1717.html
new file mode 100644
index 0000000..8e09502
--- /dev/null
+++ b/doc/developer/reference-html/c1717.html
@@ -0,0 +1,278 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>Weaving for inkjet printers</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Appropriate Remote Commands"
+HREF="x1669.html"><LINK
+REL="NEXT"
+TITLE="Weaving algorithms"
+HREF="x1734.html"></HEAD
+><BODY
+CLASS="chapter"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The Developer's Guide to Gutenprint</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="x1669.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="x1734.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="chapter"
+><H1
+><A
+NAME="AEN1717"
+></A
+>Chapter 6. Weaving for inkjet printers</H1
+><DIV
+CLASS="sect1"
+><H1
+CLASS="sect1"
+><A
+NAME="AEN1719"
+>6.1. Introduction</A
+></H1
+><P
+>&#13; The Epson Stylus Color/Photo printers don't have memory to print
+ using all of the nozzles in the print head. For example, the
+ Stylus Photo 700/EX has 32 nozzles. At 720 dpi, with an 8" wide
+ image, a single line requires ((8 × 720 × 6) / 8)
+ bytes, or 4320 bytes (because the Stylus Photo printers have 6
+ ink colors). To use 32 nozzles per color would require 138240
+ bytes. It's actually worse than that, though, because the
+ nozzles are spaced 8 rows apart. Therefore, in order to store
+ enough data to permit sending the page as a simple raster, the
+ printer would require enough memory to store 256 rows, or
+ 1105920 bytes. Considering that the Photo EX can print 11"
+ wide, we're looking at more like 1.5 MB. In fact, these
+ printers are capable of 1440 dpi horizontal resolution. This
+ would require 3 MB. The printers actually have 64K-256K.
+ </P
+><P
+>&#13; With the newer (740/750 and later) printers it's even worse,
+ since these printers support multiple dot sizes; of course, the
+ even newer 2880×720 printers don't help either.
+ </P
+><P
+>&#13; Older Epson printers had a mode called
+ MicroWeave<SUP
+>&#8482;</SUP
+>. In this mode, the
+ host fed the printer individual rows of dots, and the printer
+ bundled them up and sent them to the print head in the correct
+ order to achieve high quality. This MicroWeave mode still works
+ in new printers, but in some cases the implementation is very
+ minimal: the printer uses exactly one nozzle of each color (the
+ first one). This makes printing extremely slow (more than 30
+ minutes for one 8.5×11" page), although the quality is
+ extremely high with no visible banding whatsoever. It's not
+ good for the print head, though, since no ink is flowing through
+ the other nozzles. This leads to drying of ink and possible
+ permanent damage to the print head.
+ </P
+><P
+>&#13; By the way, although the Epson manual says that microweave mode
+ should be used at 720 dpi, 360 dpi continues to work in much the
+ same way. At 360 dpi, data is fed to the printer one row at a
+ time on all Epson printers. The pattern that the printer uses
+ to print is very prone to banding. However, 360 dpi is
+ inherently a low quality mode; if you're using it, presumably
+ you don't much care about quality. It is possible to do
+ microweave at 360 DPI, with significantly improved quality.
+ </P
+><P
+>&#13; Except for the Stylus Pro printers (5000, 5500, 7000, 7500,
+ 9000, 9500, and when it's released the 10000), which can do
+ microweave at any resolution, printers from roughly the Stylus
+ Color 600 and later do not have the capability to do MicroWeave
+ correctly in many cases (some printers can do MicroWeave
+ correctly at 720 DPI). Instead, the host must arrange the
+ output in the order that it will be sent to the print head.
+ This is a very complex process; the jets in the print head are
+ spaced more than one row (1/720") apart, so we can't simply send
+ consecutive rows of dots to the printer. Instead, we have to
+ pass e. g. the first, ninth, 17th, 25th... rows in order for
+ them to print in the correct position on the paper. This
+ interleaving process is called "soft" weaving.
+ </P
+><P
+>&#13; This decision was probably made to save money on memory in the
+ printer. It certainly makes the driver code far more
+ complicated than it would be if the printer could arrange the
+ output. Is that a bad thing? Usually this takes far less CPU
+ time than the dithering process, and it does allow us more
+ control over the printing process, e.g. to reduce banding.
+ Conceivably, we could even use this ability to map out bad jets.
+ </P
+><P
+>&#13; Interestingly, apparently the Windows (and presumably Macintosh)
+ drivers for most or all Epson printers still list a
+ &#8220;microweave&#8221; mode. Experiments have demonstrated
+ that this does not in fact use the &#8220;microweave&#8221; mode
+ of the printer. Possibly it does nothing, or it uses a
+ different weave pattern from what the
+ &#8220;non-microweave&#8221; mode does. This is unnecessarily
+ confusing, at least for people who write drivers who try to
+ explain them to people who don't.
+ </P
+><P
+>&#13; What makes this interesting is that there are many different
+ ways of of accomplishing this goal. The naive way would be to
+ divide the image up into groups of 256 rows (for a printer with
+ 32 jets and a separation of 8 rows), and print all the mod8=0
+ rows in the first pass, mod8=1 rows in the second, and so forth.
+ The problem with this approach is that the individual ink jets
+ are not perfectly uniform; some emit slightly bigger or smaller
+ drops than others. Since each group of 8 adjacent rows is
+ printed with the same nozzle, that means that there will be
+ distinct streaks of lighter and darker bands within the image (8
+ rows is 1/90", which is visible; 1/720" is not). Possibly worse
+ is that these patterns will repeat every 256 rows. This creates
+ banding patterns that are about 1/3" wide.
+ </P
+><P
+>&#13; So we have to do something to break up this patterning.
+ </P
+><P
+>&#13; Epson do not publish the weaving algorithms that they use in
+ their bundled drivers. Indeed, their developer web site
+ (http://www.ercipd.com/isv/edr_docs.htm) does not even describe
+ how to do this weaving at all; it says that the only way to
+ achieve 720 dpi is to use MicroWeave. It does note (correctly)
+ that 1440 dpi horizontal can only be achieved by the driver
+ (i. e. in software). The manual actually makes it fairly clear
+ how to do this (it requires two passes with horizontal head
+ movement between passes), and it is presumably possible to do
+ this with MicroWeave.
+ </P
+><P
+>&#13; The information about how to do this is apparently available
+ under non-disclosure agreement (NDA). It's actually easy enough
+ to reverse engineer what's inside a print file with a simple
+ Perl script, which is supplied with the Gutenprint distribution
+ as tests/parse-escp2. In any event, we weren't particularly
+ interested in the weaving patterns Epson used. There are many
+ factors that go into choosing a good weaving pattern; we're
+ learning them as we go along. Issues such as drying time
+ (giving the ink a few seconds more or less to dry can have
+ highly visible effects) affect the quality of the output.
+ </P
+><P
+>&#13; The Uniprint GhostScript driver has been able to do weaving for
+ a long time. It uses patterns that must be specified for each
+ choice of resolution and printer. We preferred an algorithmic
+ approach that computes a weave pattern for any given choice of
+ inputs. This obviously requires extensive testing; we developed
+ a test suite specifically for this purpose.
+ </P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="x1669.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="x1734.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Appropriate Remote Commands</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Weaving algorithms</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/reference-html/c194.html b/doc/developer/reference-html/c194.html
new file mode 100644
index 0000000..5ed6bd7
--- /dev/null
+++ b/doc/developer/reference-html/c194.html
@@ -0,0 +1,167 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>Reporting Bugs</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Integrating libgutenprint"
+HREF="x79.html"><LINK
+REL="NEXT"
+TITLE="Adding a new printer"
+HREF="c200.html"></HEAD
+><BODY
+CLASS="chapter"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The Developer's Guide to Gutenprint</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="x79.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="c200.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="chapter"
+><H1
+><A
+NAME="AEN194"
+></A
+>Chapter 3. Reporting Bugs</H1
+><P
+>&#13; If you find a bug in Gutenprint or have any suggestions for
+ modification or improvement, please send electronic mail to the
+ Gutenprint bug reporting address,
+ <CODE
+CLASS="email"
+>&#60;<A
+HREF="mailto:gimp-print-devel@lists.sourceforge.net"
+>gimp-print-devel@lists.sourceforge.net</A
+>&#62;</CODE
+>. Please
+ include the version number, which you can find at the bottom of
+ each manual page. Also include in your message the output that
+ the program produced and the output you expected, if applicable,
+ otherwise the best description of the problem that you can
+ provide.
+ </P
+><P
+>&#13; If you have other questions, comments or suggestions about
+ Gutenprint, contact the developers via electronic mail to the
+ Gutenprint mailing list
+ <CODE
+CLASS="email"
+>&#60;<A
+HREF="mailto:gimp-print-devel@lists.sourceforge.net"
+>gimp-print-devel@lists.sourceforge.net</A
+>&#62;</CODE
+>. They
+ will try to help you out, although they may not have time to fix
+ your problems.
+ </P
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="x79.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="c200.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Integrating libgutenprint</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Adding a new printer</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/reference-html/c1968.html b/doc/developer/reference-html/c1968.html
new file mode 100644
index 0000000..e03ce26
--- /dev/null
+++ b/doc/developer/reference-html/c1968.html
@@ -0,0 +1,953 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>Dithering</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Weaving algorithms"
+HREF="x1734.html"><LINK
+REL="NEXT"
+TITLE="GNU General Public License"
+HREF="a2122.html"></HEAD
+><BODY
+CLASS="chapter"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The Developer's Guide to Gutenprint</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="x1734.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="a2122.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="chapter"
+><H1
+><A
+NAME="AEN1968"
+></A
+>Chapter 7. Dithering</H1
+><P
+>&#13; The dithering code in
+ <TT
+CLASS="filename"
+>src/main/print-dither.c</TT
+> attempts to
+ reproduce various shades of gray (or all colors) from only a few
+ different inks (black, cyan, magenta, yellow, and sometimes
+ light cyan and light magenta). The dots can't vary in darkness
+ or size (except for certain special printers), and so we need to
+ lay down a certain fraction of dots to represent each distinct
+ level.
+ </P
+><P
+>&#13; This sounds straightforward; in practice, it isn't. Completely
+ random distribution of dots (simple probabilistic dithering)
+ would create grainy clumps and light spots. The smoothest
+ pattern results from an equidistant spacing of dots.
+ Approximating this requires sophisticated algorithms. We have
+ two dithering algorithms, an ordered dither algorithm that uses
+ a grid (matrix) to decide whether to print, and a modified
+ Floyd-Steinberg error diffusion algorithm that uses a grid in a
+ slightly different way.
+ </P
+><P
+>&#13; We currently have three dithering functions:
+ </P
+><P
+></P
+><DIV
+CLASS="variablelist"
+><DL
+><DT
+><TT
+CLASS="literal"
+>dither_fastblack</TT
+></DT
+><DD
+><P
+>&#13; This produces pure black or white from a pre-dithered
+ input. This is used for two purposes: for printing pure
+ black and white very quickly (e.g. text), and for printing
+ pre-screened monochrome output that was rasterized
+ externally.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>dither_black</TT
+></DT
+><DD
+><P
+>&#13; This produces black from grayscale input. The new
+ dither_black can produce either a single or multiple
+ levels of black, for printers supporting variable dot
+ size.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>dither_cmyk</TT
+></DT
+><DD
+><P
+>&#13; This produces 3, 4, 5, 6, or 7 color output (CMY, CMYK,
+ CcMmYK, CcMmYy, CcMmYyK, or any variants). The new
+ routine can handle single or multiple levels of each
+ color.
+ </P
+></DD
+></DL
+></DIV
+><P
+>&#13; There is a choice of dithering algorithms. Four of them are
+ based on a basic error diffusion, with a few tweaks of my own.
+ The other one is &#8216;ordered&#8217;. However, they all share
+ the basic operation in common. First, the algorithm picks what
+ kind of dot (if there are multiple dot sizes and/or tones that
+ may be picked) is the candidate to be printed. This decision is
+ made based on the darkness at the point being dithered. Then,
+ it decides whether the dot will be printed at all. What this is
+ based on depends upon which algorithm family we use. This is
+ all described in more detail below.
+ </P
+><P
+>&#13; Ordered dithering works by comparing the value at a given point
+ with the value of a tiled matrix. If the value at the point is
+ greater than the value in the matrix, the dot is printed. The
+ matrix should consist of a set of evenly spaced points between 0
+ and the upper limit. The choice of matrix is very important for
+ print quality. A good dither matrix will emphasize high
+ frequency components, which distributes dots evenly with a
+ minimum of clumping. The matrices used here are all simple
+ matrices that are expanded recursively to create larger matrices
+ with the same kind of even point distribution. This is
+ described below.
+ </P
+><P
+>&#13; Note that it is important to use different matrices for the two
+ sub-operations, because otherwise the choice about whether to
+ print and the choice of dot size will be correlated. The usual
+ result is that the print is either too dark or too light, but
+ there can be other problems.
+ </P
+><P
+>&#13; Ordered dithering works quite well on single dot size, four
+ color printers. It has not been well tested on four color,
+ variable dot size printers. It should be avoided on six color
+ printers.
+ </P
+><P
+>&#13; Error diffusion works by taking the output error at a given
+ pixel and &#8220;diffusing&#8221; it into surrounding pixels.
+ Output error is the difference between the amount of ink output
+ and the input level at each pixel. For simple printers, with
+ one or four ink colors and only one dot size, the amount of ink
+ output is either 65536 (i. e. full output) or 0 (no output).
+ The difference between this and the input level is the error.
+ Normal error diffusion adds part of this error to the adjoining
+ pixels in the next column and the next row (the algorithm simply
+ scans each row in turn, never backing up). The error adds up
+ until it reaches a threshold (half of the full output level, or
+ 32768), at which point a dot is output, the output is subtracted
+ from the current value, and the (now negative) error is diffused
+ similarly.
+ </P
+><P
+>&#13; Error diffusion works quite well in general, but it tends to
+ generate artifacts which usually appear as worm-like lines or
+ areas of anomalous density. I have devised some ways, as
+ described below, of ameliorating these artifacts.
+ </P
+><P
+>&#13; There are two sub-classes of error diffusion that we use here,
+ &#8216;random&#8217; and &#8216;hybrid&#8217;. One of the
+ techniques that we use to ameliorate the artifacts is to use a
+ fuzzy threshold rather than the hard threshold of half of the
+ output level. Random error diffusion uses a pseudo-random
+ number to perturb the threshold, while hybrid error diffusion
+ uses a matrix. Hybrid error diffusion worked very poorly in
+ 3.1.3, and I couldn't figure out why until I found a bug. It
+ now works very well.
+ </P
+><P
+>&#13; There is one additional variant (on both sub-classes), called
+ &#8216;adaptive hybrid&#8217; and &#8216;adaptive random&#8217;.
+ The adaptive variant takes advantage of the fact that the
+ patterns that ordered dithering create are less visible at very
+ low densities, while the artifacts created by error diffusion
+ are more objectionable at low densities. At low densities,
+ therefore, it uses ordered dithering; at higher densities it
+ uses error diffusion.
+ </P
+><P
+>&#13; Handling multiple output levels makes life a bit more
+ complicated. In principle, it shouldn't be much harder: simply
+ figure out what the ratio between the available output levels is
+ and have multiple thresholds. In practice, getting these right
+ involves a lot of trial and error. The other thing that's
+ important is to maximize the number of dots that have some ink.
+ This will reduce the amount of speckling. More on this later.
+ </P
+><P
+>&#13; The next question: how do we handle black when printing in
+ color? Black ink is much darker than colored inks. It's
+ possible to produce black by adding some mixture of cyan,
+ magenta, and yellow&#8212;in principle. In practice, the black
+ really isn't very black, and different inks and different papers
+ will produce different color casts. However, by using CMY to
+ produce gray, we can output a lot more dots! This makes for a
+ much smoother image. What's more, one cyan, one magenta, and
+ one yellow dot produce less darkness than one black dot, so
+ we're outputting that many more dots. Better yet, with 6 or 7
+ color printers, we have to output even more light ink dots. So
+ Epson Stylus Photo printers can produce really smooth grays---if
+ we do everything right. The right idea is to use CMY at lower
+ black levels, and gradually mix in black as the overall amount
+ of ink increases, so the black dots don't really become visible
+ within the ink mass.
+ </P
+><P
+>&#13; Variable dot sizes are handled by dividing the range between 0
+ and 65536 into segments. Each segment can either represent a
+ range in which all of one kind of ink (color and/or dot size) is
+ used, with varying amounts of ink, or a transition region
+ between inks, in which equal numbers of dots are printed but the
+ amount of each ink will be adjusted throughout the range. Each
+ range is represented by four numbers:
+ </P
+><P
+></P
+><UL
+><LI
+><P
+>&#13; Bottom of the range.
+ </P
+></LI
+><LI
+><P
+>&#13; Top of the range.
+ </P
+></LI
+><LI
+><P
+>&#13; Value of the lighter ink.
+ </P
+></LI
+><LI
+><P
+>Value of the darker ink.
+ </P
+></LI
+></UL
+><P
+>&#13; In addition, the bit patterns and which type of ink are also
+ represented, but they don't affect the actual algorithm.
+ </P
+><P
+>&#13; As mentioned above, the basic algorithm is the same whether we
+ use ordered dither or error diffusion. We perform the following
+ steps on each color of each pixel:
+ </P
+><P
+></P
+><OL
+TYPE="1"
+><LI
+><P
+>&#13; Compute the value of the particular color we're printing.
+ This isn't usually the pure CMY value; it's adjusted to
+ improve saturation and to limit the use of black in light
+ toned regions (to avoid speckling).
+ </P
+></LI
+><LI
+><P
+>&#13; Find the range containing this value.
+ </P
+></LI
+><LI
+><P
+>&#13; Compute where this value lies within the range. We scale
+ the endpoints between 0 and 65536 for this purpose. So for
+ example, if the bottom of the range is 10,000 and the top of
+ the range is 20,000, and the value is 12,500, we're 1/4 of
+ the way between the bottom and the top of the range, so our
+ scale point is 16384.
+ </P
+></LI
+><LI
+><P
+>&#13; Compute the &#8220;virtual value&#8221;. The virtual value
+ is the distance between the value of the lighter and the
+ value of the darker ink. So if the value of the light ink
+ is 32768 and the dark ink is 65536, we compute a virtual
+ value scaled appropriately between these two values, which
+ is 40960 in this case.
+ </P
+></LI
+><LI
+><P
+>&#13; Using either error diffusion or ordered dither, the standard
+ threshold is 1/2 of the value (20480 in this case). Using
+ ordered dither, we want to compute a value between 0 and
+ 40960 that we will compare the input value against to decide
+ whether to print. Using pure error diffusion, we would
+ compare the accumulated error against 20480 to decide
+ whether to print. In practice, we use the same matrix
+ method to decide whether to print. The correct amount of
+ ink will be printed this way, but we minimize the squiggly
+ lines characteristic of error diffusion by dithering the
+ threshold in this fashion. A future enhancement will allow
+ us to control the amount of dithering applied to the
+ threshold.
+ </P
+></LI
+></OL
+><P
+>&#13; The matrices were generated by Thomas Tonino
+ <CODE
+CLASS="email"
+>&#60;<A
+HREF="mailto:ttonino@bio.vu.nl"
+>ttonino@bio.vu.nl</A
+>&#62;</CODE
+> with an algorithm of his
+ devising. The algorithm is designed to maximize the spacing
+ between dots at any given density by searching the matrix for
+ holes and placing a dot in the largest available hole. It
+ requires careful selection of initial points to achieve good
+ results, and is very time consuming. For best results, a
+ different matrix must be used for modes with 2:1 aspect ratio
+ (e.g. 1440×720) than for 1:1 (e. g. 720×720). It is
+ essential with any of these matrices that every point be used.
+ Skipping points generates low-frequency noise.
+ </P
+><P
+>&#13; It's essential to use different matrices for deciding whether to
+ print and for deciding what color (dark or light) to print.
+ This should be obvious; the decision about whether to print at
+ all should be as independent as possible from the decision about
+ what color to print, because any bias will result in excess
+ light or dark ink being printed, shifting the tonal balance. We
+ actually use the same matrices, but we shift them vertically and
+ horizontally. Assuming that the matrices are not
+ self-correlated, this will yield good results.
+ </P
+><P
+>&#13; The ranges are computed from a list of ink values (between 0 and
+ 1 for each possible combination of dot size and ink tone, where
+ the value represents the darkness of the ink) and the desired
+ maximum density of the ink. This is done in dither_set_ranges,
+ and needs more documentation.
+ </P
+><P
+>&#13; I stated earlier that I've tweaked the basic error diffusion
+ algorithm. Here's what I've done to improve it:
+ </P
+><P
+></P
+><UL
+><LI
+><P
+>&#13; We use a variable threshold to decide when to print, as
+ discussed above. This does two things for us: it reduces
+ the slightly squiggly diagonal lines that are the mark of
+ error diffusion; and it allows us to lay down some ink even
+ in very light areas near the edge of the image. The
+ squiggly lines that error diffusion algorithms tend to
+ generate are caused by the gradual accumulation of error.
+ This error is partially added horizontally and partially
+ vertically. The horizontal accumulation results in a dot
+ eventually being printed. The vertical accumulation results
+ in a dot getting laid down in roughly the same horizontal
+ position in the next row. The diagonal squigglies result
+ from the error being added to pixels one forward and one
+ below the current pixel; these lines slope from the top
+ right to the bottom left of the image.
+ </P
+><P
+>&#13; Error diffusion also results in pale areas being completely
+ white near the top left of the image (the origin of the
+ printing coordinates). This is because enough error has to
+ accumulate for anything at all to get printed. In very pale
+ areas it takes quite a long time to build up anything
+ printable at all; this results in the bare spots.
+ </P
+><P
+>&#13; Randomizing the threshold somewhat breaks up the diagonals
+ to some degree by randomizing the exact location that the
+ accumulated output crosses the threshold. It reduces the
+ false white areas by allowing some dots to be printed even
+ when the accumulated output level is very low. It doesn't
+ result in excess ink because the full output level is still
+ subtracted and diffused.
+ </P
+><P
+>&#13; Excessive randomization leads to blobs at high densities.
+ Therefore, as the density increases, the degree of
+ randomization decreases.
+ </P
+></LI
+><LI
+><P
+>&#13; Alternating scan direction between rows (first row is
+ scanned left to right, second is scanned right to left, and
+ so on). This also helps break up white areas, and it also
+ seems to break up squigglies a bit. Furthermore, it
+ eliminates directional biases in the horizontal direction.
+ This isn't necessary for ordered dither, but it doesn't hurt
+ either.
+ </P
+></LI
+><LI
+><P
+>&#13; Diffusing the error into more pixels. Instead of diffusing
+ the entire error into (X+1, Y) and (X, Y+1), we diffuse it
+ into (X+1, Y), (X+K, Y+1), (X, Y+1), (X-K, Y+1) where K
+ depends upon the output level (it never exceeds about 10
+ dots, and is greater at higher output levels). This really
+ reduces squigglies and graininess. The amount of this
+ spread can be controlled; for line art, it should be less
+ than for photographs (of course, line art doesn't usually
+ contain much light color, but the <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>error</I
+></SPAN
+>
+ value can be small in places!) In addition to requiring
+ more computation, a wide ink spread results in patterning at
+ high dot densities (note that the dot density can be high
+ even in fairly pale regions if multiple dot sizes are in
+ use).
+ </P
+></LI
+><LI
+><P
+>&#13; Don't lay down any colored ink if we're laying down black
+ ink. There's no point; the colored ink won't show. We
+ still pretend that we did for purposes of error diffusion
+ (otherwise excessive error will build up, and will take a
+ long time to clear, resulting in heavy bleeding of ink into
+ surrounding areas, which is very ugly indeed), but we don't
+ bother wasting the ink. How well this will do with variable
+ dot size remains to be seen.
+ </P
+></LI
+><LI
+><P
+>&#13; Oversampling. This is how to print 1440×720 with Epson
+ Stylus printers. Printing full density at 1440×720 will
+ result in excess ink being laid down. The trick is to print
+ only every other dot. We still compute the error as though we
+ printed every dot. It turns out that randomizing which dots
+ are printed results in very speckled output. This can be
+ taken too far; oversampling at 1440×1440 or
+ 1440×2880 virtual resolution results in other problems.
+ However, at present 1440×1440 (which is more accurately
+ called "1440×720 enhanced", as the Epson printers cannot
+ print 1440 rows per inch) does quite well, although it's slow.
+ </P
+></LI
+></UL
+><P
+>&#13; What about multiple output levels? For 6 and 7 color printers,
+ simply using different threshold levels has a problem: the pale
+ inks have trouble being seen when a lot of darker ink is being
+ printed. So rather than just using the output level of the
+ particular color to decide which ink to print, we look at the
+ total density (sum of all output levels). If the density's high
+ enough, we prefer to use the dark ink. Speckling is less
+ visible when there's a lot of ink, anyway. I haven't yet
+ figured out what to do for multiple levels of one color.
+ </P
+><P
+>&#13; You'll note that I haven't quoted a single source on color or
+ printing theory. I simply did all of this empirically.
+ </P
+><P
+>&#13; There are various other tricks to reduce speckling. One that
+ I've seen is to reduce the amount of ink printed in regions
+ where one color (particularly cyan, which is perceived as the
+ darkest) is very pale. This does reduce speckling all right,
+ but it also results in strange tonal curves and weird (to my
+ eye) colors.
+ </P
+><P
+>&#13; Before any dither routine is used,
+ <CODE
+CLASS="function"
+>init_dither</CODE
+> must be called. This takes
+ three arguments: the input width (number of pixels in the
+ input), the output width (number of pixels in the output), and a
+ <SPAN
+CLASS="type"
+>stp_vars_t</SPAN
+> structure containing the parameters for
+ the print job.
+ </P
+><P
+>&#13; <CODE
+CLASS="function"
+>init_dither</CODE
+> returns a pointer to an opaque
+ object representing the dither. This object is passed as the first
+ argument to all of the dither-related routines.
+ </P
+><P
+>&#13; After a page is fully dithered, <CODE
+CLASS="function"
+>free_dither</CODE
+>
+ must be called to free the dither object and perform any
+ cleanup. In the future, this may do more (such as flush
+ output). This arrangement permits using these routines with
+ programs that create multiple output pages, such as GhostScript.
+ </P
+><P
+>&#13; The dithering routines themselves have a number of control knobs
+ that control internal aspects of the dithering process. These
+ knobs are accessible via a number of functions that can be
+ called after <CODE
+CLASS="function"
+>init_dither</CODE
+>.
+ </P
+><P
+></P
+><UL
+><LI
+><P
+>&#13; <CODE
+CLASS="function"
+>dither_set_density</CODE
+> takes a double
+ between 0 and 1 representing the desired ink density for
+ printing solid colors. This is used in a number of places
+ in the dithering routine to make decisions.
+ </P
+></LI
+><LI
+><P
+>&#13; <CODE
+CLASS="function"
+>dither_set_black_density</CODE
+> takes a double
+ between 0 and 1 representing the desired ink density for
+ printing black ink in color printing. This is used to
+ balance black against color ink. By default, this is equal
+ to the density set by
+ <CODE
+CLASS="function"
+>dither_set_density</CODE
+>. By setting it
+ higher, more black ink will be printed. For example, if the
+ base density is .4 and the black density is .8, twice as
+ much black ink will be printed as would otherwise be called
+ for.
+ </P
+><P
+>&#13; This is not used when printing in monochrome. When printing
+ monochrome, the base density
+ (<CODE
+CLASS="function"
+>dither_set_density</CODE
+>) should be adjusted
+ appropriately.
+ </P
+></LI
+><LI
+><P
+>&#13; <CODE
+CLASS="function"
+>dither_set_ink_budget</CODE
+> takes an unsigned
+ number representing the most ink that may be deposited at a
+ given point. This number is arbitrary; the limit is
+ computed by summing the size of each ink dot, which is
+ supplied as a parameter in
+ <CODE
+CLASS="function"
+>dither_set_X_ranges</CODE
+>. By default, there
+ is no limit.
+ </P
+></LI
+><LI
+><P
+>&#13; <CODE
+CLASS="function"
+>dither_set_black_lower</CODE
+> takes a double
+ that should be between 0 and 1 that represents the lowest
+ density level at which black ink will start to mix in with
+ colored ink to generate grays. The lower this is, the less
+ density is required to use black ink. Setting this too low
+ will result in speckling from black dots, particularly on 6
+ and 7 color printers. Setting this too high will make it
+ hard to get satisfactory black or may result in sharp
+ transition between blended colors and black. Default:
+ 0.0468.
+ </P
+><P
+>&#13; It is important to note that since the density scale is
+ never linear (and since this value is adjusted via other
+ things happening during the dithering process) that this
+ does not mean that 95% gray will use any black ink. At this
+ setting, there will be no black ink used until about 50%
+ gray.
+ </P
+><P
+>&#13; This only applies to color mode.
+ </P
+><P
+>&#13; This value should be set lower for printers capable of
+ variable dot size, since more dots can be laid down close to
+ each other.
+ </P
+></LI
+><LI
+><P
+>&#13; <CODE
+CLASS="function"
+>dither_set_black_upper</CODE
+> takes a double
+ that should be between 0 and 1 that represents the highest
+ density level at which colored inks will be mixed to create
+ gray. Setting this too low will result in speckly dark
+ grays because there is not enough ink to fill all the holes,
+ or sharp transition between blended colors and black if it
+ is too close to the value of
+ <CODE
+CLASS="function"
+>dither_set_black_upper</CODE
+> Setting this too
+ high will result in poor black and dark tone quality.
+ Default: 0.5. This results in 10% and darker grays being
+ printed with essentially all black.
+ </P
+><P
+>&#13; This only applies to color mode.
+ </P
+></LI
+><LI
+><P
+>&#13; <CODE
+CLASS="function"
+>dither_set_black_levels</CODE
+> takes three
+ doubles that represent the amount of cyan, magenta, and
+ yellow respectively that are blended to create gray. The
+ defaults are 1.0 for each, which is probably too low for
+ most printers. These values are adjusted to create a good
+ gray balance. Setting these too low will result in pale
+ light and midtone grays, with a sharp transition to darker
+ tones as black mixes in. Setting them too high will result
+ in overly dark grays and use of too much ink, possibly
+ creating bleed-through.
+ </P
+><P
+>&#13; This only applies to color mode.
+ </P
+></LI
+><LI
+><P
+>&#13; <CODE
+CLASS="function"
+>dither_set_randomizers</CODE
+> takes four
+ integer values representing the degree of randomness used
+ for cyan, magenta, yellow, and black. This is used to allow
+ some printing to take place in pale areas. Zero is the most
+ random; greater than 8 or so gives very little randomness at
+ all. Defaults are 0 for cyan, magenta, and yellow, and 4
+ for black. Setting the value for black too low will result
+ in black speckling in pale areas. Setting values too high
+ will result in pale areas getting no ink at all.
+ </P
+><P
+>&#13; This currently only applies to single dot size in color and
+ black. It should be extended to operate in variable dot
+ size mode, although actually applying it correctly will be
+ tricky.
+ </P
+></LI
+><LI
+><P
+>&#13; <CODE
+CLASS="function"
+>dither_set_ink_darkness</CODE
+> takes three
+ doubles representing the contribution to perceived darkness
+ of cyan, magenta, and yellow. This is used to help decide
+ when to switch between light and dark inks in 6 and 7 color
+ printers (with light cyan, light magenta, and possibly light
+ yellow). Setting these too low will result in too much
+ light ink being laid down, creating flat spots in the
+ darkness curves and bleed-through. Setting them too high
+ will result in dark ink being used in pale areas, creating
+ speckle. The defaults are .4 for cyan, .3 for magenta, and
+ .2 for yellow. Dark cyan will show against yellow much more
+ than dark magenta will show against cyan, since the cyan
+ appears much darker than the yellow.
+ </P
+></LI
+><LI
+><P
+>&#13; <CODE
+CLASS="function"
+>dither_set_light_inks</CODE
+> takes three
+ doubles between 0 and 1 representing the ratio in darkness
+ between the light and dark versions of the inks. Setting
+ these too low will result in too much dark ink being used in
+ pale areas, creating speckling, while setting them too high
+ will result in very smooth texture but too much use of light
+ ink, resulting in flat spots in the density curves and ink
+ bleed-through. There are no defaults. Any light ink
+ specified as zero indicates that there is no light ink for
+ that color.
+ </P
+><P
+>&#13; This only applies to 6 and 7 color printers in single dot
+ size color mode, and only to those inks which have light
+ versions (usually cyan and magenta).
+ </P
+></LI
+><LI
+><P
+>&#13; <CODE
+CLASS="function"
+>dither_set_ink_spread</CODE
+> takes a small
+ integer representing the amount of ink spread in the dither.
+ Larger numbers mean less spread. Larger values are
+ appropriate for line art and solid tones; they will yield
+ sharper transitions but more dither artifacts. Smaller
+ values are more appropriate for photos. They will reduce
+ resolution and sharpness but reduce dither artifacts up to a
+ point. A value of 16 or higher implies minimum ink spread
+ at any resolution no matter what the overdensity. A value
+ of 14 is typical for photos on single dot size, 6 color
+ printers. For 4 color printers, subtract 1 (more spread;
+ the dots are farther apart). For variable dot size
+ printers, add 1 (more small dots are printed; less spread is
+ desirable).
+ </P
+></LI
+><LI
+><P
+>&#13; <CODE
+CLASS="function"
+>dither_set_adaptive_divisor</CODE
+> takes a
+ float representing the transition point between error
+ diffusion and ordered dither if adaptive dithering is used.
+ The float is a fraction of the printing density. For
+ example, if you wish the transition to be at 1/4 of the
+ maximum density (which works well on simple 4-color
+ printers), you would pass .25 here. With six colors and/or
+ with multiple dot sizes, the values should be set lower.
+ </P
+></LI
+><LI
+><P
+>&#13; <CODE
+CLASS="function"
+>dither_set_transition</CODE
+> takes a float
+ representing the exponent of the transition curve between
+ light and dark inks/dot sizes. A value less than 1 (typical
+ when using error diffusion) mixes in less dark ink/small
+ dots at lower ends of the range, to reduce speckling. When
+ using ordered dithering, this must be set to 1.
+ </P
+></LI
+><LI
+><P
+>&#13; <CODE
+CLASS="function"
+>dither_set_X_ranges_simple</CODE
+>
+ (<TT
+CLASS="literal"
+>X</TT
+> = <TT
+CLASS="literal"
+>c</TT
+>,
+ <TT
+CLASS="literal"
+>m</TT
+>, <TT
+CLASS="literal"
+>y</TT
+> or
+ <TT
+CLASS="literal"
+>k</TT
+>) describes the ink choices available
+ for each color. This is useful in typical cases where a
+ four color printer with variable dot sizes is in use. It is
+ passed an array of doubles between (0, 1] representing the
+ relative darkness of each dot size. The dot sizes are
+ assigned bit patterns (and ink quantities, see
+ <CODE
+CLASS="function"
+>dither_set_ink_budget</CODE
+> above) from 1 to
+ the number of levels. This also requires a density, which
+ is the desired density for this color. This density need
+ not equal the density specified in
+ <CODE
+CLASS="function"
+>dither_set_density</CODE
+>. Setting it lower
+ will tend to print more dark ink (because the curves are
+ calculated for this color assuming a lower density than is
+ actually supplied).
+ </P
+></LI
+><LI
+><P
+>&#13; <CODE
+CLASS="function"
+>dither_set_X_ranges</CODE
+>
+ (<TT
+CLASS="literal"
+>X</TT
+> = <TT
+CLASS="literal"
+>c</TT
+>,
+ <TT
+CLASS="literal"
+>m</TT
+>, <TT
+CLASS="literal"
+>y</TT
+> or
+ <TT
+CLASS="literal"
+>k</TT
+>) describes in a more general way the
+ ink choices available for each color. For each possible ink
+ choice, a bit pattern, dot size, value (i. e. relative
+ darkness), and whether the ink is the dark or light variant
+ ink is specified.
+ </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="x1734.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="a2122.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Weaving algorithms</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>GNU General Public License</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/reference-html/c200.html b/doc/developer/reference-html/c200.html
new file mode 100644
index 0000000..cd26eae
--- /dev/null
+++ b/doc/developer/reference-html/c200.html
@@ -0,0 +1,396 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>Adding a new printer</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Reporting Bugs"
+HREF="c194.html"><LINK
+REL="NEXT"
+TITLE="The driver file"
+HREF="x271.html"></HEAD
+><BODY
+CLASS="chapter"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The Developer's Guide to Gutenprint</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="c194.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="x271.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="chapter"
+><H1
+><A
+NAME="AEN200"
+></A
+>Chapter 4. Adding a new printer</H1
+><P
+>&#13; This chapter covers adding a new ESCP/2, PCL, or Canon printer.
+ Writing a new driver module is not covered.
+ </P
+><P
+>&#13; The three steps to adding a printer are:
+ <P
+></P
+><OL
+TYPE="1"
+><LI
+><P
+>&#13; Add an entry to <TT
+CLASS="filename"
+>printers.xml</TT
+>.
+ </P
+></LI
+><LI
+><P
+>&#13; Add the appropriate code and data to the appropriate
+ driver module.
+ </P
+></LI
+><LI
+><P
+>&#13; Tune the printer.
+ </P
+></LI
+></OL
+>
+ </P
+><P
+>&#13; Printer information is stored in two places: in
+ <TT
+CLASS="filename"
+>printers.xml</TT
+> (which contains the list of
+ printer models available to the the upper-level application),
+ and in the appropriate driver file
+ (<TT
+CLASS="filename"
+>print-escp2.c</TT
+>,
+ <TT
+CLASS="filename"
+>print-pcl.c</TT
+>, or
+ <TT
+CLASS="filename"
+>print-canon.c</TT
+>).
+ </P
+><DIV
+CLASS="sect1"
+><H1
+CLASS="sect1"
+><A
+NAME="AEN217"
+>4.1. <TT
+CLASS="filename"
+>printers.xml</TT
+></A
+></H1
+><P
+>&#13; <TT
+CLASS="filename"
+>printers.xml</TT
+> is an XML file that contains
+ very simple printer definitions. A schema may be used to
+ validate the XML (<TT
+CLASS="filename"
+>src/main/gutenprint.xsd</TT
+>).
+ This is an example definition:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN223"
+></A
+><PRE
+CLASS="programlisting"
+>&#60;printer name="EPSON Stylus Color 1500" driver="escp2-1500"&#62;
+&#60;color value="true"/&#62;
+&#60;model value="2"/&#62;
+&#60;gamma value="0.597"/&#62;
+&#60;density value="1.0"/&#62;
+&#60;/printer&#62;</PRE
+><P
+></P
+></DIV
+><P
+>&#13; There are other tags that may be present. The only ones that
+ are mandatory are <TT
+CLASS="literal"
+>&#60;printer&#62;</TT
+>,
+ <TT
+CLASS="literal"
+>&#60;color&#62;</TT
+> and
+ <TT
+CLASS="literal"
+>&#60;model&#62;</TT
+>. The other optional parameters
+ (<TT
+CLASS="literal"
+>&#60;gamma&#62;</TT
+> and
+ <TT
+CLASS="literal"
+>&#60;density&#62;</TT
+> in this case) can be used to
+ adjust control settings. This is probably not the right place
+ for them; the printer drivers themselves should contain this
+ information. There's probably no good reason for anything but
+ gamma and density to be in here. Gamma refers to the printer's
+ gamma factor; density is the desired base ink density for the
+ printer. The Epson driver contains the density information for
+ each printer at each resolution internally. An even better
+ driver would adjust density and possibly even gamma for paper
+ type. All the more reason not to have that information here.
+ </P
+><P
+>&#13; If you really are curious about what tags are permitted, please
+ see the schema. These are the definitions of the tags that do
+ matter:
+ </P
+><P
+></P
+><DIV
+CLASS="variablelist"
+><P
+><B
+>printdef XML elements</B
+></P
+><DL
+><DT
+><TT
+CLASS="literal"
+>&#60;family&#62;</TT
+></DT
+><DD
+><P
+>&#13; This defines what driver module this printer uses. The
+ attribute <TT
+CLASS="literal"
+>name</TT
+> is the name of the
+ family driver to associate the printers with, for example
+ <TT
+CLASS="literal"
+>escp2</TT
+>, <TT
+CLASS="literal"
+>pcl</TT
+>,
+ <TT
+CLASS="literal"
+>canon</TT
+>, <TT
+CLASS="literal"
+>ps</TT
+> or
+ <TT
+CLASS="literal"
+>raw</TT
+>. This tag may only contain
+ <TT
+CLASS="literal"
+>&#60;printer&#62;</TT
+> elements.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>&#60;printer&#62;</TT
+></DT
+><DD
+><P
+>&#13; This starts the definition of a printer. It must contain
+ the attributes <TT
+CLASS="literal"
+>name</TT
+> and
+ <TT
+CLASS="literal"
+>driver</TT
+>. <TT
+CLASS="literal"
+>name</TT
+> should
+ be is the full name of the printer, and must be human
+ readable. <TT
+CLASS="literal"
+>driver</TT
+> should consist of
+ alphanumerics and hyphens, and be fairly short.
+ <TT
+CLASS="literal"
+>name</TT
+> is what will appear in the
+ user-visible listing of printers, and may be translated
+ into the user's language, while <TT
+CLASS="literal"
+>driver</TT
+>
+ is what is actually used to key into the list of printers.
+ It is legal to have multiple printers with the same driver
+ name.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>&#60;color&#62;</TT
+></DT
+><DD
+><P
+>&#13; This tag may not contain any content, but the
+ <TT
+CLASS="literal"
+>value</TT
+> attribute may be set to
+ <TT
+CLASS="literal"
+>true</TT
+> or <TT
+CLASS="literal"
+>false</TT
+>. This
+ indicates that this printer is capable of color, or is not
+ capable of color respectively.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>&#60;model&#62;</TT
+></DT
+><DD
+><P
+>&#13; This defines a model number. This tag may not contain any
+ content, but the <TT
+CLASS="literal"
+>value</TT
+> attribute may be
+ set to a positive integer. This is passed into the
+ driver, which may do whatever it cares to with
+ it&#8212;index into a table, compute on, or whatever.
+ This need not be unique.
+ </P
+></DD
+></DL
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="c194.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="x271.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Reporting Bugs</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>The driver file</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/reference-html/c39.html b/doc/developer/reference-html/c39.html
new file mode 100644
index 0000000..3021576
--- /dev/null
+++ b/doc/developer/reference-html/c39.html
@@ -0,0 +1,182 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>Copying, modification and redistribution</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Preface"
+HREF="f14.html"><LINK
+REL="NEXT"
+TITLE="Using libgutenprint"
+HREF="c48.html"></HEAD
+><BODY
+CLASS="chapter"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The Developer's Guide to Gutenprint</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="f14.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="c48.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="chapter"
+><H1
+><A
+NAME="AEN39"
+></A
+>Chapter 1. Copying, modification and redistribution</H1
+><P
+>&#13; Gutenprint is <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>free</I
+></SPAN
+>; this means that everyone
+ is free to use it and free to redistribute it on a free basis.
+ Gutenprint is not in the public domain; it is copyrighted and
+ there are restrictions on its distribution, but these restrictions
+ are designed to permit everything that a good cooperating citizen
+ would want to do. What is not allowed is to try to prevent others
+ from further sharing any version of Gutenprint that they might get
+ from you.
+ </P
+><P
+>&#13; Specifically, we want to make sure that you have the right to give
+ away copies of Gutenprint, that you receive source code or else
+ can get it if you want it, that you can change Gutenprint or use
+ pieces of it in new free programs, and that you know you can do
+ these things.
+ </P
+><P
+>&#13; To make sure that everyone has such rights, we have to forbid you
+ to deprive anyone else of these rights. For example, if you
+ distribute copies of Gutenprint, 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 tell them their
+ rights.
+ </P
+><P
+>&#13; Also, for our own protection, we must make certain that everyone
+ finds out that there is no warranty for Gutenprint. If Gutenprint
+ is modified by someone else and passed on, we want their
+ recipients to know that what they have is not what we distributed,
+ so that any problems introduced by others will no reflect on our
+ reputation.
+ </P
+><P
+>&#13; Gutenprint is licensed under the terms of the GNU General Public
+ License (GPL), reproduced in <A
+HREF="a2122.html"
+>Appendix A</A
+>.
+ </P
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="f14.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="c48.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Preface</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Using libgutenprint</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/reference-html/c464.html b/doc/developer/reference-html/c464.html
new file mode 100644
index 0000000..cb3bede
--- /dev/null
+++ b/doc/developer/reference-html/c464.html
@@ -0,0 +1,1702 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>ESC/P2</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="The driver file"
+HREF="x271.html"><LINK
+REL="NEXT"
+TITLE="Remote Mode Commands"
+HREF="x955.html"></HEAD
+><BODY
+CLASS="chapter"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The Developer's Guide to Gutenprint</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="x271.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="x955.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="chapter"
+><H1
+><A
+NAME="AEN464"
+></A
+>Chapter 5. ESC/P2</H1
+><P
+>&#13; This is a description of the ESC/P2 raster commands used by the
+ Gutenprint printer driver, which is a subset of the complete
+ command set. The full documents are found on <A
+HREF="http://www.ercipd.com/isv/edr_docs.htm"
+TARGET="_top"
+>&#13; <I
+CLASS="citetitle"
+>http://www.ercipd.com/isv/edr_docs.htm</I
+></A
+>.
+ Note that these are <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>not</I
+></SPAN
+> always correct, and
+ are certainly not complete.
+ </P
+><P
+>&#13; All ESCP/2 raster commands begin with the <TT
+CLASS="literal"
+>ESC</TT
+>
+ character (0x1b), followed by either one or two command characters
+ and arguments where applicable. Older commands generally have one
+ command character. Newer commands usually have a
+ &#8216;<TT
+CLASS="literal"
+>(</TT
+>&#8217; (left parenthesis) followed by
+ a command character and a byte count for the arguments that
+ follow. The byte count is a 16-bit (2 byte) binary integer, in
+ little endian order.
+ </P
+><P
+>&#13; All arguments listed here are of the form
+ <TT
+CLASS="literal"
+>name[bytes]</TT
+> where <TT
+CLASS="literal"
+>[bytes]</TT
+> is
+ the number of bytes that comprise the argument. The arguments
+ themselves are usually one, two, or four byte integers, always
+ little endian (the least significant bits come first). Presumably
+ this is to match Intel processors.
+ </P
+><P
+>&#13; In some cases, the same command sequence identifies different
+ versions of the same command, depending upon the number of bytes
+ of arguments.
+ </P
+><DIV
+CLASS="sect1"
+><H1
+CLASS="sect1"
+><A
+NAME="AEN477"
+>5.1. Standard commands</A
+></H1
+><P
+></P
+><DIV
+CLASS="variablelist"
+><P
+><B
+>ESC/P2 Commands</B
+></P
+><DL
+><DT
+><TT
+CLASS="literal"
+>ESC @</TT
+></DT
+><DD
+><P
+>&#13; Reset the printer. Discards any output, ejects the
+ existing page, returns all settings to their default.
+ Always use this before printing a page.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC (G <CODE
+CLASS="varname"
+>BC</CODE
+>=1
+ <CODE
+CLASS="varname"
+>ON1</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Turn on graphics mode. <CODE
+CLASS="varname"
+>ON</CODE
+> should be
+ <CODE
+CLASS="constant"
+>1</CODE
+> (turn on graphics mode).
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC (U <CODE
+CLASS="varname"
+>BC</CODE
+>=1
+ <CODE
+CLASS="varname"
+>UNIT1</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set basic unit of measurement used by printer. This is
+ expressed in multiples of 1/3600". At 720 DPI,
+ <CODE
+CLASS="varname"
+>UNIT</CODE
+> is <CODE
+CLASS="constant"
+>5</CODE
+>; at
+ 360 DPI, <CODE
+CLASS="varname"
+>UNIT</CODE
+> is
+ <CODE
+CLASS="constant"
+>10</CODE
+>.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC (U <CODE
+CLASS="varname"
+>BC</CODE
+>=5
+ <CODE
+CLASS="varname"
+>PAGEUNITS1</CODE
+> <CODE
+CLASS="varname"
+>VUNIT1</CODE
+>
+ <CODE
+CLASS="varname"
+>HUNIT1</CODE
+>
+ <CODE
+CLASS="varname"
+>BASEUNIT2</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set basic units of measurement used by the printer.
+ <CODE
+CLASS="varname"
+>PAGEUNIT</CODE
+> is the unit of page
+ measurement (for commands that set page dimensions and
+ the like). <CODE
+CLASS="varname"
+>VUNIT</CODE
+> is the unit of
+ vertical measurement (for vertical movement commands).
+ <CODE
+CLASS="varname"
+>HUNIT</CODE
+> is the unit of horizontal
+ movement (for horizontal positioning commands). All of
+ these units are expressed in
+ <CODE
+CLASS="varname"
+>BASEUNIT</CODE
+>, which is in reciprocal
+ inches. Typically, <CODE
+CLASS="varname"
+>BASEUNIT</CODE
+> is
+ <CODE
+CLASS="constant"
+>1440</CODE
+>. In 720 DPI mode,
+ <CODE
+CLASS="varname"
+>PAGEUNIT</CODE
+>, <CODE
+CLASS="varname"
+>VUNIT</CODE
+>,
+ and <CODE
+CLASS="varname"
+>HUNIT</CODE
+> are all
+ <CODE
+CLASS="constant"
+>2</CODE
+>; in 1440×720 DPI mode,
+ <CODE
+CLASS="varname"
+>PAGEUNIT</CODE
+> and <CODE
+CLASS="varname"
+>VUNIT</CODE
+>
+ are normally set to <CODE
+CLASS="constant"
+>2</CODE
+>;
+ <CODE
+CLASS="varname"
+>HUNIT</CODE
+> is set to
+ <CODE
+CLASS="constant"
+>1</CODE
+>.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC (K <CODE
+CLASS="varname"
+>BC</CODE
+>=2
+ <CODE
+CLASS="varname"
+>ZERO1</CODE
+>
+ <CODE
+CLASS="varname"
+>GRAYMODE1</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set color or grayscale mode, on printers supporting an
+ explicit grayscale mode. These printers can be
+ identified because they are advertised as having more
+ black nozzles than nozzles of individual colors.
+ Setting grayscale mode allows use of these extra nozzles
+ for faster printing. <CODE
+CLASS="varname"
+>GRAYMODE</CODE
+> should
+ be <CODE
+CLASS="constant"
+>0</CODE
+> or <CODE
+CLASS="constant"
+>2</CODE
+> for
+ color, <CODE
+CLASS="constant"
+>1</CODE
+> for grayscale.
+ <CODE
+CLASS="varname"
+>ZERO</CODE
+> should always be
+ <CODE
+CLASS="constant"
+>0</CODE
+>.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC (i <CODE
+CLASS="varname"
+>BC</CODE
+>=1
+ <CODE
+CLASS="varname"
+>MICROWEAVE1</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; If <CODE
+CLASS="varname"
+>MICROWEAVE</CODE
+> is
+ <CODE
+CLASS="constant"
+>1</CODE
+>, use microweave mode. On older
+ printers, this is used to turn on microweave; on newer
+ printers, it prints one row at a time. All printers
+ support this mode. It should only be used at 720 (or
+ 1440×720) DPI. The Epson Stylus Pro series
+ indicates additional modes:
+ </P
+><P
+></P
+><DIV
+CLASS="variablelist"
+><DL
+><DT
+><CODE
+CLASS="constant"
+>2</CODE
+></DT
+><DD
+><P
+>&#13; &#8220;Full-overlap&#8221;
+ </P
+></DD
+><DT
+><CODE
+CLASS="constant"
+>3</CODE
+></DT
+><DD
+><P
+>&#13; &#8220;Four-pass&#8221;
+ </P
+></DD
+><DT
+><CODE
+CLASS="constant"
+>4</CODE
+></DT
+><DD
+><P
+>&#13; &#8220;Full-overlap 2&#8221;
+ </P
+></DD
+></DL
+></DIV
+><P
+>&#13; Any of these commands can be used with the high four
+ bits set to either <CODE
+CLASS="constant"
+>3</CODE
+> or
+ <CODE
+CLASS="constant"
+>0</CODE
+>.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC U
+ <CODE
+CLASS="varname"
+>DIRECTION1</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; If <CODE
+CLASS="varname"
+>DIRECTION</CODE
+> is
+ <CODE
+CLASS="constant"
+>1</CODE
+>, print unidirectionally; if
+ <CODE
+CLASS="constant"
+>0</CODE
+>, print bidirectionally.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC (s <CODE
+CLASS="varname"
+>BC</CODE
+>=1
+ <CODE
+CLASS="varname"
+>SPEED1</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; On some older printers, this controls the print head
+ speed. <CODE
+CLASS="varname"
+>SPEED</CODE
+> of
+ <CODE
+CLASS="constant"
+>2</CODE
+> is 10 inches/sec;
+ <CODE
+CLASS="varname"
+>SPEED</CODE
+> of <CODE
+CLASS="constant"
+>0</CODE
+> or 1
+ is 20.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC (e <CODE
+CLASS="varname"
+>BC</CODE
+>=2
+ <CODE
+CLASS="varname"
+>ZERO1</CODE
+>
+ <CODE
+CLASS="varname"
+>DOTSIZE1</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Choose print dotsize. <CODE
+CLASS="varname"
+>DOTSIZE</CODE
+> can
+ take on various values, depending upon the printer.
+ Almost all printers support <CODE
+CLASS="constant"
+>0</CODE
+> and
+ <CODE
+CLASS="constant"
+>2</CODE
+>. Variable dot size printers
+ allow a value of <CODE
+CLASS="varname"
+>16</CODE
+>. Other than the
+ value of <CODE
+CLASS="varname"
+>16</CODE
+>, this appears to be
+ ignored at resolutions of 720 DPI and above.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC (C <CODE
+CLASS="varname"
+>BC</CODE
+>=2
+ <CODE
+CLASS="varname"
+>PAGELENGTH2</CODE
+></TT
+>, <TT
+CLASS="literal"
+>ESC (C <CODE
+CLASS="varname"
+>BC</CODE
+>=4
+ <CODE
+CLASS="varname"
+>PAGELENGTH4</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set the length of the page in &#8220;pageunits&#8221;
+ (see <TT
+CLASS="literal"
+>ESC (U</TT
+> above). The second form
+ of the command allows setting of longer page lengths on
+ new printers (these happen to be the printers that
+ support variable dot size).
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC (c <CODE
+CLASS="varname"
+>BC</CODE
+>=4
+ <CODE
+CLASS="varname"
+>TOP2</CODE
+>
+ <CODE
+CLASS="varname"
+>LENGTH2</CODE
+></TT
+>, <TT
+CLASS="literal"
+>ESC (c <CODE
+CLASS="varname"
+>BC</CODE
+>=8
+ <CODE
+CLASS="varname"
+>TOP4</CODE
+>
+ <CODE
+CLASS="varname"
+>LENGTH4</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set the vertical page margins of the page in
+ &#8220;pageunits&#8221; (see <TT
+CLASS="literal"
+>ESC (U</TT
+>
+ above). The margins are specified as the top of the
+ page and the length of the page. The second form of the
+ command allows setting of longer page lengths on new
+ printers (these happen to be the printers that support
+ variable dot size).
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC (S <CODE
+CLASS="varname"
+>BC</CODE
+>=8
+ <CODE
+CLASS="varname"
+>WIDTH4</CODE
+>
+ <CODE
+CLASS="varname"
+>LENGTH4</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set the width and length of the printed page region in
+ &#8220;pageunits&#8221; (see <TT
+CLASS="literal"
+>ESC (U</TT
+>
+ above).
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC (v <CODE
+CLASS="varname"
+>BC</CODE
+>=2
+ <CODE
+CLASS="varname"
+>ADVANCE2</CODE
+></TT
+>, <TT
+CLASS="literal"
+>ESC (v <CODE
+CLASS="varname"
+>BC</CODE
+>=4
+ <CODE
+CLASS="varname"
+>ADVANCE4</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Feed vertically <CODE
+CLASS="varname"
+>ADVANCE</CODE
+>
+ &#8220;vertical units&#8221; (see <TT
+CLASS="literal"
+>ESC
+ (U</TT
+> above) from the current print head
+ position.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC (V <CODE
+CLASS="varname"
+>BC</CODE
+>=2
+ <CODE
+CLASS="varname"
+>ADVANCE2</CODE
+></TT
+>, <TT
+CLASS="literal"
+>ESC (V <CODE
+CLASS="varname"
+>BC</CODE
+>=4
+ <CODE
+CLASS="varname"
+>ADVANCE4</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Feed vertically <CODE
+CLASS="varname"
+>ADVANCE</CODE
+>
+ &#8220;vertical units&#8221; (see <TT
+CLASS="literal"
+>ESC
+ (U</TT
+> above) from the top margin.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC ($ <CODE
+CLASS="varname"
+>BC</CODE
+>=4
+ <CODE
+CLASS="varname"
+>OFFSET4</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set horizontal position to <CODE
+CLASS="varname"
+>OFFSET</CODE
+>
+ from the left margin. This command operates on printers
+ of the 740 class and newer (all printers with variable
+ dot size).
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC $
+ <CODE
+CLASS="varname"
+>OFFSET2</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set horizontal position to <CODE
+CLASS="varname"
+>OFFSET</CODE
+>
+ from the left margin. This command operates on printers
+ of the 740 class and newer (all printers with variable
+ dot size).
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC (\ <CODE
+CLASS="varname"
+>BC</CODE
+>=4
+ <CODE
+CLASS="varname"
+>UNITS2</CODE
+>
+ <CODE
+CLASS="varname"
+>OFFSET2</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set horizontal position to <CODE
+CLASS="varname"
+>OFFSET</CODE
+>
+ from the previous print head position, measured in
+ <CODE
+CLASS="varname"
+>UNITS</CODE
+>. <CODE
+CLASS="varname"
+>UNITS</CODE
+> is
+ measured in inverse inches, and should be set to 1440 in
+ all cases. This operates on all 1440 dpi printers that
+ do not support variable dot size.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC (/ <CODE
+CLASS="varname"
+>BC</CODE
+>=4
+ <CODE
+CLASS="varname"
+>OFFSET4</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set horizontal position to <CODE
+CLASS="varname"
+>OFFSET</CODE
+>
+ from the previous print head position, measured in
+ &#8220;horizontal units&#8221; (see <TT
+CLASS="literal"
+>ESC
+ (U</TT
+> above). This operates on all variable dot
+ size printers.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC \
+ <CODE
+CLASS="varname"
+>OFFSET2</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set horizontal position to <CODE
+CLASS="varname"
+>OFFSET</CODE
+>
+ from the previous print head position, measured in basic
+ unit of measurement (see <TT
+CLASS="literal"
+>ESC (U</TT
+>
+ above). This is used on all 720 dpi printers, and can
+ also be used on 1440 dpi printers in lower resolutions
+ to save a few bytes. Note that
+ <CODE
+CLASS="varname"
+>OFFSET</CODE
+> may be negative. The range of
+ values for this command is between
+ <CODE
+CLASS="constant"
+>-16384</CODE
+> and
+ <CODE
+CLASS="constant"
+>16383</CODE
+>.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC r
+ <CODE
+CLASS="varname"
+>COLOR1</CODE
+></TT
+>, <TT
+CLASS="literal"
+>ESC (r <CODE
+CLASS="varname"
+>BC</CODE
+>=2
+ <CODE
+CLASS="varname"
+>DENSITY1</CODE
+>
+ <CODE
+CLASS="varname"
+>COLOR1</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set the ink color. The first form is used on four-color
+ printers; the second on six-color printers.
+ <CODE
+CLASS="varname"
+>DENSITY</CODE
+> is <CODE
+CLASS="constant"
+>0</CODE
+> for
+ dark inks, <CODE
+CLASS="constant"
+>1</CODE
+> for light.
+ <CODE
+CLASS="varname"
+>COLOR</CODE
+> is
+ </P
+><DIV
+CLASS="table"
+><A
+NAME="AEN728"
+></A
+><P
+><B
+>Table 5-1. Colors</B
+></P
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL
+WIDTH="1*"
+TITLE="id"><COL
+WIDTH="1*"
+TITLE="color"><THEAD
+><TR
+><TH
+><CODE
+CLASS="varname"
+>COLOR</CODE
+></TH
+><TH
+>Color name</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><CODE
+CLASS="constant"
+>0</CODE
+></TD
+><TD
+>Black</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>1</CODE
+></TD
+><TD
+>Magenta</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>2</CODE
+></TD
+><TD
+>Cyan</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>4</CODE
+></TD
+><TD
+>Yellow</TD
+></TR
+></TBODY
+></TABLE
+></DIV
+><P
+>&#13; This command is not used on variable dot size printers
+ in softweave mode.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC . <CODE
+CLASS="varname"
+>COMPRESS1</CODE
+>
+ <CODE
+CLASS="varname"
+>VSEP1</CODE
+> <CODE
+CLASS="varname"
+>HSEP1</CODE
+>
+ <CODE
+CLASS="varname"
+>LINES1</CODE
+> <CODE
+CLASS="varname"
+>WIDTH2</CODE
+>
+ data...</TT
+></DT
+><DD
+><P
+>&#13; Print data. <CODE
+CLASS="varname"
+>COMPRESS</CODE
+> signifies the
+ compression mode.
+ </P
+><DIV
+CLASS="table"
+><A
+NAME="AEN767"
+></A
+><P
+><B
+>Table 5-2. Compression modes</B
+></P
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL
+WIDTH="1*"
+TITLE="id"><COL
+WIDTH="1*"
+TITLE="compression"><THEAD
+><TR
+><TH
+><CODE
+CLASS="varname"
+>COMPRESS</CODE
+></TH
+><TH
+>Compression mode</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><CODE
+CLASS="constant"
+>0</CODE
+></TD
+><TD
+>No compression</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>1</CODE
+></TD
+><TD
+>&#13; TIFF compression (incorrectly documented as
+ &#8220;run length encoded&#8221;)
+ </TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>2</CODE
+></TD
+><TD
+>&#13; TIFF compression with a special command set.
+ </TD
+></TR
+></TBODY
+></TABLE
+></DIV
+><P
+>&#13; <CODE
+CLASS="varname"
+>VSEP</CODE
+> depends upon resolution and
+ printer type. At 360 DPI, it is always
+ <CODE
+CLASS="constant"
+>10</CODE
+>. At 720 DPI, it is normally
+ <CODE
+CLASS="constant"
+>5</CODE
+>5. On the ESC 600, it is
+ <CODE
+CLASS="constant"
+>40</CODE
+> (8 × 5}). On some other
+ printers, it varies.
+ </P
+><P
+>&#13; <CODE
+CLASS="varname"
+>HSEP1</CODE
+> is <CODE
+CLASS="constant"
+>10</CODE
+> at
+ 360 DPI and <CODE
+CLASS="constant"
+>5</CODE
+> at 720 or 1440 DPI
+ (1440 DPI cannot be printed in one pass; it is printed
+ in two passes, with the dots separated in each pass by
+ 1/720").
+ </P
+><P
+>&#13; <CODE
+CLASS="varname"
+>LINES</CODE
+> is the number of lines to be
+ printed. It should be <CODE
+CLASS="constant"
+>1</CODE
+> in
+ microweave and 360 DPI. At 720 DPI softweave, it should
+ be the number of lines to be actually printed.
+ </P
+><P
+>&#13; <CODE
+CLASS="varname"
+>WIDTH</CODE
+> is the number of pixels to be
+ printed in each row. Following this command, a carriage
+ return (<CODE
+CLASS="constant"
+>13</CODE
+> decimal,
+ <TT
+CLASS="literal"
+>0A</TT
+> hex) should be output to return
+ the print head position to the left margin.
+ </P
+><P
+>&#13; The basic data format is a string of bytes, with data
+ from left to right on the page. Within each byte, the
+ highest bit is first.
+ </P
+><P
+>&#13; The TIFF compression is implemented as one count byte
+ followed by one or more data bytes. There are two
+ cases:
+ </P
+><P
+></P
+><OL
+TYPE="1"
+><LI
+><P
+>&#13; If the count byte is <CODE
+CLASS="constant"
+>128</CODE
+> or
+ less, it is followed by ([count] + 1) data bytes.
+ So if the count byte is <CODE
+CLASS="constant"
+>0</CODE
+>, it
+ is followed by 1 data byte; if it is
+ <CODE
+CLASS="constant"
+>128</CODE
+>, it is followed by 129 data
+ bytes.
+ </P
+></LI
+><LI
+><P
+>&#13; If the count byte is greater than 128, it is
+ followed by one byte. This byte is repeated (257 -
+ [count]) times. So if [count] is 129, the next byte
+ is treated as though it were repeated 128 times; if
+ [count] is 255, it is treated as though it were
+ repeated twice.
+ </P
+></LI
+></OL
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC i <CODE
+CLASS="varname"
+>COLOR1</CODE
+>
+ <CODE
+CLASS="varname"
+>COMPRESS1</CODE
+> <CODE
+CLASS="varname"
+>BITS1</CODE
+>
+ <CODE
+CLASS="varname"
+>BYTES2</CODE
+> <CODE
+CLASS="varname"
+>LINES2</CODE
+>
+ data...</TT
+></DT
+><DD
+><P
+>&#13; Print data in the newer printers (that support variable
+ dot size), and Stylus Pro models.
+ <CODE
+CLASS="varname"
+>COLOR</CODE
+> is the color.
+ </P
+><DIV
+CLASS="table"
+><A
+NAME="AEN827"
+></A
+><P
+><B
+>Table 5-3. Extended Colors</B
+></P
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL
+WIDTH="1*"
+TITLE="id"><COL
+WIDTH="1*"
+TITLE="color"><THEAD
+><TR
+><TH
+><CODE
+CLASS="varname"
+>COLOR</CODE
+></TH
+><TH
+>Color name</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><CODE
+CLASS="constant"
+>0</CODE
+></TD
+><TD
+>Black</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>1</CODE
+></TD
+><TD
+>Magenta</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>2</CODE
+></TD
+><TD
+>Cyan</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>4</CODE
+></TD
+><TD
+>Yellow</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>5</CODE
+></TD
+><TD
+>Alternate black (Stylus C70/C80)</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>6</CODE
+></TD
+><TD
+>Alternate black (Stylus C70/C80)</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>16</CODE
+></TD
+><TD
+>Gray (&#8220;light black&#8221;)</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>17</CODE
+></TD
+><TD
+>Light magenta</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>18</CODE
+></TD
+><TD
+>Light cyan</TD
+></TR
+></TBODY
+></TABLE
+></DIV
+><P
+>&#13; <CODE
+CLASS="varname"
+>COMPRESS</CODE
+> signifies the compression
+ mode:
+ </P
+><DIV
+CLASS="table"
+><A
+NAME="AEN876"
+></A
+><P
+><B
+>Table 5-4. Compression modes</B
+></P
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL
+WIDTH="1*"
+TITLE="id"><COL
+WIDTH="1*"
+TITLE="compression"><THEAD
+><TR
+><TH
+><CODE
+CLASS="varname"
+>COMPRESS</CODE
+></TH
+><TH
+>Compression mode</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><CODE
+CLASS="constant"
+>0</CODE
+></TD
+><TD
+>No compression</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>1</CODE
+></TD
+><TD
+>&#13; TIFF compression (incorrectly documented as
+ &#8220;run length encoded&#8221;)
+ </TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>2</CODE
+></TD
+><TD
+>&#13; TIFF compression with a special command set, or
+ &#8220;run length encoding 2&#8221; on some
+ printers.
+ </TD
+></TR
+></TBODY
+></TABLE
+></DIV
+><P
+>&#13; <CODE
+CLASS="varname"
+>BITS</CODE
+> is the number of bits per pixel.
+ </P
+><P
+>&#13; <CODE
+CLASS="varname"
+>BYTES</CODE
+> is the number of bytes wide for
+ each row (ceiling(BITS × width_of_row, 8)}). Note
+ that this is different from the <TT
+CLASS="literal"
+>ESC .</TT
+>
+ command above.
+ </P
+><P
+>&#13; <CODE
+CLASS="varname"
+>LINES</CODE
+> is the number of lines to be
+ printed. This command is the only way to get variable
+ dot size printing. In variable dot mode, the size of
+ the dots increases as the value (<CODE
+CLASS="constant"
+>1</CODE
+>,
+ <CODE
+CLASS="constant"
+>2</CODE
+>, or <CODE
+CLASS="constant"
+>3</CODE
+>)
+ increases.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC (D <CODE
+CLASS="varname"
+>BC</CODE
+>=4
+ <CODE
+CLASS="varname"
+>BASE2</CODE
+> <CODE
+CLASS="varname"
+>VERTICAL1</CODE
+>
+ <CODE
+CLASS="varname"
+>HORIZONTAL1</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set printer horizontal and vertical spacing. It only
+ applies to variable dot size printers in softweave mode
+ (and possibly other high end printers).
+ </P
+><P
+>&#13; <CODE
+CLASS="varname"
+>BASE</CODE
+> is the base unit for this
+ command; it must be <CODE
+CLASS="constant"
+>14400</CODE
+>.
+ </P
+><P
+>&#13; <CODE
+CLASS="varname"
+>VERTICAL</CODE
+> is the distance in these
+ units between printed rows; it should be
+ ((separation_in_nozzles × <CODE
+CLASS="varname"
+>BASE</CODE
+>
+ ÷ 720).
+ </P
+><P
+>&#13; <CODE
+CLASS="varname"
+>HORIZONTAL</CODE
+> is the horizontal
+ separation between dots in a row. Depending upon the
+ printer, this should be either (14400 ÷ 720) or
+ (14400 ÷ 360). The Stylus Pro 9000 manual
+ suggests that the settings should match the chosen
+ resolution, but that is apparently not the case (or not
+ always the case) on other printers.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC (R <CODE
+CLASS="varname"
+>BC</CODE
+>=8 00 R E M O T E
+ 1</TT
+></DT
+><DD
+><P
+>&#13; Enters &#8220;remote mode&#8221;. This is a special,
+ undocumented command set that is used to set up various
+ printer options, such as paper feed tray, and perform
+ utility functions such as head cleaning and alignment.
+ It does not appear that anything here is actually
+ required to make the printer print. Our best
+ understanding of what is in a remote command sequence is
+ described in a separate section below.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>ESC 01 @EJL [sp] ID\r\n</TT
+></DT
+><DD
+><P
+>&#13; Return the printer ID. This is considered a remote mode
+ command, although the syntax is that of a conventional
+ command. This returns the following information:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN937"
+></A
+><PRE
+CLASS="screen"
+>@EJL ID\r
+MFG:EPSON;
+CMD:ESCPL2,BDC;
+MDL:[printer model];
+CLS:PRINTER;
+DES:EPSON [printer model];
+\f</PRE
+><P
+></P
+></DIV
+><P
+>&#13; After all data has been sent, a form feed byte should be
+ sent.
+ </P
+></DD
+></DL
+></DIV
+><P
+>&#13; All newer Epson printers (STC 440, STP 750) require the
+ following command to be sent at least once to enable printing
+ at all. This command specifically takes the printer out of the
+ 1284.4 packet mode communication protocol and enables normal
+ data transfer. Sending it multiple times is is not harmful, so
+ it is normally sent at the beginning of each job:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN941"
+></A
+><PRE
+CLASS="screen"
+>ESC 01@EJL[space]1284.4[newline]@EJL[space][space][space][space]
+[space][newline]ESC@</PRE
+><P
+></P
+></DIV
+><P
+>&#13; The proper sequence of initialization commands is:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN944"
+></A
+><PRE
+CLASS="screen"
+>magic command
+ESC @
+remote mode if needed
+ESC (G
+ESC (U
+ESC (K (if appropriate)
+ESC (i
+ESC U (if needed)
+ESC (s (if appropriate)
+ESC (e
+ESC (C
+ESC (c
+ESC (S
+ESC (D (if needed)
+ESC (V (optional -- this can be accomplished with ESC (v)</PRE
+><P
+></P
+></DIV
+><P
+>&#13; For printing, the proper sequence is:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN947"
+></A
+><PRE
+CLASS="screen"
+>ESC (v</PRE
+><P
+></P
+></DIV
+><P
+>&#13; and repeat for each color:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN950"
+></A
+><PRE
+CLASS="screen"
+>ESC ($ or ESC (\ or ESC \
+ESC (r or ESC r (if needed---not used with "ESC i" and not needed if the color
+has not changed from the previous printed line)
+ESC . or ESC i ...data... [return] (0A hex)</PRE
+><P
+></P
+></DIV
+><P
+>&#13; To terminate a page:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN953"
+></A
+><PRE
+CLASS="screen"
+>[formfeed] (0C hex)
+ESC @</PRE
+><P
+></P
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="x271.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="x955.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>The driver file</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Remote Mode Commands</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/reference-html/c48.html b/doc/developer/reference-html/c48.html
new file mode 100644
index 0000000..3e4767b
--- /dev/null
+++ b/doc/developer/reference-html/c48.html
@@ -0,0 +1,213 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>Using libgutenprint</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Copying, modification and redistribution"
+HREF="c39.html"><LINK
+REL="NEXT"
+TITLE="Linking with libgutenprint"
+HREF="x67.html"></HEAD
+><BODY
+CLASS="chapter"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The Developer's Guide to Gutenprint</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="c39.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="x67.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="chapter"
+><H1
+><A
+NAME="AEN48"
+></A
+>Chapter 2. Using libgutenprint</H1
+><P
+>&#13; This chapter describes how to write programs that use
+ libgutenprint.
+ </P
+><DIV
+CLASS="sect1"
+><H1
+CLASS="sect1"
+><A
+NAME="AEN51"
+>2.1. Code prerequisites</A
+></H1
+><P
+>&#13; To use libgutenprint with a program, several steps must be taken:
+ </P
+><P
+></P
+><UL
+><LI
+><P
+>&#13; Include the master libgutenprint header:
+ <DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN57"
+></A
+><PRE
+CLASS="programlisting"
+>&#60;gimp-print/gimp-print.h&#62;</PRE
+><P
+></P
+></DIV
+>
+ </P
+></LI
+><LI
+><P
+>&#13; Call <CODE
+CLASS="function"
+>stp_init</CODE
+>.
+ </P
+></LI
+><LI
+><P
+>&#13; Link with the libgutenprint library.
+ </P
+></LI
+></UL
+><P
+>&#13; The following is a short example program. It does not do
+ anything useful, but it does everything required to link with
+ libgutenprint and call other functions from libgutenprint.
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN65"
+></A
+><PRE
+CLASS="programlisting"
+>#include &#60;gimp-print/gimp-print.h&#62;
+int
+main (int argc, char *argv[])
+{
+ stp_init();
+ return 0;
+}
+ </PRE
+><P
+></P
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="c39.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="x67.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Copying, modification and redistribution</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Linking with libgutenprint</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/reference-html/f14.html b/doc/developer/reference-html/f14.html
new file mode 100644
index 0000000..203891e
--- /dev/null
+++ b/doc/developer/reference-html/f14.html
@@ -0,0 +1,229 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>Preface</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="NEXT"
+TITLE="Copying, modification and redistribution"
+HREF="c39.html"></HEAD
+><BODY
+CLASS="preface"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The Developer's Guide to Gutenprint</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="index.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="c39.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="preface"
+><H1
+><A
+NAME="AEN14"
+></A
+>Preface</H1
+><P
+>&#13; Gutenprint is the print facility of the GNU Image Manipulation
+ Program (GIMP). It is in addition a suite of drivers that may be
+ used with common UNIX spooling systems using Ghostscript or CUPS.
+ These drivers provide printing quality for Linux, MacOS X and UNIX
+ on a par with proprietary vendor-supplied drivers in many cases,
+ and can be used for many of the most demanding printing tasks,
+ especially for high quality printing on modern inkjets, including
+ &#8220;photographic quality&#8221; models which offer very high
+ resolutions and several inks. The core of Gutenprint is a shared
+ library (libgutenprint) which may be used by any program that
+ wishes to produce high-quality printed output.
+ </P
+><P
+>&#13; This manual documents the use of the
+ <SPAN
+CLASS="application"
+>Gutenprint</SPAN
+> package, focusing mainly on
+ the libgutenprint library that is the core of
+ <SPAN
+CLASS="application"
+>Gutenprint</SPAN
+>. Parts of the manual which
+ describe the use of libgutenprint are aimed primarily at
+ programmers, and do assume that the reader is familiar with C
+ programming, and using standard programming tools on GNU or UNIX
+ systems.
+ </P
+><P
+>&#13; For the end-user, there is a separate manual documenting
+ programs that come with Gutenprint, including the
+ <SPAN
+CLASS="application"
+>GIMP</SPAN
+> <B
+CLASS="command"
+>print</B
+> plugin,
+ and the <SPAN
+CLASS="application"
+>CUPS</SPAN
+> and
+ <SPAN
+CLASS="application"
+>Ghostscript</SPAN
+> drivers.
+ </P
+><P
+>&#13; To learn how to use libgutenprint in your own programs is to look
+ at the source of the <B
+CLASS="command"
+>testpattern</B
+>, located in
+ <TT
+CLASS="filename"
+>src/testpattern</TT
+>, as well as
+ the source of the other programs that use libgutenprint, and
+ libgutenprint itself. Most importantly, please consult the API
+ reference and libgutenprint headers.
+ </P
+><P
+>&#13; The manual is split into several parts for the programmer. It
+ starts with a simple usage example of how to link a program with
+ libgutenprint, then how to integrate this into package build
+ scripts, using <B
+CLASS="command"
+>make</B
+>,
+ <B
+CLASS="command"
+>autoconf</B
+> and <B
+CLASS="command"
+>automake</B
+>. The
+ appendices cover the detail of the inner workings of some parts of
+ libgutenprint.
+ </P
+><P
+>&#13; The following sections detail the dither and weave algorithms used
+ in libgutenprint, the ESC/P2 printer control language used in Epson
+ printers and how to add support for a new printer to libgutenprint.
+ </P
+><P
+>&#13; <P
+CLASS="literallayout"
+>We&nbsp;hope&nbsp;you&nbsp;enjoy&nbsp;using&nbsp;Gutenprint!<br>
+&#8212;The&nbsp;Gutenprint&nbsp;project<br>
+&nbsp;&nbsp;&nbsp;&nbsp;</P
+>
+ </P
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="c39.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>The Developer's Guide to Gutenprint</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Copying, modification and redistribution</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/reference-html/index.html b/doc/developer/reference-html/index.html
new file mode 100644
index 0000000..0c894e7
--- /dev/null
+++ b/doc/developer/reference-html/index.html
@@ -0,0 +1,481 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>The Developer's Guide to Gutenprint</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="NEXT"
+TITLE="Preface"
+HREF="f14.html"></HEAD
+><BODY
+CLASS="book"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="BOOK"
+><A
+NAME="AEN1"
+></A
+><DIV
+CLASS="TITLEPAGE"
+><H1
+CLASS="title"
+><A
+NAME="AEN2"
+>The Developer's Guide to Gutenprint</A
+></H1
+><H3
+CLASS="corpauthor"
+>&#13; The Gutenprint Project
+ </H3
+><P
+CLASS="copyright"
+>Copyright &copy; 2003 The Gutenprint Project</P
+><DIV
+CLASS="legalnotice"
+><P
+></P
+><A
+NAME="AEN10"
+></A
+><P
+>&#13; 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.
+ </P
+><P
+>&#13; 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.
+ </P
+><P
+>&#13; You should have received a copy of the GNU General Public
+ License along with this program; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+ </P
+><P
+></P
+></DIV
+><HR></DIV
+><DIV
+CLASS="TOC"
+><DL
+><DT
+><B
+>Table of Contents</B
+></DT
+><DT
+><A
+HREF="f14.html"
+>Preface</A
+></DT
+><DT
+>1. <A
+HREF="c39.html"
+>Copying, modification and redistribution</A
+></DT
+><DT
+>2. <A
+HREF="c48.html"
+>Using libgutenprint</A
+></DT
+><DD
+><DL
+><DT
+>2.1. <A
+HREF="c48.html#AEN51"
+>Code prerequisites</A
+></DT
+><DT
+>2.2. <A
+HREF="x67.html"
+>Linking with libgutenprint</A
+></DT
+><DT
+>2.3. <A
+HREF="x79.html"
+>Integrating libgutenprint</A
+></DT
+><DD
+><DL
+><DT
+>2.3.1. <A
+HREF="x79.html#AEN86"
+><B
+CLASS="command"
+>pkg-config</B
+></A
+></DT
+><DT
+>2.3.2. <A
+HREF="x79.html#AEN123"
+><B
+CLASS="command"
+>make</B
+></A
+></DT
+><DT
+>2.3.3. <A
+HREF="x79.html#AEN133"
+><B
+CLASS="command"
+>autoconf</B
+></A
+></DT
+><DT
+>2.3.4. <A
+HREF="x79.html#AEN150"
+><B
+CLASS="command"
+>automake</B
+></A
+></DT
+></DL
+></DD
+></DL
+></DD
+><DT
+>3. <A
+HREF="c194.html"
+>Reporting Bugs</A
+></DT
+><DT
+>4. <A
+HREF="c200.html"
+>Adding a new printer</A
+></DT
+><DD
+><DL
+><DT
+>4.1. <A
+HREF="c200.html#AEN217"
+><TT
+CLASS="filename"
+>printers.xml</TT
+></A
+></DT
+><DT
+>4.2. <A
+HREF="x271.html"
+>The driver file</A
+></DT
+><DD
+><DL
+><DT
+>4.2.1. <A
+HREF="x271.html#AEN281"
+>Epson inkjet printers</A
+></DT
+><DT
+>4.2.2. <A
+HREF="x271.html#AEN403"
+>Tuning the printer</A
+></DT
+><DT
+>4.2.3. <A
+HREF="x271.html#AEN433"
+>Canon inkjet printers</A
+></DT
+></DL
+></DD
+></DL
+></DD
+><DT
+>5. <A
+HREF="c464.html"
+>ESC/P2</A
+></DT
+><DD
+><DL
+><DT
+>5.1. <A
+HREF="c464.html#AEN477"
+>Standard commands</A
+></DT
+><DT
+>5.2. <A
+HREF="x955.html"
+>Remote Mode Commands</A
+></DT
+><DT
+>5.3. <A
+HREF="x1669.html"
+>Appropriate Remote Commands</A
+></DT
+></DL
+></DD
+><DT
+>6. <A
+HREF="c1717.html"
+>Weaving for inkjet printers</A
+></DT
+><DD
+><DL
+><DT
+>6.1. <A
+HREF="c1717.html#AEN1719"
+>Introduction</A
+></DT
+><DT
+>6.2. <A
+HREF="x1734.html"
+>Weaving algorithms</A
+></DT
+><DD
+><DL
+><DT
+>6.2.1. <A
+HREF="x1734.html#AEN1740"
+>Simple weaving algorithms</A
+></DT
+><DT
+>6.2.2. <A
+HREF="x1734.html#AEN1757"
+>Perfect weaving</A
+></DT
+><DT
+>6.2.3. <A
+HREF="x1734.html#AEN1791"
+>Weaving collisions</A
+></DT
+><DT
+>6.2.4. <A
+HREF="x1734.html#AEN1809"
+>What makes a &#8220;perfect&#8221; weave?</A
+></DT
+><DT
+>6.2.5. <A
+HREF="x1734.html#AEN1937"
+>Oversampling</A
+></DT
+></DL
+></DD
+></DL
+></DD
+><DT
+>7. <A
+HREF="c1968.html"
+>Dithering</A
+></DT
+><DT
+>A. <A
+HREF="a2122.html"
+>GNU General Public License</A
+></DT
+><DD
+><DL
+><DT
+>A.1. <A
+HREF="a2122.html#gpl-preamble"
+>Preamble</A
+></DT
+><DT
+>A.2. <A
+HREF="x2153.html"
+>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A
+></DT
+><DD
+><DL
+><DT
+>A.2.1. <A
+HREF="x2153.html#gpl-sect0"
+>Section 0</A
+></DT
+><DT
+>A.2.2. <A
+HREF="x2153.html#gpl-sect1"
+>Section 1</A
+></DT
+><DT
+>A.2.3. <A
+HREF="x2153.html#gpl-sect2"
+>Section 2</A
+></DT
+><DT
+>A.2.4. <A
+HREF="x2153.html#gpl-sect3"
+>Section 3</A
+></DT
+><DT
+>A.2.5. <A
+HREF="x2153.html#gpl-sect4"
+>Section 4</A
+></DT
+><DT
+>A.2.6. <A
+HREF="x2153.html#gpl-sect5"
+>Section 5</A
+></DT
+><DT
+>A.2.7. <A
+HREF="x2153.html#gpl-sect6"
+>Section 6</A
+></DT
+><DT
+>A.2.8. <A
+HREF="x2153.html#gpl-sect7"
+>Section 7</A
+></DT
+><DT
+>A.2.9. <A
+HREF="x2153.html#gpl-sect8"
+>Section 8</A
+></DT
+><DT
+>A.2.10. <A
+HREF="x2153.html#gpl-sect9"
+>Section 9</A
+></DT
+><DT
+>A.2.11. <A
+HREF="x2153.html#gpl-sect10"
+>Section 10</A
+></DT
+><DT
+>A.2.12. <A
+HREF="x2153.html#gpl-sect11"
+>NO WARRANTY</A
+></DT
+><DT
+>A.2.13. <A
+HREF="x2153.html#gpl-sect12"
+>Section 12</A
+></DT
+></DL
+></DD
+></DL
+></DD
+></DL
+></DIV
+><DIV
+CLASS="LOT"
+><DL
+CLASS="LOT"
+><DT
+><B
+>List of Tables</B
+></DT
+><DT
+>5-1. <A
+HREF="c464.html#AEN728"
+>Colors</A
+></DT
+><DT
+>5-2. <A
+HREF="c464.html#AEN767"
+>Compression modes</A
+></DT
+><DT
+>5-3. <A
+HREF="c464.html#AEN827"
+>Extended Colors</A
+></DT
+><DT
+>5-4. <A
+HREF="c464.html#AEN876"
+>Compression modes</A
+></DT
+><DT
+>5-5. <A
+HREF="x955.html#AEN1015"
+>Head cleaning parameters</A
+></DT
+><DT
+>5-6. <A
+HREF="x955.html#AEN1139"
+>Media types</A
+></DT
+><DT
+>5-7. <A
+HREF="x955.html#AEN1349"
+>Printer status codes</A
+></DT
+><DT
+>5-8. <A
+HREF="x955.html#AEN1389"
+>Printer error codes</A
+></DT
+><DT
+>5-9. <A
+HREF="x955.html#AEN1454"
+>Printer additional ink codes</A
+></DT
+><DT
+>5-10. <A
+HREF="x955.html#AEN1482"
+>Printer warning codes</A
+></DT
+><DT
+>5-11. <A
+HREF="x955.html#AEN1621"
+>Paper cutting codes</A
+></DT
+><DT
+>5-12. <A
+HREF="x955.html#AEN1645"
+>Paper cutting units</A
+></DT
+></DL
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="f14.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+>&nbsp;</TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Preface</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/reference-html/x1669.html b/doc/developer/reference-html/x1669.html
new file mode 100644
index 0000000..1080dee
--- /dev/null
+++ b/doc/developer/reference-html/x1669.html
@@ -0,0 +1,348 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>Appropriate Remote Commands</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="UP"
+TITLE="ESC/P2"
+HREF="c464.html"><LINK
+REL="PREVIOUS"
+TITLE="Remote Mode Commands"
+HREF="x955.html"><LINK
+REL="NEXT"
+TITLE="Weaving for inkjet printers"
+HREF="c1717.html"></HEAD
+><BODY
+CLASS="sect1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The Developer's Guide to Gutenprint</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="x955.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+>Chapter 5. ESC/P2</TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="c1717.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="sect1"
+><H1
+CLASS="sect1"
+><A
+NAME="AEN1669"
+>5.3. Appropriate Remote Commands</A
+></H1
+><P
+>&#13; All of the remote commands described above are wrapped up with
+ the usual boilerplate. The files always start with
+ <TT
+CLASS="literal"
+>00 00 00</TT
+> and the &#8220;magic&#8221;
+ command described above, then two <TT
+CLASS="literal"
+>ESC @</TT
+>s to
+ reset the printer. The remote command sequences come next; if
+ they print anything that is usually followed by a
+ <TT
+CLASS="literal"
+>FF</TT
+> (<TT
+CLASS="literal"
+>0C</TT
+> hex) character to
+ feed the page, then the file ends with another two
+ <TT
+CLASS="literal"
+>ESC @</TT
+>s to get back to the ground state.
+ </P
+><P
+>&#13; An alignment sequence goes like this:
+ </P
+><P
+></P
+><OL
+TYPE="1"
+><LI
+><P
+>&#13; Host uses <TT
+CLASS="literal"
+>DT</TT
+> to print an alignment
+ sheet.
+ </P
+></LI
+><LI
+><P
+>&#13; User eyeballs the sheet to see which is the best aligned
+ pattern.
+ </P
+></LI
+><LI
+><P
+>&#13; Host sends a <TT
+CLASS="literal"
+>DA</TT
+> command indicating
+ which pattern the user chose.
+ </P
+></LI
+><LI
+><P
+>&#13; If the user said &#8220;realign&#8221;, meaning he isn't
+ done yet, go to step 1.
+ </P
+></LI
+><LI
+><P
+>&#13; We are done: host sends a <TT
+CLASS="literal"
+>SV</TT
+> command
+ and exits.
+ </P
+></LI
+></OL
+><P
+>&#13; The sequence used (by the STC 3000, at least) to print from
+ the roll feed is (with byte count omitted):
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1693"
+></A
+><PRE
+CLASS="screen"
+>PM 00 00
+SN 00 00 00
+EX 00 00 00 00 05 01
+ST 00 01
+SM 00 02</PRE
+><P
+></P
+></DIV
+><P
+>&#13; The sequence used by the STP 870 to print on plain paper is
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1696"
+></A
+><PRE
+CLASS="screen"
+>PM 00 00
+IR 00 03
+SN 00 00 01
+SN 00 01 00
+SN 00 02 01
+EX 00 00 00 00 05 00
+FP 00 00 00</PRE
+><P
+></P
+></DIV
+><P
+>&#13; and the job finishes with
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1699"
+></A
+><PRE
+CLASS="screen"
+>IR 00 02
+LD</PRE
+><P
+></P
+></DIV
+><P
+>&#13; For different paper type settings on the STP 870, the
+ arguments to <TT
+CLASS="literal"
+>SN</TT
+> vary. The arguments to the
+ first and third <TT
+CLASS="literal"
+>SN</TT
+> commands are as outlined
+ in the description of the <TT
+CLASS="literal"
+>SN</TT
+> command above;
+ the arguments to the second (&#8220;platen gap&#8221;) are
+ <TT
+CLASS="literal"
+>00 01 01</TT
+> for thick papers (&#8220;matte
+ paper&#8212;heavyweight&#8221;, &#8220;photo paper&#8221; and
+ &#8220;premium glossy photo paper&#8221;) and <TT
+CLASS="literal"
+>00 01
+ 00</TT
+> for all others.
+ </P
+><P
+>&#13; For roll-mode printing, the STP 870's sequence changes as
+ follows. <TT
+CLASS="literal"
+>IR</TT
+>'s arguments become <TT
+CLASS="literal"
+>00
+ 01</TT
+> in the header, and <TT
+CLASS="literal"
+>00 00</TT
+> after
+ the job, and <TT
+CLASS="literal"
+>EX</TT
+>'s last argument changes
+ from <CODE
+CLASS="constant"
+>00</CODE
+> to <CODE
+CLASS="constant"
+>01</CODE
+>.
+ </P
+><P
+>&#13; For zero-margin printing on the STP 870, the arguments to
+ <TT
+CLASS="literal"
+>FP</TT
+> become <TT
+CLASS="literal"
+>00 0xb0 0xff</TT
+>.
+ This moves the origin about 5.5mm to the left, to a point one
+ tenth of an inch to the left of the left-hand edge of the
+ paper, allowing printing right up to (and beyond) the edge of
+ the paper. Some printers (at least the STP 870) include white
+ absorbent pads at the left margin position and other positions
+ (89mm and 100mm on the STP 870) to soak up ink which misses
+ the edge of the paper. Printing off the edge of paper of a
+ width not aligned with a pad could result in making a mess of
+ the inside of the printer and ink getting on the reverse of
+ the paper.
+ </P
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="x955.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="c1717.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Remote Mode Commands</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="c464.html"
+ACCESSKEY="U"
+>Up</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Weaving for inkjet printers</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/reference-html/x1734.html b/doc/developer/reference-html/x1734.html
new file mode 100644
index 0000000..8c52bfd
--- /dev/null
+++ b/doc/developer/reference-html/x1734.html
@@ -0,0 +1,1922 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>Weaving algorithms</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="UP"
+TITLE="Weaving for inkjet printers"
+HREF="c1717.html"><LINK
+REL="PREVIOUS"
+TITLE="Weaving for inkjet printers"
+HREF="c1717.html"><LINK
+REL="NEXT"
+TITLE="Dithering"
+HREF="c1968.html"></HEAD
+><BODY
+CLASS="sect1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The Developer's Guide to Gutenprint</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="c1717.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+>Chapter 6. Weaving for inkjet printers</TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="c1968.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="sect1"
+><H1
+CLASS="sect1"
+><A
+NAME="AEN1734"
+>6.2. Weaving algorithms</A
+></H1
+><P
+>&#13; I considered a few algorithms to perform the weave. The first
+ one I devised let me use only (jets &#8722;
+ distance_between_jets + 1) nozzles, or 25. This is OK in
+ principle, but it's slower than using all nozzles. By playing
+ around with it some more, I came up with an algorithm that lets
+ me use all of the nozzles, except near the top and bottom of the
+ page.
+ </P
+><P
+>&#13; This still produces some banding, though. Even better quality
+ can be achieved by using multiple nozzles on the same line. How
+ do we do this? In 1440×720 mode, we're printing two
+ output lines at the same vertical position. However, if we want
+ four passes, we have to effectively print each line twice.
+ Actually doing this would increase the density, so what we do is
+ print half the dots on each pass. This produces near-perfect
+ output, and it's far faster than using (pseudo)
+ &#8220;MicroWeave&#8221;.
+ </P
+><P
+>&#13; Yet another complication is how to get near the top and bottom
+ of the page. This algorithm lets us print to within one head
+ width of the top of the page, and a bit more than one head width
+ from the bottom. That leaves a lot of blank space. Doing the
+ weave properly outside of this region is increasingly difficult
+ as we get closer to the edge of the paper; in the interior
+ region, any nozzle can print any line, but near the top and
+ bottom edges, only some nozzles can print. We originally
+ handled this by using the naive way mentioned above near the
+ borders, and switching over to the high quality method in the
+ interior. Unfortunately, this meant that the quality is quite
+ visibly degraded near the top and bottom of the page. We have
+ since devised better algorithms that allow printing to the
+ extreme top and bottom of the region that can physically be
+ printed, with only minimal loss of quality.
+ </P
+><P
+>&#13; Epson does not advertise that the printers can print at the very
+ top of the page, although in practice most of them can. The
+ quality is degraded to some degree, and we have observed that in
+ some cases not all of the dots get printed. Epson may have
+ decided that the degradation in quality is sufficient that
+ printing in that region should not be allowed. That is a valid
+ decision, although we have taken another approach.
+ </P
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="AEN1740"
+>6.2.1. Simple weaving algorithms</A
+></H2
+><P
+>&#13; The initial problem is to calculate the starting position of
+ each pass; the row number of the printer's top jet when
+ printing that pass. Since we assume the paper cannot be
+ reverse-fed, the print head must, for each pass, start
+ either further down the page than the previous pass or at
+ the same position. Each pass's start point is therefore at
+ a non-negative offset from the previous pass's start point.
+ </P
+><P
+>&#13; Once we have a formula for the starting row of each pass, we
+ then turn that &#8220;inside out&#8221; to get a formula for
+ the pass number containing each row.
+ </P
+><P
+>&#13; First, let's define how our printer works. We measure
+ vertical position on the paper in &#8220;rows&#8221;; the
+ resolution with which the printer can position the paper
+ vertically. The print head contains J ink jets, which are
+ spaced S rows apart.
+ </P
+><P
+>&#13; Consider a very simple case: we want to print a page as
+ quickly as possible, and we mostly don't care how sparse the
+ printing is, so long as it's fairly even.
+ </P
+><P
+>&#13; It's pretty obvious how to do this. We make one pass with
+ the print head, printing J lines of data, each line S rows
+ after the previous one. We then advance the paper by S
+ × J rows and print the next row. For example, if J =
+ 7 and S = 4, this method can be illustrated like this:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1747"
+></A
+><PRE
+CLASS="screen"
+>pass number
+| row number-------&#62;
+| | 111111111122222222223333333333444444444455555555556666666666
+| 0123456789012345678901234567890123456789012345678901234567890123456789
+0 *---*---*---*---*---*---*
+1 *---*---*---*---*---*---*
+2 \-----------------------/ *---*---*---*---*---*-
+ 7 jets \---/
+ 4 rows offset from one jet to the next
+\---------------------------/
+ 7*4=28 rows offset from one pass to the next</PRE
+><P
+></P
+></DIV
+><P
+>&#13; In these examples, the vertical axis can be thought of as the
+ time axis, with the pass number shown at the left margin,
+ while the row number runs horizontally. A
+ <SAMP
+CLASS="computeroutput"
+>*</SAMP
+> shows each row printed by a
+ pass, and a row of <SAMP
+CLASS="computeroutput"
+>-</SAMP
+> is used
+ to link together the rows printed by one pass of the print
+ head. The first pass is numbered
+ <SAMP
+CLASS="computeroutput"
+>0</SAMP
+> and starts at row 0. Each
+ subsequent pass p starts at row p × S × J. Each
+ pass prints J lines, each line being S rows after the previous
+ one. (For ease of viewing this file on a standard terminal,
+ I'm clipping the examples at column 80.)
+ </P
+><P
+>&#13; This method covers the whole page with lines printed evenly
+ S rows apart. However, we want to fill in all the other
+ rows with printing to get a full-density page (we're
+ ignoring oversampling at this stage). Where we have
+ previously printed a single pass, we'll now print a
+ &#8220;pass block&#8221;: we print extra passes to fill in
+ the empty rows. A naive implementation might look like
+ this:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1754"
+></A
+><PRE
+CLASS="screen"
+>0 *---*---*---*---*---*---*
+1 *---*---*---*---*---*---*
+2 *---*---*---*---*---*---*
+3 *---*---*---*---*---*---*
+4 *---*---*---*---*---*---*
+5 *---*---*---*---*---*---*
+6 *---*---*---*---*---*---*
+7 *---*---*---*---*---*---*
+8 *---*---*---*---*---*-
+9 *---*---*---*---*---*
+10 *---*---*---*---*---
+11 *---*---*---*---*--</PRE
+><P
+></P
+></DIV
+><P
+>&#13; (Now you can see why this process is called
+ &#8220;weaving&#8221;!)
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="AEN1757"
+>6.2.2. Perfect weaving</A
+></H2
+><P
+>&#13; This simple weave pattern prints every row, but will give
+ conspicuous banding patterns for the reasons discussed
+ above.
+ </P
+><P
+>&#13; Let's start improving this for our simple case. We can
+ reduce banding by making sure that any given jet never
+ prints a row too close to another row printed by the same
+ jet. This means we want to space the rows printed by a
+ given jet evenly down the page. In turn, this implies we
+ want to advance the paper by as nearly an equal amount after
+ each pass as possible.
+ </P
+><P
+>&#13; Each pass block prints S × J lines in S passes. The
+ first line printed in each pass block is S × J rows
+ lower on the page than the first line printed in the
+ previous pass block. Therefore, if we advance the paper by
+ J rows between each pass, we can print the right number of
+ passes in each block and advance the paper perfectly evenly.
+ </P
+><P
+>&#13; Here's what this &#8220;perfect&#8221; weave looks like:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1763"
+></A
+><PRE
+CLASS="screen"
+> start of full weave
+ |
+0 *---*---*---*---*---*---*
+1 *---*---*---*---*---*---*
+2 *---*---*---*---*---*---*
+3 *---*---*---*---*---*---*
+4 *---*---*---*---*---*---*
+5 *---*---*---*---*---*---*
+6 *---*---*---*---*---*---*
+7 *---*---*---*---*---*---*
+8 *---*---*---*---*---*-
+9 *---*---*---*--
+10 *---*---
+11 *</PRE
+><P
+></P
+></DIV
+><P
+>&#13; You'll notice that, for the first few rows, this weave is
+ too sparse. It is not until the row marked &#8220;start of
+ full weave&#8221; that every subsequent row is printed. We
+ can calculate this start position as follows:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1766"
+></A
+><PRE
+CLASS="screen"
+>start = (S &#8722; 1) × (J &#8722; 1)</PRE
+><P
+></P
+></DIV
+><P
+>&#13; For the moment, we will ignore this problem with the weave.
+ We'll consider later how to fill in the missing rows.
+ </P
+><P
+>&#13; Let's look at a few more examples of perfect weaves:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1770"
+></A
+><P
+>&#13; S = 2, J = 7, start = (2&#8722;1) × (7&#8722;1) = 6:
+ </P
+><PRE
+CLASS="screen"
+> starting row of full weave
+ |
+0 *-*-*-*-*-*-*
+1 *-*-*-*-*-*-*
+2 *-*-*-*-*-*-*
+3 *-*-*-*-*-*-*
+4 *-*-*-*-*-*-*
+5 *-*-*-*-*-*-*
+6 *-*-*-*-*-*-*
+7 *-*-*-*-*-*-*</PRE
+><P
+></P
+></DIV
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1773"
+></A
+><P
+>&#13; S = 7, J = 2, start = 6:
+ </P
+><PRE
+CLASS="screen"
+> start
+ |
+0 *------*
+1 *------*
+2 *------*
+3 *------*
+4 *------*
+5 *------*
+6 *------*
+7 *------*
+8 *------*
+9 *------*</PRE
+><P
+></P
+></DIV
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1776"
+></A
+><P
+>&#13; S = 4, J = 13, start = 36:
+ </P
+><PRE
+CLASS="screen"
+> start
+ |
+0 *---*---*---*---*---*---*---*---*---*---*---*---*
+1 *---*---*---*---*---*---*---*---*---*---*---*---*
+2 *---*---*---*---*---*---*---*---*---*---*---*---*
+3 *---*---*---*---*---*---*---*---*---*--
+4 *---*---*---*---*---*---*-
+5 *---*---*---*</PRE
+><P
+></P
+></DIV
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1779"
+></A
+><P
+>&#13; S = 13, J = 4, start = 36:
+ </P
+><PRE
+CLASS="screen"
+> start
+ |
+0 *------------*------------*------------*
+1 *------------*------------*------------*
+2 *------------*------------*------------*
+3 *------------*------------*------------*
+4 *------------*------------*------------*
+5 *------------*------------*------------*
+6 *------------*------------*------------*
+7 *------------*------------*------------*
+8 *------------*------------*------------*
+9 *------------*------------*------------*
+10 *------------*------------*-----------
+11 *------------*------------*-------
+12 *------------*------------*---
+13 *------------*------------
+14 *------------*--------
+15 *------------*----
+16 *------------*
+17 *---------
+18 *-----
+19 *-</PRE
+><P
+></P
+></DIV
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1782"
+></A
+><P
+>&#13; S = 8, J = 5, start = 28:
+ </P
+><PRE
+CLASS="screen"
+> start
+ |
+0 *-------*-------*-------*-------*
+1 *-------*-------*-------*-------*
+2 *-------*-------*-------*-------*
+3 *-------*-------*-------*-------*
+4 *-------*-------*-------*-------*
+5 *-------*-------*-------*-------*
+6 *-------*-------*-------*-------*
+7 *-------*-------*-------*-------*
+8 *-------*-------*-------*-------*
+9 *-------*-------*-------*-------*
+10 *-------*-------*-------*---
+11 *-------*-------*------
+12 *-------*-------*-
+13 *-------*----
+14 *-------
+15 *--</PRE
+><P
+></P
+></DIV
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1785"
+></A
+><P
+>&#13; S = 9, J = 5, start = 32:
+ </P
+><PRE
+CLASS="screen"
+> start
+ |
+0 *--------*--------*--------*--------*
+1 *--------*--------*--------*--------*
+2 *--------*--------*--------*--------*
+3 *--------*--------*--------*--------*
+4 *--------*--------*--------*--------*
+5 *--------*--------*--------*--------*
+6 *--------*--------*--------*--------*
+7 *--------*--------*--------*--------*
+8 *--------*--------*--------*--------*
+9 *--------*--------*--------*-----
+10 *--------*--------*--------*
+11 *--------*--------*----
+12 *--------*--------
+13 *--------*---
+14 *-------
+15 *--</PRE
+><P
+></P
+></DIV
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1788"
+></A
+><P
+>&#13; S = 6, J = 7, start = 30:
+ </P
+><PRE
+CLASS="screen"
+> start
+ |
+0 *-----*-----*-----*-----*-----*-----*
+1 *-----*-----*-----*-----*-----*-----*
+2 *-----*-----*-----*-----*-----*-----*
+3 *-----*-----*-----*-----*-----*-----*
+4 *-----*-----*-----*-----*-----*-----*
+5 *-----*-----*-----*-----*-----*-----*
+6 *-----*-----*-----*-----*-----*-----
+7 *-----*-----*-----*-----*----
+8 *-----*-----*-----*---
+9 *-----*-----*--
+10 *-----*-
+11 *</PRE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="AEN1791"
+>6.2.3. Weaving collisions</A
+></H2
+><P
+>&#13; A perfect weave is not possible in all cases. Let's look at
+ another example:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1794"
+></A
+><P
+>&#13; S = 6, J = 4:
+ </P
+><PRE
+CLASS="screen"
+>0 *-----*-----*-----*
+1 *-----*-----*-----*
+2 *-----*-----*-----*
+3 *-----*-----*-----*
+4 ^ *-^---*-----*-----*
+5 | ^ | *-^---*-----*-----*
+ OUCH! ^ | ^
+ | |</PRE
+><P
+></P
+></DIV
+><P
+>&#13; Here we have a collision. Some lines printed in later
+ passes overprint lines printed by earlier passes. We can
+ see why by considering which row number is printed by a
+ given jet number j (numbered from 0) of a given pass, p:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1798"
+></A
+><PRE
+CLASS="screen"
+>row(p, j) = (p × J) + (j × S)</PRE
+><P
+></P
+></DIV
+><P
+>&#13; Because J = 4 and S = 6 have a common factor of 2, jet 2 of
+ pass 0 prints the same row as jet 0 of pass 3:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1801"
+></A
+><PRE
+CLASS="screen"
+>row(0, 2) = (0 × 4) + (2 × 6) = 12
+row(3, 0) = (3 × 4) + (0 × 6) = 12</PRE
+><P
+></P
+></DIV
+><P
+>&#13; In fact, with this particular weave pattern, jets 0 and 1 of
+ pass p + 3 always overprint jets 2 and 3 of pass p. We'll
+ represent overprinting rows by a
+ <SAMP
+CLASS="computeroutput"
+>^</SAMP
+> in our diagrams, and
+ correct rows by <SAMP
+CLASS="computeroutput"
+>*</SAMP
+>:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1806"
+></A
+><P
+>&#13; S = 6, J = 4:
+ </P
+><PRE
+CLASS="screen"
+>0 *-----*-----*-----*
+1 *-----*-----*-----*
+2 *-----*-----*-----*
+3 ^-----^-----*-----*
+4 ^-----^-----*-----*
+5 ^-----^-----*-----*</PRE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="AEN1809"
+>6.2.4. What makes a &#8220;perfect&#8221; weave?</A
+></H2
+><P
+>&#13; So what causes the perfect weave cases to be perfect, and
+ the other cases not to be? In all the perfect cases above,
+ S and J are relatively prime (i.e. their greatest common
+ divisor (GCD) is 1). As we mentioned above, S = 6 and J = 4
+ have a common factor, which causes the overprinting. Where
+ S and J have a GCD of 1, they have no common factor other
+ than 1 and, as a result, no overprinting occurs. If S and J
+ are not relatively prime, their common factor will cause
+ overprinting.
+ </P
+><P
+>&#13; We can work out the greatest common divisor of a pair of
+ natural numbers using Euler's algorithm:
+ </P
+><P
+></P
+><OL
+TYPE="1"
+><LI
+><P
+>&#13; Start with the two numbers: (e.g.) 9, 24
+ </P
+></LI
+><LI
+><P
+>&#13; Swap them if necessary so that the larger one comes
+ first: 24, 9
+ </P
+></LI
+><LI
+><P
+>&#13; Subtract the second number from the first: 15, 9
+ </P
+></LI
+><LI
+><P
+>&#13; Repeat until the first number becomes smaller: 6, 9
+ </P
+></LI
+><LI
+><P
+>&#13; Swap the numbers again, so the larger one comes first:
+ 9, 6
+ </P
+></LI
+><LI
+><P
+>&#13; Subtract again: 3, 6
+ </P
+></LI
+><LI
+><P
+>&#13; Swap: 6, 3
+ </P
+></LI
+><LI
+><P
+>&#13; Subtract: 3, 3
+ </P
+></LI
+><LI
+><P
+>&#13; And again: 0, 3
+ </P
+></LI
+><LI
+><P
+>&#13; When one of the numbers becomes 0, the other number is
+ the GCD of the two numbers you started with.
+ </P
+></LI
+></OL
+><P
+>&#13; These repeated subtractions can be done with C's <TT
+CLASS="literal"
+>%</TT
+>
+ operator, so we can write this in C as follows:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1836"
+></A
+><PRE
+CLASS="programlisting"
+>unsigned int
+gcd(unsigned int x, unsigned int y)
+{
+ if (y == 0)
+ return x;
+ while (x != 0) {
+ if (y &#62; x)
+ swap (&#38;x, &#38;y);
+ x %= y;
+ }
+ return y;
+}</PRE
+><P
+></P
+></DIV
+><P
+>&#13; <TT
+CLASS="literal"
+>gcd(S,J)</TT
+> will feature quite prominently in our
+ weaving algorithm.
+ </P
+><P
+>&#13; If 0 &#8804; j &#60; J, there should only be a single pair (p, j)
+ for any given row number. If S and J are not relatively
+ prime, this assumption breaks down. (For conciseness, let G
+ = GCD(S,J).)
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1841"
+></A
+><P
+>&#13; S = 8, J = 6, G = 2:
+ </P
+><PRE
+CLASS="screen"
+>0 *-------*-------*-------*-------*-------*
+1 *-------*-------*-------*-------*-------*
+2 *-------*-------*-------*-------*-------*
+3 *-------*-------*-------*-------*-------*
+4 ^-------^-------^-------*-------*-------*
+5 ^-------^-------^-------*-------*-------*</PRE
+><P
+></P
+></DIV
+><P
+>&#13; In this case, jets 0, 1 and 2 of pass p + 4 collide with
+ jets 3, 4 and 5 of pass p.
+ </P
+><P
+>&#13; How can we calculate these numbers? Suppose we were to
+ print using fewer jets, say J / G jets. The greatest common
+ divisor of J / G and S is 1, enabling a perfect weave. But
+ to get a perfect weave, we also have to advance the paper by
+ a factor of G less:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1846"
+></A
+><PRE
+CLASS="screen"
+>0 *-------*-------* - - -
+1 *-------*-------* - - -
+2 *-------*-------* - - -
+3 *-------*-------* - - -
+4 *-------*-------* - - -
+5 *-------*-------* - - -</PRE
+><P
+></P
+></DIV
+><P
+>&#13; If we left the paper advance alone, we'd get a sparse weave;
+ only one row can be printed every G rows:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1849"
+></A
+><PRE
+CLASS="screen"
+>0 *-------*-------* - - -
+1 *-------*-------* - - -
+2 *-------*-------* - - -
+3 *-------*-------* - - -
+4 *-------*-------* - - -
+5 *-------*-------* - - -
+ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
+ These rows need filling in.</PRE
+><P
+></P
+></DIV
+><P
+>&#13; The rows that would have been printed by the jets we've now
+ omitted (shown as <SAMP
+CLASS="computeroutput"
+>-</SAMP
+>) are
+ printed by other jets on later passes.
+ </P
+><P
+>&#13; Let's analyse this. Consider how a pass p could collide
+ with pass 0. Pass p starts at offset p × J. Pass 0
+ prints at rows which are multiples of S. If p × J is
+ exactly divisible by S, a collision has occurred, unless (p
+ ×J) &#8805; J × S (which will happen when we
+ finish a pass block).
+ </P
+><P
+>&#13; So, we want to find p and q such that p × J = q
+ × S and p is minimised. Then p is the number of rows
+ before a collision, and q is the number of jets in pass 0
+ which are not involved in the collision. To do this, we
+ find the lowest common multiple of J and S, which is L = (J
+ × S) / G. L / J is the number of rows before a
+ collision, and L / S is the number of jets in the first pass
+ not involved in the collision.
+ </P
+><P
+>&#13; Thus, we see that the first J / G rows printed by a given
+ pass are not overprinted by any later pass. However, the
+ rest of the rows printed by pass p are overprinted by the
+ first J &#8722; (J / G) jets of pass p + (S / G). We will
+ use C to refer to S / G, the number of rows after which a
+ collision occurs.
+ </P
+><P
+>&#13; Another example:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1857"
+></A
+><P
+>&#13; S = 6, J = 9, G = 3, C = S / G = 2:
+ </P
+><PRE
+CLASS="screen"
+>0 *-----*-----*-----*-----*-----*-----*-----*-----*
+1 *-----*-----*-----*-----*-----*-----*-----*-----*
+2 ^-----^-----^-----^-----^-----^-----*-----*-----*
+3 ^-----^-----^-----^-----^-----^-----*-----*-----*
+4 ^-----^-----^-----^-----^-----^-----*-----
+5 ^-----^-----^-----^-----^-----^--
+ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^
+ These rows need filling in.</PRE
+><P
+></P
+></DIV
+><P
+>&#13; In this case, the first J &#8722; (J / G) = 9 &#8722; (9 /
+ 3) = 6 jets of pass p + (6 / 3) = p + 2 collide with the
+ last 6 jets of pass p. Only one row in every G = 2 rows is
+ printed by this weave.
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1861"
+></A
+><P
+>&#13; S = 9, J = 6, G = 3, C = 3:
+ </P
+><PRE
+CLASS="screen"
+>&#13;0 *--------*--------*--------*--------*--------*
+1 *--------*--------*--------*--------*--------*
+2 *--------*--------*--------*--------*--------*
+3 ^--------^--------^--------^--------*--------*
+4 ^--------^--------^--------^--------*--------*
+5 ^--------^--------^--------^--------*--------*</PRE
+><P
+>&#13; Here, the first J - (J / G) = 6 - (6 / 3) = 4 jets of pass
+ p + (9 / 3) = p + 3 collide with the last 4 jets of pass
+ p.
+ </P
+><P
+>&#13; Note that, in these overprinting cases, only rows
+ divisible by G are ever printed. The other rows, those
+ not divisible by G, are not touched by this weave.
+ </P
+><P
+>&#13; We can modify our weave pattern to avoid overprinting any
+ rows and simultaneously fill in the missing rows. Instead
+ of using J alone to determine the start of each pass from
+ the previous pass, we adjust the starting position of some
+ passes. As mentioned before, we will divide the page into
+ pass blocks, with S passes in each block. This ensures
+ that the first jet of the first pass in a block prints the
+ row which the Jth jet of the first pass of the previous
+ block would have printed, if the print head had one extra
+ jet.
+ </P
+><P
+>&#13; Looking back at an example of a perfect weave, we can
+ divide it into pass blocks:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1868"
+></A
+><P
+>&#13; S = 7, J = 2, G = 1:
+ </P
+><PRE
+CLASS="screen"
+> imaginary extra jet
+ |
+0 *------* * &#60;--start of pass block 0
+1 *------* |
+2 *------* |
+3 *------*|
+4 *-----|*
+5 *---|--*
+6 *-|----*
+ |
+7 *------* &#60;--start of pass block 1
+8 *------*
+9 *------*</PRE
+><P
+></P
+></DIV
+><P
+>&#13; We can now calculate the start of a given pass by
+ reference to its pass block. The first pass of pass block
+ b always starts at row (b × S × J). The start
+ row of each of the other passes in the block are
+ calculated using offsets from this row.
+ </P
+><P
+>&#13; For the example above, there are 7 passes in each pass
+ block, and their offsets are 0, 2, 4, 6, 8, 10 and 12.
+ The next pass block is offset S × J = 14 rows from
+ the start of the current pass block.
+ </P
+><P
+>&#13; The simplest way to modify the &#8220;perfect&#8221; weave
+ pattern to give a correct weave in cases where G &#8800; 1
+ is to simply change any offsets which would result in a
+ collision, until the collision disappears. Every printed
+ row in the weave, as we have shown it up to now, is
+ separated from each of its neighbouring printed rows by G
+ blank rows. We will add an extra offset to each colliding
+ pass in such a way that we push the pass onto these
+ otherwise blank rows.
+ </P
+><P
+>&#13; We have seen that, unless G = 1, the plain weave pattern
+ results in each pass colliding with the pass S / G passes
+ before. We will now subdivide our pass block into
+ subblocks, each consisting of B = S / G passes. There are
+ therefore G subblocks in a pass block.
+ </P
+><P
+>&#13; For each subblock, the passes in that subblock have a
+ constant offset added to them. The offset is different
+ for each subblock in a block. There are many ways we can
+ choose the offsets, but the simplest is to make the offset
+ equal to the subblock number (starting from 0).
+ </P
+><P
+>&#13; Thus, the passes in the first subblock in each pass block
+ remain at the offsets we've already calculated from J.
+ The passes in the second subblock each have 1 added to
+ their offset, the passes in the third subblock have 2
+ added, and so on. Thus, the offset of pass p (numbered
+ relative to the start of its pass block) is p × J +
+ floor(p / B).
+ </P
+><P
+>&#13; This gives us a weave pattern looking like this:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1878"
+></A
+><P
+>&#13; S = 6, J = 9, G = 3, B = 2:
+ </P
+><PRE
+CLASS="screen"
+>0 *-----*-----*-----*-----*-----*-----*-----*-----*
+1 ^ *-----*-----*-----*-----*-----*-----*-----*-----*
+2 | +-&#62; *-----*-----*-----*-----*-----*-----*-----*-----*
+3 | | *-----*-----*-----*-----*-----*-----*-----*-----*
+4 | | +-&#62; *-----*-----*-----*-----*-----*-----*---
+5 | | | *-----*-----*-----*-----*-----*
+6 | | | +-&#62; *-----*-----*-----*-----
+7 | | | | *-----*-----*--
+ | | | start of pass block 1
+ | | | (offset returns to 0)
+ | | start of subblock 2 (offset 2 rows)
+ | start of subblock 1 (following passes offset by 1 row)
+start of passblock 0, subblock 0 (pass start calculated as p*J)</PRE
+><P
+></P
+></DIV
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1881"
+></A
+><P
+>&#13; S = 9, J = 6, G = 3, B = 3:
+ </P
+><PRE
+CLASS="screen"
+>0 *--------*--------*--------*--------*--------*
+1 *--------*--------*--------*--------*--------*
+2 *--------*--------*--------*--------*--------*
+3 *--------*--------*--------*--------*--------*
+4 *--------*--------*--------*--------*--------*
+5 *--------*--------*--------*--------*--------*
+6 *--------*--------*--------*--------*---
+7 *--------*--------*--------*------
+8 *--------*--------*--------*
+9 *--------*--------*-----
+10 \---/ *--------*--------
+11 small offset *--------*--
+12 *----</PRE
+><P
+></P
+></DIV
+><P
+>&#13; This method of choosing offsets for subblocks can result
+ in an occasional small offset (as shown above) between one
+ pass and the next, particularly when G is large compared
+ to J. For example:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1885"
+></A
+><P
+>&#13; S = 8, J = 4, G = 4, B = 2:
+ </P
+><PRE
+CLASS="screen"
+>0 *-------*-------*-------*
+1 *-------*-------*-------*
+2 *-------*-------*-------*
+3 *-------*-------*-------*
+4 *-------*-------*-------*
+5 *-------*-------*-------*
+6 *-------*-------*-------*
+7 *-------*-------*-------*
+8 *-------*-------*-------*
+9 \/ *-------*-------*-------*
+ very small offset!</PRE
+><P
+></P
+></DIV
+><P
+>&#13; We can plot the offset against the subblock number as
+ follows:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1889"
+></A
+><PRE
+CLASS="screen"
+>subblock number
+| offset
+| |
+| 0123
+0 *
+1 *
+2 *
+3 *
+0 *
+1 *
+2 *
+3 *</PRE
+><P
+></P
+></DIV
+><P
+>&#13; The discontinuity in this plot results in the small offset
+ between passes.
+ </P
+><P
+>&#13; As we said at the beginning, we want the offsets from each
+ pass to the next to be as similar as possible. We can fix
+ this by calculating the offset for a given subblock b as
+ follows:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1893"
+></A
+><PRE
+CLASS="screen"
+>offset(b) = 2*b , if b &#60; ceiling(G/2)
+ = 2*(G-b)-1 , otherwise</PRE
+><P
+></P
+></DIV
+><P
+>&#13; We can visualise this as follows, for G = 10:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1896"
+></A
+><PRE
+CLASS="screen"
+>0123456789
+0 *
+1 *
+2 *
+3 *
+4 *
+5 *
+6 *
+7 *
+8 *
+9 *
+0 *
+1 *
+2 *
+3 *
+4 *
+5 *
+6 *
+7 *
+8 *
+9 *</PRE
+><P
+></P
+></DIV
+><P
+>&#13; and for G = 11:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1899"
+></A
+><PRE
+CLASS="screen"
+> 1
+ 01234567890
+ 0 *
+ 1 *
+ 2 *
+ 3 *
+ 4 *
+ 5 *
+ 6 *
+ 7 *
+ 8 *
+ 9 *
+10 *
+ 0 *
+ 1 *
+ 2 *
+ 3 *
+ 4 *
+ 5 *
+ 6 *
+ 7 *
+ 8 *
+ 9 *
+10 *</PRE
+><P
+></P
+></DIV
+><P
+>&#13; This gives a weave looking like this:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1902"
+></A
+><P
+>&#13; S = 12, J = 6, G = 6, B = 2:
+ </P
+><PRE
+CLASS="screen"
+>0 *-----------*-----------*-----------*-----------*-----------*
+1 *-----------*-----------*-----------*-----------*-----------*
+2 *-----------*-----------*-----------*-----------*-----------*
+3 *-----------*-----------*-----------*-----------*---------
+4 *-----------*-----------*-----------*-----------*-
+5 *-----------*-----------*-----------*-------
+6 *-----------*-----------*-----------*
+7 *-----------*-----------*------
+8 *-----------*-----------*--
+9 *-----------*--------
+10 *-----------*----
+11 *----------
+12 *-----</PRE
+><P
+></P
+></DIV
+><P
+>&#13; This method ensures that the offset between passes is
+ always in the range [J - 2, J + 2].
+ </P
+><P
+>&#13; (This might seem odd, but it occurs to me that a good
+ weave pattern might also make a good score for bell
+ ringers. When church bells are rung, a list of
+ &#8220;changes&#8221; are used. For example, if 8 bells
+ are being used, they will, at first, be rung in order:
+ 12345678. If the first change is for bells 5 and 6, the
+ bells will then be rung in the order 12346578. If the
+ second change is 1 and 2, the next notes are 21346578.
+ After a long list of changes, the order the bells are rung
+ in can become quite complex.
+ </P
+><P
+>&#13; For a group of bell-ringers to change the order of the
+ notes, they must each either delay their bell's next ring,
+ hasten it, or keep it the same as the time it takes to
+ ring all the bells once. The length of time between each
+ ring of a given bell can only be changed a little each
+ time, though; with an ink-jet weave pattern, we want the
+ same to apply to the distance between passes.)
+ </P
+><P
+>&#13; Finally, knowing the number of jets J and their separation
+ S, we can calculate the starting row of any given pass p
+ as follows:
+ <DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1909"
+></A
+><PRE
+CLASS="screen"
+>passesperblock = S
+passblock = floor(p / passesperblock)
+offsetinpassblock = p - passblock * passesperblock
+subblocksperblock = gcd(S, J)
+passespersubblock = S / subblocksperblock
+subpassblock = floor(offsetinpassblock / passespersubblock)
+if subpassblock &#60; ceiling(subblocksperblock/2)
+ subblockoffset = 2*subpassblock
+else
+ subblockoffset = 2*(subblocksperblock-subpassblock)-1
+startingrow = passblock * S * J + offsetinpassblock * J + subblockoffset</PRE
+><P
+></P
+></DIV
+>
+ </P
+><P
+>&#13; We can simplify this down to the following:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1912"
+></A
+><PRE
+CLASS="screen"
+>subblocksperblock = gcd(S, J)
+subpassblock = floor((p % S) * subblocksperblock / S)
+if subpassblock * 2 &#60; subblocksperblock
+ subblockoffset = 2*subpassblock
+else
+ subblockoffset = 2*(subblocksperblock-subpassblock)-1
+startingrow = p * J + subblockoffset</PRE
+><P
+></P
+></DIV
+><P
+>&#13; So the row number of jet j of pass p is
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1915"
+></A
+><PRE
+CLASS="screen"
+>subblocksperblock = gcd(S, J)
+
+subblockoffset(p)
+ = 2*subpassblock , if subpassblock * 2 &#60; subblocksperblock
+ = 2*(subblocksperblock-subpassblock)-1 , otherwise
+ where
+ subpassblock = floor((p % S) * subblocksperblock / S)
+
+row(j, p) = p * J + subblockoffset(p) + j * S</PRE
+><P
+></P
+></DIV
+><P
+>&#13; Together with the inequality 0 &#8804; j &#60; J, we can use
+ this definition in reverse to calculate the pass number
+ containing a given row, r. Working out the inverse
+ definition involves a little guesswork, but one possible
+ result is as follows. Given a row, r, which is known to
+ be the first row of a pass, we can calculate the pass
+ number as follows:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1918"
+></A
+><PRE
+CLASS="screen"
+>subblocksperblock = gcd(S, J)
+subblockoffset = r % subblocksperblock
+pass = (r - subblockoffset) / J</PRE
+><P
+></P
+></DIV
+><P
+>&#13; If G = 1, we can determine the pass number with this
+ algorithm:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1921"
+></A
+><PRE
+CLASS="screen"
+>offset = r % J
+pass = (r - offset) / J
+while (offset % S != 0)
+{
+pass--
+offset += J
+}
+jet = offset / S</PRE
+><P
+></P
+></DIV
+><P
+>&#13; Generalising, we come up with this algorithm. Given r, S
+ and J:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1924"
+></A
+><PRE
+CLASS="screen"
+>G = gcd(S, J)
+passespersubblock = S/G
+subblockoffset = r % G
+subpassblock = subblockoffset / 2 , if subblockoffset % 2 == 0
+ = G - (subblockoffset+1)/2 , otherwise
+baserow = r - subblockoffset - (subpassblock * passespersubblock * J)
+offset = baserow % J
+pass = (baserow - offset) / J
+while (offset % S != 0)
+{
+offset += J
+pass -= 1
+}
+subblockretreat = floor(pass / passespersubblock) % G
+pass -= subblockretreat * passespersubblock
+pass += subpassblock * passespersubblock
+jet = (r - subblockoffset - pass * J) / S</PRE
+><P
+></P
+></DIV
+><P
+>&#13; Let's look at some examples of imperfect but correct weave
+ patterns:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1927"
+></A
+><P
+>&#13; S = 6, J = 4, GCD = 2,
+ passesperblock = S = 6,
+ passespersubblock = S / G = 6 / 2 = 3:
+ </P
+><PRE
+CLASS="screen"
+>0 *-----*-----*-----*
+1 *-----*-----*-----*
+2 *-----*-----*-----*
+3 *-----*-----*-----*
+4 *-----*-----*-----*
+5 *-----*-----*-----*
+6 *-----*-----*-----*
+7 *-----*-----*-----*
+8 *-----*-----*-----*
+9 *-----*-----*-----*
+10 *-----*-----*-----*
+11 *-----*-----*-----*
+12 *-----*-----*-----*
+13 *-----*-----*-----*
+14 *-----*-----*-----*
+15 *-----*-----*----
+16 *-----*-----*
+17 *-----*--
+18 *-----
+19 *-</PRE
+><P
+></P
+></DIV
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1930"
+></A
+><P
+>&#13; S = 8, J = 6, G = 2,
+ passesperblock = S = 8,
+ passespersubblock= S / G = 8 / 2 = 4:
+ </P
+><PRE
+CLASS="screen"
+>0 *-------*-------*-------*-------*-------*
+1 *-------*-------*-------*-------*-------*
+2 *-------*-------*-------*-------*-------*
+3 *-------*-------*-------*-------*-------*
+4 *-------*-------*-------*-------*-------*
+5 *-------*-------*-------*-------*-------*
+6 *-------*-------*-------*-------*-------*
+7 *-------*-------*-------*-------*--
+8 *-------*-------*-------*-----
+9 *-------*-------*-------
+10 *-------*-------*-
+11 *-------*---
+12 *----</PRE
+><P
+></P
+></DIV
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1933"
+></A
+><P
+>&#13; S = 6, J = 12, G = 6,
+ passesperblock = S = 6,
+ passespersubblock= S / G = 6 / 6 = 1:
+ </P
+><PRE
+CLASS="screen"
+>0 *-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
+1 *-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*---
+2 *-----*-----*-----*-----*-----*-----*-----*-----*-
+3 *-----*-----*-----*-----*-----*-----*
+4 *-----*-----*-----*-----*--
+5 *-----*-----*----
+6 *-----</PRE
+><P
+></P
+></DIV
+><P
+>&#13; We have now solved the basic weaving problem. There are
+ two further refinements we need to consider: oversampling,
+ and filling in the missing rows at the start of the weave.
+ </P
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="AEN1937"
+>6.2.5. Oversampling</A
+></H2
+><P
+>&#13; By oversampling, we mean printing on the same row more than
+ once. There are two reasons for oversampling: to increase
+ the horizontal resolution of the printout and to reduce
+ banding.
+ </P
+><P
+>&#13; Oversampling to increase horizontal resolution is necessary
+ because, although the printer might be able to position an
+ ink drop to, for example, 1/1440" horizontally, it may not
+ be able to lay down two such drops 1/1440" apart. If it can
+ print two drops 1/720" apart, 2x oversampling will be
+ necessary to get a 1/1440" horizontal resolution. If it can
+ only print two drops 1/360" apart, 4x oversampling will be
+ necessary for a 1/1440" horizontal resolution. The printer
+ enforces this &#8220;drop spacing&#8221; by only accepting
+ raster passes with a horizontal resolution matching the
+ spacing with which it can print dots, so we must print
+ passes at different horizontal positions if we are to obtain
+ a higher horizontal resolution. (Another reason it does
+ this may be to reduce the amount of memory needed in the
+ printer.)
+ </P
+><P
+>&#13; Oversampling can also be done to decrease the banding
+ apparent in an image. By splitting a row into two or more
+ sets of dots (&#8220;lines&#8221;) and printing each line on
+ the same row, but with a different nozzle for each line, we
+ can get a smoother print.
+ </P
+><P
+>&#13; To quantify these two kinds of oversampling, we'll introduce
+ two new constants: H shows how many different horizontal
+ offsets we want to print at (the &#8220;horizontal
+ oversampling&#8221;) while O shows how many times we want to
+ print each row, over and above the number of times necessary
+ for horizontal oversampling (the &#8220;extra
+ oversampling&#8221;).
+ </P
+><P
+>&#13; It is necessary for all the lines printed by a given pass to
+ have the same horizontal offset, but there need not be any
+ relation between them in terms of extra oversampling. For
+ the moment, however, we will treat all oversampling as
+ potentially requiring this alignment; all lines in one pass
+ must be derived from the original row data in the same way.
+ Thus, we'll assume O = 1 for now.
+ </P
+><P
+>&#13; So, how do we do this oversampling? In fact, it can be done
+ easily: advance the paper by a factor of H less between each
+ pass. We'll define a new variable, A, to show how much we
+ advance the paper between passes. Previously, we'd have
+ defined A = J; we now let A = J / H. This also affects our
+ pass blocks. Printing one pass block used to involve
+ advancing the paper S × J rows; it now advances the
+ paper (S×J) / H rows. We therefore name a group of H
+ pass blocks a &#8220;band&#8221;. Printing one band
+ involves advancing the paper S×J rows, as a pass
+ block did before.
+ </P
+><P
+>&#13; To keep our weave pattern working correctly, so that
+ overprinting does not occur within a pass block, we also
+ have to redefine G as GCD(S,A). Here's an example of an
+ oversampled weave pattern:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1946"
+></A
+><P
+>&#13; S = 4, J = 10, H = 2, A = J/H = 10/2 = 5,
+ G= GCD(4,5) = 1,
+ passesperblock = S = 4,
+ passespersubblock = S/G = 4/1 = 4:
+ </P
+><PRE
+CLASS="screen"
+>0 *---*---*---*---*---*---*---*---*---*
+1 *---*---*---*---*---*---*---*---*---*
+2 *---*---*---*---*---*---*---*---*---*
+3 *---*---*---*---*---*---*---*---*---*
+4 *---*---*---*---*---*---*---*---*---*
+5 *---*---*---*---*---*---*---*---*---*
+6 *---*---*---*---*---*---*---*---*---*
+7 *---*---*---*---*---*---*---*---*---*
+8 *---*---*---*---*---*---*---*---*---*
+9 *---*---*---*---*---*---*---*---*
+10 *---*---*---*---*---*---*---
+11 *---*---*---*---*---*--
+12 *---*---*---*---*-
+13 *---*---*---*
+14 *---*---
+15 *--</PRE
+><P
+></P
+></DIV
+><P
+>&#13; Now we have to determine which line is printed by each jet on
+ each pass. If we number each line generated as we split up a
+ row, we can use these numbers. We'll number the lines in our
+ diagram by replacing the <SAMP
+CLASS="computeroutput"
+>*</SAMP
+>s
+ with integers in the range [0&#8230;H&#8722;1].
+ </P
+><P
+>&#13; Overprinting occurs once per pass block, so we can simply
+ print pass block 0 with line 0, pass block 1 with line 1,
+ pass block 2 with line 2, etc, wrapping to 0 when we've run
+ out of lines:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1952"
+></A
+><PRE
+CLASS="screen"
+>0 0---0---0---0---0---0---0---0---0---0
+1 0---0---0---0---0---0---0---0---0---0
+2 0---0---0---0---0---0---0---0---0---0
+3 0---0---0---0---0---0---0---0---0---0
+4 1---1---1---1---1---1---1---1---1---1
+5 1---1---1---1---1---1---1---1---1---1
+6 1---1---1---1---1---1---1---1---1---1
+7 1---1---1---1---1---1---1---1---1---1
+8 0---0---0---0---0---0---0---0---0---0
+9 0---0---0---0---0---0---0---0---0
+10 0---0---0---0---0---0---0---
+11 0---0---0---0---0---0--
+12 1---1---1---1---1-
+13 1---1---1---1
+14 1---1---
+15 1--</PRE
+><P
+></P
+></DIV
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1954"
+></A
+><P
+>&#13; S = 4, J = 12, H = 2, A = J/H = 12/2 = 6,
+ G= GCD(4,6) = 2,
+ passesperblock= S = 4,
+ passespersubblock= S/G = 4/2 = 2:
+ </P
+><PRE
+CLASS="screen"
+>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
+2 0---0---0---0---0---0---0---0---0---0---0---0
+3 0---0---0---0---0---0---0---0---0---0---0---0
+4 1---1---1---1---1---1---1---1---1---1---1---1
+5 1---1---1---1---1---1---1---1---1---1---1---1
+6 1---1---1---1---1---1---1---1---1---1---1
+7 1---1---1---1---1---1---1---1---1--
+8 0---0---0---0---0---0---0---0-
+9 0---0---0---0---0---0---
+10 0---0---0---0---0
+11 0---0---0--
+12 1---1-</PRE
+><P
+></P
+></DIV
+><P
+>&#13; But what do we do if J is not an exact multiple of H? This
+ is a difficult problem, which I struggled with for quite a
+ few days before giving in and taking the easy (but less
+ elegant) way out. The easy solution is to round J / H down,
+ then add on the accumulated error at the end of each band.
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1958"
+></A
+><P
+>&#13; S = 4, J = 11, H = 2, A = floor(J/H) = floor(11/2) = 5,
+ G = GCD(4,5) = 1,
+ passesperblock = S = 4,
+ passespersubblock = S/G = 4/1 = 4
+ </P
+><PRE
+CLASS="screen"
+>Band 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
+2 0---0---0---0---0---0---0---0---0---0---0
+3 0---0---0---0---0---0---0---0---0---0---0
+4 1---1---1---1---1---1---1---1---1---1---1
+5 1---1---1---1---1---1---1---1---1---1---1
+6 1---1---1---1---1---1---1---1---1---1---1
+7 1---1---1---1---1---1---1---1---1---1---
+
+Band 1:
+8 | 0---0---0---0---0---0---0---0---0-
+9 \-----------------------------------------/ 0---0---0---0---0---0---0---0
+10 S*J rows 0---0---0---0---0---0---
+11 0---0---0---0---0--
+12 1---1---1---1-
+13 1---1---1
+14 1---</PRE
+><P
+></P
+></DIV
+><P
+>&#13; We can calculate the starting row and subpass number of a
+ given pass in this scheme as follows:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1962"
+></A
+><PRE
+CLASS="screen"
+>A = floor(J / H)
+subblocksperblock = gcd(S, A)
+subpassblock = floor((p % S) * subblocksperblock / S)
+if subpassblock * 2 &#60; subblocksperblock
+ subblockoffset = 2*subpassblock
+else
+ subblockoffset = 2*(subblocksperblock-subpassblock)-1
+band = floor(P / (S * H))
+passinband = P % (S * H)
+startingrow = band * S * J + passinband * A + subblockoffset
+subpass = passinband / S</PRE
+><P
+></P
+></DIV
+><P
+>&#13; So the row number of jet j of pass p is
+ <DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1965"
+></A
+><PRE
+CLASS="screen"
+>A = floor(J / H)
+subblocksperblock = gcd(S, A)
+
+subblockoffset(p)
+ = 2*subpassblock , if subpassblock * 2 &#60; subblocksperblock
+ = 2*(subblocksperblock-subpassblock)-1 , otherwise
+ where
+ subpassblock = floor((p % S) * subblocksperblock / S)
+
+band(p) = floor(p / (S * H))
+passinband(p) = p % (S * H)
+
+row(j, p) = band(p) * S * J + passinband(p) * A + subblockoffset(p) + j * S
+row(j, p) = p * J + subblockoffset(p) + j * S</PRE
+><P
+>&#13; To be continued&#8230;
+ </P
+><P
+></P
+></DIV
+>
+ </P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="c1717.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="c1968.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Weaving for inkjet printers</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="c1717.html"
+ACCESSKEY="U"
+>Up</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Dithering</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/reference-html/x2153.html b/doc/developer/reference-html/x2153.html
new file mode 100644
index 0000000..4ccc109
--- /dev/null
+++ b/doc/developer/reference-html/x2153.html
@@ -0,0 +1,616 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="UP"
+TITLE="GNU General Public License"
+HREF="a2122.html"><LINK
+REL="PREVIOUS"
+TITLE="GNU General Public License"
+HREF="a2122.html"></HEAD
+><BODY
+CLASS="sect1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The Developer's Guide to Gutenprint</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="a2122.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+>Appendix A. GNU General Public License</TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+>&nbsp;</TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="sect1"
+><H1
+CLASS="sect1"
+><A
+NAME="gpl-terms"
+>A.2. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A
+></H1
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="gpl-sect0"
+>A.2.1. Section 0</A
+></H2
+><P
+>&#13; 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 <SPAN
+CLASS="QUOTE"
+>"work based on the Program"</SPAN
+> 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 <SPAN
+CLASS="QUOTE"
+>"modification"</SPAN
+>.)
+ Each licensee is addressed as <SPAN
+CLASS="QUOTE"
+>"you"</SPAN
+>.
+ </P
+><P
+>&#13; 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.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="gpl-sect1"
+>A.2.2. Section 1</A
+></H2
+><P
+>&#13; 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.
+ </P
+><P
+>&#13; 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.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="gpl-sect2"
+>A.2.3. Section 2</A
+></H2
+><P
+>&#13; 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 <A
+HREF="x2153.html#gpl-sect1"
+>Section 1</A
+> above, provided
+ that you also meet all of these conditions:
+
+ <P
+></P
+><OL
+TYPE="a"
+><LI
+><P
+>&#13; You must cause the modified files to carry prominent
+ notices stating that you changed the files and the date
+ of any change.
+ </P
+></LI
+><LI
+><P
+>&#13; 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.
+ </P
+></LI
+><LI
+><P
+>&#13; 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.
+
+ <DIV
+CLASS="note"
+><P
+></P
+><TABLE
+CLASS="note"
+WIDTH="100%"
+BORDER="0"
+><TR
+><TD
+WIDTH="25"
+ALIGN="CENTER"
+VALIGN="TOP"
+><IMG
+SRC="../images/note.gif"
+HSPACE="5"
+ALT="Note"></TD
+><TH
+ALIGN="LEFT"
+VALIGN="MIDDLE"
+><B
+>Exception:</B
+></TH
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+ALIGN="LEFT"
+VALIGN="TOP"
+><P
+>&#13; 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.)
+ </P
+></TD
+></TR
+></TABLE
+></DIV
+>
+
+ </P
+></LI
+></OL
+>
+ </P
+><P
+>&#13; 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.
+ </P
+><P
+>&#13; 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.
+ </P
+><P
+>&#13; 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.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="gpl-sect3"
+>A.2.4. Section 3</A
+></H2
+><P
+>&#13; You may copy and distribute the Program (or a work based on
+ it, under <A
+HREF="x2153.html#gpl-sect2"
+>Section 2</A
+> in object
+ code or executable form under the terms of <A
+HREF="x2153.html#gpl-sect1"
+>Sections 1</A
+> and <A
+HREF="x2153.html#gpl-sect2"
+>2</A
+> above provided that you also do
+ one of the following:
+
+ <P
+></P
+><OL
+TYPE="a"
+><LI
+><P
+>&#13; 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,
+ </P
+></LI
+><LI
+><P
+>&#13; 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,
+ </P
+></LI
+><LI
+><P
+>&#13; 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.)
+ </P
+></LI
+></OL
+>
+ </P
+><P
+>&#13; 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.
+ </P
+><P
+>&#13; 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.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="gpl-sect4"
+>A.2.5. Section 4</A
+></H2
+><P
+>&#13; 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.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="gpl-sect5"
+>A.2.6. Section 5</A
+></H2
+><P
+>&#13; 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.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="gpl-sect6"
+>A.2.7. Section 6</A
+></H2
+><P
+>&#13; 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.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="gpl-sect7"
+>A.2.8. Section 7</A
+></H2
+><P
+>&#13; 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.
+ </P
+><P
+>&#13; 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.
+ </P
+><P
+>&#13; 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.
+ </P
+><P
+>&#13; This section is intended to make thoroughly clear what is
+ believed to be a consequence of the rest of this License.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="gpl-sect8"
+>A.2.9. Section 8</A
+></H2
+><P
+>&#13; 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.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="gpl-sect9"
+>A.2.10. Section 9</A
+></H2
+><P
+>&#13; 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.
+ </P
+><P
+>&#13; 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.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="gpl-sect10"
+>A.2.11. Section 10</A
+></H2
+><P
+>&#13; 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.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="gpl-sect11"
+>A.2.12. NO WARRANTY</A
+></H2
+><FONT
+COLOR="RED"
+>Section 11</FONT
+><P
+>&#13; 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.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="gpl-sect12"
+>A.2.13. Section 12</A
+></H2
+><P
+>&#13; 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.
+ </P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="a2122.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>GNU General Public License</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="a2122.html"
+ACCESSKEY="U"
+>Up</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>&nbsp;</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/reference-html/x271.html b/doc/developer/reference-html/x271.html
new file mode 100644
index 0000000..9337d74
--- /dev/null
+++ b/doc/developer/reference-html/x271.html
@@ -0,0 +1,1230 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>The driver file</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="UP"
+TITLE="Adding a new printer"
+HREF="c200.html"><LINK
+REL="PREVIOUS"
+TITLE="Adding a new printer"
+HREF="c200.html"><LINK
+REL="NEXT"
+TITLE="ESC/P2"
+HREF="c464.html"></HEAD
+><BODY
+CLASS="sect1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The Developer's Guide to Gutenprint</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="c200.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+>Chapter 4. Adding a new printer</TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="c464.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="sect1"
+><H1
+CLASS="sect1"
+><A
+NAME="AEN271"
+>4.2. The driver file</A
+></H1
+><P
+>&#13; Adding a new printer to a driver module
+ <TT
+CLASS="filename"
+>print-canon.c</TT
+>,
+ <TT
+CLASS="filename"
+>print-escp2.c</TT
+>,
+ <TT
+CLASS="filename"
+>print-lexmark.c</TT
+>, or
+ <TT
+CLASS="filename"
+>print-pcl.c</TT
+> or
+ (<TT
+CLASS="filename"
+>print-ps.c</TT
+> is really ad hoc) requires a
+ bit more planning. Each driver is somewhat different, but they
+ all generally have a vector of printer definitions, and the code
+ does some special casing based on particular printer
+ capabilities. The PCL and Canon drivers are quite similar; the
+ Canon driver was actually cribbed from the PCL driver, but it
+ then returned the favor.
+ </P
+><P
+>&#13; The Epson driver is a little bit different. Canon and PCL
+ printers have some amount of intelligence; a lot of them have
+ specific ink options, and know about specific paper sizes and
+ types, and must be told the right thing. Epson printers have
+ somewhat less intelligence and will more or less do exactly what
+ the host tells it to do in a fairly regular fashion. I actually
+ prefer this; it isn't materially more work for the host to
+ compute things like exact paper sizes and such, it allows a lot
+ more tweaking, and it may be why Epson has been more open with
+ information&#8212;the communication protocol doesn't really
+ contain very much IP, so they have less reason to keep it
+ secret.
+ </P
+><P
+>&#13; The sections about PCL and Canon printers need completing.
+ </P
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="AEN281"
+>4.2.1. Epson inkjet printers</A
+></H2
+><P
+>&#13; The <CODE
+CLASS="varname"
+>model_capabilities</CODE
+> vector in
+ <TT
+CLASS="filename"
+>print-escp2.c</TT
+> contains one entry for each
+ defined printer model. The <TT
+CLASS="literal"
+>model</TT
+> parameter
+ in <TT
+CLASS="filename"
+>printers.xml</TT
+> is an index into this
+ table.
+ </P
+><P
+>&#13; In general, the new printers have fewer eccentricities than
+ the older printers. That doesn't mean they're simpler, just
+ that they're more consistent.
+ </P
+><P
+>&#13; <SPAN
+CLASS="type"
+>escp2_printer_t</SPAN
+> is a C struct defined as follows:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN291"
+></A
+><PRE
+CLASS="programlisting"
+>typedef struct escp2_printer
+{
+model_cap_t flags; /* Bitmask of flags, see below */
+/*****************************************************************************/
+int nozzles; /* Number of nozzles per color */
+int min_nozzles; /* Minimum number of nozzles per color */
+int nozzle_separation; /* Separation between rows, in 1/360" */
+int black_nozzles; /* Number of black nozzles (may be extra) */
+int min_black_nozzles; /* # of black nozzles (may be extra) */
+int black_nozzle_separation; /* Separation between rows */
+/*****************************************************************************/
+int xres; /* Normal distance between dots in */
+ /* softweave mode (inverse inches) */
+int enhanced_xres; /* Distance between dots in highest */
+ /* quality modes */
+int base_separation; /* Basic unit of row separation */
+int base_resolution; /* Base hardware spacing (above this */
+ /* always requires multiple passes) */
+int enhanced_resolution;/* Above this we use the */
+ /* enhanced_xres rather than xres */
+int resolution_scale; /* Scaling factor for ESC(D command */
+int max_black_resolution; /* Above this resolution, we */
+ /* must use color parameters */
+ /* rather than (faster) black */
+ /* only parameters*/
+int max_hres;
+int max_vres;
+int min_hres;
+int min_vres;
+/*****************************************************************************/
+int max_paper_width; /* Maximum paper width, in points */
+int max_paper_height; /* Maximum paper height, in points */
+int min_paper_width; /* Maximum paper width, in points */
+int min_paper_height; /* Maximum paper height, in points */
+ /* Softweave: */
+int left_margin; /* Left margin, points */
+int right_margin; /* Right margin, points */
+int top_margin; /* Absolute top margin, points */
+int bottom_margin; /* Absolute bottom margin, points */
+ /* "Micro"weave: */
+int m_left_margin; /* Left margin, points */
+int m_right_margin; /* Right margin, points */
+int m_top_margin; /* Absolute top margin, points */
+int m_bottom_margin; /* Absolute bottom margin, points */
+/*****************************************************************************/
+int extra_feed; /* Extra distance the paper can be spaced */
+ /* beyond the bottom margin, in 1/360". */
+ /* (maximum useful value is */
+ /* nozzles * nozzle_separation) */
+int separation_rows; /* Some printers require funky spacing */
+ /* arguments in microweave mode. */
+int pseudo_separation_rows;/* Some printers require funky */
+ /* spacing arguments in softweave mode */
+
+int zero_margin_offset; /* Offset to use to achieve */
+ /* zero-margin printing */
+/*****************************************************************************/
+ /* The stylus 480 and 580 have an unusual arrangement of
+ color jets that need special handling */
+const int *head_offset;
+int initial_vertical_offset;
+int black_initial_vertical_offset;
+
+/*****************************************************************************/
+const int *dot_sizes; /* Vector of dot sizes for resolutions */
+const double *densities; /* List of densities for each printer */
+const escp2_variable_inklist_t *inks; /* Choices of inks for this printer */
+/*****************************************************************************/
+const double *lum_adjustment;
+const double *hue_adjustment;
+const double *sat_adjustment;
+const paperlist_t *paperlist;
+} escp2_printer_t;</PRE
+><P
+></P
+></DIV
+><P
+>&#13; The printer definition block is divided into 8 sections.
+ The first section is a set of miscellaneous printer options.
+ These are described in the code, and will not be discussed
+ further here.
+ </P
+><P
+>&#13; The second section describes the number of nozzles and the
+ separation between nozzles in base units. The base unit is
+ 1/360" for all currently supported printers, but future
+ printers may support a smaller base unit.
+ </P
+><P
+>&#13; Many printers have more black nozzles than nozzles of other
+ colors, and when used in black and white mode, it's possible
+ to use these extra nozzles, which speeds up printing. As an
+ example, a printer that is specified to have 48 cyan, magenta,
+ and yellow nozzles, and 144 black nozzles, can use all 144
+ black nozzles when printing black ink only. When printing in
+ color, only 48 nozzles of each color (including black) can be
+ used.
+ </P
+><P
+>&#13; Most printers can print using either the number of nozzles
+ available or any smaller number. Some printers require that
+ all of the nozzles be used. Those printers will set
+ <CODE
+CLASS="varname"
+>min_nozzles</CODE
+> and/or
+ <CODE
+CLASS="varname"
+>min_black_nozzles</CODE
+> to the same value as
+ <CODE
+CLASS="varname"
+>nozzles</CODE
+> and/or
+ <CODE
+CLASS="varname"
+>black_nozzles</CODE
+>.
+ </P
+><P
+>&#13; The third section defines basic units of measure for the
+ printer, including the standard separation between dots, the
+ base nozzle separation, and the minimum and maximum printing
+ resolutions the printer supports. Most of these are fairly
+ self-explanatory, but some are not obvious.
+ </P
+><P
+>&#13; Most Epson printers, other than the high-end Stylus Pro
+ models, cannot print dots spaced more closely than 1/360" or
+ 1/720" apart (this is the setting for <CODE
+CLASS="varname"
+>xres</CODE
+>.
+ This is true even for printers that support resolutions of
+ 1440 or 2880 DPI. In these cases, the data must be printed in
+ 2, 4, or 8 passes. While the printer can position the head to
+ a resolution of 1/1440" or 1/2880", the head cannot deposit
+ ink that frequently.
+ </P
+><P
+>&#13; Some printers can only print in their very best quality (using
+ the smallest dots available) printing at a lower resolution.
+ For example, the Stylus Photo EX can normally print with a dot
+ spacing of 1/720". The smallest dot size cannot be printed
+ with a dot spacing of less than 1/360", however. In this
+ case, we use <CODE
+CLASS="varname"
+>enhanced_xres</CODE
+> to specify the
+ resolution to be used in this enhanced mode, and
+ <CODE
+CLASS="varname"
+>enhanced_resolution</CODE
+> to specify the printing
+ resolution above which we use the
+ <CODE
+CLASS="varname"
+>enhanced_xres</CODE
+>.
+ </P
+><P
+>&#13; The <CODE
+CLASS="varname"
+>resolution_scale</CODE
+> command is used to
+ specify scaling factors for the dot separation on newer
+ printers. It should always be 14400 with current printers.
+ </P
+><P
+>&#13; The fourth section specifies the minimum and maximum paper
+ sizes, and the margins. Some printers allow use of narrower
+ margins when softweave is used; both sets of margins are
+ specified.
+ </P
+><P
+>&#13; There is a convenient <CODE
+CLASS="function"
+>INCH</CODE
+> macro defined
+ to make specification of the
+ <CODE
+CLASS="varname"
+>max_paper_width</CODE
+> and
+ <CODE
+CLASS="varname"
+>max_paper_height</CODE
+> more legible. It
+ multiplies <CODE
+CLASS="constant"
+>72</CODE
+> by the provided expression
+ to get the appropriate number of points. For example, to
+ specify 8.5", <TT
+CLASS="literal"
+>INCH(17/2)</TT
+> expands to
+ <TT
+CLASS="literal"
+>(72 * 17/2)</TT
+>, which is evaluated left to
+ right, and hence generates the correct value.
+ </P
+><P
+>&#13; The fifth section specifies some miscellaneous values that are
+ required for certain printers. For most printers, the correct
+ values are <CODE
+CLASS="constant"
+>1</CODE
+> for
+ <CODE
+CLASS="varname"
+>separation_rows</CODE
+> and <CODE
+CLASS="constant"
+>0</CODE
+>
+ for the others. Very, very few printers require (or allow)
+ <CODE
+CLASS="varname"
+>separation_rows</CODE
+> to be anything but
+ <CODE
+CLASS="constant"
+>1</CODE
+> and
+ <CODE
+CLASS="varname"
+>pseudo_separation_rows</CODE
+> other than
+ <CODE
+CLASS="constant"
+>0</CODE
+>. The Stylus Color 1520, Stylus Color
+ 800, Stylus Color 850, and (strangely enough to my mind, since
+ it's a newer printer) Stylus Color 660 seem to be the only
+ exceptions.
+ </P
+><P
+>&#13; <CODE
+CLASS="varname"
+>zero_margin_offset</CODE
+> is used to specify an
+ additional negative horizontal offset required to print to the
+ edges of the paper on newer Stylus Photo printers. These must
+ be determined empirically; good starting values are
+ <CODE
+CLASS="constant"
+>100</CODE
+> for 1440 DPI and
+ <CODE
+CLASS="constant"
+>50</CODE
+> for 2880 DPI printers. The goal is to
+ print to the edge of the page, but not over it.
+ </P
+><P
+>&#13; The sixth section specifies head offsets for printers that do
+ not have the color jets aligned. Certain printers, such as
+ the Stylus Color 480, have an unusual head arrangement whereby
+ instead of all of the colors being aligned vertically, the
+ nozzles are configured in groups. These printers are easy to
+ determine; if the normal head offset of zero for each color is
+ used, the printing will be vertically out of alignment. Most
+ of these printers require specification of a negative offset
+ for printing to the top edge of the paper; typically these
+ printers do not require such an offset when printing black
+ only.
+ </P
+><P
+>&#13; The seventh section specifies the most difficult values to
+ tune, the dot sizes, printing densities, and ink values (for
+ variable dot size enabled printers). These will be described
+ in detail below.
+ </P
+><P
+>&#13; The last section specifies luminosity, hue, and saturation
+ adjustment vectors for the printer, and the paper definitions.
+ These are used to adjust the color in
+ <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>Photograph</I
+></SPAN
+> and <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>Solid
+ Colors</I
+></SPAN
+> output modes. These are each vectors of 48
+ (actually 49, as the first value must be duplicated) doubles
+ that remap the luminosity, hue, and saturation respectively.
+ The hue is calculated, and the value used to interpolate
+ between the two closest points in each vector.
+ </P
+><P
+>&#13; The paper definitions is a set of paper definitions. The
+ paper definition contains the name of the paper type, special
+ settings that are required for printers to process the paper
+ correctly, and a set of adjustment values. These are not
+ currently discussed here.
+ </P
+><P
+>&#13; The lists of dot sizes and densities contain values for 13
+ printing modes: 120/180 DPI using printer weaving (single row;
+ incorrectly referred to as &#8220;microweave&#8221;) and
+ &#8220;soft&#8221; weaving (the driver determines the exact
+ pattern of dot layout), 360 DPI microweave and softweave,
+ 720×360 DPI microweave and softweave, 720 DPI microweave
+ and softweave, 1440×720 microweave and softweave,
+ 2880×720 microweave and softweave, and 2880×1440
+ softweave only. Printer weaving is referred to as
+ &#8220;microweave&#8221; for historical reasons.
+ </P
+><P
+>&#13; For the dot sizes, the value for each element in the vector
+ selects the dot size to be used when printing at this (or
+ similar) resolution. The dot sizes are determined by
+ consulting the programming manual for the printer and
+ experimenting as described below. Current Epson printers
+ always use dot sizes less than <CODE
+CLASS="constant"
+>16</CODE
+>
+ (<CODE
+CLASS="constant"
+>0x10</CODE
+>), to indicate single dot size (each
+ dot is represented by 1 bit, and it's either printed or not),
+ and dot sizes of <CODE
+CLASS="constant"
+>16</CODE
+> or greater to
+ indicate variable dot size (each dot is represented by 2 bits,
+ and it can either be not printed or take on 2 or 3 values,
+ representing the relative size of the printed dot). Variable
+ dot sizes permit the use of very small dots (which would be
+ too small to fill the page and produce solid black) in light
+ areas, while allowing the page to be filled with larger dots
+ in darker areas.
+ </P
+><P
+>&#13; Even single dot size printers can usually produce dots of
+ different sizes; it's just illegal to actually try to switch
+ dot size during a page. These dots are also much bigger than
+ those used in true variable dot size printing.
+ </P
+><P
+>&#13; A dot size of <CODE
+CLASS="constant"
+>-1</CODE
+> indicates that this
+ resolution is illegal for the printer in question. Any
+ resolutions that would use this dot size will not be presented
+ to the user. A dot size of <CODE
+CLASS="constant"
+>-2</CODE
+> indicates
+ that this resolution is legal, but that the driver is not to
+ attempt to set any dot size. Some very old printers do not
+ support the command to set the dot size.
+ </P
+><P
+>&#13; Most printers support a dot size of <CODE
+CLASS="constant"
+>0</CODE
+> as
+ a mode-specific default, but it's often a bigger dot than
+ necessary. Printers usually also support some dot sizes
+ between <CODE
+CLASS="constant"
+>1</CODE
+> and <CODE
+CLASS="constant"
+>3</CODE
+>.
+ Usually <CODE
+CLASS="constant"
+>1</CODE
+> is the right dot size for 720
+ and 1440 DPI printing, and <CODE
+CLASS="constant"
+>3</CODE
+> works best
+ at 360 DPI.
+ </P
+><P
+>&#13; Variable dot size printers usually support 2 or 3 sets of
+ variable dot sizes. Older printers based on a 6 picolitre
+ drop (the 480, 720, 740, 750, 900, and 1200) support two: mode
+ 16 (0x10 in hexadecimal) for normal variable dots at 1440 or
+ 720 DPI, and mode 17 (0x10) for special larger dots at 360
+ DPI. Newer printers based on 4 picolitre drops normally
+ support three sizes: <CODE
+CLASS="constant"
+>0x10</CODE
+> for 4 pl base
+ drops, <CODE
+CLASS="constant"
+>0x11</CODE
+> for 6 pl base drops, and
+ <CODE
+CLASS="constant"
+>0x12</CODE
+> for special large drops. On these
+ printers, <CODE
+CLASS="constant"
+>0x10</CODE
+> usually works best at
+ 1440×720 and <CODE
+CLASS="constant"
+>0x11</CODE
+> works best at
+ 720×720. Unfortunately, <CODE
+CLASS="constant"
+>0x10</CODE
+>
+ doesn't seem to generate quite enough density at
+ 720×720, because if it did the output would be very
+ smooth. Perhaps it's possible to tweak things&#8230;
+ </P
+><P
+>&#13; The list of densities is a list of base density values for all
+ of the above listed modes. &#8220;Density&#8221; refers to
+ the amount of ink deposited when a solid color (or solid
+ black) is printed. So if the density is
+ <CODE
+CLASS="constant"
+>0.5</CODE
+>, solid black actually prints only
+ half the possible dots. &#8220;Base density&#8221; refers to
+ the fact that the density value can be scaled in the GUI or on
+ the Ghostscript command line. The density value specified
+ (which is not made visible to the user) is multiplied by the
+ base density to obtain the effective density value. All other
+ things (such as ink drop size) remaining the same, doubling
+ the resolution requires halving the base density. The base
+ density in the density vector may exceed
+ <CODE
+CLASS="constant"
+>1</CODE
+>, as many paper types require lower
+ density than the base driver. The driver ensures that the
+ actual density never exceeds <CODE
+CLASS="constant"
+>1</CODE
+>.
+ </P
+><P
+>&#13; Tuning the density should be done on high quality paper
+ (usually glossy photo paper). The goal is to find the lowest
+ density value that results in solid black (no visible gaps
+ under a fairly high power magnifying glass or loupe). If an
+ appropriate density value is found for 720 DPI, it could be
+ divided by 2 for 1440×720, by 4 for 2880×720, and
+ by 8 for 2880×1440.
+ </P
+><P
+>&#13; However, for printers that offer a choice of dot size, this
+ may not be the best strategy. The best choice for dot size is
+ the smallest dot size that allows choosing a density value not
+ greater than <CODE
+CLASS="constant"
+>1</CODE
+> that gives full coverage.
+ This dot size may be different for different resolutions.
+ Tuning variable dot size printers is more complicated; the
+ process is described below.
+ </P
+><P
+>&#13; The last member is a pointer to a structure containing a list
+ of ink values for variable dot size (or 6 color) inks. We
+ model variable dot size inks as producing a certain
+ &#8220;value&#8221; of ink for each available dot size, where
+ the largest dot size has a value of <CODE
+CLASS="constant"
+>1</CODE
+>.
+ 6-color inks are handled similarly; the light cyan and light
+ magenta inks are treated as a fractional ink value. The
+ combination of variable dot size and 6 color inks, of course,
+ just creates that many more different ink choices.
+ </P
+><P
+>&#13; This structure is actually rather complicated; it contains
+ entries for each combination of physical printer resolution
+ (180, 360, 720, and 1440 DPI), ink colors (4, 6, and 7), and
+ single and variable dot sizes (since some printer modes can't
+ handle variable dot size inks). Since there's so much data,
+ it's actually a somewhat deeply nested structure.
+ </P
+><P
+></P
+><UL
+><LI
+><P
+>&#13; An <SPAN
+CLASS="type"
+>escp2_printer_t</SPAN
+> contains a pointer
+ (essentially, a reference rather than a copy) to an
+ <SPAN
+CLASS="type"
+>escp2_variable_inklist_t</SPAN
+>.
+ </P
+></LI
+><LI
+><P
+>&#13; An <SPAN
+CLASS="type"
+>escp2_variable_inklist_t</SPAN
+> contains pointers
+ to <SPAN
+CLASS="type"
+>escp2_variable_inkset_t</SPAN
+> structures. There
+ is one such pointer for each combination of resolution,
+ dot type, and ink colors as described above. Yes, this is
+ rather inflexible.
+ </P
+></LI
+><LI
+><P
+>&#13; An <SPAN
+CLASS="type"
+>escp2_variable_inkset_t</SPAN
+> contains pointers
+ to <SPAN
+CLASS="type"
+>escp2_variable_ink_t</SPAN
+> structures. There is
+ one such pointer for each of the four colors (C, M, Y, and
+ K).
+ </P
+></LI
+><LI
+><P
+>&#13; An <SPAN
+CLASS="type"
+>escp2_variable_ink_t</SPAN
+> contains a pointer to
+ the actual list of ink values
+ (<SPAN
+CLASS="type"
+>simple_dither_range_t</SPAN
+>), the number of ink
+ values, and a density value to be used for computing the
+ transitions. This density value is actually a scaling
+ value; it is multiplied by the effective density to
+ compute the density to be used for computing the
+ transitions. Normally, this value is
+ <CODE
+CLASS="constant"
+>1</CODE
+>, but in some cases it may be
+ possible to get smoother results with a different value
+ (in particular, the single dot size 6-color inks work best
+ with the effective density scaled to
+ <CODE
+CLASS="constant"
+>.75</CODE
+> for this purpose). A lower
+ density lowers the transition points, which results in
+ more ink being deposited.
+ </P
+></LI
+><LI
+><P
+>&#13; A <SPAN
+CLASS="type"
+>simple_dither_range_t</SPAN
+> is a structure containing four values:
+ <P
+></P
+><UL
+><LI
+><P
+>&#13; The value of the particular ink
+ </P
+></LI
+><LI
+><P
+>&#13; The bit pattern used to represent the ink
+ </P
+></LI
+><LI
+><P
+>&#13; Whether the ink is light (0) or dark (1), for inks
+ with light and dark variants
+ </P
+></LI
+><LI
+><P
+>&#13; The relative amount of ink actually deposited by
+ this dot (not currently used for much; it can be
+ used for ink reduction purposes, to reduce the
+ amount of ink deposited on the paper).
+ </P
+></LI
+></UL
+>
+ </P
+><P
+>&#13; These things are interesting as arrays. From an array of
+ <SPAN
+CLASS="type"
+>simple_dither_range_t</SPAN
+>'s, the dither code
+ computes transition values that it looks up at run time to
+ decide what ink to print, as well as whether to print at
+ all.
+ </P
+></LI
+></UL
+><P
+>&#13; <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>Really</I
+></SPAN
+> confused now? Yup. You'll
+ probably find it easier to simply read the code.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="AEN403"
+>4.2.2. Tuning the printer</A
+></H2
+><P
+>&#13; Now, how do you use all this to tune a printer? There are a
+ number of ways to do it; this one is my personal favorite.
+ </P
+><P
+>&#13; There's a file named <TT
+CLASS="filename"
+>test/cyan-sweep.tif</TT
+>.
+ This consists of a thin bar of cyan sweeping from white to
+ almost pure cyan, and from pure cyan to black. The first
+ thing to do is to pick the appropriate
+ <SPAN
+CLASS="type"
+>simple_dither_range_t</SPAN
+> (or create a whole new
+ <SPAN
+CLASS="type"
+>escp2_variable_inklist_t</SPAN
+>) and comment out all but
+ the darkest ink (this means you'll be using the largest dots
+ of dark ink). At 8.5" width (the width of a letter-size piece
+ of paper), the bar will be 1/8" high. Printing it on wider or
+ narrower paper will change the height accordingly. Print it
+ width-wise across a piece of photo quality paper in line art
+ mode using ordered or adaptive hybrid dither. Do not use
+ photographic mode; the colors in photographic mode vary
+ non-linearly depending upon the presence of the three color
+ components, while in line art mode the colors are much purer.
+ Make sure that all the color adjustments are set to defaults
+ (1.0). Use the highest quality version of the print mode
+ you're testing to reduce banding and other artifacts. This is
+ much easier to do with the Gimp than with Ghostscript.
+ </P
+><P
+>&#13; At this stage, you want to look for four things:
+ <P
+></P
+><OL
+TYPE="1"
+><LI
+><P
+>&#13; The black near the center of the line is solid, but not
+ more so than that.
+ </P
+></LI
+><LI
+><P
+>&#13; The cyan immediately to the left of the black is
+ <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>almost</I
+></SPAN
+> solid.
+ </P
+></LI
+><LI
+><P
+>&#13; The dark cyan at the far right of the page is solid, but
+ not more so. You can try tuning the density so that it
+ isn't quite solid, then nudging up the density until it
+ is.
+ </P
+></LI
+><LI
+><P
+>&#13; Both sweeps sweep smoothly from light to dark. In
+ particular, the dark half of the bar shouldn't visibly
+ change color; it should go smoothly from cyan to black.
+ </P
+></LI
+></OL
+>
+ </P
+><P
+>&#13; Repeat this stage until you have everything just right. Use
+ the positioning entry boxes in the dialog to position each bar
+ exactly 1/8" further down the page. Adjacent bars will be
+ touching.
+ </P
+><P
+>&#13; The next step is to uncomment out the second darkest dot size.
+ If you're using variable dots, use the second largest dot size
+ of the dark ink rather than the largest dot size of the light
+ ink. This will give you two inks.
+ </P
+><P
+>&#13; When you recompile the plugin, you simply need to copy the new
+ executable into the correct place. You do not need to exit
+ and restart the Gimp.
+ </P
+><P
+>&#13; Print another bar adjacent to the first one. Your goal is to
+ match the bar using a single dot size as closely as possible.
+ You'll find that the dark region of the bar shouldn't change
+ to any great degree, but the light half probably will. If the
+ lighter part of the light half is too dark, you need to
+ increase the value of the smaller dot; if it's too light, you
+ need to decrease the value. The reasoning is that if the
+ value is too low, the ink isn't being given enough credit for
+ its contribution to the darkness of the ink, and vice versa.
+ Repeat until you have a good match. Make sure you let the ink
+ dry fully, which will take a few minutes. Wet ink will look
+ too dark. Don't look at the paper too closely; hold it at a
+ distance. The extra graininess of the largest dot size will
+ probably make it look lighter than it should; if you hold it
+ far enough away so that you can't see the dots, you'll get a
+ more accurate picture of what's going on.
+ </P
+><P
+>&#13; After you have what looks like a good match, print another bar
+ using only the largest dot size (or dark ink, for single dot
+ size 6-color printers). You want to ensure that the bars
+ touching each other look identical, or as close as possible to
+ it; your eye won't give you a good reading if the bars are
+ separated from each other. You'll probably have to repeat the
+ procedure.
+ </P
+><P
+>&#13; The next step is to comment out all but the largest and
+ third-largest dot size, and repeat the procedure. When they
+ match, use all three dot sizes of dark ink. Again, the goal
+ is to match the single dot size.
+ </P
+><P
+>&#13; You'll probably find the match is imperfect. Now you have to
+ figure out what region isn't right, which takes some
+ experimentation. Even small adjustments can make a noticeable
+ difference in what you see. At this stage, it's very
+ important to hold the page far enough from your eye; when you
+ use all three dot sizes, the texture will be much more even,
+ which sometimes makes it look darker and sometimes lighter.
+ </P
+><P
+>&#13; After this is calibrated, it's time to calibrate the light ink
+ against the dark ink. To do this, comment out all but the
+ large dot version of the two inks, and repeat the procedure.
+ This is trickier, because the hues of the inks might not be
+ quite identical. Look at the dark half of the bar as well as
+ the light half to see that the hue really doesn't change as
+ you sweep from cyan to black. Sometimes it's easier to judge
+ that way. You may find that it looks blotchy, in which case
+ you should switch from ordered dither to adaptive hybrid.
+ </P
+><P
+>&#13; After you have the light and dark inks calibrated against each
+ other, it's time to add everything back in. Usually you don't
+ want to use the largest dot size of light ink. These dots
+ will be much larger than the small dots of dark ink, but
+ they'll still be lighter. This will cause problems when
+ printing mixed colors, since you'll be depositing more ink on
+ lighter regions of the page, and you'll probably get strange
+ color casts that you can't get rid of in neutral tones. I
+ normally use only the smallest one or two dot sizes of light
+ ink.
+ </P
+><P
+>&#13; After you've tweaked everything, print the color bar with
+ saturation set to zero. This will print neutral tones using
+ color inks. Your goal here is to look for neutral tonality.
+ If you're using a 6-color printer and get a yellow cast, it
+ means that the values for your light inks are too high
+ (remember, that means they're getting too much credit, so
+ you're not depositing enough cyan and magenta ink, and the
+ yellow dominates). If you get a bluish or bluish-purple cast,
+ your light inks are too low (you're not giving them enough
+ credit, so too much cyan and magenta is deposited, which
+ overwhelms the yellow). Make sure you do this on very white,
+ very high grade inkjet paper that's designed for
+ 1440×720 DPI or higher; otherwise the ink will spread on
+ contact and you'll get values that aren't really true for high
+ grade paper. You can, of course, calibrate for low grade
+ paper if that's what you're going to use, but that shouldn't
+ be put into the distribution.
+ </P
+><P
+>&#13; You can also fully desaturate this bar inside the Gimp and
+ print it as monochrome (don't print the cyan as monochrome;
+ the driver does funny things with luminance), for comparison.
+ You'll find it very hard to get rid of all color casts.
+ </P
+><P
+>&#13; There are other ways of tuning printers, but this one works
+ pretty well for me.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="AEN433"
+>4.2.3. Canon inkjet printers</A
+></H2
+><P
+>&#13; Basically, a new Canon printer can be added to
+ <TT
+CLASS="filename"
+>print-canon.c</TT
+> in a similar way as
+ described above for the epson inkjet printers. The main
+ differences are noted here.
+ </P
+><P
+>&#13; In general, Canon printers have more &#8220;built-in
+ intelligence&#8220; than Epson printers which results in the
+ fact that the driver only has to tell the printing conditions
+ like resolutions, dot sizes, etc. to the printer and
+ afterwards transfer the raster data line by line for each
+ color used.
+ </P
+><P
+>&#13; <SPAN
+CLASS="type"
+>canon_cap_t</SPAN
+> is a C struct defined as follows:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN440"
+></A
+><PRE
+CLASS="programlisting"
+>typedef struct canon_caps {
+int model; /* model number as used in printers.xml */
+int max_width; /* maximum printable paper size */
+int max_height;
+int base_res; /* base resolution - shall be 150 or 180 */
+int max_xdpi; /* maximum horizontal resolution */
+int max_ydpi; /* maximum vertical resolution */
+int max_quality;
+int border_left; /* left margin, points */
+int border_right; /* right margin, points */
+int border_top; /* absolute top margin, points */
+int border_bottom; /* absolute bottom margin, points */
+int inks; /* installable cartridges (CANON_INK_*) */
+int slots; /* available paperslots */
+int features; /* special bjl settings */
+canon_dot_size_t dot_sizes; /* Vector of dot sizes for resolutions */
+canon_densities_t densities; /* List of densities for each printer */
+canon_variable_inklist_t *inxs; /* Choices of inks for this printer */
+} canon_cap_t;</PRE
+><P
+></P
+></DIV
+><P
+>&#13; Since there are Canon printers which print in resolutions of
+ 2<SUP
+>n</SUP
+> × 150 DPI (e.g. 300, 600,
+ 1200) and others which support resolutions of
+ 2<SUP
+>n</SUP
+> × 180 DPI (e.g. 360, 720,
+ 1440), there's a base resolution (150 or 180, respectively)
+ given in the <SPAN
+CLASS="type"
+>canon_cap_t</SPAN
+>. The structs
+ <SPAN
+CLASS="type"
+>canon_dot_size_t</SPAN
+>, <SPAN
+CLASS="type"
+>canon_densities_t</SPAN
+>
+ and <SPAN
+CLASS="type"
+>canon_variable_inklist_t</SPAN
+> refer to resolutions
+ being multiples of the base resolution.
+ </P
+><P
+>&#13; For the Canon driver, the struct <SPAN
+CLASS="type"
+>canon_dot_size_t</SPAN
+>
+ holds values for a model's capabilities at a given resolution,
+ or <CODE
+CLASS="constant"
+>-1</CODE
+> if the resolution is not supported.
+ <CODE
+CLASS="constant"
+>0</CODE
+> if it can be used and
+ <CODE
+CLASS="constant"
+>1</CODE
+> if the resolution can be used for
+ variable dot size printing.
+ </P
+><P
+>&#13; In <SPAN
+CLASS="type"
+>canon_densities_t</SPAN
+> the base densities for each
+ resolution can be specified like for an epson printer. The
+ same holds true for <SPAN
+CLASS="type"
+>canon_variable_inklist_t</SPAN
+>.
+ See the descriptions above to learn about how to adjust your
+ model's output to yield nice results.
+ </P
+><P
+>&#13; There's a slight difference though in the way the Canon driver
+ and the escp2 driver define their variable inklists: In the
+ Canon driver, you need to define an inklist like this:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN458"
+></A
+><PRE
+CLASS="programlisting"
+>static const canon_variable_inklist_t canon_ink_myinks[] =
+{
+{
+ 1,4, /* 1bit/pixel, 4 colors */
+ &#38;ci_CMYK_1, &#38;ci_CMYK_1, &#38;ci_CMYK_1,
+ &#38;ci_CMYK_1, &#38;ci_CMYK_1, &#38;ci_CMYK_1,
+},
+{
+ 3,4, /* 3bit/pixel, 4 colors */
+ &#38;ci_CMYK_3, &#38;ci_CMYK_3, &#38;ci_CMYK_3,
+ &#38;ci_CMYK_3, &#38;ci_CMYK_3, &#38;ci_CMYK_3,
+},
+};</PRE
+><P
+></P
+></DIV
+><P
+>&#13; where the <TT
+CLASS="literal"
+>&#38;ci_CMYK_1</TT
+> and
+ <TT
+CLASS="literal"
+>&#38;ci_CMYK_3</TT
+> entries are references to a
+ previously defined const of type
+ <SPAN
+CLASS="type"
+>canon_variable_inkset_t</SPAN
+>.
+ </P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="c200.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="c464.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Adding a new printer</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="c200.html"
+ACCESSKEY="U"
+>Up</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>ESC/P2</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/reference-html/x67.html b/doc/developer/reference-html/x67.html
new file mode 100644
index 0000000..425a70b
--- /dev/null
+++ b/doc/developer/reference-html/x67.html
@@ -0,0 +1,182 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>Linking with libgutenprint</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="UP"
+TITLE="Using libgutenprint"
+HREF="c48.html"><LINK
+REL="PREVIOUS"
+TITLE="Using libgutenprint"
+HREF="c48.html"><LINK
+REL="NEXT"
+TITLE="Integrating libgutenprint"
+HREF="x79.html"></HEAD
+><BODY
+CLASS="sect1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The Developer's Guide to Gutenprint</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="c48.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+>Chapter 2. Using libgutenprint</TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="x79.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="sect1"
+><H1
+CLASS="sect1"
+><A
+NAME="AEN67"
+>2.2. Linking with libgutenprint</A
+></H1
+><P
+>&#13; To link a program with libgutenprint, the option
+ <CODE
+CLASS="option"
+>-lgutenprint</CODE
+> needs to be passed to the compiler
+ when linking. For example, to compile and link
+ <TT
+CLASS="filename"
+>stpimage.c</TT
+> the following commands would be
+ used:
+ </P
+><PRE
+CLASS="screen"
+><SAMP
+CLASS="prompt"
+>$</SAMP
+> <KBD
+CLASS="userinput"
+>gcc -c stpimage.c</KBD
+>
+<SAMP
+CLASS="prompt"
+>$</SAMP
+> <KBD
+CLASS="userinput"
+>gcc -o stpimage -lgutenprint stpimage.o</KBD
+></PRE
+><P
+>&#13; The compiler and linker flags needed may vary depending on the
+ options Gutenprint was configured with when it was built. The
+ <B
+CLASS="command"
+>pkg-config</B
+> script will give the correct
+ parameters for the local installation.
+ </P
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="c48.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="x79.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Using libgutenprint</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="c48.html"
+ACCESSKEY="U"
+>Up</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Integrating libgutenprint</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/reference-html/x79.html b/doc/developer/reference-html/x79.html
new file mode 100644
index 0000000..93af949
--- /dev/null
+++ b/doc/developer/reference-html/x79.html
@@ -0,0 +1,612 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>Integrating libgutenprint</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="UP"
+TITLE="Using libgutenprint"
+HREF="c48.html"><LINK
+REL="PREVIOUS"
+TITLE="Linking with libgutenprint"
+HREF="x67.html"><LINK
+REL="NEXT"
+TITLE="Reporting Bugs"
+HREF="c194.html"></HEAD
+><BODY
+CLASS="sect1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The Developer's Guide to Gutenprint</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="x67.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+>Chapter 2. Using libgutenprint</TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="c194.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="sect1"
+><H1
+CLASS="sect1"
+><A
+NAME="AEN79"
+>2.3. Integrating libgutenprint</A
+></H1
+><P
+>&#13; This section describes how to integrate the compiling and
+ linking of programs using libgutenprint with build
+ scripts. Commonly used systems include <B
+CLASS="command"
+>make</B
+>,
+ but often <TT
+CLASS="filename"
+>Makefile</TT
+> files are generated by
+ using tools such as <B
+CLASS="command"
+>autoconf</B
+> and
+ <B
+CLASS="command"
+>automake</B
+>.
+ </P
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="AEN86"
+>2.3.1. <B
+CLASS="command"
+>pkg-config</B
+></A
+></H2
+><P
+>&#13; Depending on the nature of the computer system Gutenprint was
+ installed on, as well as the options passed to
+ <B
+CLASS="command"
+>configure</B
+> when configuring the package when
+ it was built, the <CODE
+CLASS="varname"
+>CFLAGS</CODE
+> and
+ <CODE
+CLASS="varname"
+>LIBS</CODE
+> parameters needed to compile and link
+ programs with libgutenprint may vary. To make it simple to
+ determine what these are on any given system, a
+ <B
+CLASS="command"
+>pkg-config</B
+> datafile was created when
+ Gutenprint was built. <B
+CLASS="command"
+>pkg-config</B
+> will
+ output the correct parameters for the setup on your system.
+ See the
+ <SPAN
+CLASS="citerefentry"
+><SPAN
+CLASS="refentrytitle"
+>pkg-config(1)</SPAN
+></SPAN
+> manual page for a compete synopsis.
+ </P
+><P
+>&#13; The correct <CODE
+CLASS="varname"
+>CFLAGS</CODE
+> to use can be obtained
+ with the <CODE
+CLASS="option"
+>--cflags</CODE
+> option:
+ </P
+><PRE
+CLASS="screen"
+><SAMP
+CLASS="prompt"
+>$</SAMP
+> <KBD
+CLASS="userinput"
+>pkg-config --cflags gutenprint</KBD
+>
+-I/usr/local/include</PRE
+><P
+>&#13; The correct <CODE
+CLASS="varname"
+>LIBS</CODE
+> to use can the obtained
+ with the <CODE
+CLASS="option"
+>--libs</CODE
+> option:
+ </P
+><PRE
+CLASS="screen"
+><SAMP
+CLASS="prompt"
+>$</SAMP
+> <KBD
+CLASS="userinput"
+>pkg-config --libs gutenprint</KBD
+>
+-L/usr/local/lib -lgutenprint -lm -ldl</PRE
+><P
+>&#13; Lastly, the installed version of Gutenprint can be obtained with the
+ <CODE
+CLASS="varname"
+>--version</CODE
+> option:
+ </P
+><PRE
+CLASS="screen"
+><SAMP
+CLASS="prompt"
+>$</SAMP
+> <KBD
+CLASS="userinput"
+>pkg-config --modversion gutenprint</KBD
+>
+4.3.23</PRE
+><P
+>&#13; The command can be used from the shell by enclosing it in
+ backquotes &#8216;`&#8217;:
+ </P
+><PRE
+CLASS="screen"
+><SAMP
+CLASS="prompt"
+>$</SAMP
+> <KBD
+CLASS="userinput"
+>gcc `pkg-config --cflags gutenprint` -c stpimage.c</KBD
+>
+<SAMP
+CLASS="prompt"
+>$</SAMP
+> <KBD
+CLASS="userinput"
+>gcc `pkg-config --libs gutenprint` -o
+ stpimage stpimage.o</KBD
+></PRE
+><P
+>&#13; However, this is not the way it it typically used. Normally
+ it is used in a <TT
+CLASS="filename"
+>Makefile</TT
+> or by an m4
+ macro in a <B
+CLASS="command"
+>configure</B
+> script.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="AEN123"
+>2.3.2. <B
+CLASS="command"
+>make</B
+></A
+></H2
+><P
+>&#13; If you use <B
+CLASS="command"
+>make</B
+> with your own
+ <TT
+CLASS="filename"
+>Makefile</TT
+> files, then you are on your
+ own. This manual offers no assistance with doing this. Only
+ the following suggestion is offered, for use with GNU
+ <B
+CLASS="command"
+>make</B
+>:
+ </P
+><PRE
+CLASS="programlisting"
+>GUTENPRINT_VERSION = $(shell pkg-config --version gutenprint)
+GUTENPRINT_CFLAGS = $(shell pkg-config --cflags gutenprint)
+GUTENPRINT_LIBS = $(shell pkg-config --libs gutenprint)</PRE
+><P
+>&#13; How you choose to use these variables is entirely up to
+ you. See the GNU <B
+CLASS="command"
+>make</B
+> manual for more
+ information.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="AEN133"
+>2.3.3. <B
+CLASS="command"
+>autoconf</B
+></A
+></H2
+><P
+>&#13; The <B
+CLASS="command"
+>autoconf</B
+> program produces a Bourne
+ shell script called <TT
+CLASS="filename"
+>configure</TT
+> from a
+ template file called <TT
+CLASS="filename"
+>configure.ac</TT
+>.
+ <TT
+CLASS="filename"
+>configure.ac</TT
+> contains both Bourne shell
+ script, and m4 macros. <B
+CLASS="command"
+>autoconf</B
+> expands
+ the m4 macros into &#8216;real&#8217; shell script. The
+ resulting <B
+CLASS="command"
+>configure</B
+> script performs various
+ checks for installed programs, compiler characteristics and
+ other system information such as available headers and
+ libraries. See the GNU <B
+CLASS="command"
+>autoconf</B
+> manual for
+ more information.
+ </P
+><P
+>&#13; <B
+CLASS="command"
+>pkg-config</B
+> provides an m4 macro,
+ <CODE
+CLASS="function"
+>PKG_CHECK_MODULES</CODE
+>, suitable for use in a
+ <TT
+CLASS="filename"
+>configure.ac</TT
+> script. It defines the
+ environment variables required for building libgutenprint-based
+ programs. For example, to set GUTENPRINT_CFLAGS and
+ GUTENPRINT_LIBS:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN148"
+></A
+><PRE
+CLASS="programlisting"
+>PKG_CHECK_MODULES(GUTENPRINT, gutenprint)</PRE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="AEN150"
+>2.3.4. <B
+CLASS="command"
+>automake</B
+></A
+></H2
+><P
+>&#13; The <B
+CLASS="command"
+>automake</B
+> program can be used to
+ generate <TT
+CLASS="filename"
+>Makefile.in</TT
+> files suitable for
+ use with a <TT
+CLASS="filename"
+>configure</TT
+> script generated by
+ <B
+CLASS="command"
+>autoconf</B
+>. As <B
+CLASS="command"
+>automake</B
+>
+ <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>requires</I
+></SPAN
+> <B
+CLASS="command"
+>autoconf</B
+>,
+ this section will assume the use of a
+ <TT
+CLASS="filename"
+>configure.ac</TT
+> script which uses the
+ <CODE
+CLASS="function"
+>PKG_CHECK_MODULES</CODE
+> macro described above
+ (there is little point in <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>not</I
+></SPAN
+> using it!).
+ </P
+><P
+>&#13; It is highly recommended that you use GNU
+ <B
+CLASS="command"
+>autoconf</B
+> and
+ <B
+CLASS="command"
+>automake</B
+>. They will allow you to make your
+ software build on most platforms with most compilers.
+ <B
+CLASS="command"
+>automake</B
+> makes writing complex
+ <TT
+CLASS="filename"
+>Makefile</TT
+>'s very easy, by expressing how
+ to build your packages in terms of what files are required to
+ build a project and the installation locations of the files.
+ It imposes a few limitations over using plain
+ <TT
+CLASS="filename"
+>Makefile</TT
+>'s, such as in the use of
+ conditionals, but these problems are vastly outweighed by the
+ benefits it brings. It also creates many extra targets in the
+ generated <TT
+CLASS="filename"
+>Makefile.in</TT
+> files such as
+ <CODE
+CLASS="option"
+>dist</CODE
+>, <CODE
+CLASS="option"
+>distcheck</CODE
+>,
+ <CODE
+CLASS="option"
+>clean</CODE
+>, <CODE
+CLASS="option"
+>distclean</CODE
+>,
+ <CODE
+CLASS="option"
+>maintainer-clean</CODE
+> and <CODE
+CLASS="option"
+>tags</CODE
+>,
+ and there are many more more available. See the GNU
+ <B
+CLASS="command"
+>automake</B
+> manual for more information.
+ </P
+><P
+>&#13; Because <CODE
+CLASS="function"
+>PKG_CHECK_MODULES</CODE
+> calls
+ <CODE
+CLASS="function"
+>AC_SUBST</CODE
+> to substitute
+ <CODE
+CLASS="varname"
+>GUTENPRINT_CFLAGS</CODE
+> and
+ <CODE
+CLASS="varname"
+>GUTENPRINT_LIBS</CODE
+>, <B
+CLASS="command"
+>automake</B
+>
+ will automatically set these variables in the
+ <TT
+CLASS="filename"
+>Makefile.in</TT
+> files it generates, requiring
+ no additional effort on your part!
+ </P
+><P
+>&#13; As in previous examples, we will make a program
+ <B
+CLASS="command"
+>stpimage</B
+> from
+ <TT
+CLASS="filename"
+>stpimage.c</TT
+>. This is how one might build
+ write a <TT
+CLASS="filename"
+>Makefile.am</TT
+> to do this:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN189"
+></A
+><PRE
+CLASS="programlisting"
+>AUTOMAKE_OPTIONS = 1.7 gnu
+MAINT_CHARSET = latin1
+
+@SET_MAKE@
+
+AM_CFLAGS = $(GUTENPRINT_CFLAGS)
+
+bin_PROGRAMS = stpimage
+stpimage_SOURCES = stpimage.c
+stpimage_LDADD = $(GUTENPRINT_LIBS)
+
+MAINTAINERCLEANFILES = Makefile.in</PRE
+><P
+></P
+></DIV
+><P
+>&#13; That's all there is to it! Please note that this example also
+ requires the macro <CODE
+CLASS="function"
+>AC_PROG_MAKE_SET</CODE
+> to be
+ used in <TT
+CLASS="filename"
+>configure.ac</TT
+>.
+ </P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="x67.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="c194.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Linking with libgutenprint</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="c48.html"
+ACCESSKEY="U"
+>Up</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Reporting Bugs</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/reference-html/x955.html b/doc/developer/reference-html/x955.html
new file mode 100644
index 0000000..bc3f395
--- /dev/null
+++ b/doc/developer/reference-html/x955.html
@@ -0,0 +1,2297 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>Remote Mode Commands</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The Developer's Guide to Gutenprint"
+HREF="index.html"><LINK
+REL="UP"
+TITLE="ESC/P2"
+HREF="c464.html"><LINK
+REL="PREVIOUS"
+TITLE="ESC/P2"
+HREF="c464.html"><LINK
+REL="NEXT"
+TITLE="Appropriate Remote Commands"
+HREF="x1669.html"></HEAD
+><BODY
+CLASS="sect1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The Developer's Guide to Gutenprint</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="c464.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+>Chapter 5. ESC/P2</TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="x1669.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="sect1"
+><H1
+CLASS="sect1"
+><A
+NAME="AEN955"
+>5.2. Remote Mode Commands</A
+></H1
+><P
+>&#13; The following description of remote commands comes out of an
+ examination of the sequences used by the printer utilities
+ bundled with the Windows drivers for the ESC740, and from other
+ sources (some Epson manuals, experimentation, analysis of print
+ files). It is largely speculative as these commands are not all
+ documented in the Epson documentation we have access to.
+ Generally, newer manuals provide more thorough documentation.
+ </P
+><P
+>&#13; Remote command mode is entered when the printer is sent the
+ following sequence:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN959"
+></A
+><PRE
+CLASS="screen"
+>ESC (R BC=8 00 R E M O T E 1</PRE
+><P
+></P
+></DIV
+><P
+>&#13; Remote mode commands are then sent, and terminated with the
+ following sequence:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN962"
+></A
+><PRE
+CLASS="screen"
+>ESC 00 00 00</PRE
+><P
+></P
+></DIV
+><P
+>&#13; All remote mode commands must be sent before the initial
+ <TT
+CLASS="literal"
+>ESC (G</TT
+> command is sent.
+ </P
+><P
+>&#13; This introductory sequence is then followed by a sequence of
+ commands. Each command is constructed as follows:
+ </P
+><P
+></P
+><OL
+TYPE="1"
+><LI
+><P
+>&#13; Two ASCII bytes indicating the function
+ </P
+></LI
+><LI
+><P
+>&#13; A byte count (two bytes, little-endian) for the parameters
+ </P
+></LI
+><LI
+><P
+>&#13; Binary parameters, if any
+ </P
+></LI
+></OL
+><P
+>&#13; This is a list of all remote commands we have seen:
+ </P
+><P
+></P
+><DIV
+CLASS="variablelist"
+><P
+><B
+>ESC/P2 Remote Mode Commands</B
+></P
+><DL
+><DT
+><TT
+CLASS="literal"
+>NC <CODE
+CLASS="varname"
+>BC</CODE
+>=2 00
+ 00</TT
+></DT
+><DD
+><P
+>&#13; Print a nozzle check pattern.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>VI <CODE
+CLASS="varname"
+>BC</CODE
+>=2 00
+ 00</TT
+></DT
+><DD
+><P
+>&#13; On my 740, prints the following, probably &#8220;version
+ information&#8221;:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN989"
+></A
+><PRE
+CLASS="screen"
+>W01286 I02382\r\n</PRE
+><P
+></P
+></DIV
+></DD
+><DT
+><TT
+CLASS="literal"
+>* AI <CODE
+CLASS="varname"
+>BC</CODE
+>=3 00 00 00</TT
+></DT
+><DD
+><P
+>&#13; Prints a &#8220;printer ID&#8221;. On one 870, prints the
+ following:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN997"
+></A
+><PRE
+CLASS="screen"
+>51-51-50-51-49-48\r\n</PRE
+><P
+></P
+></DIV
+><P
+>&#13; The Windows driver has a text entry field where this
+ number can be entered, but its purpose is unknown.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* LD <CODE
+CLASS="varname"
+>BC</CODE
+>=0</TT
+></DT
+><DD
+><P
+>&#13; Load printer defaults from NVRAM, DIP switches, and/or
+ ROM. This apparently does not load factory defaults per
+ se, but any settings that are saved. This is commonly
+ used right at the end of each print job after the
+ <TT
+CLASS="literal"
+>ESC @</TT
+> printer reset command.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* CH <CODE
+CLASS="varname"
+>BC</CODE
+>=2 00
+ <CODE
+CLASS="varname"
+>xx</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Perform a head cleaning cycle. The heads to clean are
+ determined by parameter <CODE
+CLASS="varname"
+>xx</CODE
+>:
+ </P
+><DIV
+CLASS="table"
+><A
+NAME="AEN1015"
+></A
+><P
+><B
+>Table 5-5. Head cleaning parameters</B
+></P
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL
+WIDTH="1*"
+TITLE="id"><COL
+WIDTH="1*"
+TITLE="description"><THEAD
+><TR
+><TH
+><CODE
+CLASS="varname"
+>xx</CODE
+></TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><CODE
+CLASS="constant"
+>00</CODE
+></TD
+><TD
+>Clean all heads</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>01</CODE
+></TD
+><TD
+>Clean black head</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>02</CODE
+></TD
+><TD
+>Clean color heads</TD
+></TR
+></TBODY
+></TABLE
+></DIV
+><P
+>&#13; While <CODE
+CLASS="varname"
+>xx</CODE
+> = <CODE
+CLASS="constant"
+>00</CODE
+> is
+ likely supported by all printers, <CODE
+CLASS="varname"
+>xx</CODE
+>
+ = <CODE
+CLASS="constant"
+>01</CODE
+> and <CODE
+CLASS="constant"
+>02</CODE
+>
+ are not.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* DT <CODE
+CLASS="varname"
+>BC</CODE
+>=3 00
+ <CODE
+CLASS="varname"
+>xx</CODE
+> 00</TT
+></DT
+><DD
+><P
+>&#13; Print an alignment pattern. There are three patterns,
+ which are picked via the choice of
+ <CODE
+CLASS="varname"
+>xx</CODE
+>. Pattern <CODE
+CLASS="constant"
+>0</CODE
+>
+ is coarse, pattern <CODE
+CLASS="constant"
+>1</CODE
+> is medium, and
+ pattern <CODE
+CLASS="constant"
+>2</CODE
+> is fine.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* DA <CODE
+CLASS="varname"
+>BC</CODE
+>=4 00
+ <CODE
+CLASS="varname"
+>xx</CODE
+> 00
+ <CODE
+CLASS="varname"
+>yy</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set results for the alignment pattern.
+ <CODE
+CLASS="varname"
+>xx</CODE
+> is the pattern
+ (<CODE
+CLASS="constant"
+>1</CODE
+>--<CODE
+CLASS="constant"
+>3</CODE
+>);
+ <CODE
+CLASS="varname"
+>yy</CODE
+> is the best choice from the set
+ (<CODE
+CLASS="constant"
+>1</CODE
+>--<CODE
+CLASS="constant"
+>7</CODE
+> or
+ <CODE
+CLASS="constant"
+>1</CODE
+>--<CODE
+CLASS="constant"
+>15</CODE
+>). This
+ does not save to NVRAM, so when the printer is powered
+ off, the setting will be lost.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* SV <CODE
+CLASS="varname"
+>BC</CODE
+>=0</TT
+></DT
+><DD
+><P
+>&#13; Save the current settings to NVRAM.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* RS <CODE
+CLASS="varname"
+>BC</CODE
+>=1
+ 01</TT
+></DT
+><DD
+><P
+>&#13; Reset the printer.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* IQ <CODE
+CLASS="varname"
+>BC</CODE
+>=1
+ 01</TT
+></DT
+><DD
+><P
+>&#13; Get ink quantity. This requires direct access to the
+ printer port. The return looks like
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1089"
+></A
+><PRE
+CLASS="screen"
+>IQ:KKCCMMYY</PRE
+><P
+></P
+></DIV
+><P
+>&#13; or
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1092"
+></A
+><PRE
+CLASS="screen"
+>IQ:KKCCMMYYccmm</PRE
+><P
+></P
+></DIV
+><P
+>&#13; (for 4-color and 6-color printers respectively), where
+ each pair of digits are hexadecimal representations of
+ percent.
+ </P
+></DD
+></DL
+></DIV
+><P
+>&#13; The following two commands have been observed on an STP 870.
+</P
+><P
+></P
+><DIV
+CLASS="variablelist"
+><DL
+><DT
+><TT
+CLASS="literal"
+>* IR <CODE
+CLASS="varname"
+>BC</CODE
+>=2 00
+ <CODE
+CLASS="varname"
+>xx</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>Function unknown</I
+></SPAN
+>. This command has
+ been observed on an STP 870 with
+ <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>03</CODE
+> at the start
+ of a job and <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>02</CODE
+>
+ at the end of a job (where it is followed by an
+ <TT
+CLASS="literal"
+>LD</TT
+> command). When in roll mode, the
+ values change to
+ <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>01</CODE
+> at the start
+ of a job and <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>00</CODE
+>
+ at the end of a job.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* FP <CODE
+CLASS="varname"
+>BC</CODE
+>=3 00
+ <CODE
+CLASS="varname"
+>pos</CODE
+>[2]</TT
+></DT
+><DD
+><P
+>&#13; Specify the horizontal left margin in units of 1/360 inch.
+ The default value for <CODE
+CLASS="varname"
+>pos</CODE
+> is
+ <CODE
+CLASS="constant"
+>0</CODE
+>. For borderless printing on
+ printers that support it, a value of
+ <CODE
+CLASS="constant"
+>-80</CODE
+> (<CODE
+CLASS="constant"
+>FFB0h</CODE
+>)
+ should be used.
+ </P
+></DD
+></DL
+></DIV
+><P
+>&#13; The commands below are partially documented in the Stylus Pro
+ 9000 manual. Much of this information is interpreted; none is
+ tested.
+ </P
+><P
+></P
+><DIV
+CLASS="variablelist"
+><DL
+><DT
+><TT
+CLASS="literal"
+>* SN <CODE
+CLASS="varname"
+>BC</CODE
+>=3 00
+ <CODE
+CLASS="varname"
+>xx</CODE
+> <CODE
+CLASS="varname"
+>yy</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Select Mechanism Sequence. <CODE
+CLASS="varname"
+>xx</CODE
+>
+ controls which sub-operation is performed.
+ <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>00</CODE
+> selects
+ the &#8220;Feed paper sequence setting&#8221;.
+ <CODE
+CLASS="varname"
+>yy</CODE
+> can take on the following values
+ (on the STP 870, at any rate):
+ </P
+><DIV
+CLASS="table"
+><A
+NAME="AEN1139"
+></A
+><P
+><B
+>Table 5-6. Media types</B
+></P
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL
+WIDTH="1*"
+TITLE="id"><COL
+WIDTH="1*"
+TITLE="description"><THEAD
+><TR
+><TH
+><CODE
+CLASS="varname"
+>yy</CODE
+></TH
+><TH
+>Media type</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><CODE
+CLASS="constant"
+>0</CODE
+></TD
+><TD
+>Default</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>1</CODE
+></TD
+><TD
+>Plain paper</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>2</CODE
+></TD
+><TD
+>Postcards</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>3</CODE
+></TD
+><TD
+>&#13; Film (photo quality glossy film, transparencies)
+ </TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>4</CODE
+></TD
+><TD
+>Envelopes</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>5</CODE
+></TD
+><TD
+>Plain paper (fast load)</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>6</CODE
+></TD
+><TD
+>&#13; Back light film (although this has been observed
+ with heavyweight matte paper)
+ </TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>7</CODE
+></TD
+><TD
+>&#13; Matte paper (observed with 360 dpi inkjet paper,
+ and photo quality inkjet paper)
+ </TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>8</CODE
+></TD
+><TD
+>Photo paper</TD
+></TR
+></TBODY
+></TABLE
+></DIV
+><P
+>&#13; Experimentation suggests that this setting changes
+ details of how the printers' cut sheet feeder works,
+ presumably to tune it for different types of paper.
+ </P
+><P
+>&#13; <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>01</CODE
+> controls
+ the platen gap setting;
+ <CODE
+CLASS="varname"
+>yy</CODE
+>=<CODE
+CLASS="constant"
+>00</CODE
+> is the
+ default, <CODE
+CLASS="varname"
+>yy</CODE
+>=<CODE
+CLASS="constant"
+>1</CODE
+> or
+ <CODE
+CLASS="constant"
+>2</CODE
+> are higher settings.
+ </P
+><P
+>&#13; <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>02</CODE
+> controls
+ paper loading speed
+ (<CODE
+CLASS="varname"
+>yy</CODE
+>=<CODE
+CLASS="constant"
+>0</CODE
+> is normal,
+ <CODE
+CLASS="constant"
+>1</CODE
+> is fast, <CODE
+CLASS="constant"
+>2</CODE
+>
+ is slow). It appears that <CODE
+CLASS="constant"
+>1</CODE
+> is
+ used when printing on &#8220;plain paper&#8221;,
+ &#8220;360dpi ink jet paper&#8221; or &#8220;ink jet
+ transparencies&#8221;, and
+ <CODE
+CLASS="varname"
+>yy</CODE
+>=<CODE
+CLASS="constant"
+>00</CODE
+> for all
+ other paper type settings.
+ </P
+><P
+>&#13; <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>07</CODE
+> controls
+ duplex printing for printers with that capability
+ (<CODE
+CLASS="varname"
+>yy</CODE
+>=<CODE
+CLASS="varname"
+>0</CODE
+> is default,
+ for non-duplex printing; <CODE
+CLASS="constant"
+>1</CODE
+> is front
+ side of the paper, and <CODE
+CLASS="varname"
+>2</CODE
+> is back
+ side).
+ </P
+><P
+>&#13; <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>09</CODE
+> controls
+ zero margin printing on the printers with the capability
+ of printing zero-margin on all sides (Stylus Photo
+ 780/790, 890, and 1280/1290).
+ <CODE
+CLASS="varname"
+>yy</CODE
+>=<CODE
+CLASS="constant"
+>0</CODE
+> is the
+ default; <CODE
+CLASS="constant"
+>1</CODE
+> enables zero margin
+ printing.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* PP <CODE
+CLASS="varname"
+>BC</CODE
+>=3 00
+ <CODE
+CLASS="varname"
+>xx</CODE
+>
+ <CODE
+CLASS="varname"
+>yy</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set Paper Path.
+ <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>2</CODE
+> indicates
+ manual feed,
+ <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>3</CODE
+> is for roll
+ paper. <CODE
+CLASS="varname"
+>yy</CODE
+> selects &#8220;paper path
+ number&#8221;.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* AC <CODE
+CLASS="varname"
+>BC</CODE
+>=2 00
+ <CODE
+CLASS="varname"
+>xx</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set Auto Cutting State.
+ <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>0</CODE
+> selects
+ auto cutting off,
+ <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>1</CODE
+> selects
+ auto cutting on, and
+ <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>2</CODE
+> indicates
+ horizontal print page line on. It appears that with
+ auto cutting on, roll paper is cut automatically at the
+ point a formfeed character is sent. The formfeed
+ character is normally used to eject a page; with this
+ turned on, it also cuts the roll paper. Horizontal
+ print page line on prints a narrow line of black dots at
+ the position the paper should be cut manually.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* DR <CODE
+CLASS="varname"
+>BC</CODE
+>=4 00 xx
+ <CODE
+CLASS="varname"
+>DT2</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set Drying Time.
+ <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>00</CODE
+> sets the
+ drying time &#8220;per scan&#8221; (per pass?);
+ <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>01</CODE
+> sets the
+ drying time per page. <CODE
+CLASS="varname"
+>DT</CODE
+> indicates
+ the drying time, which is in seconds if page mode is
+ used and in milliseconds if scan mode is used.
+ <CODE
+CLASS="varname"
+>DT</CODE
+> must not exceed 3600 seconds in
+ per-page mode and 10000 milliseconds in per-scan mode.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* IK <CODE
+CLASS="varname"
+>BC</CODE
+>=2 00
+ <CODE
+CLASS="varname"
+>xx</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Select Ink Type.
+ <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>00</CODE
+> selects
+ dye ink. Pigment ink is apparently selected by
+ <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>01</CODE
+>. This
+ probably does not apply to the consumer-grade printers.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* PZ BC=2 00 xx</TT
+></DT
+><DD
+><P
+>&#13; Set Pause After Printing.
+ <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>00</CODE
+> selects no
+ pause after printing;
+ <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>01</CODE
+> selects
+ pause after printing. If turned on, the printer is
+ paused after the page is ejected (by the FF byte). If
+ cutting is turned on, the printer is paused
+ <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>after</I
+></SPAN
+> the cutting or printing of
+ the horizontal cut line.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* EX <CODE
+CLASS="varname"
+>BC</CODE
+>=6 00 00 00 00 0x14
+ <CODE
+CLASS="varname"
+>xx</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set Vertical Print Page Line Mode.
+ <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>00</CODE
+> is off,
+ <CODE
+CLASS="varname"
+>xx</CODE
+>=<CODE
+CLASS="constant"
+>01</CODE
+> is on. If
+ turned on, this prints vertical trim lines at the left
+ and right margins.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* EX <CODE
+CLASS="varname"
+>BC</CODE
+>=6 00 00 00 00 0x05
+ <CODE
+CLASS="varname"
+>xx</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set Roll Paper Mode. If <CODE
+CLASS="varname"
+>xx</CODE
+> is
+ <CODE
+CLASS="constant"
+>0</CODE
+>, roll paper mode is off; if
+ <CODE
+CLASS="varname"
+>xx</CODE
+> is <CODE
+CLASS="constant"
+>1</CODE
+>, roll
+ paper mode is on.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* EX <CODE
+CLASS="varname"
+>BC</CODE
+>=3 00
+ <CODE
+CLASS="varname"
+>xx</CODE
+> <CODE
+CLASS="varname"
+>yy</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Appears to be a synonym for the <TT
+CLASS="literal"
+>SN</TT
+>
+ command described above.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* PH <CODE
+CLASS="varname"
+>BC</CODE
+>=2 00
+ <CODE
+CLASS="varname"
+>xx</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Select Paper Thickness. Set the paper thickness
+ <CODE
+CLASS="varname"
+>xx</CODE
+> in .1 mm units. This must not
+ exceed <CODE
+CLASS="constant"
+>0x10</CODE
+> (1.6 mm). If the
+ thickness is set &#8220;more than&#8221; .6 mm (which
+ probably means &#8220;at least&#8221; 0.6 mm, since the
+ other case reads &#8220;less than 0.5 mm&#8221;), the
+ platen gap is set high irrespective of the
+ <TT
+CLASS="literal"
+>SN</TT
+> command.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* PM <CODE
+CLASS="varname"
+>BC</CODE
+>=2 00
+ 00</TT
+></DT
+><DD
+><P
+>&#13; <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>Function unknown</I
+></SPAN
+>. Used on the STC
+ 3000 at least when using roll feed, and on the STP 870
+ in all print files analysed to date.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* ST <CODE
+CLASS="varname"
+>BC</CODE
+>=2 00
+ <CODE
+CLASS="varname"
+>xx</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Epson's STP 750/1200 programming guide refers to the
+ <TT
+CLASS="literal"
+>ST</TT
+> command as &#8220;Set printer
+ state reply&#8221;. If <CODE
+CLASS="varname"
+>xx</CODE
+> is
+ <CODE
+CLASS="constant"
+>0</CODE
+> or <CODE
+CLASS="constant"
+>2</CODE
+>, the
+ printer will not send status replies. If
+ <CODE
+CLASS="varname"
+>xx</CODE
+> is <CODE
+CLASS="constant"
+>1</CODE
+> or
+ <CODE
+CLASS="constant"
+>3</CODE
+>, the printer will send status
+ replies. The status replies consist of state, error
+ codes, ink leve, firmware version, and warning status.
+ </P
+><P
+>&#13; The actual reply is documented as
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1341"
+></A
+><PRE
+CLASS="screen"
+>@BDC ST\r
+ST: xx;
+[ER: yy;]
+IQ: n1n2n3n4;
+[WR: w1,w2...;]
+RV: zz;
+AI:CW:02kkccmmyy, MI:mm
+[TC:tttt;]
+INK:...;
+\f</PRE
+><P
+></P
+></DIV
+><P
+>&#13; (<TT
+CLASS="literal"
+>\r</TT
+> is carriage return;
+ <TT
+CLASS="literal"
+>\n</TT
+> is newline; <TT
+CLASS="literal"
+>\f</TT
+>
+ is formfeed.)
+ </P
+><P
+>&#13; <TT
+CLASS="literal"
+>ST</TT
+> is the printer status:
+ </P
+><DIV
+CLASS="table"
+><A
+NAME="AEN1349"
+></A
+><P
+><B
+>Table 5-7. Printer status codes</B
+></P
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL
+WIDTH="1*"
+TITLE="status"><COL
+WIDTH="1*"
+TITLE="description"><THEAD
+><TR
+><TH
+>Status code</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><CODE
+CLASS="constant"
+>00</CODE
+></TD
+><TD
+>Error</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>01</CODE
+></TD
+><TD
+>Self-test</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>02</CODE
+></TD
+><TD
+>Busy</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>03</CODE
+></TD
+><TD
+>Waiting while printing</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>04</CODE
+></TD
+><TD
+>Idle</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>07</CODE
+></TD
+><TD
+>Cleaning/filling ink heads</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>08</CODE
+></TD
+><TD
+>Not yet initialized/filling heads</TD
+></TR
+></TBODY
+></TABLE
+></DIV
+><P
+>&#13; <TT
+CLASS="literal"
+>ER</TT
+>, if provided, is the error status:
+ </P
+><DIV
+CLASS="table"
+><A
+NAME="AEN1389"
+></A
+><P
+><B
+>Table 5-8. Printer error codes</B
+></P
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL
+WIDTH="1*"
+TITLE="error"><COL
+WIDTH="1*"
+TITLE="description"><THEAD
+><TR
+><TH
+>Error code</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><CODE
+CLASS="constant"
+>00</CODE
+></TD
+><TD
+>Fatal Error</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>01</CODE
+></TD
+><TD
+>Interface not selected</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>04</CODE
+></TD
+><TD
+>Paper jam</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>05</CODE
+></TD
+><TD
+>Out of ink</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>06</CODE
+></TD
+><TD
+>Paper out</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>0D</CODE
+></TD
+><TD
+>Paper gap error</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>10</CODE
+></TD
+><TD
+>Maintenance request</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>11</CODE
+></TD
+><TD
+>Tear-off mode selected</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>12</CODE
+></TD
+><TD
+>Double feed error</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>1C</CODE
+></TD
+><TD
+>Cutter position error</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>1D</CODE
+></TD
+><TD
+>Cutter jam</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>1E</CODE
+></TD
+><TD
+>Ink color error</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>23</CODE
+></TD
+><TD
+>Ink combination error</TD
+></TR
+></TBODY
+></TABLE
+></DIV
+><P
+>&#13; <TT
+CLASS="literal"
+>IQ</TT
+> is the amount of ink left, as a
+ (decimal!) percentage expressed in hexadecimal. The
+ values are black, cyan, magenta, and yellow. 6 and 7
+ color printers usually specify two or three additional
+ values for light cyan, light magenta, and gray.
+ However, some low end 6-color printers specify only four
+ values.
+ </P
+><P
+>&#13; For printers with different ink cartridge options, the
+ following additional values may appear:
+ </P
+><DIV
+CLASS="table"
+><A
+NAME="AEN1454"
+></A
+><P
+><B
+>Table 5-9. Printer additional ink codes</B
+></P
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL
+WIDTH="1*"
+TITLE="code"><COL
+WIDTH="1*"
+TITLE="description"><THEAD
+><TR
+><TH
+>Ink code</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><CODE
+CLASS="constant"
+>NA</CODE
+></TD
+><TD
+>Ink cartridge is not inserted</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>RE</CODE
+></TD
+><TD
+>&#13; Ink cartridge information cannot be read
+ </TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>WE</CODE
+></TD
+><TD
+>&#13; Ink cartridge information cannot be written
+ </TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>CI</CODE
+></TD
+><TD
+>&#13; Ink cartridge is inserted, but has not been read
+ </TD
+></TR
+></TBODY
+></TABLE
+></DIV
+><P
+>&#13; <TT
+CLASS="literal"
+>WR</TT
+>, if provided, is the warning status:
+ </P
+><DIV
+CLASS="table"
+><A
+NAME="AEN1482"
+></A
+><P
+><B
+>Table 5-10. Printer warning codes</B
+></P
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL
+WIDTH="1*"
+TITLE="warning"><COL
+WIDTH="1*"
+TITLE="description"><THEAD
+><TR
+><TH
+>Warning code</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><CODE
+CLASS="constant"
+>10</CODE
+></TD
+><TD
+>&#13; Black ink low (Photo black on printers using
+ UltraChrome® ink)
+ </TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>11</CODE
+></TD
+><TD
+>Cyan</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>12</CODE
+></TD
+><TD
+>Magenta</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>13</CODE
+></TD
+><TD
+>Yellow</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>14</CODE
+></TD
+><TD
+>Light cyan (presumably)</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>15</CODE
+></TD
+><TD
+>Light magenta (presumably)</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>17</CODE
+></TD
+><TD
+>&#13; Gray (with UltraChrome-compatible printers)
+ </TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>18</CODE
+></TD
+><TD
+>Matte black 1 (UltraChrome)</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>19</CODE
+></TD
+><TD
+>Matte black 2 (UltraChrome)</TD
+></TR
+></TBODY
+></TABLE
+></DIV
+><P
+>&#13; <TT
+CLASS="literal"
+>RV</TT
+> is the firmware revision (one byte
+ ASCII).
+ </P
+><P
+>&#13; <TT
+CLASS="literal"
+>AI</TT
+> is actuator information. These
+ are two byte ASCII codes that indicate ``ink weight rank
+ ID'' of KCMY, respectively.
+ </P
+><P
+>&#13; <TT
+CLASS="literal"
+>TC</TT
+>, if provided, is the total time of
+ cleaning or ink filling (?).
+ </P
+><P
+>&#13; <TT
+CLASS="literal"
+>RC</TT
+>, if provided, is the firmware
+ revision.
+ </P
+><P
+>&#13; <TT
+CLASS="literal"
+>INK:</TT
+> and <TT
+CLASS="literal"
+>MI</TT
+> are
+ <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>not documented</I
+></SPAN
+>.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* SM <CODE
+CLASS="varname"
+>BC</CODE
+>=2 00
+ <CODE
+CLASS="varname"
+>xx</CODE
+></TT
+></DT
+><DD
+><P
+>&#13; Set Status Reply Rate. <CODE
+CLASS="varname"
+>xx</CODE
+> is the
+ repeat interval in seconds. If <CODE
+CLASS="varname"
+>xx</CODE
+> is
+ <CODE
+CLASS="constant"
+>0</CODE
+>, the status is returned only when
+ the printer's state changes.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* ST <CODE
+CLASS="varname"
+>BC</CODE
+>=1
+ 01</TT
+></DT
+><DD
+><P
+>&#13; Reply Printer Status. The reply is formatted as follows:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1556"
+></A
+><PRE
+CLASS="screen"
+>@BDC PS\r\nST:<CODE
+CLASS="varname"
+>xx</CODE
+>;\f</PRE
+><P
+></P
+></DIV
+><P
+>&#13; <TT
+CLASS="literal"
+>\r</TT
+> is carriage return;
+ <TT
+CLASS="literal"
+>\n</TT
+> is newline; <TT
+CLASS="literal"
+>\f</TT
+> is
+ formfeed). If <CODE
+CLASS="varname"
+>xx</CODE
+> (the reply value) is
+ <CODE
+CLASS="constant"
+>0</CODE
+> or <CODE
+CLASS="constant"
+>2</CODE
+>,
+ automatic status update is disabled; if
+ <CODE
+CLASS="constant"
+>1</CODE
+> or <CODE
+CLASS="constant"
+>3</CODE
+>, it is
+ enabled.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* SM <CODE
+CLASS="varname"
+>BC</CODE
+>=1
+ 01</TT
+></DT
+><DD
+><P
+>&#13; Reply Printer Status Rate. The reply is formatted as
+ follows:
+ </P
+><DIV
+CLASS="informalexample"
+><P
+></P
+><A
+NAME="AEN1574"
+></A
+><PRE
+CLASS="screen"
+>@BDC PS\r\nST:xx;\f</PRE
+><P
+></P
+></DIV
+><P
+>&#13; <TT
+CLASS="literal"
+>\r</TT
+> is carriage return;
+ <TT
+CLASS="literal"
+>\n</TT
+> is newline; <TT
+CLASS="literal"
+>\f</TT
+> is
+ formfeed). See <TT
+CLASS="literal"
+>SM
+ <CODE
+CLASS="varname"
+>BC</CODE
+>=2</TT
+> above for the meaning of
+ the return value.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* ??
+ <CODE
+CLASS="varname"
+>BC</CODE
+>=<CODE
+CLASS="varname"
+>xx</CODE
+>
+ <CODE
+CLASS="varname"
+>y</CODE
+>[1] &#8230;
+ <CODE
+CLASS="varname"
+>y</CODE
+>[xx]</TT
+></DT
+><DD
+><P
+>&#13; Echo Parameters (perhaps better described as Echo
+ Commands). The command string is executed (it would
+ appear from the documentation), and the string sent is
+ returned using a sequence similar to that described in
+ the <TT
+CLASS="literal"
+>ST <CODE
+CLASS="varname"
+>BC</CODE
+>=1</TT
+> and
+ <TT
+CLASS="literal"
+>SM <CODE
+CLASS="varname"
+>BC</CODE
+>=1</TT
+> commands.
+ Note that in this case the number of bytes is variable!
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* SM <CODE
+CLASS="varname"
+>BC</CODE
+>=2 00
+ 02</TT
+></DT
+><DD
+><P
+>&#13; <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>Function unknown</I
+></SPAN
+>. Used on the STC
+ 3000 at least when using roll feed.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* JE <CODE
+CLASS="varname"
+>BC</CODE
+>=1
+ 00</TT
+></DT
+><DD
+><P
+>&#13; <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>Function unknown</I
+></SPAN
+>. On new printers
+ (STC 740 or newer), this command should be sent after
+ all data has been sent. If this command is not sent,
+ and the printer is connected to a Windows system, the
+ last page of the job will not print completely. The
+ most likely explanation for for this is that the Windows
+ driver typically puts the printer in 1284.4 packet mode,
+ and this command has the effect of flushing the buffer
+ in the printer.
+ </P
+></DD
+><DT
+><TT
+CLASS="literal"
+>* CO <CODE
+CLASS="varname"
+>BC</CODE
+>=8 00
+ <CODE
+CLASS="varname"
+>cutter</CODE
+>[1] <CODE
+CLASS="varname"
+>page</CODE
+>[1]
+ <CODE
+CLASS="varname"
+>unit</CODE
+>[1]
+ <CODE
+CLASS="varname"
+>position</CODE
+>[4]</TT
+></DT
+><DD
+><P
+>&#13; Specify paper cutting on Stylus Photo 2200 (and perhaps
+ some other printers). <CODE
+CLASS="varname"
+>cutter</CODE
+> must be
+ 0. <CODE
+CLASS="varname"
+>page</CODE
+> should be one of the
+ following:
+ </P
+><DIV
+CLASS="table"
+><A
+NAME="AEN1621"
+></A
+><P
+><B
+>Table 5-11. Paper cutting codes</B
+></P
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL
+WIDTH="1*"
+TITLE="code"><COL
+WIDTH="1*"
+TITLE="description"><THEAD
+><TR
+><TH
+>Code</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><CODE
+CLASS="constant"
+>0</CODE
+></TD
+><TD
+>All pages</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>1</CODE
+></TD
+><TD
+>First page only</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>2</CODE
+></TD
+><TD
+>Last page only</TD
+></TR
+></TBODY
+></TABLE
+></DIV
+><P
+>&#13; <CODE
+CLASS="varname"
+>unit</CODE
+> should be one of the following:
+ </P
+><DIV
+CLASS="table"
+><A
+NAME="AEN1645"
+></A
+><P
+><B
+>Table 5-12. Paper cutting units</B
+></P
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><COL
+WIDTH="1*"
+TITLE="code"><COL
+WIDTH="1*"
+TITLE="description"><THEAD
+><TR
+><TH
+>Code</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><CODE
+CLASS="constant"
+>0</CODE
+></TD
+><TD
+>1/360 in.</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>1</CODE
+></TD
+><TD
+>1/720 in.</TD
+></TR
+><TR
+><TD
+><CODE
+CLASS="constant"
+>2</CODE
+></TD
+><TD
+>1/1440 in.</TD
+></TR
+></TBODY
+></TABLE
+></DIV
+><P
+>&#13; This command should be used twice. The first
+ <TT
+CLASS="literal"
+>CO</TT
+> command specifies where the page
+ will be cut at the top, and the second specifies where
+ the page will be cut at the bottom. This permits
+ cutting both the top and the bottom of the page.
+ </P
+></DD
+></DL
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="c464.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="x1669.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>ESC/P2</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="c464.html"
+ACCESSKEY="U"
+>Up</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Appropriate Remote Commands</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/doc/developer/using.xml b/doc/developer/using.xml
new file mode 100644
index 0000000..c63ca7a
--- /dev/null
+++ b/doc/developer/using.xml
@@ -0,0 +1,238 @@
+<chapter>
+ <title>Using libgutenprint</title>
+ <para>
+ This chapter describes how to write programs that use
+ libgutenprint.
+ </para>
+ <sect1>
+ <title>Code prerequisites</title>
+ <para>
+ To use libgutenprint with a program, several steps must be taken:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Include the master libgutenprint header:
+ <informalexample>
+ <programlisting>&lt;gimp-print/gimp-print.h&gt;</programlisting>
+ </informalexample>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Call <function>stp_init</function>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Link with the libgutenprint library.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ The following is a short example program. It does not do
+ anything useful, but it does everything required to link with
+ libgutenprint and call other functions from libgutenprint.
+ </para>
+ <informalexample>
+ <programlisting>#include &lt;gimp-print/gimp-print.h&gt;
+int
+main (int argc, char *argv[])
+{
+ stp_init();
+ return 0;
+}
+ </programlisting>
+ </informalexample>
+ </sect1>
+ <sect1>
+ <title>Linking with libgutenprint</title>
+ <para>
+ To link a program with libgutenprint, the option
+ <option>-lgutenprint</option> needs to be passed to the compiler
+ when linking. For example, to compile and link
+ <filename>stpimage.c</filename> the following commands would be
+ used:
+ </para>
+ <screen><prompt>$</prompt> <userinput>gcc -c stpimage.c</userinput>
+<prompt>$</prompt> <userinput>gcc -o stpimage -lgutenprint stpimage.o</userinput></screen>
+ <para>
+ The compiler and linker flags needed may vary depending on the
+ options Gutenprint was configured with when it was built. The
+ <command>pkg-config</command> script will give the correct
+ parameters for the local installation.
+ </para>
+ </sect1>
+ <sect1>
+ <title>Integrating libgutenprint</title>
+ <para>
+ This section describes how to integrate the compiling and
+ linking of programs using libgutenprint with build
+ scripts. Commonly used systems include <command>make</command>,
+ but often <filename>Makefile</filename> files are generated by
+ using tools such as <command>autoconf</command> and
+ <command>automake</command>.
+ </para>
+ <sect2>
+ <title><command>pkg-config</command></title>
+ <para>
+ Depending on the nature of the computer system Gutenprint was
+ installed on, as well as the options passed to
+ <command>configure</command> when configuring the package when
+ it was built, the <varname>CFLAGS</varname> and
+ <varname>LIBS</varname> parameters needed to compile and link
+ programs with libgutenprint may vary. To make it simple to
+ determine what these are on any given system, a
+ <command>pkg-config</command> datafile was created when
+ Gutenprint was built. <command>pkg-config</command> will
+ output the correct parameters for the setup on your system.
+ See the
+ <citerefentry><refentrytitle>pkg-config(1)</refentrytitle>
+ </citerefentry> manual page for a compete synopsis.
+ </para>
+ <para>
+ The correct <varname>CFLAGS</varname> to use can be obtained
+ with the <option>--cflags</option> option:
+ </para>
+ <screen><prompt>$</prompt> <userinput>pkg-config --cflags gutenprint</userinput>
+-I/usr/local/include</screen>
+ <para>
+ The correct <varname>LIBS</varname> to use can the obtained
+ with the <option>--libs</option> option:
+ </para>
+ <screen><prompt>$</prompt> <userinput>pkg-config --libs gutenprint</userinput>
+-L/usr/local/lib -lgutenprint -lm -ldl</screen>
+ <para>
+ Lastly, the installed version of Gutenprint can be obtained with the
+ <varname>--version</varname> option:
+ </para>
+ <screen><prompt>$</prompt> <userinput>pkg-config --modversion gutenprint</userinput>
+4.3.23</screen>
+ <para>
+ The command can be used from the shell by enclosing it in
+ backquotes &lsquo;`&rsquo;:
+ </para>
+ <screen><prompt>$</prompt> <userinput>gcc `pkg-config --cflags gutenprint` -c stpimage.c</userinput>
+<prompt>$</prompt> <userinput>gcc `pkg-config --libs gutenprint` -o
+ stpimage stpimage.o</userinput></screen>
+ <para>
+ However, this is not the way it it typically used. Normally
+ it is used in a <filename>Makefile</filename> or by an m4
+ macro in a <command>configure</command> script.
+ </para>
+ </sect2>
+ <sect2>
+ <title><command>make</command></title>
+ <para>
+ If you use <command>make</command> with your own
+ <filename>Makefile</filename> files, then you are on your
+ own. This manual offers no assistance with doing this. Only
+ the following suggestion is offered, for use with GNU
+ <command>make</command>:
+ </para>
+ <programlisting>GUTENPRINT_VERSION = $(shell pkg-config --version gutenprint)
+GUTENPRINT_CFLAGS = $(shell pkg-config --cflags gutenprint)
+GUTENPRINT_LIBS = $(shell pkg-config --libs gutenprint)</programlisting>
+ <para>
+ How you choose to use these variables is entirely up to
+ you. See the GNU <command>make</command> manual for more
+ information.
+ </para>
+ </sect2>
+ <sect2>
+ <title><command>autoconf</command></title>
+ <para>
+ The <command>autoconf</command> program produces a Bourne
+ shell script called <filename>configure</filename> from a
+ template file called <filename>configure.ac</filename>.
+ <filename>configure.ac</filename> contains both Bourne shell
+ script, and m4 macros. <command>autoconf</command> expands
+ the m4 macros into &lsquo;real&rsquo; shell script. The
+ resulting <command>configure</command> script performs various
+ checks for installed programs, compiler characteristics and
+ other system information such as available headers and
+ libraries. See the GNU <command>autoconf</command> manual for
+ more information.
+ </para>
+ <para>
+ <command>pkg-config</command> provides an m4 macro,
+ <function>PKG_CHECK_MODULES</function>, suitable for use in a
+ <filename>configure.ac</filename> script. It defines the
+ environment variables required for building libgutenprint-based
+ programs. For example, to set GUTENPRINT_CFLAGS and
+ GUTENPRINT_LIBS:
+ </para>
+ <informalexample>
+ <programlisting>PKG_CHECK_MODULES(GUTENPRINT, gutenprint)</programlisting>
+ </informalexample>
+ </sect2>
+ <sect2>
+ <title><command>automake</command></title>
+ <para>
+ The <command>automake</command> program can be used to
+ generate <filename>Makefile.in</filename> files suitable for
+ use with a <filename>configure</filename> script generated by
+ <command>autoconf</command>. As <command>automake</command>
+ <emphasis>requires</emphasis> <command>autoconf</command>,
+ this section will assume the use of a
+ <filename>configure.ac</filename> script which uses the
+ <function>PKG_CHECK_MODULES</function> macro described above
+ (there is little point in <emphasis>not</emphasis> using it!).
+ </para>
+ <para>
+ It is highly recommended that you use GNU
+ <command>autoconf</command> and
+ <command>automake</command>. They will allow you to make your
+ software build on most platforms with most compilers.
+ <command>automake</command> makes writing complex
+ <filename>Makefile</filename>'s very easy, by expressing how
+ to build your packages in terms of what files are required to
+ build a project and the installation locations of the files.
+ It imposes a few limitations over using plain
+ <filename>Makefile</filename>'s, such as in the use of
+ conditionals, but these problems are vastly outweighed by the
+ benefits it brings. It also creates many extra targets in the
+ generated <filename>Makefile.in</filename> files such as
+ <option>dist</option>, <option>distcheck</option>,
+ <option>clean</option>, <option>distclean</option>,
+ <option>maintainer-clean</option> and <option>tags</option>,
+ and there are many more more available. See the GNU
+ <command>automake</command> manual for more information.
+ </para>
+ <para>
+ Because <function>PKG_CHECK_MODULES</function> calls
+ <function>AC_SUBST</function> to substitute
+ <varname>GUTENPRINT_CFLAGS</varname> and
+ <varname>GUTENPRINT_LIBS</varname>, <command>automake</command>
+ will automatically set these variables in the
+ <filename>Makefile.in</filename> files it generates, requiring
+ no additional effort on your part!
+ </para>
+ <para>
+ As in previous examples, we will make a program
+ <command>stpimage</command> from
+ <filename>stpimage.c</filename>. This is how one might build
+ write a <filename>Makefile.am</filename> to do this:
+ </para>
+ <informalexample>
+ <programlisting>AUTOMAKE_OPTIONS = 1.7 gnu
+MAINT_CHARSET = latin1
+
+@SET_MAKE@
+
+AM_CFLAGS = $(GUTENPRINT_CFLAGS)
+
+bin_PROGRAMS = stpimage
+stpimage_SOURCES = stpimage.c
+stpimage_LDADD = $(GUTENPRINT_LIBS)
+
+MAINTAINERCLEANFILES = Makefile.in</programlisting>
+ </informalexample>
+ <para>
+ That's all there is to it! Please note that this example also
+ requires the macro <function>AC_PROG_MAKE_SET</function> to be
+ used in <filename>configure.ac</filename>.
+ </para>
+ </sect2>
+ </sect1>
+</chapter>
diff --git a/doc/developer/weave.xml b/doc/developer/weave.xml
new file mode 100644
index 0000000..e2a1ec4
--- /dev/null
+++ b/doc/developer/weave.xml
@@ -0,0 +1,1409 @@
+<chapter>
+ <title>Weaving for inkjet printers</title>
+<!-- by Charles Briscoe-Smith and Robert Krawitz. -->
+<!-- converted to Texinfo and DocBook by Roger Leigh -->
+ <sect1>
+ <title>Introduction</title>
+ <para>
+ The Epson Stylus Color/Photo printers don't have memory to print
+ using all of the nozzles in the print head. For example, the
+ Stylus Photo 700/EX has 32 nozzles. At 720 dpi, with an 8" wide
+ image, a single line requires ((8 &times; 720 &times; 6) / 8)
+ bytes, or 4320 bytes (because the Stylus Photo printers have 6
+ ink colors). To use 32 nozzles per color would require 138240
+ bytes. It's actually worse than that, though, because the
+ nozzles are spaced 8 rows apart. Therefore, in order to store
+ enough data to permit sending the page as a simple raster, the
+ printer would require enough memory to store 256 rows, or
+ 1105920 bytes. Considering that the Photo EX can print 11"
+ wide, we're looking at more like 1.5 MB. In fact, these
+ printers are capable of 1440 dpi horizontal resolution. This
+ would require 3 MB. The printers actually have 64K-256K.
+ </para>
+ <para>
+ With the newer (740/750 and later) printers it's even worse,
+ since these printers support multiple dot sizes; of course, the
+ even newer 2880&times;720 printers don't help either.
+ </para>
+ <para>
+ Older Epson printers had a mode called
+ MicroWeave<superscript>&trade;</superscript>. In this mode, the
+ host fed the printer individual rows of dots, and the printer
+ bundled them up and sent them to the print head in the correct
+ order to achieve high quality. This MicroWeave mode still works
+ in new printers, but in some cases the implementation is very
+ minimal: the printer uses exactly one nozzle of each color (the
+ first one). This makes printing extremely slow (more than 30
+ minutes for one 8.5&times;11" page), although the quality is
+ extremely high with no visible banding whatsoever. It's not
+ good for the print head, though, since no ink is flowing through
+ the other nozzles. This leads to drying of ink and possible
+ permanent damage to the print head.
+ </para>
+ <para>
+ By the way, although the Epson manual says that microweave mode
+ should be used at 720 dpi, 360 dpi continues to work in much the
+ same way. At 360 dpi, data is fed to the printer one row at a
+ time on all Epson printers. The pattern that the printer uses
+ to print is very prone to banding. However, 360 dpi is
+ inherently a low quality mode; if you're using it, presumably
+ you don't much care about quality. It is possible to do
+ microweave at 360 DPI, with significantly improved quality.
+ </para>
+ <para>
+ Except for the Stylus Pro printers (5000, 5500, 7000, 7500,
+ 9000, 9500, and when it's released the 10000), which can do
+ microweave at any resolution, printers from roughly the Stylus
+ Color 600 and later do not have the capability to do MicroWeave
+ correctly in many cases (some printers can do MicroWeave
+ correctly at 720 DPI). Instead, the host must arrange the
+ output in the order that it will be sent to the print head.
+ This is a very complex process; the jets in the print head are
+ spaced more than one row (1/720") apart, so we can't simply send
+ consecutive rows of dots to the printer. Instead, we have to
+ pass e. g. the first, ninth, 17th, 25th... rows in order for
+ them to print in the correct position on the paper. This
+ interleaving process is called "soft" weaving.
+ </para>
+ <para>
+ This decision was probably made to save money on memory in the
+ printer. It certainly makes the driver code far more
+ complicated than it would be if the printer could arrange the
+ output. Is that a bad thing? Usually this takes far less CPU
+ time than the dithering process, and it does allow us more
+ control over the printing process, e.g. to reduce banding.
+ Conceivably, we could even use this ability to map out bad jets.
+ </para>
+ <para>
+ Interestingly, apparently the Windows (and presumably Macintosh)
+ drivers for most or all Epson printers still list a
+ &ldquo;microweave&rdquo; mode. Experiments have demonstrated
+ that this does not in fact use the &ldquo;microweave&rdquo; mode
+ of the printer. Possibly it does nothing, or it uses a
+ different weave pattern from what the
+ &ldquo;non-microweave&rdquo; mode does. This is unnecessarily
+ confusing, at least for people who write drivers who try to
+ explain them to people who don't.
+ </para>
+ <para>
+ What makes this interesting is that there are many different
+ ways of of accomplishing this goal. The naive way would be to
+ divide the image up into groups of 256 rows (for a printer with
+ 32 jets and a separation of 8 rows), and print all the mod8=0
+ rows in the first pass, mod8=1 rows in the second, and so forth.
+ The problem with this approach is that the individual ink jets
+ are not perfectly uniform; some emit slightly bigger or smaller
+ drops than others. Since each group of 8 adjacent rows is
+ printed with the same nozzle, that means that there will be
+ distinct streaks of lighter and darker bands within the image (8
+ rows is 1/90", which is visible; 1/720" is not). Possibly worse
+ is that these patterns will repeat every 256 rows. This creates
+ banding patterns that are about 1/3" wide.
+ </para>
+ <para>
+ So we have to do something to break up this patterning.
+ </para>
+ <para>
+ Epson do not publish the weaving algorithms that they use in
+ their bundled drivers. Indeed, their developer web site
+ (http://www.ercipd.com/isv/edr_docs.htm) does not even describe
+ how to do this weaving at all; it says that the only way to
+ achieve 720 dpi is to use MicroWeave. It does note (correctly)
+ that 1440 dpi horizontal can only be achieved by the driver
+ (i. e. in software). The manual actually makes it fairly clear
+ how to do this (it requires two passes with horizontal head
+ movement between passes), and it is presumably possible to do
+ this with MicroWeave.
+ </para>
+ <para>
+ The information about how to do this is apparently available
+ under non-disclosure agreement (NDA). It's actually easy enough
+ to reverse engineer what's inside a print file with a simple
+ Perl script, which is supplied with the Gutenprint distribution
+ as tests/parse-escp2. In any event, we weren't particularly
+ interested in the weaving patterns Epson used. There are many
+ factors that go into choosing a good weaving pattern; we're
+ learning them as we go along. Issues such as drying time
+ (giving the ink a few seconds more or less to dry can have
+ highly visible effects) affect the quality of the output.
+ </para>
+ <para>
+ The Uniprint GhostScript driver has been able to do weaving for
+ a long time. It uses patterns that must be specified for each
+ choice of resolution and printer. We preferred an algorithmic
+ approach that computes a weave pattern for any given choice of
+ inputs. This obviously requires extensive testing; we developed
+ a test suite specifically for this purpose.
+ </para>
+ </sect1>
+ <sect1>
+ <title>Weaving algorithms</title>
+ <para>
+ I considered a few algorithms to perform the weave. The first
+ one I devised let me use only (jets &minus;
+ distance_between_jets &plus; 1) nozzles, or 25. This is OK in
+ principle, but it's slower than using all nozzles. By playing
+ around with it some more, I came up with an algorithm that lets
+ me use all of the nozzles, except near the top and bottom of the
+ page.
+ </para>
+ <para>
+ This still produces some banding, though. Even better quality
+ can be achieved by using multiple nozzles on the same line. How
+ do we do this? In 1440&times;720 mode, we're printing two
+ output lines at the same vertical position. However, if we want
+ four passes, we have to effectively print each line twice.
+ Actually doing this would increase the density, so what we do is
+ print half the dots on each pass. This produces near-perfect
+ output, and it's far faster than using (pseudo)
+ &ldquo;MicroWeave&rdquo;.
+ </para>
+ <para>
+ Yet another complication is how to get near the top and bottom
+ of the page. This algorithm lets us print to within one head
+ width of the top of the page, and a bit more than one head width
+ from the bottom. That leaves a lot of blank space. Doing the
+ weave properly outside of this region is increasingly difficult
+ as we get closer to the edge of the paper; in the interior
+ region, any nozzle can print any line, but near the top and
+ bottom edges, only some nozzles can print. We originally
+ handled this by using the naive way mentioned above near the
+ borders, and switching over to the high quality method in the
+ interior. Unfortunately, this meant that the quality is quite
+ visibly degraded near the top and bottom of the page. We have
+ since devised better algorithms that allow printing to the
+ extreme top and bottom of the region that can physically be
+ printed, with only minimal loss of quality.
+ </para>
+ <para>
+ Epson does not advertise that the printers can print at the very
+ top of the page, although in practice most of them can. The
+ quality is degraded to some degree, and we have observed that in
+ some cases not all of the dots get printed. Epson may have
+ decided that the degradation in quality is sufficient that
+ printing in that region should not be allowed. That is a valid
+ decision, although we have taken another approach.
+ </para>
+ <sect2>
+ <title>Simple weaving algorithms</title>
+ <para>
+ The initial problem is to calculate the starting position of
+ each pass; the row number of the printer's top jet when
+ printing that pass. Since we assume the paper cannot be
+ reverse-fed, the print head must, for each pass, start
+ either further down the page than the previous pass or at
+ the same position. Each pass's start point is therefore at
+ a non-negative offset from the previous pass's start point.
+ </para>
+ <para>
+ Once we have a formula for the starting row of each pass, we
+ then turn that &ldquo;inside out&rdquo; to get a formula for
+ the pass number containing each row.
+ </para>
+ <para>
+ First, let's define how our printer works. We measure
+ vertical position on the paper in &ldquo;rows&rdquo;; the
+ resolution with which the printer can position the paper
+ vertically. The print head contains J ink jets, which are
+ spaced S rows apart.
+ </para>
+ <para>
+ Consider a very simple case: we want to print a page as
+ quickly as possible, and we mostly don't care how sparse the
+ printing is, so long as it's fairly even.
+ </para>
+ <para>
+ It's pretty obvious how to do this. We make one pass with
+ the print head, printing J lines of data, each line S rows
+ after the previous one. We then advance the paper by S
+ &times; J rows and print the next row. For example, if J =
+ 7 and S = 4, this method can be illustrated like this:
+ </para>
+ <informalexample>
+<screen>pass number
+| row number------->
+| | 111111111122222222223333333333444444444455555555556666666666
+| 0123456789012345678901234567890123456789012345678901234567890123456789
+0 *---*---*---*---*---*---*
+1 *---*---*---*---*---*---*
+2 \-----------------------/ *---*---*---*---*---*-
+ 7 jets \---/
+ 4 rows offset from one jet to the next
+\---------------------------/
+ 7*4=28 rows offset from one pass to the next</screen>
+ </informalexample>
+ <para>
+ In these examples, the vertical axis can be thought of as the
+ time axis, with the pass number shown at the left margin,
+ while the row number runs horizontally. A
+ <computeroutput>*</computeroutput> shows each row printed by a
+ pass, and a row of <computeroutput>-</computeroutput> is used
+ to link together the rows printed by one pass of the print
+ head. The first pass is numbered
+ <computeroutput>0</computeroutput> and starts at row 0. Each
+ subsequent pass p starts at row p &times; S &times; J. Each
+ pass prints J lines, each line being S rows after the previous
+ one. (For ease of viewing this file on a standard terminal,
+ I'm clipping the examples at column 80.)
+ </para>
+ <para>
+ This method covers the whole page with lines printed evenly
+ S rows apart. However, we want to fill in all the other
+ rows with printing to get a full-density page (we're
+ ignoring oversampling at this stage). Where we have
+ previously printed a single pass, we'll now print a
+ &ldquo;pass block&rdquo;: we print extra passes to fill in
+ the empty rows. A naive implementation might look like
+ this:
+ </para>
+ <informalexample>
+<screen>0 *---*---*---*---*---*---*
+1 *---*---*---*---*---*---*
+2 *---*---*---*---*---*---*
+3 *---*---*---*---*---*---*
+4 *---*---*---*---*---*---*
+5 *---*---*---*---*---*---*
+6 *---*---*---*---*---*---*
+7 *---*---*---*---*---*---*
+8 *---*---*---*---*---*-
+9 *---*---*---*---*---*
+10 *---*---*---*---*---
+11 *---*---*---*---*--</screen>
+ </informalexample>
+ <para>
+ (Now you can see why this process is called
+ &ldquo;weaving&rdquo;!)
+ </para>
+ </sect2>
+ <sect2>
+ <title>Perfect weaving</title>
+ <para>
+ This simple weave pattern prints every row, but will give
+ conspicuous banding patterns for the reasons discussed
+ above.
+ </para>
+ <para>
+ Let's start improving this for our simple case. We can
+ reduce banding by making sure that any given jet never
+ prints a row too close to another row printed by the same
+ jet. This means we want to space the rows printed by a
+ given jet evenly down the page. In turn, this implies we
+ want to advance the paper by as nearly an equal amount after
+ each pass as possible.
+ </para>
+ <para>
+ Each pass block prints S &times; J lines in S passes. The
+ first line printed in each pass block is S &times; J rows
+ lower on the page than the first line printed in the
+ previous pass block. Therefore, if we advance the paper by
+ J rows between each pass, we can print the right number of
+ passes in each block and advance the paper perfectly evenly.
+ </para>
+ <para>
+ Here's what this &ldquo;perfect&rdquo; weave looks like:
+ </para>
+ <informalexample>
+<screen> start of full weave
+ |
+0 *---*---*---*---*---*---*
+1 *---*---*---*---*---*---*
+2 *---*---*---*---*---*---*
+3 *---*---*---*---*---*---*
+4 *---*---*---*---*---*---*
+5 *---*---*---*---*---*---*
+6 *---*---*---*---*---*---*
+7 *---*---*---*---*---*---*
+8 *---*---*---*---*---*-
+9 *---*---*---*--
+10 *---*---
+11 *</screen>
+ </informalexample>
+ <para>
+ You'll notice that, for the first few rows, this weave is
+ too sparse. It is not until the row marked &ldquo;start of
+ full weave&rdquo; that every subsequent row is printed. We
+ can calculate this start position as follows:
+ </para>
+ <informalexample>
+<screen>start = (S &minus; 1) &times; (J &minus; 1)</screen>
+ </informalexample>
+ <para>
+ For the moment, we will ignore this problem with the weave.
+ We'll consider later how to fill in the missing rows.
+ </para>
+ <para>
+ Let's look at a few more examples of perfect weaves:
+ </para>
+ <informalexample>
+ <para>
+ S = 2, J = 7, start = (2&minus;1) &times; (7&minus;1) = 6:
+ </para>
+<screen> starting row of full weave
+ |
+0 *-*-*-*-*-*-*
+1 *-*-*-*-*-*-*
+2 *-*-*-*-*-*-*
+3 *-*-*-*-*-*-*
+4 *-*-*-*-*-*-*
+5 *-*-*-*-*-*-*
+6 *-*-*-*-*-*-*
+7 *-*-*-*-*-*-*</screen>
+ </informalexample>
+ <informalexample>
+ <para>
+ S = 7, J = 2, start = 6:
+ </para>
+<screen> start
+ |
+0 *------*
+1 *------*
+2 *------*
+3 *------*
+4 *------*
+5 *------*
+6 *------*
+7 *------*
+8 *------*
+9 *------*</screen>
+ </informalexample>
+ <informalexample>
+ <para>
+ S = 4, J = 13, start = 36:
+ </para>
+<screen> start
+ |
+0 *---*---*---*---*---*---*---*---*---*---*---*---*
+1 *---*---*---*---*---*---*---*---*---*---*---*---*
+2 *---*---*---*---*---*---*---*---*---*---*---*---*
+3 *---*---*---*---*---*---*---*---*---*--
+4 *---*---*---*---*---*---*-
+5 *---*---*---*</screen>
+ </informalexample>
+ <informalexample>
+ <para>
+ S = 13, J = 4, start = 36:
+ </para>
+<screen> start
+ |
+0 *------------*------------*------------*
+1 *------------*------------*------------*
+2 *------------*------------*------------*
+3 *------------*------------*------------*
+4 *------------*------------*------------*
+5 *------------*------------*------------*
+6 *------------*------------*------------*
+7 *------------*------------*------------*
+8 *------------*------------*------------*
+9 *------------*------------*------------*
+10 *------------*------------*-----------
+11 *------------*------------*-------
+12 *------------*------------*---
+13 *------------*------------
+14 *------------*--------
+15 *------------*----
+16 *------------*
+17 *---------
+18 *-----
+19 *-</screen>
+ </informalexample>
+ <informalexample>
+ <para>
+ S = 8, J = 5, start = 28:
+ </para>
+<screen> start
+ |
+0 *-------*-------*-------*-------*
+1 *-------*-------*-------*-------*
+2 *-------*-------*-------*-------*
+3 *-------*-------*-------*-------*
+4 *-------*-------*-------*-------*
+5 *-------*-------*-------*-------*
+6 *-------*-------*-------*-------*
+7 *-------*-------*-------*-------*
+8 *-------*-------*-------*-------*
+9 *-------*-------*-------*-------*
+10 *-------*-------*-------*---
+11 *-------*-------*------
+12 *-------*-------*-
+13 *-------*----
+14 *-------
+15 *--</screen>
+ </informalexample>
+ <informalexample>
+ <para>
+ S = 9, J = 5, start = 32:
+ </para>
+<screen> start
+ |
+0 *--------*--------*--------*--------*
+1 *--------*--------*--------*--------*
+2 *--------*--------*--------*--------*
+3 *--------*--------*--------*--------*
+4 *--------*--------*--------*--------*
+5 *--------*--------*--------*--------*
+6 *--------*--------*--------*--------*
+7 *--------*--------*--------*--------*
+8 *--------*--------*--------*--------*
+9 *--------*--------*--------*-----
+10 *--------*--------*--------*
+11 *--------*--------*----
+12 *--------*--------
+13 *--------*---
+14 *-------
+15 *--</screen>
+ </informalexample>
+ <informalexample>
+ <para>
+ S = 6, J = 7, start = 30:
+ </para>
+<screen> start
+ |
+0 *-----*-----*-----*-----*-----*-----*
+1 *-----*-----*-----*-----*-----*-----*
+2 *-----*-----*-----*-----*-----*-----*
+3 *-----*-----*-----*-----*-----*-----*
+4 *-----*-----*-----*-----*-----*-----*
+5 *-----*-----*-----*-----*-----*-----*
+6 *-----*-----*-----*-----*-----*-----
+7 *-----*-----*-----*-----*----
+8 *-----*-----*-----*---
+9 *-----*-----*--
+10 *-----*-
+11 *</screen>
+ </informalexample>
+ </sect2>
+ <sect2>
+ <title>Weaving collisions</title>
+ <para>
+ A perfect weave is not possible in all cases. Let's look at
+ another example:
+ </para>
+ <informalexample>
+ <para>
+ S = 6, J = 4:
+ </para>
+<screen>0 *-----*-----*-----*
+1 *-----*-----*-----*
+2 *-----*-----*-----*
+3 *-----*-----*-----*
+4 ^ *-^---*-----*-----*
+5 | ^ | *-^---*-----*-----*
+ OUCH! ^ | ^
+ | |</screen>
+ </informalexample>
+ <para>
+ Here we have a collision. Some lines printed in later
+ passes overprint lines printed by earlier passes. We can
+ see why by considering which row number is printed by a
+ given jet number j (numbered from 0) of a given pass, p:
+ </para>
+ <informalexample>
+<screen>row(p, j) = (p &times; J) + (j &times; S)</screen>
+ </informalexample>
+ <para>
+ Because J = 4 and S = 6 have a common factor of 2, jet 2 of
+ pass 0 prints the same row as jet 0 of pass 3:
+ </para>
+ <informalexample>
+<screen>row(0, 2) = (0 &times; 4) + (2 &times; 6) = 12
+row(3, 0) = (3 &times; 4) + (0 &times; 6) = 12</screen>
+ </informalexample>
+ <para>
+ In fact, with this particular weave pattern, jets 0 and 1 of
+ pass p + 3 always overprint jets 2 and 3 of pass p. We'll
+ represent overprinting rows by a
+ <computeroutput>^</computeroutput> in our diagrams, and
+ correct rows by <computeroutput>*</computeroutput>:
+ </para>
+ <informalexample>
+ <para>
+ S = 6, J = 4:
+ </para>
+<screen>0 *-----*-----*-----*
+1 *-----*-----*-----*
+2 *-----*-----*-----*
+3 ^-----^-----*-----*
+4 ^-----^-----*-----*
+5 ^-----^-----*-----*</screen>
+ </informalexample>
+ </sect2>
+ <sect2>
+ <title>What makes a &ldquo;perfect&rdquo; weave?</title>
+ <para>
+ So what causes the perfect weave cases to be perfect, and
+ the other cases not to be? In all the perfect cases above,
+ S and J are relatively prime (i.e. their greatest common
+ divisor (GCD) is 1). As we mentioned above, S = 6 and J = 4
+ have a common factor, which causes the overprinting. Where
+ S and J have a GCD of 1, they have no common factor other
+ than 1 and, as a result, no overprinting occurs. If S and J
+ are not relatively prime, their common factor will cause
+ overprinting.
+ </para>
+ <para>
+ We can work out the greatest common divisor of a pair of
+ natural numbers using Euler's algorithm:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Start with the two numbers: (e.g.) 9, 24
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Swap them if necessary so that the larger one comes
+ first: 24, 9
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Subtract the second number from the first: 15, 9
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Repeat until the first number becomes smaller: 6, 9
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Swap the numbers again, so the larger one comes first:
+ 9, 6
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Subtract again: 3, 6
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Swap: 6, 3
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Subtract: 3, 3
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ And again: 0, 3
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When one of the numbers becomes 0, the other number is
+ the GCD of the two numbers you started with.
+ </para>
+ </listitem>
+ </orderedlist>
+ <para>
+ These repeated subtractions can be done with C's <literal>%</literal>
+ operator, so we can write this in C as follows:
+ </para>
+ <informalexample>
+<programlisting>unsigned int
+gcd(unsigned int x, unsigned int y)
+{
+ if (y == 0)
+ return x;
+ while (x != 0) {
+ if (y > x)
+ swap (&amp;x, &amp;y);
+ x %= y;
+ }
+ return y;
+}</programlisting>
+ </informalexample>
+ <para>
+ <literal>gcd(S,J)</literal> will feature quite prominently in our
+ weaving algorithm.
+ </para>
+ <para>
+ If 0 &le; j &lt; J, there should only be a single pair (p, j)
+ for any given row number. If S and J are not relatively
+ prime, this assumption breaks down. (For conciseness, let G
+ = GCD(S,J).)
+ </para>
+ <informalexample>
+ <para>
+ S = 8, J = 6, G = 2:
+ </para>
+<screen>0 *-------*-------*-------*-------*-------*
+1 *-------*-------*-------*-------*-------*
+2 *-------*-------*-------*-------*-------*
+3 *-------*-------*-------*-------*-------*
+4 ^-------^-------^-------*-------*-------*
+5 ^-------^-------^-------*-------*-------*</screen>
+ </informalexample>
+ <para>
+ In this case, jets 0, 1 and 2 of pass p + 4 collide with
+ jets 3, 4 and 5 of pass p.
+ </para>
+ <para>
+ How can we calculate these numbers? Suppose we were to
+ print using fewer jets, say J / G jets. The greatest common
+ divisor of J / G and S is 1, enabling a perfect weave. But
+ to get a perfect weave, we also have to advance the paper by
+ a factor of G less:
+ </para>
+ <informalexample>
+<screen>0 *-------*-------* - - -
+1 *-------*-------* - - -
+2 *-------*-------* - - -
+3 *-------*-------* - - -
+4 *-------*-------* - - -
+5 *-------*-------* - - -</screen>
+ </informalexample>
+ <para>
+ If we left the paper advance alone, we'd get a sparse weave;
+ only one row can be printed every G rows:
+ </para>
+ <informalexample>
+<screen>0 *-------*-------* - - -
+1 *-------*-------* - - -
+2 *-------*-------* - - -
+3 *-------*-------* - - -
+4 *-------*-------* - - -
+5 *-------*-------* - - -
+ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
+ These rows need filling in.</screen>
+ </informalexample>
+ <para>
+ The rows that would have been printed by the jets we've now
+ omitted (shown as <computeroutput>-</computeroutput>) are
+ printed by other jets on later passes.
+ </para>
+ <para>
+ Let's analyse this. Consider how a pass p could collide
+ with pass 0. Pass p starts at offset p &times; J. Pass 0
+ prints at rows which are multiples of S. If p &times; J is
+ exactly divisible by S, a collision has occurred, unless (p
+ &times;J) &ge; J &times; S (which will happen when we
+ finish a pass block).
+ </para>
+ <para>
+ So, we want to find p and q such that p &times; J = q
+ &times; S and p is minimised. Then p is the number of rows
+ before a collision, and q is the number of jets in pass 0
+ which are not involved in the collision. To do this, we
+ find the lowest common multiple of J and S, which is L = (J
+ &times; S) / G. L / J is the number of rows before a
+ collision, and L / S is the number of jets in the first pass
+ not involved in the collision.
+ </para>
+ <para>
+ Thus, we see that the first J / G rows printed by a given
+ pass are not overprinted by any later pass. However, the
+ rest of the rows printed by pass p are overprinted by the
+ first J &minus; (J / G) jets of pass p + (S / G). We will
+ use C to refer to S / G, the number of rows after which a
+ collision occurs.
+ </para>
+ <para>
+ Another example:
+ </para>
+ <informalexample>
+ <para>
+ S = 6, J = 9, G = 3, C = S / G = 2:
+ </para>
+<screen>0 *-----*-----*-----*-----*-----*-----*-----*-----*
+1 *-----*-----*-----*-----*-----*-----*-----*-----*
+2 ^-----^-----^-----^-----^-----^-----*-----*-----*
+3 ^-----^-----^-----^-----^-----^-----*-----*-----*
+4 ^-----^-----^-----^-----^-----^-----*-----
+5 ^-----^-----^-----^-----^-----^--
+ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^
+ These rows need filling in.</screen>
+ </informalexample>
+ <para>
+ In this case, the first J &minus; (J / G) = 9 &minus; (9 /
+ 3) = 6 jets of pass p + (6 / 3) = p + 2 collide with the
+ last 6 jets of pass p. Only one row in every G = 2 rows is
+ printed by this weave.
+ </para>
+ <informalexample>
+ <para>
+ S = 9, J = 6, G = 3, C = 3:
+ </para>
+<screen>
+0 *--------*--------*--------*--------*--------*
+1 *--------*--------*--------*--------*--------*
+2 *--------*--------*--------*--------*--------*
+3 ^--------^--------^--------^--------*--------*
+4 ^--------^--------^--------^--------*--------*
+5 ^--------^--------^--------^--------*--------*</screen>
+ <para>
+ Here, the first J - (J / G) = 6 - (6 / 3) = 4 jets of pass
+ p + (9 / 3) = p + 3 collide with the last 4 jets of pass
+ p.
+ </para>
+ <para>
+ Note that, in these overprinting cases, only rows
+ divisible by G are ever printed. The other rows, those
+ not divisible by G, are not touched by this weave.
+ </para>
+ <para>
+ We can modify our weave pattern to avoid overprinting any
+ rows and simultaneously fill in the missing rows. Instead
+ of using J alone to determine the start of each pass from
+ the previous pass, we adjust the starting position of some
+ passes. As mentioned before, we will divide the page into
+ pass blocks, with S passes in each block. This ensures
+ that the first jet of the first pass in a block prints the
+ row which the Jth jet of the first pass of the previous
+ block would have printed, if the print head had one extra
+ jet.
+ </para>
+ <para>
+ Looking back at an example of a perfect weave, we can
+ divide it into pass blocks:
+ </para>
+ <informalexample>
+ <para>
+ S = 7, J = 2, G = 1:
+ </para>
+<screen> imaginary extra jet
+ |
+0 *------* * &lt;--start of pass block 0
+1 *------* |
+2 *------* |
+3 *------*|
+4 *-----|*
+5 *---|--*
+6 *-|----*
+ |
+7 *------* &lt;--start of pass block 1
+8 *------*
+9 *------*</screen>
+ </informalexample>
+ <para>
+ We can now calculate the start of a given pass by
+ reference to its pass block. The first pass of pass block
+ b always starts at row (b &times; S &times; J). The start
+ row of each of the other passes in the block are
+ calculated using offsets from this row.
+ </para>
+ <para>
+ For the example above, there are 7 passes in each pass
+ block, and their offsets are 0, 2, 4, 6, 8, 10 and 12.
+ The next pass block is offset S &times; J = 14 rows from
+ the start of the current pass block.
+ </para>
+ <para>
+ The simplest way to modify the &ldquo;perfect&rdquo; weave
+ pattern to give a correct weave in cases where G &ne; 1
+ is to simply change any offsets which would result in a
+ collision, until the collision disappears. Every printed
+ row in the weave, as we have shown it up to now, is
+ separated from each of its neighbouring printed rows by G
+ blank rows. We will add an extra offset to each colliding
+ pass in such a way that we push the pass onto these
+ otherwise blank rows.
+ </para>
+ <para>
+ We have seen that, unless G = 1, the plain weave pattern
+ results in each pass colliding with the pass S / G passes
+ before. We will now subdivide our pass block into
+ subblocks, each consisting of B = S / G passes. There are
+ therefore G subblocks in a pass block.
+ </para>
+ <para>
+ For each subblock, the passes in that subblock have a
+ constant offset added to them. The offset is different
+ for each subblock in a block. There are many ways we can
+ choose the offsets, but the simplest is to make the offset
+ equal to the subblock number (starting from 0).
+ </para>
+ <para>
+ Thus, the passes in the first subblock in each pass block
+ remain at the offsets we've already calculated from J.
+ The passes in the second subblock each have 1 added to
+ their offset, the passes in the third subblock have 2
+ added, and so on. Thus, the offset of pass p (numbered
+ relative to the start of its pass block) is p &times; J +
+ floor(p / B).
+ </para>
+ <para>
+ This gives us a weave pattern looking like this:
+ </para>
+ <informalexample>
+ <para>
+ S = 6, J = 9, G = 3, B = 2:
+ </para>
+<screen>0 *-----*-----*-----*-----*-----*-----*-----*-----*
+1 ^ *-----*-----*-----*-----*-----*-----*-----*-----*
+2 | +-> *-----*-----*-----*-----*-----*-----*-----*-----*
+3 | | *-----*-----*-----*-----*-----*-----*-----*-----*
+4 | | +-> *-----*-----*-----*-----*-----*-----*---
+5 | | | *-----*-----*-----*-----*-----*
+6 | | | +-> *-----*-----*-----*-----
+7 | | | | *-----*-----*--
+ | | | start of pass block 1
+ | | | (offset returns to 0)
+ | | start of subblock 2 (offset 2 rows)
+ | start of subblock 1 (following passes offset by 1 row)
+start of passblock 0, subblock 0 (pass start calculated as p*J)</screen>
+ </informalexample>
+ <informalexample>
+ <para>
+ S = 9, J = 6, G = 3, B = 3:
+ </para>
+<screen>0 *--------*--------*--------*--------*--------*
+1 *--------*--------*--------*--------*--------*
+2 *--------*--------*--------*--------*--------*
+3 *--------*--------*--------*--------*--------*
+4 *--------*--------*--------*--------*--------*
+5 *--------*--------*--------*--------*--------*
+6 *--------*--------*--------*--------*---
+7 *--------*--------*--------*------
+8 *--------*--------*--------*
+9 *--------*--------*-----
+10 \---/ *--------*--------
+11 small offset *--------*--
+12 *----</screen>
+ </informalexample>
+ <para>
+ This method of choosing offsets for subblocks can result
+ in an occasional small offset (as shown above) between one
+ pass and the next, particularly when G is large compared
+ to J. For example:
+ </para>
+ <informalexample>
+ <para>
+ S = 8, J = 4, G = 4, B = 2:
+ </para>
+<screen>0 *-------*-------*-------*
+1 *-------*-------*-------*
+2 *-------*-------*-------*
+3 *-------*-------*-------*
+4 *-------*-------*-------*
+5 *-------*-------*-------*
+6 *-------*-------*-------*
+7 *-------*-------*-------*
+8 *-------*-------*-------*
+9 \/ *-------*-------*-------*
+ very small offset!</screen>
+ </informalexample>
+ <para>
+ We can plot the offset against the subblock number as
+ follows:
+ </para>
+ <informalexample>
+<screen>subblock number
+| offset
+| |
+| 0123
+0 *
+1 *
+2 *
+3 *
+0 *
+1 *
+2 *
+3 *</screen>
+ </informalexample>
+ <para>
+ The discontinuity in this plot results in the small offset
+ between passes.
+ </para>
+ <para>
+ As we said at the beginning, we want the offsets from each
+ pass to the next to be as similar as possible. We can fix
+ this by calculating the offset for a given subblock b as
+ follows:
+ </para>
+ <informalexample>
+<screen>offset(b) = 2*b , if b &lt; ceiling(G/2)
+ = 2*(G-b)-1 , otherwise</screen>
+ </informalexample>
+ <para>
+ We can visualise this as follows, for G = 10:
+ </para>
+ <informalexample>
+<screen>0123456789
+0 *
+1 *
+2 *
+3 *
+4 *
+5 *
+6 *
+7 *
+8 *
+9 *
+0 *
+1 *
+2 *
+3 *
+4 *
+5 *
+6 *
+7 *
+8 *
+9 *</screen>
+ </informalexample>
+ <para>
+ and for G = 11:
+ </para>
+ <informalexample>
+<screen> 1
+ 01234567890
+ 0 *
+ 1 *
+ 2 *
+ 3 *
+ 4 *
+ 5 *
+ 6 *
+ 7 *
+ 8 *
+ 9 *
+10 *
+ 0 *
+ 1 *
+ 2 *
+ 3 *
+ 4 *
+ 5 *
+ 6 *
+ 7 *
+ 8 *
+ 9 *
+10 *</screen>
+ </informalexample>
+ <para>
+ This gives a weave looking like this:
+ </para>
+ <informalexample>
+ <para>
+ S = 12, J = 6, G = 6, B = 2:
+ </para>
+<screen>0 *-----------*-----------*-----------*-----------*-----------*
+1 *-----------*-----------*-----------*-----------*-----------*
+2 *-----------*-----------*-----------*-----------*-----------*
+3 *-----------*-----------*-----------*-----------*---------
+4 *-----------*-----------*-----------*-----------*-
+5 *-----------*-----------*-----------*-------
+6 *-----------*-----------*-----------*
+7 *-----------*-----------*------
+8 *-----------*-----------*--
+9 *-----------*--------
+10 *-----------*----
+11 *----------
+12 *-----</screen>
+ </informalexample>
+ <para>
+ This method ensures that the offset between passes is
+ always in the range [J - 2, J + 2].
+ </para>
+ <para>
+ (This might seem odd, but it occurs to me that a good
+ weave pattern might also make a good score for bell
+ ringers. When church bells are rung, a list of
+ &ldquo;changes&rdquo; are used. For example, if 8 bells
+ are being used, they will, at first, be rung in order:
+ 12345678. If the first change is for bells 5 and 6, the
+ bells will then be rung in the order 12346578. If the
+ second change is 1 and 2, the next notes are 21346578.
+ After a long list of changes, the order the bells are rung
+ in can become quite complex.
+ </para>
+ <para>
+ For a group of bell-ringers to change the order of the
+ notes, they must each either delay their bell's next ring,
+ hasten it, or keep it the same as the time it takes to
+ ring all the bells once. The length of time between each
+ ring of a given bell can only be changed a little each
+ time, though; with an ink-jet weave pattern, we want the
+ same to apply to the distance between passes.)
+ </para>
+ <para>
+ Finally, knowing the number of jets J and their separation
+ S, we can calculate the starting row of any given pass p
+ as follows:
+ <informalexample>
+<screen>passesperblock = S
+passblock = floor(p / passesperblock)
+offsetinpassblock = p - passblock * passesperblock
+subblocksperblock = gcd(S, J)
+passespersubblock = S / subblocksperblock
+subpassblock = floor(offsetinpassblock / passespersubblock)
+if subpassblock &lt; ceiling(subblocksperblock/2)
+ subblockoffset = 2*subpassblock
+else
+ subblockoffset = 2*(subblocksperblock-subpassblock)-1
+startingrow = passblock * S * J + offsetinpassblock * J + subblockoffset</screen>
+ </informalexample>
+ </para>
+ <para>
+ We can simplify this down to the following:
+ </para>
+ <informalexample>
+<screen>subblocksperblock = gcd(S, J)
+subpassblock = floor((p % S) * subblocksperblock / S)
+if subpassblock * 2 &lt; subblocksperblock
+ subblockoffset = 2*subpassblock
+else
+ subblockoffset = 2*(subblocksperblock-subpassblock)-1
+startingrow = p * J + subblockoffset</screen>
+ </informalexample>
+ <para>
+ So the row number of jet j of pass p is
+ </para>
+ <informalexample>
+<screen>subblocksperblock = gcd(S, J)
+
+subblockoffset(p)
+ = 2*subpassblock , if subpassblock * 2 &lt; subblocksperblock
+ = 2*(subblocksperblock-subpassblock)-1 , otherwise
+ where
+ subpassblock = floor((p % S) * subblocksperblock / S)
+
+row(j, p) = p * J + subblockoffset(p) + j * S</screen>
+ </informalexample>
+ <para>
+ Together with the inequality 0 &le; j &lt; J, we can use
+ this definition in reverse to calculate the pass number
+ containing a given row, r. Working out the inverse
+ definition involves a little guesswork, but one possible
+ result is as follows. Given a row, r, which is known to
+ be the first row of a pass, we can calculate the pass
+ number as follows:
+ </para>
+ <informalexample>
+<screen>subblocksperblock = gcd(S, J)
+subblockoffset = r % subblocksperblock
+pass = (r - subblockoffset) / J</screen>
+ </informalexample>
+ <para>
+ If G = 1, we can determine the pass number with this
+ algorithm:
+ </para>
+ <informalexample>
+<screen>offset = r % J
+pass = (r - offset) / J
+while (offset % S != 0)
+{
+pass--
+offset += J
+}
+jet = offset / S</screen>
+ </informalexample>
+ <para>
+ Generalising, we come up with this algorithm. Given r, S
+ and J:
+ </para>
+ <informalexample>
+<screen>G = gcd(S, J)
+passespersubblock = S/G
+subblockoffset = r % G
+subpassblock = subblockoffset / 2 , if subblockoffset % 2 == 0
+ = G - (subblockoffset+1)/2 , otherwise
+baserow = r - subblockoffset - (subpassblock * passespersubblock * J)
+offset = baserow % J
+pass = (baserow - offset) / J
+while (offset % S != 0)
+{
+offset += J
+pass -= 1
+}
+subblockretreat = floor(pass / passespersubblock) % G
+pass -= subblockretreat * passespersubblock
+pass += subpassblock * passespersubblock
+jet = (r - subblockoffset - pass * J) / S</screen>
+ </informalexample>
+ <para>
+ Let's look at some examples of imperfect but correct weave
+ patterns:
+ </para>
+ <informalexample>
+ <para>
+ S = 6, J = 4, GCD = 2,
+ passesperblock = S = 6,
+ passespersubblock = S / G = 6 / 2 = 3:
+ </para>
+<screen>0 *-----*-----*-----*
+1 *-----*-----*-----*
+2 *-----*-----*-----*
+3 *-----*-----*-----*
+4 *-----*-----*-----*
+5 *-----*-----*-----*
+6 *-----*-----*-----*
+7 *-----*-----*-----*
+8 *-----*-----*-----*
+9 *-----*-----*-----*
+10 *-----*-----*-----*
+11 *-----*-----*-----*
+12 *-----*-----*-----*
+13 *-----*-----*-----*
+14 *-----*-----*-----*
+15 *-----*-----*----
+16 *-----*-----*
+17 *-----*--
+18 *-----
+19 *-</screen>
+ </informalexample>
+ <informalexample>
+ <para>
+ S = 8, J = 6, G = 2,
+ passesperblock = S = 8,
+ passespersubblock= S / G = 8 / 2 = 4:
+ </para>
+<screen>0 *-------*-------*-------*-------*-------*
+1 *-------*-------*-------*-------*-------*
+2 *-------*-------*-------*-------*-------*
+3 *-------*-------*-------*-------*-------*
+4 *-------*-------*-------*-------*-------*
+5 *-------*-------*-------*-------*-------*
+6 *-------*-------*-------*-------*-------*
+7 *-------*-------*-------*-------*--
+8 *-------*-------*-------*-----
+9 *-------*-------*-------
+10 *-------*-------*-
+11 *-------*---
+12 *----</screen>
+ </informalexample>
+ <informalexample>
+ <para>
+ S = 6, J = 12, G = 6,
+ passesperblock = S = 6,
+ passespersubblock= S / G = 6 / 6 = 1:
+ </para>
+<screen>0 *-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
+1 *-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*---
+2 *-----*-----*-----*-----*-----*-----*-----*-----*-
+3 *-----*-----*-----*-----*-----*-----*
+4 *-----*-----*-----*-----*--
+5 *-----*-----*----
+6 *-----</screen>
+ </informalexample>
+ <para>
+ We have now solved the basic weaving problem. There are
+ two further refinements we need to consider: oversampling,
+ and filling in the missing rows at the start of the weave.
+ </para>
+ </informalexample>
+ </sect2>
+ <sect2>
+ <title>Oversampling</title>
+ <para>
+ By oversampling, we mean printing on the same row more than
+ once. There are two reasons for oversampling: to increase
+ the horizontal resolution of the printout and to reduce
+ banding.
+ </para>
+ <para>
+ Oversampling to increase horizontal resolution is necessary
+ because, although the printer might be able to position an
+ ink drop to, for example, 1/1440" horizontally, it may not
+ be able to lay down two such drops 1/1440" apart. If it can
+ print two drops 1/720" apart, 2x oversampling will be
+ necessary to get a 1/1440" horizontal resolution. If it can
+ only print two drops 1/360" apart, 4x oversampling will be
+ necessary for a 1/1440" horizontal resolution. The printer
+ enforces this &ldquo;drop spacing&rdquo; by only accepting
+ raster passes with a horizontal resolution matching the
+ spacing with which it can print dots, so we must print
+ passes at different horizontal positions if we are to obtain
+ a higher horizontal resolution. (Another reason it does
+ this may be to reduce the amount of memory needed in the
+ printer.)
+ </para>
+ <para>
+ Oversampling can also be done to decrease the banding
+ apparent in an image. By splitting a row into two or more
+ sets of dots (&ldquo;lines&rdquo;) and printing each line on
+ the same row, but with a different nozzle for each line, we
+ can get a smoother print.
+ </para>
+ <para>
+ To quantify these two kinds of oversampling, we'll introduce
+ two new constants: H shows how many different horizontal
+ offsets we want to print at (the &ldquo;horizontal
+ oversampling&rdquo;) while O shows how many times we want to
+ print each row, over and above the number of times necessary
+ for horizontal oversampling (the &ldquo;extra
+ oversampling&rdquo;).
+ </para>
+ <para>
+ It is necessary for all the lines printed by a given pass to
+ have the same horizontal offset, but there need not be any
+ relation between them in terms of extra oversampling. For
+ the moment, however, we will treat all oversampling as
+ potentially requiring this alignment; all lines in one pass
+ must be derived from the original row data in the same way.
+ Thus, we'll assume O = 1 for now.
+ </para>
+ <para>
+ So, how do we do this oversampling? In fact, it can be done
+ easily: advance the paper by a factor of H less between each
+ pass. We'll define a new variable, A, to show how much we
+ advance the paper between passes. Previously, we'd have
+ defined A = J; we now let A = J / H. This also affects our
+ pass blocks. Printing one pass block used to involve
+ advancing the paper S &times; J rows; it now advances the
+ paper (S&times;J) / H rows. We therefore name a group of H
+ pass blocks a &ldquo;band&rdquo;. Printing one band
+ involves advancing the paper S&times;J rows, as a pass
+ block did before.
+ </para>
+ <para>
+ To keep our weave pattern working correctly, so that
+ overprinting does not occur within a pass block, we also
+ have to redefine G as GCD(S,A). Here's an example of an
+ oversampled weave pattern:
+ </para>
+ <informalexample>
+ <para>
+ S = 4, J = 10, H = 2, A = J/H = 10/2 = 5,
+ G= GCD(4,5) = 1,
+ passesperblock = S = 4,
+ passespersubblock = S/G = 4/1 = 4:
+ </para>
+<screen>0 *---*---*---*---*---*---*---*---*---*
+1 *---*---*---*---*---*---*---*---*---*
+2 *---*---*---*---*---*---*---*---*---*
+3 *---*---*---*---*---*---*---*---*---*
+4 *---*---*---*---*---*---*---*---*---*
+5 *---*---*---*---*---*---*---*---*---*
+6 *---*---*---*---*---*---*---*---*---*
+7 *---*---*---*---*---*---*---*---*---*
+8 *---*---*---*---*---*---*---*---*---*
+9 *---*---*---*---*---*---*---*---*
+10 *---*---*---*---*---*---*---
+11 *---*---*---*---*---*--
+12 *---*---*---*---*-
+13 *---*---*---*
+14 *---*---
+15 *--</screen>
+ </informalexample>
+ <para>
+ Now we have to determine which line is printed by each jet on
+ each pass. If we number each line generated as we split up a
+ row, we can use these numbers. We'll number the lines in our
+ diagram by replacing the <computeroutput>*</computeroutput>s
+ with integers in the range [0&hellip;H&minus;1].
+ </para>
+ <para>
+ Overprinting occurs once per pass block, so we can simply
+ print pass block 0 with line 0, pass block 1 with line 1,
+ pass block 2 with line 2, etc, wrapping to 0 when we've run
+ out of lines:
+ </para>
+ <informalexample>
+<screen>0 0---0---0---0---0---0---0---0---0---0
+1 0---0---0---0---0---0---0---0---0---0
+2 0---0---0---0---0---0---0---0---0---0
+3 0---0---0---0---0---0---0---0---0---0
+4 1---1---1---1---1---1---1---1---1---1
+5 1---1---1---1---1---1---1---1---1---1
+6 1---1---1---1---1---1---1---1---1---1
+7 1---1---1---1---1---1---1---1---1---1
+8 0---0---0---0---0---0---0---0---0---0
+9 0---0---0---0---0---0---0---0---0
+10 0---0---0---0---0---0---0---
+11 0---0---0---0---0---0--
+12 1---1---1---1---1-
+13 1---1---1---1
+14 1---1---
+15 1--</screen>
+ </informalexample>
+ <informalexample>
+ <para>
+ S = 4, J = 12, H = 2, A = J/H = 12/2 = 6,
+ G= GCD(4,6) = 2,
+ passesperblock= S = 4,
+ passespersubblock= S/G = 4/2 = 2:
+ </para>
+<screen>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
+2 0---0---0---0---0---0---0---0---0---0---0---0
+3 0---0---0---0---0---0---0---0---0---0---0---0
+4 1---1---1---1---1---1---1---1---1---1---1---1
+5 1---1---1---1---1---1---1---1---1---1---1---1
+6 1---1---1---1---1---1---1---1---1---1---1
+7 1---1---1---1---1---1---1---1---1--
+8 0---0---0---0---0---0---0---0-
+9 0---0---0---0---0---0---
+10 0---0---0---0---0
+11 0---0---0--
+12 1---1-</screen>
+ </informalexample>
+ <para>
+ But what do we do if J is not an exact multiple of H? This
+ is a difficult problem, which I struggled with for quite a
+ few days before giving in and taking the easy (but less
+ elegant) way out. The easy solution is to round J / H down,
+ then add on the accumulated error at the end of each band.
+ </para>
+ <informalexample>
+ <para>
+ S = 4, J = 11, H = 2, A = floor(J/H) = floor(11/2) = 5,
+ G = GCD(4,5) = 1,
+ passesperblock = S = 4,
+ passespersubblock = S/G = 4/1 = 4
+ </para>
+<screen>Band 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
+2 0---0---0---0---0---0---0---0---0---0---0
+3 0---0---0---0---0---0---0---0---0---0---0
+4 1---1---1---1---1---1---1---1---1---1---1
+5 1---1---1---1---1---1---1---1---1---1---1
+6 1---1---1---1---1---1---1---1---1---1---1
+7 1---1---1---1---1---1---1---1---1---1---
+
+Band 1:
+8 | 0---0---0---0---0---0---0---0---0-
+9 \-----------------------------------------/ 0---0---0---0---0---0---0---0
+10 S*J rows 0---0---0---0---0---0---
+11 0---0---0---0---0--
+12 1---1---1---1-
+13 1---1---1
+14 1---</screen>
+ </informalexample>
+ <para>
+ We can calculate the starting row and subpass number of a
+ given pass in this scheme as follows:
+ </para>
+ <informalexample>
+<screen>A = floor(J / H)
+subblocksperblock = gcd(S, A)
+subpassblock = floor((p % S) * subblocksperblock / S)
+if subpassblock * 2 &lt; subblocksperblock
+ subblockoffset = 2*subpassblock
+else
+ subblockoffset = 2*(subblocksperblock-subpassblock)-1
+band = floor(P / (S * H))
+passinband = P % (S * H)
+startingrow = band * S * J + passinband * A + subblockoffset
+subpass = passinband / S</screen>
+ </informalexample>
+ <para>
+ So the row number of jet j of pass p is
+ <informalexample>
+<screen>A = floor(J / H)
+subblocksperblock = gcd(S, A)
+
+subblockoffset(p)
+ = 2*subpassblock , if subpassblock * 2 &lt; subblocksperblock
+ = 2*(subblocksperblock-subpassblock)-1 , otherwise
+ where
+ subpassblock = floor((p % S) * subblocksperblock / S)
+
+band(p) = floor(p / (S * H))
+passinband(p) = p % (S * H)
+
+row(j, p) = band(p) * S * J + passinband(p) * A + subblockoffset(p) + j * S
+row(j, p) = p * J + subblockoffset(p) + j * S</screen>
+ <para>
+ To be continued&hellip;
+ </para>
+ </informalexample>
+ </para>
+ </sect2>
+ </sect1>
+</chapter>
diff --git a/doc/dither.texi b/doc/dither.texi
deleted file mode 100644
index f0b363e..0000000
--- a/doc/dither.texi
+++ /dev/null
@@ -1,504 +0,0 @@
-@node Dithering, Weaving, Appendices, Appendices
-@appendix Dithering
-@cindex dithering
-
-The dithering code in @file{print-dither.c} attempts to reproduce
-various shades of gray (or all colors) from only a few different inks
-(black, cyan, magenta, yellow, and sometimes light cyan and light
-magenta). The dots can't vary in darkness or size (except for certain
-special printers), and so we need to lay down a certain fraction of dots
-to represent each distinct level.
-
-This sounds straightforward; in practice, it isn't. Completely random
-distribution of dots (simple probabilistic dithering) would create
-grainy clumps and light spots. The smoothest pattern results from an
-equidistant spacing of dots. Approximating this requires sophisticated
-algorithms. We have two dithering algorithms, an ordered dither
-algorithm that uses a grid (matrix) to decide whether to print, and a
-modified Floyd-Steinberg error diffusion algorithm that uses a grid in a
-slightly different way.
-
-
-We currently have three dithering functions:
-
-@enumerate
-@item
-@code{dither_fastblack} produces pure black or white from a pre-dithered
-input. This is used for two purposes: for printing pure black and white
-very quickly (e. g. text), and for printing pre-screened monochrome
-output that was rasterized externally.
-
-@item
-@code{dither_black} produces black from grayscale input. The new
-dither_black can produce either a single or multiple levels of black,
-for printers supporting variable dot size.
-
-@item
-@code{dither_cmyk} produces 3, 4, 5, 6, or 7 color output (CMY, CMYK,
-CcMmYK, CcMmYy, CcMmYyK, or any variants). The new routine can handle
-single or multiple levels of each color.
-@end enumerate
-
-There is a choice of dithering algorithms. Four of them are based on a
-basic error diffusion, with a few tweaks of my own. The other one is
-`ordered'. However, they all share the basic operation in common.
-First, the algorithm picks what kind of dot (if there are multiple dot
-sizes and/or tones that may be picked) is the candidate to be printed.
-This decision is made based on the darkness at the point being dithered.
-Then, it decides whether the dot will be printed at all. What this is
-based on depends upon which algorithm family we use. This is all
-described in more detail below.
-
-
-Ordered dithering works by comparing the value at a given point with the
-value of a tiled matrix. If the value at the point is greater than the
-value in the matrix, the dot is printed. The matrix should consist of a
-set of evenly spaced points between 0 and the upper limit. The choice
-of matrix is very important for print quality. A good dither matrix
-will emphasize high frequency components, which distributes dots evenly
-with a minimum of clumping. The matrices used here are all simple
-matrices that are expanded recursively to create larger matrices with
-the same kind of even point distribution. This is described below.
-
-Note that it is important to use different matrices for the two
-sub-operations, because otherwise the choice about whether to print and
-the choice of dot size will be correlated. The usual result is that the
-print is either too dark or too light, but there can be other problems.
-
-Ordered dithering works quite well on single dot size, four color
-printers. It has not been well tested on four color, variable dot size
-printers. It should be avoided on six color printers.
-
-
-Error diffusion works by taking the output error at a given pixel and
-``diffusing'' it into surrounding pixels. Output error is the
-difference between the amount of ink output and the input level at each
-pixel. For simple printers, with one or four ink colors and only one
-dot size, the amount of ink output is either 65536 (i. e. full output)
-or 0 (no output). The difference between this and the input level is
-the error. Normal error diffusion adds part of this error to the
-adjoining pixels in the next column and the next row (the algorithm
-simply scans each row in turn, never backing up). The error adds up
-until it reaches a threshold (half of the full output level, or 32768),
-at which point a dot is output, the output is subtracted from the
-current value, and the (now negative) error is diffused similarly.
-
-Error diffusion works quite well in general, but it tends to generate
-artifacts which usually appear as worm-like lines or areas of anomalous
-density. I have devised some ways, as described below, of ameliorating
-these artifacts.
-
-There are two sub-classes of error diffusion that we use here, `random'
-and `hybrid'. One of the techniques that we use to ameliorate the
-artifacts is to use a fuzzy threshold rather than the hard threshold of
-half of the output level. Random error diffusion uses a pseudo-random
-number to perturb the threshold, while hybrid error diffusion uses a
-matrix. Hybrid error diffusion worked very poorly in 3.1.3, and I
-couldn't figure out why until I found a bug. It now works very well.
-
-There is one additional variant (on both sub-classes), called `adaptive
-hybrid' and `adaptive random'. The adaptive variant takes advantage of
-the fact that the patterns that ordered dithering create are less
-visible at very low densities, while the artifacts created by error
-diffusion are more objectionable at low densities. At low densities,
-therefore, it uses ordered dithering; at higher densities it uses error
-diffusion.
-
-
-Handling multiple output levels makes life a bit more complicated. In
-principle, it shouldn't be much harder: simply figure out what the ratio
-between the available output levels is and have multiple thresholds. In
-practice, getting these right involves a lot of trial and error. The
-other thing that's important is to maximize the number of dots that have
-some ink. This will reduce the amount of speckling. More on this
-later.
-
-The next question: how do we handle black when printing in color? Black
-ink is much darker than colored inks. It's possible to produce black by
-adding some mixture of cyan, magenta, and yellow---in principle. In
-practice, the black really isn't very black, and different inks and
-different papers will produce different color casts. However, by using
-CMY to produce gray, we can output a lot more dots! This makes for a much
-smoother image. What's more, one cyan, one magenta, and one yellow dot
-produce less darkness than one black dot, so we're outputting that many
-more dots. Better yet, with 6 or 7 color printers, we have to output even
-more light ink dots. So Epson Stylus Photo printers can produce really
-smooth grays---if we do everything right. The right idea is to use
-CMY at lower black levels, and gradually mix in black as the overall
-amount of ink increases, so the black dots don't really become visible
-within the ink mass.
-
-Variable dot sizes are handled by dividing the range between 0 and
-65536 into segments. Each segment can either represent a range in
-which all of one kind of ink (color and/or dot size) is used, with
-varying amounts of ink, or a transition region between inks, in which
-equal numbers of dots are printed but the amount of each ink will be
-adjusted throughout the range. Each range is represented by four
-numbers:
-
-@enumerate
-@item
-bottom of the range
-@item
-top of the range
-@item
-value of the lighter ink
-@item
-value of the darker ink
-@end enumerate
-
-In addition, the bit patterns and which type of ink are also
-represented, but they don't affect the actual algorithm.
-
-
-As mentioned above, the basic algorithm is the same whether we use
-ordered dither or error diffusion. We perform the following steps on
-each color of each pixel:
-
-@enumerate
-@item
-Compute the value of the particular color we're printing. This isn't
-usually the pure CMY value; it's adjusted to improve saturation and to
-limit the use of black in light toned regions (to avoid speckling).
-
-@item
-Find the range containing this value.
-
-@item
-Compute where this value lies within the range. We scale the endpoints
-between 0 and 65536 for this purpose. So for example, if the bottom of
-the range is 10,000 and the top of the range is 20,000, and the value is
-12,500, we're 1/4 of the way between the bottom and the top of the
-range, so our scale point is 16384.
-
-@item
-Compute the ``virtual value''. The virtual value is the distance between
-the value of the lighter and the value of the darker ink. So if the
-value of the light ink is 32768 and the dark ink is 65536, we compute a
-virtual value scaled appropriately between these two values, which is
-40960 in this case.
-
-@item
-Using either error diffusion or ordered dither, the standard threshold
-is 1/2 of the value (20480 in this case). Using ordered dither, we want
-to compute a value between 0 and 40960 that we will compare the input
-value against to decide whether to print. Using pure error diffusion,
-we would compare the accumulated error against 20480 to decide whether
-to print. In practice, we use the same matrix method to decide whether
-to print. The correct amount of ink will be printed this way, but we
-minimize the squiggly lines characteristic of error diffusion by
-dithering the threshold in this fashion. A future enhancement will
-allow us to control the amount of dithering applied to the threshold.
-@end enumerate
-
-The matrices were generated by Thomas Tonino
-@email{<ttonino@@bio.vu.nl>} with an algorithm of his devising. The
-algorithm is designed to maximize the spacing between dots at any given
-density by searching the matrix for holes and placing a dot in the
-largest available hole. It requires careful selection of initial points
-to achieve good results, and is very time consuming. For best results,
-a different matrix must be used for modes with 2:1 aspect ratio
-(e.g. 1440x720) than for 1:1 (e. g. 720x720). It is essential with any
-of these matrices that every point be used. Skipping points generates
-low-frequency noise.
-
-It's essential to use different matrices for deciding whether to print
-and for deciding what color (dark or light) to print. This should be
-obvious; the decision about whether to print at all should be as
-independent as possible from the decision about what color to print,
-because any bias will result in excess light or dark ink being
-printed, shifting the tonal balance. We actually use the same
-matrices, but we shift them vertically and horizontally. Assuming
-that the matrices are not self-correlated, this will yield good
-results.
-
-The ranges are computed from a list of ink values (between 0 and 1 for
-each possible combination of dot size and ink tone, where the value
-represents the darkness of the ink) and the desired maximum density of
-the ink. This is done in dither_set_ranges, and needs more
-documentation.
-
-
-I stated earlier that I've tweaked the basic error diffusion algorithm.
-Here's what I've done to improve it:
-
-@enumerate
-@item
-We use a variable threshold to decide when to print, as discussed above.
-This does two things for us: it reduces the slightly squiggly diagonal
-lines that are the mark of error diffusion; and it allows us to lay down
-some ink even in very light areas near the edge of the image. The
-squiggly lines that error diffusion algorithms tend to generate are
-caused by the gradual accumulation of error. This error is partially
-added horizontally and partially vertically. The horizontal
-accumulation results in a dot eventually being printed. The vertical
-accumulation results in a dot getting laid down in roughly the same
-horizontal position in the next row. The diagonal squigglies result
-from the error being added to pixels one forward and one below the
-current pixel; these lines slope from the top right to the bottom left
-of the image.
-
-Error diffusion also results in pale areas being completely white near
-the top left of the image (the origin of the printing coordinates).
-This is because enough error has to accumulate for anything at all to
-get printed. In very pale areas it takes quite a long time to build up
-anything printable at all; this results in the bare spots.
-
-Randomizing the threshold somewhat breaks up the diagonals to some
-degree by randomizing the exact location that the accumulated output
-crosses the threshold. It reduces the false white areas by allowing
-some dots to be printed even when the accumulated output level is very
-low. It doesn't result in excess ink because the full output level is
-still subtracted and diffused.
-
-Excessive randomization leads to blobs at high densities. Therefore, as
-the density increases, the degree of randomization decreases.
-
-@item
-Alternating scan direction between rows (first row is scanned left to
-right, second is scanned right to left, and so on). This also helps
-break up white areas, and it also seems to break up squigglies a bit.
-Furthermore, it eliminates directional biases in the horizontal
-direction. This isn't necessary for ordered dither, but it doesn't hurt
-either.
-
-@item
-Diffusing the error into more pixels. Instead of diffusing the entire
-error into @math{(X+1, Y)} and @math{(X, Y+1)}, we diffuse it into
-@math{(X+1, Y)}, @math{(X+K, Y+1)}, @math{(X, Y+1)}, @math{(X-K, Y+1)}
-where @math{K} depends upon the output level (it never exceeds about 10
-dots, and is greater at higher output levels). This really reduces
-squigglies and graininess. The amount of this spread can be controlled;
-for line art, it should be less than for photographs (of course, line
-art doesn't usually contain much light color, but the @strong{error}
-value can be small in places!) In addition to requiring more
-computation, a wide ink spread results in patterning at high dot
-densities (note that the dot density can be high even in fairly pale
-regions if multiple dot sizes are in use).
-
-@item
-Don't lay down any colored ink if we're laying down black ink. There's
-no point; the colored ink won't show. We still pretend that we did for
-purposes of error diffusion (otherwise excessive error will build up,
-and will take a long time to clear, resulting in heavy bleeding of ink
-into surrounding areas, which is very ugly indeed), but we don't bother
-wasting the ink. How well this will do with variable dot size remains
-to be seen.
-
-@item
-Oversampling. This is how to print 1440x720 with Epson Stylus printers.
-Printing full density at 1440x720 will result in excess ink being laid
-down. The trick is to print only every other dot. We still compute the
-error as though we printed every dot. It turns out that randomizing
-which dots are printed results in very speckled output. This can be
-taken too far; oversampling at 1440x1440 or 1440x2880 virtual resolution
-results in other problems. However, at present 1440x1440 (which is more
-accurately called "1440x720 enhanced", as the Epson printers cannot
-print 1440 rows per inch) does quite well, although it's slow.
-@end enumerate
-
-What about multiple output levels? For 6 and 7 color printers, simply
-using different threshold levels has a problem: the pale inks have trouble
-being seen when a lot of darker ink is being printed. So rather than
-just using the output level of the particular color to decide which ink
-to print, we look at the total density (sum of all output levels).
-If the density's high enough, we prefer to use the dark ink. Speckling
-is less visible when there's a lot of ink, anyway. I haven't yet figured
-out what to do for multiple levels of one color.
-
-You'll note that I haven't quoted a single source on color or printing
-theory. I simply did all of this empirically.
-
-There are various other tricks to reduce speckling. One that I've seen
-is to reduce the amount of ink printed in regions where one color
-(particularly cyan, which is perceived as the darkest) is very pale.
-This does reduce speckling all right, but it also results in strange
-tonal curves and weird (to my eye) colors.
-
-
-
-Before any dither routine is used, @code{init_dither()} must be called.
-This takes three arguments: the input width (number of pixels in the
-input), the output width (number of pixels in the output), and a
-@code{vars_t} structure containing the parameters for the print job.
-
-@code{init_dither()} returns a pointer to an opaque object representing
-the dither. This object is passed as the first argument to all of the
-dither-related routines.
-
-After a page is fully dithered, @code{free_dither()} must be called to
-free the dither object and perform any cleanup. In the future, this may
-do more (such as flush output). This arrangement permits using these
-routines with programs that create multiple output pages, such as
-GhostScript.
-
-The dithering routines themselves have a number of control knobs that
-control internal aspects of the dithering process. These knobs are
-accessible via a number of functions that can be called after
-@code{init_dither()}.
-
-@itemize @bullet
-@item
-@code{dither_set_density()} takes a double between 0 and 1 representing
-the desired ink density for printing solid colors. This is used in a
-number of places in the dithering routine to make decisions.
-
-@item
-@code{dither_set_black_density()} takes a double between 0 and 1
-representing the desired ink density for printing black ink in color
-printing. This is used to balance black against color ink. By default,
-this is equal to the density set by @code{dither_set_density()}. By
-setting it higher, more black ink will be printed. For example, if the
-base density is .4 and the black density is .8, twice as much black ink
-will be printed as would otherwise be called for.
-
-This is not used when printing in monochrome. When printing monochrome,
-the base density (@code{dither_set_density}) should be adjusted
-appropriately.
-
-@item
-@code{dither_set_ink_budget()} takes an unsigned number representing the
-most ink that may be deposited at a given point. This number is
-arbitrary; the limit is computed by summing the size of each ink dot,
-which is supplied as a parameter in @code{dither_set_@var{X}_ranges}.
-By default, there is no limit.
-
-@item
-@code{dither_set_black_lower()} takes a double that should be between 0
-and 1 that represents the lowest density level at which black ink will
-start to mix in with colored ink to generate grays. The lower this is,
-the less density is required to use black ink. Setting this too low
-will result in speckling from black dots, particularly on 6 and 7 color
-printers. Setting this too high will make it hard to get satisfactory
-black or may result in sharp transition between blended colors and
-black. Default: 0.0468.
-
-It is important to note that since the density scale is never linear
-(and since this value is adjusted via other things happening during the
-dithering process) that this does not mean that 95% gray will use any
-black ink. At this setting, there will be no black ink used until about
-50% gray.
-
-This only applies to color mode.
-
-This value should be set lower for printers capable of variable dot
-size, since more dots can be laid down close to each other.
-
-@item
-@code{dither_set_black_upper()} takes a double that should be between 0
-and 1 that represents the highest density level at which colored inks
-will be mixed to create gray. Setting this too low will result in
-speckly dark grays because there is not enough ink to fill all the
-holes, or sharp transition between blended colors and black if it is too
-close to the value of dither_set_black_upper(). Setting this too high
-will result in poor black and dark tone quality. Default: 0.5. This
-results in 10% and darker grays being printed with essentially all
-black.
-
-This only applies to color mode.
-
-@item
-@code{dither_set_black_levels()} takes three doubles that represent the
-amount of cyan, magenta, and yellow respectively that are blended to
-create gray. The defaults are 1.0 for each, which is probably too low
-for most printers. These values are adjusted to create a good gray
-balance. Setting these too low will result in pale light and midtone
-grays, with a sharp transition to darker tones as black mixes in.
-Setting them too high will result in overly dark grays and use of too
-much ink, possibly creating bleed-through.
-
-This only applies to color mode.
-
-@item
-@code{dither_set_randomizers()} takes four integer values representing
-the degree of randomness used for cyan, magenta, yellow, and black.
-This is used to allow some printing to take place in pale areas. Zero
-is the most random; greater than 8 or so gives very little randomness at
-all. Defaults are 0 for cyan, magenta, and yellow, and 4 for black.
-Setting the value for black too low will result in black speckling in
-pale areas. Setting values too high will result in pale areas getting
-no ink at all.
-
-This currently only applies to single dot size in color and black. It
-should be extended to operate in variable dot size mode, although
-actually applying it correctly will be tricky.
-
-@item
-@code{dither_set_ink_darkness()} takes three doubles representing the
-contribution to perceived darkness of cyan, magenta, and yellow. This
-is used to help decide when to switch between light and dark inks in 6
-and 7 color printers (with light cyan, light magenta, and possibly light
-yellow). Setting these too low will result in too much light ink being
-laid down, creating flat spots in the darkness curves and bleed-through.
-Setting them too high will result in dark ink being used in pale areas,
-creating speckle. The defaults are .4 for cyan, .3 for magenta, and .2
-for yellow. Dark cyan will show against yellow much more than dark
-magenta will show against cyan, since the cyan appears much darker than
-the yellow.
-
-@item
-@code{dither_set_light_inks()} takes three doubles between 0 and 1
-representing the ratio in darkness between the light and dark versions
-of the inks. Setting these too low will result in too much dark ink
-being used in pale areas, creating speckling, while setting them too
-high will result in very smooth texture but too much use of light ink,
-resulting in flat spots in the density curves and ink bleed-through.
-There are no defaults. Any light ink specified as zero indicates that
-there is no light ink for that color.
-
-This only applies to 6 and 7 color printers in single dot size color
-mode, and only to those inks which have light versions (usually cyan and
-magenta).
-
-@item
-@code{dither_set_ink_spread()} takes a small integer representing the
-amount of ink spread in the dither. Larger numbers mean less spread.
-Larger values are appropriate for line art and solid tones; they will
-yield sharper transitions but more dither artifacts. Smaller values are
-more appropriate for photos. They will reduce resolution and sharpness
-but reduce dither artifacts up to a point. A value of 16 or higher
-implies minimum ink spread at any resolution no matter what the
-overdensity. A value of 14 is typical for photos on single dot size, 6
-color printers. For 4 color printers, subtract 1 (more spread; the dots
-are farther apart). For variable dot size printers, add 1 (more small
-dots are printed; less spread is desirable).
-
-@item
-@code{dither_set_adaptive_divisor()} takes a float representing the
-transition point between error diffusion and ordered dither if adaptive
-dithering is used. The float is a fraction of the printing density.
-For example, if you wish the transition to be at 1/4 of the maximum
-density (which works well on simple 4-color printers), you would pass
-.25 here. With six colors and/or with multiple dot sizes, the values
-should be set lower.
-
-@item
-@code{dither_set_transition()} takes a float representing the exponent
-of the transition curve between light and dark inks/dot sizes. A value
-less than 1 (typical when using error diffusion) mixes in less dark
-ink/small dots at lower ends of the range, to reduce speckling. When
-using ordered dithering, this must be set to 1.
-
-@item
-@code{dither_set_@var{X}_ranges_simple} (@var{X}=@samp{c}, @samp{m},
-@samp{y}, or @samp{k}) describes the ink choices available for each
-color. This is useful in typical cases where a four color printer with
-variable dot sizes is in use. It is passed an array of doubles between
-(0, 1] representing the relative darkness of each dot size. The dot
-sizes are assigned bit patterns (and ink quantities, see
-@code{dither_set_ink_budget()} above) from 1 to the number of levels.
-This also requires a density, which is the desired density for this
-color. This density need not equal the density specified in
-@code{dither_set_density()}. Setting it lower will tend to print more
-dark ink (because the curves are calculated for this color assuming a
-lower density than is actually supplied).
-
-@item
-@code{dither_set_@var{X}_ranges} (@var{X}=@samp{c}, @samp{m}, @samp{y},
-or @samp{k}) describes in a more general way the ink choices available
-for each color. For each possible ink choice, a bit pattern, dot size,
-value (i. e. relative darkness), and whether the ink is the dark or
-light variant ink is specified.
-@end itemize
-
----Robert Krawitz @email{<rlk@@alum.mit.edu>} May 8, 2000
diff --git a/doc/escp2.texi b/doc/escp2.texi
deleted file mode 100644
index db6f057..0000000
--- a/doc/escp2.texi
+++ /dev/null
@@ -1,919 +0,0 @@
-@node ESC/P2, New Printer, Weaving, Appendices
-@appendix ESC/P2
-@cindex ESC/P2
-
-@menu
-* ESC/P2 Introduction:: What is ESC/P2
-* ESC/P2 Standard Commands:: Normal ESC/P2 commands
-* ESC/P2 Remote Mode Commands:: Exotic ESC/P2 commands
-* ESC/P2 Appropriate Remote Commands:: Useful remote command sequences
-@end menu
-
-@node ESC/P2 Introduction, ESC/P2 Standard Commands, , ESC/P2
-@appendixsection Introduction to ESC/P2
-@cindex ESC/P2 introduction
-
-This is a description of the ESC/P2 raster commands used by the
-gimp-print plugin and Ghostscript driver, which is a subset of the
-complete command set. The full documents are found on
-@url{http://www.ercipd.com/isv/edr_docs.htm}. Note that these are
-@strong{not} always correct, and are certainly not complete.
-
-All ESCP/2 raster commands begin with the @samp{ESC} character (1b hex),
-followed by either one or two command characters and arguments where
-applicable. Older commands generally have one command character. Newer
-commands usually have a @samp{(} (left parenthesis) followed by a
-command character and a byte count for the arguments that follow. The
-byte count is a 16-bit (2 byte) binary integer, in little endian order.
-
-All arguments listed here are of the form @samp{name[bytes]} where
-@samp{[bytes]} is the number of bytes that comprise the argument. The
-arguments themselves are usually one, two, or four byte integers, always
-little endian (the least significant bits come first). Presumably this
-is to match Intel processors.
-
-In some cases, the same command sequence identifies different versions
-of the same command, depending upon the number of bytes of arguments.
-
-
-@node ESC/P2 Standard Commands, ESC/P2 Remote Mode Commands, ESC/P2 Introduction, ESC/P2
-@appendixsection Standard commands
-
-@deffn {ESC/P2 command} @code{ESC @@}
-Reset the printer. Discards any output, ejects the existing page,
-returns all settings to their default. Always use this before printing
-a page.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC (G @var{BC}=1 @var{ON1}}
-Turn on graphics mode. @var{ON} should be @samp{1} (turn on graphics
-mode).
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC (U @var{BC}=1 @var{UNIT1}}
-Set basic unit of measurement used by printer. This is expressed in
-multiples of 1/3600". At 720 DPI, @var{UNIT} is @samp{5}; at 360 DPI,
-@var{UNIT} is @samp{10}.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC (U @var{BC}=5 @var{PAGEUNITS1} @var{VUNIT1} @var{HUNIT1} @var{BASEUNIT2}}
-Set basic units of measurement used by the printer. @var{PAGEUNIT} is
-the unit of page measurement (for commands that set page dimensions and
-the like). @var{VUNIT} is the unit of vertical measurement (for
-vertical movement commands). @var{HUNIT} is the unit of horizontal
-movement (for horizontal positioning commands). All of these units are
-expressed in @var{BASEUNIT}, which is in reciprocal inches. Typically,
-@var{BASEUNIT} is @samp{1440}. In 720 DPI mode, @var{PAGEUNIT},
-@var{VUNIT}, and @var{HUNIT} are all @samp{2}; in 1440x720 DPI mode,
-@var{PAGEUNIT} and @var{VUNIT} are normally set to @samp{2}; @var{HUNIT}
-is set to @samp{1}.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC (K @var{BC}=2 @var{ZERO1} @var{GRAYMODE1}}
-Set color or grayscale mode, on printers supporting an explicit
-grayscale mode. These printers can be identified because they are
-advertised as having more black nozzles than nozzles of individual
-colors. Setting grayscale mode allows use of these extra nozzles for
-faster printing. @var{GRAYMODE} should be @samp{0} or @samp{2} for
-color, @samp{1} for grayscale. @var{ZERO} should always be @samp{0}.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC (i @var{BC}=1 @var{MICROWEAVE1}}
-If @var{MICROWEAVE} is @samp{1}, use microweave mode. On older
-printers, this is used to turn on microweave; on newer printers, it
-prints one row at a time. All printers support this mode. It should
-only be used at 720 (or 1440x720) DPI. The Epson Stylus Pro series
-indicates additional modes:
-
-@table @samp
-@item 2
-``Full-overlap''
-@item 3
-``Four-pass''
-@item 4
-``Full-overlap 2''
-@end table
-
-Any of these commands can be used with the high four bits set to either
-@samp{3} or @samp{0}.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC U @var{DIRECTION1}}
-If @var{DIRECTION} is @samp{1}, print unidirectionally; if @samp{0},
-print bidirectionally.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC (s @var{BC}=1 @var{SPEED1}}
-On some older printers, this controls the print head speed. @var{SPEED}
-of @samp{2} is 10 inches/sec; SPEED of @samp{0} or 1 is 20.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC (e @var{BC}=2 @var{ZERO1} @var{DOTSIZE1}}
-Choose print dotsize. @var{DOTSIZE} can take on various values,
-depending upon the printer. Almost all printers support @samp{0} and
-@samp{2}. Variable dot size printers allow a value of @var{16}. Other
-than the value of @var{16}, this appears to be ignored at resolutions of
-720 DPI and above.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC (C @var{BC}=2 @var{PAGELENGTH2}}
-@deffnx {ESC/P2 command} @code{ESC (C @var{BC}=4 @var{PAGELENGTH4}}
-Set the length of the page in "pageunits" (see @samp{ESC (U} above).
-The second form of the command allows setting of longer page lengths on
-new printers (these happen to be the printers that support variable dot
-size).
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC (c @var{BC}=4 @var{TOP2} @var{LENGTH2}}
-@deffnx {ESC/P2 command} @code{ESC (c @var{BC}=8 @var{TOP4} @var{LENGTH4}}
-Set the vertical page margins of the page in "pageunits" (see @samp{ESC
-(U} above). The margins are specified as the top of the page and the
-length of the page. The second form of the command allows setting of
-longer page lengths on new printers (these happen to be the printers
-that support variable dot size).
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC (S @var{BC}=8 @var{WIDTH4} @var{LENGTH4}}
-Set the width and length of the printed page region in "pageunits" (see
-@samp{ESC (U} above).
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC (v @var{BC}=2 @var{ADVANCE2}}
-@deffnx {ESC/P2 command} @code{ESC (v @var{BC}=4 @var{ADVANCE4}}
-Feed vertically @var{ADVANCE} "vertical units" (see @samp{ESC (U} above)
-from the current print head position.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC (V @var{BC}=2 @var{ADVANCE2}}
-@deffnx {ESC/P2 command} @code{ESC (V @var{BC}=4 @var{ADVANCE4}}
-Feed vertically @var{ADVANCE} "vertical units" (see @samp{ESC (U} above)
-from the top margin.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC ($ @var{BC}=4 @var{OFFSET4}}
-Set horizontal position to @var{OFFSET} from the left margin. This
-command operates on printers of the 740 class and newer (all printers
-with variable dot size).
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC $ @var{OFFSET2}}
-Set horizontal position to @var{OFFSET} from the left margin. This
-command operates on printers of the 740 class and newer (all printers
-with variable dot size).
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC (\ @var{BC}=4 @var{UNITS2} @var{OFFSET2}}
-Set horizontal position to @var{OFFSET} from the previous print head
-position, measured in @var{UNITS}. @var{UNITS} is measured in inverse
-inches, and should be set to 1440 in all cases. This operates on all
-1440 dpi printers that do not support variable dot size.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC (/ @var{BC}=4 @var{OFFSET4}}
-Set horizontal position to @var{OFFSET} from the previous print head
-position, measured in "horizontal units" (see @samp{ESC (U} above).
-This operates on all variable dot size printers.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC \ @var{OFFSET2}}
-Set horizontal position to @var{OFFSET} from the previous print head
-position, measured in basic unit of measurement (see @samp{ESC (U}
-above). This is used on all 720 dpi printers, and can also be used on
-1440 dpi printers in lower resolutions to save a few bytes. Note that
-@var{OFFSET} may be negative. The range of values for this command is
-between @samp{-16384} and @samp{16383}.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC r @var{COLOR1}}
-@deffnx {ESC/P2 command} @code{ESC (r @var{BC}=2 @var{DENSITY1} @var{COLOR1}}
-Set the ink color. The first form is used on four-color printers; the
-second on six-color printers. @var{DENSITY} is @samp{0} for dark inks,
-@samp{1} for light. @var{COLOR} is
-
-@table @samp
-@item 0
-black
-@item 1
-magenta
-@item 2
-cyan
-@item 4
-yellow
-@end table
-
-This command is not used on variable dot size printers in softweave
-mode.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC . @var{COMPRESS1} @var{VSEP1} @var{HSEP1} @var{LINES1} @var{WIDTH2} @var{data...}}
- Print data. @var{COMPRESS} signifies the compression mode:
-
-@table @samp
-@item 0
-no compression
-@item 1
-TIFF compression (incorrectly documented as "run length encoded")
-@item 2
-TIFF compression with a special command set.
-@end table
-
-@var{VSEP} depends upon resolution and printer type. At 360 DPI, it is
-always @samp{10}. At 720 DPI, it is normally @samp{5}5. On the ESC
-600, it is @samp{40} (@math{8 * 5}). On some other printers, it varies.
-
-@var{HSEP1} is @samp{10} at 360 DPI and @samp{5} at 720 or 1440 DPI
-(1440 DPI cannot be printed in one pass; it is printed in two passes,
-with the dots separated in each pass by 1/720").
-
-@var{LINES} is the number of lines to be printed. It should be @samp{1}
-in microweave and 360 DPI. At 720 DPI softweave, it should be the
-number of lines to be actually printed.
-
-@var{WIDTH} is the number of pixels to be printed in each row.
-Following this command, a carriage return (@samp{13} decimal, @samp{0A}
-hex) should be output to return the print head position to the left
-margin.
-
-The basic data format is a string of bytes, with data from left to right
-on the page. Within each byte, the highest bit is first.
-
-The TIFF compression is implemented as one count byte followed by one or
-more data bytes. There are two cases:
-
-@enumerate
-@item
-If the count byte is @samp{128} or less, it is followed by @math{[count]
-+ 1} data bytes. So if the count byte is @samp{0}, it is followed by 1
-data byte; if it is @samp{128}, it is followed by 129 data bytes.
-
-@item
-If the count byte is greater than 128, it is followed by one byte. This
-byte is repeated (257 - [count]) times. So if [count] is 129, the next
-byte is treated as though it were repeated 128 times; if [count] is 255,
-it is treated as though it were repeated twice.
-@end enumerate
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC i @var{COLOR1} @var{COMPRESS1} @var{BITS1} @var{BYTES2} @var{LINES2} @var{data...}}
-Print data in the newer printers (that support variable dot size), and
-Stylus Pro models.
-
-@var{COLOR} is the color:
-
-@table @samp
-@item 0
-black
-@item 1
-magenta
-@item 2
-cyan
-@item 4
-yellow
-@item 17
-light magenta
-@item 18
-light cyan
-@end table
-
-@var{COMPRESS} signifies the
-compression mode:
-
-@table @samp
-@item 0
-no compression
-@item 1
-TIFF compression (incorrectly documented as "run length encoded")
-@item 2
-TIFF compression with a special command set.
-@end table
-
-@var{BITS} is the number of bits per pixel.
-
-@var{BYTES} is the number of bytes wide for each row (@math{ceiling(BITS
-* width_of_row, 8)}). Note that this is different from the @samp{ESC .}
-command above.
-
-@var{LINES} is the number of lines to be printed. This command is the
-only way to get variable dot size printing. In variable dot mode, the
-size of the dots increases as the value (@samp{1}, @samp{2}, or
-@samp{3}) increases.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC (D @var{BC}=4 @var{BASE2} @var{VERTICAL1} @var{HORIZONTAL1}}
-Set printer horizontal and vertical spacing. It only applies to
-variable dot size printers in softweave mode (and possibly other high
-end printers).
-
-@var{BASE} is the base unit for this command; it must be @samp{14400}.
-
-@var{VERTICAL} is the distance in these units between printed rows; it
-should be (@math{separation_in_nozzles * BASE / 720}).
-
-@var{HORIZONTAL} is the horizontal separation between dots in a row.
-Depending upon the printer, this should be either (@math{14400 / 720})
-or (@math{14400 / 360}). The Stylus Pro 9000 manual suggests that the
-settings should match the chosen resolution, but that is apparently not
-the case (or not always the case) on other printers.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC (R @var{BC}=8 00 R E M O T E 1}
-Enters ``remote mode''. This is a special, undocumented command set that
-is used to set up various printer options, such as paper feed tray, and
-perform utility functions such as head cleaning and alignment. It does
-not appear that anything here is actually required to make the printer
-print. Our best understanding of what is in a remote command sequence
-is described in a separate section below.
-@end deffn
-
-@deffn {ESC/P2 command} @code{ESC 01 @@EJL [sp] ID\r\n}
-Return the printer ID. This is considered a remote mode command,
-although the syntax is that of a conventional command. This returns the
-following information:
-
-@example
-@@EJL ID\r
-MFG:EPSON;
-CMD:ESCPL2,BDC;
-MDL:[printer model];
-CLS:PRINTER;
-DES:EPSON [printer model];
-\f
-@end example
-@end deffn
-
-After all data has been sent, a form feed byte should be sent.
-
-All newer Epson printers (STC 440, STP 750) require the following
-command to be sent at least once to enable printing at all. This
-command specifically takes the printer out of the Epson packet mode
-communication protocol (whatever that is) and enables normal data
-transfer. Sending it multiple times is is not harmful, so it is
-normally sent at the beginning of each job:
-
-@example
-ESC 01@@EJL[space]1284.4[newline]@@EJL[space][space][space][space]
-[space][newline]ESC@@
-@end example
-
-The proper sequence of initialization commands is:
-
-@example
-magic command
-ESC @
-remote mode if needed
-ESC (G
-ESC (U
-ESC (K (if appropriate)
-ESC (i
-ESC U (if needed)
-ESC (s (if appropriate)
-ESC (e
-ESC (C
-ESC (c
-ESC (S
-ESC (D (if needed)
-ESC (V (optional -- this can be accomplished with ESC (v)
-@end example
-
-For printing, the proper sequence is:
-
-@example
-ESC (v
-@end example
-
-@noindent
-and repeat for each color:
-
-@example
-ESC ($ @r{or} ESC (\ @r{or} ESC \
-ESC (r @r{or} ESC r @r{(if needed---not used with @samp{ESC i} and not needed if the color
-has not changed from the previous printed line)}
-ESC . @r{or} ESC i ...data... [return] (0A hex)
-@end example
-
-To terminate a page:
-
-@example
-[formfeed] (0C hex)
-ESC @@
-@end example
-
-
-@node ESC/P2 Remote Mode Commands, ESC/P2 Appropriate Remote Commands, ESC/P2 Standard Commands, ESC/P2
-@appendixsection Remote Mode Commands
-
-The following description of remote commands comes out of an
-examination of the sequences used by the printer utilities bundled
-with the Windows drivers for the ESC740, and from other sources (some
-Epson manuals, experimentation, analysis of print files). It is
-largely speculative as these commands are not all documented in the
-Epson documentation we have access to. Generally, newer manuals
-provide more thorough documentation.
-
-Remote command mode is entered when the printer is sent the following
-sequence:
-
-@example
-ESC (R BC=8 00 R E M O T E 1
-@end example
-
-Remote mode commands are then sent, and terminated with the following
-sequence:
-
-@example
-ESC 00 00 00
-@end example
-
-All remote mode commands must be sent before the initial @samp{ESC (G}
-command is sent.
-
-This introductory sequence is then followed by a sequence of commands.
-Each command is constructed as follows:
-
-@itemize
-@item Two ASCII bytes indicating the function
-@item A byte count (two bytes, little-endian) for the parameters
-@item Binary parameters, if any
-@end itemize
-
-This is a list of all remote commands we have seen:
-
-@deffn {ESC/P2 remote command} @code{NC @var{BC}=2 00 00}
-Print a nozzle check pattern
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{VI @var{BC}=2 00 00}
-on my 740, prints the following:
-
-@example
-W01286 I02382\r\n
-@end example
-
-@noindent
-probably ``version information''
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* AI @var{BC}=3 00 00 00}
-Prints a ``printer ID''. On one 870, prints the following:
-@example
-51-51-50-51-49-48\r\n
-@end example
-
-The Windows driver has a text entry field where this number can be
-entered, but its purpose is unknown.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* LD @var{BC}=0}
-Load printer defaults from NVRAM, DIP switches, and/or ROM. This
-apparently does not load factory defaults per se, but any settings that
-are saved. This is commonly used right at the end of each print job
-after the @samp{ESC @@} printer reset command.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* CH @var{BC}=2 00 @var{xx}}
-Perform a head cleaning cycle. The heads to clean are determined by
-parameter @var{xx}:
-
-@table @samp
-@item 00
-clean all heads
-@item 01
-clean black head
-@item 02
-clean color heads
-@end table
-
-While @var{xx} = @samp{00} is probably supported by all printers, @var{xx} =
-@samp{01} and @samp{02} may well not be.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* DT @var{BC}=3 00 @var{xx} 00}
-Print an alignment pattern. There are three patterns, which are picked
-via the choice of @var{xx}. Pattern @samp{0} is coarse, pattern
-@samp{1} is medium, and pattern @samp{2} is fine.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* DU @var{BC}=6 00 @var{xx} 00 09 00 @var{yy}}
-Print another alignment pattern. It isn't entirely clear what @var{xx}
-and @var{yy} are, but it appears that @var{xx} takes on the values
-@samp{1} and @samp{2} , and @var{yy} takes on the values @samp{0} and
-@var{1}. This may only work on the 580 and/or 480.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* DA @var{BC}=4 00 @var{xx} 00 @var{yy}}
-Set results for the first alignment pattern. @var{xx} is the pattern
-(@samp{1}--@samp{3}); @var{yy} is the best choice from the set
-(@samp{1}--@samp{7} or @samp{1}--@samp{15}). This does not save to
-NVRAM, so when the printer is powered off, the setting will be lost.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* DA @var{BC}=6 00 @var{xx} 00 @var{yy} 09 00}
-Set results for alternate alignment pattern. @var{xx} appears to be the
-pass, and @var{yy} appears to be the optimum pattern. This does not
-save to NVRAM, so when the printer is powered off, the setting will be
-lost.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* SV @var{BC}=0}
-Save the current settings to NVRAM.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* RS @var{BC}=1 01}
-Reset the printer.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* IQ @var{BC}=1 01}
-Get ink quantity. This requires direct access to the printer port. The
-return looks like
-
-@example
-IQ:KKCCMMYY
-@end example
-
-@noindent
-or
-
-@example
-IQ:KKCCMMYYccmm
-@end example
-
-@noindent
-(for 4-color and 6-color printers respectively), where each pair of
-digits are hexadecimal representations of percent.
-@end deffn
-
-The following two commands have been observed on an STP 870.
-
-@deffn {ESC/P2 remote command} @code{* IR @var{BC}=2 00 @var{xx}}
-@strong{Function unknown}. This command has been observed on an STP 870
-with @var{xx}=@samp{03} at the start of a job and @var{xx}=@samp{02} at
-the end of a job (where it is followed by an @samp{LD} command). When
-in roll mode, the values change to @var{xx}=@samp{01} at the start of a
-job and @var{xx}=@samp{00} at the end of a job.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* FP @var{BC}=3 00 @var{xx} @var{yy}}
-@var{xx}=@samp{00} and @var{yy}=@samp{00} selects the printer's normal
-left margin (about 3mm). @var{xx}=@samp{0xb0} and @var{yy}=@samp{0xff}
-selects zero-margin mode, where the left-most print position is shifted
-to a point about 0.1" to the left of the left-hand edge of the paper,
-allowing printing up to (and off) the left-hand edge of the paper.
-@end deffn
-
-The commands below are partially documented in the Stylus Pro 9000
-manual. Much of this information is interpreted; none is tested.
-
-@deffn {ESC/P2 remote command} @code{* SN @var{BC}=3 00 @var{xx} @var{yy}}
-Select Mechanism Sequence. @var{xx} controls which sub-operation is
-performed. @var{xx}=@samp{00} selects the ``Feed paper sequence
-setting''. @var{yy} can take on the following values (on the STP 870,
-at any rate):
-
-@table @samp
-@item 0
-default
-@item 1
-plain paper
-@item 2
-postcards
-@item 3
-film (photo quality glossy film, transparencies)
-@item 4
-envelopes
-@item 5
-plain paper (fast load)
-@item 6
-back light film (although this has been observed with heavyweight matte
-paper)
-@item 7
-matte paper (observed with 360 dpi inkjet paper, and photo quality
-inkjet paper)
-@item 8
-photo paper
-@end table
-
-Experimentation suggests that this setting changes details of how the
-printers' cut sheet feeder works, presumably to tune it for different
-types of paper.
-
-@var{xx}=@samp{01} controls the platen gap setting; @var{yy}=@samp{00}
-is the default, @var{yy}=@samp{1} or @samp{2} are higher settings.
-
-@var{xx}=@samp{02} controls paper loading speed (@var{yy}=@samp{0} is
-normal, @samp{1} is fast, @samp{2} is slow). It appears that @samp{1}
-is used when printing on ``plain paper'', ``360dpi ink jet paper'' or
-``ink jet transparencies'', and @var{yy}=@samp{00} for all other paper
-type settings.
-
-@var{xx}=@samp{07} controls duplex printing for printers with that
-capability (@var{yy}=@var{0} is default, for non-duplex printing;
-@samp{1} is front side of the paper, and @var{2} is back side).
-
-@var{xx}=@samp{09} controls zero margin printing on the printers with
-the capability of printing zero-margin on all sides (Stylus Photo
-780/790, 890, and 1280/1290). @var{yy}=@samp{0} is the default;
-@samp{1} enables zero margin printing.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* PP @var{BC}=3 00 @var{xx} @var{yy}}
-Set Paper Path. @var{xx}=@samp{2} indicates manual feed,
-@var{xx}=@samp{3} is for roll paper. @var{yy} selects ``paper path
-number''.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* AC @var{BC}=2 00 @var{xx}}
-Set Auto Cutting State. @var{xx}=@samp{0} selects auto cutting off,
-@var{xx}=@samp{1} selects auto cutting on, and @var{xx}=@samp{2}
-indicates horizontal print page line on. It appears that with auto
-cutting on, roll paper is cut automatically at the point a formfeed
-character is sent. The formfeed character is normally used to eject a
-page; with this turned on, it also cuts the roll paper. Horizontal
-print page line on prints a narrow line of black dots at the position
-the paper should be cut manually.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* DR @var{BC}=4 00 xx @var{DT2}}
-Set Drying Time. @var{xx}=@samp{00} sets the drying time ``per scan''
-(per pass?); @var{xx}=@samp{01} sets the drying time per page. @var{DT}
-indicates the drying time, which is in seconds if page mode is used and
-in milliseconds if scan mode is used. @var{DT} must not exceed 3600
-seconds in per-page mode and 10000 milliseconds in per-scan mode.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* IK @var{BC}=2 00 @var{xx}}
-Select Ink Type. @var{xx}=@samp{00} selects dye ink. Pigment ink is
-apparently selected by @var{xx}=@samp{01}. This probably does not apply
-to the consumer-grade printers.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* PZ BC=2 00 xx}
-Set Pause After Printing. @var{xx}=@samp{00} selects no pause after
-printing; @var{xx}=@samp{01} selects pause after printing. If turned
-on, the printer is paused after the page is ejected (by the FF
-byte). If cutting is turned on, the printer is paused @strong{after}
-the cutting or printing of the horizontal cut line.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* EX @var{BC}=6 00 00 00 00 0x14 @var{xx}}
-Set Vertical Print Page Line Mode. @var{xx}=@samp{00} is off,
-@var{xx}=@samp{01} is on. If turned on, this prints vertical trim lines
-at the left and right margins.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* EX @var{BC}=6 00 00 00 00 0x05 @var{xx}}
-Set Roll Paper Mode. If @var{xx} is @samp{0}, roll paper mode is off;
-if @var{xx} is @samp{1}, roll paper mode is on.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* EX @var{BC}=3 00 @var{xx} @var{yy}}
-Appears to be a synonym for the @samp{SN} command described above.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* PH @var{BC}=2 00 @var{xx}}
-Select Paper Thickness. Set the paper thickness @var{xx} in .1 mm
-units. This must not exceed 0x10 (1.6 mm). If the thickness is set
-"more than" .6 mm (which probably means "at least" .6 mm, since the
-other case reads "less than 0.5 mm"), the platen gap is set high
-irrespective of the @samp{SN} command.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* PM @var{BC}=2 00 00}
-@strong{Function unknown}. Used on the STC 3000 at least when using roll
-feed, and on the STP 870 in all print files analysed to date.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* ST @var{BC}=2 00 @var{xx}}
-Epson's STP 750/1200 programming guide refers to the @samp{ST} command
-as ``Set printer state reply''. If @var{xx} is @samp{0} or @samp{2},
-the printer will not send status replies. If @var{xx} is @samp{1} or
-@samp{3}, the printer will send status replies. The status replies
-consist of state, error codes, ink leve, firmware version, and warning
-status.
-
-The actual reply is documented as
-
-@example
-@@BDC ST\r
-ST: xx;
-[ER: yy;]
-IQ: n1n2n3n4;
-[WR: w1,w2...;]
-RV: zz;
-AI:CW:02kkccmmyy, MI:mm
-[TC:tttt;]
-INK:...;
-\f
-@end example
-
-@noindent
-(@samp{\r} is carriage return; @samp{\n} is newline; @samp{\f} is
-formfeed.)
-
-@samp{ST} is the printer status:
-
-@table @samp
-@item 00
-Error
-@item 01
-Self-test
-@item 02
-Busy
-@item 03
-Waiting while printing
-@item 04
-Idle
-@item 07
-Cleaning/filling ink heads
-@item 08
-Not yet initialized/filling heads
-@end table
-
-@samp{ER}, if provided, is the error status:
-
-@table @samp
-@item 00
-Fatal error
-@item 01
-Interface not selected
-@item 04
-Paper jam
-@item 05
-Out of ink
-@item 06
-Paper out
-@end table
-
-@samp{IQ} is the amount of ink left, as a (decimal!) percentage
-expressed in hexadecimal. The values are black, cyan, magenta, and
-yellow (presumably 6-color printers supply light cyan and light magenta
-inks as additional parameters).
-
-@samp{WR}, if provided, is the warning status:
-
-@table @samp
-@item 10
-Black ink low
-@item 11
-Cyan
-@item 12
-Magenta
-@item 13
-Yellow
-@item 14
-Light cyan (presumably)
-@item 15
-Light magenta (presumably)
-@end table
-
-@samp{RV} is the firmware revision (one byte ASCII).
-
-@samp{AI} is actuator information. These are two byte ASCII codes that
-indicate ``ink weight rank ID'' of KCMY, respectively.
-
-@samp{TC}, if provided, is the total time of cleaning or ink filling (?).
-
-@samp{INK:} and @samp{MI} are @strong{not documented}.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* SM @var{BC}=2 00 @var{xx}}
-Set Status Reply Rate. @var{xx} is the repeat interval in seconds. If
-@var{xx} is @samp{0}, the status is returned only when the printer's
-state changes.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* ST @var{BC}=1 01}
-Reply Printer Status. The reply is formatted as
-
-@example
-@@BDC PS\r\nST:@var{xx};\f
-@end example
-
-(@samp{\r} is carriage return; @samp{\n} is newline; @samp{\f} is
-formfeed). If @var{xx} (the reply value) is @samp{0} or @samp{2},
-automatic status update is disabled; if @samp{1} or @samp{3}, it is
-enabled.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* SM @var{BC}=1 01}
-Reply Printer Status Rate. The reply is formatted as
-
-@example
-@@BDC PS\r\nST:xx;\f
-@end example
-
-(@samp{\r} is carriage return; @samp{\n} is newline; @samp{\f} is
-formfeed). See @samp{SM @var{BC}=2} above for the meaning of the return
-value.
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* ?? @var{BC}=@var{xx} @var{y}[1] @dots{} @var{y}[xx]}
-Echo Parameters (perhaps better described as Echo Commands). The
-command string is executed (it would appear from the documentation), and
-the string sent is returned using a sequence similar to that described
-in the @samp{ST @var{BC}=1} and @samp{SM @var{BC}=1} commands. Note
-that in this case the number of bytes is variable!
-@end deffn
-
-@deffn {ESC/P2 remote command} @code{* SM @var{BC}=2 00 02}
-@strong{Function unknown}. Used on the STC 3000 at least when using
-roll feed.
-@end deffn
-
-
-@node ESC/P2 Appropriate Remote Commands, , ESC/P2 Remote Mode Commands, ESC/P2
-@appendixsection Appropriate Remote Commands
-
-All of the remote commands described above are wrapped up with the usual
-boilerplate. The files always start with @samp{00 00 00} and the
-``magic'' command described above, then two @samp{ESC @@}s to reset the
-printer. The remote command sequences come next; if they print anything
-that is usually followed by a @samp{FF} (0C hex) character to feed the
-page, then the file ends with another two @samp{ESC @@}s to get back to
-the ground state.
-
-An alignment sequence goes like this:
-
-@enumerate
-@item Host uses @samp{DT} to print an alignment sheet
-@item User eyeballs the sheet to see which is the best aligned pattern.
-@item Host sends a @samp{DA} command indicating which pattern the user chose
-@item If the user said "realign", meaning he isn't done yet, go to step 1
-@item We are done: host sends a @samp{SV} command and exits
-@end enumerate
-
-The sequence used (by the STC 3000, at least) to print from the roll
-feed is (with byte count omitted)
-
-@example
- PM 00 00
- SN 00 00 00
- EX 00 00 00 00 05 01
- ST 00 01
- SM 00 02
-@end example
-
-The sequence used by the STP 870 to print on plain paper is
-
-@example
- PM 00 00
- IR 00 03
- SN 00 00 01
- SN 00 01 00
- SN 00 02 01
- EX 00 00 00 00 05 00
- FP 00 00 00
-@end example
-
-@noindent
-and the job finishes with
-
-@example
- IR 00 02
- LD
-@end example
-
-For different paper type settings on the STP 870, the arguments to
-@samp{SN} vary. The arguments to the first and third @samp{SN} commands
-are as outlined in the description of the @samp{SN} command above; the
-arguments to the second (``platen gap'') are @samp{00 01 01} for thick
-papers (``matte paper---heavyweight'', ``photo paper'' and ``premium
-glossy photo paper'') and @samp{00 01 00} for all others.
-
-For roll-mode printing, the STP 870's sequence changes as follows.
-@samp{IR}'s arguments become @samp{00 01} in the header, and @samp{00
-00} after the job, and @samp{EX}'s last argument changes from @samp{00}
-to @samp{01}.
-
-For zero-margin printing on the STP 870, the arguments to @samp{FP} become
-@samp{00 0xb0 0xff}. This moves the origin about 5.5mm to the left, to a
-point one tenth of an inch to the left of the left-hand edge of the
-paper, allowing printing right up to (and beyond) the edge of the
-paper. Some printers (at least the STP 870) include white absorbent
-pads at the left margin position and other positions (89mm and 100mm
-on the STP 870) to soak up ink which misses the edge of the paper.
-Printing off the edge of paper of a width not aligned with a pad could
-result in making a mess of the inside of the printer and ink getting
-on the reverse of the paper.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/doc/functions.texi b/doc/functions.texi
deleted file mode 100644
index 773d4fd..0000000
--- a/doc/functions.texi
+++ /dev/null
@@ -1,744 +0,0 @@
-@node Functions, Programs, Integrating libgimpprint, Top
-@chapter Functions
-@cindex functions
-
-This section of the manual is a complete reference to all of the functions
-comprising libgimpprint, with examples.
-
-All of the libgimpprint functions can be declared by including the master
-libgimpprint header, @file{<gimp-print/gimp-print.h>}. This should be done in
-every source file that uses gimpprint functions by putting
-
-@example
-#include <gimp-print/gimp-print.h>
-@end example
-
-@noindent
-at the top of each file.
-
-@menu
-* Main functions:: Essential functions every program must call.
-* stp_vars_t functions:: Using stp_vars_t.
-* Dither functions:: Dither algorithms.
-* Options functions:: Options.
-* Paper functions:: Paper size and orientation.
-* Printer functions:: Printer selection.
-* Settings functions:: Getting and changing settings.
-* Version functions:: Getting libgimpprint version information.
-@end menu
-
-@node Main functions, stp_vars_t functions, , Functions
-@section Main functions
-@cindex main functions
-
-These functions are essential to the correct functioning of
-libgimpprint. All or most other functions in the library depend
-absolutely upon them. In the case of @code{stp_init}, this function
-@emph{must} be called before any of the other functions in the library.
-
-
-@cindex initialising libgimpprint
-@deftypefun int stp_init (void)
-
-This function initialises the libgimpprint library. It must be called before
-any of the other libgimpprint functions are called. It is responsible for
-setting up message catalogues (for internationalisation). This function
-may be called more than once, at any stage during the execution of a
-program.
-
-It returns zero on success, nonzero on failure.
-@end deftypefun
-
-@code{stp_init} might be used as follows:
-
-@example
-int
-main (int argc, char **argv)
-@{
- stp_init();
-
- @dots{}
-
-@}
-@end example
-
-@cindex memory allocation
-@deftypefun {void *} stp_malloc (size_t @var{size})
-
-Where @var{size} is the amount of memory to allocate (in bytes).
-
-This function allocates memory. It will always return a pointer to the
-allocated memory. It will not return on failure.
-
-It returns a pointer to the allocated memory.
-@end deftypefun
-
-@node stp_vars_t functions, Dither functions, Main functions, Functions
-@section @code{stp_vars_t} functions
-@cindex @code{stp_vars_t} functions
-
-@deftypevr {Data type} {void *} stp_vars_t
-This is an opaque data type, whose structure is not visible to the
-user. This object contains all of the information about settings for
-a given printer, such as color (contrast, brightness), the type of
-printer, the dithering algorithm in use, and so forth. Please see the
-@code{stp_set_*} and @code{stp_get_*} functions below for the
-accessors and mutators for this data type.
-@end deftypevr
-
-
-@deftypefun stp_vars_t stp_allocate_vars (void)
-Allocate a new @code{stp_vars_t} with default settings for all members.
-@end deftypefun
-
-@deftypefun void stp_copy_vars (stp_vars_t @var{vd}, const stp_vars_t @var{vs})
-Copy the settings from @var{vs} to @var{vd}.
-@end deftypefun
-
-@deftypefun stp_vars_t stp_allocate_copy (const stp_vars_t @var{vs})
-Allocate a new @code{stp_vars_t}, copying settings from @var{vs}.
-@end deftypefun
-
-@deftypefun void stp_free_vars (stp_vars_t @var{vv})
-Free all resources associated with @var{vv}. @var{vv} must not be
-used in any way following this call.
-@end deftypefun
-
-@deftypefun {const char *} stp_get_output_to (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_output_to (stp_vars_t @var{vv}, const char *@var{val})
-@deftypefunx void stp_set_output_to_n (stp_vars_t @var{vv}, const char *@var{val}, int @var{bytes})
-Get or set the name of the command that this job will be printed to.
-This is used by front ends; the driver library always prints to a
-stream provided by the front end and never uses this directly.
-@end deftypefun
-
-@deftypefun {const char *} stp_get_driver (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_driver (stp_vars_t @var{vv}, const char *@var{val})
-@deftypefunx void stp_set_driver_n (stp_vars_t @var{vv}, const char *@var{val}, int @var{bytes})
-Get or set the name of the driver (the type of printer).
-@end deftypefun
-
-@deftypefun {const char *} stp_get_ppd_file (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_ppd_file (stp_vars_t @var{vv}, const char *@var{val})
-@deftypefunx void stp_set_ppd_file_n (stp_vars_t @var{vv}, const char *@var{val}, int @var{bytes})
-Get or set the name of the PPD file used by this print job. Normally,
-only PostScript printers use PPD files.
-@end deftypefun
-
-@deftypefun {const char *} stp_get_resolution (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_resolution (stp_vars_t @var{vv}, const char *@var{val})
-@deftypefunx void stp_set_resolution_n (stp_vars_t @var{vv}, const char *@var{val}, int @var{bytes})
-Get or set the resolution to be used in this print job. Different
-drivers support different resolutions, and many drivers support
-multiple quality settings for a given DPI resolution.
-@end deftypefun
-
-@deftypefun {const char *} stp_get_media_size (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_media_size (stp_vars_t @var{vv}, const char *@var{val})
-@deftypefunx void stp_set_media_size_n (stp_vars_t @var{vv}, const char *@var{val}, int @var{bytes})
-Get or set the name of the media size (e. g. A3, letter, legal) to be
-used in this print job.
-@end deftypefun
-
-@deftypefun {const char *} stp_get_media_type (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_media_type (stp_vars_t @var{vv}, const char *@var{val})
-@deftypefunx void stp_set_media_type_n (stp_vars_t @var{vv}, const char *@var{val}, int @var{bytes})
-Get or set the name of the media type (e. g. plain paper, photo
-quality inkjet paper) to be used in this print job.
-@end deftypefun
-
-@deftypefun {const char *} stp_get_media_source (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_media_source (stp_vars_t @var{vv}, const char *@var{val})
-@deftypefunx void stp_set_media_source_n (stp_vars_t @var{vv}, const char *@var{val}, int @var{bytes})
-Get or set the name of the media source (e. g. manual feed, tray A) to
-be used in this print job.
-@end deftypefun
-
-@deftypefun {const char *} stp_get_ink_type (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_ink_type (stp_vars_t @var{vv}, const char *@var{val})
-@deftypefunx void stp_set_ink_type_n (stp_vars_t @var{vv}, const char *@var{val}, int @var{bytes})
-Get or set the name of the ink type (e. g. four color standard, six
-color photo) to be used in this print job.
-@end deftypefun
-
-@deftypefun {const char *} stp_get_dither_algorithm (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_dither_algorithm (stp_vars_t @var{vv}, const char *@var{val})
-@deftypefunx void stp_set_dither_algorithm_n (stp_vars_t @var{vv}, const char *@var{val}, int @var{bytes})
-Get or set the dither algorithm to be used in this print job.
-@end deftypefun
-
-@deftypefun int stp_get_output_type (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_output_type (stp_vars_t @var{vv}, int @var{val})
-Get or set the output type (color, grayscale, black and white) for
-this print job.
-@end deftypefun
-
-@deftypefun int stp_get_orientation (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_orientation (stp_vars_t @var{vv}, int @var{val})
-Get or set the paper orientation for this print job.
-@end deftypefun
-
-@deftypefun int stp_get_left (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_left (stp_vars_t @var{vv}, int @var{val})
-Get or set the left margin (in 1/72 inch units, or "points") for this
-print job.
-@end deftypefun
-
-@deftypefun int stp_get_top (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_top (stp_vars_t @var{vv}, int @var{val})
-Get or set the top margin (in 1/72 inch units, or "points") for this
-print job.
-@end deftypefun
-
-@deftypefun int stp_get_image_type (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_image_type (stp_vars_t @var{vv}, int @var{val})
-Get or set the image type (line art, continuous tone, solid colors)
-for this print job.
-@end deftypefun
-
-@deftypefun int stp_get_unit (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_unit (stp_vars_t @var{vv}, int @var{val})
-Get or set the base unit (inches or centimeters) for this print job.
-This is provided for front ends; the package itself uses points as its
-unit of measurement.
-@end deftypefun
-
-@deftypefun int stp_get_page_width (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_page_width (stp_vars_t @var{vv}, int @var{val})
-Get or set the width of the printed region of the page.
-@end deftypefun
-
-@deftypefun int stp_get_page_height (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_page_height (stp_vars_t @var{vv}, int @var{val})
-Get or set the height of the printed region of the page.
-@end deftypefun
-
-@deftypefun int stp_get_input_color_model (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_input_color_model (stp_vars_t @var{vv}, int @var{val})
-Get or set the color model (currently RGB or CMY) of the input to the
-driver. Most front ends will use RGB input.
-@end deftypefun
-
-@deftypefun int stp_get_output_color_model (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_output_color_model (stp_vars_t @var{vv}, int @var{val})
-Get or set the color model (currently RGB or CMY) of the output of the
-driver. Most printers will use CMY.
-@end deftypefun
-
-@deftypefun float stp_get_scaling (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_scaling (stp_vars_t @var{vv}, float @var{val})
-Get or set the scaling factor of the image. If the scaling factor is
-greater than 0, it is interpreted as a percent (5.0-100.0 is the valid
-range) of the printable page region, using the more restrictive axis.
-For example, if the image to be printed should be 3" (wide) x 2"
-(high), and the printable page region is 8"x10.5", the scale factor
-should be 37.5 (3"/8").
-
-If the scaling is less than zero, it is interpreted as pixels per
-inch.
-
-It is likely that in the future this will be migrated into the front
-end. There is no particular reason why the driver needs to know about
-this.
-@end deftypefun
-
-@deftypefun float stp_get_gamma (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_gamma (stp_vars_t @var{vv}, float @var{val})
-Get or set the gamma of the print job (valid range: 0.1-4.0; default
-1.0). Note that this is not the absolute gamma used by the print job;
-it is scaled by the gamma appropriate for the printer. This is true
-for all of the numerical parameters.
-@end deftypefun
-
-@deftypefun float stp_get_brightness (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_brightness (stp_vars_t @var{vv}, float @var{val})
-Get or set the brightness of the print job (valid range: 0.0-2.0;
-default: 1.0). Any value other than 1.0 will result in some possible
-values not being used; if brightness is less than 1.0, no output point
-will be pure white, and if brightness is greater than 1.0, no output
-point will be pure black (or cyan, or magenta, or yellow).
-@end deftypefun
-
-@deftypefun float stp_get_contrast (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_contrast (stp_vars_t @var{vv}, float @var{val})
-Get or set the contrast of the print job (valid range: 0.0-4.0;
-default: 1.0). Values less than 1.0 will result in pure white or
-black not being used (0.0 will make the entire image 50% gray).
-Values greater than 1.0 do not hard clip; while the contrast in the
-midtones increases, it only asymptotically approaches the limits.
-@end deftypefun
-
-@deftypefun float stp_get_cyan (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_cyan (stp_vars_t @var{vv}, float @var{val})
-Get or set the cyan adjustment of the print job (range: 0.0-4.0; default:
-1.0). This currently adjusts the gamma of the cyan curve. It is
-scaled by the cyan adjustment for the printer model in question.
-@end deftypefun
-
-@deftypefun float stp_get_magenta (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_magenta (stp_vars_t @var{vv}, float @var{val})
-Get or set the magenta adjustment of the print job (range: 0.0-4.0; default:
-1.0). This currently adjusts the gamma of the magenta curve. It is
-scaled by the magenta adjustment for the printer model in question.
-@end deftypefun
-
-@deftypefun float stp_get_yellow (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_yellow (stp_vars_t @var{vv}, float @var{val})
-Get or set the yellow adjustment of the print job (range: 0.0-4.0; default:
-1.0). This currently adjusts the gamma of the yellow curve. It is
-scaled by the yellow adjustment for the printer model in question.
-@end deftypefun
-
-@deftypefun float stp_get_saturation (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_saturation (stp_vars_t @var{vv}, float @var{val})
-Get or set the saturation of the print job (range: 0.0-9.0; default: 1.0).
-Saturation of 0.0 produces grayscale output using composite (CMY or
-CMYK, as appropriate for the printer) color.
-@end deftypefun
-
-@deftypefun float stp_get_density (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_density (stp_vars_t @var{vv}, float @var{val})
-Get or set the density of the print job (range: 0.0-2.0; default:
-1.0). This adjusts the amount of ink deposited in a linear fashion
-for all channels. It is scaled by the density appropriate for the
-choice of printer, resolution, paper type, and other factors that the
-driver may deem appropriate.
-@end deftypefun
-
-@deftypefun float stp_get_app_gamma (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_app_gamma (stp_vars_t @var{vv}, float @var{val})
-Get or set the gamma of the input (i. e. what the driving application
-uses).
-@end deftypefun
-
-@deftypefun {void *} stp_get_lut (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_lut (stp_vars_t @var{vv}, void *@var{val})
-Get or set the color lookup table for the print job. This is useful
-outside of the library for computing a preview of the printed result.
-The lookup table itself should be treated as an opaque handle.
-@end deftypefun
-
-@deftypefun {unsigned char *} stp_get_cmap (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_cmap (stp_vars_t @var{vv}, unsigned char *@var{val})
-Get or set the color map for the print job. This is a table of R,G,B
-values for 8-bit indexed input. This may be moved outside of the
-library in the future; in this case, the front end would be required
-to do its own mapping and supply true-color RGB to the driver.
-@end deftypefun
-
-The following methods are used to perform output and error reporting
-by the driver. The driver supplies a stream of output bytes; the
-front end is responsible for providing methods that accept this output
-and handle it appropriately.
-
-@deftypefun stp_outfunc_t stp_get_outfunc (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_outfunc (const stp_vars_t @var{vv}, stp_outfunc_t @var{val})
-@deftypefunx {void *} stp_get_outdata (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_outdata (stp_vars_t @var{vv}, void *@var{val})
-
-@deftypevr {Data type} {} stp_outfunc_t
-@example
-typedef void (*stp_outfunc_t) (void *data,
- const char *buffer, size_t bytes);
-@end example
-@end deftypevr
-Get or set the output function the driver will use. The front end
-must supply a suitable function for accepting the output data. The
-@code{stp_set_outdata} method provides a way of passing an appropriate
-object to the output function.
-@end deftypefun
-
-@deftypefun stp_outfunc_t stp_get_errfunc (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_errfunc (const stp_vars_t @var{vv}, stp_outfunc_t @var{val})
-@deftypefunx {void *} stp_get_errdata (const stp_vars_t @var{vv})
-@deftypefunx void stp_set_errdata (stp_vars_t @var{vv}, void *@var{val})
-Get or set the error reporting function that the driver will use.
-This is used to report errors or debugging information, and must be
-supplied. A typical errfunc will simply print whatever it's passed to
-stderr.
-@end deftypefun
-
-/*
- * hue_map is an array of 49 doubles representing the mapping of hue
- * from (0..6) to (0..6) in increments of .125. The hue_map is in CMY space,
- * so hue=0 is cyan.
- */
-typedef void (*stp_convert_t)(const stp_vars_t vars, const unsigned char *in,
- unsigned short *out, int *zero_mask,
- int width, int bpp, const unsigned char *cmap,
- const double *hue_map, const double *lum_map,
- const double *sat_map);
-
-@deftypefun void stp_merge_printvars (stp_vars_t @var{user}, const stp_vars_t @var{print})
-
-@end deftypefun
-
-@deftypefun void stp_allocate_lut (stp_vars_t @var{v}, size_t @var{steps})
-
-@end deftypefun
-
-@deftypefun void stp_free_lut (stp_vars_t @var{v})
-
-@end deftypefun
-
-@deftypefun void stp_compute_lut (stp_vars_t @var{v}, size_t @var{steps})
-
-@end deftypefun
-
-
-@node Dither functions, Options functions, stp_vars_t functions, Functions
-@section Dither functions
-@cindex dither functions
-
-@deftypefun size_t stp_dither_algorithm_count (void)
-
-@end deftypefun
-
-@deftypefun {const char *} stp_dither_algorithm_name (int @var{id})
-
-@end deftypefun
-
-@deftypefun {const char *} stp_default_dither_algorithm (void)
-
-@end deftypefun
-
-
-
-@node Options functions, Paper functions, Dither functions, Functions
-@section Options functions
-@cindex options functions
-
-@deftypevr {Data type} {void *} stp_option_t
-This is an opaque data type, whose structure is not visible to the
-user.
-@end deftypevr
-
-@deftypefun void stp_set_option(stp_vars_t @var{v}, const char *@var{name}, const char *@var{data}, int @var{bytes})
-
-@end deftypefun
-
-@deftypefun void stp_clear_option (stp_vars_t @var{v}, const char *@var{name})
-
-@end deftypefun
-
-@deftypefun void stp_clear_all_options (stp_vars_t @var{v})
-
-@end deftypefun
-
-@deftypefun size_t stp_option_count (const stp_vars_t @var{v})
-
-@end deftypefun
-
-@deftypefun {const stp_option_t} stp_get_option_by_index (const stp_vars_t @var{v}, size_t @var{idx})
-
-@end deftypefun
-
-@deftypefun {const stp_option_t} stp_get_option_by_name (const stp_vars_t @var{v}, const char *@var{name})
-
-@end deftypefun
-
-@deftypefun {const char *} stp_option_data (const stp_option_t @var{option})
-@strong{Note}: not null delimited!
-@end deftypefun
-
-@deftypefun {const char *} stp_option_name (const stp_option_t @var{option})
-
-@end deftypefun
-
-@deftypefun size_t stp_option_length (const stp_option_t @var{option})
-
-@end deftypefun
-
-
-@node Paper functions, Printer functions, Options functions, Functions
-@section Paper functions
-@cindex paper functions
-
-@deftypevr {Data type} {void *} stp_papersize_t
-This is an opaque data type, whose structure is not visible to the
-user.
-@end deftypevr
-
-@deftypevr {Data type} {} stp_papersize_unit_t
-@example
-typedef enum papersize_unit
-@{
- PAPERSIZE_ENGLISH,
- PAPERSIZE_METRIC
-@} stp_papersize_unit_t;
-@end example
-@end deftypevr
-
-@deftypefun int stp_known_papersizes (void)
-
-@end deftypefun
-
-@deftypefun {const stp_papersize_t} stp_get_papersize_by_name (const char *@var{name})
-
-@end deftypefun
-
-@deftypefun {const stp_papersize_t} stp_get_papersize_by_size (int @var{l}, int @var{w})
-
-@end deftypefun
-
-@deftypefun {const stp_papersize_t} stp_get_papersize_by_index (int @var{index})
-
-@end deftypefun
-
-@deftypefun {const char *} stp_papersize_get_name (const stp_papersize_t @var{pt})
-
-@end deftypefun
-
-@deftypefun unsigned stp_papersize_get_width (const stp_papersize_t @var{pt})
-
-@end deftypefun
-
-@deftypefun unsigned stp_papersize_get_height (const stp_papersize_t @var{pt})
-
-@end deftypefun
-
-@deftypefun unsigned stp_papersize_get_top (const stp_papersize_t @var{pt})
-
-@end deftypefun
-
-@deftypefun unsigned stp_papersize_get_left (const stp_papersize_t @var{pt})
-
-@end deftypefun
-
-@deftypefun unsigned stp_papersize_get_bottom (const stp_papersize_t @var{pt})
-
-@end deftypefun
-
-@deftypefun unsigned stp_papersize_get_right (const stp_papersize_t @var{pt})
-
-@end deftypefun
-
-
-@deftypefun stp_papersize_unit_t stp_papersize_get_unit (const stp_papersize_t @var{pt})
-
-@end deftypefun
-
-
-@node Printer functions, Settings functions, Paper functions, Functions
-@section Printer functions
-@cindex printer functions
-
-@deftypevr {Data type} {void *} stp_printer_t
-This is an opaque data type, whose structure is not visible to the
-user.
-@end deftypevr
-
-@deftypefun int stp_known_printers (void)
-
-@end deftypefun
-
-
-@deftypefun {const stp_printer_t} stp_get_printer_by_index (int @var{idx})
-
-@end deftypefun
-
-
-@deftypefun {const char *} stp_printer_get_long_name (const stp_printer_t @var{p})
-
-@end deftypefun
-
-
-@deftypefun {const stp_printer_t} stp_get_printer_by_long_name (const char *@var{long_name})
-
-@end deftypefun
-
-
-@deftypefun {const stp_printer_t} stp_get_printer_by_driver (const char *@var{driver})
-
-@end deftypefun
-
-
-@deftypefun int stp_get_printer_index_by_driver (const char *@var{driver})
-
-@end deftypefun
-
-
-@deftypefun {const char *} stp_printer_get_driver (const stp_printer_t @var{p})
-
-@end deftypefun
-
-
-@deftypefun int stp_printer_get_model (const stp_printer_t @var{p})
-
-@end deftypefun
-
-
-@deftypefun {const stp_printfuncs_t *} stp_printer_get_printfuncs (const stp_printer_t @var{p})
-
-@end deftypefun
-
-@deftypevr {Data type} {} stp_printfuncs_t
-@example
-typedef struct
-@{
- char **(*parameters)(const stp_printer_t printer,
- const char *ppd_file,
- const char *name, int *count);
- void (*media_size)(const stp_printer_t printer,
- const stp_vars_t v, int *width,
- int *height);
- void (*imageable_area)(const stp_printer_t printer,
- const stp_vars_t v,
- int *left, int *right,
- int *bottom, int *top);
- void (*limit)(const stp_printer_t printer,
- const stp_vars_t v,
- int *width, int *height);
- void (*print)(const stp_printer_t printer,
- stp_image_t *image, const stp_vars_t v);
- const char *(*default_parameters)(const stp_printer_t printer,
- const char *ppd_file,
- const char *name);
- void (*describe_resolution)(const stp_printer_t printer,
- const char *resolution,
- int *x, int *y);
- int (*verify)(const stp_printer_t p, const stp_vars_t v);
-@} stp_printfuncs_t;
-@end example
-@end deftypevr
-
-@deftypevr {Data type} {} stp_image_t
-@example
-typedef struct stp_image
-@{
- void (*init)(struct stp_image *image);
- void (*reset)(struct stp_image *image);
- void (*transpose)(struct stp_image *image);
- void (*hflip)(struct stp_image *image);
- void (*vflip)(struct stp_image *image);
- void (*crop)(struct stp_image *image,
- int left, int top, int right,
- int bottom);
- void (*rotate_ccw)(struct stp_image *image);
- void (*rotate_cw)(struct stp_image *image);
- void (*rotate_180)(struct stp_image *image);
- int (*bpp)(struct stp_image *image);
- int (*width)(struct stp_image *image);
- int (*height)(struct stp_image *image);
- void (*get_row)(struct stp_image *image,
- unsigned char *data, int row);
- const char *(*get_appname)(struct stp_image *image);
- void (*progress_init)(struct stp_image *image);
- void (*note_progress)(struct stp_image *image,
- double current, double total);
- void (*progress_conclude)(struct stp_image *image);
- void *rep;
-@} stp_image_t;
-@end example
-This is an abstract data type for interfacing with the program which
-created the image.
-@end deftypevr
-
-@deftypefun {const stp_vars_t} stp_printer_get_printvars (const stp_printer_t @var{p})
-
-@end deftypefun
-
-
-@node Settings functions, Version functions, Printer functions, Functions
-@section Settings functions
-@cindex settings functions
-
-@deftypefun stp_convert_t stp_choose_colorfunc (int @var{output_type}, int @var{image_bpp}, const unsigned char *@var{cmap}, int *@var{out_bpp}, const stp_vars_t @var{v})
-
-@end deftypefun
-
-
-@deftypefun void stp_compute_page_parameters (int @var{page_right}, int @var{page_left}, int @var{page_top}, int @var{page_bottom}, double @var{scaling}, int @var{image_width}, int @var{image_height}, stp_image_t *@var{image}, int *@var{orientation}, int *{page_width}, int *@var{page_height}, int *@var{out_width}, int *@var{out_height}, int *@var{left}, int *@var{top})
-
-@end deftypefun
-
-
-@deftypefun {const stp_vars_t} stp_default_settings (void)
-
-@end deftypefun
-
-
-@deftypefun {const stp_vars_t} stp_maximum_settings (void)
-
-@end deftypefun
-
-
-@deftypefun {const stp_vars_t} stp_minimum_settings (void)
-
-@end deftypefun
-
-
-
-
-@node Version functions, , Settings functions, Functions
-@section Version functions
-@cindex version functions
-
-@deftypefun {const char *} stp_check_version (unsigned int @var{required_major},
-unsigned int @var{required_minor}, unsigned int @var{required_micro})
-
-This function checks whether the version of libgimpprint that the program
-is linked with is equal to the version number passed to it. If the version
-is the same, the function returns @code{NULL}. If any of the version
-numbers do not match (i.e. the library version is too old or too new), a string containing a desription of the difference is
-returned. The first error found is returned. The function checks in the order
-major, minor, micro.
-@end deftypefun
-
-@subsection Version macros
-
-@defmac GIMPPRINT_CHECK_VERSION (major,minor,micro)
-
-This macro returns zero if the version of the libgimpprint headers are
-greater or equal to the version given as an argument. It returns nonzero
-if the version of the libgimpprint headers are less than the argument.
-@end defmac
-
-@defmac GIMPPRINT_MAJOR_VERSION
-@end defmac
-
-@defmac GIMPPRINT_MINOR_VERSION
-@end defmac
-
-@defmac GIMPPRINT_MICRO_VERSION
-@end defmac
-
-@defmac GIMPPRINT_CURRENT_INTERFACE
-@end defmac
-
-@defmac GIMPPRINT_BINARY_AGE
-@end defmac
-
-@defmac GIMPPRINT_INTERFACE_AGE
-@end defmac
-
-These macros are integers holding the version numbers. They should be
-used for compile-time checking only. To check version numbers at
-run-time, use the equivalent variables. Note that at present (4.1.x
-development branch) the library interface version numbers are not used.
-
-@subsection Version variables
-
-@deftypevar {const unsigned int} gimpprint_major_version
-@end deftypevar
-
-@deftypevar {const unsigned int} gimpprint_minor_version
-@end deftypevar
-
-@deftypevar {const unsigned int} gimpprint_micro_version
-@end deftypevar
-
-@deftypevar {const unsigned int} gimpprint_current_interface
-@end deftypevar
-
-@deftypevar {const unsigned int} gimpprint_binary_age
-@end deftypevar
-
-@deftypevar {const unsigned int} gimpprint_interface_age
-@end deftypevar
-
-These variables hold the library version numbers. Because the version of
-the library may change on a system using shared libraries, these should
-be used instead of the equivalent macros when checking the library
-version at run-time. Note that library interface version numbers are not
-used in the development branch, but are in the stable branch.
diff --git a/doc/gimpprint.dvi b/doc/gimpprint.dvi
deleted file mode 100644
index 8a291b6..0000000
--- a/doc/gimpprint.dvi
+++ /dev/null
Binary files differ
diff --git a/doc/gimpprint.info b/doc/gimpprint.info
deleted file mode 100644
index bf32d40..0000000
--- a/doc/gimpprint.info
+++ /dev/null
@@ -1,94 +0,0 @@
-This is gimpprint.info, produced by makeinfo version 4.0 from
-gimpprint.texi.
-
-INFO-DIR-SECTION Libraries
-START-INFO-DIR-ENTRY
-* GIMP-Print: (gimpprint). print plugin for the GIMP, and printing library
-END-INFO-DIR-ENTRY
-
- This file documents the gimpprint library and associated programs
-used for high quality printing.
-
- Copyright (C) 2001 Michael Sweet (<mike@easysw.com>) and Robert
-Krawitz (<rlk@alum.mit.edu>)
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-
-Indirect:
-gimpprint.info-1: 1086
-gimpprint.info-2: 50090
-gimpprint.info-3: 97464
-gimpprint.info-4: 142317
-gimpprint.info-5: 185904
-
-Tag Table:
-(Indirect)
-Node: Top1086
-Node: Instructions2197
-Node: Copying3918
-Node: Overview24512
-Node: Using libgimpprint25397
-Node: Integrating libgimpprint26721
-Node: gimpprint-config27428
-Node: make29503
-Node: autoconf30090
-Node: automake31773
-Node: Functions33960
-Node: Main functions34957
-Node: stp_vars_t functions36188
-Node: Dither functions49755
-Node: Options functions50090
-Node: Paper functions51096
-Node: Printer functions52501
-Node: Settings functions56361
-Node: Version functions57187
-Node: Programs59480
-Node: The GIMP plugin60109
-Ref: The GIMP plugin-Footnote-169830
-Ref: The GIMP plugin-Footnote-269860
-Ref: The GIMP plugin-Footnote-369905
-Ref: The GIMP plugin-Footnote-469938
-Node: Ghostscript70040
-Node: CUPS70175
-Node: Problems70272
-Ref: Problems-Footnote-171100
-Ref: Problems-Footnote-271149
-Node: Appendices71198
-Node: Dithering71582
-Node: Weaving97161
-Node: Weaving introduction97464
-Node: Weaving algorithms103941
-Node: Simple weaving algorithms106555
-Node: Perfect weaving110315
-Node: Weaving collisions119194
-Node: What is perfect weaving?120618
-Node: Oversampling142317
-Node: ESC/P2151914
-Node: ESC/P2 Introduction152280
-Node: ESC/P2 Standard Commands153602
-Node: ESC/P2 Remote Mode Commands165573
-Node: ESC/P2 Appropriate Remote Commands178224
-Node: New Printer180913
-Node: printers.xml181856
-Node: Driver file184518
-Node: Epson inkjet printers185904
-Node: Tuning Epson printers204261
-Node: Canon inkjet printers211171
-Node: Data Type and Variable Index214629
-Node: Function and Macro Index215791
-Node: Concept Index228976
-
-End Tag Table
diff --git a/doc/gimpprint.info-1 b/doc/gimpprint.info-1
deleted file mode 100644
index 2b81ad8..0000000
--- a/doc/gimpprint.info-1
+++ /dev/null
@@ -1,1100 +0,0 @@
-This is gimpprint.info, produced by makeinfo version 4.0 from
-gimpprint.texi.
-
-INFO-DIR-SECTION Libraries
-START-INFO-DIR-ENTRY
-* GIMP-Print: (gimpprint). print plugin for the GIMP, and printing library
-END-INFO-DIR-ENTRY
-
- This file documents the gimpprint library and associated programs
-used for high quality printing.
-
- Copyright (C) 2001 Michael Sweet (<mike@easysw.com>) and Robert
-Krawitz (<rlk@alum.mit.edu>)
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-
-File: gimpprint.info, Node: Top, Prev: (dir), Up: (dir)
-
-The print plugin for the GIMP and printing library
-**************************************************
-
- This file documents the libgimpprint library and associated programs
-used for high quality printing. This edition documents version 4.2.7.
-
- *Note Problems::, for information on how to report problems with
-GIMP-Print.
-
-* Menu:
-
-* Instructions:: How to read this manual.
-* Copying:: Your rights.
-* Overview:: Preliminary information.
-* Using libgimpprint:: Examples of how to use libgimpprint.
-* Integrating libgimpprint:: Using libgimpprint in your own packages.
-* Functions:: libgimpprint function reference.
-* Programs:: Using GIMP-Print programs.
-* Problems:: Reporting bugs.
-* Appendices:: Additional information.
-* Data Type and Variable Index:: Index of data types and variables.
-* Function and Macro Index:: Index of functions and macros.
-* Concept Index:: Index of concepts.
-
-
-File: gimpprint.info, Node: Instructions, Next: Copying, Prev: Top, Up: Top
-
-Preface
-*******
-
- This manual documents the use of the GIMP-Print package, focusing
-mainly on the libgimpprint library that is the core of GIMP-Print.
-Parts of the manual which describe the use of libgimpprint are aimed
-primarily at programmers, and do assume that the reader is familiar
-with C programming, and using standard programming tools on GNU or UNIX
-systems. Other parts of the manual document the use of the programs
-that make up the GIMP-Print package, and assume no knowledge other than
-the basics of using a shell and editor.
-
- The best way to learn how to use libgimpprint in your own programs
-is to read the manual from start to finish, using the examples given in
-the text to learn how it works. The bulk of the manual can be used as a
-reference once one understands the basics.
-
- The manual is split into several parts for the programmer. It starts
-with a simple usage example of how to link a program with libgimpprint,
-then how to integrate this into package build scripts, using `make',
-`autoconf' and `automake'. This is followed by a detailed function
-reference, including descriptions of all the data types used.
-
- For the end-user, there is a section on all of the programs that come
-with GIMP-Print, including the GIMP `print' plugin, and the CUPS and
-Ghostscript drivers.
-
- The appendices at the end of the manual detail the dither and weave
-algorithms used in libgimpprint, the ESC/P2 printer control language
-used in Epson printers and how to add support for a new printer to
-libgimpprint.
-
-
-
- We hope you enjoy using GIMP-Print!
-
- --The GIMP-Print project
-
-
-File: gimpprint.info, Node: Copying, Next: Overview, Prev: Instructions, Up: Top
-
-GNU GENERAL PUBLIC LICENSE
-**************************
-
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, 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.
-
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 1. 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.
-
- 2. 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.
-
- 3. 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.
-
- 4. 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.
-
- 5. 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.
-
- 6. 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.
-
- 7. 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.
-
- 8. 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.
-
- 9. 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.
-
- 10. 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.
-
- 11. 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
-
- 12. 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.
-
- 13. 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.
-
- ONE LINE TO GIVE THE PROGRAM'S NAME AND AN IDEA OF WHAT IT DOES.
- Copyright (C) 19YY NAME OF AUTHOR
-
- 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.
-
- 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) 19YY 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.
-
- SIGNATURE OF TY COON, 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.
-
-Copying summary
-***************
-
- GIMP-Print is "free"; this means that everyone is free to use it and
-free to redistribute it on a free basis. GIMP-Print is not in the public
-domain; it is copyrighted and there are restrictions on its
-distribution, but these restrictions are designed to permit everything
-that a good cooperating citizen would want to do. What is not allowed is
-to try to prevent others from further sharing any version of GIMP-Print
-that they might get from you.
-
- Specifically, we want to make sure that you have the right to give
-away copies of GIMP-Print, that you receive source code or else can get
-it if you want it, that you can change GIMP-Print or use pieces of it
-in new free programs, and that you know you can do these things.
-
- To make sure that everyone has such rights, we have to forbid you to
-deprive anyone else of these rights. For example, if you distribute
-copies of GIMP-Print, 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 tell them their rights.
-
- Also, for our own protection, we must make certain that everyone
-finds out that there is no warranty for GIMP-Print. If GIMP-Print is
-modified by someone else and passed on, we want their recipients to
-know that what they have is not what we distributed, so that any
-problems introduced by others will no reflect on our reputation.
-
-
-File: gimpprint.info, Node: Overview, Next: Using libgimpprint, Prev: Copying, Up: Top
-
-Overview
-********
-
- The GIMP-Print package is a collection of programs and a library for
-high quality printing on modern inkjets, including `photographic
-quality' models which offer very high resolutions and several inks.
-
- META: Short history of the project
-
- GIMP-Print is the print facility of the "GNU Image Manipulation
-Program" (GIMP). It is in addition a suite of drivers that may be used
-with common UNIX spooling systems using GhostScript or CUPS. These
-drivers provide printing quality for UNIX/Linux on a par with
-proprietary vendor-supplied drivers in many cases, and can be used for
-many of the most demanding printing tasks. The core of GIMP-Print is a
-shared library (libgimpprint) which may be used by any program that
-wishes to produce high-qulaity printed output.
-
-
-File: gimpprint.info, Node: Using libgimpprint, Next: Integrating libgimpprint, Prev: Overview, Up: Top
-
-Using libgimpprint
-******************
-
- This chapter describes how to write programs that use libgimpprint.
-
-Code prerequisites
-==================
-
- To use libgimpprint with a program, several steps must be taken:
-
- 1. Include the master libgimpprint header `<gimp-print/gimp-print.h>.'
-
- 2. Call `stp_init()'.
-
- 3. Link with libgimpprint.
-
- The following is a short example program. It does not do anything
-useful, but it does everything required to link with libgimpprint and
-call other functions from libgimpprint.
-
- #include <gimp-print/gimp-print.h>
-
- int
- main (int argc, char *argv[])
- {
- stp_init ();
- return (0);
- }
-
-Linking with libgimpprint
-=========================
-
- To link a program with libgimpprint, then `-lgimpprint' needs to be
-passed to the compiler when linking. For example, to compile and link
-`prog.c' the following commands would be used:
-
- gcc -c prog.c
- gcc -o prog -lgimpprint prog.o
-
- The compiler and linker flags needed may vary depending on the
-options GIMP-Print was configured with when it was built. The
-`gimpprint-config' script will give the correct parameters for the
-local installation (*note gimpprint-config::).
-
-
-File: gimpprint.info, Node: Integrating libgimpprint, Next: Functions, Prev: Using libgimpprint, Up: Top
-
-Integrating libgimpprint
-************************
-
- This chapter describes how to integrate the compiling and linking of
-programs using libgimpprint with build scripts. Commonly used systems
-include `make', but more commonly `Makefile' files are generated by
-using tools such as `autoconf' and `automake'.
-
-* Menu:
-
-* gimpprint-config:: Getting the correct compiler and linker flags
-* make:: Normal makefiles
-* autoconf:: Macro to automatically check for libgimpprint
-* automake:: Automatically defined variables to use
-
-
-File: gimpprint.info, Node: gimpprint-config, Next: make, Up: Integrating libgimpprint
-
-`gimpprint-config'
-==================
-
- Depending on the setup of the computer system GIMP-Print was
-installed on, as well as the options passed to `configure' when
-configuring the package when it was built, the `CFLAGS' and `LIBS'
-parameters needed to compile and link programs with libgimpprint may
-vary. To make it simple to determine what these are on any given
-system, the script `gimpprint-config' was created. It's job is to
-output the correct parameters for the setup on your system. The
-following options are available:
-
- roger@whinlatter:~/gimpprint/devel$ gimpprint-config --help
- Usage: gimpprint-config [OPTIONS] [LIBRARIES]
- Options:
- [--prefix[=DIR]]
- [--exec-prefix[=DIR]]
- [--version]
- [--libs]
- [--cflags]
- Libraries:
- gimpprint
-
- The `--prefix' and `--exec-prefix' options are only needed if the
-installed locations of parts of GIMP-Print are different from the
-configured locations. These should never be needed if GIMP-Print was
-properly configured and installed.
-
- The installed version of GIMP-Print can be obtained with the
-`--version' option:
-
- roger@whinlatter:~/gimpprint/devel$ gimpprint-config --version
- 4.2.7
-
- The correct `CFLAGS' to use can be obtained with the `--cflags'
-option:
-
- roger@whinlatter:~/gimpprint/devel$ gimpprint-config --cflags
-
- In this case, there are no special `CFLAGS' required to compile
-programs.
-
- The correct `LIBS' to use can the obtained with the `--libs' option:
-
- roger@whinlatter:~/gimpprint/devel$ gimpprint-config --libs
- -L/usr/lib -lgimpprint -lm
-
- The command can be used from the shell by enclosing it in backquotes
-``':
-
- gcc `gimpprint-config --cflags` -c prog.c
- gcc `gimpprint-config --libs` -o prog prog.o
-
- However, this is not the way it it typically used. Normally it is
-used in a `Makefile' (*note make::) or by an `m4' macro in a `configure'
-script (*note autoconf::).
-
-
-File: gimpprint.info, Node: make, Next: autoconf, Prev: gimpprint-config, Up: Integrating libgimpprint
-
-`make'
-======
-
- If you use `make' with your own `Makefile' files, then you are on
-your own. This manual offers no assistance with doing this. Only the
-following suggestion is offered:
-
- GIMPPRINT_VERSION = $(shell gimpprint-config --version)
- GIMPPRINT_CFLAGS = $(shell gimpprint-config --cflags)
- GIMPPRINT_LIBS = $(shell gimpprint-config --libs)
-
- How you choose to use these variables is entirely up to you. *note
-GNU make: (make)Top, for more information.
-
-
-File: gimpprint.info, Node: autoconf, Next: automake, Prev: make, Up: Integrating libgimpprint
-
-`autoconf'
-==========
-
- The `autoconf' program produces a Bourne shell script called
-`configure' from a template file called `configure.in'. `configure.in'
-contains both Bourne shell script, and `m4' macros. `autoconf' expands
-the `m4' macros into `real' shell script. The resulting `configure'
-script performs various checks for installed programs, compiler
-characteristics and other system information such as available headers
-and libraries. *note GNU autoconf: (autoconf)Top, for more information.
-
- GIMP-Print provides an `m4' macro, `AM_PATH_GIMPPRINT', suitable for
-use in a `configure.in'. It defines the environment variables
-`GIMPPRINT_CFLAGS', `GIMPPRINT_LIBS' and `GIMPPRINT_CONFIG'. You can
-optionally specify a minimum version of the library to use, and shell
-script to run if the test suceeds or fails.
-
- - Macro: AM_PATH_GIMPPRINT ([MINIMUM-VERSION [, ACTION-IF-FOUND [,
- ACTION-IF-NOT-FOUND]]])
- Check for an installed version of GIMP-Print greater than or equal
- to MINIMUM-VERSION.
-
- ACTION-IF-FOUND is a list of shell commands to run if the check
- for the library succeeds; ACTION-IF-NOT-FOUND is a list of shell
- commands to run if the check fails.
-
- The macro sets the following environment variables:
- `GIMPPRINT_CFLAGS', `GIMPPRINT_LIBS' and `GIMPPRINT_CONFIG'. It
- also will substitute them into any `Makefile.in' you specify in
- `AC_OUTPUT' because it calls `AC_SUBST' for each of them. However,
- you will probably be using `automake' to generate your
- `Makefile.in' files (*note automake::).
-
-
-
-File: gimpprint.info, Node: automake, Prev: autoconf, Up: Integrating libgimpprint
-
-`automake'
-==========
-
- The `automake' program can be used to generate `Makefile.in' files
-suitable for use with a `configure' script generated by `autoconf'. As
-`automake' _requires_ `autoconf', this section will assume the use of a
-`configure' script which uses the `AM_PATH_GIMPPRINT' macro (there is
-little point in _not_ using it!).
-
- It is highly recommeded that you use GNU `autoconf' and `automake'.
-They will allow you to make your software build on most platforms with
-most compilers. `automake' makes writing complex `Makefile' files very
-easy, by expressing how to build your packages in terms of what files
-are required to build a project and the installation locations of the
-files. It imposes a few limitations over using plain `Makefile' files,
-such as in the use of conditionals, but these problems are vastly
-outweighed by the benefits it brings. It also creates many extra
-targets in the generated `Makefile.in' files such as `dist',
-`distcheck', `clean', `distclean', `maintainer-clean' and `tags', and
-there are many more more available. *note GNU automake: (automake)Top,
-for more information.
-
- Because `AM_PATH_GIMPPRINT' calls `AC_SUBST' to substitute
-`GIMPPRINT_CFLAGS', `GIMPPRINT_LIBS' and `GIMPPRINT_CONFIG', `automake'
-will automatically set these variables in the `Makefile.in' files it
-generates, requiring no additional effort on your part!
-
- As in previous examples, we will make a program `prog' from a file
-`prog.c'. This is how one might build write a `Makefile.am' to do this:
-
- AUTOMAKE_OPTIONS = 1.4 gnu
- MAINT_CHARSET = latin1
-
- @SET_MAKE@
-
- CFLAGS = @CFLAGS@
-
- INCLUDES = @INCLUDES@ $(GIMPPRINT_CFLAGS)
-
- bin_PROGRAMS = prog
- prog_SOURCES = prog.c
- prog_LDADD = $(GIMPPRINT_LIBS)
-
- MAINTAINERCLEANFILES = Makefile.in
-
- That's all there is to it! Please note that this example also
-requires the macro `AC_PROG_MAKE_SET' to be used in `configure.in' and
-the use of `AC_SUBST' to substitute `CFLAGS' and `INCLUDES' where
-`@CFLAGS@' and `@INCLUDES@' are found in the file, respectively.
-
-
-File: gimpprint.info, Node: Functions, Next: Programs, Prev: Integrating libgimpprint, Up: Top
-
-Functions
-*********
-
- This section of the manual is a complete reference to all of the
-functions comprising libgimpprint, with examples.
-
- All of the libgimpprint functions can be declared by including the
-master libgimpprint header, `<gimp-print/gimp-print.h>'. This should
-be done in every source file that uses gimpprint functions by putting
-
- #include <gimp-print/gimp-print.h>
-
-at the top of each file.
-
-* Menu:
-
-* Main functions:: Essential functions every program must call.
-* stp_vars_t functions:: Using stp_vars_t.
-* Dither functions:: Dither algorithms.
-* Options functions:: Options.
-* Paper functions:: Paper size and orientation.
-* Printer functions:: Printer selection.
-* Settings functions:: Getting and changing settings.
-* Version functions:: Getting libgimpprint version information.
-
-
-File: gimpprint.info, Node: Main functions, Next: stp_vars_t functions, Up: Functions
-
-Main functions
-==============
-
- These functions are essential to the correct functioning of
-libgimpprint. All or most other functions in the library depend
-absolutely upon them. In the case of `stp_init', this function _must_
-be called before any of the other functions in the library.
-
- - Function: int stp_init (void)
- This function initialises the libgimpprint library. It must be
- called before any of the other libgimpprint functions are called.
- It is responsible for setting up message catalogues (for
- internationalisation). This function may be called more than once,
- at any stage during the execution of a program.
-
- It returns zero on success, nonzero on failure.
-
- `stp_init' might be used as follows:
-
- int
- main (int argc, char **argv)
- {
- stp_init();
-
- ...
-
- }
-
- - Function: void * stp_malloc (size_t SIZE)
- Where SIZE is the amount of memory to allocate (in bytes).
-
- This function allocates memory. It will always return a pointer to
- the allocated memory. It will not return on failure.
-
- It returns a pointer to the allocated memory.
-
-
-File: gimpprint.info, Node: stp_vars_t functions, Next: Dither functions, Prev: Main functions, Up: Functions
-
-`stp_vars_t' functions
-======================
-
- - Data type: void * stp_vars_t
- This is an opaque data type, whose structure is not visible to the
- user. This object contains all of the information about settings
- for a given printer, such as color (contrast, brightness), the
- type of printer, the dithering algorithm in use, and so forth.
- Please see the `stp_set_*' and `stp_get_*' functions below for the
- accessors and mutators for this data type.
-
- - Function: stp_vars_t stp_allocate_vars (void)
- Allocate a new `stp_vars_t' with default settings for all members.
-
- - Function: void stp_copy_vars (stp_vars_t VD, const stp_vars_t VS)
- Copy the settings from VS to VD.
-
- - Function: stp_vars_t stp_allocate_copy (const stp_vars_t VS)
- Allocate a new `stp_vars_t', copying settings from VS.
-
- - Function: void stp_free_vars (stp_vars_t VV)
- Free all resources associated with VV. VV must not be used in any
- way following this call.
-
- - Function: const char * stp_get_output_to (const stp_vars_t VV)
- - Function: void stp_set_output_to (stp_vars_t VV, const char *VAL)
- - Function: void stp_set_output_to_n (stp_vars_t VV, const char *VAL,
- int BYTES)
- Get or set the name of the command that this job will be printed
- to. This is used by front ends; the driver library always prints
- to a stream provided by the front end and never uses this directly.
-
- - Function: const char * stp_get_driver (const stp_vars_t VV)
- - Function: void stp_set_driver (stp_vars_t VV, const char *VAL)
- - Function: void stp_set_driver_n (stp_vars_t VV, const char *VAL, int
- BYTES)
- Get or set the name of the driver (the type of printer).
-
- - Function: const char * stp_get_ppd_file (const stp_vars_t VV)
- - Function: void stp_set_ppd_file (stp_vars_t VV, const char *VAL)
- - Function: void stp_set_ppd_file_n (stp_vars_t VV, const char *VAL,
- int BYTES)
- Get or set the name of the PPD file used by this print job.
- Normally, only PostScript printers use PPD files.
-
- - Function: const char * stp_get_resolution (const stp_vars_t VV)
- - Function: void stp_set_resolution (stp_vars_t VV, const char *VAL)
- - Function: void stp_set_resolution_n (stp_vars_t VV, const char *VAL,
- int BYTES)
- Get or set the resolution to be used in this print job. Different
- drivers support different resolutions, and many drivers support
- multiple quality settings for a given DPI resolution.
-
- - Function: const char * stp_get_media_size (const stp_vars_t VV)
- - Function: void stp_set_media_size (stp_vars_t VV, const char *VAL)
- - Function: void stp_set_media_size_n (stp_vars_t VV, const char *VAL,
- int BYTES)
- Get or set the name of the media size (e. g. A3, letter, legal) to
- be used in this print job.
-
- - Function: const char * stp_get_media_type (const stp_vars_t VV)
- - Function: void stp_set_media_type (stp_vars_t VV, const char *VAL)
- - Function: void stp_set_media_type_n (stp_vars_t VV, const char *VAL,
- int BYTES)
- Get or set the name of the media type (e. g. plain paper, photo
- quality inkjet paper) to be used in this print job.
-
- - Function: const char * stp_get_media_source (const stp_vars_t VV)
- - Function: void stp_set_media_source (stp_vars_t VV, const char *VAL)
- - Function: void stp_set_media_source_n (stp_vars_t VV, const char
- *VAL, int BYTES)
- Get or set the name of the media source (e. g. manual feed, tray
- A) to be used in this print job.
-
- - Function: const char * stp_get_ink_type (const stp_vars_t VV)
- - Function: void stp_set_ink_type (stp_vars_t VV, const char *VAL)
- - Function: void stp_set_ink_type_n (stp_vars_t VV, const char *VAL,
- int BYTES)
- Get or set the name of the ink type (e. g. four color standard, six
- color photo) to be used in this print job.
-
- - Function: const char * stp_get_dither_algorithm (const stp_vars_t VV)
- - Function: void stp_set_dither_algorithm (stp_vars_t VV, const char
- *VAL)
- - Function: void stp_set_dither_algorithm_n (stp_vars_t VV, const char
- *VAL, int BYTES)
- Get or set the dither algorithm to be used in this print job.
-
- - Function: int stp_get_output_type (const stp_vars_t VV)
- - Function: void stp_set_output_type (stp_vars_t VV, int VAL)
- Get or set the output type (color, grayscale, black and white) for
- this print job.
-
- - Function: int stp_get_orientation (const stp_vars_t VV)
- - Function: void stp_set_orientation (stp_vars_t VV, int VAL)
- Get or set the paper orientation for this print job.
-
- - Function: int stp_get_left (const stp_vars_t VV)
- - Function: void stp_set_left (stp_vars_t VV, int VAL)
- Get or set the left margin (in 1/72 inch units, or "points") for
- this print job.
-
- - Function: int stp_get_top (const stp_vars_t VV)
- - Function: void stp_set_top (stp_vars_t VV, int VAL)
- Get or set the top margin (in 1/72 inch units, or "points") for
- this print job.
-
- - Function: int stp_get_image_type (const stp_vars_t VV)
- - Function: void stp_set_image_type (stp_vars_t VV, int VAL)
- Get or set the image type (line art, continuous tone, solid colors)
- for this print job.
-
- - Function: int stp_get_unit (const stp_vars_t VV)
- - Function: void stp_set_unit (stp_vars_t VV, int VAL)
- Get or set the base unit (inches or centimeters) for this print
- job. This is provided for front ends; the package itself uses
- points as its unit of measurement.
-
- - Function: int stp_get_page_width (const stp_vars_t VV)
- - Function: void stp_set_page_width (stp_vars_t VV, int VAL)
- Get or set the width of the printed region of the page.
-
- - Function: int stp_get_page_height (const stp_vars_t VV)
- - Function: void stp_set_page_height (stp_vars_t VV, int VAL)
- Get or set the height of the printed region of the page.
-
- - Function: int stp_get_input_color_model (const stp_vars_t VV)
- - Function: void stp_set_input_color_model (stp_vars_t VV, int VAL)
- Get or set the color model (currently RGB or CMY) of the input to
- the driver. Most front ends will use RGB input.
-
- - Function: int stp_get_output_color_model (const stp_vars_t VV)
- - Function: void stp_set_output_color_model (stp_vars_t VV, int VAL)
- Get or set the color model (currently RGB or CMY) of the output of
- the driver. Most printers will use CMY.
-
- - Function: float stp_get_scaling (const stp_vars_t VV)
- - Function: void stp_set_scaling (stp_vars_t VV, float VAL)
- Get or set the scaling factor of the image. If the scaling factor
- is greater than 0, it is interpreted as a percent (5.0-100.0 is
- the valid range) of the printable page region, using the more
- restrictive axis. For example, if the image to be printed should
- be 3" (wide) x 2" (high), and the printable page region is
- 8"x10.5", the scale factor should be 37.5 (3"/8").
-
- If the scaling is less than zero, it is interpreted as pixels per
- inch.
-
- It is likely that in the future this will be migrated into the
- front end. There is no particular reason why the driver needs to
- know about this.
-
- - Function: float stp_get_gamma (const stp_vars_t VV)
- - Function: void stp_set_gamma (stp_vars_t VV, float VAL)
- Get or set the gamma of the print job (valid range: 0.1-4.0;
- default 1.0). Note that this is not the absolute gamma used by
- the print job; it is scaled by the gamma appropriate for the
- printer. This is true for all of the numerical parameters.
-
- - Function: float stp_get_brightness (const stp_vars_t VV)
- - Function: void stp_set_brightness (stp_vars_t VV, float VAL)
- Get or set the brightness of the print job (valid range: 0.0-2.0;
- default: 1.0). Any value other than 1.0 will result in some
- possible values not being used; if brightness is less than 1.0, no
- output point will be pure white, and if brightness is greater than
- 1.0, no output point will be pure black (or cyan, or magenta, or
- yellow).
-
- - Function: float stp_get_contrast (const stp_vars_t VV)
- - Function: void stp_set_contrast (stp_vars_t VV, float VAL)
- Get or set the contrast of the print job (valid range: 0.0-4.0;
- default: 1.0). Values less than 1.0 will result in pure white or
- black not being used (0.0 will make the entire image 50% gray).
- Values greater than 1.0 do not hard clip; while the contrast in the
- midtones increases, it only asymptotically approaches the limits.
-
- - Function: float stp_get_cyan (const stp_vars_t VV)
- - Function: void stp_set_cyan (stp_vars_t VV, float VAL)
- Get or set the cyan adjustment of the print job (range: 0.0-4.0;
- default: 1.0). This currently adjusts the gamma of the cyan
- curve. It is scaled by the cyan adjustment for the printer model
- in question.
-
- - Function: float stp_get_magenta (const stp_vars_t VV)
- - Function: void stp_set_magenta (stp_vars_t VV, float VAL)
- Get or set the magenta adjustment of the print job (range:
- 0.0-4.0; default: 1.0). This currently adjusts the gamma of the
- magenta curve. It is scaled by the magenta adjustment for the
- printer model in question.
-
- - Function: float stp_get_yellow (const stp_vars_t VV)
- - Function: void stp_set_yellow (stp_vars_t VV, float VAL)
- Get or set the yellow adjustment of the print job (range: 0.0-4.0;
- default: 1.0). This currently adjusts the gamma of the yellow
- curve. It is scaled by the yellow adjustment for the printer
- model in question.
-
- - Function: float stp_get_saturation (const stp_vars_t VV)
- - Function: void stp_set_saturation (stp_vars_t VV, float VAL)
- Get or set the saturation of the print job (range: 0.0-9.0;
- default: 1.0). Saturation of 0.0 produces grayscale output using
- composite (CMY or CMYK, as appropriate for the printer) color.
-
- - Function: float stp_get_density (const stp_vars_t VV)
- - Function: void stp_set_density (stp_vars_t VV, float VAL)
- Get or set the density of the print job (range: 0.0-2.0; default:
- 1.0). This adjusts the amount of ink deposited in a linear fashion
- for all channels. It is scaled by the density appropriate for the
- choice of printer, resolution, paper type, and other factors that
- the driver may deem appropriate.
-
- - Function: float stp_get_app_gamma (const stp_vars_t VV)
- - Function: void stp_set_app_gamma (stp_vars_t VV, float VAL)
- Get or set the gamma of the input (i. e. what the driving
- application uses).
-
- - Function: void * stp_get_lut (const stp_vars_t VV)
- - Function: void stp_set_lut (stp_vars_t VV, void *VAL)
- Get or set the color lookup table for the print job. This is
- useful outside of the library for computing a preview of the
- printed result. The lookup table itself should be treated as an
- opaque handle.
-
- - Function: unsigned char * stp_get_cmap (const stp_vars_t VV)
- - Function: void stp_set_cmap (stp_vars_t VV, unsigned char *VAL)
- Get or set the color map for the print job. This is a table of
- R,G,B values for 8-bit indexed input. This may be moved outside
- of the library in the future; in this case, the front end would be
- required to do its own mapping and supply true-color RGB to the
- driver.
-
- The following methods are used to perform output and error reporting
-by the driver. The driver supplies a stream of output bytes; the front
-end is responsible for providing methods that accept this output and
-handle it appropriately.
-
- - Function: stp_outfunc_t stp_get_outfunc (const stp_vars_t VV)
- - Function: void stp_set_outfunc (const stp_vars_t VV, stp_outfunc_t
- VAL)
- - Function: void * stp_get_outdata (const stp_vars_t VV)
- - Function: void stp_set_outdata (stp_vars_t VV, void *VAL)
- - Data type: stp_outfunc_t
- typedef void (*stp_outfunc_t) (void *data,
- const char *buffer, size_t bytes);
- Get or set the output function the driver will use. The
- front end must supply a suitable function for accepting the output
- data. The `stp_set_outdata' method provides a way of passing an
- appropriate object to the output function.
-
- - Function: stp_outfunc_t stp_get_errfunc (const stp_vars_t VV)
- - Function: void stp_set_errfunc (const stp_vars_t VV, stp_outfunc_t
- VAL)
- - Function: void * stp_get_errdata (const stp_vars_t VV)
- - Function: void stp_set_errdata (stp_vars_t VV, void *VAL)
- Get or set the error reporting function that the driver will use.
- This is used to report errors or debugging information, and must be
- supplied. A typical errfunc will simply print whatever it's
- passed to stderr.
-
- /* * hue_map is an array of 49 doubles representing the mapping of
-hue * from (0..6) to (0..6) in increments of .125. The hue_map is in
-CMY space, * so hue=0 is cyan. */ typedef void
-(*stp_convert_t)(const stp_vars_t vars, const unsigned char *in,
- unsigned short *out, int *zero_mask,
- int width, int bpp, const unsigned char *cmap,
- const double *hue_map, const double *lum_map,
- const double *sat_map);
-
- - Function: void stp_merge_printvars (stp_vars_t USER, const
- stp_vars_t PRINT)
-
- - Function: void stp_allocate_lut (stp_vars_t V, size_t STEPS)
-
- - Function: void stp_free_lut (stp_vars_t V)
-
- - Function: void stp_compute_lut (stp_vars_t V, size_t STEPS)
-
-
-File: gimpprint.info, Node: Dither functions, Next: Options functions, Prev: stp_vars_t functions, Up: Functions
-
-Dither functions
-================
-
- - Function: size_t stp_dither_algorithm_count (void)
-
- - Function: const char * stp_dither_algorithm_name (int ID)
-
- - Function: const char * stp_default_dither_algorithm (void)
-
diff --git a/doc/gimpprint.info-2 b/doc/gimpprint.info-2
deleted file mode 100644
index 3539915..0000000
--- a/doc/gimpprint.info-2
+++ /dev/null
@@ -1,1080 +0,0 @@
-This is gimpprint.info, produced by makeinfo version 4.0 from
-gimpprint.texi.
-
-INFO-DIR-SECTION Libraries
-START-INFO-DIR-ENTRY
-* GIMP-Print: (gimpprint). print plugin for the GIMP, and printing library
-END-INFO-DIR-ENTRY
-
- This file documents the gimpprint library and associated programs
-used for high quality printing.
-
- Copyright (C) 2001 Michael Sweet (<mike@easysw.com>) and Robert
-Krawitz (<rlk@alum.mit.edu>)
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-
-File: gimpprint.info, Node: Options functions, Next: Paper functions, Prev: Dither functions, Up: Functions
-
-Options functions
-=================
-
- - Data type: void * stp_option_t
- This is an opaque data type, whose structure is not visible to the
- user.
-
- - Function: void stp_set_option(stp_vars_t V, const char *NAME, const
- char *DATA, int BYTES)
-
- - Function: void stp_clear_option (stp_vars_t V, const char *NAME)
-
- - Function: void stp_clear_all_options (stp_vars_t V)
-
- - Function: size_t stp_option_count (const stp_vars_t V)
-
- - Function: const stp_option_t stp_get_option_by_index (const
- stp_vars_t V, size_t IDX)
-
- - Function: const stp_option_t stp_get_option_by_name (const
- stp_vars_t V, const char *NAME)
-
- - Function: const char * stp_option_data (const stp_option_t OPTION)
- *Note*: not null delimited!
-
- - Function: const char * stp_option_name (const stp_option_t OPTION)
-
- - Function: size_t stp_option_length (const stp_option_t OPTION)
-
-
-File: gimpprint.info, Node: Paper functions, Next: Printer functions, Prev: Options functions, Up: Functions
-
-Paper functions
-===============
-
- - Data type: void * stp_papersize_t
- This is an opaque data type, whose structure is not visible to the
- user.
-
- - Data type: stp_papersize_unit_t
- typedef enum papersize_unit
- {
- PAPERSIZE_ENGLISH,
- PAPERSIZE_METRIC
- } stp_papersize_unit_t;
-
- - Function: int stp_known_papersizes (void)
-
- - Function: const stp_papersize_t stp_get_papersize_by_name (const
- char *NAME)
-
- - Function: const stp_papersize_t stp_get_papersize_by_size (int L,
- int W)
-
- - Function: const stp_papersize_t stp_get_papersize_by_index (int
- INDEX)
-
- - Function: const char * stp_papersize_get_name (const stp_papersize_t
- PT)
-
- - Function: unsigned stp_papersize_get_width (const stp_papersize_t PT)
-
- - Function: unsigned stp_papersize_get_height (const stp_papersize_t
- PT)
-
- - Function: unsigned stp_papersize_get_top (const stp_papersize_t PT)
-
- - Function: unsigned stp_papersize_get_left (const stp_papersize_t PT)
-
- - Function: unsigned stp_papersize_get_bottom (const stp_papersize_t
- PT)
-
- - Function: unsigned stp_papersize_get_right (const stp_papersize_t PT)
-
- - Function: stp_papersize_unit_t stp_papersize_get_unit (const
- stp_papersize_t PT)
-
-
-File: gimpprint.info, Node: Printer functions, Next: Settings functions, Prev: Paper functions, Up: Functions
-
-Printer functions
-=================
-
- - Data type: void * stp_printer_t
- This is an opaque data type, whose structure is not visible to the
- user.
-
- - Function: int stp_known_printers (void)
-
- - Function: const stp_printer_t stp_get_printer_by_index (int IDX)
-
- - Function: const char * stp_printer_get_long_name (const
- stp_printer_t P)
-
- - Function: const stp_printer_t stp_get_printer_by_long_name (const
- char *LONG_NAME)
-
- - Function: const stp_printer_t stp_get_printer_by_driver (const char
- *DRIVER)
-
- - Function: int stp_get_printer_index_by_driver (const char *DRIVER)
-
- - Function: const char * stp_printer_get_driver (const stp_printer_t P)
-
- - Function: int stp_printer_get_model (const stp_printer_t P)
-
- - Function: const stp_printfuncs_t * stp_printer_get_printfuncs (const
- stp_printer_t P)
-
- - Data type: stp_printfuncs_t
- typedef struct
- {
- char **(*parameters)(const stp_printer_t printer,
- const char *ppd_file,
- const char *name, int *count);
- void (*media_size)(const stp_printer_t printer,
- const stp_vars_t v, int *width,
- int *height);
- void (*imageable_area)(const stp_printer_t printer,
- const stp_vars_t v,
- int *left, int *right,
- int *bottom, int *top);
- void (*limit)(const stp_printer_t printer,
- const stp_vars_t v,
- int *width, int *height);
- void (*print)(const stp_printer_t printer,
- stp_image_t *image, const stp_vars_t v);
- const char *(*default_parameters)(const stp_printer_t printer,
- const char *ppd_file,
- const char *name);
- void (*describe_resolution)(const stp_printer_t printer,
- const char *resolution,
- int *x, int *y);
- int (*verify)(const stp_printer_t p, const stp_vars_t v);
- } stp_printfuncs_t;
-
- - Data type: stp_image_t
- typedef struct stp_image
- {
- void (*init)(struct stp_image *image);
- void (*reset)(struct stp_image *image);
- void (*transpose)(struct stp_image *image);
- void (*hflip)(struct stp_image *image);
- void (*vflip)(struct stp_image *image);
- void (*crop)(struct stp_image *image,
- int left, int top, int right,
- int bottom);
- void (*rotate_ccw)(struct stp_image *image);
- void (*rotate_cw)(struct stp_image *image);
- void (*rotate_180)(struct stp_image *image);
- int (*bpp)(struct stp_image *image);
- int (*width)(struct stp_image *image);
- int (*height)(struct stp_image *image);
- void (*get_row)(struct stp_image *image,
- unsigned char *data, int row);
- const char *(*get_appname)(struct stp_image *image);
- void (*progress_init)(struct stp_image *image);
- void (*note_progress)(struct stp_image *image,
- double current, double total);
- void (*progress_conclude)(struct stp_image *image);
- void *rep;
- } stp_image_t;
- This is an abstract data type for interfacing with the program
- which created the image.
-
- - Function: const stp_vars_t stp_printer_get_printvars (const
- stp_printer_t P)
-
-
-File: gimpprint.info, Node: Settings functions, Next: Version functions, Prev: Printer functions, Up: Functions
-
-Settings functions
-==================
-
- - Function: stp_convert_t stp_choose_colorfunc (int OUTPUT_TYPE, int
- IMAGE_BPP, const unsigned char *CMAP, int *OUT_BPP, const
- stp_vars_t V)
-
- - Function: void stp_compute_page_parameters (int PAGE_RIGHT, int
- PAGE_LEFT, int PAGE_TOP, int PAGE_BOTTOM, double SCALING, int
- IMAGE_WIDTH, int IMAGE_HEIGHT, stp_image_t *IMAGE, int
- *ORIENTATION, int *page_width, int *PAGE_HEIGHT, int
- *OUT_WIDTH, int *OUT_HEIGHT, int *LEFT, int *TOP)
-
- - Function: const stp_vars_t stp_default_settings (void)
-
- - Function: const stp_vars_t stp_maximum_settings (void)
-
- - Function: const stp_vars_t stp_minimum_settings (void)
-
-
-File: gimpprint.info, Node: Version functions, Prev: Settings functions, Up: Functions
-
-Version functions
-=================
-
- - Function: const char * stp_check_version (unsigned int
- REQUIRED_MAJOR,
- unsigned int REQUIRED_MINOR, unsigned int REQUIRED_MICRO)
-
- This function checks whether the version of libgimpprint that the
- program is linked with is equal to the version number passed to
- it. If the version is the same, the function returns `NULL'. If
- any of the version numbers do not match (i.e. the library version
- is too old or too new), a string containing a desription of the
- difference is returned. The first error found is returned. The
- function checks in the order major, minor, micro.
-
-Version macros
---------------
-
- - Macro: GIMPPRINT_CHECK_VERSION (major,minor,micro)
- This macro returns zero if the version of the libgimpprint headers
- are greater or equal to the version given as an argument. It
- returns nonzero if the version of the libgimpprint headers are
- less than the argument.
-
- - Macro: GIMPPRINT_MAJOR_VERSION
-
- - Macro: GIMPPRINT_MINOR_VERSION
-
- - Macro: GIMPPRINT_MICRO_VERSION
-
- - Macro: GIMPPRINT_CURRENT_INTERFACE
-
- - Macro: GIMPPRINT_BINARY_AGE
-
- - Macro: GIMPPRINT_INTERFACE_AGE
-
- These macros are integers holding the version numbers. They should be
-used for compile-time checking only. To check version numbers at
-run-time, use the equivalent variables. Note that at present (4.1.x
-development branch) the library interface version numbers are not used.
-
-Version variables
------------------
-
- - Variable: const unsigned int gimpprint_major_version
-
- - Variable: const unsigned int gimpprint_minor_version
-
- - Variable: const unsigned int gimpprint_micro_version
-
- - Variable: const unsigned int gimpprint_current_interface
-
- - Variable: const unsigned int gimpprint_binary_age
-
- - Variable: const unsigned int gimpprint_interface_age
-
- These variables hold the library version numbers. Because the
-version of the library may change on a system using shared libraries,
-these should be used instead of the equivalent macros when checking the
-library version at run-time. Note that library interface version
-numbers are not used in the development branch, but are in the stable
-branch.
-
-
-File: gimpprint.info, Node: Programs, Next: Problems, Prev: Functions, Up: Top
-
-Programs
-********
-
- This chapter of the manual describes the use of some of the programs
-which use the GIMP-Print library (libgimpprint). Note that there is now
-a user manual in DocBook/SGML format, currently provided in HTML,
-PostScript and PDF formats which is distributed with GIMP-Print. This
-manual currently covers the use of the GIMP Print plugin and CUPS
-drivers.
-
-* Menu:
-
-* The GIMP plugin:: The print plugin for the GIMP
-* Ghostscript:: Printer driver
-* CUPS:: Printer driver
-
-
-File: gimpprint.info, Node: The GIMP plugin, Next: Ghostscript, Prev: Programs, Up: Programs
-
-The GIMP Print plugin
-=====================
-
- The GIMP Print plugin is the printing facility for the GNU Image
-Manipulation Program(1). This section examines the features offered by
-the Print plugin.
-
- The main window is divided into five panes:
-
-Preview
--------
-
- The Preview pane contains a positioning widget that allows
-interactively positioning the output on the page. It contains an outer
-border, representing the sheet of paper; an inner border, representing
-the printable area of the printer; an arrow, pointing to the top of the
-page (the end that's fed into the printer); and a black rectangle,
-representing the position of the image on the page. The image can be
-moved around on the paper. When the first (left) button is used, the
-image is moved in screen pixels; when any other button is used, the
-image is moved in points(2). The arrow resizes depending upon the
-media size chosen; the shaft of the arrow is always equal to one inch
-on the output.
-
-[Figure not available in Info format]
-
-Printer Settings
-----------------
-
- The Printer Settings pane contains a dropdown menu for selecting a
-printer to print to. There is a special `printer' named `File' that
-allows you to choose a file to print to, rather than a printer queue.
-The Setup box to the right allows specification of a printer type, a
-PPD file(3), and the command to be used to print. Each distinct
-printer in the Printer list can have different settings applied to it.
-Below that is a combo box allowing choice of media size. The choices
-are constrained to those that the printer supports. Below that are
-dropdown menus for choosing media type (what kind of paper), media
-source (what input tray), ink type, and resolution. All of these
-settings are printer-specific.
-
-[Figure not available in Info format]
-
-Position
---------
-
- The Position pane contains various widgets to place the image on the
-paper. These widgets work in conjunction with the Preview pane. At the
-top of the pane is a button to center the image on the paper (not on the
-printable area), and on either side buttons to center vertically and
-horizontally. Below these are four boxes that allow entry of the left,
-top, right, and bottom of the image. These positions are relative to
-the top left of the paper(4). There are two additional boxes that
-allow specification of the right margin and bottom margin if you
-prefer; these are relative to the bottom right corner of the paper.
-Any of these may have values entered into them; the preview image will
-be moved appropriately.
-
- *Note*: These entries do not resize the image.
-
- Finally, there is a pick box for orientation (landscape or portrait).
-There is an `Auto' mode that picks the orientation that yields the
-orientation that best matches that of the image to be printed.
-
-Scaling
--------
-
- The Scaling pane contains a slider that allows scaling of the image.
-The image can be scaled in either percent of the printable area (*not*
-the page in this case) or pixels per inch (PPI) via a radio button
-below the slider. PPI allows matching image resolution to printer
-resolution. The image may be scaled using either method to between 5
-and 100% of the imageable area. It is not possible to crop with the
-Print plugin. In Percent mode, the image is scaled so that neither
-axis will be longer than the percent of the printable area specified.
-For example, if you print an image at 20%, it will be possible to tile
-the image 5 times on one axis and at least 5 times on the other. To
-the right of the radio button is a button called Set Image Scale. This
-sets the scaling to PPI, and sets the resolution as closely as possible
-to the resolution stored in the image. To the right of the Set Image
-Scale button are two boxes that allow entry of width and height of the
-image. These set the scaling mode to PPI. Specifying one
-automatically sets the other, and the image is repositioned as needed
-to prevent it from falling off the edge of the page.
-
- To its right is a button group that allows choosing English (inch)
-units or metric (centimeter) units.
-
-Image Settings
---------------
-
- The Image Settings pane allows choice of Line Art, Solid Colors, or
-Photograph image type. Line art or Solid Colors should be used for
-graphics containing mostly solid areas of color. They're very similar
-to each other. Photograph mode dithers more slowly, but produces more
-accurate colors. To the right of these three radio buttons is a button
-called Adjust Color. This pops up a new window that controls various
-output quality settings. That will be described separately. Finally,
-there is a choice of Black and White, Color and Monochrome output.
-Monochrome output can be used to print absolute black and white very
-quickly.
-
-Adjust Output
-.............
-
- The Adjust Output button button pops up a non-modal dialog that
-allows adjustment of various parameters related to the print quality.
-These are independent of the controls within the GIMP itself and only
-affect the print.
-
-[Figure not available in Info format]
-
- At the top of the window is a thumbnail of the image that changes to
-reflect the color settings of the image. This enables you to get an
-idea of how the image will print out as you adjust settings.
-
- Below that there are eight sliders:
-
-_Brightness_
- (0-2.0, default 1.0) Adjust the brightness of the image.
-
-_Contrast_
- (0-4.0, default 1.0) Adjust the output contrast.
-
-_Cyan, Magenta, Yellow_
- (0-4.0, default 1.0) Adjust the cyan, magenta, and yellow in the
- output. These should not normally need to be adjusted very much;
- even very small adjustments can go quite a long way to restoring
- color balance.
-
-_Saturation_
- (0-9.0, default 1.0) Adjust the color brilliance (saturation) of
- the output. Saturation of 0 means pure gray scale, with no color.
- Saturation of 9.0 will make just about anything but pure grays
- brilliantly colored.
-
-_Density_
- (0.1-2.0, default 1.0) Adjust the density (amount of ink) in the
- print. The density is automatically corrected for the particular
- printer, resolution, and in some cases paper choices. If solid
- black in the input is not solid in the print, the density needs to
- be increased; if there is excessive ink bleed-through and muddy
- dark colors, the density should be decreased.
-
- *Note*: the density will not increase beyond a certain amount no
- matter what the slider is set to.
-
-_Gamma_
- (0.1-4.0, default 1.0) Adjust the output gamma. The gamma value is
- automatically corrected for the choice of printer; this is used if
- you believe the automatic setting is incorrect.
-
-Dither Algorithm
-................
-
- There is also a selection box for the dither algorithm to be used in
-the pop-up dialog. There are currently seven choices:
-
-_Adaptive Hybrid_
- Adaptive Hybrid usually yields the best output quality; it chooses
- a modified Floyd-Steinberg error diffusion algorithm or ordered
- dithering depending upon the image characteristics.
-
-_Ordered_
- Ordered uses a pure ordered dither. It generally yields excellent
- quality for simple black and white or four color printers without
- variable drop size or drop modulation; it is not recommended if
- high quality is desired on six color printers. It is considerably
- faster than Adaptive Hybrid.
-
-_Fast_
- Fast also uses a pure ordered dither, but uses a very simple black
- model and makes no attempt to handle multi-level (6-color,
- variable drop size, or drop modulation) at all cleanly. It is
- substantially faster than Ordered dither. The quality tends to be
- quite poor except on simple four color printers. On three color
- printers, quality is probably competitive with anything else.
-
-_Very Fast_
- Very Fast is similar to Fast, except that it uses a very simple
- dither matrix that can be looked up much more quickly than the
- matrix used in the Fast dither. For simple pure black and white
- images dominated by horizontal and vertical lines, this may
- actually yield the best results; for other types of image, the
- quality will be poor.
-
-_Adaptive Random_
- Adaptive Random is similar to Adaptive Hybrid, except that the
- modifications to the Floyd-Steinberg algorithm are slightly
- different. This is slower than Adaptive Hybrid on most systems.
- For some images the quality may be better than Adaptive Hybrid,
- but generally Adaptive Hybrid should yield slightly superior
- images.
-
-_Hybrid Floyd-Steinberg_
- Hybrid Floyd-Steinberg uses the modified Floyd-Steinberg algorithm
- of Adaptive Hybrid on the entire image. Generally, the results
- are poor in pale regions.
-
-_Random Floyd-Steinberg_
- Random Floyd-Steinberg uses the modified Floyd-Steinberg algorithm
- of Adaptive Random on the entire image. Generally, the results
- are poor in pale regions.
-
-Action Buttons
---------------
-
- The last pane contains four action buttons:
-
-_Print and Save Settings_
- Immediately print the image (or, if the File printer is chosen,
- display a file selection window to pick the output file), and save
- all current settings for all printers.
-
-_Save Settings_
- Immediately save the settings, and continue working in the Print
- plugin.
-
-_Print_
- Immediately print the image (or, if the `File' printer is chosen,
- display a file selection window to pick the output file), but do
- not save settings.
-
-_Cancel_
- Immediately quit without saving settings or printing.
-
- ---------- Footnotes ----------
-
- (1) `http://www.gimp.org'
-
- (2) The output resolution of the plugin.
-
- (3) For Postscript printers.
-
- (4) Again, that's relative to the paper corner, not the printable
-area, which is usually smaller.
-
-
-File: gimpprint.info, Node: Ghostscript, Next: CUPS, Prev: The GIMP plugin, Up: Programs
-
-Ghostscript driver
-==================
-
-
-File: gimpprint.info, Node: CUPS, Prev: Ghostscript, Up: Programs
-
-CUPS driver
-===========
-
-
-File: gimpprint.info, Node: Problems, Next: Appendices, Prev: Programs, Up: Top
-
-Reporting Bugs
-**************
-
- If you find a bug in GIMP-Print or have any suggestions for
-modification or improvement, please send electronic mail to the
-GIMP-Print bug reporting address (1). Include the version number,
-which you can find by running `gimpprint-config --version'. Also
-include in your message the output that the program produced and the
-output you expected, if applicable, otherwise the best description of
-the problem that you can provide.
-
- If you have other questions, comments or suggestions about
-GIMP-Print, contact the developers via electronic mail to the
-GIMP-Print mailing list (2). They will try to help you out, although
-they may not have time to fix your problems.
-
- ---------- Footnotes ----------
-
- (1) <gimp-print-devel@lists.sourceforge.net>
-
- (2) <gimp-print-devel@lists.sourceforge.net>
-
-
-File: gimpprint.info, Node: Appendices, Next: Data Type and Variable Index, Prev: Problems, Up: Top
-
-Appendices
-**********
-
-* Menu:
-
-* Dithering:: Dither algorithms.
-* Weaving:: Weaving algorithms.
-* ESC/P2:: Epson ESC/P2 printer control language.
-* New Printer:: Adding a new printer to libgimpprint.
-
-
-File: gimpprint.info, Node: Dithering, Next: Weaving, Prev: Appendices, Up: Appendices
-
-Dithering
-*********
-
- The dithering code in `print-dither.c' attempts to reproduce various
-shades of gray (or all colors) from only a few different inks (black,
-cyan, magenta, yellow, and sometimes light cyan and light magenta).
-The dots can't vary in darkness or size (except for certain special
-printers), and so we need to lay down a certain fraction of dots to
-represent each distinct level.
-
- This sounds straightforward; in practice, it isn't. Completely
-random distribution of dots (simple probabilistic dithering) would
-create grainy clumps and light spots. The smoothest pattern results
-from an equidistant spacing of dots. Approximating this requires
-sophisticated algorithms. We have two dithering algorithms, an ordered
-dither algorithm that uses a grid (matrix) to decide whether to print,
-and a modified Floyd-Steinberg error diffusion algorithm that uses a
-grid in a slightly different way.
-
- We currently have three dithering functions:
-
- 1. `dither_fastblack' produces pure black or white from a pre-dithered
- input. This is used for two purposes: for printing pure black and
- white very quickly (e. g. text), and for printing pre-screened
- monochrome output that was rasterized externally.
-
- 2. `dither_black' produces black from grayscale input. The new
- dither_black can produce either a single or multiple levels of
- black, for printers supporting variable dot size.
-
- 3. `dither_cmyk' produces 3, 4, 5, 6, or 7 color output (CMY, CMYK,
- CcMmYK, CcMmYy, CcMmYyK, or any variants). The new routine can
- handle single or multiple levels of each color.
-
- There is a choice of dithering algorithms. Four of them are based
-on a basic error diffusion, with a few tweaks of my own. The other one
-is `ordered'. However, they all share the basic operation in common.
-First, the algorithm picks what kind of dot (if there are multiple dot
-sizes and/or tones that may be picked) is the candidate to be printed.
-This decision is made based on the darkness at the point being dithered.
-Then, it decides whether the dot will be printed at all. What this is
-based on depends upon which algorithm family we use. This is all
-described in more detail below.
-
- Ordered dithering works by comparing the value at a given point with
-the value of a tiled matrix. If the value at the point is greater than
-the value in the matrix, the dot is printed. The matrix should consist
-of a set of evenly spaced points between 0 and the upper limit. The
-choice of matrix is very important for print quality. A good dither
-matrix will emphasize high frequency components, which distributes dots
-evenly with a minimum of clumping. The matrices used here are all
-simple matrices that are expanded recursively to create larger matrices
-with the same kind of even point distribution. This is described below.
-
- Note that it is important to use different matrices for the two
-sub-operations, because otherwise the choice about whether to print and
-the choice of dot size will be correlated. The usual result is that the
-print is either too dark or too light, but there can be other problems.
-
- Ordered dithering works quite well on single dot size, four color
-printers. It has not been well tested on four color, variable dot size
-printers. It should be avoided on six color printers.
-
- Error diffusion works by taking the output error at a given pixel and
-"diffusing" it into surrounding pixels. Output error is the difference
-between the amount of ink output and the input level at each pixel.
-For simple printers, with one or four ink colors and only one dot size,
-the amount of ink output is either 65536 (i. e. full output) or 0 (no
-output). The difference between this and the input level is the error.
-Normal error diffusion adds part of this error to the adjoining pixels
-in the next column and the next row (the algorithm simply scans each
-row in turn, never backing up). The error adds up until it reaches a
-threshold (half of the full output level, or 32768), at which point a
-dot is output, the output is subtracted from the current value, and the
-(now negative) error is diffused similarly.
-
- Error diffusion works quite well in general, but it tends to generate
-artifacts which usually appear as worm-like lines or areas of anomalous
-density. I have devised some ways, as described below, of ameliorating
-these artifacts.
-
- There are two sub-classes of error diffusion that we use here,
-`random' and `hybrid'. One of the techniques that we use to ameliorate
-the artifacts is to use a fuzzy threshold rather than the hard
-threshold of half of the output level. Random error diffusion uses a
-pseudo-random number to perturb the threshold, while hybrid error
-diffusion uses a matrix. Hybrid error diffusion worked very poorly in
-3.1.3, and I couldn't figure out why until I found a bug. It now works
-very well.
-
- There is one additional variant (on both sub-classes), called
-`adaptive hybrid' and `adaptive random'. The adaptive variant takes
-advantage of the fact that the patterns that ordered dithering create
-are less visible at very low densities, while the artifacts created by
-error diffusion are more objectionable at low densities. At low
-densities, therefore, it uses ordered dithering; at higher densities it
-uses error diffusion.
-
- Handling multiple output levels makes life a bit more complicated.
-In principle, it shouldn't be much harder: simply figure out what the
-ratio between the available output levels is and have multiple
-thresholds. In practice, getting these right involves a lot of trial
-and error. The other thing that's important is to maximize the number
-of dots that have some ink. This will reduce the amount of speckling.
-More on this later.
-
- The next question: how do we handle black when printing in color?
-Black ink is much darker than colored inks. It's possible to produce
-black by adding some mixture of cyan, magenta, and yellow--in
-principle. In practice, the black really isn't very black, and
-different inks and different papers will produce different color casts.
-However, by using CMY to produce gray, we can output a lot more dots!
-This makes for a much smoother image. What's more, one cyan, one
-magenta, and one yellow dot produce less darkness than one black dot,
-so we're outputting that many more dots. Better yet, with 6 or 7 color
-printers, we have to output even more light ink dots. So Epson Stylus
-Photo printers can produce really smooth grays--if we do everything
-right. The right idea is to use CMY at lower black levels, and
-gradually mix in black as the overall amount of ink increases, so the
-black dots don't really become visible within the ink mass.
-
- Variable dot sizes are handled by dividing the range between 0 and
-65536 into segments. Each segment can either represent a range in
-which all of one kind of ink (color and/or dot size) is used, with
-varying amounts of ink, or a transition region between inks, in which
-equal numbers of dots are printed but the amount of each ink will be
-adjusted throughout the range. Each range is represented by four
-numbers:
-
- 1. bottom of the range
-
- 2. top of the range
-
- 3. value of the lighter ink
-
- 4. value of the darker ink
-
- In addition, the bit patterns and which type of ink are also
-represented, but they don't affect the actual algorithm.
-
- As mentioned above, the basic algorithm is the same whether we use
-ordered dither or error diffusion. We perform the following steps on
-each color of each pixel:
-
- 1. Compute the value of the particular color we're printing. This
- isn't usually the pure CMY value; it's adjusted to improve
- saturation and to limit the use of black in light toned regions
- (to avoid speckling).
-
- 2. Find the range containing this value.
-
- 3. Compute where this value lies within the range. We scale the
- endpoints between 0 and 65536 for this purpose. So for example,
- if the bottom of the range is 10,000 and the top of the range is
- 20,000, and the value is 12,500, we're 1/4 of the way between the
- bottom and the top of the range, so our scale point is 16384.
-
- 4. Compute the "virtual value". The virtual value is the distance
- between the value of the lighter and the value of the darker ink.
- So if the value of the light ink is 32768 and the dark ink is
- 65536, we compute a virtual value scaled appropriately between
- these two values, which is 40960 in this case.
-
- 5. Using either error diffusion or ordered dither, the standard
- threshold is 1/2 of the value (20480 in this case). Using ordered
- dither, we want to compute a value between 0 and 40960 that we
- will compare the input value against to decide whether to print.
- Using pure error diffusion, we would compare the accumulated error
- against 20480 to decide whether to print. In practice, we use the
- same matrix method to decide whether to print. The correct amount
- of ink will be printed this way, but we minimize the squiggly
- lines characteristic of error diffusion by dithering the threshold
- in this fashion. A future enhancement will allow us to control
- the amount of dithering applied to the threshold.
-
- The matrices were generated by Thomas Tonino <<ttonino@bio.vu.nl>>
-with an algorithm of his devising. The algorithm is designed to
-maximize the spacing between dots at any given density by searching the
-matrix for holes and placing a dot in the largest available hole. It
-requires careful selection of initial points to achieve good results,
-and is very time consuming. For best results, a different matrix must
-be used for modes with 2:1 aspect ratio (e.g. 1440x720) than for 1:1
-(e. g. 720x720). It is essential with any of these matrices that every
-point be used. Skipping points generates low-frequency noise.
-
- It's essential to use different matrices for deciding whether to
-print and for deciding what color (dark or light) to print. This
-should be obvious; the decision about whether to print at all should be
-as independent as possible from the decision about what color to print,
-because any bias will result in excess light or dark ink being printed,
-shifting the tonal balance. We actually use the same matrices, but we
-shift them vertically and horizontally. Assuming that the matrices are
-not self-correlated, this will yield good results.
-
- The ranges are computed from a list of ink values (between 0 and 1
-for each possible combination of dot size and ink tone, where the value
-represents the darkness of the ink) and the desired maximum density of
-the ink. This is done in dither_set_ranges, and needs more
-documentation.
-
- I stated earlier that I've tweaked the basic error diffusion
-algorithm. Here's what I've done to improve it:
-
- 1. We use a variable threshold to decide when to print, as discussed
- above. This does two things for us: it reduces the slightly
- squiggly diagonal lines that are the mark of error diffusion; and
- it allows us to lay down some ink even in very light areas near
- the edge of the image. The squiggly lines that error diffusion
- algorithms tend to generate are caused by the gradual accumulation
- of error. This error is partially added horizontally and
- partially vertically. The horizontal accumulation results in a
- dot eventually being printed. The vertical accumulation results
- in a dot getting laid down in roughly the same horizontal position
- in the next row. The diagonal squigglies result from the error
- being added to pixels one forward and one below the current pixel;
- these lines slope from the top right to the bottom left of the
- image.
-
- Error diffusion also results in pale areas being completely white
- near the top left of the image (the origin of the printing
- coordinates). This is because enough error has to accumulate for
- anything at all to get printed. In very pale areas it takes quite
- a long time to build up anything printable at all; this results in
- the bare spots.
-
- Randomizing the threshold somewhat breaks up the diagonals to some
- degree by randomizing the exact location that the accumulated
- output crosses the threshold. It reduces the false white areas by
- allowing some dots to be printed even when the accumulated output
- level is very low. It doesn't result in excess ink because the
- full output level is still subtracted and diffused.
-
- Excessive randomization leads to blobs at high densities.
- Therefore, as the density increases, the degree of randomization
- decreases.
-
- 2. Alternating scan direction between rows (first row is scanned left
- to right, second is scanned right to left, and so on). This also
- helps break up white areas, and it also seems to break up
- squigglies a bit. Furthermore, it eliminates directional biases
- in the horizontal direction. This isn't necessary for ordered
- dither, but it doesn't hurt either.
-
- 3. Diffusing the error into more pixels. Instead of diffusing the
- entire error into (X+1, Y) and (X, Y+1), we diffuse it into (X+1,
- Y), (X+K, Y+1), (X, Y+1), (X-K, Y+1) where K depends upon the
- output level (it never exceeds about 10 dots, and is greater at
- higher output levels). This really reduces squigglies and
- graininess. The amount of this spread can be controlled; for line
- art, it should be less than for photographs (of course, line art
- doesn't usually contain much light color, but the *error* value
- can be small in places!) In addition to requiring more
- computation, a wide ink spread results in patterning at high dot
- densities (note that the dot density can be high even in fairly
- pale regions if multiple dot sizes are in use).
-
- 4. Don't lay down any colored ink if we're laying down black ink.
- There's no point; the colored ink won't show. We still pretend
- that we did for purposes of error diffusion (otherwise excessive
- error will build up, and will take a long time to clear, resulting
- in heavy bleeding of ink into surrounding areas, which is very
- ugly indeed), but we don't bother wasting the ink. How well this
- will do with variable dot size remains to be seen.
-
- 5. Oversampling. This is how to print 1440x720 with Epson Stylus
- printers. Printing full density at 1440x720 will result in excess
- ink being laid down. The trick is to print only every other dot.
- We still compute the error as though we printed every dot. It
- turns out that randomizing which dots are printed results in very
- speckled output. This can be taken too far; oversampling at
- 1440x1440 or 1440x2880 virtual resolution results in other
- problems. However, at present 1440x1440 (which is more accurately
- called "1440x720 enhanced", as the Epson printers cannot print
- 1440 rows per inch) does quite well, although it's slow.
-
- What about multiple output levels? For 6 and 7 color printers,
-simply using different threshold levels has a problem: the pale inks
-have trouble being seen when a lot of darker ink is being printed. So
-rather than just using the output level of the particular color to
-decide which ink to print, we look at the total density (sum of all
-output levels). If the density's high enough, we prefer to use the
-dark ink. Speckling is less visible when there's a lot of ink, anyway.
-I haven't yet figured out what to do for multiple levels of one color.
-
- You'll note that I haven't quoted a single source on color or
-printing theory. I simply did all of this empirically.
-
- There are various other tricks to reduce speckling. One that I've
-seen is to reduce the amount of ink printed in regions where one color
-(particularly cyan, which is perceived as the darkest) is very pale.
-This does reduce speckling all right, but it also results in strange
-tonal curves and weird (to my eye) colors.
-
- Before any dither routine is used, `init_dither()' must be called.
-This takes three arguments: the input width (number of pixels in the
-input), the output width (number of pixels in the output), and a
-`vars_t' structure containing the parameters for the print job.
-
- `init_dither()' returns a pointer to an opaque object representing
-the dither. This object is passed as the first argument to all of the
-dither-related routines.
-
- After a page is fully dithered, `free_dither()' must be called to
-free the dither object and perform any cleanup. In the future, this may
-do more (such as flush output). This arrangement permits using these
-routines with programs that create multiple output pages, such as
-GhostScript.
-
- The dithering routines themselves have a number of control knobs that
-control internal aspects of the dithering process. These knobs are
-accessible via a number of functions that can be called after
-`init_dither()'.
-
- * `dither_set_density()' takes a double between 0 and 1 representing
- the desired ink density for printing solid colors. This is used
- in a number of places in the dithering routine to make decisions.
-
- * `dither_set_black_density()' takes a double between 0 and 1
- representing the desired ink density for printing black ink in
- color printing. This is used to balance black against color ink.
- By default, this is equal to the density set by
- `dither_set_density()'. By setting it higher, more black ink will
- be printed. For example, if the base density is .4 and the black
- density is .8, twice as much black ink will be printed as would
- otherwise be called for.
-
- This is not used when printing in monochrome. When printing
- monochrome, the base density (`dither_set_density') should be
- adjusted appropriately.
-
- * `dither_set_ink_budget()' takes an unsigned number representing the
- most ink that may be deposited at a given point. This number is
- arbitrary; the limit is computed by summing the size of each ink
- dot, which is supplied as a parameter in `dither_set_X_ranges'.
- By default, there is no limit.
-
- * `dither_set_black_lower()' takes a double that should be between 0
- and 1 that represents the lowest density level at which black ink
- will start to mix in with colored ink to generate grays. The
- lower this is, the less density is required to use black ink.
- Setting this too low will result in speckling from black dots,
- particularly on 6 and 7 color printers. Setting this too high
- will make it hard to get satisfactory black or may result in sharp
- transition between blended colors and black. Default: 0.0468.
-
- It is important to note that since the density scale is never
- linear (and since this value is adjusted via other things
- happening during the dithering process) that this does not mean
- that 95% gray will use any black ink. At this setting, there will
- be no black ink used until about 50% gray.
-
- This only applies to color mode.
-
- This value should be set lower for printers capable of variable dot
- size, since more dots can be laid down close to each other.
-
- * `dither_set_black_upper()' takes a double that should be between 0
- and 1 that represents the highest density level at which colored
- inks will be mixed to create gray. Setting this too low will
- result in speckly dark grays because there is not enough ink to
- fill all the holes, or sharp transition between blended colors and
- black if it is too close to the value of dither_set_black_upper().
- Setting this too high will result in poor black and dark tone
- quality. Default: 0.5. This results in 10% and darker grays
- being printed with essentially all black.
-
- This only applies to color mode.
-
- * `dither_set_black_levels()' takes three doubles that represent the
- amount of cyan, magenta, and yellow respectively that are blended
- to create gray. The defaults are 1.0 for each, which is probably
- too low for most printers. These values are adjusted to create a
- good gray balance. Setting these too low will result in pale
- light and midtone grays, with a sharp transition to darker tones
- as black mixes in. Setting them too high will result in overly
- dark grays and use of too much ink, possibly creating
- bleed-through.
-
- This only applies to color mode.
-
- * `dither_set_randomizers()' takes four integer values representing
- the degree of randomness used for cyan, magenta, yellow, and black.
- This is used to allow some printing to take place in pale areas.
- Zero is the most random; greater than 8 or so gives very little
- randomness at all. Defaults are 0 for cyan, magenta, and yellow,
- and 4 for black. Setting the value for black too low will result
- in black speckling in pale areas. Setting values too high will
- result in pale areas getting no ink at all.
-
- This currently only applies to single dot size in color and black.
- It should be extended to operate in variable dot size mode,
- although actually applying it correctly will be tricky.
-
- * `dither_set_ink_darkness()' takes three doubles representing the
- contribution to perceived darkness of cyan, magenta, and yellow.
- This is used to help decide when to switch between light and dark
- inks in 6 and 7 color printers (with light cyan, light magenta,
- and possibly light yellow). Setting these too low will result in
- too much light ink being laid down, creating flat spots in the
- darkness curves and bleed-through. Setting them too high will
- result in dark ink being used in pale areas, creating speckle.
- The defaults are .4 for cyan, .3 for magenta, and .2 for yellow.
- Dark cyan will show against yellow much more than dark magenta
- will show against cyan, since the cyan appears much darker than
- the yellow.
-
- * `dither_set_light_inks()' takes three doubles between 0 and 1
- representing the ratio in darkness between the light and dark
- versions of the inks. Setting these too low will result in too
- much dark ink being used in pale areas, creating speckling, while
- setting them too high will result in very smooth texture but too
- much use of light ink, resulting in flat spots in the density
- curves and ink bleed-through. There are no defaults. Any light
- ink specified as zero indicates that there is no light ink for
- that color.
-
- This only applies to 6 and 7 color printers in single dot size
- color mode, and only to those inks which have light versions
- (usually cyan and magenta).
-
- * `dither_set_ink_spread()' takes a small integer representing the
- amount of ink spread in the dither. Larger numbers mean less
- spread. Larger values are appropriate for line art and solid
- tones; they will yield sharper transitions but more dither
- artifacts. Smaller values are more appropriate for photos. They
- will reduce resolution and sharpness but reduce dither artifacts
- up to a point. A value of 16 or higher implies minimum ink spread
- at any resolution no matter what the overdensity. A value of 14
- is typical for photos on single dot size, 6 color printers. For 4
- color printers, subtract 1 (more spread; the dots are farther
- apart). For variable dot size printers, add 1 (more small dots
- are printed; less spread is desirable).
-
- * `dither_set_adaptive_divisor()' takes a float representing the
- transition point between error diffusion and ordered dither if
- adaptive dithering is used. The float is a fraction of the
- printing density. For example, if you wish the transition to be
- at 1/4 of the maximum density (which works well on simple 4-color
- printers), you would pass .25 here. With six colors and/or with
- multiple dot sizes, the values should be set lower.
-
- * `dither_set_transition()' takes a float representing the exponent
- of the transition curve between light and dark inks/dot sizes. A
- value less than 1 (typical when using error diffusion) mixes in
- less dark ink/small dots at lower ends of the range, to reduce
- speckling. When using ordered dithering, this must be set to 1.
-
- * `dither_set_X_ranges_simple' (X=`c', `m', `y', or `k') describes
- the ink choices available for each color. This is useful in
- typical cases where a four color printer with variable dot sizes
- is in use. It is passed an array of doubles between (0, 1]
- representing the relative darkness of each dot size. The dot
- sizes are assigned bit patterns (and ink quantities, see
- `dither_set_ink_budget()' above) from 1 to the number of levels.
- This also requires a density, which is the desired density for this
- color. This density need not equal the density specified in
- `dither_set_density()'. Setting it lower will tend to print more
- dark ink (because the curves are calculated for this color
- assuming a lower density than is actually supplied).
-
- * `dither_set_X_ranges' (X=`c', `m', `y', or `k') describes in a
- more general way the ink choices available for each color. For
- each possible ink choice, a bit pattern, dot size, value (i. e.
- relative darkness), and whether the ink is the dark or light
- variant ink is specified.
-
- --Robert Krawitz <<rlk@alum.mit.edu>> May 8, 2000
-
-
-File: gimpprint.info, Node: Weaving, Next: ESC/P2, Prev: Dithering, Up: Appendices
-
-Weaving for inkjet printers
-***************************
-
-by Charles Briscoe-Smith and Robert Krawitz.
-
-* Menu:
-
-* Weaving introduction:: Just what is weaving?
-* Weaving algorithms:: How to weave.
-
diff --git a/doc/gimpprint.info-3 b/doc/gimpprint.info-3
deleted file mode 100644
index ad51a1c..0000000
--- a/doc/gimpprint.info-3
+++ /dev/null
@@ -1,1007 +0,0 @@
-This is gimpprint.info, produced by makeinfo version 4.0 from
-gimpprint.texi.
-
-INFO-DIR-SECTION Libraries
-START-INFO-DIR-ENTRY
-* GIMP-Print: (gimpprint). print plugin for the GIMP, and printing library
-END-INFO-DIR-ENTRY
-
- This file documents the gimpprint library and associated programs
-used for high quality printing.
-
- Copyright (C) 2001 Michael Sweet (<mike@easysw.com>) and Robert
-Krawitz (<rlk@alum.mit.edu>)
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-
-File: gimpprint.info, Node: Weaving introduction, Next: Weaving algorithms, Up: Weaving
-
-Introduction
-============
-
- The Epson Stylus Color/Photo printers don't have memory to print
-using all of the nozzles in the print head. For example, the Stylus
-Photo 700/EX has 32 nozzles. At 720 dpi, with an 8" wide image, a
-single line requires (8 * 720 * 6 / 8) bytes, or 4320 bytes (because the
-Stylus Photo printers have 6 ink colors). To use 32 nozzles per color
-would require 138240 bytes. It's actually worse than that, though,
-because the nozzles are spaced 8 rows apart. Therefore, in order to
-store enough data to permit sending the page as a simple raster, the
-printer would require enough memory to store 256 rows, or 1105920 bytes.
-Considering that the Photo EX can print 11" wide, we're looking at more
-like 1.5 MB. In fact, these printers are capable of 1440 dpi horizontal
-resolution. This would require 3 MB. The printers actually have
-64K-256K.
-
- With the newer (740/750 and later) printers it's even worse, since
-these printers support multiple dot sizes; of course, the even newer
-2880x720 printers don't help either.
-
- Older Epson printers had a mode called "MicroWeave" (tm). In this
-mode, the host fed the printer individual rows of dots, and the printer
-bundled them up and sent them to the print head in the correct order to
-achieve high quality. This MicroWeave mode still works in new printers,
-but in some cases the implementation is very minimal: the printer uses
-exactly one nozzle of each color (the first one). This makes printing
-extremely slow (more than 30 minutes for one 8.5x11" page), although the
-quality is extremely high with no visible banding whatsoever. It's not
-good for the print head, though, since no ink is flowing through the
-other nozzles. This leads to drying of ink and possible permanent
-damage to the print head.
-
- By the way, although the Epson manual says that microweave mode
-should be used at 720 dpi, 360 dpi continues to work in much the same
-way. At 360 dpi, data is fed to the printer one row at a time on all
-Epson printers. The pattern that the printer uses to print is very
-prone to banding. However, 360 dpi is inherently a low quality mode;
-if you're using it, presumably you don't much care about quality. It
-is possible to do microweave at 360 DPI, with significantly improved
-quality.
-
- Except for the Stylus Pro printers (5000, 5500, 7000, 7500, 9000,
-9500, and when it's released the 10000), which can do microweave at any
-resolution, printers from roughly the Stylus Color 600 and later do not
-have the capability to do MicroWeave correctly in many cases (some
-printers can do MicroWeave correctly at 720 DPI). Instead, the host
-must arrange the output in the order that it will be sent to the print
-head. This is a very complex process; the jets in the print head are
-spaced more than one row (1/720") apart, so we can't simply send
-consecutive rows of dots to the printer. Instead, we have to pass e.
-g. the first, ninth, 17th, 25th... rows in order for them to print in
-the correct position on the paper. This interleaving process is called
-"soft" weaving.
-
- This decision was probably made to save money on memory in the
-printer. It certainly makes the driver code far more complicated than
-it would be if the printer could arrange the output. Is that a bad
-thing? Usually this takes far less CPU time than the dithering
-process, and it does allow us more control over the printing process,
-e.g. to reduce banding. Conceivably, we could even use this ability to
-map out bad jets.
-
- Interestingly, apparently the Windows (and presumably Macintosh)
-drivers for most or all Epson printers still list a "microweave" mode.
-Experiments have demonstrated that this does not in fact use the
-"microweave" mode of the printer. Possibly it does nothing, or it uses
-a different weave pattern from what the non-"microweave" mode does.
-This is unnecessarily confusing, at least for people who write drivers
-who try to explain them to people who don't.
-
- What makes this interesting is that there are many different ways of
-of accomplishing this goal. The naive way would be to divide the image
-up into groups of 256 rows (for a printer with 32 jets and a separation
-of 8 rows), and print all the mod8=0 rows in the first pass, mod8=1
-rows in the second, and so forth. The problem with this approach is
-that the individual ink jets are not perfectly uniform; some emit
-slightly bigger or smaller drops than others. Since each group of 8
-adjacent rows is printed with the same nozzle, that means that there
-will be distinct streaks of lighter and darker bands within the image
-(8 rows is 1/90", which is visible; 1/720" is not). Possibly worse is
-that these patterns will repeat every 256 rows. This creates banding
-patterns that are about 1/3" wide.
-
- So we have to do something to break up this patterning.
-
- Epson does not publish the weaving algorithms that they use in their
-bundled drivers. Indeed, their developer web site
-(http://www.ercipd.com/isv/edr_docs.htm) does not even describe how to
-do this weaving at all; it says that the only way to achieve 720 dpi is
-to use MicroWeave. It does note (correctly) that 1440 dpi horizontal
-can only be achieved by the driver (i. e. in software). The manual
-actually makes it fairly clear how to do this (it requires two passes
-with horizontal head movement between passes), and it is presumably
-possible to do this with MicroWeave.
-
- The information about how to do this is apparently available under
-non-disclosure agreement (NDA). It's actually easy enough to reverse
-engineer what's inside a print file with a simple Perl script, which is
-supplied with the Gimp-Print distribution as tests/parse-escp2. In any
-event, we weren't particularly interested in the weaving patterns Epson
-used. There are many factors that go into choosing a good weaving
-pattern; we're learning them as we go along. Issues such as drying time
-(giving the ink a few seconds more or less to dry can have highly
-visible effects) affect the quality of the output.
-
- The Uniprint GhostScript driver has been able to do weaving for a
-long time. It uses patterns that must be specified for each choice of
-resolution and printer. We preferred an algorithmic approach that
-computes a weave pattern for any given choice of inputs. This
-obviously requires extensive testing; we developed a test suite
-specifically for this purpose.
-
-
-File: gimpprint.info, Node: Weaving algorithms, Prev: Weaving introduction, Up: Weaving
-
-Weaving algorithms
-==================
-
- I considered a few algorithms to perform the weave. The first one I
-devised let me use only (jets-distance_between_jets+1) nozzles, or 25.
-This is OK in principle, but it's slower than using all nozzles. By
-playing around with it some more, I came up with an algorithm that lets
-me use all of the nozzles, except near the top and bottom of the page.
-
- This still produces some banding, though. Even better quality can be
-achieved by using multiple nozzles on the same line. How do we do
-this? In 1440x720 mode, we're printing two output lines at the same
-vertical position. However, if we want four passes, we have to
-effectively print each line twice. Actually doing this would increase
-the density, so what we do is print half the dots on each pass. This
-produces near-perfect output, and it's far faster than using (pseudo)
-"MicroWeave".
-
- Yet another complication is how to get near the top and bottom of the
-page. This algorithm lets us print to within one head width of the top
-of the page, and a bit more than one head width from the bottom. That
-leaves a lot of blank space. Doing the weave properly outside of this
-region is increasingly difficult as we get closer to the edge of the
-paper; in the interior region, any nozzle can print any line, but near
-the top and bottom edges, only some nozzles can print. We originally
-handled this by using the naive way mentioned above near the borders,
-and switching over to the high quality method in the interior.
-Unfortunately, this meant that the quality is quite visibly degraded
-near the top and bottom of the page. We have since devised better
-algorithms that allow printing to the extreme top and bottom of the
-region that can physically be printed, with only minimal loss of
-quality.
-
- Epson does not advertise that the printers can print at the very top
-of the page, although in practice most of them can. The quality is
-degraded to some degree, and we have observed that in some cases not
-all of the dots get printed. Epson may have decided that the
-degradation in quality is sufficient that printing in that region
-should not be allowed. That is a valid decision, although we have
-taken another approach.
-
-* Menu:
-
-* Simple weaving algorithms:: Starting to weave.
-* Perfect weaving:: Improving the weave.
-* Weaving collisions:: Bang!
-* What is perfect weaving?:: What makes a ``perfect'' weave?
-* Oversampling:: Increasing resolution, reducing banding
-
-
-File: gimpprint.info, Node: Simple weaving algorithms, Next: Perfect weaving, Prev: Weaving algorithms, Up: Weaving algorithms
-
-Simple weaving algorithms
--------------------------
-
- The initial problem is to calculate the starting position of each
-pass; the row number of the printer's top jet when printing that pass.
-Since we assume the paper cannot be reverse-fed, the print head must,
-for each pass, start either further down the page than the previous
-pass or at the same position. Each pass's start point is therefore at
-a non-negative offset from the previous pass's start point.
-
- Once we have a formula for the starting row of each pass, we then
-turn that "inside out" to get a formula for the pass number containing
-each row.
-
- First, let's define how our printer works. We measure vertical
-position on the paper in "rows"; the resolution with which the printer
-can position the paper vertically. The print head contains J ink jets,
-which are spaced S rows apart.
-
- Consider a very simple case: we want to print a page as quickly as
-possible, and we mostly don't care how sparse the printing is, so long
-as it's fairly even.
-
- It's pretty obvious how to do this. We make one pass with the print
-head, printing J lines of data, each line S rows after the previous
-one. We then advance the paper by S*J rows and print the next row.
-For example, if J=7 and S=4, this method can be illustrated like this:
-
- pass number
- | row number------->
- | | 111111111122222222223333333333444444444455555555556666666666
- | 0123456789012345678901234567890123456789012345678901234567890123456789
- 0 *---*---*---*---*---*---*
- 1 *---*---*---*---*---*---*
- 2 \-----------------------/ *---*---*---*---*---*-
- 7 jets \---/
- 4 rows offset from one jet to the next
- \---------------------------/
- 7*4=28 rows offset from one pass to the next
-
- In these examples, the vertical axis can be thought of as the time
-axis, with the pass number shown at the left margin, while the row
-number runs horizontally. A `*' shows each row printed by a pass, and
-a row of `-' is used to link together the rows printed by one pass of
-the print head. The first pass is numbered `0' and starts at row 0.
-Each subsequent pass p starts at row p*S*J. Each pass prints J lines,
-each line being S rows after the previous one. (For ease of viewing
-this file on a standard terminal, I'm clipping the examples at column
-80.)
-
- This method covers the whole page with lines printed evenly S rows
-apart. However, we want to fill in all the other rows with printing to
-get a full-density page (we're ignoring oversampling at this stage).
-Where we have previously printed a single pass, we'll now print a "pass
-block": we print extra passes to fill in the empty rows. A naive
-implementation might look like this:
-
- 0 *---*---*---*---*---*---*
- 1 *---*---*---*---*---*---*
- 2 *---*---*---*---*---*---*
- 3 *---*---*---*---*---*---*
- 4 *---*---*---*---*---*---*
- 5 *---*---*---*---*---*---*
- 6 *---*---*---*---*---*---*
- 7 *---*---*---*---*---*---*
- 8 *---*---*---*---*---*-
- 9 *---*---*---*---*---*
- 10 *---*---*---*---*---
- 11 *---*---*---*---*--
-
-(Now you can see why this process is called "weaving"!)
-
-
-File: gimpprint.info, Node: Perfect weaving, Next: Weaving collisions, Prev: Simple weaving algorithms, Up: Weaving algorithms
-
-Perfect weaving
----------------
-
- This simple weave pattern prints every row, but will give conspicuous
-banding patterns for the reasons discussed above.
-
- Let's start improving this for our simple case. We can reduce
-banding by making sure that any given jet never prints a row too close
-to another row printed by the same jet. This means we want to space the
-rows printed by a given jet evenly down the page. In turn, this
-implies we want to advance the paper by as nearly an equal amount after
-each pass as possible.
-
- Each pass block prints S*J lines in S passes. The first line
-printed in each pass block is S*J rows lower on the page than the first
-line printed in the previous pass block. Therefore, if we advance the
-paper by J rows between each pass, we can print the right number of
-passes in each block and advance the paper perfectly evenly.
-
- Here's what this "perfect" weave looks like:
-
- start of full weave
- |
- 0 *---*---*---*---*---*---*
- 1 *---*---*---*---*---*---*
- 2 *---*---*---*---*---*---*
- 3 *---*---*---*---*---*---*
- 4 *---*---*---*---*---*---*
- 5 *---*---*---*---*---*---*
- 6 *---*---*---*---*---*---*
- 7 *---*---*---*---*---*---*
- 8 *---*---*---*---*---*-
- 9 *---*---*---*--
- 10 *---*---
- 11 *
-
- You'll notice that, for the first few rows, this weave is too sparse.
-It is not until the row marked "start of full weave" that every
-subsequent row is printed. We can calculate this start position as
-follows:
-
- start = (S-1) * (J-1)
-
- For the moment, we will ignore this problem with the weave. We'll
-consider later how to fill in the missing rows.
-
- Let's look at a few more examples of perfect weaves:
-
-S=2, J=7, start=(2-1)*(7-1)=6:
-
- starting row of full weave
- |
- 0 *-*-*-*-*-*-*
- 1 *-*-*-*-*-*-*
- 2 *-*-*-*-*-*-*
- 3 *-*-*-*-*-*-*
- 4 *-*-*-*-*-*-*
- 5 *-*-*-*-*-*-*
- 6 *-*-*-*-*-*-*
- 7 *-*-*-*-*-*-*
-
-S=7, J=2, start=6:
-
- start
- |
- 0 *------*
- 1 *------*
- 2 *------*
- 3 *------*
- 4 *------*
- 5 *------*
- 6 *------*
- 7 *------*
- 8 *------*
- 9 *------*
-
-S=4, J=13, start=36:
-
- start
- |
- 0 *---*---*---*---*---*---*---*---*---*---*---*---*
- 1 *---*---*---*---*---*---*---*---*---*---*---*---*
- 2 *---*---*---*---*---*---*---*---*---*---*---*---*
- 3 *---*---*---*---*---*---*---*---*---*--
- 4 *---*---*---*---*---*---*-
- 5 *---*---*---*
-
-S=13, J=4, start=36:
-
- start
- |
- 0 *------------*------------*------------*
- 1 *------------*------------*------------*
- 2 *------------*------------*------------*
- 3 *------------*------------*------------*
- 4 *------------*------------*------------*
- 5 *------------*------------*------------*
- 6 *------------*------------*------------*
- 7 *------------*------------*------------*
- 8 *------------*------------*------------*
- 9 *------------*------------*------------*
- 10 *------------*------------*-----------
- 11 *------------*------------*-------
- 12 *------------*------------*---
- 13 *------------*------------
- 14 *------------*--------
- 15 *------------*----
- 16 *------------*
- 17 *---------
- 18 *-----
- 19 *-
-
-S=8, J=5, start=28:
-
- start
- |
- 0 *-------*-------*-------*-------*
- 1 *-------*-------*-------*-------*
- 2 *-------*-------*-------*-------*
- 3 *-------*-------*-------*-------*
- 4 *-------*-------*-------*-------*
- 5 *-------*-------*-------*-------*
- 6 *-------*-------*-------*-------*
- 7 *-------*-------*-------*-------*
- 8 *-------*-------*-------*-------*
- 9 *-------*-------*-------*-------*
- 10 *-------*-------*-------*---
- 11 *-------*-------*------
- 12 *-------*-------*-
- 13 *-------*----
- 14 *-------
- 15 *--
-
-S=9, J=5, start=32:
-
- start
- |
- 0 *--------*--------*--------*--------*
- 1 *--------*--------*--------*--------*
- 2 *--------*--------*--------*--------*
- 3 *--------*--------*--------*--------*
- 4 *--------*--------*--------*--------*
- 5 *--------*--------*--------*--------*
- 6 *--------*--------*--------*--------*
- 7 *--------*--------*--------*--------*
- 8 *--------*--------*--------*--------*
- 9 *--------*--------*--------*-----
- 10 *--------*--------*--------*
- 11 *--------*--------*----
- 12 *--------*--------
- 13 *--------*---
- 14 *-------
- 15 *--
-
-S=6, J=7, start=30:
-
- start
- |
- 0 *-----*-----*-----*-----*-----*-----*
- 1 *-----*-----*-----*-----*-----*-----*
- 2 *-----*-----*-----*-----*-----*-----*
- 3 *-----*-----*-----*-----*-----*-----*
- 4 *-----*-----*-----*-----*-----*-----*
- 5 *-----*-----*-----*-----*-----*-----*
- 6 *-----*-----*-----*-----*-----*-----
- 7 *-----*-----*-----*-----*----
- 8 *-----*-----*-----*---
- 9 *-----*-----*--
- 10 *-----*-
- 11 *
-
-
-File: gimpprint.info, Node: Weaving collisions, Next: What is perfect weaving?, Prev: Perfect weaving, Up: Weaving algorithms
-
-Weaving collisions
-------------------
-
- This perfect weave is not possible in all cases. Let's look at
-another example:
-
-S=6, J=4:
-
- 0 *-----*-----*-----*
- 1 *-----*-----*-----*
- 2 *-----*-----*-----*
- 3 *-----*-----*-----*
- 4 ^ *-^---*-----*-----*
- 5 | ^ | *-^---*-----*-----*
- OUCH! ^ | ^
- | |
-
-Here we have a collision. Some lines printed in later passes overprint
-lines printed by earlier passes. We can see why by considering which
-row number is printed by a given jet number j (numbered from 0) of a
-given pass, p:
-
- row(p, j) = p*J + j*S
-
- Because J=4 and S=6 have a common factor of 2, jet 2 of pass 0
-prints the same row as jet 0 of pass 3:
-
- row(0, 2) = 0*4 + 2*6 = 12
- row(3, 0) = 3*4 + 0*6 = 12
-
- In fact, with this particular weave pattern, jets 0 and 1 of pass
-p+3 always overprint jets 2 and 3 of pass p. We'll represent
-overprinting rows by a `^' in our diagrams, and correct rows by `*':
-
-S=6 J=4:
-
- 0 *-----*-----*-----*
- 1 *-----*-----*-----*
- 2 *-----*-----*-----*
- 3 ^-----^-----*-----*
- 4 ^-----^-----*-----*
- 5 ^-----^-----*-----*
-
-
-File: gimpprint.info, Node: What is perfect weaving?, Next: Oversampling, Prev: Weaving collisions, Up: Weaving algorithms
-
-What makes a "perfect" weave?
------------------------------
-
- So what causes the perfect weave cases to be perfect, and the other
-cases not to be? In all the perfect cases above, S and J are
-relatively prime (i.e. their greatest common divisor (GCD) is 1). As
-we mentioned above, S=6 and J=4 have a common factor, which causes the
-overprinting. Where S and J have a GCD of 1, they have no common
-factor other than 1 and, as a result, no overprinting occurs. If S and
-J are not relatively prime, their common factor will cause overprinting.
-
- We can work out the greatest common divisor of a pair of natural
-numbers using Euler's algorithm:
-
- * Start with the two numbers: (e.g.) 9, 24
-
- * Swap them if necessary so that the larger one comes first: 24, 9
-
- * Subtract the second number from the first: 15, 9
-
- * Repeat until the first number becomes smaller: 6, 9
-
- * Swap the numbers again, so the larger one comes first: 9, 6
-
- * Subtract again: 3, 6
-
- * Swap: 6, 3
-
- * Subtract: 3, 3
-
- * And again: 0, 3
-
- * When one of the numbers becomes 0, the other number is the GCD of
- the two numbers you started with.
-
- These repeated subtractions can be done with C's `%' operator, so we
-can write this in C as follows:
-
- unsigned int
- gcd(unsigned int x, unsigned int y)
- {
- if (y == 0)
- return x;
- while (x != 0) {
- if (y > x)
- swap (&x, &y);
- x %= y;
- }
- return y;
- }
-
- `gcd(S,J)' will feature quite prominently in our weaving algorithm.
-
- If 0 <= j < J, there should only be a single pair (p, j) for any
-given row number. If S and J are not relatively prime, this assumption
-breaks down. (For conciseness, let G=GCD(S,J).)
-
-S=8, J=6, G=2:
-
- 0 *-------*-------*-------*-------*-------*
- 1 *-------*-------*-------*-------*-------*
- 2 *-------*-------*-------*-------*-------*
- 3 *-------*-------*-------*-------*-------*
- 4 ^-------^-------^-------*-------*-------*
- 5 ^-------^-------^-------*-------*-------*
-
- In this case, jets 0, 1 and 2 of pass p+4 collide with jets 3, 4 and
-5 of pass p.
-
- How can we calculate these numbers? Suppose we were to print using
-fewer jets, say J/G jets. The greatest common divisor of J/G and S is
-1, enabling a perfect weave. But to get a perfect weave, we also have
-to advance the paper by a factor of G less:
-
- 0 *-------*-------* - - -
- 1 *-------*-------* - - -
- 2 *-------*-------* - - -
- 3 *-------*-------* - - -
- 4 *-------*-------* - - -
- 5 *-------*-------* - - -
-
- If we left the paper advance alone, we'd get a sparse weave; only one
-row can be printed every G rows:
-
- 0 *-------*-------* - - -
- 1 *-------*-------* - - -
- 2 *-------*-------* - - -
- 3 *-------*-------* - - -
- 4 *-------*-------* - - -
- 5 *-------*-------* - - -
- ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
- These rows need filling in.
-
- The rows that would have been printed by the jets we've now omitted
-(shown as `-') are printed by other jets on later passes.
-
- Let's analyse this. Consider how a pass p could collide with pass
-0. Pass p starts at offset p*J. Pass 0 prints at rows which are
-multiples of S. If p*J is exactly divisible by S, a collision has
-occurred, unless p*J >= J*S (which will happen when we finish a pass
-block).
-
- So, we want to find p and q such that p*J=q*S and p is minimised.
-Then p is the number of rows before a collision, and q is the number of
-jets in pass 0 which are not involved in the collision. To do this, we
-find the lowest common multiple of J and S, which is L=J*S/G. L/J is
-the number of rows before a collision, and L/S is the number of jets in
-the first pass not involved in the collision.
-
- Thus, we see that the first J/G rows printed by a given pass are not
-overprinted by any later pass. However, the rest of the rows printed
-by pass p are overprinted by the first J-(J/G) jets of pass p+(S/G).
-We will use C to refer to S/G, the number of rows after which a
-collision occurs.
-
- Another example:
-
-S=6, J=9, G=3, C=S/G=2:
-
- 0 *-----*-----*-----*-----*-----*-----*-----*-----*
- 1 *-----*-----*-----*-----*-----*-----*-----*-----*
- 2 ^-----^-----^-----^-----^-----^-----*-----*-----*
- 3 ^-----^-----^-----^-----^-----^-----*-----*-----*
- 4 ^-----^-----^-----^-----^-----^-----*-----
- 5 ^-----^-----^-----^-----^-----^--
- ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^
- These rows need filling in.
-
-In this case, the first J-(J/G) = 9-9/3 = 6 jets of pass p+(6/3)=p+2
-collide with the last 6 jets of pass p. Only one row in every G=2 rows
-is printed by this weave.
-
-S=9, J=6, G=3, C=3:
-
- 0 *--------*--------*--------*--------*--------*
- 1 *--------*--------*--------*--------*--------*
- 2 *--------*--------*--------*--------*--------*
- 3 ^--------^--------^--------^--------*--------*
- 4 ^--------^--------^--------^--------*--------*
- 5 ^--------^--------^--------^--------*--------*
-
-Here, the first J-(J/G) = 6-6/3 = 4 jets of pass p+(9/3)=p+3 collide
-with the last 4 jets of pass p.
-
- Note that, in these overprinting cases, only rows divisible by G are
-ever printed. The other rows, those not divisible by G, are not
-touched by this weave.
-
- We can modify our weave pattern to avoid overprinting any rows and
-simultaneously fill in the missing rows. Instead of using J alone to
-determine the start of each pass from the previous pass, we adjust the
-starting position of some passes. As mentioned before, we will divide
-the page into pass blocks, with S passes in each block. This ensures
-that the first jet of the first pass in a block prints the row which
-the Jth jet of the first pass of the previous block would have printed,
-if the print head had one extra jet.
-
- Looking back at an example of a perfect weave, we can divide it into
-pass blocks:
-
-S=7, J=2, G=1:
-
- imaginary extra jet
- |
- 0 *------* * <--start of pass block 0
- 1 *------* |
- 2 *------* |
- 3 *------*|
- 4 *-----|*
- 5 *---|--*
- 6 *-|----*
- |
- 7 *------* <--start of pass block 1
- 8 *------*
- 9 *------*
-
- We can now calculate the start of a given pass by reference to its
-pass block. The first pass of pass block b always starts at row
-(b*S*J). The start row of each of the other passes in the block are
-calculated using offsets from this row.
-
- For the example above, there are 7 passes in each pass block, and
-their offsets are 0, 2, 4, 6, 8, 10 and 12. The next pass block is
-offset S*J=14 rows from the start of the current pass block.
-
- The simplest way to modify the "perfect" weave pattern to give a
-correct weave in cases where G!=1 is to simply change any offsets which
-would result in a collision, until the collision disappears. Every
-printed row in the weave, as we have shown it up to now, is separated
-from each of its neighbouring printed rows by G blank rows. We will
-add an extra offset to each colliding pass in such a way that we push
-the pass onto these otherwise blank rows.
-
- We have seen that, unless G=1, the plain weave pattern results in
-each pass colliding with the pass S/G passes before. We will now
-subdivide our pass block into subblocks, each consisting of B=S/G
-passes. There are therefore G subblocks in a pass block.
-
- For each subblock, the passes in that subblock have a constant offset
-added to them. The offset is different for each subblock in a block.
-There are many ways we can choose the offsets, but the simplest is to
-make the offset equal to the subblock number (starting from 0).
-
- Thus, the passes in the first subblock in each pass block remain at
-the offsets we've already calculated from J. The passes in the second
-subblock each have 1 added to their offset, the passes in the third
-subblock have 2 added, and so on. Thus, the offset of pass p (numbered
-relative to the start of its pass block) is p*J + floor(p/B).
-
- This gives us a weave pattern looking like this:
-
-S=6, J=9, G=3, B=2:
-
- 0 *-----*-----*-----*-----*-----*-----*-----*-----*
- 1 ^ *-----*-----*-----*-----*-----*-----*-----*-----*
- 2 | +-> *-----*-----*-----*-----*-----*-----*-----*-----*
- 3 | | *-----*-----*-----*-----*-----*-----*-----*-----*
- 4 | | +-> *-----*-----*-----*-----*-----*-----*---
- 5 | | | *-----*-----*-----*-----*-----*
- 6 | | | +-> *-----*-----*-----*-----
- 7 | | | | *-----*-----*--
- | | | start of pass block 1
- | | | (offset returns to 0)
- | | start of subblock 2 (offset 2 rows)
- | start of subblock 1 (following passes offset by 1 row)
- start of passblock 0, subblock 0 (pass start calculated as p*J)
-
-S=9, J=6, G=3, B=3:
-
- 0 *--------*--------*--------*--------*--------*
- 1 *--------*--------*--------*--------*--------*
- 2 *--------*--------*--------*--------*--------*
- 3 *--------*--------*--------*--------*--------*
- 4 *--------*--------*--------*--------*--------*
- 5 *--------*--------*--------*--------*--------*
- 6 *--------*--------*--------*--------*---
- 7 *--------*--------*--------*------
- 8 *--------*--------*--------*
- 9 *--------*--------*-----
- 10 \---/ *--------*--------
- 11 small offset *--------*--
- 12 *----
-
- This method of choosing offsets for subblocks can result in an
-occasional small offset (as shown above) between one pass and the next,
-particularly when G is large compared to J. For example:
-
-S=8, J=4, G=4, B=2:
-
- 0 *-------*-------*-------*
- 1 *-------*-------*-------*
- 2 *-------*-------*-------*
- 3 *-------*-------*-------*
- 4 *-------*-------*-------*
- 5 *-------*-------*-------*
- 6 *-------*-------*-------*
- 7 *-------*-------*-------*
- 8 *-------*-------*-------*
- 9 \/ *-------*-------*-------*
- very small offset!
-
- We can plot the offset against the subblock number as follows:
-
- subblock number
- | offset
- | |
- | 0123
- 0 *
- 1 *
- 2 *
- 3 *
- 0 *
- 1 *
- 2 *
- 3 *
-
-The discontinuity in this plot results in the small offset between
-passes.
-
- As we said at the beginning, we want the offsets from each pass to
-the next to be as similar as possible. We can fix this by calculating
-the offset for a given subblock b as follows:
-
- offset(b) = 2*b , if b < ceiling(G/2)
- = 2*(G-b)-1 , otherwise
-
- We can visualise this as follows, for G=10:
-
- 0123456789
- 0 *
- 1 *
- 2 *
- 3 *
- 4 *
- 5 *
- 6 *
- 7 *
- 8 *
- 9 *
- 0 *
- 1 *
- 2 *
- 3 *
- 4 *
- 5 *
- 6 *
- 7 *
- 8 *
- 9 *
-
-and for G=11:
-
- 1
- 01234567890
- 0 *
- 1 *
- 2 *
- 3 *
- 4 *
- 5 *
- 6 *
- 7 *
- 8 *
- 9 *
- 10 *
- 0 *
- 1 *
- 2 *
- 3 *
- 4 *
- 5 *
- 6 *
- 7 *
- 8 *
- 9 *
- 10 *
-
-This gives a weave looking like this:
-
-S=12, J=6, G=6, B=2:
-
- 0 *-----------*-----------*-----------*-----------*-----------*
- 1 *-----------*-----------*-----------*-----------*-----------*
- 2 *-----------*-----------*-----------*-----------*-----------*
- 3 *-----------*-----------*-----------*-----------*---------
- 4 *-----------*-----------*-----------*-----------*-
- 5 *-----------*-----------*-----------*-------
- 6 *-----------*-----------*-----------*
- 7 *-----------*-----------*------
- 8 *-----------*-----------*--
- 9 *-----------*--------
- 10 *-----------*----
- 11 *----------
- 12 *-----
-
- This method ensures that the offset between passes is always in the
-range [J-2,J+2].
-
- (This might seem odd, but it occurs to me that a good weave pattern
-might also make a good score for bell ringers. When church bells are
-rung, a list of "changes" are used. For example, if 8 bells are being
-used, they will, at first, be rung in order: 12345678. If the first
-change is for bells 5 and 6, the bells will then be rung in the order
-12346578. If the second change is 1 and 2, the next notes are 21346578.
-After a long list of changes, the order the bells are rung in can become
-quite complex.
-
- For a group of bell-ringers to change the order of the notes, they
-must each either delay their bell's next ring, hasten it, or keep it
-the same as the time it takes to ring all the bells once. The length
-of time between each ring of a given bell can only be changed a little
-each time, though; with an ink-jet weave pattern, we want the same to
-apply to the distance between passes.)
-
- Finally, knowing the number of jets J and their separation S, we can
-calculate the starting row of any given pass p as follows:
-
- passesperblock = S
- passblock = floor(p / passesperblock)
- offsetinpassblock = p - passblock * passesperblock
- subblocksperblock = gcd(S, J)
- passespersubblock = S / subblocksperblock
- subpassblock = floor(offsetinpassblock / passespersubblock)
- if subpassblock < ceiling(subblocksperblock/2)
- subblockoffset = 2*subpassblock
- else
- subblockoffset = 2*(subblocksperblock-subpassblock)-1
- startingrow = passblock * S * J + offsetinpassblock * J + subblockoffset
-
- We can simplify this down to the following:
-
- subblocksperblock = gcd(S, J)
- subpassblock = floor((p % S) * subblocksperblock / S)
- if subpassblock * 2 < subblocksperblock
- subblockoffset = 2*subpassblock
- else
- subblockoffset = 2*(subblocksperblock-subpassblock)-1
- startingrow = p * J + subblockoffset
-
- So the row number of jet j of pass p is
-
- subblocksperblock = gcd(S, J)
-
- subblockoffset(p)
- = 2*subpassblock , if subpassblock * 2 < subblocksperblock
- = 2*(subblocksperblock-subpassblock)-1 , otherwise
- where
- subpassblock = floor((p % S) * subblocksperblock / S)
-
- row(j, p) = p * J + subblockoffset(p) + j * S
-
- Together with the inequality 0 <= j < J, we can use this definition
-in reverse to calculate the pass number containing a given row, r.
-Working out the inverse definition involves a little guesswork, but one
-possible result is as follows. Given a row, r, which is known to be
-the first row of a pass, we can calculate the pass number as follows:
-
- subblocksperblock = gcd(S, J)
- subblockoffset = r % subblocksperblock
- pass = (r - subblockoffset) / J
-
- If G==1, we can determine the pass number with this algorithm:
-
- offset = r % J
- pass = (r - offset) / J
- while (offset % S != 0)
- {
- pass--
- offset += J
- }
- jet = offset / S
-
- Generalising, we come up with this algorithm. Given r, S and J:
-
- G = gcd(S, J)
- passespersubblock = S/G
- subblockoffset = r % G
- subpassblock = subblockoffset / 2 , if subblockoffset % 2 == 0
- = G - (subblockoffset+1)/2 , otherwise
- baserow = r - subblockoffset - (subpassblock * passespersubblock * J)
- offset = baserow % J
- pass = (baserow - offset) / J
- while (offset % S != 0)
- {
- offset += J
- pass -= 1
- }
- subblockretreat = floor(pass / passespersubblock) % G
- pass -= subblockretreat * passespersubblock
- pass += subpassblock * passespersubblock
- jet = (r - subblockoffset - pass * J) / S
-
- Let's look at some examples of imperfect but correct weave patterns:
-
-S=6, J=4, GCD=2,
-passesperblock=S=6,
-passespersubblock=S/G=6/2=3:
-
- 0 *-----*-----*-----*
- 1 *-----*-----*-----*
- 2 *-----*-----*-----*
- 3 *-----*-----*-----*
- 4 *-----*-----*-----*
- 5 *-----*-----*-----*
- 6 *-----*-----*-----*
- 7 *-----*-----*-----*
- 8 *-----*-----*-----*
- 9 *-----*-----*-----*
- 10 *-----*-----*-----*
- 11 *-----*-----*-----*
- 12 *-----*-----*-----*
- 13 *-----*-----*-----*
- 14 *-----*-----*-----*
- 15 *-----*-----*----
- 16 *-----*-----*
- 17 *-----*--
- 18 *-----
- 19 *-
-
-S=8, J=6, G=2,
-passesperblock=S=8,
-passespersubblock=S/G=8/2=4:
-
- 0 *-------*-------*-------*-------*-------*
- 1 *-------*-------*-------*-------*-------*
- 2 *-------*-------*-------*-------*-------*
- 3 *-------*-------*-------*-------*-------*
- 4 *-------*-------*-------*-------*-------*
- 5 *-------*-------*-------*-------*-------*
- 6 *-------*-------*-------*-------*-------*
- 7 *-------*-------*-------*-------*--
- 8 *-------*-------*-------*-----
- 9 *-------*-------*-------
- 10 *-------*-------*-
- 11 *-------*---
- 12 *----
-
-S=6, J=12, G=6,
-passesperblock=S=6,
-passespersubblock=S/G=6/6=1:
-
- 0 *-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
- 1 *-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*---
- 2 *-----*-----*-----*-----*-----*-----*-----*-----*-
- 3 *-----*-----*-----*-----*-----*-----*
- 4 *-----*-----*-----*-----*--
- 5 *-----*-----*----
- 6 *-----
-
- We have now solved the basic weaving problem. There are two further
-refinements we need to consider: oversampling, and filling in the
-missing rows at the start of the weave.
-
diff --git a/doc/gimpprint.info-4 b/doc/gimpprint.info-4
deleted file mode 100644
index a42b029..0000000
--- a/doc/gimpprint.info-4
+++ /dev/null
@@ -1,1151 +0,0 @@
-This is gimpprint.info, produced by makeinfo version 4.0 from
-gimpprint.texi.
-
-INFO-DIR-SECTION Libraries
-START-INFO-DIR-ENTRY
-* GIMP-Print: (gimpprint). print plugin for the GIMP, and printing library
-END-INFO-DIR-ENTRY
-
- This file documents the gimpprint library and associated programs
-used for high quality printing.
-
- Copyright (C) 2001 Michael Sweet (<mike@easysw.com>) and Robert
-Krawitz (<rlk@alum.mit.edu>)
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-
-File: gimpprint.info, Node: Oversampling, Prev: What is perfect weaving?, Up: Weaving algorithms
-
-Oversampling
-------------
-
- By oversampling, we mean printing on the same row more than once.
-There are two reasons for oversampling: to increase the horizontal
-resolution of the printout and to reduce banding.
-
- Oversampling to increase horizontal resolution is necessary because,
-although the printer might be able to position an ink drop to, for
-example, 1/1440" horizontally, it may not be able to lay down two such
-drops 1/1440" apart. If it can print two drops 1/720" apart, 2x
-oversampling will be necessary to get a 1/1440" horizontal resolution.
-If it can only print two drops 1/360" apart, 4x oversampling will be
-necessary for a 1/1440" horizontal resolution. The printer enforces
-this "drop spacing" by only accepting raster passes with a horizontal
-resolution matching the spacing with which it can print dots, so we
-must print passes at different horizontal positions if we are to obtain
-a higher horizontal resolution. (Another reason it does this may be to
-reduce the amount of memory needed in the printer.)
-
- Oversampling can also be done to decrease the banding apparent in an
-image. By splitting a row into two or more sets of dots ("lines") and
-printing each line on the same row, but with a different nozzle for
-each line, we can get a smoother print.
-
- To quantify these two kinds of oversampling, we'll introduce two new
-constants: H shows how many different horizontal offsets we want to
-print at (the "horizontal oversampling") while O shows how many times
-we want to print each row, over and above the number of times necessary
-for horizontal oversampling (the "extra oversampling").
-
- It is necessary for all the lines printed by a given pass to have the
-same horizontal offset, but there need not be any relation between them
-in terms of extra oversampling. For the moment, however, we will treat
-all oversampling as potentially requiring this alignment; all lines in
-one pass must be derived from the original row data in the same way.
-Thus, we'll assume O=1 for now.
-
- So, how do we do this oversampling? In fact, it can be done easily:
-advance the paper by a factor of H less between each pass. We'll
-define a new variable, A, to show how much we advance the paper between
-passes. Previously, we'd have defined A=J; we now let A=J/H. This
-also affects our pass blocks. Printing one pass block used to involve
-advancing the paper S*J rows; it now advances the paper S*J/H rows. We
-therefore name a group of H pass blocks a "band". Printing one band
-involves advancing the paper S*J rows, as a pass block did before.
-
- To keep our weave pattern working correctly, so that overprinting
-does not occur within a pass block, we also have to redefine G as
-GCD(S,A). Here's an example of an oversampled weave pattern:
-
-S=4, J=10, H=2, A=J/H=10/2=5, G=GCD(4,5)=1,
-passesperblock=S=4,
-passespersubblock=S/G=4/1=4:
-
- 0 *---*---*---*---*---*---*---*---*---*
- 1 *---*---*---*---*---*---*---*---*---*
- 2 *---*---*---*---*---*---*---*---*---*
- 3 *---*---*---*---*---*---*---*---*---*
- 4 *---*---*---*---*---*---*---*---*---*
- 5 *---*---*---*---*---*---*---*---*---*
- 6 *---*---*---*---*---*---*---*---*---*
- 7 *---*---*---*---*---*---*---*---*---*
- 8 *---*---*---*---*---*---*---*---*---*
- 9 *---*---*---*---*---*---*---*---*
- 10 *---*---*---*---*---*---*---
- 11 *---*---*---*---*---*--
- 12 *---*---*---*---*-
- 13 *---*---*---*
- 14 *---*---
- 15 *--
-
- Now we have to determine which line is printed by each jet on each
-pass. If we number each line generated as we split up a row, we can
-use these numbers. We'll number the lines in our diagram by replacing
-the `*'s with integers in the range [0...H-1].
-
- Overprinting occurs once per pass block, so we can simply print pass
-block 0 with line 0, pass block 1 with line 1, pass block 2 with line
-2, etc, wrapping to 0 when we've run out of lines:
-
- 0 0---0---0---0---0---0---0---0---0---0
- 1 0---0---0---0---0---0---0---0---0---0
- 2 0---0---0---0---0---0---0---0---0---0
- 3 0---0---0---0---0---0---0---0---0---0
- 4 1---1---1---1---1---1---1---1---1---1
- 5 1---1---1---1---1---1---1---1---1---1
- 6 1---1---1---1---1---1---1---1---1---1
- 7 1---1---1---1---1---1---1---1---1---1
- 8 0---0---0---0---0---0---0---0---0---0
- 9 0---0---0---0---0---0---0---0---0
- 10 0---0---0---0---0---0---0---
- 11 0---0---0---0---0---0--
- 12 1---1---1---1---1-
- 13 1---1---1---1
- 14 1---1---
- 15 1--
-
-S=4, J=12, H=2, A=J/H=12/2=6, G=GCD(4,6)=2,
-passesperblock=S=4,
-passespersubblock=S/G=4/2=2:
-
- 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
- 2 0---0---0---0---0---0---0---0---0---0---0---0
- 3 0---0---0---0---0---0---0---0---0---0---0---0
- 4 1---1---1---1---1---1---1---1---1---1---1---1
- 5 1---1---1---1---1---1---1---1---1---1---1---1
- 6 1---1---1---1---1---1---1---1---1---1---1
- 7 1---1---1---1---1---1---1---1---1--
- 8 0---0---0---0---0---0---0---0-
- 9 0---0---0---0---0---0---
- 10 0---0---0---0---0
- 11 0---0---0--
- 12 1---1-
-
- But what do we do if J is not an exact multiple of H? This is a
-difficult problem, which I struggled with for quite a few days before
-giving in and taking the easy (but less elegant) way out. The easy
-solution is to round J/H down, then add on the accumulated error at the
-end of each band.
-
-S=4, J=11, H=2 A=floor(J/H)=floor(11/2)=5, G=GCD(4,5),
-passesperblock=S=4,
-passespersubblock=S/G=4/1=4
-
- Band 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
- 2 0---0---0---0---0---0---0---0---0---0---0
- 3 0---0---0---0---0---0---0---0---0---0---0
- 4 1---1---1---1---1---1---1---1---1---1---1
- 5 1---1---1---1---1---1---1---1---1---1---1
- 6 1---1---1---1---1---1---1---1---1---1---1
- 7 1---1---1---1---1---1---1---1---1---1---
-
- Band 1:
- 8 | 0---0---0---0---0---0---0---0---0-
- 9 \-----------------------------------------/ 0---0---0---0---0---0---0---0
- 10 S*J rows 0---0---0---0---0---0---
- 11 0---0---0---0---0--
- 12 1---1---1---1-
- 13 1---1---1
- 14 1---
-
- We can calculate the starting row and subpass number of a given pass
-in this scheme as follows:
-
- A = floor(J / H)
- subblocksperblock = gcd(S, A)
- subpassblock = floor((p % S) * subblocksperblock / S)
- if subpassblock * 2 < subblocksperblock
- subblockoffset = 2*subpassblock
- else
- subblockoffset = 2*(subblocksperblock-subpassblock)-1
- band = floor(P / (S * H))
- passinband = P % (S * H)
- startingrow = band * S * J + passinband * A + subblockoffset
- subpass = passinband / S
-
- So the row number of jet j of pass p is
-
- A = floor(J / H)
- subblocksperblock = gcd(S, A)
-
- subblockoffset(p)
- = 2*subpassblock , if subpassblock * 2 < subblocksperblock
- = 2*(subblocksperblock-subpassblock)-1 , otherwise
- where
- subpassblock = floor((p % S) * subblocksperblock / S)
-
- band(p) = floor(p / (S * H))
- passinband(p) = p % (S * H)
-
- row(j, p) = band(p) * S * J + passinband(p) * A + subblockoffset(p) + j * S
- row(j, p) = p * J + subblockoffset(p) + j * S
-
- To be continued....
-
-
-File: gimpprint.info, Node: ESC/P2, Next: New Printer, Prev: Weaving, Up: Appendices
-
-ESC/P2
-******
-
-* Menu:
-
-* ESC/P2 Introduction:: What is ESC/P2
-* ESC/P2 Standard Commands:: Normal ESC/P2 commands
-* ESC/P2 Remote Mode Commands:: Exotic ESC/P2 commands
-* ESC/P2 Appropriate Remote Commands:: Useful remote command sequences
-
-
-File: gimpprint.info, Node: ESC/P2 Introduction, Next: ESC/P2 Standard Commands, Up: ESC/P2
-
-Introduction to ESC/P2
-======================
-
- This is a description of the ESC/P2 raster commands used by the
-gimp-print plugin and Ghostscript driver, which is a subset of the
-complete command set. The full documents are found on
-<http://www.ercipd.com/isv/edr_docs.htm>. Note that these are *not*
-always correct, and are certainly not complete.
-
- All ESCP/2 raster commands begin with the `ESC' character (1b hex),
-followed by either one or two command characters and arguments where
-applicable. Older commands generally have one command character. Newer
-commands usually have a `(' (left parenthesis) followed by a command
-character and a byte count for the arguments that follow. The byte
-count is a 16-bit (2 byte) binary integer, in little endian order.
-
- All arguments listed here are of the form `name[bytes]' where
-`[bytes]' is the number of bytes that comprise the argument. The
-arguments themselves are usually one, two, or four byte integers, always
-little endian (the least significant bits come first). Presumably this
-is to match Intel processors.
-
- In some cases, the same command sequence identifies different
-versions of the same command, depending upon the number of bytes of
-arguments.
-
-
-File: gimpprint.info, Node: ESC/P2 Standard Commands, Next: ESC/P2 Remote Mode Commands, Prev: ESC/P2 Introduction, Up: ESC/P2
-
-Standard commands
-=================
-
- - ESC/P2 command: `ESC @'
- Reset the printer. Discards any output, ejects the existing page,
- returns all settings to their default. Always use this before
- printing a page.
-
- - ESC/P2 command: `ESC (G BC=1 ON1'
- Turn on graphics mode. ON should be `1' (turn on graphics mode).
-
- - ESC/P2 command: `ESC (U BC=1 UNIT1'
- Set basic unit of measurement used by printer. This is expressed
- in multiples of 1/3600". At 720 DPI, UNIT is `5'; at 360 DPI,
- UNIT is `10'.
-
- - ESC/P2 command: `ESC (U BC=5 PAGEUNITS1 VUNIT1 HUNIT1 BASEUNIT2'
- Set basic units of measurement used by the printer. PAGEUNIT is
- the unit of page measurement (for commands that set page
- dimensions and the like). VUNIT is the unit of vertical
- measurement (for vertical movement commands). HUNIT is the unit
- of horizontal movement (for horizontal positioning commands). All
- of these units are expressed in BASEUNIT, which is in reciprocal
- inches. Typically, BASEUNIT is `1440'. In 720 DPI mode, PAGEUNIT,
- VUNIT, and HUNIT are all `2'; in 1440x720 DPI mode, PAGEUNIT and
- VUNIT are normally set to `2'; HUNIT is set to `1'.
-
- - ESC/P2 command: `ESC (K BC=2 ZERO1 GRAYMODE1'
- Set color or grayscale mode, on printers supporting an explicit
- grayscale mode. These printers can be identified because they are
- advertised as having more black nozzles than nozzles of individual
- colors. Setting grayscale mode allows use of these extra nozzles
- for faster printing. GRAYMODE should be `0' or `2' for color, `1'
- for grayscale. ZERO should always be `0'.
-
- - ESC/P2 command: `ESC (i BC=1 MICROWEAVE1'
- If MICROWEAVE is `1', use microweave mode. On older printers,
- this is used to turn on microweave; on newer printers, it prints
- one row at a time. All printers support this mode. It should
- only be used at 720 (or 1440x720) DPI. The Epson Stylus Pro series
- indicates additional modes:
-
- `2'
- "Full-overlap"
-
- `3'
- "Four-pass"
-
- `4'
- "Full-overlap 2"
-
- Any of these commands can be used with the high four bits set to
- either `3' or `0'.
-
- - ESC/P2 command: `ESC U DIRECTION1'
- If DIRECTION is `1', print unidirectionally; if `0', print
- bidirectionally.
-
- - ESC/P2 command: `ESC (s BC=1 SPEED1'
- On some older printers, this controls the print head speed. SPEED
- of `2' is 10 inches/sec; SPEED of `0' or 1 is 20.
-
- - ESC/P2 command: `ESC (e BC=2 ZERO1 DOTSIZE1'
- Choose print dotsize. DOTSIZE can take on various values,
- depending upon the printer. Almost all printers support `0' and
- `2'. Variable dot size printers allow a value of 16. Other than
- the value of 16, this appears to be ignored at resolutions of 720
- DPI and above.
-
- - ESC/P2 command: `ESC (C BC=2 PAGELENGTH2'
- - ESC/P2 command: `ESC (C BC=4 PAGELENGTH4'
- Set the length of the page in "pageunits" (see `ESC (U' above).
- The second form of the command allows setting of longer page
- lengths on new printers (these happen to be the printers that
- support variable dot size).
-
- - ESC/P2 command: `ESC (c BC=4 TOP2 LENGTH2'
- - ESC/P2 command: `ESC (c BC=8 TOP4 LENGTH4'
- Set the vertical page margins of the page in "pageunits" (see `ESC
- (U' above). The margins are specified as the top of the page and
- the length of the page. The second form of the command allows
- setting of longer page lengths on new printers (these happen to be
- the printers that support variable dot size).
-
- - ESC/P2 command: `ESC (S BC=8 WIDTH4 LENGTH4'
- Set the width and length of the printed page region in "pageunits"
- (see `ESC (U' above).
-
- - ESC/P2 command: `ESC (v BC=2 ADVANCE2'
- - ESC/P2 command: `ESC (v BC=4 ADVANCE4'
- Feed vertically ADVANCE "vertical units" (see `ESC (U' above) from
- the current print head position.
-
- - ESC/P2 command: `ESC (V BC=2 ADVANCE2'
- - ESC/P2 command: `ESC (V BC=4 ADVANCE4'
- Feed vertically ADVANCE "vertical units" (see `ESC (U' above) from
- the top margin.
-
- - ESC/P2 command: `ESC ($ BC=4 OFFSET4'
- Set horizontal position to OFFSET from the left margin. This
- command operates on printers of the 740 class and newer (all
- printers with variable dot size).
-
- - ESC/P2 command: `ESC $ OFFSET2'
- Set horizontal position to OFFSET from the left margin. This
- command operates on printers of the 740 class and newer (all
- printers with variable dot size).
-
- - ESC/P2 command: `ESC (\ BC=4 UNITS2 OFFSET2'
- Set horizontal position to OFFSET from the previous print head
- position, measured in UNITS. UNITS is measured in inverse inches,
- and should be set to 1440 in all cases. This operates on all 1440
- dpi printers that do not support variable dot size.
-
- - ESC/P2 command: `ESC (/ BC=4 OFFSET4'
- Set horizontal position to OFFSET from the previous print head
- position, measured in "horizontal units" (see `ESC (U' above).
- This operates on all variable dot size printers.
-
- - ESC/P2 command: `ESC \ OFFSET2'
- Set horizontal position to OFFSET from the previous print head
- position, measured in basic unit of measurement (see `ESC (U'
- above). This is used on all 720 dpi printers, and can also be used
- on 1440 dpi printers in lower resolutions to save a few bytes.
- Note that OFFSET may be negative. The range of values for this
- command is between `-16384' and `16383'.
-
- - ESC/P2 command: `ESC r COLOR1'
- - ESC/P2 command: `ESC (r BC=2 DENSITY1 COLOR1'
- Set the ink color. The first form is used on four-color printers;
- the second on six-color printers. DENSITY is `0' for dark inks,
- `1' for light. COLOR is
-
- `0'
- black
-
- `1'
- magenta
-
- `2'
- cyan
-
- `4'
- yellow
-
- This command is not used on variable dot size printers in softweave
- mode.
-
- - ESC/P2 command: `ESC . COMPRESS1 VSEP1 HSEP1 LINES1 WIDTH2 DATA...'
- Print data. COMPRESS signifies the compression mode:
-
- `0'
- no compression
-
- `1'
- TIFF compression (incorrectly documented as "run length
- encoded")
-
- `2'
- TIFF compression with a special command set.
-
- VSEP depends upon resolution and printer type. At 360 DPI, it is
- always `10'. At 720 DPI, it is normally `5'5. On the ESC 600, it
- is `40' (8 * 5). On some other printers, it varies.
-
- HSEP1 is `10' at 360 DPI and `5' at 720 or 1440 DPI (1440 DPI
- cannot be printed in one pass; it is printed in two passes, with
- the dots separated in each pass by 1/720").
-
- LINES is the number of lines to be printed. It should be `1' in
- microweave and 360 DPI. At 720 DPI softweave, it should be the
- number of lines to be actually printed.
-
- WIDTH is the number of pixels to be printed in each row.
- Following this command, a carriage return (`13' decimal, `0A' hex)
- should be output to return the print head position to the left
- margin.
-
- The basic data format is a string of bytes, with data from left to
- right on the page. Within each byte, the highest bit is first.
-
- The TIFF compression is implemented as one count byte followed by
- one or more data bytes. There are two cases:
-
- 1. If the count byte is `128' or less, it is followed by [count]
- + 1 data bytes. So if the count byte is `0', it is followed
- by 1 data byte; if it is `128', it is followed by 129 data
- bytes.
-
- 2. If the count byte is greater than 128, it is followed by one
- byte. This byte is repeated (257 - [count]) times. So if
- [count] is 129, the next byte is treated as though it were
- repeated 128 times; if [count] is 255, it is treated as
- though it were repeated twice.
-
- - ESC/P2 command: `ESC i COLOR1 COMPRESS1 BITS1 BYTES2 LINES2 DATA...'
- Print data in the newer printers (that support variable dot size),
- and Stylus Pro models.
-
- COLOR is the color:
-
- `0'
- black
-
- `1'
- magenta
-
- `2'
- cyan
-
- `4'
- yellow
-
- `17'
- light magenta
-
- `18'
- light cyan
-
- COMPRESS signifies the compression mode:
-
- `0'
- no compression
-
- `1'
- TIFF compression (incorrectly documented as "run length
- encoded")
-
- `2'
- TIFF compression with a special command set.
-
- BITS is the number of bits per pixel.
-
- BYTES is the number of bytes wide for each row (ceiling(BITS *
- width_of_row, 8)). Note that this is different from the `ESC .'
- command above.
-
- LINES is the number of lines to be printed. This command is the
- only way to get variable dot size printing. In variable dot mode,
- the size of the dots increases as the value (`1', `2', or `3')
- increases.
-
- - ESC/P2 command: `ESC (D BC=4 BASE2 VERTICAL1 HORIZONTAL1'
- Set printer horizontal and vertical spacing. It only applies to
- variable dot size printers in softweave mode (and possibly other
- high end printers).
-
- BASE is the base unit for this command; it must be `14400'.
-
- VERTICAL is the distance in these units between printed rows; it
- should be (separation_in_nozzles * BASE / 720).
-
- HORIZONTAL is the horizontal separation between dots in a row.
- Depending upon the printer, this should be either (14400 / 720) or
- (14400 / 360). The Stylus Pro 9000 manual suggests that the
- settings should match the chosen resolution, but that is
- apparently not the case (or not always the case) on other printers.
-
- - ESC/P2 command: `ESC (R BC=8 00 R E M O T E 1'
- Enters "remote mode". This is a special, undocumented command set
- that is used to set up various printer options, such as paper feed
- tray, and perform utility functions such as head cleaning and
- alignment. It does not appear that anything here is actually
- required to make the printer print. Our best understanding of
- what is in a remote command sequence is described in a separate
- section below.
-
- - ESC/P2 command: `ESC 01 @EJL [sp] ID\r\n'
- Return the printer ID. This is considered a remote mode command,
- although the syntax is that of a conventional command. This
- returns the following information:
-
- @EJL ID\r
- MFG:EPSON;
- CMD:ESCPL2,BDC;
- MDL:[printer model];
- CLS:PRINTER;
- DES:EPSON [printer model];
- \f
-
- After all data has been sent, a form feed byte should be sent.
-
- All newer Epson printers (STC 440, STP 750) require the following
-command to be sent at least once to enable printing at all. This
-command specifically takes the printer out of the Epson packet mode
-communication protocol (whatever that is) and enables normal data
-transfer. Sending it multiple times is is not harmful, so it is
-normally sent at the beginning of each job:
-
- ESC 01@EJL[space]1284.4[newline]@EJL[space][space][space][space]
- [space][newline]ESC@
-
- The proper sequence of initialization commands is:
-
- magic command
- ESC remote mode if needed
- ESC (G
- ESC (U
- ESC (K (if appropriate)
- ESC (i
- ESC U (if needed)
- ESC (s (if appropriate)
- ESC (e
- ESC (C
- ESC (c
- ESC (S
- ESC (D (if needed)
- ESC (V (optional -- this can be accomplished with ESC (v)
-
- For printing, the proper sequence is:
-
- ESC (v
-
-and repeat for each color:
-
- ESC ($ or ESC (\ or ESC \
- ESC (r or ESC r (if needed--not used with `ESC i' and not needed if the color
- has not changed from the previous printed line)
- ESC . or ESC i ...data... [return] (0A hex)
-
- To terminate a page:
-
- [formfeed] (0C hex)
- ESC @
-
-
-File: gimpprint.info, Node: ESC/P2 Remote Mode Commands, Next: ESC/P2 Appropriate Remote Commands, Prev: ESC/P2 Standard Commands, Up: ESC/P2
-
-Remote Mode Commands
-====================
-
- The following description of remote commands comes out of an
-examination of the sequences used by the printer utilities bundled with
-the Windows drivers for the ESC740, and from other sources (some Epson
-manuals, experimentation, analysis of print files). It is largely
-speculative as these commands are not all documented in the Epson
-documentation we have access to. Generally, newer manuals provide more
-thorough documentation.
-
- Remote command mode is entered when the printer is sent the following
-sequence:
-
- ESC (R BC=8 00 R E M O T E 1
-
- Remote mode commands are then sent, and terminated with the following
-sequence:
-
- ESC 00 00 00
-
- All remote mode commands must be sent before the initial `ESC (G'
-command is sent.
-
- This introductory sequence is then followed by a sequence of
-commands. Each command is constructed as follows:
-
- * Two ASCII bytes indicating the function
-
- * A byte count (two bytes, little-endian) for the parameters
-
- * Binary parameters, if any
-
- This is a list of all remote commands we have seen:
-
- - ESC/P2 remote command: `NC BC=2 00 00'
- Print a nozzle check pattern
-
- - ESC/P2 remote command: `VI BC=2 00 00'
- on my 740, prints the following:
-
- W01286 I02382\r\n
-
- probably "version information"
-
- - ESC/P2 remote command: `* AI BC=3 00 00 00'
- Prints a "printer ID". On one 870, prints the following:
- 51-51-50-51-49-48\r\n
-
- The Windows driver has a text entry field where this number can be
- entered, but its purpose is unknown.
-
- - ESC/P2 remote command: `* LD BC=0'
- Load printer defaults from NVRAM, DIP switches, and/or ROM. This
- apparently does not load factory defaults per se, but any settings
- that are saved. This is commonly used right at the end of each
- print job after the `ESC @' printer reset command.
-
- - ESC/P2 remote command: `* CH BC=2 00 XX'
- Perform a head cleaning cycle. The heads to clean are determined
- by parameter XX:
-
- `00'
- clean all heads
-
- `01'
- clean black head
-
- `02'
- clean color heads
-
- While XX = `00' is probably supported by all printers, XX = `01'
- and `02' may well not be.
-
- - ESC/P2 remote command: `* DT BC=3 00 XX 00'
- Print an alignment pattern. There are three patterns, which are
- picked via the choice of XX. Pattern `0' is coarse, pattern `1'
- is medium, and pattern `2' is fine.
-
- - ESC/P2 remote command: `* DU BC=6 00 XX 00 09 00 YY'
- Print another alignment pattern. It isn't entirely clear what XX
- and YY are, but it appears that XX takes on the values `1' and `2'
- , and YY takes on the values `0' and 1. This may only work on the
- 580 and/or 480.
-
- - ESC/P2 remote command: `* DA BC=4 00 XX 00 YY'
- Set results for the first alignment pattern. XX is the pattern
- (`1'-`3'); YY is the best choice from the set (`1'-`7' or
- `1'-`15'). This does not save to NVRAM, so when the printer is
- powered off, the setting will be lost.
-
- - ESC/P2 remote command: `* DA BC=6 00 XX 00 YY 09 00'
- Set results for alternate alignment pattern. XX appears to be the
- pass, and YY appears to be the optimum pattern. This does not
- save to NVRAM, so when the printer is powered off, the setting
- will be lost.
-
- - ESC/P2 remote command: `* SV BC=0'
- Save the current settings to NVRAM.
-
- - ESC/P2 remote command: `* RS BC=1 01'
- Reset the printer.
-
- - ESC/P2 remote command: `* IQ BC=1 01'
- Get ink quantity. This requires direct access to the printer
- port. The return looks like
-
- IQ:KKCCMMYY
-
- or
-
- IQ:KKCCMMYYccmm
-
- (for 4-color and 6-color printers respectively), where each pair of
- digits are hexadecimal representations of percent.
-
- The following two commands have been observed on an STP 870.
-
- - ESC/P2 remote command: `* IR BC=2 00 XX'
- *Function unknown*. This command has been observed on an STP 870
- with XX=`03' at the start of a job and XX=`02' at the end of a job
- (where it is followed by an `LD' command). When in roll mode, the
- values change to XX=`01' at the start of a job and XX=`00' at the
- end of a job.
-
- - ESC/P2 remote command: `* FP BC=3 00 XX YY'
- XX=`00' and YY=`00' selects the printer's normal left margin
- (about 3mm). XX=`0xb0' and YY=`0xff' selects zero-margin mode,
- where the left-most print position is shifted to a point about
- 0.1" to the left of the left-hand edge of the paper, allowing
- printing up to (and off) the left-hand edge of the paper.
-
- The commands below are partially documented in the Stylus Pro 9000
-manual. Much of this information is interpreted; none is tested.
-
- - ESC/P2 remote command: `* SN BC=3 00 XX YY'
- Select Mechanism Sequence. XX controls which sub-operation is
- performed. XX=`00' selects the "Feed paper sequence setting". YY
- can take on the following values (on the STP 870, at any rate):
-
- `0'
- default
-
- `1'
- plain paper
-
- `2'
- postcards
-
- `3'
- film (photo quality glossy film, transparencies)
-
- `4'
- envelopes
-
- `5'
- plain paper (fast load)
-
- `6'
- back light film (although this has been observed with
- heavyweight matte paper)
-
- `7'
- matte paper (observed with 360 dpi inkjet paper, and photo
- quality inkjet paper)
-
- `8'
- photo paper
-
- Experimentation suggests that this setting changes details of how
- the printers' cut sheet feeder works, presumably to tune it for
- different types of paper.
-
- XX=`01' controls the platen gap setting; YY=`00' is the default,
- YY=`1' or `2' are higher settings.
-
- XX=`02' controls paper loading speed (YY=`0' is normal, `1' is
- fast, `2' is slow). It appears that `1' is used when printing on
- "plain paper", "360dpi ink jet paper" or "ink jet transparencies",
- and YY=`00' for all other paper type settings.
-
- XX=`07' controls duplex printing for printers with that capability
- (YY=0 is default, for non-duplex printing; `1' is front side of
- the paper, and 2 is back side).
-
- XX=`09' controls zero margin printing on the printers with the
- capability of printing zero-margin on all sides (Stylus Photo
- 780/790, 890, and 1280/1290). YY=`0' is the default; `1' enables
- zero margin printing.
-
- - ESC/P2 remote command: `* PP BC=3 00 XX YY'
- Set Paper Path. XX=`2' indicates manual feed, XX=`3' is for roll
- paper. YY selects "paper path number".
-
- - ESC/P2 remote command: `* AC BC=2 00 XX'
- Set Auto Cutting State. XX=`0' selects auto cutting off, XX=`1'
- selects auto cutting on, and XX=`2' indicates horizontal print
- page line on. It appears that with auto cutting on, roll paper is
- cut automatically at the point a formfeed character is sent. The
- formfeed character is normally used to eject a page; with this
- turned on, it also cuts the roll paper. Horizontal print page
- line on prints a narrow line of black dots at the position the
- paper should be cut manually.
-
- - ESC/P2 remote command: `* DR BC=4 00 xx DT2'
- Set Drying Time. XX=`00' sets the drying time "per scan" (per
- pass?); XX=`01' sets the drying time per page. DT indicates the
- drying time, which is in seconds if page mode is used and in
- milliseconds if scan mode is used. DT must not exceed 3600
- seconds in per-page mode and 10000 milliseconds in per-scan mode.
-
- - ESC/P2 remote command: `* IK BC=2 00 XX'
- Select Ink Type. XX=`00' selects dye ink. Pigment ink is
- apparently selected by XX=`01'. This probably does not apply to
- the consumer-grade printers.
-
- - ESC/P2 remote command: `* PZ BC=2 00 xx'
- Set Pause After Printing. XX=`00' selects no pause after
- printing; XX=`01' selects pause after printing. If turned on, the
- printer is paused after the page is ejected (by the FF byte). If
- cutting is turned on, the printer is paused *after* the cutting or
- printing of the horizontal cut line.
-
- - ESC/P2 remote command: `* EX BC=6 00 00 00 00 0x14 XX'
- Set Vertical Print Page Line Mode. XX=`00' is off, XX=`01' is on.
- If turned on, this prints vertical trim lines at the left and
- right margins.
-
- - ESC/P2 remote command: `* EX BC=6 00 00 00 00 0x05 XX'
- Set Roll Paper Mode. If XX is `0', roll paper mode is off; if XX
- is `1', roll paper mode is on.
-
- - ESC/P2 remote command: `* EX BC=3 00 XX YY'
- Appears to be a synonym for the `SN' command described above.
-
- - ESC/P2 remote command: `* PH BC=2 00 XX'
- Select Paper Thickness. Set the paper thickness XX in .1 mm
- units. This must not exceed 0x10 (1.6 mm). If the thickness is
- set "more than" .6 mm (which probably means "at least" .6 mm,
- since the other case reads "less than 0.5 mm"), the platen gap is
- set high irrespective of the `SN' command.
-
- - ESC/P2 remote command: `* PM BC=2 00 00'
- *Function unknown*. Used on the STC 3000 at least when using roll
- feed, and on the STP 870 in all print files analysed to date.
-
- - ESC/P2 remote command: `* ST BC=2 00 XX'
- Epson's STP 750/1200 programming guide refers to the `ST' command
- as "Set printer state reply". If XX is `0' or `2', the printer
- will not send status replies. If XX is `1' or `3', the printer
- will send status replies. The status replies consist of state,
- error codes, ink leve, firmware version, and warning status.
-
- The actual reply is documented as
-
- @BDC ST\r
- ST: xx;
- [ER: yy;]
- IQ: n1n2n3n4;
- [WR: w1,w2...;]
- RV: zz;
- AI:CW:02kkccmmyy, MI:mm
- [TC:tttt;]
- INK:...;
- \f
-
- (`\r' is carriage return; `\n' is newline; `\f' is formfeed.)
-
- `ST' is the printer status:
-
- `00'
- Error
-
- `01'
- Self-test
-
- `02'
- Busy
-
- `03'
- Waiting while printing
-
- `04'
- Idle
-
- `07'
- Cleaning/filling ink heads
-
- `08'
- Not yet initialized/filling heads
-
- `ER', if provided, is the error status:
-
- `00'
- Fatal error
-
- `01'
- Interface not selected
-
- `04'
- Paper jam
-
- `05'
- Out of ink
-
- `06'
- Paper out
-
- `IQ' is the amount of ink left, as a (decimal!) percentage
- expressed in hexadecimal. The values are black, cyan, magenta, and
- yellow (presumably 6-color printers supply light cyan and light
- magenta inks as additional parameters).
-
- `WR', if provided, is the warning status:
-
- `10'
- Black ink low
-
- `11'
- Cyan
-
- `12'
- Magenta
-
- `13'
- Yellow
-
- `14'
- Light cyan (presumably)
-
- `15'
- Light magenta (presumably)
-
- `RV' is the firmware revision (one byte ASCII).
-
- `AI' is actuator information. These are two byte ASCII codes that
- indicate "ink weight rank ID" of KCMY, respectively.
-
- `TC', if provided, is the total time of cleaning or ink filling
- (?).
-
- `INK:' and `MI' are *not documented*.
-
- - ESC/P2 remote command: `* SM BC=2 00 XX'
- Set Status Reply Rate. XX is the repeat interval in seconds. If
- XX is `0', the status is returned only when the printer's state
- changes.
-
- - ESC/P2 remote command: `* ST BC=1 01'
- Reply Printer Status. The reply is formatted as
-
- @BDC PS\r\nST:XX;\f
-
- (`\r' is carriage return; `\n' is newline; `\f' is formfeed). If
- XX (the reply value) is `0' or `2', automatic status update is
- disabled; if `1' or `3', it is enabled.
-
- - ESC/P2 remote command: `* SM BC=1 01'
- Reply Printer Status Rate. The reply is formatted as
-
- @BDC PS\r\nST:xx;\f
-
- (`\r' is carriage return; `\n' is newline; `\f' is formfeed). See
- `SM BC=2' above for the meaning of the return value.
-
- - ESC/P2 remote command: `* ?? BC=XX Y[1] ... Y[xx]'
- Echo Parameters (perhaps better described as Echo Commands). The
- command string is executed (it would appear from the
- documentation), and the string sent is returned using a sequence
- similar to that described in the `ST BC=1' and `SM BC=1' commands.
- Note that in this case the number of bytes is variable!
-
- - ESC/P2 remote command: `* SM BC=2 00 02'
- *Function unknown*. Used on the STC 3000 at least when using roll
- feed.
-
-
-File: gimpprint.info, Node: ESC/P2 Appropriate Remote Commands, Prev: ESC/P2 Remote Mode Commands, Up: ESC/P2
-
-Appropriate Remote Commands
-===========================
-
- All of the remote commands described above are wrapped up with the
-usual boilerplate. The files always start with `00 00 00' and the
-"magic" command described above, then two `ESC @'s to reset the
-printer. The remote command sequences come next; if they print anything
-that is usually followed by a `FF' (0C hex) character to feed the page,
-then the file ends with another two `ESC @'s to get back to the ground
-state.
-
- An alignment sequence goes like this:
-
- 1. Host uses `DT' to print an alignment sheet
-
- 2. User eyeballs the sheet to see which is the best aligned pattern.
-
- 3. Host sends a `DA' command indicating which pattern the user chose
-
- 4. If the user said "realign", meaning he isn't done yet, go to step 1
-
- 5. We are done: host sends a `SV' command and exits
-
- The sequence used (by the STC 3000, at least) to print from the roll
-feed is (with byte count omitted)
-
- PM 00 00
- SN 00 00 00
- EX 00 00 00 00 05 01
- ST 00 01
- SM 00 02
-
- The sequence used by the STP 870 to print on plain paper is
-
- PM 00 00
- IR 00 03
- SN 00 00 01
- SN 00 01 00
- SN 00 02 01
- EX 00 00 00 00 05 00
- FP 00 00 00
-
-and the job finishes with
-
- IR 00 02
- LD
-
- For different paper type settings on the STP 870, the arguments to
-`SN' vary. The arguments to the first and third `SN' commands are as
-outlined in the description of the `SN' command above; the arguments to
-the second ("platen gap") are `00 01 01' for thick papers ("matte
-paper--heavyweight", "photo paper" and "premium glossy photo paper")
-and `00 01 00' for all others.
-
- For roll-mode printing, the STP 870's sequence changes as follows.
-`IR''s arguments become `00 01' in the header, and `00 00' after the
-job, and `EX''s last argument changes from `00' to `01'.
-
- For zero-margin printing on the STP 870, the arguments to `FP' become
-`00 0xb0 0xff'. This moves the origin about 5.5mm to the left, to a
-point one tenth of an inch to the left of the left-hand edge of the
-paper, allowing printing right up to (and beyond) the edge of the
-paper. Some printers (at least the STP 870) include white absorbent
-pads at the left margin position and other positions (89mm and 100mm on
-the STP 870) to soak up ink which misses the edge of the paper.
-Printing off the edge of paper of a width not aligned with a pad could
-result in making a mess of the inside of the printer and ink getting on
-the reverse of the paper.
-
-
-File: gimpprint.info, Node: New Printer, Prev: ESC/P2, Up: Appendices
-
-Adding a new printer
-********************
-
- This appendix covers adding a new ESCP/2, PCL, or Canon printer.
-Writing a new driver module is not covered.
-
- The three steps to adding a printer are:
-
- 1. Add an entry to `printers.xml'
-
- 2. Add the appropriate code and data to the appropriate driver module
-
- 3. Tune the printer
-
- Printer information is stored in two places: in `printers.xml'
-(which contains the list of printer models available to the the
-upper-level application), and in the appropriate driver file
-(`print-escp2.c', `print-pcl.c', or `print-canon.c').
-
-* Menu:
-
-* printers.xml:: File format description.
-* Driver file:: Data structures to use.
-* Epson inkjet printers:: Adding an Epson printer.
-* Tuning Epson printers:: Tweaking settings.
-* Canon inkjet printers:: Adding a Canon printer.
-
-
-File: gimpprint.info, Node: printers.xml, Next: Driver file, Up: New Printer
-
-`printers.xml'
-==============
-
- `printers.xml' is an XML-like file (there's no formal DTD) that
-contains very simple printer definitions. A typical definition follows:
-
- <printer name="EPSON Stylus Color 1500" driver="escp2-1500">
- <color>
- <model value=2>
- <gamma value=0.597>
- <density value=1.0>
- <language value=escp2>
- </printer>
-
- There are other tags that may be present. The only ones that are
-mandatory are `<printer>', `<color>', `<model>', and `<language>'. The
-other optional parameters (gamma and density in this case) can be used
-to adjust control settings. This is probably not the right place for
-them; the printer drivers themselves should contain this information.
-There's probably no good reason for anything but gamma and density to
-be in here. Gamma refers to the printer's gamma factor; density is the
-desired base ink density for the printer. The Epson driver contains
-the density information for each printer at each resolution internally.
-An even better driver would adjust density and possibly even gamma for
-paper type. All the more reason not to have that information here.
-
- If you really are curious about what tags are permitted, please see
-`printdefl.l'. I deliberately want to make this obscure.
-
- Anyway, here's the definition of the tags that do matter:
-
- - `printers.xml' tag: `<printer name="LONGNAME" driver="DRIVERNAME">'
- This starts the definition of a printer. The LONGNAME should be
- something human readable; the DRIVERNAME should consist of
- alphanumerics and hyphens, and be fairly short. The LONGNAME is
- what will appear in the GUI listing of printers; the DRIVERNAME is
- what is actually used to key into the list of printers. It is
- legal to have multiple printers with the same driver name.
-
- - `printers.xml' tag: `<color>'
- - `printers.xml' tag: `<nocolor>'
- Indicates that this printer is capable of color, or is not capable
- of color respectively
-
- - `printers.xml' tag: `<model value=INT>'
- This defines a model number. This is passed into the driver,
- which may do whatever it cares to with it--index into a table,
- compute on, or whatever. This need not be unique.
-
- - `printers.xml' tag: `<language value=TYPE>'
- This defines what driver module this printer uses. TYPE should be
- `escp2', `pcl', `canon', or `ps'.
-
- - `printers.xml' tag: `</printer>'
- This, of course, closes off a printer definition.
-
- This is handled very ad-hoc. It's ugly. But it's reasonably easy to
-extend, and it's buzzword-compliant.
-
-
-File: gimpprint.info, Node: Driver file, Next: Epson inkjet printers, Prev: printers.xml, Up: New Printer
-
-The driver file
-===============
-
- Adding a new printer to a driver module (`print-escp2.c',
-`print-pcl.c', or `print-canon.c'--`print-ps.c' is really ad hoc)
-requires a bit more planning. Each driver is somewhat different, but
-they all generally have a vector of printer definitions, and the code
-does some special casing based on particular printer capabilities. The
-PCL and Canon drivers are quite similar; the Canon driver was actually
-cribbed from the PCL driver, but it then returned the favor.
-
- The Epson driver is a little bit different. Canon and PCL printers
-have some amount of intelligence; a lot of them have specific ink
-options, and know about specific paper sizes and types, and must be
-told the right thing. Epson printers have somewhat less intelligence
-and will more or less do exactly what the host tells it to do in a
-fairly regular fashion. I actually prefer this; it isn't materially
-more work for the host to compute things like exact paper sizes and
-such, it allows a lot more tweaking, and it may be why Epson has been
-more open with information - the communication protocol doesn't really
-contain very much IP, so they have less reason to keep it secret.
-
- Someone else will have to fill in the sections about PCL and Canon
-printers.
-
diff --git a/doc/gimpprint.info-5 b/doc/gimpprint.info-5
deleted file mode 100644
index 672a377..0000000
--- a/doc/gimpprint.info-5
+++ /dev/null
@@ -1,872 +0,0 @@
-This is gimpprint.info, produced by makeinfo version 4.0 from
-gimpprint.texi.
-
-INFO-DIR-SECTION Libraries
-START-INFO-DIR-ENTRY
-* GIMP-Print: (gimpprint). print plugin for the GIMP, and printing library
-END-INFO-DIR-ENTRY
-
- This file documents the gimpprint library and associated programs
-used for high quality printing.
-
- Copyright (C) 2001 Michael Sweet (<mike@easysw.com>) and Robert
-Krawitz (<rlk@alum.mit.edu>)
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-
-File: gimpprint.info, Node: Epson inkjet printers, Next: Tuning Epson printers, Prev: Driver file, Up: New Printer
-
-Epson inkjet printers
-=====================
-
- The `model_capabilities' vector in `print-escp2.c' contains one
-entry for each defined printer model. The `model' parameter in
-`printers.xml' is an index into this table.
-
- In general, the new printers have fewer eccentricities than the older
-printers. That doesn't mean they're simpler, just that they're more
-consistent.
-
- An `escp2_printer_t' is a C struct defined as follows:
-
- - Data type: escp2_printer_t
- typedef struct escp2_printer
- {
- model_cap_t flags; /* Bitmask of flags, see below */
- /*****************************************************************************/
- int nozzles; /* Number of nozzles per color */
- int min_nozzles; /* Minimum number of nozzles per color */
- int nozzle_separation; /* Separation between rows, in 1/360" */
- int black_nozzles; /* Number of black nozzles (may be extra) */
- int min_black_nozzles; /* # of black nozzles (may be extra) */
- int black_nozzle_separation; /* Separation between rows */
- int fast_nozzles; /* Number of fast nozzles */
- int min_fast_nozzles; /* # of fast nozzles (may be extra) */
- int fast_nozzle_separation; /* Separation between rows */
- /*****************************************************************************/
- int xres; /* Normal distance between dots in */
- /* softweave mode (inverse inches) */
- int enhanced_xres; /* Distance between dots in highest */
- /* quality modes */
- int base_separation; /* Basic unit of row separation */
- int base_resolution; /* Base hardware spacing (above this */
- /* always requires multiple passes) */
- int enhanced_resolution;/* Above this we use the */
- /* enhanced_xres rather than xres */
- int resolution_scale; /* Scaling factor for ESC(D command */
- int max_black_resolution; /* Above this resolution, we */
- /* must use color parameters */
- /* rather than (faster) black */
- /* only parameters*/
- int max_hres;
- int max_vres;
- int min_hres;
- int min_vres;
- /*****************************************************************************/
- int max_paper_width; /* Maximum paper width, in points */
- int max_paper_height; /* Maximum paper height, in points */
- int min_paper_width; /* Maximum paper width, in points */
- int min_paper_height; /* Maximum paper height, in points */
- /* Printer interleave: */
- int m_left_margin; /* Left margin, points */
- int m_right_margin; /* Right margin, points */
- int m_top_margin; /* Absolute top margin, points */
- int m_bottom_margin; /* Absolute bottom margin, points */
- /* ROLL FEED: */
- /* Softweave: */
- int roll_left_margin; /* Left margin, points */
- int roll_right_margin; /* Right margin, points */
- int roll_top_margin; /* Absolute top margin, points */
- int roll_bottom_margin; /* Absolute bottom margin, points */
- /* Printer interleave: */
- int m_roll_left_margin; /* Left margin, points */
- int m_roll_right_margin; /* Right margin, points */
- int m_roll_top_margin; /* Absolute top margin, points */
- int m_roll_bottom_margin; /* Absolute bottom margin, points */
- /*****************************************************************************/
- int extra_feed; /* Extra distance the paper can be spaced */
- /* beyond the bottom margin, in 1/360". */
- /* (maximum useful value is */
- /* nozzles * nozzle_separation) */
- int separation_rows; /* Some printers require funky spacing */
- /* arguments in interleave mode. */
- int pseudo_separation_rows;/* Some printers require funky */
- /* spacing arguments in softweave mode */
-
- int zero_margin_offset; /* Offset to use to achieve */
- /* zero-margin printing */
- int initial_vertical_offset;
- int black_initial_vertical_offset;
- int extra_720dpi_separation;
-
- /*****************************************************************************/
- const int *dot_sizes; /* Vector of dot sizes for resolutions */
- const double *densities; /* List of densities for each printer */
- const escp2_variable_inklist_t *inks; /* Choices of inks for this printer */
- /*****************************************************************************/
- const paperlist_t *paperlist;
- const res_t *reslist;
- const inklist_t *inklist;
- /*****************************************************************************/
- const int *bits;
- const int *base_resolutions;
- const input_slot_list_t *input_slots;
- /*****************************************************************************/
- const init_sequence_t *preinit_sequence;
- const init_sequence_t *postinit_remote_sequence;
- } escp2_printer_t;
-
- The printer definition block is divided into 8 sections. The first
-section is a set of miscellaneous printer options. These are described
-in the code, and will not be discussed further here.
-
- The second section describes the number of nozzles and the separation
-between nozzles in base units. The base unit is 1/360" for all
-currently supported printers, but future printers may support a smaller
-base unit.
-
- Many printers have more black nozzles than nozzles of other colors,
-and when used in black and white mode, it's possible to use these extra
-nozzles, which speeds up printing. As an example, a printer that is
-specified to have 48 cyan, magenta, and yellow nozzles, and 144 black
-nozzles, can use all 144 black nozzles when printing black ink only.
-When printing in color, only 48 nozzles of each color (including black)
-can be used.
-
- Most printers can print using either the number of nozzles available
-or any smaller number. Some printers require that all of the nozzles
-be used. Those printers will set `min_nozzles' and/or
-`min_black_nozzles' to the same value as `nozzles' and/or
-`black_nozzles'.
-
- The third section defines basic units of measure for the printer,
-including the standard separation between dots, the base nozzle
-separation, and the minimum and maximum printing resolutions the
-printer supports. Most of these are fairly self-explanatory, but some
-are not obvious.
-
- Most Epson printers, other than the high-end Stylus Pro models,
-cannot print dots spaced more closely than 1/360" or 1/720" apart (this
-is the setting for `xres'. This is true even for printers that support
-resolutions of 1440 or 2880 DPI. In these cases, the data must be
-printed in 2, 4, or 8 passes. While the printer can position the head
-to a resolution of 1/1440" or 1/2880", the head cannot deposit ink that
-frequently.
-
- Some printers can only print in their very best quality (using the
-smallest dots available) printing at a lower resolution. For example,
-the Stylus Photo EX can normally print with a dot spacing of 1/720".
-The smallest dot size cannot be printed with a dot spacing of less than
-1/360", however. In this case, we use `enhanced_xres' to specify the
-resolution to be used in this enhanced mode, and `enhanced_resolution'
-to specify the printing resolution above which we use the
-`enhanced_xres'.
-
- The `resolution_scale' command is used to specify scaling factors
-for the dot separation on newer printers. It should always be 14400
-with current printers.
-
- The fourth section specifies the minimum and maximum paper sizes, and
-the margins. Some printers allow use of narrower margins when
-softweave is used; both sets of margins are specified.
-
- There is a convenient `INCH' macro defined to make specification of
-the `max_paper_width' and `max_paper_height' more legible. It
-multiplies 72 by the provided expression to get the appropriate number
-of points. For example, to specify 8.5", `INCH(17/2)' expands to `(72
-* 17/2)', which is evaluated left to right, and hence generates the
-correct value.
-
- The fifth section specifies some miscellaneous values that are
-required for certain printers. For most printers, the correct values
-are 1 for `separation_rows' and 0 for the others. Very, very few
-printers require (or allow) `separation_rows' to be anything but 1 and
-`pseudo_separation_rows' other than zero. The Stylus Color 1520,
-Stylus Color 800, Stylus Color 850, and (strangely enough to my mind,
-since it's a new printer) Stylus Color 660 seem to be the only
-exceptions.
-
- The `zero_margin_offset' is used to specify an additional negative
-horizontal offset required to print to the edges of the paper on newer
-Stylus Photo printers. These must be determined empirically; good
-starting values are 100 for 1440 DPI and 50 for 2880 DPI printers. The
-goal is to print to the edge of the page, but not over it.
-
- The sixth section specifies head offsets for printers that do not
-have the color jets aligned. Certain printers, such as the Stylus Color
-480, have an unusual head arrangement whereby instead of all of the
-colors being aligned vertically, the nozzles are configured in groups.
-These printers are easy to determine; if the normal head offset of zero
-for each color is used, the printing will be vertically out of
-alignment. Most of these printers require specification of a negative
-offset for printing to the top edge of the paper; typically these
-printers do not require such an offset when printing black only.
-
- The seventh section specifies the most difficult values to tune, the
-dot sizes, printing densities, and ink values (for variable dot size
-enabled printers). These will be described in detail below.
-
- The last section specifies luminosity, hue, and saturation adjustment
-vectors for the printer, and the paper definitions. These are used to
-adjust the color in Photograph and Solid Colors output modes. These are
-each vectors of 48 (actually 49, as the first value must be duplicated)
-doubles that remap the luminosity, hue, and saturation respectively.
-The hue is calculated, and the value used to interpolate between the two
-closest points in each vector.
-
- The paper definitions is a set of paper definitions. The paper
-definition contains the name of the paper type, special settings that
-are required for printers to process the paper correctly, and a set of
-adjustment values. These are not currently discussed here.
-
- The lists of dot sizes and densities contain values for 13 printing
-modes: 120/180 DPI using printer weaving (single row; referred to as
-"interleave") and "soft" weaving (the driver determines the exact
-pattern of dot layout), 360 DPI interleave and softweave, 720x360 DPI
-interleave and softweave, 720 DPI interleave and softweave, 1440x720
-interleave and softweave, 2880x720 interleave and softweave, and
-2880x1440 softweave only.
-
- For the dot sizes, the value for each element in the vector selects
-the dot size to be used when printing at this (or similar) resolution.
-The dot sizes are determined by consulting the programming manual for
-the printer and experimenting as described below. Current Epson
-printers always use dot sizes less than `16', or `0x10', to indicate
-single dot size (each dot is represented by 1 bit, and it's either
-printed or not), and dot sizes of `16' or greater to indicate variable
-dot size (each dot is represented by 2 bits, and it can either be not
-printed or take on 2 or 3 values, representing the relative size of the
-printed dot). Variable dot sizes permit the use of very small dots
-(which would be too small to fill the page and produce solid black) in
-light areas, while allowing the page to be filled with larger dots in
-darker areas.
-
- Even single dot size printers can usually produce dots of different
-sizes; it's just illegal to actually try to switch dot size during a
-page. These dots are also much bigger than those used in true variable
-dot size printing.
-
- A dot size of `-1' indicates that this resolution is illegal for the
-printer in question. Any resolutions that would use this dot size will
-not be presented to the user. A dot size of `-2' indicates that this
-resolution is legal, but that the driver is not to attempt to set any
-dot size. Some very old printers do not support the command to set the
-dot size.
-
- Most printers support a dot size of `0' as a mode-specific default,
-but it's often a bigger dot than necessary. Printers usually also
-support some dot sizes between `1' and `3'. Usually `1' is the right
-dot size for 720 and 1440 dpi printing, and `3' works best at 360 dpi.
-
- Variable dot size printers usually support 2 or 3 sets of variable
-dot sizes. Older printers based on a 6 picolitre drop (the 480, 720,
-740, 750, 900, and 1200) support two: mode 16 (0x10 in hexadecimal) for
-normal variable dots at 1440 or 720 dpi, and mode 17 (0x10) for special
-larger dots at 360 dpi. Newer printers based on 4 picolitre drops
-normally support three sizes: `0x10' for 4 pl base drops, `0x11' for 6
-pl base drops, and `0x12' for special large drops. On these printers,
-`0x10' usually works best at 1440x720 and `0x11' works best at 720x720.
-Unfortunately, `0x10' doesn't seem to generate quite enough density at
-720x720, because if it did the output would be very smooth. Perhaps
-it's possible to tweak things....
-
- The list of densities is a list of base density values for all of the
-above listed modes. "Density" refers to the amount of ink deposited
-when a solid color (or solid black) is printed. So if the density is
-`.5', solid black actually prints only half the possible dots. "Base
-density" refers to the fact that the density value can be scaled in the
-GUI or on the Ghostscript command line. The density value specified
-(which is not made visible to the user) is multiplied by the base
-density to obtain the effective density value. All other things (such
-as ink drop size) remaining the same, doubling the resolution requires
-halving the base density. The base density in the density vector may
-exceed `1', as many paper types require lower density than the base
-driver. The driver ensures that the actual density never exceeds 1.
-
- Tuning the density should be done on high quality paper (usually
-glossy photo paper). The goal is to find the lowest density value that
-results in solid black (no visible gaps under a fairly high power
-magnifying glass or loupe). If an appropriate density value is found
-for 720 DPI, it could be divided by 2 for 1440x720, by 4 for 2880x720,
-and by 8 for 2880x1440.
-
- However, for printers that offer a choice of dot size, this may not
-be the best strategy. The best choice for dot size is the smallest dot
-size that allows choosing a density value not greater than 1 that gives
-full coverage. This dot size may be different for different
-resolutions. Tuning variable dot size printers is more complicated;
-the process is described below.
-
- The last member is a pointer to a structure containing a list of ink
-values for variable dot size (or 6 color) inks. We model variable dot
-size inks as producing a certain "value" of ink for each available dot
-size, where the largest dot size has a value of 1. 6-color inks are
-handled similarly; the light cyan and light magenta inks are treated as
-a fractional ink value. The combination of variable dot size and 6
-color inks, of course, just creates that many more different ink
-choices.
-
- This structure is actually rather complicated; it contains entries
-for each combination of physical printer resolution (180, 360, 720, and
-1440 dpi), ink colors (4, 6, and 7), and single and variable dot sizes
-(since some printer modes can't handle variable dot size inks). Since
-there's so much data, it's actually a somewhat deeply nested structure:
-
- An `escp2_printer_t' contains a pointer (essentially, a reference
-rather than a copy) to an `escp2_variable_inklist_t'.
-
- An `escp2_variable_inklist_t' contains pointers to
-`escp2_variable_inkset_t' structures. There is one such pointer for
-each combination of resolution, dot type, and ink colors as described
-above. Yes, this is rather inflexible.
-
- An `escp2_variable_inkset_t' contains pointers to
-`escp2_variable_ink_t' structures. There is one such pointer for each
-of the four colors (C, M, Y, and K).
-
- An `escp2_variable_ink_t' contains a pointer to the actual list of
-ink values (`simple_dither_range_t'), the number of ink values, and a
-density value to be used for computing the transitions. This density
-value is actually a scaling value; it is multiplied by the effective
-density to compute the density to be used for computing the transitions.
-Normally, this value is `1', but in some cases it may be possible to
-get smoother results with a different value (in particular, the single
-dot size 6-color inks work best with the effective density scaled to
-`.75' for this purpose). A lower density lowers the transition points,
-which results in more ink being deposited.
-
- A `simple_dither_range_t' is a structure containing four values:
-
- 1. The value of the particular ink
-
- 2. The bit pattern used to represent the ink
-
- 3. Whether the ink is light (0) or dark (1), for inks with light and
- dark variants
-
- 4. The relative amount of ink actually deposited by this dot (not
- currently used for much; it can be used for ink reduction
- purposes, to reduce the amount of ink deposited on the paper).
-
- These things are interesting as arrays. From an array of
-`simple_dither_range_t''s, the dither code computes transition values
-that it looks up at run time to decide what ink to print, as well as
-whether to print at all.
-
- *Really* confused now? Yup. You'll probably find it easier to
-simply read the code.
-
-
-File: gimpprint.info, Node: Tuning Epson printers, Next: Canon inkjet printers, Prev: Epson inkjet printers, Up: New Printer
-
-Tuning the printer
-==================
-
- Now, how do you use all this to tune a printer? There are a number
-of ways to do it; this one is my personal favorite.
-
- There's a file named `cyan-sweep.tif'. This consists of a thin bar
-of cyan sweeping from white to almost pure cyan, and from pure cyan to
-black. The first thing to do is to pick the appropriate
-`simple_dither_range_t' (or create a whole new
-`escp2_variable_inklist_t') and comment out all but the darkest ink
-(this means you'll be using the largest dots of dark ink). At 8.5"
-width (the width of a letter-size piece of paper), the bar will be 1/8"
-high. Printing it on wider or narrower paper will change the height
-accordingly. Print it width-wise across a piece of photo quality paper
-in line art mode using ordered or adaptive hybrid dither. Do not use
-photographic mode; the colors in photographic mode vary non-linearly
-depending upon the presence of the three color components, while in line
-art mode the colors are much purer. Make sure that all the color
-adjustments are set to defaults (1.0). Use the highest quality version
-of the print mode you're testing to reduce banding and other artifacts.
-This is much easier to do with the Gimp than with Ghostscript.
-
- At this stage, you want to look for four things:
-
- 1. The black near the center of the line is solid, but not more so
- than that.
-
- 2. The cyan immediately to the left of the black is _almost_ solid.
-
- 3. The dark cyan at the far right of the page is solid, but not more
- so. You can try tuning the density so that it isn't quite solid,
- then nudging up the density until it is.
-
- 4. Both sweeps sweep smoothly from light to dark. In particular, the
- dark half of the bar shouldn't visibly change color; it should go
- smoothly from cyan to black.
-
- Repeat this stage until you have everything just right. Use the
-positioning entry boxes in the dialog to position each bar exactly 1/8"
-further down the page. Adjacent bars will be touching.
-
- The next step is to uncomment out the second darkest dot size. If
-you're using variable dots, use the second largest dot size of the dark
-ink rather than the largest dot size of the light ink. This will give
-you two inks.
-
- When you recompile the plugin, you simply need to copy the new
-executable into the correct place. You do not need to exit and restart
-the Gimp.
-
- Print another bar adjacent to the first one. Your goal is to match
-the bar using a single dot size as closely as possible. You'll find
-that the dark region of the bar shouldn't change to any great degree,
-but the light half probably will. If the lighter part of the light
-half is too dark, you need to increase the value of the smaller dot; if
-it's too light, you need to decrease the value. The reasoning is that
-if the value is too low, the ink isn't being given enough credit for
-its contribution to the darkness of the ink, and vice versa. Repeat
-until you have a good match. Make sure you let the ink dry fully,
-which will take a few minutes. Wet ink will look too dark. Don't look
-at the paper too closely; hold it at a distance. The extra graininess
-of the largest dot size will probably make it look lighter than it
-should; if you hold it far enough away so that you can't see the dots,
-you'll get a more accurate picture of what's going on.
-
- After you have what looks like a good match, print another bar using
-only the largest dot size (or dark ink, for single dot size 6-color
-printers). You want to ensure that the bars touching each other look
-identical, or as close as possible to it; your eye won't give you a
-good reading if the bars are separated from each other. You'll
-probably have to repeat the procedure.
-
- The next step is to comment out all but the largest and third-largest
-dot size, and repeat the procedure. When they match, use all three dot
-sizes of dark ink. Again, the goal is to match the single dot size.
-
- You'll probably find the match is imperfect. Now you have to figure
-out what region isn't right, which takes some experimentation. Even
-small adjustments can make a noticeable difference in what you see. At
-this stage, it's very important to hold the page far enough from your
-eye; when you use all three dot sizes, the texture will be much more
-even, which sometimes makes it look darker and sometimes lighter.
-
- After this is calibrated, it's time to calibrate the light ink
-against the dark ink. To do this, comment out all but the large dot
-version of the two inks, and repeat the procedure. This is trickier,
-because the hues of the inks might not be quite identical. Look at the
-dark half of the bar as well as the light half to see that the hue
-really doesn't change as you sweep from cyan to black. Sometimes it's
-easier to judge that way. You may find that it looks blotchy, in which
-case you should switch from ordered dither to adaptive hybrid.
-
- After you have the light and dark inks calibrated against each other,
-it's time to add everything back in. Usually you don't want to use the
-largest dot size of light ink. These dots will be much larger than the
-small dots of dark ink, but they'll still be lighter. This will cause
-problems when printing mixed colors, since you'll be depositing more
-ink on lighter regions of the page, and you'll probably get strange
-color casts that you can't get rid of in neutral tones. I normally use
-only the smallest one or two dot sizes of light ink.
-
- After you've tweaked everything, print the color bar with saturation
-set to zero. This will print neutral tones using color inks. Your
-goal here is to look for neutral tonality. If you're using a 6-color
-printer and get a yellow cast, it means that the values for your light
-inks are too high (remember, that means they're getting too much
-credit, so you're not depositing enough cyan and magenta ink, and the
-yellow dominates). If you get a bluish or bluish-purple cast, your
-light inks are too low (you're not giving them enough credit, so too
-much cyan and magenta is deposited, which overwhelms the yellow). Make
-sure you do this on very white, very high grade inkjet paper that's
-designed for 1440x720 dpi or higher; otherwise the ink will spread on
-contact and you'll get values that aren't really true for high grade
-paper. You can, of course, calibrate for low grade paper if that's
-what you're going to use, but that shouldn't be put into the
-distribution.
-
- You can also fully desaturate this bar inside the Gimp and print it
-as monochrome (don't print the cyan as monochrome; the driver does funny
-things with luminance), for comparison. You'll find it very hard to
-get rid of all color casts.
-
- There are other ways of tuning printers, but this one works pretty
-well for me.
-
-
-File: gimpprint.info, Node: Canon inkjet printers, Prev: Tuning Epson printers, Up: New Printer
-
-Canon inkjet printers
-=====================
-
- Basically, a new Canon printer can be added to `print-canon.c' in a
-similar way as described above for the epson inkjet printers. The main
-differences are noted here:
-
- In general, Canon printers have more "built-in intelligence" than
-Epson printers which results in the fact that the driver only has to
-tell the printing conditions like resolutions, dot sizes, etc. to the
-printer and afterwards transfer the raster data line by line for each
-color used.
-
- `canon_cap_t' is a C struct defined as follows:
-
- - Data type: canon_cap_t
- typedef struct canon_caps {
- int model; /* model number as used in printers.xml */
- int max_width; /* maximum printable paper size */
- int max_height;
- int base_res; /* base resolution - shall be 150 or 180 */
- int max_xdpi; /* maximum horizontal resolution */
- int max_ydpi; /* maximum vertical resolution */
- int max_quality;
- int border_left; /* left margin, points */
- int border_right; /* right margin, points */
- int border_top; /* absolute top margin, points */
- int border_bottom; /* absolute bottom margin, points */
- int inks; /* installable cartridges (CANON_INK_*) */
- int slots; /* available paperslots */
- int features; /* special bjl settings */
- canon_dot_size_t dot_sizes; /* Vector of dot sizes for resolutions */
- canon_densities_t densities; /* List of densities for each printer */
- canon_variable_inklist_t *inxs; /* Choices of inks for this printer */
- } canon_cap_t;
-
- Since there are Canon printers which print in resolutions of 2^n*150
-dpi (e.g. 300, 600, 1200) and others which support resolutions of
-2^n*180 dpi (e.g. 360, 720, 1440), there's a base resolution (150 or
-180, respectively) given in the `canon_cap_t'. The structs
-`canon_dot_size_t', `canon_densities_t' and `canon_variable_inklist_t'
-refer to resolutions being multiples of the base resolution.
-
- For the Canon driver, the struct `canon_dot_size_t' holds values for
-a model's capabilities at a given resolution: `-1' if the resolution is
-not supported. `0' if it can be used and `1' if the resolution can be
-used for variable dot size printing.
-
- In `canon_densities_t' the base densities for each resolution can be
-specified like for an epson printer, the same holds true for
-`canon_variable_inklist_t'. See the descriptions above to learn about
-how to adjust your model's output to yield nice results.
-
- There's a slight difference though in the way the Canon driver and
-the escp2 driver define their variable inklists: In the Canon driver,
-you need to define an inklist like this:
-
- static const canon_variable_inklist_t canon_ink_myinks[] =
- {
- {
- 1,4, /* 1bit/pixel, 4 colors */
- &ci_CMYK_1, &ci_CMYK_1, &ci_CMYK_1,
- &ci_CMYK_1, &ci_CMYK_1, &ci_CMYK_1,
- },
- {
- 3,4, /* 3bit/pixel, 4 colors */
- &ci_CMYK_3, &ci_CMYK_3, &ci_CMYK_3,
- &ci_CMYK_3, &ci_CMYK_3, &ci_CMYK_3,
- },
- };
-
-where the `&ci_CMYK_1' and `&ci_CMYK_3' entries are references to a
-previously defined const of type `canon_variable_inkset_t'.
-
-
-File: gimpprint.info, Node: Data Type and Variable Index, Next: Function and Macro Index, Prev: Appendices, Up: Top
-
-Data Type and Variable Index
-****************************
-
-* Menu:
-
-* canon_cap_t: Canon inkjet printers.
-* escp2_printer_t: Epson inkjet printers.
-* gimpprint_binary_age: Version functions.
-* gimpprint_current_interface: Version functions.
-* gimpprint_interface_age: Version functions.
-* gimpprint_major_version: Version functions.
-* gimpprint_micro_version: Version functions.
-* gimpprint_minor_version: Version functions.
-* stp_image_t: Printer functions.
-* stp_option_t: Options functions.
-* stp_outfunc_t: stp_vars_t functions.
-* stp_papersize_t: Paper functions.
-* stp_papersize_unit_t: Paper functions.
-* stp_printer_t: Printer functions.
-* stp_printfuncs_t: Printer functions.
-* stp_vars_t: stp_vars_t functions.
-
-
-File: gimpprint.info, Node: Function and Macro Index, Next: Concept Index, Prev: Data Type and Variable Index, Up: Top
-
-Function and Macro Index
-************************
-
-* Menu:
-
-* * ?? BC=XX Y[1] ... Y[xx]: ESC/P2 Remote Mode Commands.
-* * AC BC=2 00 XX: ESC/P2 Remote Mode Commands.
-* * AI BC=3 00 00 00: ESC/P2 Remote Mode Commands.
-* * CH BC=2 00 XX: ESC/P2 Remote Mode Commands.
-* * DA BC=4 00 XX 00 YY: ESC/P2 Remote Mode Commands.
-* * DA BC=6 00 XX 00 YY 09 00: ESC/P2 Remote Mode Commands.
-* * DR BC=4 00 xx DT2: ESC/P2 Remote Mode Commands.
-* * DT BC=3 00 XX 00: ESC/P2 Remote Mode Commands.
-* * DU BC=6 00 XX 00 09 00 YY: ESC/P2 Remote Mode Commands.
-* * EX BC=3 00 XX YY: ESC/P2 Remote Mode Commands.
-* * EX BC=6 00 00 00 00 0x05 XX: ESC/P2 Remote Mode Commands.
-* * EX BC=6 00 00 00 00 0x14 XX: ESC/P2 Remote Mode Commands.
-* * FP BC=3 00 XX YY: ESC/P2 Remote Mode Commands.
-* * IK BC=2 00 XX: ESC/P2 Remote Mode Commands.
-* * IQ BC=1 01: ESC/P2 Remote Mode Commands.
-* * IR BC=2 00 XX: ESC/P2 Remote Mode Commands.
-* * LD BC=0: ESC/P2 Remote Mode Commands.
-* * PH BC=2 00 XX: ESC/P2 Remote Mode Commands.
-* * PM BC=2 00 00: ESC/P2 Remote Mode Commands.
-* * PP BC=3 00 XX YY: ESC/P2 Remote Mode Commands.
-* * PZ BC=2 00 xx: ESC/P2 Remote Mode Commands.
-* * RS BC=1 01: ESC/P2 Remote Mode Commands.
-* * SM BC=1 01: ESC/P2 Remote Mode Commands.
-* * SM BC=2 00 02: ESC/P2 Remote Mode Commands.
-* * SM BC=2 00 XX: ESC/P2 Remote Mode Commands.
-* * SN BC=3 00 XX YY: ESC/P2 Remote Mode Commands.
-* * ST BC=1 01: ESC/P2 Remote Mode Commands.
-* * ST BC=2 00 XX: ESC/P2 Remote Mode Commands.
-* * SV BC=0: ESC/P2 Remote Mode Commands.
-* </printer>: printers.xml.
-* <color>: printers.xml.
-* <language value=TYPE>: printers.xml.
-* <model value=INT>: printers.xml.
-* <nocolor>: printers.xml.
-* <printer name="LONGNAME" driver="DRIVERNAME">: printers.xml.
-* AM_PATH_GIMPPRINT: autoconf.
-* ESC $ OFFSET2: ESC/P2 Standard Commands.
-* ESC ($ BC=4 OFFSET4: ESC/P2 Standard Commands.
-* ESC (/ BC=4 OFFSET4: ESC/P2 Standard Commands.
-* ESC (\ BC=4 UNITS2 OFFSET2: ESC/P2 Standard Commands.
-* ESC (C BC=2 PAGELENGTH2: ESC/P2 Standard Commands.
-* ESC (C BC=4 PAGELENGTH4: ESC/P2 Standard Commands.
-* ESC (c BC=4 TOP2 LENGTH2: ESC/P2 Standard Commands.
-* ESC (c BC=8 TOP4 LENGTH4: ESC/P2 Standard Commands.
-* ESC (D BC=4 BASE2 VERTICAL1 HORIZONTAL1: ESC/P2 Standard Commands.
-* ESC (e BC=2 ZERO1 DOTSIZE1: ESC/P2 Standard Commands.
-* ESC (G BC=1 ON1: ESC/P2 Standard Commands.
-* ESC (i BC=1 MICROWEAVE1: ESC/P2 Standard Commands.
-* ESC (K BC=2 ZERO1 GRAYMODE1: ESC/P2 Standard Commands.
-* ESC (r BC=2 DENSITY1 COLOR1: ESC/P2 Standard Commands.
-* ESC (R BC=8 00 R E M O T E 1: ESC/P2 Standard Commands.
-* ESC (s BC=1 SPEED1: ESC/P2 Standard Commands.
-* ESC (S BC=8 WIDTH4 LENGTH4: ESC/P2 Standard Commands.
-* ESC (U BC=1 UNIT1: ESC/P2 Standard Commands.
-* ESC (U BC=5 PAGEUNITS1 VUNIT1 HUNIT1 BASEUNIT2: ESC/P2 Standard Commands.
-* ESC (V BC=2 ADVANCE2: ESC/P2 Standard Commands.
-* ESC (v BC=2 ADVANCE2: ESC/P2 Standard Commands.
-* ESC (V BC=4 ADVANCE4: ESC/P2 Standard Commands.
-* ESC (v BC=4 ADVANCE4: ESC/P2 Standard Commands.
-* ESC . COMPRESS1 VSEP1 HSEP1 LINES1 WIDTH2 DATA...: ESC/P2 Standard Commands.
-* ESC 01 @EJL [sp] ID\r\n: ESC/P2 Standard Commands.
-* ESC @: ESC/P2 Standard Commands.
-* ESC \ OFFSET2: ESC/P2 Standard Commands.
-* ESC i COLOR1 COMPRESS1 BITS1 BYTES2 LINES2 DATA...: ESC/P2 Standard Commands.
-* ESC r COLOR1: ESC/P2 Standard Commands.
-* ESC U DIRECTION1: ESC/P2 Standard Commands.
-* GIMPPRINT_BINARY_AGE: Version functions.
-* GIMPPRINT_CHECK_VERSION: Version functions.
-* GIMPPRINT_CURRENT_INTERFACE: Version functions.
-* GIMPPRINT_INTERFACE_AGE: Version functions.
-* GIMPPRINT_MAJOR_VERSION: Version functions.
-* GIMPPRINT_MICRO_VERSION: Version functions.
-* GIMPPRINT_MINOR_VERSION: Version functions.
-* NC BC=2 00 00: ESC/P2 Remote Mode Commands.
-* stp_allocate_copy: stp_vars_t functions.
-* stp_allocate_lut: stp_vars_t functions.
-* stp_allocate_vars: stp_vars_t functions.
-* stp_check_version: Version functions.
-* stp_choose_colorfunc: Settings functions.
-* stp_clear_all_options: Options functions.
-* stp_clear_option: Options functions.
-* stp_compute_lut: stp_vars_t functions.
-* stp_compute_page_parameters: Settings functions.
-* stp_copy_vars: stp_vars_t functions.
-* stp_default_dither_algorithm: Dither functions.
-* stp_default_settings: Settings functions.
-* stp_dither_algorithm_count: Dither functions.
-* stp_dither_algorithm_name: Dither functions.
-* stp_free_lut: stp_vars_t functions.
-* stp_free_vars: stp_vars_t functions.
-* stp_get_app_gamma: stp_vars_t functions.
-* stp_get_brightness: stp_vars_t functions.
-* stp_get_cmap: stp_vars_t functions.
-* stp_get_contrast: stp_vars_t functions.
-* stp_get_cyan: stp_vars_t functions.
-* stp_get_density: stp_vars_t functions.
-* stp_get_dither_algorithm: stp_vars_t functions.
-* stp_get_driver: stp_vars_t functions.
-* stp_get_errdata: stp_vars_t functions.
-* stp_get_errfunc: stp_vars_t functions.
-* stp_get_gamma: stp_vars_t functions.
-* stp_get_image_type: stp_vars_t functions.
-* stp_get_ink_type: stp_vars_t functions.
-* stp_get_input_color_model: stp_vars_t functions.
-* stp_get_left: stp_vars_t functions.
-* stp_get_lut: stp_vars_t functions.
-* stp_get_magenta: stp_vars_t functions.
-* stp_get_media_size: stp_vars_t functions.
-* stp_get_media_source: stp_vars_t functions.
-* stp_get_media_type: stp_vars_t functions.
-* stp_get_option_by_index: Options functions.
-* stp_get_option_by_name: Options functions.
-* stp_get_orientation: stp_vars_t functions.
-* stp_get_outdata: stp_vars_t functions.
-* stp_get_outfunc: stp_vars_t functions.
-* stp_get_output_color_model: stp_vars_t functions.
-* stp_get_output_to: stp_vars_t functions.
-* stp_get_output_type: stp_vars_t functions.
-* stp_get_page_height: stp_vars_t functions.
-* stp_get_page_width: stp_vars_t functions.
-* stp_get_papersize_by_index: Paper functions.
-* stp_get_papersize_by_name: Paper functions.
-* stp_get_papersize_by_size: Paper functions.
-* stp_get_ppd_file: stp_vars_t functions.
-* stp_get_printer_by_driver: Printer functions.
-* stp_get_printer_by_index: Printer functions.
-* stp_get_printer_by_long_name: Printer functions.
-* stp_get_printer_index_by_driver: Printer functions.
-* stp_get_resolution: stp_vars_t functions.
-* stp_get_saturation: stp_vars_t functions.
-* stp_get_scaling: stp_vars_t functions.
-* stp_get_top: stp_vars_t functions.
-* stp_get_unit: stp_vars_t functions.
-* stp_get_yellow: stp_vars_t functions.
-* stp_init: Main functions.
-* stp_known_papersizes: Paper functions.
-* stp_known_printers: Printer functions.
-* stp_malloc: Main functions.
-* stp_maximum_settings: Settings functions.
-* stp_merge_printvars: stp_vars_t functions.
-* stp_minimum_settings: Settings functions.
-* stp_option_count: Options functions.
-* stp_option_data: Options functions.
-* stp_option_length: Options functions.
-* stp_option_name: Options functions.
-* stp_papersize_get_bottom: Paper functions.
-* stp_papersize_get_height: Paper functions.
-* stp_papersize_get_left: Paper functions.
-* stp_papersize_get_name: Paper functions.
-* stp_papersize_get_right: Paper functions.
-* stp_papersize_get_top: Paper functions.
-* stp_papersize_get_unit: Paper functions.
-* stp_papersize_get_width: Paper functions.
-* stp_printer_get_driver: Printer functions.
-* stp_printer_get_long_name: Printer functions.
-* stp_printer_get_model: Printer functions.
-* stp_printer_get_printfuncs: Printer functions.
-* stp_printer_get_printvars: Printer functions.
-* stp_set_app_gamma: stp_vars_t functions.
-* stp_set_brightness: stp_vars_t functions.
-* stp_set_cmap: stp_vars_t functions.
-* stp_set_contrast: stp_vars_t functions.
-* stp_set_cyan: stp_vars_t functions.
-* stp_set_density: stp_vars_t functions.
-* stp_set_dither_algorithm: stp_vars_t functions.
-* stp_set_dither_algorithm_n: stp_vars_t functions.
-* stp_set_driver: stp_vars_t functions.
-* stp_set_driver_n: stp_vars_t functions.
-* stp_set_errdata: stp_vars_t functions.
-* stp_set_errfunc: stp_vars_t functions.
-* stp_set_gamma: stp_vars_t functions.
-* stp_set_image_type: stp_vars_t functions.
-* stp_set_ink_type: stp_vars_t functions.
-* stp_set_ink_type_n: stp_vars_t functions.
-* stp_set_input_color_model: stp_vars_t functions.
-* stp_set_left: stp_vars_t functions.
-* stp_set_lut: stp_vars_t functions.
-* stp_set_magenta: stp_vars_t functions.
-* stp_set_media_size: stp_vars_t functions.
-* stp_set_media_size_n: stp_vars_t functions.
-* stp_set_media_source: stp_vars_t functions.
-* stp_set_media_source_n: stp_vars_t functions.
-* stp_set_media_type: stp_vars_t functions.
-* stp_set_media_type_n: stp_vars_t functions.
-* stp_set_option: Options functions.
-* stp_set_orientation: stp_vars_t functions.
-* stp_set_outdata: stp_vars_t functions.
-* stp_set_outfunc: stp_vars_t functions.
-* stp_set_output_color_model: stp_vars_t functions.
-* stp_set_output_to: stp_vars_t functions.
-* stp_set_output_to_n: stp_vars_t functions.
-* stp_set_output_type: stp_vars_t functions.
-* stp_set_page_height: stp_vars_t functions.
-* stp_set_page_width: stp_vars_t functions.
-* stp_set_ppd_file: stp_vars_t functions.
-* stp_set_ppd_file_n: stp_vars_t functions.
-* stp_set_resolution: stp_vars_t functions.
-* stp_set_resolution_n: stp_vars_t functions.
-* stp_set_saturation: stp_vars_t functions.
-* stp_set_scaling: stp_vars_t functions.
-* stp_set_top: stp_vars_t functions.
-* stp_set_unit: stp_vars_t functions.
-* stp_set_yellow: stp_vars_t functions.
-* VI BC=2 00 00: ESC/P2 Remote Mode Commands.
-
-
-File: gimpprint.info, Node: Concept Index, Prev: Function and Macro Index, Up: Top
-
-Concept Index
-*************
-
-* Menu:
-
-* adding a printer: New Printer.
-* Appendices: Appendices.
-* autoconf: autoconf.
-* automake: automake.
-* bugs: Problems.
-* collisions: Weaving collisions.
-* CUPS driver: CUPS.
-* dither functions: Dither functions.
-* dithering: Dithering.
-* driver file: Driver file.
-* Epson inkjet printers: Epson inkjet printers.
-* ESC/P2: ESC/P2.
-* ESC/P2 introduction: ESC/P2 Introduction.
-* functions: Functions.
-* ghostscript driver: Ghostscript.
-* GIMP Print plugin: The GIMP plugin.
-* gimpprint-config: gimpprint-config.
-* how to read: Instructions.
-* initialising libgimpprint: Main functions.
-* integrating: Integrating libgimpprint.
-* m4 macros: autoconf.
-* main functions: Main functions.
-* make: make.
-* manual, how to read: Instructions.
-* memory allocation: Main functions.
-* new printer: New Printer.
-* options functions: Options functions.
-* oversampling: Oversampling.
-* overview: Overview.
-* paper functions: Paper functions.
-* perfect weave <1>: What is perfect weaving?.
-* perfect weave: Perfect weaving.
-* Print plugin: The GIMP plugin.
-* printer functions: Printer functions.
-* printer, adding: New Printer.
-* printer, tuning: Tuning Epson printers.
-* problems: Problems.
-* programs: Programs.
-* reading: Instructions.
-* settings functions: Settings functions.
-* stp_vars_t functions: stp_vars_t functions.
-* tuning the printer: Tuning Epson printers.
-* using: Using libgimpprint.
-* version functions: Version functions.
-* weaving: Weaving.
-* weaving algorithms: Weaving algorithms.
-* weaving collisions: Weaving collisions.
-
-
diff --git a/doc/gimpprint.ps b/doc/gimpprint.ps
deleted file mode 100644
index 060cee9..0000000
--- a/doc/gimpprint.ps
+++ /dev/null
@@ -1,11226 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
-%%Title: gimpprint.dvi
-%%Pages: 94
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 612 792
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: /usr/bin/dvips gimpprint.dvi -o gimpprint.ps
-%DVIPSParameters: dpi=600, compressed
-%DVIPSSource: TeX output 2004.06.11:2047
-%%BeginProcSet: texc.pro
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: special.pro
-%!
-TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
-/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
-/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
-/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
-/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
-X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
-/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
-/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
-{userdict/md get type/dicttype eq{userdict begin md length 10 add md
-maxlength ge{/md md dup length 20 add dict copy def}if end md begin
-/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
-atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
-itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
-transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
-curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
-pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
-if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
--1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
-get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
-yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
-neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
-noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
-90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
-neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
-1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
-2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
--1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
-TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
-Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
-}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
-save N userdict maxlength dict begin/magscale true def normalscale
-currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
-/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
-psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
-psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
-TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{
-psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
-roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
-moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict
-begin/SpecialSave save N gsave normalscale currentpoint TR
-@SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{
-CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
-closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
-sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
-}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
-CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
-lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N
-/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end}
-repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N
-/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX
-currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY
-moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X
-/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0
-1 startangle endangle arc savematrix setmatrix}N end
-
-%%EndProcSet
-TeXDict begin 40258431 52099146 1000 600 600 (gimpprint.dvi)
-@start
-%DVIPSBitmapFont: Fa cmsl9 9 41
-/Fa 41 122 df<123C127E12FFA312FEA212380808798715>46 D<1406141E143EEB01FE
-131FEA01FF495AEA03E0C7FCA313015CA513035CA513075CA5130F5CA5131F5CA5133F91
-C7FCA4EBFF80B61280A21500193279B126>49 D<EC3FC0ECFFF0010313FC90380F80FE90
-381E007F0138EB3F804914C049131F16E0485A01F0130FEA03FCA3151FA25BD800E014C0
-90C7123FA2ED7F8016005D5D4A5A4A5A4A5A5D4A5A4A5A023EC7FC5C5C495AEB03C0495A
-49C8FC011E13065B01705B5B485A48485B000FC7123848B512F8485C5AB6FC5DA223327C
-B126>I<15035D5D5D5D5D157E15FE14011403EC077E140EEC0CFC14181430146014E0EB
-01C0EC81F8EB03011306130C131C133849485A136013C0EA01801203EA0700000E495A12
-0C5A5A5A007FB612C0B71280A2C7380FC000A3141FA25DA4143F90381FFFFEA322337CB2
-26>52 D<1670A216F0A21501821503A21507150F82151D15191531A2ED61FE156015C0A2
-EC0180A24A487E821406A25C834A133FA25C147002608002E0131F5C49B6FCA2498191C7
-120F1306A25BA2498116075BA25B01E081160300031507D80FF84A7EB549B512F05BA234
-367DB53A>65 D<90B7FC17E017F8903A03FC0003FE0101EC00FFEF7F800103153F4A15C0
-171FA413075C173FA21880EF7F00010F5D4A495AEE03F84C5AEE1FC091B6C7FC495C9139
-C0007FC0EE0FE0EE03F8707E83013F14004A8083A4137F91C85AA34C5AA2494A5A494A5A
-4C5A4C5AEE7FC000014A485AB748C7FC16F816C032337DB236>I<DB3FE01360912601FF
-FC13E0020FEBFF01913A3FF00F83C09139FF0003C7D903FCEB00EF4948147FD90FE0143F
-495A4948EC1F8049C8FC01FE150F485A00031607485A491600120F5B121FA2485A170648
-4892C7FCA412FF90CBFCA71718A317386C16301770A26C6C5DA26D4A5A001F4B5A6C7E4C
-C7FC6C6C141E6C6C5CD801FE5CD8007FEB01E090393FE00FC0010FB5C8FC010313FC9038
-003FE0333778B437>I<90B77E17F017FC903A03FC0003FE0101EC007FEF3FC00103150F
-4AEC07E018F0EF03F8170118FC13074A140018FEA4130F4A15FFA418FE131F4A1401A418
-FC013F15035C18F8A2EF07F0A2017FED0FE091C8FCEF1FC01880EF3F005F4915FE494A5A
-EE07F04C5AEE3FC000014AB4C7FCB712FC16F093C8FC38337DB23B>I<90B812C0A3D903
-FCC7127F0101150F1707010315034A1401A4170013075C1618A31638010F023013005C16
-7016F0150391B5FC495CA2ECC00715011500A2013F5C4AEC0180A3EF03001600017F5D91
-C81206A2170E170C171C49153C4915381778EE01F8EE07F00001153FB8FC5FA232337DB2
-34>I<90B81280A3D903FCC7FC0101151F170F010315074A1403A4170113075CA21630A3
-010F4AC7FC5CA216E01501150749B55AA3ECC00F15031501013F5C1480A5017F90C9FC91
-CAFCA55B5BA4487EB6FCA25C31337DB232>I<DB3FE01360912601FFFC13E0020FEBFF01
-913A3FF00F83C09139FF0003C7D903FCEB00EF4948147FD90FE0143F495A4948EC1F8049
-C8FC01FE150F485A00031607485A491600120F5B121FA2485A1706484892C7FCA412FF90
-CBFCA50307B512E018C0A292390007FC00705A16077E5FA26C7EA26D140F121F6C6C5D6D
-141F1207D803FC143F6C6C14733A007F8001E3903A3FF00FC1C0010FB51200010301FC90
-C7FC9038003FE0333778B43C>I<90B5D8FC03B512F0A3D903FEC7380FF8006D486E5A17
-0F13034A5DA4171F13074A5DA4173F130F4A5DA491B7FC5B95C7FC02C0C77EA35F133F4A
-5CA41601137F91C75BA416035B495DA400011507B5D8FC03B512F0A33C337DB23A>I<90
-387FFFFE90B5FCA2010113006D5AA213015CA513035CA513075CA5130F5CA5131F5CA513
-3F5CA5137F91C7FCA4497E007F13FEB5FCA21F337EB21C>I<90B6FCA25DD903FEC8FC6D
-5AA213035CA513075CA5130F5CA5131F5CA5133F4A1430A31760A2137F91C812E017C016
-01A21603491580491407160FEE3F0016FF00011407B8FC5EA22C337DB230>76
-D<D9FFFC923801FFFC80600103EFFE000101EE06FC02BF150D1303023FED19F8A26E6C14
-31A2186313070106EEC3F06E7EEF0183EF03031807010E150690260C07E05D170CA21718
-6E6C140F011C1530011803605BA217C06E7E933801801F13380130DA03005BEC00FC1606
-A24C133F01705C0160017E92C7FC5EA25E6001E06D5A49167E5E12016D6DC7FCD80FF801
-1E14FEB5008091387FFFFC151C150C46337CB246>I<D9FFFE91381FFFF0A28001019238
-01FE006FEB00F802BF157001037F021F1560816E7EA26E6C14E0130790260603FC5CA26E
-7E14006F1301010E7F010C02805BED3FC0A2ED1FE01703011CEB0FF0011893C7FCED07F8
-150316FC6F6C5A13380130903800FF06A2EE7F86A2EE3FCE13700160EC1FEC160F17FC16
-07A201E01403495D16011201486C1400D80FF81578B57E1730A23C337DB23A>I<ED7FE0
-913803FFFC91381FC03F91397E000FC002F8EB03E0D903F0EB01F849486D7E4948147E49
-5A49C87E017E168049151F484816C012034848150F18E0485AA2485AA2003F17F0A25B12
-7FA348C9EA1FE0A5EF3FC0A3EF7F80A218005F5F6C15015F4C5A6C7E4C5A6C6C4A5A5F6C
-6C4A5A00074BC7FC6C6C147E6C6CEB01F86C6C495A017FEB0FC090261FC07FC8FC903807
-FFFC010013C0343778B43C>I<90B612FEEEFFC017F0903A03FC0007FC0101EC01FEEE00
-7F0103ED3F805C18C0A2171F173F13075CA31880177F010F16005C17FE4C5A4C5AEE0FE0
-011FEC7FC091B6C7FC16F802C0C9FCA3133F5CA5137F91CAFCA55B5BA41201B512FCA332
-337DB234>I<90B612F8EEFF8017E0903A03FC000FF00101EC03FCEE00FE0103814A8018
-80A2173F177F13075CA318005F010F5D4A495A4C5AEE07E0EE1FC004FFC7FC49B512F816
-E09138C001F86F7E167E82013F814A131FA283A3017F143F91C7FCA549147F49160CA304
-3F131C00011718B500FC011F1338EFE070040713E0C93803FFC09338007F0036357DB239
->82 D<91390FF0018091387FFE0349B51207903A07F00FCF0090390FC001FF49C7FC013E
-804980A249141E5B0001150EA31203160CA27F93C7FC7F6C7E6D7E14F86CEBFF806D13F8
-15FE011F7F6D80010380D9003F7F14039138003FF0150F1507A21503820018140100385D
-1230A400384A5A12784B5A127C007E4A5A007F4AC7FC6D133ED8FBC05B39F1FC03F839F0
-7FFFE0D8E01F138026C003FEC8FC29377CB42B>I<001FB81280A3903AE003FC007FD900
-01140F003E1607003C130300384A13031230007017001260A214075D5AA4C7000F91C7FC
-5DA5141F5DA5143F5DA5147F92C9FCA55C5CA4EB03FF0007B67EA3313377B237>I<B500
-FC90381FFFF0A3D803FEC73801FE006C48EC00F817701203491560A417E01207495DA416
-01120F495DA41603121F4992C7FCA45E123F491406A4160E160C90C8FC161C16186D1438
-16301670001F5D6D495A000F14036C6C495A6D49C8FC6C6C133C3900FE01F890387FFFE0
-011F1380D903FCC9FC343575B23A>I<B500F0903801FFFCA25ED807FEC8EA7FC06C48ED
-3E00171C00011618173817306D5D12005FA26D4A5AA26D4AC7FC5E16066E5B133F5EA26E
-5BA2011F5C16E05E6E485A130F4BC8FCA2ECF006A201075B151C15186E5A13035DA26E5A
-1301ECFD8014FF92C9FC5C13005CA25C147814701460363576B23A>I<B5D8F00FB59038
-1FFFE0A214E0D807FCC7D87FE0903803FE0049DA3F80EB00F80003611A6062836D021F4A
-5A1201043F4AC7FCA2047F14068304CF5C6C7EDB018F5CA2DB030F5C83DB06075C137F03
-0C5DA20318140105F85BDB30031303028093C8FC013F01605C180603C0140EEFFC0C9126
-818001131C02C1151890261FC3001438183002C61570186002CC903800FEE002EC5DD90F
-F814FF605C95C9FC4A80177E6D5A177C5C177891C8FC6D15304B3576B24F>I<B500F8EC
-FFFEA300030180EC3FE06C90C8EA1F006C161E171C6D6C5C5F6D6C14605F6D6C495A1603
-6D6C49C7FC16065E6D6C5B16386D6C5B16606D6C5B4B5A903800FF034BC8FCEC7F86158C
-EC3FD815F85D6E5A5DA55D143FA592C9FC5CA55C017F13FEA25D373377B23A>89
-D<013FB612FCA39139F80007F802C0EB0FF049C7FC017CEC1FE00178EC3FC00170EC7F80
-01F0ECFF005B4B5A49495A4B5A4848495A4B5AA24B5AC8485A4BC7FC4A5AA24A5A4A5A4A
-5A4A5A4A5AA24A5A4AC8FC495A4948EB0180A2495A495A4948EB0300495A495A5E49C712
-064848140E485A4848141E163E48485C484814FC484813034848131FB7FC5EA22E337CB2
-2F>I<EB07FCEB3FFF9038F80FC03901C003E0D803F07F6D6C7EA248486C7E12035BC8FC
-A21401A2EC7FF8EB07FFEB3FE1EBFF013803F803EA0FF0D81FE05BEA3FC01380007F1560
-EB000748ECE0C05A140FA2141F007F90383BE180EC73E33A1F81E1FF00390FFF81FE3901
-FE007823237CA126>97 D<167EED1FFE16FC153F1501A416F8A41503A216F0A4150714FE
-903907FFC7E090381F81E790387E007749133F4848131F4848130F484814C0120F485AA2
-4848131FA2007F158090C7FCA3153F5A481500A3127E5DA2157E6C14FE14016C13036C6C
-487E2607C00E13F03803E07C3800FFF090393F80FC0027357BB32B>100
-D<EB03FCEB0FFF90383E0FC09038FC03E0D801F813F03803F001D807E013F8380FC00012
-1F5B123F48C7FCA312FEB6FCA248C8FCA35AA51560127E15E0003EEB01C0003FEB03806C
-EB0700380F800E3807E07C3801FFF038003F801D237BA122>I<163C91387F01FF903901
-FFE3CF903907C1FF0F90391F80FC1F90393F007C0E017EEB3E005B153F485AA35D157E5B
-A25D6D5B0000495A90387C03E09038FE0FC02601CFFFC7FC380383F80180C8FCA21207A3
-7F90B57E6C14F015FC6C804880380F800048C7EA3F80003E141F48140F12FC5AA3151F16
-006C143E007C5C6C5C6CEB03F03907E01FC00001B5C7FC38003FF028337FA126>103
-D<EB0380EB0FC0EB1FE0A314C0A2EB070090C7FCAA131FEA07FFA3C67EA3137EA513FE5B
-A512015BA512035BA41207B5FCA313337EB215>105 D<EB03F013FF14E0A2130FA21307
-130F14C0A5131F1480A5133F1400A55B137EA513FE5BA512015BA512035BA41207B51280
-A2140014347EB315>108 D<90260F80FFEB07F82603FF839038C01FFE48903A8F03E078
-1F913B9C01F0E00F8026007FB8D9F9C013C0D93FF0EBFB8002E0EBFF0002C05B02805BA2
-02005BA2490103141F017E4A1480A501FE0107143F494A1400A50001020F5C494A137EA4
-0003021F14FE3D7FFFC3FFFE1FFFF0A2B500C75C3C217EA041>I<90380F80FE3A03FF83
-FF804890388F07E0EC9C0326007FB813F0EB3FF014E014C01480A2140015075B017E14E0
-A4150F13FE4914C0A4151F1201491480A40003143F3A7FFFC7FFFCA2B5FC26217EA02B>
-I<14FF010713C090381F81F090383E00F80178133C4848133E48487FA248481480120F48
-48130FED1FC0123F90C7FCA25AA400FEEC3F80A31600007E5C157EA25D003E5C003F495A
-6C495A6C6C485A6C6C485A2603F03EC7FC3800FFF8EB3FC022237CA126>I<903803E07F
-9039FFE1FFC0489038E781F09138FE00FC26001FF8137E6D5A4A7F17805C161F17C0A213
-1F5CA4163F013F158091C7FCA2167F17005E495C017E495A5E017F13034B5A9039FF800F
-C06E485A9026FCE07EC7FCEC7FF8EC1FC091C9FC1201A25BA41203A25B487EB512C05CA2
-2A3080A02B>I<90383E03E03907FE1FF8143C000FEB71FC38007EE1EB7FC1EC81F815F0
-91C7FCA2137EA213FE5BA512015BA512035BA41207B512C0A31E217EA01E>114
-D<13065BA4131CA25BA2137813F812011203485A381FFFFEB5FCA23803F000A212075BA5
-120F5BA5121FEB8018A41438003F13301300A214706C1360EB80E0380F81C0EBC3803803
-FF00EA00FC172F7AAD1E>116 D<3A7FFF803FFCA2B538007FF8D807F8EB1FC06C48EB0F
-00150E150C7F00015C153815306D5B12005D140101FE5BD97E03C7FCA21406137F6D5A14
-1C141814B0131F14E0A25C130F5C91C8FCA2130626217A9F29>118
-D<3B03FFFC0FFFC014F85A3B003FE007F800010FEB03E0ED0780010791C7FC903803F00E
-6E5A01015B6E5A01005BEC7FC05D6EC8FC81141F4A7E4A7E14E7903801C7F0EB03839038
-0701F8010E7FEB1C00497F0178137ED801F8137F00074A7E267FFC0113FC00FF5BA22A20
-7F9F29>120 D<90B5EB7FF8A248EDFFF026000FF0EB3F806D48EB1E00161C6E13180103
-143816305E8001015C15015E6E48C7FC13001506150EECFE0CEC7E18A25D147F6E5A15E0
-5D5D141F92C8FCA2140E140CA25C143814305CA25CEA3C01007C5BD8FC03C9FC5B130EEA
-701CEA7878EA3FE0EA0F802D30819F29>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fb cmti9 9 1
-/Fb 1 47 df<121C127F12FFA412FE12380808778718>46 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fc cmmi10 10.95 40
-/Fc 40 123 df<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A3120113
-80120313005A120E5A1218123812300B1C798919>59 D<183818FC1703EF0FF8EF3FE0EF
-FF80933803FE00EE0FF8EE3FE0EEFF80DB03FEC7FCED0FF8ED3FE0EDFF80DA03FEC8FCEC
-0FF8EC3FE0ECFF80D903FEC9FCEB0FF8EB3FE0EBFF80D803FECAFCEA0FF8EA3FE0EA7F80
-00FECBFCA2EA7F80EA3FE0EA0FF8EA03FEC66C7EEB3FE0EB0FF8EB03FE903800FF80EC3F
-E0EC0FF8EC03FE913800FF80ED3FE0ED0FF8ED03FE923800FF80EE3FE0EE0FF8EE03FE93
-3800FF80EF3FE0EF0FF8EF03FC17001838363678B147>I<ED0180ED03C01507A2168015
-0FA216005DA2151E153EA2153C157CA2157815F8A25D1401A25D1403A25D1407A25D140F
-A24AC7FCA2141E143EA2143C147CA2147814F8A25C1301A25C1303A25C1307A25C130FA2
-91C8FC5BA2131E133EA25BA2137813F8A25B1201A25B1203A25B1207A25B120FA290C9FC
-5AA2121E123EA2123C127CA2127812F8A25A1260225B7BC32D>I<126012F8B4FCEA7FC0
-EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038007FC0EC1FF0EC07FCEC01FF
-9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1FF0EE07FCEE01FF9338007FC0EF1FF0
-EF07F8EF01FCA2EF07F8EF1FF0EF7FC0933801FF00EE07FCEE1FF0EE7FC04B48C7FCED07
-FCED1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC04948C9FCEB07FCEB1FF0EB7FC04848CA
-FCEA07FCEA1FF0EA7FC048CBFC12FC1270363678B147>I<17075F84171FA2173F177FA2
-17FFA25E5EA24C6C7EA2EE0E3F161E161C1638A21670A216E0ED01C084ED0380171FED07
-005D150E5DA25D157815705D844A5A170F4A5A4AC7FC92B6FC5CA2021CC7120F143C1438
-4A81A24A140713015C495AA249C8FC5B130E131E4982137C13FED807FFED1FFEB500F001
-07B512FCA219F83E417DC044>65 D<49B712F818FF19E090260001FEC7EA3FF0F007F84B
-6E7E727E850203815D1A80A20207167F4B15FFA3020F17004B5C611803021F5E4B4A5A18
-0FF01FE0023F4B5A4B4A5ADD01FEC7FCEF07F8027FEC7FE092B6C8FC18E092C7EA07F84A
-EC01FE4A6E7E727E727E13014A82181FA213034A82A301075F4A153FA261010F167F4A5E
-18FF4D90C7FC011F5E4A14034D5A013FED1FF04D5A4AECFFC0017F020790C8FCB812FC17
-F094C9FC413E7DBD45>I<DC1FF81307923801FFFE030F9038FF800E923A7FF007E01E4A
-48C7EAF03EDA03FCEC787EDA0FF0EC3CFCDA3FC0141F4A48140F4AC8FC4948ED07F8EB07
-F849481503131F4A16F049481501495A13FF4890C913E05B1203485A19C0485AA2485A95
-C7FC123F5BA2127F5BA312FF5BA590CCFC183CA21838A21878187018F06C6C5E17014D5A
-003F5F6D15074DC7FC001F161E6C6C5D6D5D6C6C5D00034B5AD801FEEC07C06C6C4AC8FC
-D97FC0137E90391FF803F80107B512E0010114809026001FF8C9FC40427BBF41>I<49B9
-12C0A3D9000190C71201F0003F4B151F190F1A80020316075DA314075D1A00A2140F4B13
-07A24D5B021F020E130E4B92C7FC171EA2023F5C5D177CEE01FC4AB55AA3ED800302FF6D
-5A92C7FCA3495D5C19380401147801034B13704A16F093C85AA2010716014A5E18036101
-0F16074A4BC7FCA260011F163E4A157E60013F15014D5A4A140F017F15FFB95AA260423E
-7DBD43>69 D<DC3FF0130E923803FFFE031F9038FF801C923A7FF00FC03C913B01FF0001
-E07CDA07FC903800F0FCDA0FF0EC79F8DA3FC0143F4A48141F4AC8120FD903FC16F0495A
-49481507495A013F17E04A1503495A49C9FC4818C05B1203485A1980485AA2485A95C7FC
-123F5BA2127F5BA312FF5BA3043FB512E0A290C8FC9339001FF800170F60A2171F60A36C
-6C153F60A26C7E177F001F5F7F6C6C15FF00075D6C6C4A90C7FC6C6CEC07BF6CB4EC1F1F
-D97FC0EB7E0F903A1FF803F80E0107B5EAE00601010280C8FC9026001FF8C9FC3F427BBF
-47>71 D<49B6D8C03FB512F81BF01780D900010180C7383FF00093C85B4B5EA2197F1403
-4B5EA219FF14074B93C7FCA260140F4B5DA21803141F4B5DA21807143F4B5DA2180F4AB7
-FC61A20380C7121F14FF92C85BA2183F5B4A5EA2187F13034A5EA218FF13074A93C8FCA2
-5F130F4A5DA21703131F4A5DA2013F1507A24A5D496C4A7EB6D8E01FB512FCA2614D3E7D
-BD4C>I<49B612C05BA2D90001EB800093C7FC5DA314035DA314075DA3140F5DA3141F5D
-A3143F5DA3147F5DA314FF92C8FCA35B5CA313035CA313075CA3130F5CA3131F5CA2133F
-A25CEBFFE0B612E0A32A3E7DBD28>I<92B612E0A39239003FF000161F5FA2163F5FA316
-7F5FA316FF94C7FCA35D5EA315035EA315075EA3150F5EA3151FA25EA2153FA25EA2157F
-A25EA2D80F8013FFEA3FC0486C91C8FCA25CD8FFC05B140301805B49485A00FC5C007049
-5A0078495A0038495A001E017EC9FC380F81FC3803FFE0C690CAFC33407ABD32>I<49B6
-00C090387FFFF896B5FC5FD900010180C7000F130093C813F84B16E01A804FC7FC020316
-3C4B15F84E5AF003C002074B5A4B021FC8FC183E1878020F5D4BEB03E0EF07804DC9FC02
-1F143E4B5B17F04C5A023F1307EDC00F4C7E163F027FEBFFF8ED81EFED83CF92388F87FC
-9138FF9F0792383C03FE15784B6C7E4913E0158092C77F5C01036F7E5C717EA213074A6E
-7EA2717E130F4A6E7EA284011F15035C717E133F855C496C4A13E0B600E0017F13FFA34D
-3E7DBD4D>I<49B612F0A3D900010180C7FC93C8FC5DA314035DA314075DA3140F5DA314
-1F5DA3143F5DA3147F5DA314FF92C9FCA35B5C180C181E0103161C5C183C183813074A15
-78187018F0130F4AEC01E0A21703011FED07C04A140F171F013FED3F8017FF4A1303017F
-021F1300B9FCA25F373E7DBD3E>I<EE3FF00303B5FC92391FC03FC092397E0007E0DA01
-F8EB01F8DA07E06D7E4A48147E023FC87E027EED1F804A16C0D903F8150F494816E0495A
-4948ED07F0A2494816F849C9FC5B48481603A2484817FCA2485A000F17075B121FA25B12
-3F19F84848160FA44848EE1FF0A3F03FE0A390CAEA7FC0A2F0FF80A219004D5A1703604D
-5A6C7E4D5A4D5A003F5F4D5A6C6C4BC7FC17FE6C6C4A5A4C5A6C6CEC07E06C6CEC1FC06C
-6C4A5A6C6C02FEC8FC90393F8003F890390FE01FE00103B5C9FC9038007FF03E427BBF45
->79 D<DB07FC1338ED3FFF92B5EAC070913A03F807F0F091390FE000F9DA1F80137F4AC7
-EA3FE0027E141F5C4948140F4A15C001031507495AA2010F16805CA3011F1600A38094C7
-FC808014FE90380FFFC015FC6DEBFFC016F86D14FE6D806D81023F800207801400030F7F
-1500163F707E160F1607A2160312075A5F120EA2001E15075FA24C5A123E003F4B5AA26D
-4AC7FC007F157E6D5C6D495AD87DF0495AD8F8FCEB0FE090393F803F8027F01FFFFEC8FC
-D8E00713F839C0007FC035427BBF38>83 D<48B912FCA25A913A0003FE000F01F84A1301
-D807E0EE00F8491307491778000F5D90C7FC001E140FA2001C4B1470123C0038141FA200
-785D1270033F15F000F018E0485DC81600157FA25EA215FFA293C9FCA25CA25DA21403A2
-5DA21407A25DA2140FA25DA2141FA25DA2143FA25DA2147FA214FF497F001FB612FCA25E
-3E3D7FBC35>I<027FB5D88007B512C091B6FCA2020101F8C7EBF8009126007FE0EC7F80
-4C92C7FC033F157C701478616F6C495A4E5A6F6C495A4EC8FC180E6F6C5B606F6C5B6017
-016F6C485A4D5A6F018FC9FC179E17BCEE7FF85F705AA3707EA283163F167FEEF7FCED01
-E7EEC3FEED0383ED070392380E01FF151E4B6C7F5D5D4A486D7E4A5A4A486D7E92C7FC14
-0E4A6E7E5C4A6E7E14F0495A49486E7E1307D91F806E7ED97FC014072603FFE0EC1FFF00
-7F01FC49B512FEB55CA24A3E7EBD4B>88 D<B66C0103B51280A3000101E0C8387FF0006C
-49ED3F80017F94C7FC183C606D6C1570606D6C4A5A17034D5A6D6C4AC8FC170E5F6D6C5C
-17785F6D6C495A5F6E495A6D4AC9FC160E6DEB801E5E5E91387FC0705EEDC1C0EC3FE3ED
-E78003FFCAFC6E5A5D6E5AA25DA25D141FA35D143FA35D147FA392CBFC5CA3495AA3497E
-0007B512FEA3413E7DBD35>I<EC1F80ECFFE0903903F0707090390FC039F890381F801D
-90383F000F017E5C5B00011407485A48485CA2485A001F140F5E485AA2151F007F5D5BA2
-153F00FF92C7FC90C7FCA25D92387E03805AA215FEEDFC07007E0101140014035E6C0107
-130E140E3A1F801C7C1C000F13783A07C1F03E383A01FFC01FF03A007F0007C029297DA7
-30>97 D<EB1FC0EA0FFF5CA2EA003FA291C8FCA25BA2137EA213FEA25BA21201A25BA212
-03A25BEC3F800007EBFFE09038F3C1F849C67E01FE137E4848133E49133F5B491480001F
-141F5B5BED3FC0123FA290C7FCA248147F1680127EA215FF00FE15005AA24A5AA25D1403
-485C1407007C5C4A5A5D003C495A003E49C7FC001E137E6C13F8380783F03803FFC0C648
-C8FC22407CBE27>I<EC07F0EC7FFE903801FC0F903907E0038090390FC001C0D93F8013
-E090387F000701FE131F485A485A16C0485A000F15804990C7FC121F485AA3127F5BA312
-FF90C9FCA6007E1560007F15E01501ED03C06CEC07806DEB0F00001F141E6C6C137C3907
-E001F03901F01FC06CB5C7FCEB1FF023297DA727>I<EE07F0ED03FF17E0A2ED000FA217
-C0A2161FA21780A2163FA21700A25EA2167EA216FEA25EEC1F80ECFFE1903803F0719039
-0FC039F890381F801D90383F000F137E495C00011407485A485A5E485A001F140FA24848
-5CA2151F127F495CA2153F12FF90C790C7FCA25DEE038048147EA215FE1607007ED901FC
-130014035E6C0107130E140E3A1F801C7C1C000F13783A07C1F03E383A01FFC01FF03A00
-7F0007C02C407DBE2F>I<EC1FE0ECFFFC903803F01E90380FC00F90393F800780D97E00
-13C0491303EA03F8120749130748481480121F49130F003FEC1F00153E397F8001FCEC1F
-F090B51280B500F8C7FC90C9FCA45AA616C01501007E1403ED07806CEC0F00151E6C5C6C
-6C13F83907C003E03903E03F802600FFFEC7FCEB3FE022297CA72A>I<163EEEFFC09238
-03E1E0923807C0F0ED0F811687ED1F8F160F153FA217E092387E038093C7FCA45DA51401
-5DA30103B512FCA390260003F0C7FCA314075DA4140F5DA5141F5DA4143F92C8FCA45C14
-7EA414FE5CA413015CA4495AA35CEA1E07127F5C12FF495AA200FE90C9FCEAF81EEA703E
-EA7878EA1FF0EA07C02C537CBF2D>I<EC01F8EC0FFE91383F07879139FC03DF80903801
-F801903903F000FFEB0FE04948EB7F005C133F49C7FC49147E5B000115FEA248485CA215
-011207495CA21503120F495CA21507A25E5B0007140FA24B5A6D133F0003147F000114FF
-6D485B0000EB03DF90387E0F3FEB1FFCD907F090C7FC90C7FC5DA2157EA215FEA25D001C
-1301007F5C4813035D4A5A4A5A48495A00F8017EC8FC387E01FC381FFFE0000390C9FC29
-3B7FA72B>I<EB01FC13FF5CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA2
-91C9FC15FE90397F07FFC091381F03E090397E3801F09138F000F8EBFFE04A7F5C91C7FC
-485AA25BA2484813015E5BA2000714035E5B1507120F5E49130F5E121F031F1370491480
-A2003F023F13F0EE00E090C7FC160148023E13C01603007E1680EE070000FE5DED1F1E48
-EC0FF80038EC03E02C407CBE34>I<143C14FEA21301A314FCEB00701400AD137E3801FF
-803803C7C0EA0703000F13E0120E121C13071238A2EA780F007013C0A2EAF01F14801200
-133F14005B137EA213FE5BA212015B0003130E13F0A20007131EEBE01CA2143CEBC03814
-78147014E013C13803E3C03801FF00EA007C173E7EBC1F>I<ED01C0ED07F0A2150FA316
-E0ED038092C7FCADEC03E0EC0FF8EC3C3EEC701EECE01FEB01C001031480EB0780140049
-133F010E1400131E131C013C5BA290C7127EA215FEA25DA21401A25DA21403A25DA21407
-A25DA2140FA25DA2141FA25DA2143FA292C7FCA25C147EA2001C13FE007F5BEAFF015C49
-5A495A48485A38F81F80D8783EC8FCEA3FF8EA0FE0245081BC25>I<EB07F0EA03FF14E0
-A2EA000FA214C0A2131FA21480A2133FA21400A25BA2137EA213FEA25BA21201A25BA212
-03A25BA21207A25BA2120FA25BA2121FA25BA2123FA290C7FCA25AEB0380127EA212FE13
-0700FC1300A25B130EA2EA7C1C133CEA3E38EA1FF0EA07C014407DBE1B>108
-D<01F8EB0FF0D803FEEB3FFC3A078F80F03E3A0F0F83C01F3B0E07C7800F80001CEBCF00
-02FE80003C5B00385B495A127800705BA200F049131F011F5D00005BA2163F013F92C7FC
-91C7FC5E167E5B017E14FE5EA201FE0101EB03804914F8A203031307000103F013005B17
-0E16E000035E49153C17385F0007913801F1E0496DB45AD801C0023FC7FC31297EA737>
-110 D<EC07F8EC7FFE903901FC0F80903907E007E090390FC003F090393F8001F8EB7F00
-01FEEB00FC485A484814FEA2485A120F5B001F15FF485AA2ED01FE127F5BA2150300FF15
-FC90C7FCA2ED07F8A2ED0FF0A2007E15E0007FEC1FC0ED3F80A26CEC7F006C6C13FC4A5A
-6C6C485A3907E00FC02601F03FC7FC3800FFFCEB1FE028297DA72C>I<D907C013FE903A
-0FF003FF80903A1C7C0F07E0903A383C1C03F0903A783E7801F80170EBF0009026F03FE0
-13FC01E05B4B13FE0001017F147E01C090C7FC147E17FF000313FEA2C75AA201015C17FE
-5CA20103140317FC5CA20107EC07F8A24A14F0160F010F15E0161F17C0EE3F80011F1500
-6E137E5E9138B801F890393FBC03E091389E0FC0DA07FFC7FCEC01F849C9FCA2137EA213
-FEA25BA21201A25BA21203A2B512E0A3303A84A72E>I<91381F800C9138FFE01C903903
-F0707C90390FC0387890391F801CF890383F000F137E4914F000011407485A485A16E048
-5A121F150F484814C0A3007F141F491480A300FF143F90C71300A35D48147EA315FE007E
-495A1403A26C13074A5A381F801D000F13793807C1F33901FFC3F038007F03130014075D
-A3140F5DA3141F5DA2143F147F90381FFFFE5BA2263A7DA729>I<D801F0EB3F80D807FC
-EBFFE03A0F1F03C0F0000E90380F00F8391E0F9E03001C13BC003CEBF807003813F0A226
-781FE013F000709038C001C092C7FC5C12F0133F000090C8FCA35B137EA313FE5BA31201
-5BA312035BA312075BA3120F5BEA038025297EA729>I<EC1FC0ECFFF8903803E03C9038
-07800E90381E0007168049130F49131F153FA201F81400A2151C6D90C7FC7FEBFFE014FE
-90387FFFC06D7F6D13F86D7F13039038001FFE14031400157E000C143E123F487EA248C7
-123CA25D12FC00F05C0070495A0078495A6C495A260F803EC7FC3803FFF838007FC02129
-7CA72B>I<147014FC1301A25CA21303A25CA21307A25CA2130FA25CA2007FB512F0B6FC
-15E039001F8000133FA291C7FCA25BA2137EA213FEA25BA21201A25BA21203A25BA21207
-EC01C013E01403000F1480A2EBC0071500140E141E5C000713385C3803E1E03801FF80D8
-003EC7FC1C3A7EB821>I<137C48B4EC03802603C7C0EB0FC0EA0703000F7F000E151F12
-1C010715801238163FEA780F0070491400A2D8F01F5C5C0000157E133F91C712FEA2495C
-137E150113FE495CA215030001161C4914F0A21507173CEEE038150F031F137800001670
-6D133F017C017313F0017E01E313E0903A3F03C1F1C0903A0FFF007F80D901FCEB1F002E
-297EA734>I<013EEE0380D9FF800107EB0FE02601C3E090381F801FD8038117F0380701
-F0000E153F001E1600D81C03160F003C170700384BEB03E0D87807147E00705B1801D8F0
-0F14FE4A4914C01200131FDA800114034C1480133F140003031407494A1400137EA26001
-FE0107140E495C60A360150F017C5E017E011F14F0705B6D0139495A6D903970F8038090
-280FC0E07C0FC7FC903A03FFC01FFC903A007F0007F03C297EA741>119
-D<02F8130ED903FE131ED90FFF131C49EB803C49EBC0784914F090397E07F1E09038F800
-FF49EB1FC049EB07800001EC0F006C48131E90C75A5D5D4A5A4A5A4A5A4AC7FC143E1478
-5C495A495A495A49C8FC011E14E05B5B4913014848EB03C0485AD807F8EB078048B4131F
-3A1F87E07F00391E03FFFE486C5B00785CD870005B00F0EB7FC048011FC7FC27297DA72A
->122 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fd cmr9 9 49
-/Fd 49 122 df<EC1FE0ECFFFC903803F01E90390FC00780EB1F8090393F000FC0017E13
-1F5BA2485AED0F8092C7FCA9ED0FC0B7FCA33901F8001F150FB3A6486CEB1FE0267FFFC1
-B5FCA328357FB42B>12 D<123C127EB4FCA21380A2127F123D1201A412031300A25A1206
-120E120C121C5A5A126009177AB315>39 D<123C127EB4FCA21380A2127F123D1201A412
-031300A25A1206120E120C121C5A5A126009177A8715>44 D<123C127E12FFA4127E123C
-08087A8715>46 D<1530157815F8A215F01401A215E01403A215C01407A21580140FA215
-005CA2143EA2143C147CA2147814F8A25C1301A25C1303A25C1307A2495AA291C7FC5BA2
-131E133EA2133C137CA2137813F8A25B1201A25B1203A2485AA25B120FA290C8FC5AA212
-1E123EA2123C127CA2127812F8A25A12601D4B7CB726>I<EB0FE0EB7FFCEBF83E3903E0
-0F803907C007C0EB8003000F14E0391F0001F0A24814F8A2003E1300007E14FCA500FE14
-FEB2007E14FCA56CEB01F8A36C14F0A2390F8003E03907C007C0A23903E00F803900F83E
-00EB7FFCEB0FE01F347DB126>I<13075B5B137FEA07FFB5FC13BFEAF83F1200B3B3A249
-7E007FB51280A319327AB126>I<EB3FC0EBFFF0000313FC380F80FF391E007F80001CEB
-3FC048EB1FE048130F15F00060130712FC6C14F87E1403A3007E1307123CC7FC15F0A214
-0F15E0EC1FC0A2EC3F801500147E5C495A5C495A495A495A49C7FC133E133C4913185B48
-5A48481330485A48C7FC001C1470001FB512F05A5AB612E0A31D327CB126>I<EB1FE0EB
-FFFC4813FF3907E03F80390F001FC0001EEB0FE0001CEB07F0123F018013F8140313C013
-80A2381F0007C7FC15F0A2EC0FE015C0141FEC3F80EC7E00EB01F8EB7FE014FCEB003FEC
-1FC0EC0FE0EC07F015F8140315FC140115FEA3127EB4FCA415FC48130312780070EB07F8
-6C14F0003C130F001FEB1FE0390FE03F800003B51200C613FCEB1FE01F347DB126>I<EC
-01C0A214031407A2140F141FA2143F147F146F14CF1301EB038F140F1307130E130C131C
-13381330137013E013C0EA0180120313001206120E120C5A123812305A12E0B71280A3C7
-380FC000A94A7E0107B51280A321337EB226>I<000C14C0380FC00F90B5128015005C5C
-14F014C0D80C18C7FC90C8FCA9EB0FC0EB7FF8EBF07C380FC03F9038001F80EC0FC0120E
-000CEB07E0A2C713F01403A215F8A41218127E12FEA315F0140712F8006014E01270EC0F
-C06C131F003C14806CEB7F00380F80FE3807FFF8000113E038003F801D347CB126>I<14
-FE903807FF80011F13E090383F00F0017C13703901F801F8EBF003EA03E01207EA0FC0EC
-01F04848C7FCA248C8FCA35A127EEB07F0EB1FFC38FE381F9038700F809038E007C039FF
-C003E0018013F0EC01F8130015FC1400A24814FEA5127EA4127F6C14FCA26C1301018013
-F8000F14F0EBC0030007EB07E03903E00FC03901F81F806CB51200EB3FFCEB0FE01F347D
-B126>I<1230123C003FB6FCA34814FEA215FC0070C7123800601430157015E04814C014
-01EC0380C7EA07001406140E5C141814385CA25CA2495A1303A3495AA2130FA3131F91C7
-FCA25BA55BA9131C20347CB126>I<EB0FE0EB7FFC90B5FC3903F01F803907C007C0390F
-0003E0000EEB01F0001E1300001C14F8003C1478A3123EA2003F14F86D13F0EBC001D81F
-F013E09038F803C0390FFE07803907FF0F006C13DE6C13F87EEB3FFE8001F713C0D803E3
-13E0D8078013F0390F007FF8001E131F003EEB07FC003C1303481301EC007E12F848143E
-A2151EA37E153C1278007C14787E6C14F0390F8003E03907F01FC00001B5120038007FFC
-EB1FE01F347DB126>I<EB0FE0EB7FF8EBFFFE3803F83F3907E00F80390FC007C0D81F80
-13E0EC03F0EA3F0048EB01F8127EA200FE14FC1400A415FEA5007E1301A2127F7E1403EA
-1F80000F13073807C00E3803E01C3801F03838007FF090381FC0FC90C7FC1401A215F8A2
-15F01403001F14E0383F800715C0140FEC1F809038003F00001C137E381F01FC380FFFF0
-000313C0C690C7FC1F347DB126>I<15E0A34A7EA24A7EA34A7EA3EC0DFE140CA2EC187F
-A34A6C7EA202707FEC601FA202E07FECC00FA2D901807F1507A249486C7EA301066D7EA2
-010E80010FB5FCA249800118C77EA24981163FA2496E7EA3496E7EA20001821607487ED8
-1FF04A7ED8FFFE49B512E0A333367DB53A>65 D<DA03FE130C91393FFF801C91B512E090
-3A03FE01F83C903A0FF0003C7CD91FC0EB0EFCD97F80130701FEC7120348481401000315
-005B4848157C485A173C485A171C123F5B007F160CA390C9FC481600AB7E6D150CA3123F
-7F001F161C17186C7E17386C6C15306C6C15706D15E012016C6CEC01C0D97F80EB0380D9
-1FC0EB0F00D90FF0131ED903FE13FC0100B512F0023F13C0DA03FEC7FC2E377CB437>67
-D<B812C0A3D803FCC7127F0001150FEE03E01601A21600A21760A403061330A41700150E
-A2151E157E90B512FEA39038FC007E151E150EA21506170CA3171892C7FCA41738A21770
-A217F01601160316070003157FB812E0A32E337DB234>69 D<B81280A3D803FCC7FC0001
-151FEE07C01603A21601A21600A41760150CA31700A2151CA2153C15FC90B5FCA3EBFC00
-153C151CA2150CA592C8FCAB487EB512FEA32B337DB232>I<DA03FE130C91393FFF801C
-91B512E0903A03FE01F83C903A0FF0003C7CD91FC0EB0EFCD97F80130701FEC712034848
-1401000315005B4848157C485A173C485A171C123F5B007F160CA390C9FC4893C7FCAA03
-03B512E07E7F92390003FE00705A123F7F121FA26C7E7F12076C7E7F6C6C14036C7E6D6C
-1307D91FC0EB0E7CD90FF0EB1C3CD903FEEBF81C0100B5EAF00C023F01C0C7FCDA03FEC8
-FC33377CB43C>I<B512FEA3000113006C5AB3B3A7487EB512FEA317337EB21C>73
-D<D8FFFC923801FFF86D5DA20003EFFE00D801BFED06FCA3D99F80140CA2D98FC01418A3
-D987E01430A2D983F01460A3D981F814C0A3D980FCEB0180A2027EEB0300A36E1306A26E
-6C5AA36E6C5AA36E6C5AA26E6C5AA36E6C5AA3913800FD80A2037FC7FCA3486C133ED80F
-F04B7EB5011C90387FFFF8A33D337CB246>77 D<B612FEEDFFC016F03A03FC0007FC0001
-EC00FE167FEE3F80EE1FC017E0160FA217F0A617E0A2EE1FC0A2EE3F80EE7F0016FEED07
-F890B65A168001FCC9FCB3A2487EB512F8A32C337DB234>80 D<90381FE00390387FFC07
-48B5FC3907F01FCF390F8003FF48C7FC003E80814880A200788000F880A46C80A27E92C7
-FC127F13C0EA3FF013FF6C13F06C13FF6C14C06C14F0C680013F7F01037F9038003FFF14
-0302001380157F153FED1FC0150F12C0A21507A37EA26CEC0F80A26C15006C5C6C143E6C
-147E01C05B39F1FC03F800E0B512E0011F138026C003FEC7FC22377CB42B>83
-D<007FB712FEA390398007F001D87C00EC003E0078161E0070160EA20060160600E01607
-A3481603A6C71500B3AB4A7E011FB512FCA330337DB237>I<B500FE90381FFFF8A30001
-90C813006C48153C1718B3AF1738017F1530A217706D6C1460011F15E06E495A010F1403
-6D6C495A6D6C49C7FCD901FC131E6DB413FC91383FFFF0020F13C0020190C8FC35357EB2
-3A>I<EB7F803803FFF0380F80FC381C003E003F133F6D6C7E6E7EA26E7EEA1F00C7FCA4
-EB01FF131FEBFF873803FC07EA0FF0EA1FC0EA3F80127F13004815C05AA3140FA26C131F
-6C133B3A3F8071F180391FC1E1FF2607FFC013003900FE003C22237DA126>97
-D<EA03F012FFA312071203AEEC3F80ECFFE09038F3C0F89038F7007E01FE7F49EB1F8049
-EB0FC05BED07E016F0A2150316F8AA16F0150716E0A2ED0FC07F6DEB1F8001ECEB3F0001
-CF137C90388381F8903801FFE0C76CC7FC25357EB32B>I<EB07F8EB3FFF9038FC07C039
-01F000E03903E003F03807C007120FEA1F80123F90380003E04890C7FCA2127E12FEAA12
-7FA26C14187F001F14386D1330000F14706C6C13E03903F001C03900FC0F8090383FFE00
-EB07F01D237EA122>I<153FEC0FFFA3EC007F81AEEB07F0EB3FFCEBFC0F3901F003BF39
-07E001FF48487E48487F8148C7FCA25A127E12FEAA127E127FA27E6C6C5BA26C6C5B6C6C
-4813803A03F007BFFC3900F81E3FEB3FFCD90FE0130026357DB32B>I<EB0FE0EB7FFCEB
-F83F3903F00F80D807E013C0390FC007E0381F800315F0EA3F0014014814F8127EA212FE
-A2B6FCA248C8FCA5127E127FA26C1418A26C6C1338000F14306D13706C6C13E03901F003
-C03900FC0F00EB3FFEEB07F01D237EA122>I<EB01FCEB07FF90381F078090383E0FC0EB
-7C1F13FCEA01F8A20003EB070049C7FCACB512F0A3D803F0C7FCB3A7487E387FFFE0A31A
-357FB417>I<151F90391FC07F809039FFF8E3C03901F07FC73907E03F033A0FC01F8380
-9039800F8000001F80EB00074880A66C5CEB800F000F5CEBC01F6C6C48C7FCEBF07C380E
-FFF8380C1FC0001CC9FCA3121EA2121F380FFFFEECFFC06C14F06C14FC4880381F000100
-3EEB007F4880ED1F8048140FA56C141F007C15006C143E6C5C390FC001F83903F007E0C6
-B51280D91FFCC7FC22337EA126>I<EA03F012FFA312071203AEEC1FC0EC7FF09038F1E0
-FC9038F3807C9038F7007E13FE497FA25BA25BB3486CEB7F80B538C7FFFCA326347EB32B
->I<EA0780EA0FC0EA1FE0A4EA0FC0EA0780C7FCAAEA07E012FFA3120F1207B3A6EA0FF0
-B5FCA310337EB215>I<EB03C0EB07E0EB0FF0A4EB07E0EB03C090C7FCAAEB03F013FFA3
-13071303B3B01238127C00FE13E0130714C0130F007C138038381F00EA1FFCEA07F01443
-84B217>I<EA03F012FFA312071203AF913803FFE0A36E1300EC00F8EC01E05D4A5A020F
-C7FC141C5C5C14F0EBF3F8EBF7FC13FEEBFC7EEBF87F496C7E141F6E7E8114076E7E8114
-016E7E81486CEBFF80B500C313F0A324347EB329>I<EA07E012FFA3120F1207B3B3A7EA
-0FF0B5FCA310347EB315>I<2703F01FE013FF00FF90267FF80313C0903BF1E07C0F03E0
-903BF3803E1C01F02807F7003F387FD803FE1470496D486C7EA2495CA2495CB3486C496C
-487EB53BC7FFFE3FFFF0A33C217EA041>I<3903F01FC000FFEB7FF09038F1E0FC9038F3
-807C3907F7007EEA03FE497FA25BA25BB3486CEB7F80B538C7FFFCA326217EA02B>I<EB
-07F0EB3FFE9038FC1F803901F007C03903C001E000078048486C7E48C7127CA248147E00
-3E143E007E143FA300FE1580A8007E1500A36C147EA26C147C6D13FC6C6C485A00075C39
-03F007E03900FC1F80D93FFEC7FCEB07F021237EA126>I<3903F03F8000FFEBFFE09038
-F3C0F89038F7007ED807FE7F6C48EB1F804914C049130F16E0ED07F0A3ED03F8A9150716
-F0A216E0150F16C06D131F6DEB3F80160001FF13FC9038F381F89038F1FFE0D9F07FC7FC
-91C8FCAA487EB512C0A325307EA02B>I<3803E07C38FFE1FF9038E38F809038E71FC0EA
-07EEEA03ECA29038FC0F8049C7FCA35BB2487EB512E0A31A217FA01E>114
-D<EBFF06000713CE381F00FE003C133E48131E140E5A1406A27EA200FE90C7FC6C7EEA7F
-FC383FFFC014F0000F7F6C7FC67FEB0FFF1300EC3F8000C0131F140F6C1307A37E15006C
-5B6C130E6C5B38F7807838E1FFE038C07F8019237EA11E>I<1330A51370A313F0A21201
-A212031207381FFFFEB5FCA23803F000AF1403A814073801F806A23800FC0EEB7E1CEB1F
-F8EB07E0182F7FAD1E>I<D803F0133F00FFEB0FFFA30007EB007F000380B35DA35D1201
-6D4813800000903803BFFC90387E073FEB1FFED907F8130026227EA02B>I<B5EBFFF0A3
-D80FF0EB3F800007EC1F000003140E150C6D131C00011418A26C6C5BA26D1370017E1360
-137F6D5BA290381F8180A214C3010F90C7FCA2EB07E6A214FE6D5AA26D5AA36D5AA21460
-24217E9F29>I<B53A1FFF81FFF0A33C07F801FC003F8001F049EB1E0000030100141C81
-6C6C017C1318A26D017E1338000002FE1330A290267E01FF5B159F168090263F030F5BA2
-16C0903A1F8607C180A202C613E390260FCC0390C7FCA2D907FC13F6ECF80116FE6D486C
-5AA36D481378A36D48133034217F9F37>I<3A7FFF807FF8A33A07F8001FC00003EC0F80
-0001EC070015066C6C5BA26D131C017E1318A26D5BA2EC8070011F1360ECC0E0010F5BA2
-903807E180A214F3010390C7FC14FBEB01FEA26D5AA31478A21430A25CA214E05CA2495A
-1278D8FC03C8FCA21306130EEA701CEA7838EA1FF0EA0FC025307F9F29>121
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fe cmtt9 9 76
-/Fe 76 123 df<00101320007C13F838FE01FCAAEAFC00007C13F8A900381370161778AE
-27>34 D<EB0380497EA5EB1FF0EBFFFE0003EBFF804814C0001F14E09038E7DFF0393F87
-C7F8387E07C3007C13C100FCEBC0FC12F814C1A300FCEBC0F800FE1470007F14001387EA
-3FFF7E6C13F86C13FE6CEBFF80C614C0010F13E06D13F014CFECC3F814C10038EBC0FC12
-7C00FE147CA412FC00FE14F8007E13C1007FEBC3F0383F87C79038F7FFE06CB512C06C14
-80000314006C13FC38003FE0EB07C0A56D5A1E3A7CB327>36 D<EB01C0EB03E0130F131F
-EB3FC0EB7F80EBFE00485A5B1203485A5B485AA2485AA248C7FCA3127EA45AAC127EA47E
-A36C7EA26C7EA26C7E7F6C7E12017F6C7EEB7F80EB3FC0EB1FE0130F1303EB01C0133A73
-B327>40 D<130F497EA60078EB81E000FEEB87F000FF138FEBDFBF6CB512E06C14C0000F
-1400000313FCC613F0A2000313FC000F13FF003F14C04814E039FFDFBFF0EB1F8F00FE13
-870078EB81E00000EB8000A66DC7FC1C207BA627>42 D<007FB512F8B612FCA46C14F81E
-067C9927>45 D<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A728927>I<1538157C15
-FCA2140115F8140315F0140715E0140F15C0141F1580143F1500A25C147E14FE5C13015C
-13035C13075C130F5CA2131F5C133F91C7FC5B137E13FE5B12015B12035BA212075B120F
-5B121F5B123F90C8FC5A127E12FE5AA25A12781E3A7CB327>I<EB07E0EB3FFC497E90B5
-FC4814803903FC3FC03907F00FE0390FE007F0EBC003391F8001F8A248C712FCA2003E14
-7C007E147EA3007C143E00FC143FAC007E147EA46C14FCA2EB8001001F14F8EBC003000F
-14F0EBE0073907F00FE03903FC3FC06CB512806C14006D5A6D5AEB07E020307DAE27>I<
-130E131FA25B5BA25B5A5A127FB5FCA213BFEA7E3F1200B3AA003FB512805A15C01580A2
-1A2F79AE27>I<EB3FE03801FFF84813FE000FEBFF804814C0393FE07FE0EB800F397F00
-07F0007EEB03F800FE13015A6C14FC1400A3127CC8FCA2140115F8A2140315F01407EC0F
-E0EC1FC0143FEC7F80ECFF00495A495A495A495A495A495A495A01FEC7FC485AD807F813
-78484813FC485A485A48B5FCB6FCA36C14F81E2F7CAE27>I<EB1FF8EBFFFE0003EBFF80
-000F14C015E0391FF01FF0393FC007F8EB800115FC1400A26CC7FC1204C8FC140115F814
-03EC07F0140FEC3FE090381FFFC0491380A215E06D13F09038001FF8EC03FC1401EC00FE
-157E157F153FA21238127C12FEA2157F48147E6C14FE007FEB01FCEB8003393FF01FF86C
-B512F06C14E000031480C6EBFE00EB1FF820307DAE27>I<EC3F804A7EA214FF5BA2EB03
-F7EB07E7A2EB0FC71487131FEB3F07A2137E13FCA2EA01F813F01203EA07E0A2EA0FC0EA
-1F80A2EA3F00123E127E5AB7128016C0A36C1580C73807C000A849B5FC491480A36D1400
-222F7EAE27>I<001FB512E04814F0A315E090C8FCACEB1FF0EBFFFC14FF158015C09038
-F03FE09038C00FF0EB0007003EEB03F8001C1301C7FC15FC1400A3127C12FEA2140115F8
-4813036C14F0007F130F9038801FE0393FE07FC06CB512806C14006C5B000113F838007F
-C01E2F7CAD27>I<14FF010713C0011F13F04913F890B5FC48EB81FC3803FE0113F8EA07
-F0EA0FE09038C000F8001F1400485A90C8FCA25A127EEB0FF838FE3FFE48B51280B612C0
-15E09038F80FF09038E007F890388001FC90C7FC15FE48147E157F153F5A7E127EA3127F
-6C147F157E6C6C13FE9038C001FC120F9038F007F83907F81FF06CB512E06C14C06C1480
-90383FFE00EB0FF820307DAE27>I<EB0FF0EB7FFE48B512804814C0000F14F0EBF81F39
-1FE007F8393F8001FC90C7FC4814FE007E147EA56C14FCEB8001391FC003F8390FE007F0
-3907FC3FE00001B5128039007FFE006D5A90B5FC000314C0390FF00FF0391FC003F8393F
-8001FC90C7FC007E147EA248143FA6007E147EA2007F14FE393F8001FC391FE007F8EBF8
-1F6CB512F06C14E00001148039007FFE00EB0FF020307DAE27>56
-D<EB0FF0EB7FFC48B5FC4814804814C0390FF81FE0391FE007F0393FC003F8EB8001D87F
-0013FC007E130012FE48147EA4157F153F157F7E127E007F14FF7E6D5A381FE007380FF0
-1F6CB6FC7E6C143F39007FFC7F90381FF07E90C7FCA215FCA2140115F8001F1303393F80
-07F0EC0FE0141FEC3FC09038C0FF806CB512005C6C13F8000313E0C6138020307DAE27>
-I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCAC121EEA7F80A2EAFFC0A4EA7F80A2EA
-1E000A20729F27>I<153815FC14011407140FEC3FF8EC7FE0ECFFC001031300495AEB1F
-F8495A495A3801FF804890C7FCEA0FFC485AEA7FF0EAFFC05BA27FEA7FF0EA1FF86C7EEA
-03FF6C7F38007FE06D7E6D7EEB07FE6D7E010013C0EC7FE0EC3FF8EC0FFC140714011400
-15381E287CAA27>60 D<007FB512FEB7FCA4003F14FEC9FCA6003FB512FEB7FCA46C14FE
-20127D9F27>I<127012FC7E6C7E7FEA7FF0EA1FF86C7EEA03FF6C7F38007FE06D7E6D7E
-EB07FE6D7E010013C0EC7FE0EC3FF8EC0FFC1407A2140FEC3FF8EC7FE0ECFFC001031300
-495AEB1FF8495A495A3801FF804890C7FCEA0FFC485AEA7FF0EAFFC05B48C8FC5A12701E
-287CAA27>I<EBFFF8000313FF000F14C0003F14E04814F09038C01FF839FF0003FC4813
-011400A21401007C1303C7EA0FF8EC1FF0EC7FE0ECFFC0491300EB03FC495A5C495A5C13
-1F5CA76DC7FC90C8FCA7130F497E497EA46D5A6DC7FC1E2E7CAD27>I<EB01FE903807FF
-80011F13C0017F13E090B512F048EB03F83803FC013907F000FC390FE01F7C9038C07FFE
-381F80FF1301485A393E07F1FF007E13E0397C0FC07FEC803FA2EAFC1F00F8EB001FA800
-FCEB803FD87C0F133EA2ECC07E397E07E0FC003E13F1393F03FFF86C6C13F0018013E039
-0FC07FC09038E01F1E3907F0003FD803FC137F3901FF03FF6CEBFFFE6D13FC011F13F001
-0713C001011300202E7DAD27>I<EB03F0497EA2497EA4143CEB1F3EA5EB3F3FA3EB3E1F
-A2017E7FA4496C7EA548486C7EA390B5FCA24880A3EBF003A248486C7EA4000F803A7FFC
-0FFF8000FF15C06D5A497E007F1580222F7EAE27>I<007FB5FCB612C08115F87E3907E0
-03FCEC00FE157E157F81A6157EA25D1403EC0FF890B55A15C015F081819038E000FE157F
-ED3F80151FA2ED0FC0A6151F1680153FED7F004A5A007FB55AB65A5D15E06C1480222E7F
-AD27>I<903803F80E90381FFE1F90383FFFBF90B6FC5A3803FE0F3807F803497E48487E
-485A49137FA248C7123FA25A127E151E150012FE5AAA7E127EA2151E007F143F7EA26C7E
-157F6D137E6C6C13FE3907F001FCEBF8033903FE0FF86CB512F06C14E0013F13C06D1300
-EB03F820307DAE27>I<387FFFFC14FFB612C06C80813907E00FF81407EC01FC6E7EA215
-7E157F811680151FA316C0150FABED1F80A3153F1600A25D15FEA24A5A4A5A140F007FB5
-5A5DB65A6C91C7FC14FC222E7FAD27>I<007FB61280B712C0A37E3907E0000FA6ED0780
-92C7FCA4EC07804A7EA390B5FCA5EBE00FA36E5A91C8FCA4ED03C0ED07E0A7007FB6FCB7
-FCA36C15C0232E7FAD27>I<007FB61280B712C0A37E3907E0000FA6ED078092C7FCA4EC
-07804A7EA390B5FCA5EBE00FA36E5A91C8FCAC387FFF80B57EA36C5B222E7EAD27>I<90
-3807F03890381FFC7C90387FFFFC90B5FC5A3803FC1F3807F00F380FE007EBC003001F13
-011380123F90C7FCA2127EA2157892C7FC5AA8EC1FFF4A1380A3007E6D1300EC00FCA36C
-1301A21380121FEBC003120FEBE0073807F00F3803FC1F6CB5FC7EEB7FFE90381FFC78D9
-07F0C7FC21307DAE27>I<3A7FFE07FFE0B54813F0A36C486C13E03A07E0007E00AF90B5
-12FEA59038E0007EB03A7FFE07FFE0B54813F0A36C486C13E0242E7FAD27>I<007FB512
-E0B612F0A36C14E039001F8000B3B2007FB512E0B612F0A36C14E01C2E7BAD27>I<9038
-1FFFF84913FCA36D13F89038001F80B3AC127CA212FEA2EC3F005C387F81FE13FF6C5B6C
-5B000713E0C690C7FC1E2F7BAD27>I<3A7FFC07FF8016C0486C5A6C487E16803A07C001
-F80014035D4A5A4A5A141F5D4AC7FC147E14FE5CEBC1F8EBC3F013C75CEBCFF0EBDFF813
-FF8013FEEBFC7E143EEBF83F497E01E07F140F01C07F1407811403816E7EA26E7E157C15
-7E3A7FFC01FFC016E0486C5A6C487E16C0232E7FAD27>I<387FFFC080B5FC7E5CD803F0
-C8FCB3AAED0780ED0FC0A7007FB6FCA2B7FC7E1680222E7FAD27>I<D87FE0EB7FE0486C
-EBFFF0A26D5A007F15E0000F150001B813DFEBBC03A3EBBE07019E139FA3EB9F0FA2018F
-131FA2149FA2EB879EA4EB839C14FCA3EB81F8A2EB80F01400AAD87FF0EBFFE0486C4813
-F0A36C486C13E0242E7FAD27>I<3A7FF003FFE0486C4813F0A213FC007F6D13E0000790
-38003E0013DEA313CFA3148013C714C0A213C314E0A213C114F0A3EBC0F8A31478147CA2
-143C143EA2141E141F140FA3EC07BEA3EC03FEEA7FFCEAFFFE1401A26C486C5A242E7FAD
-27>I<EBFFFC0007EBFF80001F14E0A24814F0EBC00F397F8007F8EB0003007E1301A348
-EB00FCB3A76C1301007E14F8A3007F1303EB8007393FE01FF090B5FC6C14E0A200071480
-C6EBFC001E307CAE27>I<007FB5FCB612E081816C803907E003FEEC00FF81ED3F80151F
-16C0150FA6151F1680153FED7F005DEC03FE90B55A5D5D5D92C7FC01E0C8FCADEA7FFEB5
-FCA36C5A222E7FAD27>I<EBFFFC0007EBFF80001F14E0A24814F0EBE01F397F8007F8EB
-0003007E1301A300FE14FC481300B3A4EB07E0A200FE13F1007E14F8EB03F9A2387F01FF
-1381D83FE013F090B5FC6C14E0A200071480C6FC9038001FC0A2EC0FE0A2EC07F0A2EC03
-F8A2EC01F01E397CAE27>I<387FFFF0B512FE6E7E816C803907E01FF014076E7E140181
-1400A514015D14034A5A141F90B55A5D5DA281EBE01F6E7E14076E7EA816F0EDF1F8A439
-7FFE01FBB5EBFFF08016E06C48EB7FC0C8EA1F00252F7FAD27>I<90387FC0E03901FFF1
-F0000713FF5A5AEA3FE0EB801F387F000F007E130712FE5A1403A3EC01E06C90C7FC127E
-127FEA3FC013F86CB47E6C13F86C13FE6CEBFF80C614C0010F13E0010013F0140FEC07F8
-1403140115FC1400127812FCA46CEB01F8A26C130390388007F09038F01FE090B5FC15C0
-150000F85B38701FF81E307CAE27>I<007FB61280B712C0A439FC03F00FA60078EC0780
-000091C7FCB3AB90B512C04880A36C5C222E7EAD27>I<3A7FFE01FFF8B54813FCA36C48
-6C13F83A07E0001F80B3AB6D133F00031500A26D5B0001147E6D13FE6C6C485A90387F87
-F814FF6D5B010F13C06D5BD901FEC7FC262F80AD27>I<3A7FFC03FFE06D5A00FF15F000
-7F15E0497E3A07E0007E00A46C6C5BA4EBF80100015CA46C6C485AA490387E07E0A56D48
-5AA4011F5B149FA3010F90C7FCA5EB07FEA46D5AA26D5A242F7FAD27>I<393FFC1FFE38
-7FFE3F815D383FFC1F3903F00FE001F85B1201EBFC1F00005CEBFE3F017E90C7FCEB7F7F
-EB3F7E14FE6D5AA26D5AA26D5AA21303130780130F80131F80EB3F7E147F497E017E7F14
-1F01FC7F140FD801F87F14071203496C7E120701E07F3A7FFC0FFF8000FF15C06D5A497E
-007F1580222E7EAD27>88 D<3A7FFC03FFE06D5A00FF15F0007F15E0497E3A07F000FE00
-00035CEBF80100015CA2EBFC0300005CEBFE07017E5BA26D485AA290381F9F80A3010F90
-C7FCA2EB07FEA26D5AA26D5AAF90381FFF80497FA36D5B242E7FAD27>I<003FB512FE48
-14FFA4007EC712FEEC01FCA2EC03F8EC07F0A2003CEB0FE0C7EA1FC0A2EC3F80EC7F00A2
-14FE5C1301495A5C1307495A5C131F495A91C7FC5B13FEA2485A4848131E153F485A485A
-A2485A485AA248C7FCB7FCA46C14FE202E7DAD27>I<387FFFF0B512F8A314F000FCC7FC
-B3B3ACB512F014F8A36C13F0153A71B327>I<127812F87EA27E127E127F7E7F121F7F12
-0F7F12077F1203A27F12017F12007F137E137F7F80131F80130FA2801307801303801301
-80130080147E147F80A21580141F15C0140F15E0140715F0140315F8140115FC1400A215
-7C15381E3A7CB327>I<387FFFF0B512F8A37EEA0001B3B3ACEA7FFFB5FCA36C13F0153A
-7EB327>I<007FB512F8B612FCA46C14F81E067C7E27>95 D<3803FFC0000F13F04813FC
-4813FF811380EC1FC0381F000F000480C71207A2EB0FFF137F0003B5FC120F5A383FFC07
-EA7FC0130012FE5AA46C130F007F131FEBC0FF6CB612806C15C07E000313F1C69038807F
-8022207C9F27>97 D<EA7FE0487EA3127F1203A914FF01F313C090B512F08181EC81FE49
-C67E49EB3F8049131F16C049130FA216E01507A6150F16C07F151F6DEB3F80157F6DEBFF
-009038FF83FEECFFFC5D5D01F313C02601E0FEC7FC232E7FAD27>I<EB0FFF017F13C048
-B512E04814F05A380FF807EA1FE0393FC003E0903880008048C8FC127EA212FE5AA67E12
-7EA2007F14F0393F8001F813C0381FE003390FF80FF06CB5FC6C14E06C14C06C6C1300EB
-0FF81D207B9F27>I<EC3FF04A7EA3143F1401A9EB0FE1EB7FFD48B5FC5A5A380FF83F38
-1FE00F383FC007EB8003EA7F00007E1301A212FE5AA67E007E1303A2127F6C1307EB800F
-381FE01F380FF03F6CB612C06C15E06C13FD38007FF9D91FE013C0232E7EAD27>I<EB0F
-F8EB3FFE90B51280000314C04814E0390FFC0FF0391FE003F8EBC001D83F8013FC48C7FC
-127E157E12FEB612FEA415FC00FCC8FC7E127E127F6C143C6D137E6C7E01F013FE390FFC
-07FC6CB5FC000114F86C14F0013F13C0903807FE001F207D9F27>I<EC1FF0ECFFF84913
-FC4913FE5BEB0FF014C0011F137CEC8000A6007FB512F0B612F8A36C14F039001F8000B3
-A4003FB512C04814E0A36C14C01F2E7EAD27>I<153F90391FC0FF80D97FF313C048B612
-E05A4814EF390FF07F873A1FC01FC3C0EDC000EB800F48486C7EA66C6C485AEBC01FA239
-0FF07F8090B5C7FC5C485BEB7FF0EB1FC090C9FCA27F6CB5FC15E015F84814FE4880EB80
-01007EC7EA3F80007C140F00FC15C0481407A46C140F007C1580007F143F6C6CEB7F0090
-38F807FF6CB55A000714F86C5CC614C0D90FFCC7FC23337EA027>I<EA7FE0487EA3127F
-1203A9147F9038F1FFC001F713F090B5FC8114C1EC01FCEBFE005B5BA25BB03A7FFF83FF
-E0B500C713F0A36C018313E0242E7FAD27>I<130F497E497EA46D5A6DC7FC90C8FCA738
-3FFF80487FA37EEA000FB3A4007FB512F0B6FC15F815F07E1D2F7BAE27>I<143C147E14
-FFA4147E143C1400A73801FFFE4813FFA37EC7123FB3B0147E1238007C13FE38FE01FC13
-03B512F814F06C13E06C13803807FE0018407CAE27>I<EA7FE07F12FF127FA21201A991
-383FFFC04A13E0A36E13C0913803F8004A5A4A5A4A5A4A5A02FFC7FCEBF1FEEBF3FCEBF7
-F8EBFFFC8080143F496C7E496C7E01F87FEBF0076E7E6E7E816E7E157E3A7FFFC1FFF002
-C313F8B512E36C13C316F0252E80AD27>I<387FFF80B57EA37EEA000FB3B2007FB512F8
-B612FCA36C14F81E2E7CAD27>I<397F07C01F3AFF9FF07FC09039FFF9FFE091B57E7E3A
-0FFC7FF1F89038F03FC001E0138001C01300A3EB803EB03A7FF0FFC3FF486C01E3138001
-F913E701F813E36C4801C313002920819F27>I<387FE07F39FFF1FFC001F713F090B5FC
-6C80000313C1EC01FCEBFE005B5BA25BB03A7FFF83FFE0B500C713F0A36C018313E02420
-7F9F27>I<EB1FE0EB7FF83801FFFE487F481480390FF03FC0391FC00FE0393F8007F0EB
-00034814F8007E1301A248EB00FCA76C1301007E14F8A2007F1303393F8007F0A2391FE0
-1FE0390FF03FC06CB512806C14006C5B38007FF8EB1FE01E207C9F27>I<387FE0FFD8FF
-F313C090B512F0816C800003EB81FE49C67E49EB3F8049131F16C049130FA216E01507A6
-150F16C07F151F6DEB3F80157F6DEBFF009038FF83FEECFFFC5D5D01F313C0D9F0FEC7FC
-91C8FCAC387FFF80B57EA36C5B23317F9F27>I<397FFC03FC39FFFE0FFF023F13804A13
-C0007F90B5FC39007FFE1F14F89138F00F809138E002004AC7FC5CA291C8FCA2137EAD00
-7FB57EB67EA36C5C22207E9F27>114 D<9038FFF3800007EBFFC0121F5A5AEB803F38FC
-000F5AA2EC07806C90C7FCEA7F8013FC383FFFF06C13FC000713FF00011480D8000F13C0
-9038003FE014070078EB03F000FC1301A27E14036CEB07E0EBE01F90B512C01580150000
-FB13FC38707FF01C207B9F27>I<133C137EA8007FB512F0B612F8A36C14F0D8007EC7FC
-AE1518157EA415FE6D13FC1483ECFFF86D13F06D13E0010313C0010013001F297EA827>
-I<397FE01FF8486C487EA3007F131F00031300B21401A21403EBFC0F6CB612E016F07EEB
-3FFE90390FF87FE024207F9F27>I<3A7FFC0FFF80486C4813C0A36C486C13803A07C000
-F800EBE00100035CA2EBF00300015CA2EBF80700005CA390387C0F80A36D48C7FCA3EB3F
-3FEB1F3EA214FE6D5AA36D5AA26D5A22207E9F27>I<3A7FFE07FFE000FF15F06D5A497E
-007F15E03A0F80001F00A36D5B0007143EA414F0EBC1F83903E3FC7CA4EBE79EA2000114
-78A301F713F8A2EBFF0F6C5CA3EBFE0790387C03E024207F9F27>I<393FFC1FFF486C5A
-168016006C487E3901F807E06C6C485A4A5A017E90C7FC6D5AEB1F7E5C6D5A13076D5A5C
-80497E130F497E143EEB3E3FEB7E1F90387C0F8001F87F00016D7E3803F0033A7FFE1FFF
-80A2B54813C06C486C1380A222207E9F27>I<3A7FFC0FFF80486C4813C0A36C486C1380
-3A07E000F800000313015D13F00001130301F85B1200A26D485A137CA290387E0F80133E
-A2011F90C7FC5CA2130F149E14BE130714FC1303A25C1301A25CA213035CA213075C1208
-EA3E0F007F5B131FD87E7FC8FCEA7FFE6C5A5B6C5AEA07C022317E9F27>I<001FB512FE
-4814FFA490380001FEEC03FCEC07F8EC0FF0001EEB1FE0C7EA3FC0EC7F80ECFF00495A49
-5A495AEB1FE0495A495A49C7FC485A4848131E4848133F485A485A485A485AB7FCA46C14
-FE20207E9F27>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff cmr7 7 4
-/Ff 4 53 df<13381378EA01F8121F12FE12E01200B3AB487EB512F8A215267BA521>49
-D<13FF000313E0380E03F0381800F848137C48137E00787F12FC6CEB1F80A4127CC7FC15
-005C143E147E147C5C495A495A5C495A010EC7FC5B5B903870018013E0EA018039030003
-0012065A001FB5FC5A485BB5FCA219267DA521>I<13FF000313E0380F01F8381C007C00
-30137E003C133E007E133FA4123CC7123E147E147C5C495AEB07E03801FF8091C7FC3800
-01E06D7E147C80143F801580A21238127C12FEA21500485B0078133E00705B6C5B381F01
-F03807FFC0C690C7FC19277DA521>I<1438A2147814F81301A2130313071306130C131C
-131813301370136013C012011380EA03005A120E120C121C5A12305A12E0B612E0A2C7EA
-F800A7497E90383FFFE0A21B277EA621>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg cmbx12 13.14 42
-/Fg 42 120 df<D807E0EB01F8D81FF8EB07FE486C497E486C4913806D15C0B55B028014
-E0A302C014F0A26C80A26C80D81FFBEB07FED807E3EB01F8D8000390C7FCA2010714014A
-14E0A2010F1403A291C713C0491407011E1580013E140F49EC1F00A249143E48485C4848
-5C000714014848495A4848495A001EC71380000C6EC7FC2C257CCB3F>34
-D<EA07E0EA1FF8EA3FFCEA7FFEA2B5FCA6EA7FFEA2EA3FFCEA1FF8EA07E01010778F22>
-46 D<15F014011407141F147FEB03FF137FB6FCA313FC1380C7FCB3B3B2007FB712E0A5
-2B4777C63D>49 D<ECFFF80107EBFF80013F14F090B612FC4881480101EBFF802707F800
-3F13C0D80FE0010F13E0D81F806D13F0003F80D87FF06D13F86D15FC6D7F00FF16FE6D14
-7FA217FF82A36C5A6C5A6C5A6C5AC95A17FEA3EEFFFCA24B13F817F05D17E04B13C01780
-4B13004B5A4B5A5EED7FE04B5A4A5B4A90C7FCEC07FC4A5A4A5A4B131FEC3F804AC7FC14
-FE4948143E495AEB07E0495A4948147E49C8FC017E15FE90B7FC4816FC5A5A5A5A5A5AB8
-FC17F8A430477AC63D>I<EC3FFE0103B512E0010F14FC013F14FF90267FE01F7F9026FF
-000713E0D801FC6D7FD803F07F486C6D7FD80FFE817F486D80167FA3805C16FF7E91C75B
-6C5A6C5AD80020495B90C75C5D5F4B5B5F031F90C7FCED3FFC4AB45A49B512E0168016E0
-16FC90C7EA3FFF030713C06F7F6F7F6F7F83707E83A2701380A318C0EA07E0EA1FF8487E
-487EA2B5FCA31880A25E491600127F494A5A6C485D01E05B001F4A5BD80FFC495B2707FF
-C03F13C06C90B65AC64BC7FC013F14F8010714E09026007FFEC8FC32487BC63D>I<EE07
-E0160FA2161F163F167F16FFA25D5D5DA25D5D5DA2157D15FDEC01F915F1EC03E11407EC
-0FC1EC1F811501143F147E14FC14F8EB01F01303EB07E014C0EB0F80131FEB3F00133E5B
-13FC485A485A5B1207485A485A90C7FC123E127E5AB912FCA5C80003EBE000AD023FB612
-FCA536487DC73D>I<D8038015E001E0140301FC143F9039FFE003FF91B612C017801700
-A25E5E16F05E5E93C7FC15FC15F001E790C8FC01E0C9FCAAEC1FFC01E1B512C001E714F0
-01EF14FC9039FFE01FFFDA0007138001FC6D13C001F06D13E04915F0497F17F8C913FC16
-7F17FEA417FFA3EA0FC0EA3FF0487EA2487EA317FEA34914FF6C4815FC5B018015F86CC7
-4813F07F6C6C4913E0D80FF04913C0D807FC011F13806CB46CB512006C90B512FC6C5D01
-3F14C0010F91C7FC010113F030487AC63D>I<ED7FF8913807FFFE021F6D7E027F80903A
-01FFF01FE0010790388003F04948486C7E49486D7ED93FF013074948130F01FF4A7E4849
-133F5C5A4890C7FCA25A705A48486E5A705A003F92C8FCA3485AA21520913807FFE0021F
-13FC00FF497F4A6D7EDAFC017F9026FDF0007F4A6D7ED9FFC06D7E4A6D7E8391C7FC8382
-491680A318C05BA3127FA6123FA27F001F1780A3000F4B1300A26C6C5DA26C6D495A6C6D
-5C6C6D495A6D6C48485A90263FFC075B6DB65A6D4AC7FC01035C010014F0020F90C8FC32
-487BC63D>I<EC1FFF49B512F0010714FC011F14FF90263FF00713C049C77F01FCEC3FF0
-4848EC0FF848481407000782491403000F821601A2121F7FA27F13FE6D140302C05C14F0
-02FC495A6C6D130FDAFF805B9238E01FE06C6E485A9238FCFF806C91B5C7FC6C15FC6C5D
-7F6D14FE6D806D15C06D81011F81017F81D9FFDF804813072603FE018048486C80484813
-3F4848010F1480003F8049130148486D6C13C0161F824848140382A282A2177FA218807F
-127FEFFF007F6C6C4A5AA2D81FFC4A5A6C6CEC0FF86C6C6CEB3FF06C9039F003FFE06C90
-B612806C6C92C7FC011F14FC010714E09026003FFEC8FC32487BC63D>56
-D<903803FFF8013FEBFF8090B612E0000315F8489038007FFCD80FF0EB1FFED81FC0EB07
-FF48C71480D87FC015C06D7F486C15E07FA66C5A6C484913C06C5A0007C7481380C81400
-5D4B5AED7FF84B5A4A13C05E4A48C7FC5D4A5A5D4A5AA24A5A5DA24AC8FCA3143EAB143C
-91C9FCA9147E49B47E497F497FA2497FA66D5BA26D5B6D5BD9007EC8FC2B4D79CC3A>63
-D<EE01F8A24C7EA34C7EA24C7EA34C7FA24C7FA34C7FA293B57EA34B8016F303038016E3
-16E103078016C0030F805E83031F814C7E4B81153E83037E81037C7F03FC815D83020182
-4B7F0203825D830207824B7F020F825D84021F8392B8FC4A83A34A83027CC8120F02FC83
-5C840101844A810103845C840107844A81010F845C85011F85496C82B600C091B712F0A5
-544D7CCC5D>65 D<B912F0F0FF8019F019FC19FFD8001F0180C780061F7F727F727F727F
-727FA2727FA2197F86A84F5AA2626062604E5B4E5B4E1380067F90C7FC943803FFFC92B7
-12F0198019F019FC0380C7383FFF80060F7F060313F0727F727F737E86851B80851BC0A2
-1BE0A48561A41BC0A2611B80611B0096B5FC4E5B4E5B060F5B067F5BBB12C097C7FC19FC
-19F04EC8FC4B4B7CCA57>I<B912F0F0FF8019F019FC19FFD8001F902680000114C0DD00
-1F7F060713F806017F726C7E737E737F737F737F8587737F8587A2747EA38786A21C80A5
-1CC0A586A462A51C80A51C00A26263A2631AFF636163614F5B634F5B073F90C7FC4F5A4F
-5A06035B061F5B4DB512C0BBC8FC19FC19F0198006F0C9FC524B7CCA5E>68
-D<B712FEA5D8000FEBE000B3B3B3ABB712FEA5274B7DCA2E>73 D<EEFFF8031FEBFFC04A
-B612FC020715FF021FD9C01F13C091277FFE000313F0902601FFF09038007FFC49496E7E
-490180EC0FFF4990C86C7F49486F7F49486F7F017F8449486F7F4849707EA24849707E48
-85A24849701380A2481AC04A82A2481AE0A34890CA6C13F0A5B519F8AE6C1AF0A26E5EA3
-6C1AE0A26E5E6C1AC0A26C1A806E5E6C1A006E5E6C616E16FF6C616C6D4B5B6D6C4B5B6E
-5D6D6D4A5B6D6D4A5B01076D4A90C7FC6D01F8ECFFFE6D01FE01035B9028007FFFC01F13
-F0021F90B612C0020793C8FC020115FCDA001F14C0030101FCC9FC4D4D79CB5C>79
-D<B912C018FCF0FF8019F085D8001F902680000713FE05007F063F1380060F13C07213E0
-1AF0841AF8A27213FCA31AFEA81AFCA34E13F8A21AF0601AE04E13C0063F138095B51200
-050713FC92B75A19E096C7FC18F803C0CAFCB3ABB712FCA5474B7BCA54>I<DA7FFCEB01
-C00103B5EAC003011FECF00749ECFC0F90B7121F48D9E00F13BF4890C713FFD807FC141F
-4848804848140382484880177F485A173F171F12FFA2170F7FA217077F7F7F6D92C7FC6D
-7E6C13F014FF15F86CECFF8016F86C15FF6C16C0836C826C826C826C82013F816D168001
-0716C01300020F15E01400030714F0ED007F160F16037013F882177F127800F8163FA317
-1FA27E18F0A27EA26CEE3FE07F18C001E0157F6DEDFF8001FC160001FF140302E0EB0FFE
-D97FFEEB3FFC486CB612F0D8FC0F5DD8F803158048C66C49C7FC48010313F0354D79CB44
->83 D<B700F00203B6FCA5D8001F01E0C93803FC00745A6D61811A036D6D5F1A076D6D5F
-1A0F6D616F161FA26D6D94C7FC626E6D153E1A7E6E177C7015FC6E5F8219016E6D5D1903
-6E5F7014076E5F82190F6E6D5D191F6E6D92C8FC616F153E83197E6F6D137C19FC6F6D5B
-18016F5DEFF003A26F01F85B18076F01FC5B180F6F5DEFFE1F6F92C9FC17FF607013BE18
-FE705BA2705BA3705BA2705BA2705BA3705BA27090CAFCA2177EA2584C7ECA5D>86
-D<B7D8E007B791B612C0A5D8003F0180C7000101FCC9387F80006F7070C7FC6D70183EA2
-6F70167E6D71177C876F1BFC6D715F6F831E016D656F4B6D14036D65876F92B515076D65
-6F4A8007F3160F6E647001036E141F6E04E194C8FCA27001076E5C6E04C0163E8770010F
-177E6E4C6C157C70011F814F6C15FC6E637049EDC0016E033E6D5D1CE070017E16036E03
-7C6D5D7001FC15F04E6D14076E63DCFF01EEF80F6F4A6D5DA20583EEFC1F6F4A6D92C9FC
-1CFE05C75F6F4A6D143E05EF16FF4E6E137E6F197C05FF17FC6F91C86C5BA36F496F5BA2
-4D816F61A26F496F5BA370486F5BA370486F90CAFCA24D81041F5FA27048167C7A4C7ECA
-7F>I<010C1403011EEC0780017E141F49EC3F004848147E49147C48485C4848495A4848
-495AA248C7485A001E5D003E140F003C92C7FC007C5CA20078141EA200F8143E48143CA2
-D8F1F8147ED8F7FE90383DFF80B5013F13C0028014E0A202C014F0A26C80A36C80028014
-E06C806C496C13C06C486D1380D801F89038007E002C2572CB3F>92
-D<ECFFFC010FEBFFC0017F14F090B612FC489038803FFE3B03FC0007FF80486C6D7F6D7F
-486D6C7F83167F83A2707E6C90C7FC6C5A6C5AC9FCA5ED1FFF021FB5FC49B6FC130F013F
-EBC03F9038FFFE00000313F04813C04890C7FC485A485AA2485AA2485AA4167FA26D14FF
-007F15EF6D01017F6C6C903907CFFF806C6CD90F8F13FE6C9038E07F076C9038FFFE0300
-014A7ED8003F9038F0007F0103018090C7FC37347CB23C>97 D<EB7FC0B5FCA512037EB3
-ED07FF037F13E002C1B512FC02C714FF9126CFF80F7F9126DFC0017F02FFC77F4AEC3FF0
-02F8814A6E7E717E4A81831980A37113C0A319E0AC19C0A35F1980A219005F606E141F6E
-5D4D5A6E4A5A02BF4A5A91261FC0035B9027FE0FF01F5B496CB548C7FCD9F80114F8496C
-6C13E0C8D80FFEC8FC3B4D7CCB44>I<91380FFF8091B512F8010314FF010F15804948C6
-13C0D97FF8EB1FE0D9FFE0EB3FF04849137F4849EBFFF84890C7FCA2485A121FA24848EC
-7FF0EE3FE0EE1FC0007F92C7FC5BA212FFAC127FA27FA2123FA26C6C153EA26C6C157E17
-7C6C6D14FC6C6D14F86C6D13036C6DEB07F0D97FFCEB1FE06DB4EBFFC0010F90B5120001
-035C010014F0020F13802F347CB237>I<EF1FF0EE3FFFA51600177FB3EC0FFF91B512E0
-010314F8010F14FC013FEB01FF903A7FF8003FFFD9FFE0130F48497F48497F4890C77E48
-815B121F5B123FA2127F5BA312FFAC127FA36C7EA3121F6D5C120F6C6C5C6C6D5B6C5D6C
-01E0013F7F6D6C49EBFFE090393FFE03FE6DB512F801075C0100148091261FFC00EBC000
-3B4D7CCB44>I<EC0FFF91B512F0010314FC010F14FF90263FFE077F90267FF0007F4948
-6D7E4801806D7E486F7E4890C7120F484881707E121F491403003F82A2127F5B701380A2
-12FFA390B8FCA401F8CAFCA5127FA27FA2123FA26C6CED0F80A26C6C151F6C17006E5C6C
-6D147E6C6D5C6C6D495AD93FFCEB07F0903A1FFF803FE0010790B55A010192C7FC6D6C13
-FC020713C031347DB238>I<ED7FF0913807FFFC023F7F4A7F902601FFE0138049018113
-C049484813E0EB0FFCEB1FF8A2EB3FF0A2017F6D13C04A6C1380EE7F00163E93C7FCACB7
-7EA526007FF0C8FCB3B3A3003FB512F8A52B4D7DCC26>I<DA7FFCEB0FE00103B538807F
-F8010F9138E1FFFC013F02FB13FE903A7FF01FFFF39026FFC007138348D9000113034816
-8348486DEBC1FCEFC0F8000FEEE00049147F001F82A9000F5E6D14FF00075EA26C6C495B
-6C93C7FC6C9038C007FE9138F01FFC4890B55A01EF14E0D803C314809026C07FFCC8FC00
-0790CAFCA47FA27F13FC90B612FCEEFFC06C16F817FE6C8218806C17C06D16E00003B812
-F0120FD81FFCC7000F13F8D83FF0140049153F4848ED1FFC00FF160F491507A56D150F00
-7F17F86D151F6C6CED3FF06C6CED7FE0D80FFE913801FFC06C6C6C010713806C01F8017F
-1300C690B612FC013F15F001071580D9003F01F0C7FC37497DB13D>I<EB7FC0B5FCA512
-037EB3923801FFC0030F13F8033F7F4B13FFDBFE077F9138C1F0039126C3E0017FDAC780
-80ECCF0014DE02DC6D7F14FC5CA25CA35CB3AAB6D8C07FEBFFE0A53B4C7BCB44>I<13FC
-EA03FF487F487FA2487FA66C5BA26C5B6C90C7FCEA00FC90C8FCABEB7FC0B5FCA512037E
-B3B3A2B61280A5194D7BCC22>I<EC01F8EC07FE4A7E4A1380A24A13C0A66E1380A26E13
-006E5AEC01F891C8FCABEDFFC049B5FCA5EB000380B3B3AC1202EA1FC0EA3FE0EA7FF0EA
-FFF84A1380A216005C5D6C48485A49485A003FEB7FF06CB55A6C1480000349C7FC38007F
-F0226386CC26>I<EB7FC0B5FCA512037EB3A293383FFFFEA5040390C7FC17FC4C5AEE0F
-E0EE3FC04C5A4CC8FC4B5AED03F8ED0FF04B5A4B5A4B5A4BC9FC14C302C77F02CF7F02DF
-7F91B5FC824A7F4A6C7EECF83F9138E01FFE02C07F6F7F816F7F836F7F81707E83707E16
-1F707E84707F84B6D8803FEBFF80A5394C7CCB41>I<EB7FC0B5FCA512037EB3B3B3AAB6
-1280A5194C7BCB22>I<90287FC001FFC0EC7FF0B5010F01FC0103B5FC033F6D010F804B
-6D4980DBFE079026803F817F9126C1F801903AC07E007FF00003D9C3E0DAE0F8806C9026
-C78000D9F1E06D7E02CFC7EBF3C002DEEDF780DD7FFF6E7E02FC93C7FC4A5DA24A5DA34A
-5DB3AAB6D8C03FB5D8F00FB512FCA55E327BB167>I<903A7FC001FFC0B5010F13F8033F
-7F4B13FFDBFE077F9138C1F00300039026C3E0017F6CD9C78080ECCF0014DE02DC6D7F14
-FC5CA25CA35CB3AAB6D8C07FEBFFE0A53B327BB144>I<913807FF80027F13F80103B6FC
-010F15C090261FFE017F903A7FF0003FF849486D7E480180EB07FE4890C76C7E48178049
-80000F17C048486E13E0A2003F17F0A249157F007F17F8A400FF17FCAB007F17F8A46C6C
-EDFFF0A2001F17E0A26C6C4A13C0A26C6C4A13806C6D4913006C5E6C01E0EB1FFC6D6C49
-5A903A3FFE01FFF0010FB612C0010392C7FCD9007F13F80207138036347DB23D>I<9039
-7FC007FFB5017F13E002C1B512FC02C714FF9126CFF80F7F9126DFC0037F000301FFC77F
-6C496E7E02F8814A6E7E717E4A81831980A28319C0A37113E0AC19C05FA319805F19005F
-606E143F6E5D4D5A6E4A5A02FF495BDBC0075B9126EFF01F5B02E7B548C7FC02E114F8DA
-E07F13E0DB0FFEC8FC92CAFCAFB612C0A53B477CB144>I<9039FF803FE0B5EBFFF80281
-13FE02837FDA87E11380EC8F830003D99F0713C06C139E14BCA214F8A24A6C13806F1300
-6F5A4A90C7FCA45CB3A8B612E0A52A327CB132>114 D<903907FF8070017FEBF1F048B6
-FC1207380FFC01391FE0003F4848130F491307127F90C71203A2481401A27FA27F01F090
-C7FC13FCEBFFC06C13FEECFFE06C14FC6C806CECFF806C15C06C15E06C15F06C7E011F14
-F8010114FCEB000FEC007FED1FFE0078140F00F8140715037E1501A27E16FC7E15036D14
-F86D13076D14F001F8EB1FE001FFEBFFC04890B51280486C1400D8F81F13FCD8E00313C0
-27347CB230>I<14F8A51301A41303A21307A2130FA2131F133F137F13FF1203000F90B5
-12F0B7FCA426007FF8C7FCB3A7167CAA013F14F880A290391FFE01F0010F1303903907FF
-87E06DEBFFC06D14806D6C1300EC0FFC26467EC430>I<D97FE0EC3FF0B5EC7FFFA50003
-15016C81B3AC5EA25EA25E7E6EEB0F7F017F021E7F6E017CEBFFE090393FFE01F86DB512
-F0010714E0010114C09027003FFE00EBC0003B337BB144>I<B600C090387FFFF0A5C601
-F0C73803F8006E5D017F5E801707013F5E6E140F011F5E6E141F6D93C7FC6F5B6D153E81
-177E6D157C6F13FC6D5DEDF0016D5DEDF803027F5CA2EDFC07023F5CEDFE0F021F5CEDFF
-1F6E91C8FC169F16BF6E13BE16FE6E5BA26E5BA26E5BA36F5AA26F5AA26F5AA23C327EB0
-41>I<B60081B500FC90387FFFF0A500019026E0000390C73801FC006E6F5C6C6F5E6E6F
-1303017F61A26E6F1307013F4A5E846E49150F011F616E6F131F6D4A93C7FC179F03806E
-5B6D021F153EEF0FFE6DD9C03F5DEE3E0703E06E13FC6D027E5DEE7C0303F015816D4A6C
-5C03F815C3DA7FF95E4C7E03FD15E7DA3FFF5E4C137F19FF6E496D5BA26E94C8FC4C7FA2
-6E5E93C7120FA26E486E5AA202015E4B1403A26E486E5A54327EB059>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh cmtt10 12 68
-/Fh 68 123 df<001EEB03C0003FEB07E0397F800FF000FF14F8A5007F14F0A9EB0007A6
-6C14E0A5001EEB03C00008EB00801D1E75BD34>34 D<141C143E147EA549B47E011F13F0
-017F13FE90B6FC000315C04815E0260FFE7E13F0D81FF0131F01E0EB07F8D83F801303D8
-7F0014FC007E140116FE5AA21503A46CEC01FCED00F8007F15001380EA3FC013F0EA1FFC
-380FFFFE7E6CEBFFE06C14F86C6C13FE011F7F01071480D9007F13C016E091387E3FF0ED
-0FF81507ED03FC15011500003E15FE127FD8FF80147EA413005A6C15FC7E15010180EB03
-F8D83FC0130701E0EB0FF0D81FF0EB3FE03A0FFE7FFFC06CB612806C15006C5C6C6C13F8
-011F13E0010390C7FCEB007EA5143E141C274D7AC434>36 D<EC0780EC0FC0143F147F14
-FF491300495A495AEB0FF0495A495A495A49C7FC5B1201485A5B12075B120F5B121F5BA2
-485AA3127F90C8FCA412FEAD127FA47F123FA36C7EA27F120F7F12077F12037F6C7E1200
-7F6D7E6D7E6D7E6D7EEB07FC6D7E903801FF806D13C0147F143F140FEC07801A4D6FC434
->40 D<147014F8497EA7007815F000FEEC03F800FF140701C1131F01E1133F01F913FF6C
-B612F0001F15C000071500000114FC6C6C13F06D5B010F1380013F13E0497F48B512FC00
-0714FF001F15C0007F15F026FFF9FC13F801E1133F01C1131F0101130700FE14030078EC
-00F000001500A76D5A1470252B79B334>42 D<EA0F80EA1FC0EA3FE0EA7FF0EAFFF8A5EA
-7FF0EA3FE0EA1FC0EA0F800D0D6D8C34>46 D<163C167C16FEA21501A2ED03FCA2ED07F8
-A2ED0FF0A2ED1FE0A216C0153FA2ED7F80A2EDFF00A24A5AA24A5AA24A5AA25D140FA24A
-5AA24A5AA24A5AA24AC7FCA25C1301A2495AA2495AA2495AA2495AA25C133FA2495AA249
-C8FCA2485AA2485AA2485AA25B120FA2485AA2485AA2485AA248C9FCA25AA2127CA2274D
-7AC434>I<147F903803FFE0497F011F13FC497F497FD9FFC17F489038007FC048486D7E
-49131F48486D7E49130748486D7EA248486D7EA248486D7EA348C8127FA500FEED3F80AE
-6C157F6C1600A46D5C003F5DA26D1301001F5D6D1303000F5D6D130700075D6D130F6C6C
-495A6D133F6C6C495A6C9038C1FF806DB5C7FC6D5B6D5B010713F06D5BD9007FC8FC293F
-7BBD34>I<EB01E0497EA21307A2130FA2131F133F137F13FF1203123FB5FC13F713E713
-87EA7E071200B3B3A2003FB512FE4880B71280A26C15006C5C213E76BD34>I<903803FF
-80011F13F0017F13FC90B6FC000315C048814801017F3A1FF8001FF801E0130F4848EB03
-FC48486D7E90C8FC824881A26D1580163FA36CC8FC123EC9FCA2167F1700A25E5E15015E
-15034B5A150F4B5A5E4B5A4B5A4A48C7FC4A5A4A5A4A5A4A5A4A5A4A5A49485A4990C8FC
-EB07FC495A495A495AEBFFC04890C7121F4848EC3F80485A485A485A48B7FC5AB8FCA27E
-6C1600293E7BBD34>I<903801FFE0011F13FC017F13FF90B612C000038148819138803F
-F83A0FF80007FC496D7E484813016D1300167FA36C5A6C5AC9FC5E5EA215014B5AA2ED0F
-F84B5A913803FFE00103B55A495C93C7FC16C016F06D8090C7EA3FFCED07FEED01FF81EE
-7F80163F17C0161F17E0160FA3123E127F487EA2161F17C090C8123F17806C157F01C0EC
-FF006C6C5BD81FF8EB07FE9039FF803FFC6C90B55A00035D6C15C06C6C91C7FC010F13FC
-010013E02B3F7CBD34>I<EDFF804A7FA25C5CA2EC0FEF141F15CFEC3F8FA2EC7F0F14FE
-A2EB01FCEB03F8A2EB07F0130F14E0EB1FC0A2EB3F80EB7F00A213FE485AA2485A12075B
-485AA2485A485AA248C7FC12FEB812F017F8A46C16F0C8380FC000AC020FB512C04A14E0
-4A14F0A26E14E06E14C02D3E7DBD34>I<0007B612F848815AA35E01C0C9FCB0EC7FC090
-38C7FFF801DF13FE90B67E82829138C07FF09039FC000FF849130701E06D7E496D7E6C48
-13006CC87EC97EA21780163FA4121C127FA2486C147F1700A290C85A5E6C14016D495A15
-07D83FE0495A6C6CEB3FF03A0FFE01FFE06CB65A6C5D6C4AC7FC6C6C5B011F13E0010390
-C8FC293E7BBC34>I<EC07FE91383FFF8091B512E001038049805B90393FFE07FC90387F
-F001D9FFC07FEC0003485A485A485A6F5A48486D5A4991C7FC121F5B123F5BA2127F90CA
-FCECFFC0010713F8D8FF1F13FE48487F90B612C0B77E9138807FF09039FC001FF8491307
-01E06D7E496D7E1500498090C87EA21780163FA27EA47F123F167F6D1500121F6D5C000F
-4A5A7F6C6C495A6DEB0FF86C6C495A6C6C6CB45A6C90B55A6D5C6D91C7FC010F13FC0103
-5B010013C0293F7BBD34>I<EC7FC0903807FFFC011F13FF017F14C090B67E4881489038
-C07FF83A07FE000FFCD80FF8EB03FE49130148486D7E4980003F168049143FA66C6CEC7F
-00A26C6C14FE6D13016C6C495AD803FEEB0FF83A01FF803FF06C6CB512C06D5C010F49C7
-FC6D5B013FEBFF8090B612E0489038C07FF03A03FE000FF8D80FF8EB03FE491301D81FC0
-EB007F003F168049143F48C8EA1FC0A200FEED0FE0A7007FED1FC0A26D143F003F16806D
-147F6C6CECFF0001F81303D80FFEEB0FFE3A07FF803FFC6C90B55A6C5D6C6C14C0011F91
-C7FC010713FC010013E02B3F7CBD34>56 D<ECFF80010713F0011F13FC017F7F90B6FC48
-814801807F3A07FC003FE04848EB0FF04848130748488049130348486D7E90C7FC824814
-005A8282A41780A27E7EA26D14FF003F5C7F6C6C5B6C6C130F01FC5B6CB490B5FC6C90B6
-FC6C15BF6C6CEBFE3F6DEBFC7F010F01F013000101138090C8FCA25E5EA24B5AA21503D8
-0F805C486C1307486C495A4B5A153F4B5A49495A001F010390C7FC9038F80FFE6CB55A5D
-6C14E000015C6C91C8FCEB1FF8293F7BBD34>I<160F163FEEFF805D15074B1300153FED
-7FFC913801FFF04A5B020F1380023F90C7FCEC7FFC49485A4913E0010F5B4990C8FCEB7F
-FC495A000313E0485B001F90C9FCEA7FFE13F8485A13C013F06C7E13FEEA1FFF000713C0
-6C7FC613F86D7EEB1FFF6D13C001037F6D13F86D6C7E6EB4FC020F7F020313E06E7F9138
-007FFC6FB4FC150F6F1380150181EE3F00160F29337BB734>60 D<007FB712C0A2B812E0
-A36C16C06C1680CBFCA9003FB712804816C0B812E0A36C16C0A22B177CA934>I<127812
-7EB47E7F13F06C7E13FEEA1FFF000713C06C7FC613F8EB7FFEEB1FFF6D13C001037F6D13
-F86D6C7EEC1FFF6E7F020313E06E7F9138007FFC6FB4FC150F6F1380150115074B130015
-3FED7FFC913801FFF04A5B020F13804A90C7FCEC7FFC49485A4913E0010F5B4990C8FCEB
-7FFEEBFFF8000313E0485B001F90C9FCEA7FFE13F8485A13C05B007ECAFC127829337BB7
-34>I<90380FFFC0017F13FC48B6FC000715C04815E04815F0263FFC0013F8D87FC0EB0F
-FC49130348C7EA01FE6D1300A46CC71201003E15FC001C1407C8EA1FF8ED3FF0EDFFE04A
-13C04A1380913807FE00EC0FF84A5A4A5A4A5A4A5A92C7FC5B5CA213035CA86D5A6D5A91
-C8FCA914F0497E497E497EA46D5A6D5A6D5A273E7ABD34>I<EC07FCEC3FFF91B512C001
-03804980498090393FFC07FC90397FE001FE9038FF800091C7127F484880D803F8017F13
-800007903801FFDF494813FF48484814C0495A001F5B9038803FC1003FEB7F800100EB00
-7F02FEEB3FE04849131FEA7E014A130FA212FEEAFC034A1307A96E130FD8FE0115C0127E
-A26E131FD87F0015806C6D133F027FEB7F0001806D5A001F90383FC1FE6D6CB45A000F6D
-5B6D6C5B6C6C6C5B6D6C5B00036D6CC7FCD801FE90380007C06C6CEC0FE06E133FD97FE0
-137F90393FFC03FF010FB612806D15006D5C010014F8023F13E0DA07FEC7FC2B3F7CBD34
->I<EC1FC04A7E4A7EA54A7E14FDA301017FA214F8A201037FA4ECF07E0107137FA44948
-6C7EA549486C7EA4013F80EC800FA449486C7EA291B5FCA290B67EA49038FE000348486D
-7EA4000381491300A43B7FFF800FFFF0B56C4813F8A46C496C13F02D3E7DBD34>I<003F
-B512FE48ECFFC0B712F0826C816C813A01FC0003FF03001380167FEE3FC0161FA217E016
-0FA6EE1FC0A2163FEE7F80EEFF005DED07FE90B65A16F05EA216F816FE9039FC0003FF03
-001380EE3FC0161FEE0FE017F01607A2EE03F8A7160717F0A2160FEE1FE0163FEEFFC015
-03003FB71280481600B75A16F86C15E06C15802D3D7EBC34>I<91391FF003C09139FFFE
-07E00103EBFF874914CF011F14EF4914FF90387FF01F9038FFC00748EB0001497F484814
-7F485A49143F120F49141F121F5B003F150F5BA2127F90C8EA07C093C7FCA312FEAD127F
-A46DEC07C0003FED0FE0A27F121F7F000F151F6D15C012076D143F6C6CEC7F806C6C14FF
-6D4913006C9038C003FE90397FF01FFC6DB55A6D5C01075C6D1480010049C7FCEC1FF02B
-3F7CBD34>I<007FB512F0B612FE6F7E82826C813A03F8003FF8ED0FFC6F7E15036F7E81
-EE7F80163F17C0161F17E0160FA217F01607A417F81603AC160717F0A4EE0FE0A2161F17
-C0163FA2EE7F8016FF17004B5A15074B5AED3FF8007FB65AB75A5E5E4BC7FC6C14F02D3D
-7EBC34>I<003FB712F04816F8B8FCA27E7ED801FCC71203A8EE01F093C7FCA5ED0F804B
-7EA590B6FCA69038FC001FA56F5A92C8FCA6177C17FEAA003FB7FC5AB8FCA27E6C16FC2F
-3D7EBC34>I<007FB712F0B812F8A47ED801FCC71203A8EE01F093C7FCA6ED0F804B7EA5
-90B6FCA69038FC001FA56F5A92C8FCB0387FFFF8B57E80A25C6C5B2D3D7DBC34>I<9138
-3FC01E903901FFF03F010713FC49EBFF7F495C5B90387FE07F9038FF801F4848487E4848
-7F497F000780485A497F121F5B82485AA348C8FC163E93C7FCA25A5AA992383FFFE04B13
-F017F8A26C16F06C6E13E09238007F00A36C6C5CA36C7EA26D5B120F6D5B6C7E00035C7F
-6C6C5B6C6C6C5A90387FE07F6DB6FC6D806D13FE6D13FC0101EBF03E9026003FC0C7FC2D
-3F7CBD34>I<3B7FFFC007FFFCB56C4813FEA46C496C13FCD803F8C7EA3F80B3A290B7FC
-A601F8C7123FB3A53B7FFFC007FFFCB56C4813FEA46C496C13FC2F3D7EBC34>I<007FB6
-12C0B712E0A46C15C0260003F8C7FCB3B3AD007FB612C0B712E0A46C15C0233D78BC34>
-I<91B512FC4914FE4914FFA26D14FE6D14FC9138003F80B3B3A4121C123E127F487EA215
-7F160090C75A397F8003FE9038F00FFC6CB55A6C5C6C5C00035CC691C7FCEB1FF8283E79
-BC34>I<3B7FFF8003FFF0B56C4813F817FCA217F86C496C13F0D803F0C7EA7F0016FE4B
-5A15034B5A5E4B5A4B5A153F4B5A93C7FC15FE4A5A14034A5A5D4A5A4A5A143F4A5AA24A
-7E13F101F37F13F7ECF7F0EBFFE3ECC3F8ECC1FC1481EC00FE5B49137F81498049131F82
-150F826F7EA26F7EA26F7E150082167E167F823B7FFF8001FFF0B56C4813F817FCA217F8
-6C496C13F02E3D7EBC34>I<383FFFFE487FB6FCA27E6C5BC648C9FCB3B3A2177017F8EE
-01FCA9003FB7FC5AB8FCA27E6C16F82E3D7EBC34>I<D87FF8EC3FFC486CEC7FFE6D14FF
-A36C6C4913FC000716C001EF14EFEC8003A49039E7C007CFA3ECE00FA201E3148FECF01F
-A301E1140FECF83FA201E0133EA2ECFC7EA2EC7C7CA2EC7EFCEC3EF8A3EC1FF0A4EC0FE0
-A2EC038091C7FCAED87FFEECFFFCB54913FEA46C486D13FC2F3D7EBC34>I<D87FFC9038
-0FFFF0486C4913F87FA214806C6E13F000039138007E00EBF7C0A3EBF3E0A38013F1A280
-13F0A280A2147C147EA2143E143FA2801580A2140F15C0A2140715E0A2140315F0A21401
-15F8A21400A215FC157CA2157E153EA3151FA3ED0FFE387FFF80B512C01507A215036C49
-6C5A2D3D7DBC34>I<90381FFFFC90B67E000315E04881488148813A3FFC001FFE01E013
-0349130148486D7EA290C87EA500FEED3F80B3AC6C157F6C1600A46D5CA26D5B003F5D01
-F0130701FE133F6CB65A6C5D6C5D6C5DC61580011F01FCC7FC293F7BBD34>I<003FB512
-FE48ECFFC0B712F016FC6C816C812701FC00071380030113C0ED007FEE3FE0161FEE0FF0
-1607A217F81603A6160717F0A2160FEE1FE0163FEE7FC0ED01FF0307138090B712005E5E
-16F016C04BC7FC01FCC9FCB3383FFFE0487FB57EA26C5B6C5B2D3D7EBC34>I<90381FFF
-FC90B67E000315E04881488148813A3FFC001FFE01F0130701C0130148486D7EA390C87E
-A448168048153FB3AAEC1F806C013F137F6C02C01300A2EC1FE0A26D6C6C5AA26E7E3A3F
-C003F9FE01F013FFEBFC016CB65A6C5D6C5D6C5DC61580011F8090C7123F6F7EA26F7EA2
-6F7E8215038215018281167E294C7BBD34>I<007FB512C0B612F815FE6F7E826C812603
-F8007FED1FF8ED07FC15036F7E1500A28282A55E5EA215014B5A1507ED1FF8EDFFF090B6
-5A5E5E93C8FC8282EBF800ED1FE06F7E1507A26F7EAA171FEF3F80A416FC0301137F267F
-FFC01500B56C6CB5FC5F167F705A6C496D5AC9EA07E0313E7EBC34>I<D907FE13789039
-1FFFE0FC017F13F848B512FD4814FF5A380FFE03391FF0007FD83FC0131F49130F007F14
-0790C7FC4814035AA21501A46C6E5A6C92C7FC7F7F6C7E13F86CB4FC6C13F06C13FF6C14
-F06C14FE6C6C7F011F14C0010180D9001F7F02017F9138001FFC15076F7E15016F7E8217
-80A2003C153F127E12FEA46C157F1700A26D14FE6D13016D495A01FC13079039FFC03FF8
-91B55A5E485DD8FC3F91C7FC010F13FCD8780013E0293F7BBD34>I<003FB712F04816F8
-B8FCA43AFE001FC003A8007CED01F0C791C7FCB3B3A4010FB57E49804980A26D5C6D5C2D
-3D7DBC34>I<263FFFE090B51280486D4814C0B56C4814E0A26C496C14C06C496C1480D8
-01FCC73807F000B3B3A36D140F00005EA26D141F6D5D6E133F013F5D6E137F6D6C49C7FC
-6D6C485AECFE0F6DB55A6D5C010014E06E5B021F90C8FCEC07FC333E80BC34>I<D87FFF
-903801FFFCB56C4813FE6E5AA24A7E6C496C13FCD807F89038003FC000031680A36D147F
-00011600A36D5C00005DA4017F495AA46D6C485AA4ECC007011F5CA3ECE00F010F5CA46D
-6C485AA46D6C485AA4010191C7FC6E5AA30100137EA2ECFEFEA2EC7EFCA2147FA26E5AA4
-6E5A6E5A2F3E7EBC34>I<3B3FFFC03FFF80486D4813C092B5FCA2816C496C13803B01FE
-000FF00012006D5C6D131F02805B013F133F02C05B011F137F02E090C7FC6D6C5A5DEB07
-F95DEB03FF5D7F5D7F5D147F5D143F5D8181147F8114FF815B81EB03F981EB07F0814948
-7E8290381FC03F82013F131F02807F017F130F02007F4913074980000114034980000314
-014980D87FFF90380FFFF0B56C4813F814C0A214806C496C13F02D3D7DBC34>88
-D<001FB7FC4816805AA490C813004B5AA24B5A4B5AA24B5A4B5A123EC8485A5E157F4BC7
-FCA24A5A4A5AA24A5A4A5AA24A5A4A5AA24A5A92C8FC5C495AA2495A495AA2495A495AA2
-495A495AA249C9FC49EC0F800001ED1FC0485AA2485A485AA2485A485AA2485A90B7FCB8
-FCA46C16802A3D7BBC34>90 D<007FB51280B612C0A4158048C8FCB3B3B3ABB6128015C0
-A46C14801A4D6BC434>I<127CA212FEA27EA26C7EA26C7EA26C7EA26C7EA212077FA26C
-7EA26C7EA26C7EA26D7EA26D7EA2131F80A26D7EA26D7EA26D7EA26D7EA2130080A26E7E
-A26E7EA26E7EA26E7EA2140781A26E7EA26E7EA26E7EA2ED7F80A2ED3FC0A2151F16E0A2
-ED0FF0A2ED07F8A2ED03FCA2ED01FEA21500A2167C163C274D7AC434>I<007FB51280B6
-12C0A47EC7121FB3B3B3AB007FB5FCB6FCA46C14801A4D7CC434>I<007FB7FCA2B81280
-A36C1600A229077B7D34>95 D<EB1FFE90B512C0000314F04880488081391FF807FF49C6
-7F6F7E151F826C48130F6C4880C81207A4EC01FF91B5FC1307133F90B6FC120348140748
-13C0381FFC00EA3FF0EA7FC05B48C7FC5AA56C140F7E6D131FD83FE0EB7FF8D9F807B512
-F86CB712FC7E000314FD6C14F06C6C9038C01FF8D90FFCC8FC2E2E7BAC34>97
-D<EC7FF80103B5FC010F14C0013F14E04914F090B6FC489038C01FF83903FE000F485A48
-5A5B4848EB07F049EB03E0484890C7FCA2127F90C9FCA25A5AA97E7EA27F003F15F86DEB
-01FC6C7EA26C6C1303D807FCEB07F86C6C130F3A01FFC07FF06C90B512E06D14C06D1480
-010F1400010313FC9038007FE0262E79AC34>99 D<ED7FFC4B7EA4157F1500ABECFF8001
-0313F0010F13F8013F13FE4913FF48B6FC4813C09038FE003FD807F8130F484813074848
-13035B003F14015B007F140090C8FCA25A5AA97E6C1401A27F003F14037F001F14077F6C
-6C130F6D131F6C6C137F2603FF81B512FC6C90B612FE6C5C6D5B011F13F001079038E07F
-FC010090C8FC2F3E7DBC34>I<ECFFC0010313F0010F13FC013F13FF49148090B612C048
-01C013E03A03FE001FF04848EB0FF8D80FF013074848EB03FC1501485A49EB00FE127F90
-C8FC16FF167F5A5AB8FCA516FE48C9FC7E7EA27F123F6D143E001F157F7F6C7E6D14FF6C
-6CEB01FE6CB413076C9038E03FFC6C90B512F86D14F0011F14E06D14800101EBFE009038
-003FF0282E7BAC34>I<ED3FF0913801FFFC02077F4A7F4A14805CEC7FE015809139FF00
-7F005C0101141C4A90C7FCA8003FB612FC4881B7FCA36C5D260001FCC8FCB3AD001FB612
-C048814881A26C5D6C5D293E7DBD34>I<49B4EB1FE001079038C0FFF8011F01F313FC01
-7F90B512FE90B7FC5A48018313F1903AFC007F80FC484890383FC07849011F130048486D
-7EA2001F81491307A66D130F000F5DA26C6C495A6D133F6C6C495A9038FF83FF91B5C7FC
-485C5D4814F001C713C001C190C8FC01C0C9FCA47F6C7E90B512FE6CECFFE06C15F80007
-15FE48814816809026F0000313C0D83FC09038003FE090C8120F48ED07F0007E150300FE
-16F8481501A56C1503007E16F0007F15076C6CEC0FE001E0143FD81FF8ECFFC0270FFF80
-0F13806C90B612006C5DC615F8013F14E0010F1480010001F8C7FC2F447DAB34>I<EA7F
-FC487EA4127F1200AB15FF020713E0021F7F027F7F91B57E90B67E15819138FC00FF02F0
-7F4A804A133F5CA291C7FCA35BB3A4277FFFFC0FB5FCB56C481480A46C496C1400313D7F
-BC34>I<14F0497E497E497EA46D5A6D5A6D5A91C8FCA9383FFFFC487FA47EC7FCB3AD00
-3FB612F04815F8B7FCA27E6C15F0253E79BD34>I<383FFFFE487FB6FCA27E7EC77EB3B3
-AD003FB612FE4881B81280A26C16006C5D293D7BBC34>108 D<027FEB1FC03B3FE1FF80
-7FE0D87FF39038E0FFF8B612E303F77F6C91B57E6C01C313F000030181EBE07ED9FE01EB
-807F6E80491400A2495BA3495BB3A53C3FFF03FFC0FFF048018701E113F8B500CF01F313
-FCA26C018701E113F86C010301C013F0362C81AB34>I<15FF267FFC0713E026FFFE1F7F
-027F7F91B57E90B67E6C1481C69038FC00FF02F07F4A804A133F5CA291C7FCA35BB3A427
-7FFFFC0FB5FCB56C481480A46C496C1400312C7FAB34>I<14FE903807FFC0011F13F001
-7F13FC90B57E488048010113803A07FC007FC04848EB3FE049131F4848EB0FF049130700
-3F15F8491303007F15FC90C71201A300FEEC00FEAA6C14016C15FCA26D1303003F15F86D
-1307A26C6CEB0FF06C6CEB1FE06D133F6C6CEB7FC03A03FF83FF806C90B512006C5C6D5B
-011F13F0010713C0010190C7FC272E7AAC34>I<EC01FE3A7FFC0FFFC026FFFE3F13F04A
-13FC90B67E826C02031380C69039F8007FC04AEB3FE04A131F4AEB0FF04A130791C713F8
-160317FC491401A217FE1600A916016D15FCA2160317F86E130717F06E130F6EEB1FE06E
-EB3FC06EEBFF80ECFE0791B612004914FC6E5B6E13E0020F1380DA03FEC7FC91C9FCAF38
-7FFFFCB57EA46C5B2F427FAB34>I<4BB4FC273FFFC00F13C048D9E03F13E0B590B512F0
-02E114F86C13E76C01EF130FD8000F13F8ECFFE09238C007F092388003E092C8FC5C5CA2
-5CA25CA45CB1003FB6FC4881B77EA26C5D6C92C7FC2D2C7DAB34>114
-D<90390FFF078090B5EACFC0000314FF5A5A5A383FF803397F80007F90C7123F12FE4814
-1FA47E007FEC0F8001C090C7FCEA3FF8381FFFE06C13FF6C14E06C14F8C614FE011F7FD9
-007F1380020313C09138003FE0ED0FF0003C1407007EEC03F800FE1401A27EA36D13036D
-14F06D13076DEB1FE001FE13FF90B612C016801600D8FC7F13FC6D13F0D878071380252E
-79AC34>I<EB01E0497E1307AA003FB612FE4881B8FCA36C5D260007F0C8FCB3A3EE0F80
-EE1FC0A66EEB3F800103147F6E13FF902601FF031300EDFFFE6D5C6E5B6E5B020F13C002
-0190C7FC2A387EB634>I<D87FFCEB1FFF486C497FA4007F800000EC003FB3A7167FA216
-FFA26D5B6D1307DAE01F13FF6DB712807F7F6D143F0101D9FC1F13009026007FF0C8FC31
-2C7FAA34>I<3B3FFFE00FFFF8486D4813FCB515FEA26C16FC6C496C13F8D801FCC7EA7F
-000000157EA26D14FE017E5CA2017F13016D5CA2EC8003011F5CA2ECC007010F5CA2ECE0
-0F01075CA36D6C485AA3ECF83F010191C7FCA26E5A0100137EA2ECFEFEEC7EFCA2147F6E
-5AA36E5A6E5A2F2B7EAA34>I<3B3FFFE07FFFC0486DB512E0B515F0A26C16E06C496C13
-C0C690390007F0006D495A6D6C485AEB1FC06E485A010F49C7FC903807F0FEEB03F89038
-01F9FCECFFF86D5B147F6E5A5D6E5A81143F4A7E81ECFDF8EB01F9903803F8FCECF07E90
-3807E07F010F6D7E90381FC01F02807F013F6D7E49486C7E137E01FE6D7E3B7FFFC01FFF
-F0B56C4813F86E5AA24A7E6C496C13F02D2B7DAA34>120 D<000FB712C04816E05AA317
-C00180C713804B13004B5A4B5A4B5A4B5A6CC7485AC8485A4B5A4A90C7FC4A5A4A5A4A5A
-4A5A4A5A4A5A4A5A4990C8FC495A495A495A495A495A4948EB07C04948EB0FE04890C7FC
-485A485A485A485A485A48B7FCB8FCA46C16C02B2B7DAA34>122
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi cmb10 10.95 21
-/Fi 21 122 df<B812F8A417FCC69038F8007F161F1607160316011600A2177EA3173EA2
-ED03E0A2171FA417001507A2150F153F91B5FCA5ECF83F150F1507A21503A792C8FCACB6
-12FEA5303D7CBC39>70 D<B500F891B512FC80A28080C6933800FC008181A28181A201FD
-7F01FC7FA26E7E6E7E80826E7F80826E7F6E7FA26E7F6F7EA26F7E6F1380A26F13C06F13
-E0A26F13F06F13F8A26F13FCEE7FFEA2EE3FFF82A28282A2828282A2177F173FA2171F17
-0FA21707B500FC1403A217011700A23E3E7CBD47>78 D<B712E016FF17C017F883C69039
-F0007FFE93381FFF801607707F84A2707FA284A860A24C5BA2604C5B041F90C7FCEEFFFE
-91B612F817E094C8FC17C0DAF00113F06F6C7E707E83161F83A2707FA684A6191F18E0A2
-82F0F03FB6D8F003143E70EBF87E70EBFFFC053F13F8050F13F0CB13C0403F7CBD45>82
-D<EAFFFEA6EAFC00B3B3B3B3A7EAFFFEA60F5B78C319>91 D<EAFFFEA6EA007EB3B3B3B3
-A7EAFFFEA60F5B7FC319>93 D<EB0FFE90387FFFC048B512F04814FC3907FC0FFE48486C
-7E6D6C7F486C7E82A26E7FA36C5A6C5AEA01E0C8FC5C49B5FC131F90B6FC000313F84813
-C0481300EA1FFC485A127F5B12FF5BA45CA26C6C5A16F83B3FF807BFFF80391FFC1F3F39
-0FFFFE1F6C497E0001EBF80326003FE0C8FC292B7EA92C>97 D<EB03FF011F13E0017F13
-F890B57E48EB83FE3903FE01FF00075B4848481380121F13F8123FA2127F496C13006E5A
-EC007800FF91C7FCAC127FA27F003FEC07C0A26C6C130F16806C6C131F000715006C6C13
-7F6CEBC1FE6CEBFFFC6D13F0011F5B010390C7FC222B7DA928>99
-D<16FF92B5FCA5150781AFEB01FF011F13E3017F13FB90B7FC4813C148EB003F48487F48
-487F001F805B123FA2485AA312FFAC127FA36C7EA3001F5C6C6C5B00074A13806D4913FC
-2603FF83B5FCC690B6FC6D13F7011F13C7903A03FE07FC002E407DBE33>I<49B47E010F
-13F0013F7F90B512FE48EBC3FF48010013804848EB7FC04848133F001F15E05B003FEC1F
-F0A2485A150F16F8A212FFA290B6FCA401F0C8FCA5127FA37F003F15F8A26C6C1301000F
-15F06D13036C6CEB07E06C9038800FC06C9038F07F806C6CB512006D5B010F13F8010013
-C0252B7EA92A>I<EC1FF8ECFFFE01077F491480D91FF813C0D93FE013E0EB7FC1EBFF81
-481301A348486C13C0ED7F80ED3F0092C7FCAAB6FCA5000390C8FCB3ACB6FCA523407EBF
-1C>I<EA01F8487E487E487E481380A66C13006C5A6C5A6C5AC8FCA913FFB5FCA512077E
-B3ABB512F8A515407EBF19>105 D<13FFB5FCA512077EB092B512E0A592380FE0004B5A
-4B5A4BC7FC15FE4A5A4A5A4A5A4A5A4A5A143FECFFE0A28181A2ECDFFCEC8FFE140F6E7E
-6E7FA26E7F6E7FA26F7E6F7EA26F7E6F7EB539FC7FFFF8A52D3F7FBE30>107
-D<13FFB5FCA512077EB3B3AFB512FCA5163F7EBE19>I<01FFD97FE0EB3FF0B52601FFF8
-EBFFFC0207D9FC037F4A6D487F91281FC3FF0FE17FDA3E03D99F017F0007017C14BE6CD9
-7801EBBC0002F002F88002E05CA202C05CA302805CB3A4B5D8FE1FD9FF0FEBFF80A54929
-7EA84C>I<01FFEB7FE0B53801FFF802077F4A7F91381FC3FFDA3E0313800007137C6CEB
-780102F014C014E0A214C0A31480B3A4B5D8FE1F13FFA530297EA833>I<49B47E010F13
-F0013F13FC90B6FC48018113803A03FE007FC04848EB3FE0000F15F049131F001F15F8A2
-4848EB0FFCA2007F15FEA400FF15FFAB007F15FEA3003F15FC6D131F001F15F8A26C6CEB
-3FF0000715E06C6CEB7FC03A01FF81FF806C90B51200013F13FC010F13F001011380282B
-7EA92D>I<3901FE07F800FFEB0FFE91383FFF804A13C0EC7C7F9138F8FFE03807FFF06C
-5B5CA2ED7FC09138803F80ED1F0092C7FCA291C8FCB3A3B6FCA523297FA827>114
-D<131FA65BA55BA25BA25A5A5A001FEBFFC0B6FCA4000790C7FCB3EC03E0A97EEC87C0A2
-6CEBCF806C13FF6D1300EB1FFEEB07F81B3B7EB923>116 D<D9FF80EB7FC0B5EB7FFFA5
-000714036C80B3A55DA35D7E4B13E0DAC01E13FF6CEBE07E6DB45A6D5B010F13E0010101
-801300302A7EA833>I<B500E1B53887FFF8A50007903B801FF0003F006C6F133E150F02
-C0157E6C4A6C137CA26C01E05D4B7EA2D97FF04A5AED7FFF157DD93FF84A5A03FD138303
-F81387D91FFCECC7C014FD9238F07FCFD90FFFECEF80A29238E03FFF6D93C7FCA24B7E6D
-5DA2ED800F6D5DA2ED00076D5DA24A1303027E5C027C13013D287EA742>119
-D<B539FC1FFFE0A5000390398000F800ECC0016C5DA2ECE0036C5D1507D97FF05BA2ECF8
-0F013F5CA2ECFC1F011F91C7FC5D90380FFE3EA2157E903807FF7CA215FC6D5BA26D5BA3
-6D5BA36E5AA26E5AA36EC8FCA25C143EA2000E5BEA3F80387FC0FC486C5AA2EBE1F0A2EB
-E3E013C7387FCFC0387D3F80D83FFFC9FC5BEA0FF8EA07E02B3B7EA730>121
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fj cmss10 10.95 2
-/Fj 2 42 df<14FCEB01F8EB03F0EB07E0EB0FC0131F1480EB3F005B137E5B12015B1203
-A2485AA25B120FA25B121FA25B123FA448C7FCA712FEB3A2127FA76C7EA4121F7FA2120F
-7FA212077FA26C7EA212017F1200137E137F7FEB1F8014C0130FEB07E0EB03F0EB01F8EB
-00FC165A79C323>40 D<12FC127E7E6C7E6C7E7F12076C7E7F12016C7E7F137E137FA2EB
-3F80A2131F14C0A2130F14E0A2130714F0A4EB03F8A7EB01FCB3A2EB03F8A7EB07F0A414
-E0130FA214C0131FA21480133FA2EB7F00A2137E13FE5B485A12035B485A120F5B485A48
-C7FC127E5A165A7BC323>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fk cmbx10 12 48
-/Fk 48 123 df<ED1FFF0203B512E0021F14F8027F80903A01FFF803FE499038C0007F01
-0F90390001FF80D91FFC497F4A5B495A495AA201FF4A7F4A6D5BA3705B7090C7FC705A94
-C8FCA693387FFFE0B9FCA5C601E0C7FCB3B0007F9026FFC07FEBFFC0A53A467EC540>12
-D<EC01E014031407EC0FC0EC3F80EC7F0014FE495A5C1303495A495A131F5C133F495AA2
-49C7FCA2485AA212035B1207A2485AA3121F5BA2123FA35B127FA612FFA25BAE7FA2127F
-A6123F7FA3121FA27F120FA36C7EA212037F1201A26C7EA26D7EA26D7E131F80130F6D7E
-6D7E1301806D7E147FEC3F80EC0FC0EC07E0140314011B6475CA2D>40
-D<903801FFE0011F13FE017F6D7E48B612E048812607FE0713FC260FF0007FD81FC06D7E
-4848011F1380EA7FE06D6D13C0487E6D6D13E0A26F13F0A46C5AA26C5A6C5AC8FC17E05D
-A217C05D17804B13005E4B5A5E4B5A4B5A4A5B5E4A90C7FCEC07FC4A5A4A5A4A5A91397F
-8001F0ECFF005C495AD903F0EB03E0495A495A495A49C71207017E140F90B7FC4816C05A
-5A5A5A5A5AB8FC1780A42C417AC039>50 D<EE0FC04C7EA24C7EA34C7EA24C7EA24B7FA3
-4B7FA24B80A34B8016CF031F80168F1687033F801603037F80157E8203FE804B7E020181
-4B137FA20203814B7F0207824B7FA2020F824B7F021F824B7F023F82A292C77E4AB77EA2
-91B87EA3D901FCC87F4A157F0103835C840107844A81010F844A81A2011F844A81013F84
-496C81B600C0010FB612FCA54E457CC457>65 D<B912C018FCF0FF8019E019F8D8001F90
-C700037F9438007FFE727E7213807213C0841AE0A2841AF0A71AE0601AC0604E13801A00
-4E5AF0FFFC050313F0053F5B92B7C7FC18FCF0FFC019F892C86C7EF01FFF7213807213C0
-7213E01AF07213F8A27213FCA31AFEA2197FA319FFA21AFCA2601AF8604E13F0A2061F13
-E04E13C04DB51280BAEAFE006119F0198006F0C7FC47447DC351>I<DCFFFC141C031FD9
-FFC0137C4AB600F813FC0207EDFE01021FEDFF03027FD9F00113C749B5C7EA3FEF4901F8
-EC0FFF010F01E01403490180804990C9FC4948167F4948163F4849161F4849160F5C4818
-0748491603A2485B19015A91CAFC19005AA3491800A212FFAC127FA27F1A7CA27EA2806C
-19FC1AF86C7F19016C7F6CF003F0806C6DEE07E06C6DEE0FC06D6C161F6D6CEE3F806D6D
-ED7F006D01E0EC01FE010301F8EC07FC6D01FFEC1FF86D6C9039F801FFE0021F90B65A02
-0793C7FC020115FCDA001F14E0030049C8FC46467AC453>I<BA12FCA485D8001F903880
-0001EF003F180F180318011800A2197F85A385A2177CA2F10F80A405FC90C7FCA3160116
-03161F92B5FCA5ED801F160316011600F101F0A2177CF103E0A594C71207A21AC0A2190F
-A2191FA2193FF17F8019FF601807181F4DB5FCBBFC1A00A444437DC24B>69
-D<BA12E0A419F0D8001F903880000F1700183F181F180F1807180319F81801A31800A3EE
-01F0197CA419001603A31607160F163F92B5FCA5ED803F160F16071603A31601A693C9FC
-AEB712FCA53E437CC248>I<DCFFFC1438033FD9FF8013F84AB6EAF001020FEDFC03023F
-EDFF0791B5D8F003138F4991C7EA7FDF010701F8EC1FFF4901E01407490180804990C9FC
-D97FFC167F495A48183F4849161F4A160F5A48491607A2485B19035A91CAFC19015AA349
-94C8FC12FFAC057FB612F8A2127F7FA2DD0001EBF8007EA2807EA26C7FA26C7F7E806C7F
-6C7F6D7E6D6C5D6D13C06D6D5C6D01F85C010101FF143F6D9139F801FFDF023F90B6128F
-020F16030201EDFC00DA003F02E01338030049C9FC4D467AC45A>I<B7D8F007B71280A5
-D8001F0180C801FCC7FCB3A792B8FCA50380C8FCB3AAB7D8F007B71280A551447CC35A>
-I<B712F0A5D8001FEB8000B3B3B3A4B712F0A524447DC32B>I<49B712C0A590C70007EB
-C000B3B3A8EA07C0EA1FF0487E487E487EA45D5FA2494990C7FC007F5CD83FF05C49495A
-3A0FFE03FFF06CB65A000115806C6C01FCC8FC010713C032457EC33B>I<B700F00103B5
-12FCA5D8001F0180C8381FFC00F10FF04F5AF13F8007FFC7FC4E5A4E5A4E5A4E5AF03FC0
-4E5A4EC8FC4D5A4D5AEF07F0EF1FE04D5A4D5A4DC9FC4C5AEE07F8160F161F4C7E4C7E93
-B5FC1583038780038F80039F80DBBFCF7FEDFF0F4B6C7F4B6C7F4B6C7F15F0DBC0007F4B
-6D7F717FA2717F717F717FA2717F717F717FA2727F727F727F727FA2727F727F727FA286
-B700F0017F14FFA550447CC35A>I<B600C0051FB512F06F5FA26F5FA2D8001FF380006F
-17F7A2DABFFCEE01E7A2DA9FFEEE03C7A2DA8FFFEE0787A202876DED0F07A302836D151E
-A202816D153CA202806D1578A26F6C15F0A36F6CEC01E0A26F6CEC03C0A26F6CEC0780A2
-6F6DEB0F00A36F6D131EA26F6D5BA26F6D5BA2706C5BA2706C485AA3706C485AA2706C48
-5AA270018FC7FCA27013DEA37013FCA2705BA2715AA2715A497EB600F0043FB612F0715A
-A2715A71C7FC64447CC36D>77 D<B66C0207B6128081818181D8001F6D91260001FEC7FC
-735A8181828202BF7F149F028F7F02877F8202837F148102807F6F7F836F7F6F7F816F7F
-6F7F836F7F6F8082707F707F84707F707F82707F707F19807113C07113E0837113F07113
-F819FC7113FE7113FF838484A284848484A28484197F193F191FA2496C160FB600F01507
-1903190119001A7851447CC35A>I<923803FFE0037F13FF0203B612E0021F15FC027F90
-38007FFF902601FFF8010F13C04901C001017F010F496D13F84948C8EA3FFC49486F7E49
-486F7E01FF8448496F7F4A81488548496F7FA248496F7FA2488591CA127F4885A3488549
-83A400FF1A80AD007F1A006D5FA36C61A26E16FF6C61A36C6D4B5BA26C6D4B5B6C616E5D
-6C6D4B5B6C6D4B5B6D6C4B90C7FC6D6C4B5A6D6D4A5A6D01E001035B010301F8010F13E0
-6D01FF017F5B6D6C90B6C8FC021F15FC020715F0DA007F91C9FC030713F049467AC456>
-I<B812FEEFFFF018FE727E85D8001F90C7001F13F005037F05007F727E727E841A801AC0
-84A21AE0A91AC0A24E1380A21A00604E5A4E5A05035B051F13E092B75A96C7FC18F818C0
-0380CAFCB3A7B712F0A543447CC34E>I<B812F8EFFFC018F818FF19C0D8001F90C7003F
-7F050313F805007F727E727E84868684A286A762A24E5BA297C8FC4E5A4E5A4D485A0507
-5B053F13C092B7C9FC18FC18F018FC92C77F94383FFF80050F7F717F717F85838583A685
-A61B0773EB0F80A372141F1A8072EC3F00B700E06D13C072EBF0FE72EBFFFC06015C726C
-13E0CC0003138051457CC356>82 D<DAFFF8130701079038FF800F013FECE01F49ECF83F
-48B6EAFE7F48D9C00FB5FC3907FE00014848EB003FD81FF080160748488082484880A283
-12FF83A27F837F7F7F01FF92C7FC6C13C014FEECFFE06C14FF16F06C15FC16FF6C16C06C
-826C826C826C82013F81010F811303D9003F15801403DA001F14C01500163F040F13E016
-03A200788100F881A3177F7EA218C07EA26CEEFF80A26D4A130013E06D4A5A01FE4A5A6D
-6CEB1FF802FCEBFFF0486CB65AD8FC1F5DD8F80792C7FC48C614FC48010713C033467AC4
-40>I<003FBA12F8A5DA0007EBE000D87FF8EF1FFC01E0170F4917035B90C71601007E18
-00A3007C197CA400FC197E48193EA5C81700B3B3A20103B812C0A547437CC250>I<B700
-F0011FB512FEA5D8001F0180C83807F800735AB3B3A71907A26D6D5EA2190F7F6F4B5A7F
-6F4B5A6D4DC7FC6D6D5D6E6C4A5A6E6CEC07FC91261FFFC0EB1FF802079039F801FFF06E
-90B612C0020093C8FC033F5C030714F0DB003F90C9FC4F457CC358>I<B76C49B6FCA5C6
-6C90C900011300735A6D6D5E19016D606F15036D606F1507A26D6D5E190F6D606F151F6D
-606F153F6D95C7FC6F5DA26E6C157E19FE6E5E7013016E5E701303A26E6D5C18076E5E70
-130F6E5E70131F6E5E70133FA26E6D91C8FC60037F147E7013FE6F5C1781A26FEBC1F817
-C36F5C17E76F5C17FF6F5CA36F5CA26F91C9FCA2705AA3705AA2705AA2705AA2705A5045
-7DC357>I<B700C0027FB512C0A5D8003F01C0C80001EB80006D6D6F48C7FC6F4B5A7F6D
-6D4B5A6F4B5A6D170F6D6D5E6F4B5A6D173F6E6D5D6E6D4AC8FC616E6D5C6E6D495A4E5A
-6E7F6E6D495A70495A6E151F6E6D5C71485A6F147F6F01C090C9FCEFE0FE6F13E16FEBF1
-FCEFFBF86FEBFFF081606F5C81607090CAFC825FB3A44AB712C0A552447EC357>89
-D<903801FFF8011FEBFF80017F14E090B612F8489038807FFC3A03FE001FFE486CEB07FF
-486E7F0280806F7FA36F7F6C90C7FCA26C5AEA00F890C8FCA2150F021FB5FC0103B6FC13
-1F017F13C03901FFFC004813E0000F13804890C7FC485A5B485AA2485AA45DA26C6C5BED
-07BF6C6C010F13FC6CB490391F3FFFE06C9026C0FE1F13F06CEBFFFC6CECF007C66CD9E0
-0113E0010790C9FC342F7DAD38>97 D<EB7FC0B5FCA512037EB1ED1FFC92B512C002C314
-F002CF14FC9139DFF01FFF9126FF800713809126FE000113C04A6D13E002F015F04A147F
-18F8173F18FCA2EF1FFEA318FFAB18FEA3173F18FCA218F8177F6E15F06EECFFE06E4913
-C06E49138091263F800F1300903AFE1FE03FFE496CB55AD9F80314F049C61480C8D81FF8
-C7FC38467DC440>I<EC3FFE49B512E0010F14F8013F8090397FF807FE9039FFE001FF48
-4948138048018014C048495A485A121FA2485A6F1380A2007F6E130049EB007C93C7FC12
-FFAC127F7FA2123FEE03E06C7E16076C6C15C06C150F6C6DEB1F806C6DEB3F006C01F013
-FE90397FFE03FC6DB55A010F5C010314C09026003FFCC7FC2B2F7CAD33>I<EFFF804BB5
-FCA5ED000782B1EC1FFC49B51283010F14E3013F14F390267FFC07B5FC9038FFF0004801
-C0133F48497F4890C77E484880121F5B123FA2127F5BA312FFAB127FA36C7EA2121F7F00
-0F5D6C6C5C5E6C6D90B512C06CD9E00114FF39007FF80F6DB512E7010F14C70103140790
-26003FF0EBFC0038467CC440>I<EC1FFE49B512C0010714F0011F14FC90397FFC0FFE90
-3AFFE003FF804849C613C0485B4890C7EA7FE048ED3FF0485AEE1FF8485AA2007F150F49
-15FCA212FFA390B7FCA317F801F8C9FCA5127FA27FA2003F1638177C6C6C15FCA26C6CEC
-01F86C6D13036CED07F06C6DEB0FE06C01F0EB3FC0903A3FFE01FF806DB5EAFE0001075C
-010014F0020F90C7FC2E2F7DAD35>I<913801FFC0021F13F0027F13FC49B57E49EBC3FF
-903807FE074948481380EB1FF8EB3FF0EB7FE0A349486C13006F5A6F5AED007093C7FCAA
-B612FCA5C601E0C8FCB3B0007FEBFFE0A529467DC523>I<902601FFF013FF010FD9FE03
-1380013FD9FF8F13C090B812E048D9C07F13BF489039001FF83F4848EB0FFC4848EB07FE
-001F9238FF1FC0496DEB0F8094C7FC003F82A7001F93C7FCA26D5B000F5D6C6C495A6C6C
-495A6C9038C07FF04890B55A1680D8078F49C8FC018113F0D80F80CAFCA47F7F13F890B6
-12E016FEEEFFC06C16F0836C826C82831207481780D81FF8C77ED83FE014074848020113
-C000FF8149157FA56D15FF007F17806D5C6C6C4A1300D81FFCEC0FFE6CB4EC3FFC6C9039
-E001FFF8000190B612E06C6C1580010F02FCC7FCD9007F138033427DAC39>I<EB7FC0B5
-FCA512037EB1923803FF80031F13F0037F7F92B57E9139C1FC1FFE9139C3E00FFF9126C7
-C0077FECCF0002DE7F02FC81A25C5CA35CB3A7B600C1B61280A539457CC440>I<13FCEA
-03FF4813804813C0A24813E0A66C13C0A26C13806C1300EA00FC90C7FCA9EB7FC0EA7FFF
-A512037EB3AFB6FCA518467CC520>I<EC03F0EC0FFC4A7E4A7EA24A1380A66E1300A26E
-5A6E5AEC03F091C8FCA9EDFF8049B5FCA5EB000780B3B3A6EA1FC0EA3FE0EA7FF0EAFFF8
-5C1600A24A5AA249485A007F495A6C48485A6CB512C06C5C000349C7FC38007FF0215A87
-C523>I<EB7FC0B5FCA512037EB293387FFFF0A593380FF8004C5AEE3FC04C5A4B48C7FC
-ED03FC4B5A4B5AED3FE0ED7F804BC8FCECC1FE14C7ECCFFF02DF7F91B57E82A202FD7F02
-F07F4A7F4A6C7E153F6F7E6F7F83816F7F6F7F6F7F83167F707E83B66CB512FCA536457D
-C43C>I<EB7FC0B5FCA512037EB3B3B3A3B61280A519457CC420>I<90287FC003FF80EB07
-FFB5011F01F0013F13E0037F6D90B57E92B56C4880913DC1FC1FFE03F83FFC913DC3E00F
-FF07C01FFE00039026C7C00790398F800FFF6CD9CF00EC9E0002DE6D01BC7F02FC03F815
-80A24A5D4A5DA34A5DB3A7B600C1B60083B6FCA5582D7CAC5F>I<903A7FC003FF80B501
-1F13F0037F7F92B57E9139C1FC1FFE9139C3E00FFF00039026C7C0077F6CEBCF0002DE7F
-02FC81A25C5CA35CB3A7B600C1B61280A5392D7CAC40>I<EC1FFE49B512E0010714F801
-1F14FE903A7FF807FF809026FFE0017F48903980007FE04890C76C7E48486E7E000F8249
-140F001F82A2003F824980007F1780A400FF17C0AA007F1780A46C6C4A1300A2001F5EA2
-6C6C4A5A00075E6D143F6C6D495AC69039E001FFC090267FF8075B6DB6C7FC010F14FC01
-0114E09026001FFEC8FC322F7DAD39>I<90397FC01FFCB590B512C002C314F002CF14FC
-9139DFF03FFF9126FF800F138000039026FE000313C06C496D13E002F015F04A7FEF7FF8
-A218FC173F18FEA3EF1FFFAB18FE173FA318FC177F18F817FF6E15F06E4913E06E4913C0
-6E4913806E6C4813009238E07FFE02EFB55A02E314F002E01480DB1FF8C7FC92C9FCADB6
-12C0A538407DAC40>I<90397F803FC0B5EBFFF0028313F8028713FC91388FE7FE91389F
-8FFF0003EB9E0F6C13BCA214F8A29138F007FEED03FC9138E001F892C7FCA35CB3A5B612
-C0A5282D7DAC2F>114 D<90391FFE078090B512DF000314FF5A380FF803381FE000D83F
-80133F127F90C7121FA248140FA27FA201E090C7FC13F8EBFFC06C13FEECFFC06C14F015
-FC6C806C806C1580000115C07E011F14E01301D9000713F014000078147F00F8143F151F
-6C140FA37E6C15E0151F6D14C06D133F01F0EB7F809039FC03FF0090B55A00FC5CD8F83F
-13F0D8F00790C7FC242F7CAD2D>I<EB01F0A51303A41307A2130FA2131FA2133F137F13
-FF1203000F90B512C0B7FCA4C601F0C7FCB3A3ED01F0AA017FEB03E014F81507D93FFC13
-C090391FFE1F806DB512006D5B01015B9038003FF024407EBE2D>I<D93FE0EC7FC0B549
-B5FCA50003EC00076C81B3A85EA35E6C5DA26E013D7F017F02F9EBFF8090393FFC03F16D
-B512E16D14C1010314019026003FFC91C7FC392E7CAC40>I<B690380FFFF8A5000301E0
-010013006C167C6E14FC6C5E801601017F5D6E1303013F5D6E1307011F5D6E130F6D5DED
-801F6D92C7FC15C05E6D143EEDE07E6D147CEDF0FC6D5C15F9027F5B15FF6E5BA36E5BA2
-6E5BA26E90C8FCA26E5AA26E5AA26E5A352C7DAB3C>I<B5D8FE1FB539801FFFF0A50003
-9027C0007FF0C7EAFE00043F157C6E6E14FC6C031F5D6E6E13016C61836E013F1403017F
-606E496C1307013F606EED800F011F91B55C16F9DAFF01ECC01F6D02F092C7FC03816E5A
-6D0183153EEEE07F03C7ECF07E6DDAC03F137C03E7ECF8FC6D01EF5DEE801F03FF14FD6D
-DA000F5B18FF6E486D5BA36E486D5BA26E486D5BA2020F93C8FC4B7FA26E48147E6E4814
-3C4C2C7DAB53>I<007FB590387FFFF8A5C601F890380FF8006D6CEB07E0013F4A5A6D6C
-131F6E495A6D6D48C7FC6DEBC0FE6DEBC1FC6DEBE1F8EDF3F06DEBFFE0806E5B6E5B93C8
-FC6E7F6E7F6E7FA24A7F4A7F4A7FEDBFFEEC3F1F91387E0FFF02FE8049486C7F49486C7F
-49487E49486C7F4A8049486D7E49C76C7ED9FF80131FB500F090B512FEA5372C7EAB3C>
-I<007FB5398007FFFCA5000101F0C7EA7F806CEE3E006E147E017F157C8017FC013F5D6E
-1301011F5D6E13036D5DED80076D5DEDC00F6D5D15E0161F6D92C7FC6F5A6D143EEDF87E
-027F137CEDFCFC023F5B15FF6E5BA36E5BA26E5BA26E5BA26E90C8FCA26E5AA2157CA215
-FC5D1401000F5C383FC003D87FE05B1407D8FFF05B140F5D141F4AC9FC387FE07E495A38
-3F87F8EBFFF06C5B00071380D801FCCAFC36407EAB3C>I<001FB7128017C0A39026FE00
-1F138001F05B49491300495C49495A48485A4A5B5E4A5B003E5B4A5B5E4A90C7FC5CC748
-5A5D495B5B495B5D499038C007C05B49138015004948130F01FF1580485B5C4849131F5A
-485B4A133F4849137F4815FF48EB000349011F1300B8FCA37E2A2C7DAB33>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fl cmtt12 14.4 22
-/Fl 22 121 df<003FB712F84816FCB812FEA46C16FC6C16F82F0879A83E>45
-D<EA0780EA1FE0EA3FF0EA7FF8A2EAFFFCA4EA7FF8A2EA3FF0EA1FE0EA07800E0E688D3E
->I<177817FCEE03FE1607161F163FEEFFFC030313F84B13F0031F13C04B13809238FFFE
-004A13F802075B4A13C0023F5B4A48C7FC49485A4913F0010F5B491380017F90C8FCEBFF
-FC00035B4813E0001F5B4890C9FC485AEAFFF85BA27FEA7FFE6C7E6C13C000077F6C13F8
-C67F6DB4FC011F7F6D13E001037F6D13FC6D6C7E6E6C7E020F7F6E13F0020113FC6E7F92
-383FFF806F13C0030713F06F13F8030013FCEE7FFE161F16071603EE00FC17782F3C79C2
-3E>60 D<003FB712F84816FCB812FEA46C16FC6C16F82F08797C3E>95
-D<90380FFFC0017F13F848B512FE486E7E4815E04881823A1FFC007FFC49EB0FFE1507ED
-01FFA26C486D7F6C48147FC97F163FA60203B5FC147F0103B6FC131F137F90B7FC0003EC
-C03F48EBF800481380D81FFCC7FCEA3FF05B485A5B12FF90C8FCA56D147F127F6D14FF6C
-6C130301F8010F7F6CB490B612F86C90B7FC18FC6C15CF000115076CDAFC0313F8013F90
-38F0007F010790C9FC363679B43E>97 D<913807FFF0023F13FE49B61280010715C04915
-E04915F0137F903AFFFC003FF84801E0131F48138091C7FC485A4848EC0FF049EC07E048
-4891C7FC5B123F5B127F5BA312FF90CAFCA97F127FA27F123F7F17FC6C6CEC01FE7F6C7E
-6C6C14036DEC07FC6C01C0130F6C01F0EB1FF86C01FEEBFFF06DB612E06D15C0010F1580
-6D1500010114FC6D6C13F0020790C7FC2F3678B43E>99 D<EC1FF891B57E010314E0010F
-14F84980017F8090B7FC48D9F80F1380DAC00113C048496C13E04848C7123F4848EC1FF0
-49140F484815F81607484815FCA248481403A24915FEA200FF1501A290B7FCA517FCA290
-CAFC7FA2127FA27F123F6D15FCA26C6CEC01FE7F6C6C14036C6C14076DEC0FFC6C6D131F
-6C01E0EB7FF86C9039FC03FFF06DB612E06D15C06D158001071500010114FC6D6C13E002
-0790C7FC2F3679B43E>101 D<923801FFC0030F13F0033F13FC92B512FE5C4A14FF5C4A
-1303EC1FF89238F001FEEC3FE09238C000FC027F14005DAA003FB712F05AB812F8A36C16
-F0A2C7D87F80C7FCB3B3003FB7FCA2481680A36C1600A2304A7CC93E>I<DA0FF0EB1FF0
-DA7FFEEBFFFC49B5008313FE010714EF4991B6FC5B5B90267FF81F13F19026FFE007EB00
-FEDA8001147C4890C7EB800049147F00038249143FA200078249141FA66D143F00035EA2
-6D147F00015E6D14FF6C6D4890C7FCECE00790397FF81FFE90B65A5E485D5E01F9148027
-03F87FFEC8FCEC0FF091CAFCA46C7EA213FF6C90B512F8EEFFC06D15F090B712FC4816FF
-4817804817C04848C7000F13E0D81FF09138007FF04848ED1FF84915074848ED03FC90C9
-1201A24817FE481600A56C1601A26C6CED03FC6D15076C6CED0FF8D81FF8ED3FF001FE15
-FF6C6C6C010313E06C01FC017F13C06C90B71280C6EEFE006D5D011F15F0010715C00100
-4AC7FC020713C038517DB33E>I<143E147F4A7E497FA56D5B6EC8FC143E91C9FCAC003F
-B57E5A81A47EC7123FB3B3007FB71280B812C0A56C16802A4A76C93E>105
-D<EA7FFFA2B57EA37EA2EA003FAF031FB512F05D18F8A318F0819239003FF0004C5A4C5A
-4B5B4B90C7FC4B5A4B5A4B5A4B5A4B5A4B5A02815B028390C8FCEC87FE148FEC9FFF02BF
-7F91B57EA2EDBFE0ED1FF04A6C7EECFC0702F87F4A6C7E4A6C7E4A7E4A80707E707E161F
-83707E707E160383707E007FB5D8C03F13FEA2B66C4813FFA36C4A6C13FEA238497DC83E
->107 D<007FB512C0B6FC81A47EC7121FB3B3B3A5007FB712F8B812FCA56C16F82E4978
-C83E>I<DA0FC0137E3C7FF07FF003FF8000FF9026FFFC0713E001FBD9FE1F7F90B55B6F
-487FA26C903AF07FFF83FC00039039C03FFE01028013FC020001F87F031F1300495CA249
-5CA4495CB3A93D7FFFC0FFFE07FFF0B500E16D4813F802E35CA302E1806C01C0496C13F0
-3D3480B33E>I<ED07FC3B3FFF803FFF804891B512E0B500C38002C78002CF806C01DF80
-6C9038FFF80FD8003F9038C003FFED00014A7F4A815C177F5CA25CA35CB3A8003FB5D8C0
-7FB51280486EB612C0B66C15E0A36C4A15C06C4A6C14803B347FB33E>I<EC1FF0ECFFFE
-01036D7E010F14E04980017F14FC90B67E489038F01FFFECC00748D90001138048486D13
-C04848EC7FE049143F4848EC1FF049140F003F16F8491407A24848EC03FCA448C8EA01FE
-AA6D1403007F16FCA26D1407A2003F16F86D140F6C6CEC1FF0A26C6CEC3FE06D147F6C6C
-ECFFC06D5B6CD9C00713806CD9F01F13006C90B55A6D5C6D5C010F14E001031480010049
-C7FCEC1FF02F3679B43E>I<ED07FC3B3FFF803FFF804891B512E0B500C314F802CF8002
-DF806C90B7FC6CDAF80F1380D8003FD9C00113C092C713E04A143F4AEC1FF04A15F84A14
-0F4AEC07FCA217034A15FE1701A318FF83A95F18FEA280170318FC6E140718F86E140FEF
-1FF06E143F6EEC7FE06EECFFC0DBC0031380EDF01F92B6120002DF14FC02CF5C02C35C02
-C114C0DAC07F90C7FCED0FF892C9FCB3003FB512C04880B67EA36C5C6C5C384F7FB33E>
-I<EE07FE263FFFF890387FFFC0484AB512E0B5D8FC0714F05D4B14F86C5C6C91387FFC0F
-D80003EBFFC002FD90380007F0DAFFFEEB03E003F890C7FC5D5DA25D5DA292C9FCA25CA4
-5CB3A3003FB612FC4881B7FCA37E6C5D35347CB33E>114 D<903901FFF00F011F9038FE
-1F8090B612BF000315FF5A5A5A393FFE003F01F01307D87FC0130190C8FC5A48157FA47E
-EE3F00D87FC091C7FC13F0EA3FFE381FFFF06CEBFFC06C14FE6C6E7EC615E0013F14F801
-0780D9003F7F02007F03071380030013C0003EED3FE0007F151F48150F17F06D1407A37F
-A26D140F6D15E0161F01FCEC3FC06D14FF9026FFC00F138091B612005E485D013F5C6D14
-E0D8FC0714802778007FF8C7FC2C3677B43E>I<147C14FC497EAD003FB712FC5AB87EA3
-6C5EA2260001FEC9FCB3A6173FA2EF7F80A76E14FF6D16006F5A9238C007FE91387FF01F
-92B55A6E5C6E5C6E5C6E1480020149C7FC9138003FF031437DC13E>I<263FFF80EB7FFF
-4892B5FCB56C4880A36C806C81D8003FEC007FB3AC17FFA25E5E80011F140F6E5B02FE90
-B612806DB812C06D17E083010114FE6DDAF83F13C0023F01E01480020790C9FC3B347FB2
-3E>I<267FFFF890383FFFFCB56C4913FE6E90B5FCA34A7F6C496D13FCC648C8EAFE00A2
-6D14016D5DA26E1303013F5DA26E1307011F5DA26E130F010F5DA26E131F01075DA26E13
-3F01035DA26E137F010192C7FCA26E5B01005CA2ECFF01027F5BA21583023F5BA215C702
-1F5BA215EF020F5BA215FF6E5BA36E5B6E90C8FC6E5A37347DB23E>I<271FFFFE01B512
-E04817F0486D4814F8A36C496C14F06C17E03C003FE0001FF0006D6C5C010F4A5A6D6C49
-5A6E13FF6D6C91C7FC0101495A6D6C485AEC7F83EDC7F891383FCFF06EB45A805E6E5B6E
-90C8FC806E5A14014A7E824A7F5C91381FEFE0EDC7F091383F87F891387F03FCECFF0102
-FE7F49486C7E01036E7E4948133F4A80010F6E7E49486D7E4948801607263FFFFC90387F
-FFF8486D90B512FCB516FEA36C17FC6C496D13F837337DB23E>120
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fm cmsl10 10.95 57
-/Fm 57 123 df<EA0780EA1FE0123F13F0A6EA0F30120013701360A213E013C0A21201EA
-038013005A120E120C121C5A5A5A5A0C1C71BE19>39 D<EA0780EA0FE0EA1FF0123FA512
-1FEA0F301200A213701360A213E013C0120113801203EA07001206120E5A5A5A5A5A0C1C
-7A8919>44 D<007FB5FCA2B512FEA418067C961E>I<121EEA3F80EA7FC012FFA41380EA
-7F00123C0A0A788919>I<EC07F8EC3FFF9138FC0FC0903903F003E0903907C001F0D90F
-8013F849C7FC013E14FC017E147C017C147E13FC485AA20003157F5B1207A2120F5BA212
-1F16FF5BA2123FA44848EB01FEA648C7EA03FCA5ED07F8A25A16F0A2150F16E0A3ED1FC0
-A21680007E143F1600157E123E003F5C4A5AD81F805B000FEB07E06C6C485A2603F03FC7
-FC3800FFFCEB1FE0283F79BC2D>48 D<157015F014011407143F903803FFE0137FEBFFCF
-EBF80F1300141F15C0A5143F1580A5147F1500A55C5CA513015CA513035CA513075CA513
-0F5CA3131F497EB612F8A31D3D78BC2D>I<EC01FE91380FFFE0023F13F89138FC07FC90
-3901E001FE903907C000FF49C7EA7F80011E15C0163F4915E05B0170141F13FF80A35A16
-3FA26C90C7FC137E0118EC7FC090C8FCEEFF80A24B1300A24B5A5E4B5A4B5A4B5A5E4B5A
-4BC7FC15FEEC01F84A5A4A5A4A5A4AC8FC143E5C5CEB01E04948130E49485B49C7FC131E
-495C13705B48485C484814F0000FB6FC5A485D5AB7FC5EA22B3D7CBC2D>I<161C163C16
-7CA216FCED01F815031507150FA2151DED3BF0157315E315C31401EC038391380707E014
-0E141CA2143814709138E00FC0EB01C014801303EB0700130E49EB1F805B133013705B48
-5A4848EB3F0090C7FC5A120E5A5A48147E1260B8FCA3C73801FE00A25DA41403A25DA314
-074A7E0107B512F8A3283E7BBD2D>52 D<ED7F80913803FFE091380FC0F091383E003802
-FC131C495A494813FE903807E003EB0FC090381F8007133FD97F0013FC01FE1303ED01F0
-484890C7FC1203A2485AA2120F5BA2001FEB3F809038E0FFE0393FE3C0F89038E7007C01
-EE7F01FC133F4848EB1F80A24914C05B16E0A2485AA216F05BA2ED3FE0A290C7FCA4157F
-16C0A316804814FF007E1500007F5C14016C5C4A5A6C6C485A4A5A6C6C485A2607E07FC7
-FC3803FFFEC613F8EB3FC0273F78BC2D>54 D<17E016011603831607A2160FA2161F8316
-3FA2167F167716F7EEE7FCED01E316C3150316831507EE03FEED0F01150E151E151C153C
-03387FED7800157015F05D4A4880177F4A5AA24AC7FCA2020E81173F5C021FB6FC5CA202
-70C7EA3FE0171F5CA2495AA2494881170F49C8FCA2130EA24982013C1507A2137CD801FE
-4B7E2607FF80EC3FFEB500F00107B512FC19F85E3E417DC044>65
-D<013FB7FC18E018FC903B007FE00007FE6E48903801FF809438007FC05DF03FE0F01FF0
-A3027F16F892C8FCA54A16F04A153F19E0187F19C0F0FF8001014B13004A4A5A4D5AEF1F
-F04D5ADC03FFC7FC49B612F8EFFF8002F8C7EA3FE0EF0FF0EF07FC717E010715014A8171
-1380A319C0130F5CA5011F4B13805C19005F601707013F4B5A4A4A5A4D5A4D5A017F9138
-01FF8001FF020F90C7FCB812FC17F094C8FC3D3E7DBD40>I<DCFFC01338030F01F01378
-037F01FC13F0913A01FF803F01913A07FC000781DA1FE0EB03C3DA7FC0EB01E74AC812FF
-4948ED7FE0D907FC153F495A4948151F495A4948150F494816C018074890C9FC485AA248
-5A000F1880491603121FA248481607A295C7FC485AA412FF5BA75BA2181C183C1838A27F
-007F1778187018F0003F5F6D150160001F16036C6C4B5A95C7FC6C6C5D6C6C151E6C6C5D
-6C6C15F86D6C495A6D6CEB07C0D91FF0EB1F80D907FE01FEC8FC0101B512F86D6C13E0DA
-07FEC9FC3D4276BF42>I<013FB7FC18E018F8903B007FF0000FFE6E48EB01FF9438007F
-C04B6E7E180F85727E727E147F4B6E7EA2727EA302FF178092C9FCA54918C05CA41A8013
-034A5DA41A0013074A5DA261A24E5A130F4A5E180F61181F61011F4C5A5C4E5A4EC7FC4D
-5A4D5A013F4B5A4A4A5AEF3FE0EF7F80017F4A48C8FC01FFEC1FFCB812F0178004FCC9FC
-423E7DBD45>I<013FB812F8A39026007FF0C7127F6E48140F18034B14011800A3197814
-7F4B1570A502FF147092C7FCA3190017F0495D4A1301A21607161F91B6FC495DA29138FC
-003F160F1607160301075D5CA219E0180119C0010FEC07004A90C712031980A218071900
-011F5E5C181EA2183E183C013F167C4A15FC4D5A1707017F151F01FF4AB45AB9FCA2603D
-3E7DBD3E>I<013FB812E0A3903A007FF000016E48EB003F180F4B14071803A31801147F
-4B15C0A514FF92C71270A395C7FC17F0495D5C160116031607161F49B65AA39138FC003F
-160F160701075D4A1303A5010F4AC8FC5C93C9FCA4131F5CA5133F5CA3137FEBFFF0B612
-F8A33B3E7DBD3B>I<4BB46C1370031F01F013F0037F9038FC01E0913A03FF807E03913A
-0FF8000F83DA1FE0EB07C7DA7F80EB01EF4AC812FFD903FE16C04948157F4948153F495A
-4948151F495A4948168091C9120F5A485AA2485A000F18004982121FA248485EA295C7FC
-485AA412FF5BA6043FB512E05BA29339001FFC00715AA2607F127FA2171F123F6D5EA212
-1F7F000F163F6C7E6C6C4B5A7F6C6C15FF6C6DEB01EFD93FC0EB07C7D91FF0EB1F87D907
-FE9038FE03800101B5EAF8016D6C01E0C8FCDA07FEC9FC3C4276BF47>I<013FB5D8F807
-B6FC04F015FEA29026007FF0C7380FFE006E486E5AA24B5DA4180F147F4B5DA4181F14FF
-92C85BA4183F5B4A5EA491B8FC5B6102FCC8127FA318FF13074A93C7FCA45F130F4A5DA4
-1703131F4A5DA41707133F4A5DA3017F150F496C4A7EB6D8E01FB512FC6115C0483E7DBD
-44>I<011FB512FC5BA29039003FF8006E5AA25DA5143F5DA5147F5DA514FF92C7FCA55B
-5CA513035CA513075CA5130F5CA5131F5CA3133F497E007FB512F0A2B6FC263E7EBD21>
-I<013FB512FEA25E9026007FF8C8FCEC3FE0A25DA5147F5DA514FF92C9FCA55B5CA51303
-5CA513075CA21838A21870130F5CA218E0A3011F15014A15C01703A21707EF0F80013F15
-1F4A143F177FEFFF00017F140301FF143FB9FC5FA2353E7DBD39>76
-D<90263FFFF093381FFFF85013F0629026007FF8EFF000023F4D5AA2023B933801DFC0A2
-DA39FCED039FA2F1073F14790271040E5BEC70FE191C19381A7F02F01670DAE07F94C7FC
-19E0A2F001C06201016D6C495A02C05FF00700A2180E6F6C14010103161C028003385BA2
-18706F7EF0E00313070200DA01C05BA2923907F00380A294380700075B010E902603F80E
-5C5FA25F190F011E6D6C5A011C605FA2EEFDC0DB00FF141F013C5D013860013C92C7FC01
-7C5C01FE027E143F2607FF80017C4A7EB500FC037FB512E004785E4A1338553E7CBD53>
-I<90263FFFE0023FB5FC6F16FEA29026003FF8020313C0021F030013004A6C157C023B16
-3C6F15381439810238167802787FDA707F157082153F82031F15F002F07FDAE00F5D8215
-078203031401010180DAC0015D82811780047F1303010315C04A013F5C17E0161F17F004
-0F1307010715F891C7000791C7FC17FC160317FE04015B4915FF010E6E130E188E177F18
-CEEF3FDE011E16FE011C6F5AA2170FA21707133C01386F5A133C017C150113FE2607FF80
-1400B512FC18705C483E7DBD44>I<923803FF80031F13F09238FE01FE913903F0003FDA
-0FC0EB1FC0DA3F80EB07E0027EC76C7E49486E7E49488149486E7E4948157F495A013F17
-804948ED3FC049C9FCA24848EE1FE012035B000718F05B120FA2485A19F8123F5BA2127F
-A219F04848163FA5F07FE0A35BF0FFC0A219805F19007F4D5A127F4D5A60003F160F6D5E
-001F4C5A4D5A6C6C4B5A95C7FC6C6C15FE00034B5A6C6C4A5A6C6C4A5A017FEC1FC06D6C
-495AD90FE001FEC8FC903903F807F80100B512C0DA0FFCC9FC3D4276BF47>I<013FB612
-FEEFFFE018F8903B007FF0000FFC6E48EB01FF7113804BEC7FC0183F19E0F01FF0A2147F
-5D19F8A402FFED3FF092C8FCA219E0A2F07FC05B4AEDFF8019004D5A4D5AEF0FF80103ED
-3FE04A903801FF8091B648C7FC17F002FCCAFCA213075CA5130F5CA5131F5CA5133F5CA3
-137F497EB612E0A25D3D3E7DBD3E>I<013FB612F017FF18E0903B007FF0003FF86E48EB
-07FCEF01FE4B6D7EF07F8019C0183F19E0147F4B15F0A502FFED7FE092C8FCA219C0F0FF
-80A2494B13004A5D4D5AEF0FF04D5AEF7F800103DA07FEC7FC91B612F017809139FC0007
-E0EE03F8EE00FC0107814A147F717EA284A2130F5CA484011F157F5CA41902013F17075C
-A2F0F00F017F170E496C143FB600E0011F131C94380FF83C4B01071378CA3801FFE09438
-003F8040407DBD43>82 D<9238FF80070207EBE00F021FEBF81E91387F00FE02FCEB1F3E
-D903F0EB0FFE49481307494813034AEB01FC49C7FC491400133E137E177C491578A57F17
-70A26D1500808080EB7FFEECFFE06D13FEEDFFC06D14F06D14FC010380010080143F0203
-1480DA003F13C015031500EE7FE0163F161FA2160F121CA31607160F003C16C0A3178000
-3E151F1700007E5D007F153E6D5C16FC01E0495AD87DF0495AD8FCFCEB0FC03AF87F803F
-8027F01FFFFEC7FCD8E00713F839C0007FC030427BBF33>I<0007B912F0A33C0FFE000F
-F8003F01F0160F01C04A13034848160190C7FC121EF000E048141F5E1238A21278127015
-3F5E5AA3C81600157F5EA515FF93C9FCA55C5DA514035DA514075DA5140F5DA3141FEC7F
-FC0003B7FCA33C3D76BC42>I<B600E090B512FC4B15F8A2000101C0C7000F13006C49EC
-03FCEF01F091C9FC60A317015A495EA417031203495EA4170712074993C7FCA45F120F49
-150EA4171E121F49151CA4173C123F491538A31778177017F05F001F15015F16036D4A5A
-000F93C8FC5E6C6C141E6C6C5C000115F86C6C495A017FEB07C090393FC03F8090260FFF
-FEC9FC010313F89038007FC03E4073BD44>I<B6020FB5FC19FEA2000301E0020113E06C
-01809138007F8091C9EA7E006C173C18386E15781870017F16F0604D5A804D5A133F4DC7
-FCA26E140E171E011F151C173C17386E1478010F15705FA24C5A8001074A5AA24CC8FC5E
-6E130E0103141E161C163C16386E5B13015EA24B5A14FF6D495AA24BC9FC5D158EEC7F9E
-159C15B8A215F0143F5DA25DA26E5AA292CAFCA2140E404074BD44>I<B6017FB5D88007
-B512804A1A00A2000701C0010101E0C713F06C90C80180EC3FC06C48735A99C7FC057F15
-0E1B1E6D191C6C1A3C1B3805FF15787214705E636EEB03BF017F4E5AEE073F505A040E7F
-051F4AC8FC161C6E170E013F143862167804706D5BEEF00F04E05D90381FE00104C015F0
-03035E0480140106F85B9226070007130302F05F010F010E150797C9FC5D190E4BEB03FC
-616E5A01075F5D61DAF9C014FE05015BECFB8002FF6F5A7F92C75CA24A93CAFC835C606D
-5A605C604A15781870594074BD5D>I<010FB500F090B512F85B5FD9003F902680003F13
-00DA0FFEC7EA1FF84BEC0FE00207168096C7FC6E6C141E181C6E6C143C606E6D5B4D5ADB
-7FC05B4D5A92383FE0074DC8FC92381FF01E171C6F6C5A5F923807FCF0EEFDE06FB45A5F
-6F90C9FCA26F7FA2707EA216FF4B7FED03DF9238079FF0ED0F1F92380E0FF8151C92383C
-07FC15784B6C7EEC01E04B6C7EEC038002076D7F4AC7FC021E6E7E5C02386E7E5C02F06E
-7E495A49486E7E130749486E7E497E017F4B7E2603FFF091383FFF80007F01FC49B512FE
-B55CA2453E7EBD44>I<B66C0103B51280A3000101F0C8EBF0006C49ED7FC06D486FC7FC
-6E153E013F163C606D6C5D606D6C4A5A17036D6C4A5A95C8FC6E140E0103151E5F6D6C14
-385F6D6D13F04C5ADA7FC05B4C5AEDE007023F49C9FC161E91381FF01C5E91380FF8785E
-6E6C5AEDFDC015FF6E5B93CAFC6E5AA35DA21403A45DA21407A45DA2140FA4141F4A7E01
-3FB512F0A3413E75BD44>I<010FB712FEA39239C00007FCD91FFCC7EA0FF814F04AEC1F
-F00280EC3FE091C8EA7FC0013EEDFF80A2013C4A13004C5A494A5A4C5A13704C5A4C5A49
-4A5A4C5AA290C74890C7FC4B5A4B5A4B5AA24B5A4B5A4B5A4B5AA24A90C8FC4A5A4A5A4A
-5AA24A5A4A5A4A48EB01C04A5AEF03804990C7FC495A495A494814071800495A49485C49
-5A495A171E4890C8123E485A4848157E484815FE4C5A484814074848141F4848EB01FFB8
-FC5FA2373E7BBD38>I<EC7FC0903803FFF890380FC07E90383E003F496D7E01FF6D7E82
-A248140782A26C5A137890C7120FA25EA2EC03FF147F903807FF1FEB1FE0D97F805B3801
-FE00EA03F8485A4848133F485A003F5D49EC81C048C7FCA2157F48ED03804814FFA2007F
-5B913903BF0700903880073F3A3FC00E1F8E260FE03C13FC3A03FFF00FF83A007FC003E0
-2A2A7CA82D>97 D<EB3F80EA1FFFA3C6FC137FA291C9FCA55B5BA512015BA4EC07F80003
-EB3FFF9039F8F80FC09039FBE003E09039FF8001F891C77E5B4848147E49147F5B821780
-A2120F5B17C0A3167F001F16805BA4EEFF00123F5B4B5AA24B5A5E007F4A5AA24B5A6D49
-5A4BC7FCD87CE0137E39F87001F839F03C07E039E00FFF80260003FCC8FC2A4077BE33>
-I<EC1FF0ECFFFE903903F01F8090390FC003C0D93F0013E0017E130F49131F000115F048
-48EB3FE0485AA24848EB1FC0001FEC0F004990C7FC123FA2485AA412FF90C9FCA96CEC03
-80150716006C6C5B151E001F5C6C6C5B6C6C5B6C6C485A3901F80F8026007FFEC7FCEB0F
-F0242A7AA828>I<EE03F8ED01FFA3ED000F1607A217F0A4160FA217E0A4161FA217C0A4
-91380FF03FECFFFC902603F81F138090390FC007BF90391F8003FF90387E0001497F0001
-157F48481500485A120F5B001F5D485A5E5B127FA2150112FF90C75BA41503A25EA37E15
-07A26C4A5A7F001F141F6C6C133F6C6CEBFFF83B03F001EFFFC03900F80F8F90383FFE0F
-D90FF0EBE0002D407ABE33>I<EC3FE0903801FFF8903807E07E90380F801F90393F000F
-80017E14C049EB07E0485A12034848EB03F0485AA2121F5B123FA248481307A290B6FCA2
-D8FF80C8FC90C9FCA87EED01C015036C15806D1307001FEC0F006D131E000F5C6C6C5B6C
-6C485A3900FC07C0D93FFFC7FCEB07F8242A7BA828>I<ED07F0ED3FFCEDFC1E913803F0
-3F4A48B4FC4A481380141FEC3F81DA7F0113008102FE137C93C7FCA213015CA513035CA5
-0007B512F8A3260007F0C8FCA3130F5CA5131F5CA5133F5CA5137F91C9FCA55B5BA4EA03
-FF007F13FEB5FCA229407DBF1C>I<177C913907F803FE91393FFE0F8F9139FC0F9C3F90
-3901F007F8903907E003E0D90FC013F0011F903801F80C02801400133FD97F007FA31503
-5B495CA3017E495A5E150F6D5C6D495A90263F803EC7FCECC0FC903871FFF09038E07F80
-91C9FC485AA47FA27F90B512F8EDFF806C15E016F86D8048B6FC3A07E0000FFED80F8013
-00003FC8127F003E815A00FC815AA25E163EA25E6C15FC007C4A5A6C4A5A6CEC0FC0D80F
-C0013FC7FC3903F801FCC6B512F0010F90C8FC303D7FA82D>I<147FEB3FFFA313017FA2
-5CA513015CA513035CA4ED07F80107EB1FFF9139F0781FC09138F1E00F9139F38007E0EC
-F70002FE14F0495A5CA25CA24A130F131F4A14E0A4161F133F4A14C0A4163F137F91C713
-80A4167F5B491500A300015D486C491380B5D8F87F13FCA32E3F7DBE33>I<1478EB01FE
-130314FFA25B14FE130314FCEB00F01400ACEB03F8EA01FF14F0A2EA001F130FA314E0A5
-131F14C0A5133F1480A5137F1400A55B5BA4EA03FF007F13F0A2B5FC183E7DBD1A>I<ED
-0780ED1FE0153F16F0157FA216E0153F16C0ED0F0092C7FCACED7F80EC3FFF1600A21401
-80A35DA41401A25DA41403A25DA41407A25DA4140FA25DA4141FA25DA4143F5DA4121E26
-7F807FC7FCA200FF137E14FE5CEB01F8495A387C07E0383C0FC0D80FFFC8FCEA03F82451
-87BD1C>I<143FEB1FFF5BA213017FA214FEA5130114FCA5130314F8A5130714F0A5130F
-14E0A5131F14C0A5133F1480A5137F1400A55B5BA4EA03FF007F13F8A2B5FC183F7DBE1A
->108 D<902707F007F8EB03FCD803FFD91FFF90380FFF80913CE0781FC03C0FE09126E1
-E00FEBF0073E001FE38007E1C003F090260FE700EBE38002EEDAF70013F802FC14FE02D8
-5C14F84A5CA24A5C011F020F14074A4A14F0A5013F021F140F4A4A14E0A5017F023F141F
-91C74914C0A549027F143F4992C71380A300014B147F486C496DEBFFC0B5D8F87FD9FC3F
-13FEA347287DA74C>I<903907F007F8D803FFEB1FFF9139E0781FC09138E1E00F3B001F
-E38007E090380FE70002EE14F014FC14D814F85CA24A130F131F4A14E0A4161F133F4A14
-C0A4163F137F91C71380A4167F5B491500A300015D486C491380B5D8F87F13FCA32E287D
-A733>I<EC0FF0ECFFFE903903F01F8090390FC007C049C66C7E013E6D7E01FC6D7E4848
-8049147C0003157E485A000F157F5B121FA2485AA2007F1680A2170048C85AA54B5AA25E
-5A6C4A5A7E4B5A5E6C140F6C6C5C4B5A6C6C013EC7FC6C6C5B6C6C485A3900FC0FE09038
-3FFF80D90FF8C8FC292A7BA82D>I<91387F01FE903A7FFF0FFFC09139FE3E03F09238F8
-01F8903A03FFE000FE6D49137F4B7F92C713804A15C04A141FA218E0A20103150F5C18F0
-A3171F010716E05CA3173F18C0130F4A147F1880A2EFFF004C5A011F5D16034C5A6E495A
-EE1FC06E495AD93FDC017EC7FC91388F01F8913883FFE0028090C8FC92C9FC137FA291CA
-FCA45BA25BA31201487EB512F8A3343A81A733>I<91390FE003C0DAFFFC1380903903F8
-1E0790390FE0070F90391F80038FD97F0013DF01FE13014848903800FF00485A1207485A
-8248485C123F495CA2485AA2150112FF90C75BA41503A25EA37E15077F003F4A5A151F6C
-6C133F6C6C137F000714FF3903F003CF3A00FC0F8FE090383FFE0FEB0FF090C7FC151F5E
-A5153F5EA4157F4B7E023F13FEA32A3A7AA730>I<903907F01F80D803FFEB7FE09138E1
-E1F09138E387F839001FE707EB0FE614EE02FC13F002D813E09138F801804AC7FCA25C13
-1FA25CA4133F5CA5137F91C8FCA55B5BA31201487EB512FEA325287EA724>I<9138FF81
-C0010713E390381F807F90397C003F8049131F4848130F5B00031407A248481400A27FA2
-7F6D90C7FCEBFF8014FC6C13FF6C14C015F06C6C7F011F7F13079038007FFE1403140100
-381300157EA2123C153E157E007C147CA2007E147815F8007F495A4A5A486C485A26F9E0
-1FC7FC38E0FFFC38C01FE0222A7DA824>I<EB0380A4130791C7FCA25BA25BA2133EA213
-7E13FE12011207001FB512C0B6FCA2D801FCC7FCA312035BA512075BA5120F5BA4140700
-1F130E13C0A4141E141C1380A26D5AA2000F5B14F03807E1E03801FF80D8007EC7FC1A39
-78B723>I<01FE147F00FFEC7FFF4914FEA20007140300031401A34914FCA41503120749
-14F8A41507120F4914F0A4150F121F4914E0A2151FA3153F4914C0157F15FFEC01DF3A0F
-C003BFE09138073FFF3803F01E3801FFF826003FE01380282977A733>I<B539E007FFF0
-5D17E02707FE000313006C48EB01FC6F5A5E00014A5A5EA24B5A6D1307000092C7FC5D15
-0E6D5B7F5DA25D1480013F5B14815D14C3011F5B02C7C8FCA214CE14EEEB0FFCA25CA26D
-5A5CA25CA26D5A2C2878A630>I<B500C3B53803FFFCA204FE14F8290FFE003FE00013C0
-D807F86D48EB7F000003173E183C150F18386D5E0001141F705B153F4D5A15776D4B5A00
-00ECE7F04DC7FCEC01C3170E9038FF0383017F5D91380703F85FEC0E01021E5CD93F9C14
-F002BC6D5A02B813FDDAF8005B4A13FF5F6D5A94C8FC5C4A137E167C6DC7FC1678010E14
-383E2878A642>I<48B539C07FFFC0A33C000FFE003FF8006D48EB1FE001031580010102
-3EC7FC6E133C01005C027F5B6F5A91383F81C0EDC380DA1FC7C8FC15EFEC0FFE6E5A5D14
-0381A24A7E140FEC1E7F023C7FEC383F02707FECE01F010180903803C00F49486C7ED90F
-007F491303017E80D801FE80D807FF497EB5D8803F13F8A332277FA630>I<90B539E007
-FFF05E18E0902707FE000313006D48EB01FC705A5F01014A5A5F16036E5C0100140794C7
-FC160E805E805E1678ED8070023F13F05EED81C015C191381FC38015C793C8FC15EF15EE
-EC0FFCA25DA26E5AA25DA26E5A5DA24AC9FC5C140E141E141C5C121C003F5B5A485B495A
-130300FE5B4848CAFCEA701EEA783CEA3FF0EA0FC0343A80A630>I<017FB512FEA2ECC0
-0190397E0003FC49EB07F849EB0FF049EB1FE049EB3FC0ED7F8000011500495B4A5A4A5A
-4848485A4A5AC7485A4A5A5D147F4AC7FC495A495A49481370494813E0495A5C133F9038
-7F8001D9FF0013C0485A48481303485A4848EB078049130F4848131F003F143F397F8001
-FFB71200A227277EA628>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fn cmti10 10.95 38
-/Fn 38 122 df<EA01E0EA07F8120FA2EA1FFCA4EA0FF8EA0798EA001813381330A21370
-136013E013C01201EA0380EA07001206120E5A5A5A5A5A0E1C7A891C>44
-D<387FFFFEA3B5FCA21705799521>I<120FEA3FC0127FA212FFA31380EA7F00123C0A0A
-77891C>I<171C173C177CA217FCA216011603A21607A24C7EA2161DA216391679167116
-E1A2ED01C1A2ED038115071601150EA2031C7FA24B7EA25D15F05D4A5AA24A5AA24AC7FC
-5C140E5C021FB6FC4A81A20270C7127FA25C13015C495AA249C8FCA2130E131E131C133C
-5B01F882487ED807FEEC01FFB500E0017FEBFF80A25C39417BC044>65
-D<49B712C018F818FE903B0003FC0001FF9438007F804BEC3FC0A2F01FE014074B15F018
-0FA2140F5D181FA2021F16E05D183F19C0023FED7F804B14FF19004D5A027F4A5A92C7EA
-07F0EF1FE0EF7F804AD903FEC7FC92B512F017FE4AC7EA3F800101ED1FE04A6E7E170784
-01036F7E5CA30107825CA3010F5E4A1407A260011F150F5C4D5A60013F153F4A4A5A4D5A
-017F4A90C7FC4C5A91C7EA0FF849EC3FF0B812C094C8FC16F83C3E7BBD40>I<9339FF80
-01C0030F13E0033F9038F803809239FF807E07913A03FC001F0FDA0FF0EB071FDA1FC0EC
-BF00DA7F806DB4FC4AC77E495AD903F86E5A495A130F4948157E4948157C495A13FF91C9
-FC4848167812035B1207491670120FA2485A95C7FC485AA3127F5BA312FF5BA490CCFCA2
-170FA2170EA2171E171C173C173817786C16706D15F04C5A003F5E6D1403001F4B5A6D4A
-C8FC000F151E6C6C5C6C6C14F86C6C495A6C6CEB07C090397FC03F8090261FFFFEC9FC01
-0713F0010013803A4272BF41>I<49B712C018F818FE903B0003FE0003FF9438007F804B
-EC1FC0F00FE0F007F014074BEC03F8F001FCA2140F4BEC00FEA3141F4B15FFA3143F5DA3
-027F5D5DA219FE14FF92C81203A34917FC4A1507A219F813034A150F19F0A20107EE1FE0
-5CF03FC0A2010FEE7F804A16006060011F4B5A4A4A5A4D5AA2013F4B5A4AEC3FC04DC7FC
-017F15FEEE03FC4AEB0FF001FFEC7FE0B8128004FCC8FC16E0403E7BBD45>I<49B812F0
-A390260003FEC7123F180F4B1403A2F001E014075DA3140F5D19C0A2141F5D1770EFF003
-023F02E013804B91C7FCA21601027F5CED8003A2160702FFEB1F8092B5FCA349D9003FC8
-FC4A7F82A20103140E5CA2161E0107141C5CA293C9FC130F5CA3131F5CA3133F5CA2137F
-A25C497EB612E0A33C3E7BBD3B>70 D<DCFF8013E0030713F0033F9038FC01C09239FFC0
-3E03913A03FC000F07DA0FF0EB078F4A48903803DF80DA7F80EB01FF4AC8FC495A4948ED
-7F00495A495A4948814948153E495A13FF91C9FC4848163C12035B1207491638120FA248
-5A95C7FC485AA3127F5BA312FF5BA34BB512FE90C7FCA292C71380A295C7FCA25EA25FA2
-16037E6D5DA2003F15077F001F5E6D140F6C6C141F0007153F6C6CEC7BF0D801FE14F16C
-6CEB03E090393FE01F806DB5EA0060010701F890C8FC9038007FC03B4273BF46>I<49B6
-48B6FC495DA2D9000390C7000313004B5D4B5DA2180714074B5DA2180F140F4B5DA2181F
-141F4B5DA2183F143F4B5DA2187F147F4B5DA218FF91B8FC96C7FCA292C712015B4A5DA2
-170313034A5DA2170713074A5DA2170F130F4A5DA2171F131F4A5DA2173F133F4A5DA201
-7F157FA24A5D496C4A7EB66CB67EA3483E7BBD44>I<49B5933807FFFC496062D90003F0
-FC00505ADBBF805E1A771AEF1407033F923801CFE0A2F1039F020FEE071F020E606F6C14
-0E1A3F021E161C021C04385BA2F1707F143C023804E090C7FCF001C0629126780FE0495A
-02705FF00700F00E0114F002E0031C5BA2F03803010116704A6C6C5D18E019070103ED01
-C00280DA03805BA2943807000F13070200020E5C5FDB03F8141F495D010E4B5CA24D133F
-131E011CDAF9C05CEEFB80197F013C6DB4C7FC013895C8FC5E01784A5C13F8486C4A5CD8
-07FE4C7EB500F04948B512FE16E01500563E7BBD52>77 D<EEFFC0030713F892383F80FE
-9238FC003FDA03F0EB0F804A486D7EDA1F80804AC76C7E027E6E7E4A8149481400494881
-1307495A4948157F133F5C49C9FC4917805B1201485AA212075B000F17FFA25B121F1900
-48485DA448484B5AA34D5AA25B4D5A12FF60171F60007F163F604D5AA24DC7FC5F003F15
-014C5A6D5D001F4B5A4C5A6C6C4A5A4C5A6C6C4AC8FC000315FC6C6C495A6C6CEB07E001
-7FEB1F8090261FC07EC9FC903807FFF801001380394273BF46>79
-D<49B77E18F018FC903B0003FE0003FEEF00FF4BEC7F80F03FC00207151F19E05DA2020F
-16F0A25DA2141FF03FE05DA2023F16C0187F4B1580A2027FEDFF00604B495A4D5A02FF4A
-5A4D5A92C7EA3FC04CB4C7FC4990B512FC17E04ACAFCA21303A25CA21307A25CA2130FA2
-5CA2131FA25CA2133FA25CA2137FA25C497EB67EA33C3E7BBD3E>I<49B612FCEFFF8018
-F0903B0003FE000FF8EF03FE4BEB00FF8419800207ED3FC05DA219E0140F5DA3021FED7F
-C05DA2F0FF80143F4B15004D5A60027F4A5A4B495A4D5AEF3F8002FF02FEC7FC92380007
-F892B512E01780499038000FE04A6D7E707E707E0103814A130083A213075CA25E130F5C
-5F1603131F5CA3013F020714404A16E05F017F160119C04A01031303496C1680B6D88001
-13079438FE0F009338007E1ECAEA3FFCEF07F03B407BBD42>82 D<92390FF001C0ED7FFE
-4AB5EA0380913907F80FC791390FC003EF91391F8001FF4AC71300027E805C495A494814
-3EA2495AA2010F153C5CA3011F1538A38094C7FC80A214FC6DB4FC15F015FE6DEBFFC06D
-14F06D14FC6D80143F020F7F020180EC001F150303007F167F163FA2161FA212075A5F12
-0EA2001E153F94C7FCA2163E003E157E167C003F15FC4B5A486C5C4B5A6D495AD87DE0EB
-1F80D8F8F849C8FC017F13FE39F03FFFF8D8E00F13E048C690C9FC32427ABF33>I<B500
-FE91387FFFE094B5FC19C00003018091380FFC0049C8EA07F000015F606095C7FC170EA2
-5F173C17386D5DA26C5E16015F4C5AA24CC8FC5E160E5E805E137F5E5EA24B5AA24B5A15
-0793C9FCECC00EA2013F5B153C15385DA25D14C15DECC38014E302E7CAFCEB1FEF14EE14
-FCA25CA25CA25C5C130F5CA291CBFC130E3B406DBD44>86 D<B691383FFFF0A25C000301
-C0913807FE006C49EC03F86C17E0604D5A017F93C7FC6E140E5F013F153C6E5C17705F6D
-6C495A16034C5A010F92C8FC6E130E5E0107143C6E5B16705E6D6C485A15034B5A010191
-C9FCECFF0E5D6D133C15F85D5D6E5AA25DA292CAFC5CA35C1301A35C1303A35C1307A349
-5AA3131F001FB512F0A33C3E6EBD44>89 D<147E49B47E903907C1C38090391F80EFC090
-383F00FF017E137F4914804848133F485AA248481400120F5B001F5C157E485AA215FE00
-7F5C90C7FCA21401485C5AA21403EDF0385AA21407EDE078020F1370127C021F13F0007E
-013F13E0003E137FECF3E1261F01E313C03A0F8781E3803A03FF00FF00D800FC133E2529
-77A72E>97 D<EB1FC0EA0FFF5CA2EA003FA291C7FCA25BA2137EA213FEA25BA21201A25B
-A21203A25B147E3907F1FF809038F783E09038EF01F013FE390FF800F8A24913FC49137C
-485A157E5B15FE123FA290C7FCA248130115FC127EA2140300FE14F85AA2EC07F0A215E0
-48130F15C0141F15800078EB3F00127C147E003C5B383E01F8381E03E06C485A6CB4C7FC
-EA01F81F4076BE2A>I<EC1FE0ECFFF8903803F03E903807C00F90381F8007D93F001380
-017E131F49137F485A485A000715005B000F147E484890C7FCA2485AA3127F90C9FCA35A
-5AA6481403007E5C5D151E003E5C5D6C5CEC03E0390F800F802603E07EC7FC3801FFF838
-003FC0212977A72A>I<EE3F80ED1FFF1700A2ED007FA2167EA216FEA25EA21501A25EA2
-1503A25EA21507A25E147E903801FF8F903807C1CF90391F80EFC090383F00FF017E137F
-5B48486D5A485AA2485A000F92C7FC5B001F5CA24848137EA215FE127F90C75AA214015A
-485CA2140316384814F0A21407167891380FE070127C021F13F0007E013F5B003E137FEC
-F3E1261F01E35B3A0F8781E3802703FF00FFC7FCD800FC133E294077BE2E>I<EC3F8090
-3801FFE0903807E0F890381F803CEB3E0001FC131E485A485A12074848133E49133C121F
-4848137C15F8EC03F0397F000FE0ECFF80B5EAFC0014C048C8FCA45AA61506150E151E00
-7C143C15786C14F0EC01E06CEB07C0390F801F003807C0FC3801FFF038007F801F2976A7
-2A>I<EC03F0EC0FFC91383E0E1C9138FC077E903901F003FE1303903807E001D90FC013
-FCEB1F80A2EB3F004914F8137E01FE1303A2484814F0A2150712034914E0A2150F120749
-14C0A2151FA216805B153F1203ED7F006D5BA200015B0000495A9038F80F7E90387C1EFE
-EB1FF8903807E0FC90C7FC1401A25DA21403A25D001C1307007F5C48130F5D4A5A4AC7FC
-48137E00F85B387C03F0381FFFC0D803FEC8FC273B7CA72A>103
-D<EB01FC13FF5CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C8FCEC03
-F890387F0FFE91383E0F80D97E7813C0ECE007D9FFC013E014801400A2485A5BA25B0003
-140F16C05BA20007141F16805BA2000F143F16005B5D001F147EEDFE074913FCA2003F01
-01130FEDF80E1300161E48ECF01CA2007E1538A200FE1570020013E048EC7FC00038EC1F
-0028407ABE2E>I<1478EB01FCA21303A314F8EB00E01400AD137C48B4FC38038F80EA07
-07000E13C0121E121CEA3C0F1238A2EA781F00701380A2EAF03F140012005B137E13FE5B
-A212015BA212035B1438120713E0000F1378EBC070A214F0EB80E0A2EB81C01383148038
-078700EA03FEEA00F8163E79BC1C>I<EB07F0EA03FF14E0A2EA000FA214C0A2131FA214
-80A2133FA21400A25BA2137EA213FEA25BA21201A25BA21203A25BA21207A25BA2120FA2
-5BA2121FA25BA2123FA290C7FCA25A1307127EA2EAFE0F130E12FCA2131E131CA2EA7C38
-1378EA3C70EA1FE0EA0780144079BE17>108 D<D801F0D93F80137F3D07FC01FFE003FF
-C03D0F3E07C1F80F83F03D0E1F0F00FC1E01F8001E011C90387C3800001C49D97E707F00
-3C01F05C0038157F4A5C26783FC05C12704A91C7FC91C7127E00F003FE1301494A5CEA00
-7EA20301140301FE5F495CA203031407000160495C180F03075D0003051F13E0494A1480
-A2030FEC3F810007F001C0495CA2031F91383E0380120F494AEC0700A2033F150E001FEF
-1E1C4991C7EA0FF80007C7000EEC03E0432979A74A>I<D801F0EB3F803A07FC01FFE03A
-0F3E07C1F83A0E1F0F00FC001E011C137C001C49137E003C13F012385C38783FC012705C
-91C7FC00F015FE495CEA007EA2150101FE5C5BA2150300015D5B15075E0003020F137049
-14C0A2031F13F00007ED80E05B1681EE01C0120F49EC0380A2EE0700001FEC0F0E49EB07
-FC0007C7EA01F02C2979A733>I<EC1FC0ECFFF8903803F07C90380FC01FEB1F8090393F
-000F80017E14C0491307484814E0485A12075B000F15F0485AA2485AA2ED0FE0127F90C7
-FCA2151F4815C05AA2ED3F80A2ED7F00A248147E007C5C007E13015D4A5A003E495A6C49
-5A4A5A260F803EC7FC3807C0FC3801FFF038003F80242977A72E>I<903903E001F89039
-0FF807FE903A1E7C1E0F80903A1C3E3C07C0013C137801389038E003E0EB783F017001C0
-13F0ED80019038F07F0001E015F8147E1603000113FEA2C75AA20101140717F05CA20103
-140F17E05CA20107EC1FC0A24A1480163F010F15005E167E5E131F4B5A6E485A4B5A9039
-3FB80F80DA9C1FC7FCEC0FFCEC03E049C9FCA2137EA213FEA25BA21201A25BA21203A238
-7FFFE0B5FCA22D3A80A72E>I<027E1360903901FF81E0903807C1C390391F80E7C09038
-3F00F7017E137F5B4848EB3F80485AA2485A000F15005B121F5D4848137EA3007F14FE90
-C75AA3481301485CA31403485CA314074A5A127C141F007E133F003E495A14FF381F01EF
-380F879F3903FF1F80EA00FC1300143F92C7FCA35C147EA314FE5CA21301130390B512F0
-5AA2233A77A72A>I<D801F013FC3A07FC07FF803A0F3E0F03C0260E1F1C13E0001EEB38
-0F001C1370003CEBE01F123814C0D8783F14C00070903880070092C7FC91C8FC12F05BEA
-007EA313FE5BA312015BA312035BA312075BA3120F5BA3121F5B0007C9FC232979A726>
-I<EC7F80903801FFE0903807C0F890381F003C013E131C013C131E017C133E49137E15FE
-A2000114FCA215706D13007FEBFFC014FC6C13FF15806D13C06D13E0010F13F01300140F
-14071403120C123F387F80011403D8FF0013E0A300FCEB07C000F0EB0F8012700078EB1F
-006C133C381F01F83807FFE0C690C7FC1F297AA725>I<EB01C0EB03F01307A25CA2130F
-A25CA2131FA25CA2133FA291C7FCA2007FB51280B6FC1500D8007EC7FC13FEA25BA21201
-A25BA21203A25BA21207A25BA2120FA25BA2121F141C1380A2003F133C1438EB00781470
-14F05C495AEA1F03495A6C48C7FCEA07FCEA01F0193A78B81E>I<137C48B4141C26038F
-80137EEA0707000E7F001E15FE121CD83C0F5C12381501EA781F007001805BA2D8F03F13
-03140000005D5B017E1307A201FE5C5B150F1201495CA2151F0003EDC1C0491481A2153F
-1683EE0380A2ED7F07000102FF13005C01F8EBDF0F00009038079F0E90397C0F0F1C9039
-1FFC07F8903907F001F02A2979A731>I<017CEB01C048B4EB07F038038F80EA0707000E
-01C013F8121E001C1403EA3C0F0038EC01F0A2D8781F130000705BA2EAF03F91C712E012
-005B017E130116C013FE5B1503000115805BA2ED07001203495B150EA25DA25D15780001
-14706D5B0000495A6D485AD97E0FC7FCEB1FFEEB03F0252979A72A>I<017C167048B491
-387001FC3A038F8001F8EA0707000E01C015FE001E1403001CEDF000EA3C0F0038177C15
-07D8781F4A133C00701380A2D8F03F130F020049133812005B017E011F14784C137013FE
-5B033F14F0000192C712E05BA2170100034A14C049137E17031880A2EF070015FE170E00
-010101141E01F86D131C0000D9039F5BD9FC076D5A903A3E0F07C1E0903A1FFC03FFC090
-2703F0007FC7FC372979A73C>I<137C48B4143826038F8013FCEA0707000E7F001E1401
-001C15F8EA3C0F12381503D8781F14F000701380A2D8F03F1307020013E012005B017E13
-0F16C013FE5B151F1201491480A2153F000315005BA25D157EA315FE5D00011301EBF803
-0000130790387C1FF8EB3FF9EB07E1EB00035DA21407000E5CEA3F80007F495AA24A5AD8
-FF0090C7FC143E007C137E00705B387801F0383803E0381E0FC06CB4C8FCEA03F8263B79
-A72C>121 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fo cmbxti10 14.4 1
-/Fo 1 47 df<13FCEA03FF000F13804813C05AA25AA2B5FCA31480A214006C5A6C5A6C5A
-EA0FE0121271912B>46 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fp cmbx12 17.28 51
-/Fp 51 122 df<19F0F001F8F003FCA3180719F8180FA219F0181F19E0183FA219C0187F
-198018FFA219005F601703A260170760170FA260171F60173FA260177F6017FFA295C7FC
-5E5F1603A25F16075F160FA25F161F5F163FA25F167F5F16FFA294C8FC5D5E1503A25E15
-075E150FA25E151F5EA2153F5E157FA25E15FF93C9FC5CA25D14035D1407A25D140F5D14
-1FA25D143F5D147FA25D14FF92CAFC5BA25C13035C1307A25C130F5C131FA25C133F5C13
-7FA25C13FF91CBFC5AA25B12035B1207A25B120F5B121FA25B123F5B127FA25B12FF90CC
-FCA3127E123C3E9077EB51>47 D<16F04B7E1507151F153FEC01FF1407147F010FB5FCB7
-FCA41487EBF007C7FCB3B3B3B3007FB91280A6395E74DD51>49 D<913801FFF8021FEBFF
-C091B612F8010315FF010F16C0013F8290267FFC0114F89027FFE0003F7F4890C7000F7F
-48486E7FD807F86E148048486E14C048486E14E048486F13F001FC17F8486C816D17FC6E
-80B56C16FE8380A219FFA283A36C5BA26C5B6C90C8FCD807FC5DEA01F0CA14FEA34D13FC
-A219F85F19F04D13E0A294B512C019804C14004C5B604C5B4C5B604C13804C90C7FC4C5A
-4C5A4B13F05F4B13804B90C8FC4B5AED1FF84B5A4B5A4B48143F4A5B4A48C8FC4A5A4A48
-157E4A5A4A5AEC7F8092C9FC02FE16FE495A495A4948ED01FCD90FC0150749B8FC5B5B90
-B9FC5A4818F85A5A5A5A5ABAFCA219F0A4405E78DD51>I<92B5FC020F14F8023F14FF49
-B712C04916F0010FD9C01F13FC90271FFC00077FD93FE001017F49486D8049C86C7F4848
-83486C6F7F14C0486D826E806E82487FA4805CA36C5E4A5E6C5B6C5B6C495E011FC85A90
-C95CA294B55A614C91C7FC604C5B4C5B4C5B4C5B047F138092260FFFFEC8FC020FB512F8
-17E094C9FC17F817FF91C7003F13E0040713F8040113FE707F717F7113E085717FA2717F
-85A285831A80A31AC0EA03FCEA0FFF487F487F487FA2B57EA31A80A34D14005C7E4A5E5F
-6C495E49C8485BD81FF85F000F5ED807FE92B55A6C6C6C4914806C01F0010791C7FC6C90
-26FF803F5B6D90B65A011F16F0010716C001014BC8FCD9001F14F0020149C9FC426079DD
-51>I<F01F804E7E187F18FFA25F5F5F5FA25F5F5FA294B5FC5E5E5EA25E5EEE3FBFEE7F
-3FA216FEED01FCED03F8ED07F0A2ED0FE0ED1FC0ED3F8016005D15FE4A5A4A5AA24A5A4A
-5A4A5A4A5AA24AC7FC14FE495A5C1303495A495A495A5C133F49C8FC13FE485AA2485A48
-5A485A5B121F485A48C9FC12FEBCFCA6CA6CEBC000B1037FB8FCA6485E7CDD51>I<01C0
-EE01C0D801F8160F01FF167F02F0EC07FFDAFF8090B5FC92B71280190060606060606060
-95C7FC17FC5F17E0178004FCC8FC16E09026FC3FFCC9FC91CBFCADED3FFE0203B512F002
-0F14FE023F6E7E91B712E001FDD9E00F7F9027FFFE00037F02F801007F02E06EB4FC0280
-6E138091C8FC496F13C04917E07113F0EA00F090C914F8A219FC83A219FEA419FFA3EA03
-F0EA0FFC487E487E487FA2B57EA319FEA35C4D13FC6C90C8FC5B4917F8EA3FF001804B13
-F06D17E0001F5E6C6C17C06D4B1380D807FC92B512006C6C4A5B6C6C6C01075B6C01E001
-1F5BD97FFE90B55A6DB712C0010F93C7FC6D15FC010115F0D9003F1480020301F0C8FC40
-6078DD51>I<EE1FFF0303B512E0031F14F892B612FE0203814AD9FC037F021F9039C000
-7FC04A90C7EA1FE0DAFFFC6E7E494914074949EC7FF8494914FF49495B4949497F4990C7
-FC495D5C13FF485BA25A4A6E5B5A715B48496E5B725A4894C8FCA35AA35C48913801FFE0
-030F13FE033F6D7E4B14E092B612F89126E1FE037FB53AE3F0007FFEDAE7E06D7EDAEFC0
-6D7F4B6D7F02FFC76C7F4A82717F4A82A2854A8085A24A1780A54A17C0A37EA77EA47E6E
-1780A27EA21A007E4D5B7E6E5E7E6E5E6C4C5B6D7E013F4B5B6D6C4A5B6D01C0495B6D6D
-90B5C7FC6DD9FC0713FC6D90B65A6D5E023F15C0020F92C8FC020114F8DA001F13804260
-79DD51>I<EA07E0120F7F13FCEBFFFC91B912F8A45AA21AF01AE01AC01A801A00A24860
-6161616101E0C9123F01804C5A48CA485A4D90C7FC60007E4C5A17074D5A4D5A4D5A485F
-4D5A17FF4C90C8FCC9485A5F4C5A160F4C5A5F163F4C5A16FF5F5D94C9FC5D5D5E150FA2
-4B5AA2153FA24B5AA215FFA34A5BA25CA35CA44A5BA45CA65CAD6E5BA26E5BDA03FECAFC
-6E5A456377E051>I<F00FE04E7EA24E7EA34E7EA24E7EA34D7FA24D80A24D80A34D80A2
-4D80A34D80A2DD7FBF7FA2181F05FF8017FE04016D7FA24D7E04038217F804076D80A24D
-7E040F8217E0041F6D80A24D7F043F825F047F6E7FA294C77E4C825E03016F7FA24C8003
-03845E03076F80A24C80030F845E031F6F80A24C81033F845E037F707F93B9FCA292BA7E
-A24A85A203FCC912070203865D020771805D86020F864B82021F865D87023F864B83027F
-8692CBFC874A864A840101875C496C728090381FFFC0B700E092B812FEA66F647BE37A>
-65 D<BB12F0F2FF801BF81BFEF3FFC088D800010280C7000114F8DF003F7F080F13FF74
-807480867480757FA2757FA28987A289A965A26365A2515BA298B55A505C505C5091C7FC
-505B505B087F13F00703B512C096B6C8FC93B812F81BC01BF8F3FF801CE00480C8001F13
-F8080713FE08016D7E7480757F757F757F89757F89871E80871EC0A41EE087A663A21EC0
-A3631E80A2511400A2515B515B6398B55A505C08075C081F5C97B6C7FCBD5A1CF81CE099
-C8FC1BF898C9FC63627AE173>I<4DB5ED03C0057F02F014070407B600FE140F047FDBFF
-C0131F4BB800F0133F030F05FC137F033F9127F8007FFE13FF92B6C73807FF814A02F002
-0113C3020702C09138007FE74A91C9001FB5FC023F01FC16074A01F08291B54882490280
-824991CB7E49498449498449498449865D49498490B5FC484A84A2484A84A24891CD127F
-A25A4A1A3F5AA348491A1FA44899C7FCA25CA3B5FCB07EA380A27EA2F50FC0A26C7FA37E
-6E1A1F6C1D80A26C801D3F6C6E1A00A26C6E616D1BFE6D7F6F4E5A7F6D6D4E5A6D6D4E5A
-6D6D4E5A6D6E171F6D02E04D5A6E6DEFFF806E01FC4C90C7FC020F01FFEE07FE6E02C0ED
-1FF8020102F8ED7FF06E02FF913803FFE0033F02F8013F1380030F91B648C8FC030117F8
-6F6C16E004071680DC007F02F8C9FC050191CAFC626677E375>I<BB12E0F2FF801BF01B
-FE757E1CF0D800010280C7000780DF007F13FE080F6D7E0801807480093F7F090F13FC75
-7F757F877580767F8A88767F8A888AA2767FA28A881F80A37614C0A41FE0A5881FF0B052
-14E0A51FC0A4521480A31F006466A2525BA2525BA2525B666499B55A515C5191C7FC515B
-515B515B097F5B50B512C008075C083F91C8FC0707B512FCBD12F01CC051C9FC1BF81B80
-08E0CAFC6C627AE17C>I<BD12FCA488A2D8000102C0C71201F1000F1A01F2007F1B3F1B
-0F1B07757EA28787A288A3F43F80A31C1FA3197EA3F40FC0A499C7FC19FEA31801A21803
-1807181F18FF93B6FCA6EEC000181F180718031801A21800A21D7E197EA21DFCA696C812
-011DF8A31C03A3F407F0A31C0FA21C1F1C3F1DE01C7F1CFF63631B0F093F13C098B5FC1A
-0797B6FCBEFCA31D80A35F617AE06A>I<BD12E0A41CF0A2D8000102C0C71207F1003F1A
-0F1A031A001B7F1B3FF31FF81B0FA21B07A21B03A21B011CFCA31B00A419FCA21C7EA41C
-00A21801A31803A21807180F183FEF01FF93B6FCA6EEC001EF003F180F18071803A21801
-A31800A896C9FCB3A5B912F8A657617AE065>I<4DB5ED03C0057F02F014070407B600FE
-140F047FDBFFC0131F4BB800F0133F030F05FC137F033F9127F8007FFE13FF92B6C73807
-FF814A02F0020113C3020702C09138007FE74A91C9001FB5FC023F01FC16074A01F08291
-B54882490280824991CB7E49498449498449498449865D49498490B5FC484A84A2484A84
-A24891CD127FA25A4A1A3F5AA348491A1FA44899C8FCA25CA3B5FCB07E071FB812F880A3
-7EA296C70001ECC000A26C7FA37E807EA26C80A26C80A26C807F6D7F816D7F7F6D7F6D6D
-5F6D14C06D6E5E6E7F6E01FC5E020F01FF5E6E02C0ED7FEF020102F8EDFFC76E02FF0207
-1383033F02FC013F1301030F91B638FC007F03014D131F6F6C04E01307040704801301DC
-007F02F8CAFC050191CBFC6D6677E37F>I<B912E0A6C702E0C7FCB3B3B3B3AEB912E0A6
-33627CE13C>73 D<B912F8A6D8000102C0CBFCB3B3B1F307E0A5F30FC0A61B1FA31B3F1C
-80A21B7FA21BFFA262A262625013006262624FB5FC1907191F4EB6FCBDFC63A553627AE1
-61>76 D<B700C0083FB612F070627097B7FCA37061D800010DF8C7FC70F103EFA202FD6D
-F107CFA202FC6DF10F8FA36F6DF01F0FA26F6D183EA26F6D187CA26F6D18F8A36F6DEF01
-F0A26F6DEF03E0A26F6DEF07C0A26F6DEF0F80A3706DEE1F00A2706D163EA2706D5EA270
-6D5EA3706D4B5AA2706D4B5AA2706D4B5AA2706D4B5AA3716D4AC7FCA2716D143EA2716D
-5CA2716D5CA3716D495AA2716D495AA2716D495AA2716D495AA3726D48C8FCA272EBC03E
-A2726D5AA2726D5AA372EBF9F0A272EBFFE0A2725CA2725CA37390C9FCA2735AA2735A90
-381FFFC0B700F86E480207B812F0A3735AA2735A8C627AE199>I<B700E0040FB7128082
-828282A2D800016EDC000101FCC7FC719338001FC08383A28302FD808302FC80816F7F6F
-806F8084816F806F806F8084707F8270807080857080827080708085717F837180718071
-80868371807180727F8672808472807280877280847280737F87731480857314C07314E0
-1CF07314F8857314FC7413FE7413FF1D9F867414DF7414FF86A286868787A287878787A2
-8787888888A288888890261FFFC084B712F8881D7F1D3F1D1F775A71627AE17E>I<9438
-1FFFE00407B67E043F15F04BB712FE030FEEFFC0033FD9FC0014F092B500C0010F13FC02
-0349C7000113FF4A01F86E6C7F021F496F13E04A01C0030F7F4A496F7F91B5C96C7F0103
-497013FF494970804B834949717F49874949717F49874B8390B586484A717FA24891CB6C
-7FA2481D804A84481DC0A348497214E0A3481DF0A34A85481DF8A5B51CFCB06C1DF8A36E
-96B5FCA36C1DF0A46C6D4E14E0A36C1DC06E606C1D80A26C6E4D1400A26C6E4D5BA26C6E
-4D5BA26D6D4D5B6D636D6D4D5B6F94B5FC6D636D6D4C5C6D6D4C91C7FC6D6E4B5B6D02E0
-031F5B023F6D4B13F06E01FC92B55A6E01FF02035C020302C0010F91C8FC020002FC90B5
-12FC033F90B712F0030F17C0030394C9FCDB007F15F804071580DC001F01E0CAFC666677
-E379>I<BB7E1AFCF2FFC01BF81BFE757ED800010280C7001F80070114F0736C7F081F7F
-747F747F7414807414C0A27414E0A21DF0A27513F8A41DFCA91DF8A498B512F0A21DE0A2
-5014C01D8062501400505B505B087F5B4FB512E0071F5C93B9C7FC1BFC1BF01B8008F0C8
-FC04C0CCFCB3B3A2B97EA65E627AE16E>I<BA12F8F1FFE01AFEF2FFC01BF01BFED80001
-0280C76C7F070714C0070014F0747F081F7F747F747F7480A2748089A37480A389A865A3
-505CA265A2505C9AC9FC505B505B505B087F5B4FB55A0707148096B548CAFC93B812F81B
-C050CBFC621AFF932680000314C0DE007F7F071F13F8737F737F737F73808885888688A2
-747FA688A688A676140FF71F80A374801F3F86771400745E746E5BB96E6E5B746E485A75
-EBFE07091F90B55A090715E009015DCF003F91C7FC0A0013FC71647AE178>82
-D<DBFFFCEC01E0020FD9FFE01303027F02FC130749B7130F0107EEC01F011F16F049D9C0
-07EBF83F4948C7383FFE7FD9FFF8020FB5FC4801E014014849804849153F91C97E484882
-001F834982003F83845B007F187FA2193FA200FF181FA27F190FA27FA26D17078080806C
-01F893C7FC80ECFF8015F86CECFFC016FC6CEDFFE017FE6CEEFFE018F86C17FE6C717E6C
-846C846D17F86D836D836D8313036D18806D6C17C0020F17E01401DA000F16F015000407
-15F8EE007F1703050014FC183F84060713FE84A2007C8300FC83A2197FA3193F7EA31AFC
-7EA27F1AF86D177F7F1AF06D17FF6D18E06D5E01FF18C06E4B138002E04B130002F84B5A
-02FFED3FFC01CF01E0ECFFF8018301FF010F5B010191B65A6D6C5E48011F93C7FC480103
-15FC48D9003F14E048020149C8FC476677E35A>I<001FBEFCA64849C79126E0000F1480
-02E0180091C8171F498601F81A0349864986A2491B7FA2491B3F007F1DC090C9181FA400
-7E1C0FA600FE1DE0481C07A5CA95C7FCB3B3B3A3021FBAFCA663617AE070>I<B96C023F
-B612FEA6D8000102C0CA0007EBF000E2007FC7FCB3B3B3AA656D63A2821C018065701703
-80525A6E7F6E4F5A70171F6E626E6D4D5A6E6D177F525A6E6E030390C8FC033F01E04B5A
-6F6DED1FFC6F01FCED7FF80303D9FF80903803FFE06F02F8017F5B6F6C90B7C9FC041F5E
-040716F8040016C0050F4ACAFCDD003F13C06F647AE17C>I<B800FC047FB612E0A6D800
-070280CB6CEB80006D6EDE07FCC7FC666D6E611D0F6D6E611D1FA26E6D611D3F6E6D611D
-7F6E6D96C8FC65A26E6D4D5AA26E6E5F1C036E6E5F1C076E6E5F1C0FA26E6E5F1C1F6F6D
-5F1C3F6F6D5F1C7FA26F6D4CC9FCA26F6D5E1B016F6E5D1B03A26F6E4A5AA26F6E5D1B0F
-6F6E5D1B1F706D5D1B3FA2706D5D1B7F706D92CAFC63706D5C1A01A2706E485AA27002C0
-5B1A077002E05B1A0F7002F05B1A1FA27101F85B1A3F7101FC5B1A7F7101FE90CBFC62A2
-716D5AA2715CA2715CA3715CA2715CA2725BA2725BA37290CCFCA2725AA2725AA2725A73
-637DE17A>I<B800F8011FB80203B7FCA6D8000F91C9000102E0CAEBFE006D72F20FF070
-72715A230F6D73627072171F6D6A708277173F6D7397C7FC70846B6E72197E707217FE6E
-726170855118016E6870731503636E68704C6E15076E68718451180F6EDE7E7F60717215
-1F6E06FE61714B7E08016F153F6E4E6C95C8FC71840803616F4D6C177E7102076F15FE6F
-66714B7E080F7013016F4D6C5F7185081F18036F4D6C5F71023F7013076F94C75F728450
-180F6F047E6E5E7272131F1AFE6F4C6E5EDEE00171133F6F4C6E93C9FC06F08407036170
-4B6E157E06F87213FE1907704B6E5DDEFC0F1881704B6E5D06FE19C1071F18C3704B6E5D
-DEFF3F18E7706407BFC9FC07FF18FF704A705CA3704A705CA27099CAFC4F82A27149705B
-A37149705BA27149705BA37149705BA37190CB5BA27148725AA37148725A714872CBFCA0
-637DE1A7>I<913803FFFE027FEBFFF00103B612FE010F6F7E4916E090273FFE001F7FD9
-7FE001077FD9FFF801017F486D6D7F717E486D6E7F85717FA2717FA36C496E7FA26C5B6D
-5AEB1FC090C9FCA74BB6FC157F0207B7FC147F49B61207010F14C0013FEBFE004913F048
-B512C04891C7FC485B4813F85A5C485B5A5CA2B55AA45FA25F806C5E806C047D7F6EEB01
-F96C6DD903F1EBFF806C01FED90FE114FF6C9027FFC07FC01580000191B5487E6C6C4B7E
-011F02FC130F010302F001011400D9001F90CBFC49437CC14E>97
-D<903807FF80B6FCA6C6FC7F7FB3A8EFFFF8040FEBFF80047F14F00381B612FC038715FF
-038F010014C0DBBFF0011F7FDBFFC001077F93C76C7F4B02007F03F8824B6F7E4B6F1380
-4B17C0851BE0A27313F0A21BF8A37313FCA41BFEAE1BFCA44F13F8A31BF0A24F13E0A24F
-13C06F17804F1300816F4B5A6F4A5B4AB402075B4A6C6C495B9126F83FE0013F13C09127
-F00FFC03B55A4A6CB648C7FCDAC00115F84A6C15E091C7001F91C8FC90C8000313E04F65
-7BE35A>I<92380FFFF04AB67E020F15F0023F15FC91B77E01039039FE001FFF4901F801
-0113804901E0010713C04901804913E0017F90C7FC49484A13F0A2485B485B5A5C5A7113
-E0485B7113C048701380943800FE0095C7FC485BA4B5FCAE7EA280A27EA2806C18FCA26C
-6D150119F87E6C6D15036EED07F06C18E06C6D150F6D6DEC1FC06D01E0EC7F806D6DECFF
-00010701FCEB03FE6D9039FFC03FFC010091B512F0023F5D020F1580020102FCC7FCDA00
-0F13C03E437BC148>I<F17FF8050FB5FCA6EF000F8484B3A892380FFF804AB512F8020F
-14FE023FECFF8391B712E301039138807FF3499039F8000FFB011F01E00103B5FC494913
-004990C87E49488148498148834A815A485BA2485BA25AA3485BA4B5FCAE7EA46C7FA37E
-A26C7FA26C5F806C5F6C6D5D6C6D5D017F93B5FC6D6C6C0103806D6D49806D01F0D91FF7
-EBFFFE6D9039FE01FFE7010190B612876D6CECFE07021F14F8020314E09127003FFE00EC
-C0004F657BE35A>I<92380FFFC04AB512FC020FECFF80023F15E091B712F80103D9FE03
-7F499039F0007FFF011F01C0011F7F49496D7F4990C76C7F49486E7F48498048844A8048
-84485B727E5A5C48717EA35A5C721380A2B5FCA391B9FCA41A0002C0CBFCA67EA380A27E
-A27E6E160FF11F806C183F6C7FF17F006C7F6C6D16FE6C17016D6C4B5A6D6D4A5A6D01E0
-4A5A6D6DEC3FE0010301FC49B45A6D9026FFC01F90C7FC6D6C90B55A021F15F8020715E0
-020092C8FC030713F041437CC14A>I<EE3FFC0307B51280033F14C04AB612F0020715F8
-4A9038F03FFC4AEB807F913A7FFE00FFFE4A5A4B4813FF4913F05B4913E0A24913C0A270
-13FE4949EB7FFCEF3FF8EF1FF0EF07C094C7FCB0B812C0A6D8001F01C0C8FCB3B3B0007F
-B612FCA638657CE431>I<F107F8DB7FFEEC3FFE020FB5D8F001B5FC027FDAFE03148049
-B7128F49DCDFFD13C0010FD9F00FEBFFC149D9800114014990C7EBFC0349486E6C7E4948
-EC3FFF48496E018113800780130048F0C03E97C7FC48496E7FA34884A96C60A36C6D4A5B
-A26C60A26C6D4A90C8FC6D6C4A5A6D6C4A5A6D6D485BDBF00F5B4990B612C060D97C7F4A
-C9FCD9FC0F14F09126007FFECAFC92CCFC1201A47FA27F8014F091B77E18FE6CEFFFC019
-F06D17FC19FF6D846D846D846D84013F8490BAFC0003854801E0C712014890C9000F7F48
-4816014848EE007F4848717E8512FF5B85A56D5F007F616D173F003F616D177F6C6C4D5A
-6C01C003035B6C6D4B5B6C01F8031F5BC601FF92B5C7FC6D01F8011F5B011F90B712F801
-0717E0010094C8FC020F15F0DA003F01FCC9FC4A607CC151>I<903807FF80B6FCA6C6FC
-7F7FB3A8EF1FFF94B512F0040714FC041F14FF4C8193267FE07F7F922781FE001F7FDB83
-F86D7FDB87F07FDB8FC0814C7F039FC78015BE03BC8003FC825DA25DA25DA45DB3B2B7D8
-F007B71280A651647BE35A>I<EB0FE0EB3FF8497E48B5FCA24880A24880A76C5CA26C91
-C7FCA238007FFC6D5AEB0FE090C9FCAF903807FF80007FB5FCA6C6FC7F7FB3B3AEB712C0
-A622657BE42C>I<ED01FCED07FF4B1380033F13E0A24B13F0A292B512F8A76F13F0A26F
-13E0A2030F13806F1300ED01FC92C8FCAFEEFFF8021FB5FCA6EC000F8181B3B3B3AAEA07
-F0EA1FFC487E487EB56C4813F0A317E05D17C05D17806C4948130049495A6C48495A261F
-FE0313F06CB65A6C158000014AC7FC6C6C13F8010713802D8288E431>I<903807FF80B6
-FCA6C6FC7F7FB3A90503B61280A6DD003FEB8000DE0FFCC7FCF01FF04E5AF0FFC04D5B4D
-90C8FCEF07FC4D5AEF3FF04D5A4D5A4C90C9FC4C5AEE0FFC4C5A4C5AEE7FC04C7E03837F
-03877F158F039F7F03BF7F92B5FC838403FC804B7E03F0804B6C7F4B6C7F1580707F707F
-707FA270807080717FA2717F717F717FA2717F717F83867180727F95B57EB7D8E00FECFF
-F0A64C647BE355>I<903807FF80B6FCA6C6FC7F7FB3B3B3B3ADB712E0A623647BE32C>I<
-902607FF80D91FFFEEFFF8B691B500F00207EBFF80040702FC023F14E0041F02FF91B612
-F84C6F488193267FE07F6D4801037F922781FE001F9027E00FF0007FC6DA83F86D9026F0
-1FC06D7F6DD987F06D4A487F6DD98FC0DBF87EC7804C6D027C80039FC76E488203BEEEFD
-F003BC6E4A8003FC04FF834B5FA24B5FA24B94C8FCA44B5EB3B2B7D8F007B7D8803FB612
-FCA67E417BC087>I<902607FF80EB1FFFB691B512F0040714FC041F14FF4C8193267FE0
-7F7F922781FE001F7FC6DA83F86D7F6DD987F07F6DD98FC0814C7F039FC78015BE03BC80
-03FC825DA25DA25DA45DB3B2B7D8F007B71280A651417BC05A>I<923807FFE092B6FC02
-0715E0021F15F8027F15FE494848C66C6C7E010701F0010F13E04901C001037F49496D7F
-4990C87F49486F7E49486F7E48496F13804819C04A814819E048496F13F0A24819F8A348
-496F13FCA34819FEA4B518FFAD6C19FEA46C6D4B13FCA36C19F8A26C6D4B13F0A26C19E0
-6C6D4B13C0A26C6D4B13806C6D4B13006D6C4B5A6D6D495B6D6D495B010701F0010F13E0
-6D01FE017F5B010090B7C7FC023F15FC020715E0020092C8FC030713E048437CC151>I<
-902607FF80EBFFF8B6010FEBFF80047F14F00381B612FC038715FF038F010114C09227BF
-F0003F7FC6DAFFC0010F7F6D91C76C7F6D496E7F03F86E7F4B6E7F4B17804B6F13C0A273
-13E0A27313F0A21BF885A21BFCA3851BFEAE4F13FCA41BF861A21BF0611BE0611BC06F92
-B512801B006F5C6F4A5B6F4A5B03FF4A5B70495B04E0017F13C09226CFFC03B55A03C7B6
-48C7FC03C115F803C015E0041F91C8FC040313E093CBFCB3A3B712F0A64F5D7BC05A>I<
-D90FFFEB0FFCB690383FFF8093B512E04B14F04B14F8923907FC7FFC92390FE0FFFEC6EC
-1F806DD93F0113FF6D133E157E157C15F8A215F07013FEA24BEB7FFCEF3FF8EF0FE04B90
-C7FCA55DB3B0B712F8A638417BC042>114 D<913A3FFF8007800107B5EAF81F011FECFE
-7F017F91B5FC48B8FC48EBE0014890C7121FD80FFC1407D81FF0801600485A007F167F49
-153FA212FF171FA27F7F7F6D92C7FC13FF14E014FF6C14F8EDFFC06C15FC16FF6C16C06C
-16F06C826C826C826C82013F1680010F16C01303D9007F15E0020315F0EC001F1500041F
-13F81607007C150100FC81177F6C163FA2171F7EA26D16F0A27F173F6D16E06D157F6D16
-C001FEEDFF806D0203130002C0EB0FFE02FCEB7FFC01DFB65A010F5DD8FE0315C026F800
-7F49C7FC48010F13E035437BC140>I<EC07E0A6140FA5141FA3143FA2147FA214FF5BA2
-5B5B5B5B137F48B5FC000F91B512FEB8FCA5D8001F01E0C8FCB3AFEF0FC0AC171F6D6D14
-80A2173F6D16006F5B6D6D137E6D6D5B6DEBFF836EEBFFF86E5C020F14C002035C912600
-3FFCC7FC325C7DDA3F>I<902607FFC0ED3FFEB60207B5FCA6C6EE00076D826D82B3B3A2
-60A360A2607F60183E6D6D147E4E7F6D6D4948806D6DD907F0ECFF806D01FFEB3FE06D91
-B55A6E1500021F5C020314F8DA003F018002F0C7FC51427BC05A>I<B700C00103B512FC
-A6C66C01C0C8381FFE006D6DED07F0A26D6D5E190F6D6D5E191F6D606F153F6D95C7FC6F
-5DA26D6D157E19FE6D6E5C18016E5E7013036E5E701307A26E6D5C180F6E6D5C181F6E6D
-5C183F6E93C8FC705BA26E6D13FEA26E6E5A17816FEBC1F817C36F5C17E76F5C17FFA26F
-5CA26F5CA26F91C9FCA26F5BA36F5BA2705AA2705AA2705AA2705A4E417DBF55>I<B700
-81B600FC0103B512FCA6C66C0180C701FCC8381FFE006F6FED03F86D047F5F856F6E1607
-6D646F70140F6D705F866F6E161F6D646F4A6D143F6D99C7FC4E7F6F616D1B7E6F4A6D14
-FE6D6395B57E7001FC15016E62DCC0016E13036EDBF87F5D05038004E0496C14076E62DC
-F007ED800F6E4B6C5D050F15C004F8496C141F6E62DCFC1FEDE03F6E4B6C92C8FC053F15
-F004FE496C5C6E197E7048EDF8FE6E027E6D5C05FE15FC4D6D13FD6F601BFF6F496E5BA2
-4D806F60A26F496E5BA24D806F60A26F496E90C9FCA294C87E6F5FA26F486F5A047C6F5A
-6E417DBF75>I<007FB600C0017FB512F8A6D8001F01F8C70007EBF0006D040190C7FC6D
-6D5D6D6D4A5A6D6D4A5A70495A6D4C5A6E7F6E6D495A6E6D495A7049C8FC6E4A5A6E6D48
-5A6E6D485A6E13FFEF8FF06EEC9FE06FEBFFC06F5C6F91C9FC5F6F5B816F7F6F7F848170
-7F8493B57E4B805D4B80DB0FF37FDB1FE17F04C080153F4B486C7F4B486C7F4A486D7F4A
-486D7F4A5A4B6D7F020F6E7F4A486D7F4A486D804A5A4AC86C7F49486F7F4A6F7F010770
-7FEB3FFFB600F049B7FCA650407EBF55>I<B700C00103B512FCA6D8003F01C0C8381FFE
-006FED07F0A26D6D5E190F6D6D5E191F6D6D5E193F6D95C7FC6F5D6D177E6F15FEA26D6E
-495AA26E6D5C18036E6D5C18076E5E70130F6E5E70131FA26E6D495AA26E6D91C8FC606E
-6D137E18FE6E5D17816F5C17C3A26FEBE7F0A26FEBF7E017FF6F5CA26F5CA26F91C9FCA3
-6F5BA26F5BA2705AA2705AA2705AA35FA25F163F94CAFC5E167E16FED807E05CD81FF813
-01487E486C495AA2B5495AA24B5A5E151F4B5A6C4849CBFC15FEEBFC01393FF807FC391F
-F03FF06CB55A6C5C6C91CCFCC613FCEB1FE04E5D7DBF55>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fq cmr12 12 54
-/Fq 54 122 df<1618163C167CA2167816F8A216F01501A216E01503A216C01507A21680
-150FA2ED1F00A2151E153EA2153C157CA2157815F8A25D1401A24A5AA25D1407A25D140F
-A292C7FC5CA2141E143EA2143C147CA25CA25C1301A25C1303A25C1307A25C130FA291C8
-FC5BA2133EA2133C137CA2137813F8A25B1201A25B1203A2485AA25B120FA290C9FC5AA2
-121E123EA2123C127CA2127812F8A25A126026647BCA31>47 D<14FF010713E090381F81
-F890383E007C01FC133F4848EB1F8049130F4848EB07C04848EB03E0A2000F15F0491301
-001F15F8A2003F15FCA390C8FC4815FEA54815FFB3A46C15FEA56D1301003F15FCA3001F
-15F8A26C6CEB03F0A36C6CEB07E0000315C06D130F6C6CEB1F806C6CEB3F00013E137C90
-381F81F8903807FFE0010090C7FC28447CC131>I<143014F013011303131F13FFB5FC13
-E713071200B3B3B0497E497E007FB6FCA3204278C131>I<EB03FE90381FFFC0017F13F0
-3901F80FFC3903C001FE48486C7E000EC7EA7F8048EC3FC0ED1FE04815F00030140F0070
-15F800601407126CB415FC7F7F1503A46C4813076CC7FCC8FC16F8A2150F16F0151F16E0
-A2ED3FC0ED7F8016005D5D4A5A4A5A4A5A5D4A5A4A5A4AC7FC147C5C5C495A495A495A49
-C7120C131E5B013814185B5B485A4848143848C81230000E1570001FB612F0A25A5AB712
-E0A326427BC131>I<49B4FC010F13E0013F13FC9038FE01FE3A01F0007F80D803C0EB3F
-C048C7EA1FE0120EED0FF0EA0FE0486C14F8A215077F5BA26C48130FEA03C0C813F0A3ED
-1FE0A2ED3FC01680ED7F0015FE4A5AEC03F0EC1FC0D90FFFC7FC15F090380001FCEC007F
-ED3F80ED1FC0ED0FE016F0ED07F816FC150316FEA2150116FFA3121EEA7F80487EA416FE
-491303A2007EC713FC00701407003015F80038140F6C15F06CEC1FE06C6CEB3FC0D803E0
-EB7F803A01FE01FE0039007FFFF8010F13E0010190C7FC28447CC131>I<ED0380A21507
-150FA2151F153FA2157F15FFA25CEC03BF153F14071406140C141C141814301470146014
-C013011480EB03005B13065B131C13185B1370136013E0485A5B120390C7FC1206120E12
-0C5A123812305A12E0B812C0A3C8383F8000ADEDFFE0027FEBFFC0A32A437DC231>I<00
-0615C0D807C0130701FCEB7F8090B612005D5D5D15E0158026063FFCC7FC90C9FCAE14FF
-010713C090381F01F090383800FC01F0137ED807C07F49EB1F8016C090C7120F000615E0
-C8EA07F0A316F81503A216FCA5123E127F487EA416F890C712075A006015F0A20070140F
-003015E00038EC1FC07E001EEC3F806CEC7F006C6C13FE6C6C485A3901F807F039007FFF
-E0011F90C7FCEB07F826447BC131>I<EC07FCEC3FFF91B512C0903903FC03E0903907E0
-00F0D91FC0133849C71258017EEB01FC01FE1303491307485A485AA24848EB03F8000FEC
-01F092C7FC485AA3485AA3127FA29038007F80903801FFF090380780FC39FF0E003E49EB
-1F8049EB0FC049EB07E0136001E0EB03F04914F8150116FC5BED00FEA390C812FFA47EA5
-7F123FA216FE121F15016D14FC120FED03F86C7EED07F06C6C14E06C6CEB0FC06C6CEB1F
-80017EEB3F0090383F80FE90380FFFF8010313E00100138028447CC131>I<121CA2EA1F
-8090B712C0A3481680A217005E0038C8120C0030151C00705D0060153016705E5E481401
-4B5A4BC7FCC81206150E5D151815385D156015E04A5AA24A5A140792C8FC5CA25C141E14
-3EA2147E147CA214FCA21301A3495AA41307A6130FAA6D5AEB01C02A457BC231>I<14FF
-010713E0011F13F890387F00FE01FC133FD801F0EB1F804848EB0FC049EB07E00007EC03
-F048481301A290C713F8481400A47FA26D130116F07F6C6CEB03E013FC6C6CEB07C09039
-FF800F806C9038C01F006CEBF03EECF87839007FFEF090383FFFC07F01077F6D13F8497F
-90381E7FFFD97C1F1380496C13C02601E00313E048486C13F000079038007FF84848EB3F
-FC48C7120F003EEC07FE150148140016FF167F48153FA2161FA56C151E007C153EA2007E
-153C003E157C6C15F86DEB01F06C6CEB03E06C6CEB07C0D803F8EB1F80C6B4EBFF009038
-3FFFFC010F13F00101138028447CC131>I<14FF010713E0011F13F890387F80FC9038FC
-007E48487F4848EB1F804848EB0FC0000FEC07E0485AED03F0485A16F8007F140190C713
-FCA25AA216FE1500A516FFA46C5CA36C7E5D121F7F000F5C6C6C130E150C6C6C131C6C6C
-5BD8007C5B90383F01E090390FFF80FE903801FE0090C8FC150116FCA4ED03F8A216F0D8
-0F801307486C14E0486C130F16C0ED1F80A249EB3F0049137E001EC75A001C495A000F49
-5A3907E01FE06CB51280C649C7FCEB1FF028447CC131>I<16C04B7EA34B7EA34B7EA34B
-7EA3ED19FEA3ED30FFA203707FED607FA203E07FEDC03FA2020180ED801FA2DA03007F16
-0FA20206801607A24A6D7EA34A6D7EA34A6D7EA20270810260147FA202E08191B7FCA249
-820280C7121FA249C87F170FA20106821707A2496F7EA3496F7EA3496F7EA201788313F8
-486C83D80FFF03037FB500E0027FEBFFC0A342477DC649>65 D<B8FC17E017FC00019039
-C00003FF6C6C4801007FEF3FC0717E717E717E84170384170184A760A21703601707604D
-5A4D5AEF7FC04DC7FCEE03FEEE3FF091B65A17FC0280C7B47EEF1FC0EF0FF0717E717E71
-7E717E1980187F19C0A2183F19E0A8F07FC0A2198018FF4D1300A24D5AEF0FFC4D5AEF7F
-E048486C903803FFC0B9C7FC17FC17C03B447CC345>I<DB0FFE146092B500C013E00203
-14F0913A0FFC01FC0191393FC0003E02FFC7EA0F83D903FCEC03C74948EC01E74948EC00
-FF4948157F4948153F4948151F49C9120F485A491607120348481603A248481601A24848
-1600A2123FA2491760127FA31900485AAE6C7EA21960A2123F7FA2001F18E07F000F18C0
-A26C6C160119806C6C160312016DEE07006C6C16066D6C150E6D6C5D6D6C5D6D6C15786D
-6C5D6D6C4A5AD900FFEC0780DA3FC0011FC7FCDA0FFC13FC0203B512F0020014C0DB0FFE
-C8FC3B487BC546>I<B8FC17F017FC00019039C00007FF6C499038007FC0017FED1FE0EF
-07F0EF03FC717E717E84727E727E727EA2727E85180385A2180185A38584A31A80AD1A00
-A36061A361180361180761180F614E5A183F614EC7FC18FEEF03FC4D5AEF1FE001FFED7F
-C0486DD907FFC8FCB812FC17F094C9FC41447CC34B>I<B912F8A3000101C0C7127F6C6C
-48EC07FC17011700187C183C181CA284A31806A4180704067FA395C7FCA4160EA2161E16
-3E16FE91B5FCA3EC8000163E161E160EA21606A319C0A3F0018093C7FCA41803A21900A2
-60A260A2181EA2183E187EEF01FE170748486C147FB95AA33A447CC342>I<B912F0A300
-0101C0C7127F6C6C48EC0FF817031701170018781838A2181CA3180CA4180E1806160CA2
-1800A5161CA2163C167CED01FC91B5FCA3EC8001ED007C163C161CA2160CA793C8FCB080
-48487EB612F8A337447CC340>I<DB0FFE146092B500C013E0020314F0913A0FFC01FC01
-91393FC0003E02FFC7EA0F83D903FCEC03C74948EC01E74948EC00FF4948157F4948153F
-4948151F49C9120F485A491607120348481603A248481601A248481600A2123FA2491760
-127FA396C7FC485AAD4CB612C06C7EA293C7387FF000725A003F171F7FA2121F7F120FA2
-6C7EA26C7E6C7EA26C7E6D7E6D6C153F6D7E6D6C157F6D6C15E7D903FEEC01C7D900FFEC
-0383DA3FE0EB0F01DA0FFCEBFE000203B500F81360020002E090C7FCDB0FFEC9FC42487B
-C54D>I<B612F0A3C6EBF0006D5A6D5AB3B3B3A4497E497EB612F0A31C447DC323>73
-D<B612F8A3000101E0C9FC6C6C5A5CB3B31830A418701860A518E0A3EF01C0A217031707
-A2170F173F177FEE01FF48486C011F1380B9FCA334447CC33D>76
-D<B56C933807FFFC6E5EA20001F1FE0026006FE0EE1BF8A3D967F01633A2D963F81663A3
-D961FC16C3A3D960FEED0183A2027FED0303A36E6C1406A36E6C140CA26E6C1418A36E6C
-1430A36E6C1460A26E6C14C0A36E6CEB0180A3037FEB0300A292383F8006A36F6C5AA36F
-6C5AA26F6C5AA36F6C5AA36F6C5AA26FB45AA370C7FC13F0A2486C143ED80FFFEF0FFEB5
-00F0011C0107B512FCA34E447BC359>I<B56C020FB5FC8080C6040013F06D6CED1F80D9
-6FF8ED0F00A2D967FC1506EB63FEA2EB61FF01607FA26E7E6E7EA26E7E6E7EA26E7E6E7E
-A26E7E6E7FA26F7E6F7EA26F7E6F7EA26F7E6F7EA26F7E6F1380A2EE7FC0EE3FE0A2EE1F
-F0EE0FF8A2EE07FCEE03FEA2EE01FF701386A2EF7FC6EF3FE6A2EF1FF6EF0FFEA2170717
-03A217011700A201F0167E183E487ED80FFF161EB500F0150EA2180640447CC349>I<ED
-1FFC4AB512C0913907F007F091391F8000FC027EC7123FD901F8EC0FC049486E7E49486E
-7E49486E7E49486E7E49C9127E017E8201FE834848707E4848707EA24848707EA2000F84
-491603001F84A24848707EA3007F84A24982A300FF1980AD6C6C4C1300A4003F606D1603
-A2001F60A26C6C4C5AA26C6C4C5AA20003606D161F6C6C4C5A000060017F4CC7FC6E5D01
-3F5E6D6C4A5AD907E0EC03F06D6C4A5AD901FCEC1FC0D9007E4AC8FCDA1F8013FC913907
-F007F00201B512C09126001FFCC9FC41487BC54C>I<B712FCEEFFC017F800019039C000
-0FFC6C6C48EB01FF9338007F80EF1FE0170FEF07F018F8EF03FCA218FE1701A218FFA718
-FEA2170318FCA2EF07F818F0EF0FE0EF1FC0EF7F80933801FE00EE0FFC91B612F0178002
-80C9FCB3AA3801FFE0B612C0A338447CC342>I<B712E016FF17C000019039C0003FF86C
-6C48EB03FCEE00FF717E717E717E717E717EA284170384A760A21707604D5AA24D5A4D5A
-4DC8FCEE01FEEE07F8EE3FE091B6C9FC16FC913980007F80EE0FE0707EEE03FC707E1600
-83717EA2717EA784A71A6084171FA21AE0716C13C02601FFE002071301B600C016809438
-01FC03943900FE0700CBEA3FFEF007F843467CC348>82 D<49B41303010FEBE007013F13
-F89039FE00FE0FD801F8131FD807E0EB079F49EB03DF48486DB4FC48C8FC4881003E8112
-7E82127C00FC81A282A37E82A27EA26C6C91C7FC7F7FEA3FF813FE381FFFE06C13FE6CEB
-FFE06C14FC6C14FF6C15C0013F14F0010F80010180D9001F7F14019138001FFF03031380
-816F13C0167F163F161F17E000C0150FA31607A37EA36C16C0160F7E17806C151F6C1600
-6C5D6D147ED8FBC05CD8F9F0495AD8F07C495A90393FC00FE0D8E00FB51280010149C7FC
-39C0003FF02B487BC536>I<003FB912F8A3903BF0001FF8001F01806D481303003EC715
-0048187C0078183CA20070181CA30060180CA5481806A5C81600B3B3A54B7EED7FFE49B7
-7EA33F447DC346>I<B600C0010FB5FCA3000101E0C813F026007F80ED1F80F00F00A218
-06B3B3A7180E6D6C150CA2181C131F6E1518010F163818306D6C1570606D6C14016D6C5D
-6D6CEC0780027F4AC7FC6E6C131EDA1FE0137C913907FC03F00201B55A6E6C1380DB07FC
-C8FC40467CC349>I<B692383FFFF0A3000301E003071300C649ED01FC4A5E017F705A6E
-5E133F616E1501011F5FA26D6C4BC7FCA28001071606A26E150E0103160CA26D6C5DA280
-6D5EA26F1470027F156081023F5DA281021F4A5AA26F1303020F92C8FC8102071406A26F
-130E0203140CA26E6C5BA2816E5CA2EE8070037F1360A26F6C5AA216E092381FE180A216
-F3030F90C9FC16FBED07FEA36F5AA36F5AA26F5AA3166044467EC349>I<B60107B500F8
-90380FFFFEA3000301E0D9001F90C813F06C0180DA0FFCED3FC091C86C48ED1F006C871C
-0E6D6C6E7E1C0CA26D6C6F5DA36EDA06FF1538011F1A30A26E020E6D1470010FDB0C7F15
-60A26E021C7F0107DB183F5DA2856D6CDA301F4A5AA36D6C4A6C6C49C7FCA36D6C4A6C6C
-1306A3DB80016E130E027FDA8003140CA2DBC00380023FDA00015CA203E081021F01066D
-5CA36E6C486E6C5AA36E6C486E6C5AA36F48EC1FE1020360A2DBFE7015F302010160020F
-90C8FCA2DBFFE015FB6E49EC07FEA36F486E5AA36FC86C5AA3031E6F5AA4030C16605F46
-7EC364>I<EB07FC90383FFF809038F80FE03903C003F048C66C7E000E6D7ED80FC0137E
-486C137F6D6D7EA36F7EA26C5AEA0380C8FCA4EC0FFF49B5FC90380FFE1FEB3FC0EBFF00
-EA03FC485A485A485A485A127F5B176048C7FCA3153FA36D137F007F14EF6D9038C7E0C0
-003F13013A1FE00783F13B07F81E03FF802701FFFC0113003A001FE0007C2B2E7CAC31>
-97 D<EA01FC12FFA3120712031201B3EC03FC91380FFF8091383C07E091387001F89039
-FDE0007E02807F01FFEC1F8091C713C049EC0FE049140717F0A2EE03F8A217FCA2160117
-FEAB17FC1603A217F8A2EE07F0A26DEC0FE017C06D141F01FBEC3F80D9F380EB7E00D9E1
-C05B9039E0F001F89039C03C07E09039801FFF80C7D803FCC7FC2F467DC436>I<EC7F80
-903803FFF090380FC07C90383F000F01FCEB03804848EB01C00003140F4848EB1FE04913
-3F120F485AA2485AED1FC0007FEC070092C7FCA290C9FC5AAB7E7FA2123F16307F001F15
-706C6C146016E06C6C14C06C6C13010001EC03806C6CEB0700013F131E90381FC0789038
-07FFF001001380242E7DAC2B>I<167FED3FFFA315018182B3EC7F80903803FFF090380F
-C07C90383F000E017E1307496D5AD803F87F48487F5B000F81485AA2485AA2127FA290C8
-FC5AAB7E7FA2123FA26C7EA2000F5D7F6C6C5B00035C6C6C9038077F806C6C010E13C001
-3F011C13FE90380FC0F8903803FFE09026007F0013002F467DC436>I<EB01FE903807FF
-C090381F03F090387E00FC49137E48487F485A4848EB1F80000F15C049130F121F484814
-E01507A2007F15F090C7FCA25AA390B6FCA290C9FCA67EA27FA2123F16306C7E1670000F
-15606D14E06C6C14C0000314016C6CEB03806C6CEB0700013E131E90381F80F8903803FF
-E0010090C7FC242E7DAC2B>I<EC0FE0EC7FF8903801F81E903803F03F90390FE07F8090
-381FC0FF5C133F495AA2ED7F0001FE131C92C7FCAFB67EA3C648C8FCB3B2486C7E007F13
-FFA321467EC51E>I<EE0F80D901FCEB7FE0903A0FFF81F0F090393F07E3819039FC01FF
-033A01F800FE014848017E13E00007027FC7FC497F000F8149131F001F81A9000F5D6D13
-3F000792C7FC6D5B0003147E6C6C5B6D485A3903BF07E090380FFF80260701FCC8FC90CA
-FCA25AA37F6C7E7F90B512F86C14FF16E06C15F86C6C8048B67E3A07C0000FFF48481300
-003FC8EA3F80003E151F48ED0FC0A2481507A56C150F007C1680007E151F003E16006C15
-3E6C6C5CD807E0495AD801F8EB07E0D8007FEB3F8090261FFFFEC7FC010113E02C427DAC
-31>I<EA01FC12FFA3120712031201B3EC01FE913807FFC091381E07F091383801F80270
-7FECE000D9FDC07F5C01FF147F91C7FCA25BA35BB3A8486CECFF80B5D8F83F13FEA32F45
-7DC436>I<EA01E0EA07F8A2487EA46C5AA2EA01E0C8FCADEA01FC12FFA3120712031201
-B3B0487EB512F8A315437DC21C>I<143C14FFA2491380A46D1300A2143C91C7FCADEC7F
-80EB3FFFA31300147F143FB3B3AA123E127F39FF807F00A2147EA25C6C485A383C01F06C
-485A3807FF80D801FEC7FC195785C21E>I<EA01FC12FFA3120712031201B3A292381FFF
-E0A36F1300ED07F816E05E5E030EC7FC5D5D5D5D4A5A4A5A4AC8FC5CEC3F804A7E14FF90
-38FDCFE09038FF8FF01407496C7E01FC7F14016E7E81816F7E82151F6F7E821507826F7E
-8282486C491380B5D8F81F13F8A32D457DC433>I<EA01FC12FFA3120712031201B3B3B3
-A5487EB512F8A315457DC41C>I<D801FC01FFEC1FE000FF010701E0EBFFFC913B0F03F8
-01E07F913C3C01FC07803F800007903C7000FE0E001FC0000349D97E1C130F2601FDC0D9
-7F38804A143001FFDA3FF06D7E91C75BA2495DA3495DB3A8486C4A6C497EB5D8F81FB500
-03B512E0A34B2C7DAB52>I<3901FC01FE00FF903807FFC091381E07F091383801F80007
-01707F0003EBE0002601FDC07F5C01FF147F91C7FCA25BA35BB3A8486CECFF80B5D8F83F
-13FEA32F2C7DAB36>I<EC7F80903803FFF090380FC0FC90383E001F496D7E496D7E4848
-6D7E48486D7E48486D7E000F81A24848147E003F157FA290C87E481680A44816C0AA6C16
-80A26D147F003F1600A2001F157E6D14FE000F5D6D130100075D6C6C495A6C6C495A6C6C
-495A013E49C7FC90381FC0FE903807FFF89038007F802A2E7DAC31>I<3901FC03FC00FF
-90380FFF8091383C07E091387001F83A07FDE000FE00030180137FD801FFEC3F8091C7EA
-1FC04915E049140F17F0160717F8160317FCA3EE01FEABEE03FCA3EE07F8A217F0160F6D
-15E0EE1FC06D143F17806EEB7E00D9FDC05B9039FCF003F891383C0FE091381FFF80DA03
-FCC7FC91C9FCAE487EB512F8A32F3F7DAB36>I<3903F803F000FFEB1FFCEC3C3EEC707F
-0007EBE0FF3803F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512FEA320
-2C7DAB26>114 D<90383FE0183901FFFC383907E01F78390F0003F8001E130148130000
-7C1478127800F81438A21518A27EA27E6C6C13006C7E13FC383FFFE06C13FC6C13FF6C14
-C06C14E0C614F0011F13F81300EC0FFC140300C0EB01FE1400157E7E153EA27EA36C143C
-6C147C15786C14F86CEB01F039F38003E039F1F00F8039E07FFE0038C00FF01F2E7DAC26
->I<1306A5130EA4131EA3133E137EA213FE12011207001FB512F0B6FCA2C648C7FCB3A4
-150CAA017E131C017F1318A26D133890381F8030ECC070903807E0E0903801FFC0903800
-7F001E3E7EBC26>I<D801FC147F00FFEC3FFFA300071401000380000181B3A85EA35DA2
-12006D5B017E9038077F80017F010E13C06D011C13FE90380FC078903803FFF09026007F
-8013002F2D7DAB36>I<B539F001FFFCA3000790C7EA7FE06C48EC1F8000011600160E12
-00160C017F5CA280013F5CA26E1370011F146080010F5CA2ECF00101075CA26D6C48C7FC
-A26E5A01011306A26D6C5AA214FF6E5AA215B8EC3FB015F06E5AA36E5AA26E5AA36EC8FC
-2E2C7EAA33>I<B500E0B539E03FFF80A30007903C000FFE000FFC00D803FCD903F8EB03
-F8F001E0120103015D6D80000060A26D6E13036DD9037E91C7FCA20280017F5B013FD906
-3F1306A2D91FC06E5AED0C1FA2D90FE06E5AED180FA2D907F06E5AED3007A2D903F86E5A
-ED6003A2902601FCE06D5AEDC00117FCD900FFECFD80ED800017FF027F92C8FC92C77EA2
-6E147E023E143EA2021E143C021C141CA2412C7EAA46>I<B539F007FFFCA30003D9C001
-13C0C6496C1300017F14FC013F5C6E13E06D7E010F495A6D6C485A02F890C7FC903803FC
-060101130E6E5A903800FF186E5AEC3FF05D141F140F6E7E81140FEC0DFCEC19FEEC38FF
-4A7E9138603F8002C07F0101131F49486C7E02007F01066D7E010E1303496D7E013C8001
-7C80D801FC1580D80FFE4913C0B5D8800F13FFA3302B7FAA33>I<B539F001FFFCA30007
-90C7EA7FE06C48EC1F8000011600160E0000150C6D141C6D1418A26E1338013F1430A26D
-6C5BA26E13E0010F5CA26D6C485AA2ECF803010391C7FCA2903801FC06A2ECFE0E010013
-0CA2EC7F18A215B8EC3FB0A2EC1FE0A36E5AA26E5AA36EC8FCA21406A35CA25CA2123C00
-7E5BB4FC5CA25CEAFE01387C0380D87007C9FCEA3C1EEA0FFCEA03F02E3F7EAA33>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fr cmtt10 10.95 93
-/Fr 93 127 df<121C127FEAFF80B3EA7F00B2123EC7FCA8121C127FA2EAFF80A3EA7F00
-A2121C09396DB830>33 D<00101304007C131F00FEEB3F80A26C137FA248133FB2007E14
-00007C7F003C131E00101304191C75B830>I<903907C007C0A2496C487EA8011F131FA2
-02C05BA3007FB7FCA2B81280A36C16006C5D3A007F807F80A2020090C7FCA9495BA2003F
-90B512FE4881B81280A36C1600A22701FC01FCC7FCA300031303A201F85BA76C486C5AA2
-29387DB730>I<1438147C14FCA4EB03FF011F13E090B512FC4880000780481580261FFE
-FD13C09039F0FC3FE0D83FC0131FD87F80EB0FF001001307007E15F800FE14035A1507A3
-6CEC03F0A2007F91C7FC138013C0EA3FF0EA1FFE13FF6C13FF6C14E0000114F86C6C7F01
-1F7F01037F0100148002FD13C09138FC7FE0151FED0FF015070018EC03F8127E1501B4FC
-A35AA26CEC03F07E01801307ED0FE0D83FC0131F01F0EB7FC0D81FFEB512806CB612006C
-5C6C5CC614F0013F13C0D907FEC7FCEB00FCA5147C143825477BBE30>I<D803C0EB01E0
-D80FF01303486C497E487E150F487ED87E7E495AEAFE7F5E486C133FA25E157FA24BC7FC
-6C5A5D387E7E01EA7FFED83FFC5B1403EA1FF86C48485AEA03C0C75B140FA25D141FA24A
-5AA25D147FA292C8FC5CA2495AA25C1303A25C1307A290390FF001E0ED07F84A487E011F
-497EA24A487E133F163F90267F807F1380ED7E1F14005BA25B1201A24848EB7F3F033F13
-004914FF12076F5A5B6F5A6C486D5A0001EC01E029477DBE30>I<EB07E0EB1FF8497E13
-7F497E803801FC7F497E810003131F13F0A6143F92C8FC91387F0FFF9026F87E1F138000
-0113FEEBF9FC13FB4A6C1300D9FFF013C06C13E0151F02C05BEB7F809038FF003F4892C7
-FC485C48EB807E5A15FE391FDFC0FC383F8FE014E1397F07F1F8EB03F300FEEBFBF0EB01
-FF5D7FEDC006027F130F91393F801F8015C06C137F6CEBFFE049EBF83F018701FC130026
-3FFFFBB5FC6C01F15B14E06C9038C03FFC00039038001FF8D801FCEB07E0293A7DB830>
-I<EA07C0EA0FF0EA1FF8A213FCA213FE120F1207EA007EA513FE13FCA2120113F81203EA
-07F0120FEA1FE0127FEAFFC013801300127C12380F1D70B730>I<141E147F14FF5BEB03
-FEEB07FCEB0FF0EB1FE0EB3FC0EB7F80EBFF00485A5B12035B485A120F5BA2485AA2123F
-5BA2127F90C7FCA412FEAD127FA47F123FA27F121FA26C7EA27F12076C7E7F12017F6C7E
-EB7F80EB3FC0EB1FE0EB0FF0EB07FCEB03FEEB01FF7F147F141E184771BE30>I<127812
-FE7E7F6C7E6C7EEA0FF06C7E6C7E6C7E6C7EEB7F80133F14C0131FEB0FE014F01307A2EB
-03F8A214FC1301A214FE1300A4147FAD14FEA4130114FCA2130314F8A2EB07F0A2130F14
-E0EB1FC0133F1480137FEBFF00485A485A485A485AEA3FE0485A485A90C7FC5A12781847
-78BE30>I<14E0497E497EA60038EC0380007EEC0FC0D8FF83EB3FE001C3137F9038F3F9
-FF267FFBFB13C06CB61280000FECFE00000314F86C5C6C6C13C0011F90C7FC017F13C048
-B512F04880000F14FE003FECFF80267FFBFB13C026FFF3F913E09038C3F87F0183133FD8
-7E03EB0FC00038EC0380000091C7FCA66D5A6D5A23277AAE30>I<143EA2147FAF007FB7
-FCA2B81280A36C1600A2C76CC8FCAF143EA229297DAF30>I<EA03E0EA0FF0EA1FF813FC
-EA3FFEA213FFA27EA27E1203EA007FA2137E13FEEA01FC1203EA07F8EA3FF0127FEAFFE0
-EA7F801300123C1019708B30>I<007FB612F0A2B712F8A36C15F0A225077B9E30>I<120F
-EA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C0C6E8B30>I<16F01501ED03F8A2
-1507A2ED0FF0A2ED1FE0A2ED3FC0A2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA2
-4A5AA24A5AA24A5AA24AC7FCA2495AA25C1303A2495AA2495AA2495AA2495AA2495AA249
-C8FCA2485AA25B1203A2485AA2485AA2485AA2485AA2485AA248C9FCA25AA2127CA22547
-7BBE30>I<14FE903807FFC0497F013F13F8497F90B57E48EB83FF4848C6138049137F48
-48EB3FC04848EB1FE049130F001F15F0491307A24848EB03F8A290C712014815FCA400FE
-EC00FEAD6C14016C15FCA36D1303003F15F8A26D1307001F15F0A26D130F6C6CEB1FE0A2
-6C6CEB3FC06C6CEB7F806D13FF2601FF8313006CEBFFFE6D5B6D5B010F13E06D5BD900FE
-C7FC273A7CB830>I<EB03C0497EA2130FA2131FA2133F137F13FF1203123FB5FCA213EF
-138FEA7E0F1200B3B0003FB512F84814FCB612FEA26C14FC6C14F81F3977B830>I<EB07
-FC90383FFFC090B512F00003804814FE4880261FF80F1380263FE00113C09038C0007F48
-48EB3FE090C7121FED0FF04814075A6C15F81503A3127E1218C8FCA2150716F0150F16E0
-151F16C0153FED7F8015FF4A13005DEC07FC4A5A4A5A4A5A4A5A4A5A4990C7FC495A495A
-EB0FF0EB3FE0495A495A4890C8FC4848EB01F04848EB03F8485AEA1FE048B6FCB7FCA37E
-6C15F025397BB830>I<EB03FF013F13E090B512F84814FE4880481580260FFE0113C090
-38F0007F4848EB1FE0150F16F01507A26C5A6C5AC8FC150F16E0A2151FED3FC0157FEDFF
-8002071300903807FFFE495B5D8115FF6D1480D9000113C09138003FE0ED1FF0ED07F815
-0316FC150116FE1500A21218127EB4FCA2150116FC4814036C15F86C6C13076DEB1FF0D8
-3FF0133F3A1FFE01FFE06CB612C06C15806CECFE00C65C013F13F001031380273A7CB830
->I<EC03FC4A7E140F141FA2143F147F157E14FEA2EB01FCEB03F8A2EB07F0A2EB0FE0EB
-1FC0A2EB3F80A2EB7F0013FEA2485A485AA2485AA2485A485AA2485AA248C7FC12FEB8FC
-1780A46C1600C8007EC7FCAA91387FFFFE91B6FCA46E5B29397DB830>I<000FB6128048
-15C05AA316800180C8FCAEEB83FF019F13C090B512F015FC8181D9FE0313809039F0007F
-C049133F0180EB1FE06CC7120F000E15F0C81207A216F81503A31218127EA2B4FC150716
-F048140F6C15E06C141F6DEB3FC06D137F3A3FE001FF80261FFC0F13006CB55A6C5C6C5C
-6C14E06C6C1380D90FFCC7FC25397BB730>I<EC0FF8EC7FFF49B51280010714E0131F49
-14F090387FF80F9039FFC007F84813803803FE005B485A4848EB03F0ED01E0484890C7FC
-5B123F5BA2127FEB000C903803FFE0010F13F8D8FF3F13FE48B6FCB7128016C09039FE00
-7FE001F8EB1FF001E0130F49EB07F849EB03FCA290C7120116FE1500A37EA46C7E15016D
-14FC121F6D1303000FEC07F86D130F6C6CEB1FF06DEB3FE03A03FF81FFC06C90B512806C
-15006D5B011F13F8010713E001011380273A7CB830>I<127CB712FC16FEA416FC48C7EA
-0FF816F0ED1FE0007CEC3FC0C8EA7F80EDFF00A24A5A4A5A5D14075D140F5D4A5AA24A5A
-A24AC7FCA25C5C13015CA213035CA213075CA4495AA6131F5CA96D5A6DC8FC273A7CB830
->I<49B4FC011F13F0017F13FC90B57E0003ECFF804815C048010113E03A1FF8003FF049
-131FD83FC0EB07F8A24848EB03FC90C71201A56D1303003F15F86D13076C6CEB0FF06C6C
-EB1FE0D807FCEB7FC03A03FF83FF806C90B512006C6C13FC011F13F0497F90B512FE4880
-2607FE0013C0D80FF8EB3FE0D81FE0EB0FF04848EB07F8491303007F15FC90C712014815
-FE481400A66C14016C15FC6D1303003F15F86D1307D81FF0EB1FF06D133F3A0FFF01FFE0
-6C90B512C06C1580C6ECFE006D5B011F13F0010190C7FC273A7CB830>I<49B4FC010F13
-E0013F13F890B57E4880488048010113803A0FFC007FC0D81FF0EB3FE04848131F49EB0F
-F048481307A290C7EA03F85A4815FC1501A416FEA37E7E6D1303A26C6C13076C6C130F6D
-133FD80FFC13FF6CB6FC7E6C14FE6C14F9013FEBE1FC010F138190380060011400ED03F8
-A2150716F0150F000F15E0486C131F486CEB3FC0157FEDFF804A1300EC07FE391FF01FFC
-90B55A6C5C6C5C6C1480C649C7FCEB3FF0273A7CB830>I<120FEA3FC0EA7FE0A2EAFFF0
-A4EA7FE0A2EA3FC0EA0F00C7FCAF120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F
-000C276EA630>I<EA03C0EA0FF0EA1FF8A2EA3FFCA4EA1FF8A2EA0FF0EA03C0C7FCAFEA
-03C0EA0FF0121F13F8123F13FCA3121FA2120F12031200120113F8120313F01207EA1FE0
-123FEA7FC0EAFF80EA7F00127E12380E3470A630>I<16F01503ED07F8151F157FEDFFF0
-14034A13C0021F138091383FFE00ECFFF8495B010713C0495BD93FFEC7FC495A3801FFF0
-485B000F13804890C8FCEA7FFC5BEAFFE05B7FEA7FF87FEA1FFF6C7F000313E06C7F3800
-7FFC6D7E90380FFF806D7F010113F06D7FEC3FFE91381FFF80020713C06E13F01400ED7F
-F8151F1507ED03F01500252F7BB230>I<007FB7FCA2B81280A36C16006C5DCBFCA7003F
-B612FE4881B81280A36C1600A229157DA530>I<1278127EB4FC13C07FEA7FF813FEEA1F
-FF6C13C000037F6C13F86C6C7EEB1FFF6D7F010313E06D7F9038007FFC6E7E91380FFF80
-6E13C0020113F080ED3FF8151F153FEDFFF05C020713C04A138091383FFE004A5A903801
-FFF0495B010F13804990C7FCEB7FFC48485A4813E0000F5B4890C8FCEA7FFE13F8EAFFE0
-5B90C9FC127E1278252F7BB230>I<EC1FE0ECFFF8010313FE010F7F4914804914C09039
-7FF03FE09038FF800F4890380007F0D803FC13033A07F801FBF89038F007FF380FE01F4A
-13FCEA1FC0495A003FEBFF0F903800FE07903901FC03FE007FEBF801EA7E03ECF000A2EA
-FE0700FC49137EAA00FE6D13FED87E0314FCA2ECF801D87F0114F8003FEBFC03903900FE
-07F0903880FF0F001F90387FFFE06D6C13C0EA0FE06E13803A07F007FE009038F801F86C
-6CC7127C6CB414FE6CEB800390387FF01F6DB512FC6D14F86D14E0010314C00100EBFE00
-EC1FF0273A7CB830>64 D<147F4A7EA2497FA4497F14F7A401077F14E3A3010F7FA314C1
-A2011F7FA490383F80FEA590387F007FA4498049133F90B6FCA34881A39038FC001F0003
-8149130FA4000781491307A2D87FFFEB7FFFB56CB51280A46C496C130029397DB830>I<
-007FB512F0B612FE6F7E82826C813A03F8001FF815076F7E1501A26F7EA615015EA24B5A
-1507ED1FF0ED7FE090B65A5E4BC7FC6F7E16E0829039F8000FF8ED03FC6F7E1500167FA3
-EE3F80A6167F1700A25E4B5A1503ED1FFC007FB6FCB75A5E16C05E6C02FCC7FC29387EB7
-30>I<91387F803C903903FFF03E49EBFC7E011F13FE49EBFFFE5B9038FFE07F48EB801F
-3903FE000F484813075B48481303A2484813015B123F491300A2127F90C8FC167C16005A
-5AAC7E7EA2167C6D14FE123FA27F121F6D13016C6C14FCA26C6CEB03F86D13076C6CEB0F
-F03901FF801F6C9038E07FE06DB512C06D14806D1400010713FC6D13F09038007FC0273A
-7CB830>I<003FB512E04814FCB67E6F7E6C816C813A03F8007FF0ED1FF8150F6F7E6F7E
-15016F7EA2EE7F80A2163F17C0161FA4EE0FE0AC161F17C0A3163F1780A2167F17005E4B
-5A15034B5A150F4B5AED7FF0003FB65A485DB75A93C7FC6C14FC6C14E02B387FB730>I<
-007FB7FCB81280A47ED803F8C7123FA8EE1F0093C7FCA4157C15FEA490B5FCA6EBF800A4
-157C92C8FCA5EE07C0EE0FE0A9007FB7FCB8FCA46C16C02B387EB730>I<003FB7128048
-16C0B8FCA27E7ED801FCC7121FA8EE0F8093C7FCA5153E157FA490B6FCA69038FC007FA4
-153E92C8FCAE383FFFF8487FB5FCA27E6C5B2A387EB730>I<02FF13F00103EBC0F8010F
-13F1013F13FD4913FF90B6FC4813C1EC007F4848133F4848131F49130F485A491307121F
-5B123F491303A2127F90C7FC6F5A92C8FC5A5AA892B5FC4A14805CA26C7F6C6D1400ED03
-F8A27F003F1407A27F121F6D130F120F7F6C6C131FA2D803FE133F6C6C137FECC1FF6C90
-B5FC7F6D13FB010F13F30103EBC1F0010090C8FC293A7DB830>I<3B3FFF800FFFE0486D
-4813F0B56C4813F8A26C496C13F06C496C13E0D803F8C7EAFE00B290B6FCA601F8C7FCB3
-A23B3FFF800FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E02D387FB730>I<
-007FB6FCB71280A46C1500260007F0C7FCB3B3A8007FB6FCB71280A46C1500213879B730
->I<49B512F04914F85BA27F6D14F090C7EAFE00B3B3123C127EB4FCA24A5A1403EB8007
-397FF01FF86CB55A5D6C5C00075C000149C7FC38003FF025397AB730>I<D83FFF90380F
-FF80486D4813C0B56C5AA26C497E6C496C1380D803F0903803F8004B5A4B5A151F4B5A5E
-4BC7FC15FE14014A5A5D4A5A4A5A141F5D4A5A4AC8FC5C13F18101F37F13F790B57E14EF
-ECC7F01483EC03F8140101FE7F496C7E5B157F497F82151F82150F826F7EA26F7E150182
-1500D83FFF903803FFC0486D4813E0B56C5AA26C497E6C496C13C02B387FB730>I<383F
-FFF8487FB57EA26C5B6C5BD801FCC9FCB3B0EE0F80EE1FC0A9003FB7FC5AB8FCA27E6C16
-802A387EB730>I<D83FF8ECFFE0486C4913F0486C4913F8A2007F16F06C6C4913E00007
-160001EF14BFEC800FA39039E7C01F3FA4ECE03F01E3133EA2ECF07EA201E1137CA2ECF8
-FCA201E013F8A214FDEC7DF0A3147FEC3FE0A3EC1FC0A2EC070091C7FCADD83FFC903801
-FFE0486C4913F0B54913F8A26C486D13F06C486D13E02D387FB730>I<D83FFC90381FFF
-80486C4913C0B54913E0A26C6D6C13C06C6E13800003913801F800EBF7C0A3EBF3E0A314
-F013F1A214F8A213F014FCA2147C147EA2143E143FA2141FA21581A2140F15C1A2140715
-E1A2140315F1A21401A215F91400A3157DA3153FEA3FFF481380B5EAC01FA26CEB800F6C
-496C5A2B387EB730>I<90383FFFE048B512FC000714FF4815804815C04815E0EBF80001
-E0133FD87F80EB0FF0A290C71207A44815F8481403B3A96C1407A26C15F0A36D130FA26D
-131F6C6CEB3FE001F813FF90B6FC6C15C06C15806C1500000114FCD8003F13E0253A7BB8
-30>I<007FB512F0B612FE6F7E16E0826C813903F8003FED0FFCED03FE15016F7EA28217
-80163FA6167F17005EA24B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15F001F8C9FC
-B0387FFFC0B57EA46C5B29387EB730>I<90383FFFE048B512FC000714FF4815804815C0
-4815E0EBF80001E0133F4848EB1FF049130F90C71207A44815F8481403B3A8147E14FE6C
-EBFF076C15F0EC7F87A2EC3FC7018013CF9038C01FFFD83FE014E0EBF80F90B6FC6C15C0
-6C15806C1500000114FCD8003F7FEB00016E7EA21680157F16C0153F16E0151F16F0150F
-ED07E025467BB830>I<003FB57E4814F0B612FC15FF6C816C812603F8017F9138003FF0
-151F6F7E15071503821501A515035E1507150F4B5A153F4AB45A90B65A5E93C7FC5D8182
-D9F8007FED3FE0151F150F821507A817F8EEF1FCA53A3FFF8003FB4801C0EBFFF8B56C7E
-17F06C496C13E06C49EB7FC0C9EA1F002E397FB730>I<90390FF803C0D97FFF13E048B5
-12C74814F74814FF5A381FF80F383FE001497E4848137F90C7123F5A48141FA2150FA37E
-ED07C06C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C14E0000114F86C80011F13FF0103
-1480D9003F13C014019138007FE0151FED0FF0A2ED07F8A2007C140312FEA56C140716F0
-7F6DEB0FE06D131F01F8EB3FC001FF13FF91B51280160000FD5CD8FC7F13F8D8F81F5BD8
-78011380253A7BB830>I<003FB712C04816E0B8FCA43AFE003F800FA8007CED07C0C791
-C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730>I<3B7FFFC007FFFCB56C4813FEA46C
-496C13FCD803F8C7EA3F80B3B16D147F00011600A36C6C14FE6D13016D5CEC800390393F
-E00FF890391FF83FF06DB55A6D5C6D5C6D91C7FC9038007FFCEC1FF02F3980B730>I<D8
-7FFE90380FFFC0B54913E06E5AA24A7E6C486D13C0D807F0903801FC00A26D130300035D
-A46C6C495AA46C6C495AA46D131F6D5CA3EC803F013F5CA46D6C48C7FCA490380FE0FEA4
-01075B14F1A301035BA314FB01015BA314FFA26D5BA46E5A6E5A2B397EB730>I<D83FFC
-903801FFE0486C4913F000FF16F8A2007F16F06C486D13E0D81FC09038001FC0000F1680
-A76D143F00071600A7000390380F803E9039F01FC07EEC3FE0A3EC7FF0A2147D0001157C
-A29039F8FDF8FCA314F8A300005D01F913FCA2ECF07CA201FD137DA2017D5CECE03DA301
-7F133FA2ECC01FA2013F5CA2EC800F6D486C5A2D397FB730>I<3A3FFF01FFF84801837F
-02C77FA202835B6C01015B3A01FC007F806D91C7FC00005C6D5BEB7F01EC81FCEB3F8314
-C3011F5B14E7010F5B14FF6D5BA26D5BA26D5BA26D90C8FCA4497FA2497FA2815B81EB0F
-E781EB1FC381EB3F8181EB7F0081497F49800001143F49800003141F49800007140FD87F
-FEEB7FFFB590B5128080A25C6C486D130029387DB730>I<D87FFF90381FFFC0B56C4813
-E0A46C496C13C0D803F8903803F8006D1307A26C6C495AA26C6C5C151F6D5CEC803F013F
-5CECC07F011F91C7FCA290380FE0FEA214F101075BA2903803FBF8A201015B14FF6D5BA2
-6E5AA36E5AB1903803FFF8497F497FA26D5B6D5B2B387EB730>I<001FB612FC4815FE5A
-A490C7EA03FCED07F816F0150FED1FE016C0153FED7F80003E1500C85A4A5A5D14034A5A
-5D140F4A5A5D143F4A5A92C7FC5C495A5C1303495A5C130F495A5C133F495A91C8FC5B48
-48147C4914FE1203485A5B120F485A5B123F485A90B6FCB7FCA46C15FC27387CB730>I<
-007FB5FCB61280A4150048C8FCB3B3B3A5B6FC1580A46C140019476DBE30>I<127CA212
-FEA27EA26C7EA26C7EA26C7EA26C7EA26C7EA26C7EA212017FA26C7EA26D7EA26D7EA26D
-7EA26D7EA26D7EA26D7EA2130180A26D7EA26E7EA26E7EA26E7EA26E7EA26E7EA26E7EA2
-140181A26E7EA2ED7F80A2ED3FC0A2ED1FE0A2ED0FF0A2ED07F8A21503A2ED01F0150025
-477BBE30>I<007FB5FCB61280A47EC7123FB3B3B3A5007FB5FCB6FCA46C140019477DBE
-30>I<1307EB1FC0EB7FF0497E000313FE000FEBFF80003F14E0D87FFD13F039FFF07FF8
-EBC01FEB800F38FE0003007CEB01F00010EB00401D0E77B730>I<007FB612F0A2B712F8
-A36C15F0A225077B7D30>I<1338137CEA01FE12031207EA0FFC13F0EA1FE013C0EA3F80
-13005A127EA212FE5AA5EAFFC013E013F0127FA2123FA2EA1FE0EA07C00F1D70BE30>I<
-EB3FFC48B57E4814E04880488048809038F00FFE9038E001FF806F7E6C48133F6C4880C8
-121FA491B5FC130F137F48B6FC12075A48EBC01F383FFC00EA7FE0138048C7FC5AA46C14
-3FA26C6C137F9038C001FF263FF80FEBFFC06CB712E0A2000714F76C14C3C6020013C0D9
-3FF090C7FC2B2A7CA830>I<EA3FFC487E12FFA2127F123F1200AAEC03FE91381FFF8002
-7F13E091B57E90B612FC82ECFE079138F001FF4A6C13804A137F4AEB3FC091C7121F4915
-E0160FA217F01607A8160FA217E07F161F6EEB3FC0A26EEB7F806E13FFDAF00313009138
-FC0FFE91B55A5E495CD97E7F13C0D93C1F90C7FC90380003FC2C3980B730>I<ECFFE001
-0713FC011F7F017F7F90B612804815C048EB807F3907FC003F485A485A49EB1F804848EB
-0F004990C7FC127F90C9FCA25A5AA87E7EA27F003FEC07C06DEB0FE06C7E6D131F6C6C14
-C0D807FE133F9039FFC0FF806C90B5FCC615006D5B011F13F801075B01011380232A7AA8
-30>I<913801FFE04A7F5CA28080EC0007AAEB03FE90381FFF874913E790B6FC5A5A4813
-03380FFC00D81FF0133F49131F485A150F4848130790C7FCA25AA25AA87E6C140FA27F00
-3F141F6D133F6C7E6D137F390FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01C7
-13E0011F010313C0D907FCC8FC2C397DB730>I<49B4FC010713E0011F13F8017F7F90B5
-7E488048018113803A07FC007FC04848133FD81FE0EB1FE0150F484814F0491307127F90
-C7FCED03F85A5AB7FCA516F048C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307D8
-07FEEB1FF03A03FFC07FE06C90B5FC6C15C0013F14806DEBFE00010713F8010013C0252A
-7CA830>I<EDFF80020713E0021F13F05C4A13F891B5FC491387903803FE079138FC03F0
-903907F800C04A1300A8003FB612C04815E0B7FCA36C15C0260007F0C7FCB3A9003FB512
-FE4880B71280A26C15006C5C25397DB830>I<D903FC13FF90261FFF8713C04913DF90B7
-12E05A5A2607FE07138F903AF801FE07C048486C6CC7FCA2497F001F8149133FA56D137F
-000F92C7FC6D5BA26C6C485AEBFE0790B55A5D485C15C001DF5BD9C3FCC8FC01C0C9FCA3
-7F7F6CB512F015FF6C15C04815F0488148813A3FE0001FFE0180130148C8127F007E8100
-FE168048151FA56C153F007FED7F006D5C6C6C495A01F013076CB4EB7FFC6C90B55A6C5D
-000115C06C6C91C7FC011F13FC010113C02B3E7DA730>I<EA3FFC487E12FFA2127F123F
-1200AAEC01FE91380FFF80023F13E091B57E90B67EA29138FE07FCECF8039138E001FE14
-C0EC8000A291C7FCA25BB3A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C
-496C13F82F3880B730>I<14E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8487F
-5AA27E7EEA0001B3A9003FB612C04815E0B7FCA27E6C15C023397AB830>I<EC01C0EC07
-F0A2EC0FF8A3EC07F0A2EC01C091C7FCA990B512F04814F8A47EEB0003B3B3A5EC07F0A2
-123C007EEB0FE0B4131FEC3FC0147F90B512806C14005C6C5B000F13F0000313C01D4E7C
-B830>I<EA7FF8487EA4127F1200AB0203B512804A14C017E0A217C06E14809139001FE0
-004B5A4B5A4BC7FC4A5A4A5AEC0FF84A5A4A5A4A5A4A5A01FD7F90B57E8114F7ECE3F8EC
-C1FCEC81FEEC00FF497F496D7E6F7E826F7E15076F7E6F7E3B7FFFF81FFFE0B56C4813F0
-17F8A217F06C496C13E02D387FB730>I<387FFFF8B57EA47EEA0001B3B3A8007FB612F0
-B712F8A46C15F025387BB730>I<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F
-15DF92B57E6C010F13872607FE07EB03F801FC13FE9039F803FC01A201F013F8A301E013
-F0B3A23C7FFE0FFF07FF80B548018F13C0A46C486C01071380322881A730>I<EC01FE3A
-3FFC0FFF80267FFE3F13E000FF90B57E90B67E7E6C9038FE07FCC6EBF8039138E001FE14
-C0EC8000A291C7FCA25BB3A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C
-496C13F82F2880A730>I<49B4FC010F13E0013F13F8497F90B57E0003ECFF8014013A07
-FC007FC04848EB3FE0D81FE0EB0FF0A24848EB07F8491303007F15FC90C71201A300FEEC
-00FEA86C14016C15FCA26D1303003F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F
-3A07FF01FFC06C90B512806C15006C6C13FC6D5B010F13E0010190C7FC272A7CA830>I<
-EC03FE3A3FFC1FFF80267FFE7F13E000FF90B57E90B612FC6C816CEBFE07C69038F001FF
-4A6C13804A137F4AEB3FC091C7121F4915E0160FA217F01607A8160FA217E07F161F6EEB
-3FC0A26EEB7F806E13FFDAF00313009138FC0FFE91B55A5E495C6E13C0021F90C7FCEC03
-FC91C9FCAD383FFFF8487FB57EA26C5B6C5B2C3C80A730>I<49B413F8010FEBC1FC013F
-13F14913FD48B6FC5A481381390FFC007F49131F4848130F491307485A491303127F90C7
-FC15015A5AA77E7E15037FA26C6C1307150F6C6C131F6C6C133F01FC137F3907FF01FF6C
-90B5FC6C14FD6C14F9013F13F1010F13C1903803FE0190C7FCAD92B512F84A14FCA46E14
-F82E3C7DA730>I<ED07F83A3FFF803FFF486DB51280B512C302CF14C06C13DF6C9038FF
-FC3FD8001F13E09238801F809238000F004A90C7FC5C5C5CA25CA45CAF003FB512FC4880
-B7FCA26C5C6C5C2A287EA730>I<90381FFC1E48B5129F000714FF5A5A5A387FF007EB80
-0100FEC7FC4880A46C143E007F91C7FC13E06CB4FC6C13FC6CEBFF806C14E0000114F86C
-6C7F01037F9038000FFF02001380007C147F00FEEC1FC0A2150F7EA27F151F6DEB3F806D
-137F9039FC03FF0090B6FC5D5D00FC14F0D8F83F13C026780FFEC7FC222A79A830>I<EB
-0780497E131FA9003FB612E04815F0B7FCA36C15E026001FC0C7FCB216F8ED01FCA5ECE0
-03010FEB07F814F09138FC1FF06DB512E06D14C016806D14009038007FFCEC1FF026337E
-B130>I<D83FFCEB3FFC486C497E00FF14FFA2007F147F003F143F00001400B3A41501A2
-150315076D130F903A7FC07FFFF891B612FC6D15FE7F6D4913FC6D9038F87FF8010001C0
-C7FC2F2880A630>I<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01F8
-0003F000A26D130700005DA26D130F017E5CA2017F131F6D5CA2EC803F011F91C7FCA26E
-5A010F137EA2ECE0FE01075BA214F101035BA3903801FBF0A314FF6D5BA36E5A6E5A2B27
-7EA630>I<3B3FFFC01FFFE0486D4813F0B515F8A26C16F06C496C13E0D807E0C7EA3F00
-A26D5C0003157EA56D14FE00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147DA2ECFD
-F9017C5C14F8A3017E13FBA290393FF07FE0A3ECE03FA2011F5C90390F800F802D277FA6
-30>I<3A3FFF81FFFC4801C37FB580A26C5D6C01815BC648C66CC7FC137FEC80FE90383F
-81FC90381FC3F8EB0FE3ECE7F06DB45A6D5B7F6D5B92C8FC147E147F5C497F81903803F7
-E0EB07E790380FE3F0ECC1F890381F81FC90383F80FE90387F007E017E137F01FE6D7E48
-486D7E267FFF80B5FCB500C1148014E3A214C16C0180140029277DA630>I<3B3FFFC07F
-FF80486DB512C0B515E0A26C16C06C496C13803B01FC0003F000A2000014076D5C137E15
-0F017F5C7F151FD91F805BA214C0010F49C7FCA214E00107137EA2EB03F0157C15FCEB01
-F85DA2EB00F9ECFDF0147D147FA26E5AA36E5AA35DA2143F92C8FCA25C147EA2000F13FE
-486C5AEA3FC1EBC3F81387EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA630>I<
-001FB612FC4815FE5AA316FC90C7EA0FF8ED1FF0ED3FE0ED7FC0EDFF80003E491300C748
-5A4A5A4A5A4A5A4A5A4A5A4A5A4990C7FC495A495A495A495A495A495A4948133E4890C7
-127F485A485A485A485A485A48B7FCB8FCA46C15FE28277DA630>I<ED3FF0913803FFF8
-140F5C147F16F09138FFF00092C7FC495A5CB3A21303495A133F383FFFF0B55A5C91C8FC
-14C080003F7F38003FF813076D7E1301B3A2806D7E15F091387FFFF016F8141F80140391
-38003FF025477BBE30>I<127CA212FEB3B3B3AD127CA207476CBE30>I<EA7FE0EAFFFE6D
-7E8014F07EC66C7E13076D7E1301B3A2806D7E15E091387FFFE06E13F8801407141F5C4A
-13E09138FFE00092C7FC495A5CB3A21303495A137F387FFFF0B5FC14C05C49C8FCEA7FE0
-25477BBE30>I<017C133848B4137C48EB80FE4813C14813C348EBEFFC397FEFFFF0D8FF
-8713E0010713C0486C1380D87C0113003838007C1F0C78B730>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fs cmsy10 10.95 4
-/Fs 4 16 df<007FB812FEBAFCA26C17FE3804799847>0 D<EB03C0A2805CA600F0140F
-00FC143F00FE147F00FF14FF393FC3C3FC390FE187F03903F18FC03900FDBF00EB3FFCEB
-0FF0EB03C0EB0FF0EB3FFCEBFDBF3903F18FC0390FE187F0393FC3C3FC39FF03C0FF00FE
-147F00FC143F00F0140F00001400A6805CA220277AA92D>3 D<EE7FFE0307B512E0033F
-14FC92B7FC0203D9C00313C0DA0FFCC7EA3FF0DA3FE0EC07FCDA7F80EC01FED901FEC9EA
-7F80D903F8EE1FC0D907E0EE07E04948707E4948707E49CB7E017E187E498449844848F0
-0F8000031AC04918074848F003E0A24848F001F0A248CD12F8A2001E1A78003E1A7CA200
-3C1A3C007C1A3EA200781A1EA300F81A1FA2481A0FAB6C1A1FA200781A1EA3007C1A3EA2
-003C1A3C003E1A7CA2001E1A78001F1AF8A26C6CF001F0A26C6CF003E0A26C6CF007C06D
-180F00011A806C6CF01F006D60017E187E6D606D6C4C5A6D6C4C5A6D6C4C5AD903F8EE1F
-C0D901FEEE7F809026007F80DA01FEC7FCDA3FE0EC07FCDA0FFCEC3FF0913B03FFC003FF
-C0020090B6C8FC033F14FC030714E09226007FFEC9FC50557BC05B>13
-D<EB0FFCEB3FFF90B512C0000314F04880488048804880A2481580A3B712C0AA6C1580A3
-6C1500A26C5C6C5C6C5C6C5CC614C0013F90C7FCEB0FFC22227BA72D>15
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ft cmbx12 14.4 64
-/Ft 64 122 df<EEFFFC031FEBFF804AB612E0020781021F9038C00FF8913A7FFE0003FC
-DAFFF0EB00FE4949EB03FF4901805B4990C7487F49485CA2495A4D7F013F6F5B5CA37190
-C7FC715AEF01F894C9FCA90403B512C0BAFCA526003FFCC7120783B3B3A6003FB5D8FC03
-B612C0A542547DD34B>12 D<EA07F0EA1FF8EA3FFE487EA2B5128014C0A314E0A37EA27E
-EA1FFDEA07F1EA0001A2130314C0A313071480130FA214005B133EA25B5B485A1203485A
-485A485A90C7FC120C132876D225>39 D<EC01E0EC07F84A7EA66E5AA200041608001F16
-3ED83FC015FFD87FE04A13806D6C485AD8FFF84A13C0D87FFE021F138001FF5C02835B6C
-01C390B51200000FD9F1E313FC0001D9F9E713E027003FFDEF90C7FC0107B512F8010114
-E0D9003F90C8FCEC07F8EC3FFF49B512E0010714F890393FFDEFFF2701FFF9E713E0000F
-D9F1E313FC003FD9C3F013FF4801836D138002037F01FE80D8FFF8020713C0D87FF06E13
-8049486C7ED83FC06E1300D81F00153E00041608C792C7FCA24A7EA66E5AEC01E0323578
-D943>42 D<EA07F0EA1FF8487E487E7FB5FC1480A314C0A37EA27E7EEA07F3EA0003A213
-071480A3130F1400A25B131E133E133C137C5BA2485A485A485A485A48C7FC121E120C12
-28769025>44 D<B712F0AB240B7F9F2D>I<EA07F0487E487E487E487EB51280A76C1300
-6C5A6C5A6C5A6C5A1111769025>I<EF01E01703EF07F0A2170FA2EF1FE0A218C0173FA2
-EF7F80A218005FA24C5AA25F1603A24C5AA25F160FA24C5AA25F163FA24C5AA294C7FC5E
-A24B5AA25E1503A24B5AA25E150FA24B5AA25E153FA24B5AA293C8FC5DA24A5AA25D1403
-A25D1407A24A5AA25D141FA24A5AA25D147FA24AC9FCA25C1301A2495AA25C1307A2495A
-A25C131FA2495AA25C137FA249CAFCA25B1201A2485AA25B1207A2485AA25B121FA2485A
-A25B127FA248CBFCA25AA2127CA2347879D943>I<913803FFC0023F13FC91B6FC010315
-C0010F018113F0903A1FFC003FF849486D7E49486D7E49486D7E48496D138048496D13C0
-A24817E04890C813F0A34817F8A24817FC49157FA3007F17FEA600FF17FFB3A5007F17FE
-A6003F17FCA26D15FFA26C17F8A36C17F0A26C6D4913E0A26C6D4913C06C17806E5B6C6D
-4913006D6C495AD91FFCEB3FF8903A0FFF81FFF06D90B55A01011580D9003F01FCC7FC02
-0313C0384F7BCD43>I<157815FC14031407141F14FF130F0007B5FCB6FCA2147F13F0EA
-F800C7FCB3B3B3A6007FB712FEA52F4E76CD43>I<EC3FFE0103B512E0010F14FC013F14
-FF90B712C048D9C07F7F2703FE000F13F8D807F801037FD80FE06D7F48486D7F48488001
-F01680486C6E13C07F486C6E13E07FA27013F0A56C5AA26C5AEA0FF0EA03C0C914E05EA2
-18C05E1880A24C13005F4C5A4B5B5F4B5B5F4B5B4B90C7FC4B5A5E4B5AED7FE04B5A4A5B
-4A48C8FC4A5A5D4A48EB01F04A5AEC3F804AC7FC02FEEC03E0495A495A495A495AD91F80
-140749C8FC013E150F017FB7FC90B812C05A5A5A5A5A5A5AB9FC1880A4344E79CD43>I<
-91380FFFC091B512FC0107ECFF80011F15E090263FF8077F9026FF800113FC4848C76C7E
-D803F86E7E491680D807FC8048B416C080486D15E0A4805CA36C17C06C5B6C90C75AD801
-FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512F816E016FCEEFF
-80DA000713E0030113F89238007FFE707E7013807013C018E07013F0A218F8A27013FCA2
-18FEA2EA03E0EA0FF8487E487E487EB57EA318FCA25E18F891C7FC6C17F0495C6C4816E0
-01F04A13C06C484A1380D80FF84A13006CB44A5A6CD9F0075BC690B612F06D5D011F1580
-010302FCC7FCD9001F1380374F7ACD43>I<177C17FEA2160116031607160FA2161F163F
-167FA216FF5D5DA25D5DED1FBFED3F3F153E157C15FCEC01F815F0EC03E01407EC0FC015
-80EC1F005C147E147C5C1301495A495A5C495A131F49C7FC133E5B13FC485A5B485A1207
-485A485A90C8FC123E127E5ABA12C0A5C96C48C7FCAF020FB712C0A53A4F7CCE43>I<D8
-0380150ED807E0157E01FEEC03FED9FFF0137F91B65A5F5F5F5F5F94C7FC5E5E16F016C0
-93C8FC15F801E190C9FC01E0CAFCABEC0FFF027F13F001E3B512FE01E76E7E9026FFF807
-7FDAC0017F49C713F8496E7E49143F4981496E7E6C481680C9FC18C08218E0A418F0A3EA
-0FE0487E487E487E487EA418E0A35B6C484A13C05B491680003EC85A003F17006C6C4A5A
-6D5D6C6C4A5AD807F8495BD803FE01075B2701FFC03F5B6C90B65A013F4AC7FC6D14F801
-0314C09026007FF8C8FC344F79CD43>I<ED0FFF92B512E0020780021F14FC91397FFE03
-FE903A01FFF0007F4901C0EB3F804990C7121F4948EC7FC0494814FF49484913E049485B
-01FF5C485BA2485B5AA2486F13C04A6D1380486F1300177E94C7FC5AA291CAFC5AA21508
-913801FFF8020713FFB54814C04A14F04AC66C7E023C6D7E4A6D7E4A6D7E7013804A15C0
-A24A15E07013F05C18F8A491C714FCA37EA67EA46C17F880A27E18F06C5D18E06C6D15C0
-7E6E4913806C6D15006D6C495A6D6CEB7FFC6DB448485A6D90B55A010315C0010092C7FC
-023F13FC020713C0364F7ACD43>I<121F7F7FEBFF8091B81280A45A1900606060A26060
-60485F0180C86CC7FC007EC95A4C5A007C4B5A5F4C5A160F4C5A484B5A4C5A94C8FC16FE
-C812014B5A5E4B5A150F4B5AA24B5AA24B5A15FFA24A90C9FCA25C5D1407A2140FA25D14
-1FA2143FA4147F5DA314FFA55BAC6D5BA2EC3FC06E5A395279D043>I<913807FFC0027F
-13FC0103B67E010F15E090261FFC0113F8903A3FE0003FFCD97F80EB0FFE49C76C7E4848
-8048486E1380000717C04980120F18E0177FA2121F7FA27F7F6E14FF02E015C014F802FE
-4913806C7FDBC00313009238F007FE6C02F85B9238FE1FF86C9138FFBFF06CEDFFE01780
-6C4BC7FC6D806D81010F15E06D81010115FC010781011F81491680EBFFE748018115C048
-D9007F14E04848011F14F048487F48481303030014F8484880161F4848020713FC160182
-4848157F173FA2171FA2170FA218F8A27F007F17F06D151FA26C6CED3FE0001F17C06D15
-7F6C6CEDFF806C6C6C010313006C01E0EB0FFE6C01FCEBFFFC6C6CB612F06D5D010F1580
-010102FCC7FCD9000F13C0364F7ACD43>I<91380FFF8091B512F8010314FE010F6E7E49
-01037F90267FF8007F4948EB3FF048496D7E484980486F7E484980824817805A91C714C0
-5A7013E0A218F0B5FCA318F8A618FCA46C5DA37EA25E6C7F6C5DA26C5D6C7F6C6D137B6C
-6D13F390387FF803011FB512E36D14C30103028313F89039007FFE03EC00401500A218F0
-5EA3D801F816E0487E486C16C0487E486D491380A218005E5F4C5A91C7FC6C484A5A494A
-5A49495B6C48495BD803FC010F5B9027FF807FFEC7FC6C90B55A6C6C14F06D14C0010F49
-C8FC010013F0364F7ACD43>I<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C7FA24C
-7FA34C8083047F80167E8304FE804C7E03018116F8830303814C7E03078116E083030F81
-4C7E031F81168083033F8293C77E4B82157E8403FE824B800201835D840203834B800207
-835D844AB87EA24A83A3DA3F80C88092C97E4A84A2027E8202FE844A82010185A24A8201
-03854A82010785A24A82010F855C011F717FEBFFFCB600F8020FB712E0A55B547BD366>
-65 D<BA12C019FEF1FFC01AF01AFCD8000701F0C7000313FFDE007F7F737F070F7F737F
-878587858785A287A84F5BA263616361634F5B4F5B077F90C7FC4E485A060713F892B812
-E097C8FC861AF003F0C7000313FE9539003FFF80070F13E0737F07017F87737F747E1C80
-7413C0A27413E0A31CF0A386A362A31CE0A2621CC0A250138097B5FC1C004F5B19074F5B
-073F13F04EB55ABC128098C7FC1AF81AC007F8C8FC54527CD160>I<932601FFFCEC01C0
-047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003EBC07F020F01
-FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F88249498249498249
-49824949824990CA7E494883A2484983485B1B7F485B481A3FA24849181FA3485B1B0FA2
-5AA298C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F1C00
-6C6D606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F
-806D6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0020091B612C0
-033F93C8FC030715FCDB007F14E0040101FCC9FC525479D261>I<BA7E19FCF1FF801AF0
-1AFCD8000701F0C7000F13FF060014C0071F7F070713F807017F737F747E747F747F8674
-7F747F8886888688A2757EA31D8087A21DC0A51DE0A387A963A31DC0A51D80A2631D00A3
-515AA2646264505B6264505B505B5090C7FCF2FFFE4F5B07075B071F5B96B512C0060F91
-C8FCBB5A1AF01AC007FCC9FC19805B527CD167>I<BC1280A5D8000701F8C7000114C0F0
-001F19071901851A7F1A3F1A1FA2F20FE0A21A07A31A03A318F81BF01A01A497C7FC1701
-A317031707170F177F92B6FCA59238F8007F170F170717031701A317001B3EA31B7CA395
-C8FCA21BFCA21BF8A21A01A31A031BF01A071A0FA21A1F1A3FF27FE0F101FF1907191F06
-03B5FCBCFCA21BC0A34F517CD058>I<BB12FEA5D8000701F8C700077FF0007F191F1907
-85858586861B80A21A1FA31A0FA41BC006F81307A497C7FCA31701A317031707170F177F
-92B6FCA59238F8007F170F170717031701A31700A795C9FCB3B812F8A54A517CD055>I<
-932601FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203DA
-E003EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F8
-824949824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA24849
-181FA3485B1B0FA25AA298C8FC5CA2B5FCAE6C057FB712E0A280A36C94C7003FEBC000A3
-6C7FA36C7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D6D5E6D7F6D01FC93B5FC6D13FF6D
-6C6D5C6E01F0EC07FB020F01FEEC1FF10203903AFFF001FFE0020091B6EAC07F033FEE00
-1F030703FC1307DB007F02E01301040149CAFC5B5479D26A>I<B8D8C003B8FCA5D80007
-01F8C9001FEBE000B3AE92BAFCA503F8C9121FB3B1B8D8C003B8FCA560527CD169>I<B8
-12C0A5D8000701F8C7FCB3B3B3B2B812C0A52A527CD132>I<B812F8A5D8000701F8CAFC
-B3B3A91A7CA41AFC1AF8A51901A31903A219071AF0190FA2191F193F197F19FF18036018
-3F4DB5FCBB12E0A546527CD151>76 D<B600FC073FB512FE6F61A26F96B6FCA2D80007F5
-C00070EF01EFA202EF6DEF03CFA202E76DEF078FA202E36DEF0F0FA202E16D171EA302E0
-6D173CA26F6C1778A26F6C17F0A26F6DED01E0A26F6DED03C0A36F6DED0780A26F6DED0F
-00A26F6D151EA26F6D5DA3706C5DA2706C5DA2706D495AA2706D495AA2706D495AA3706D
-49C7FCA2706D131EA2706D5BA2716C5BA3716C5BA271EB81E0A271EBC3C0A271EBE780A2
-7101FFC8FCA3715BA2715BA2725AA2725AA2D93FFC6F5AB74DB712FEA2725AA2725A7752
-7CD180>I<B600FC93B7FC8181A282D800076E9239003FFC0070EE07E08282A28202EF7F
-02E77F02E380A202E18002E0806F7F6F7F6F7FA26F7F6F7F6F806F80A26F80707F707F70
-7F707FA2707F7080708070808583717F717F717F717FA27114807114C07114E07213F072
-13F8A27213FC7213FE7213FF721487A27214C77214E77313F77313FF85A285858585A285
-86868686A286868686A2D93FFC187FB7173F1B1F1B0F1B07755A60527CD169>I<93380F
-FFC00303B6FC031F15E092B712FC0203D9FC0013FF020F01C0010F13C0023F90C7000313
-F0DA7FFC02007F494848ED7FFE4901E0ED1FFF49496F7F49496F7F4990C96C7F49854948
-707F4948707FA24849717E48864A83481B804A83481BC0A2481BE04A83A2481BF0A34849
-7113F8A5B51AFCAF6C1BF86E5FA46C1BF0A26E5F6C1BE0A36C6D4D13C0A26C6D4D1380A2
-6C1B006C6D4D5A6E5E6C626D6C4C5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B90C7
-FC6D6D4B5A6D01FF02035B023F01E0011F13F0020F01FC90B512C0020390B7C8FC020016
-FC031F15E0030392C9FCDB001F13E0565479D265>I<BAFC19F819FF1AE086D8000701F0
-C7001F13FC060113FF726C13807313C0070F13E01BF0857313F81BFCA27313FEA41BFFA8
-1BFEA31BFC61A21BF84F13F04F13E0614F13C04F13004E485A061F5B92B812F01AC04FC7
-FC19E003F8CBFCB3AEB812C0A550527CD15C>I<B912F0F0FF8019F819FF1AC0D8000701
-F0C714F0060F7F060113FE727F737F737F85737F87A2737FA387A863A2616363A24F5B4F
-5B4F90C8FC4F5A06035B060F13F095B512C092B8C9FC19F819E019F89226F0000313FE94
-39007FFF80727F727F727F727F727F8684A28684A787A71D1C75133EA38575137E73157C
-7513FC731401B86C6D9038F803F807039038FE07F07390B512E0736C14C0080F1400CEEA
-7FFC5F537CD164>82 D<91260FFF80130791B500F85B010702FF5B011FEDC03F49EDF07F
-9026FFFC006D5A4801E0EB0FFD4801800101B5FC4848C87E48488149150F001F82498112
-3F4981007F82A28412FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF15F86CECFF80
-16FC6CEDFFC017F06C16FC6C16FF6C17C06C836C836D826D82010F821303010082021F16
-801400030F15C0ED007F040714E01600173F050F13F08383A200788200F882A3187FA27E
-A219E07EA26CEFFFC0A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C04A5A02F8EC7F
-F0903B1FFFC003FFE0486C90B65AD8FC0393C7FC48C66C14FC48010F14F048D9007F90C8
-FC3C5479D24B>I<003FBC1280A59126C0003F9038C0007F49C71607D87FF8060113C001
-E08449197F49193F90C8171FA2007E1A0FA3007C1A07A500FC1BE0481A03A6C994C7FCB3
-B3AC91B912F0A553517BD05E>I<B800C00103B612FCA5D8000701F8CAEBF000F31F80B3
-B3B11B3FA26D97C7FC81637F1B7E6D6D17FE505A6E7E505A6E6D15076E4D5A6E6D4B5A6E
-6D4B5A6E01F84B5A6E6DDA03FFC8FC6E6CB46CEB0FFE6F9039F001FFF8030F90B65A0303
-16C0DB007F92C9FC040F14F8DC007F13805E537CD167>I<B700FE031FB512FEA5D8001F
-01F0CA383FFE00F307F06D626F170F6D62811B1F6D6D601B3F6D97C7FC6F5F6D197E821B
-FE6E6D5E1A016E6D5E1A036E60701507A26E6D5E1A0F6E6D5E1A1F6E6070153FA26E6D93
-C8FC626E6E147E1AFE6F5E711301A26F6D5C19036F6D5C19076F5E71130FA26F6D5C191F
-6F6D5C193F6F93C9FC715BA26FEC807E19FE706D5A18C1705C18E3705C18F318F770EBFF
-E0A2705CA2705CA37091CAFCA2705BA2715AA3715AA2715AA2715A715A5F537DD166>I<
-B700FC017FB600FE91B612F0A5D8003F01C0C8001F01E0C9EBF8006F71EE0FC06D716187
-6F1C1F6D7196C7FC6F8373606D1E3E6F836D7160876F1CFC6D666F4B801F016D66704A80
-6E525A88704A17076E059F5F70021F80080F160F6E6570023F806EDC3E074CC8FC887002
-7E5F6EDC7C03163E7002FC804F6C167E6E1C7C700101814F6C16FC6E745B70010317016E
-4C6D5D060716C00580496D14036F63DDC00F16E04F6D14076F07F05BDDE01F170F6F92C7
-6C5D1DF8DDF03E6E141F6F98C9FCDDF87E16FC067C6E5C6FF1FE3EDDFCFC177E6F4A6E14
-7C1DFFDDFFF06E14FC6F62A24E816F62A270496F5BA24E817061A295C97E7061A2704870
-90CAFCA37048705AA24D1601040360A27048705A84537DD18B>I<B8030FB61280A5D800
-0F01FCCA003F90C7FC6FEF07F86D6D606D4F5A826D6E4C5A6D4F5A826E6D4CC8FC6E18FE
-826E6D4B5A6E4D5A826E6D4B5A6E4D5A836E6E4A5A6E4D5A836F6D4AC9FC6F5E715C6F6D
-495A6F1503715C6F6D495A6F150F06805B6F6E485A6F153F06E05B706D48CAFC705C725A
-70EBFDFC7013FF61705C82705C6182715B96CBFCB3AA030FB712F8A561527ED166>89
-D<1306131F5B137E5B485A5B485A485A485AA248C7FC121E123EA2123C127C1278A312F8
-5AA2EAF1FCEAF7FFB5128014C0A214E0A37EA37E6C13C0A26C138000031300EA01FC1328
-78D225>96 D<EC7FFF0107B512F0013F14FE90B77E48D9E00F7F2703FE000113F0486C6D
-7F6EEB3FFC48826E131F83707FA36C496D7FA26C90C7FC6C5AC9FCA6037FB5FC020FB6FC
-91B7FC01071487013FEBF0074913803901FFFC004813F0485B485B485B4890C7FC5A5BA2
-485AA45EA26D5C007F151D163D6C6C02797F6C6D01F113F86C9026C003E1EBFFE06C9026
-F81FC014F06C90B5487EC6ED001F011F01FC010713E0010101E090C8FC3C387CB641>I<
-EB3FF0B5FCA51203C6FCB3A4923801FFE0030F13FE033FEBFFC092B612F002F301017F91
-3AF7F8003FFEDAFFE0EB0FFF03806D7F92C76C7F4A6E7F4A824A6E7FA2727EA285A28584
-A31A80AC1A00A44E5AA36118FF616E4A5BA26E4A5B6E4A5B6F495BDACFC04990C7FCDA87
-F0EB7FFC913A03FE03FFF849C6B612E0496D148049011F01FCC8FC90C7000313C041547B
-D24B>I<913801FFF8021FEBFF8091B612F0010315FC010F9038C00FFE903A1FFE0001FF
-D97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7FC486F1300705A4892
-C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E140F6CEE1F806C6DEC3F
-006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A01001580023F49C7FC02
-0113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0021F13FC91B6
-FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC49487F4849143F48498048
-5B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D5C6C6D
-49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE0FD900
-3F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC010715C0490181
-7F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F18C0488191C7
-FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218E06CEE01F0
-6E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB03FE90
-3A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D>I<ED3FFC0203
-B5FC020F14C0023F14E09139FFF81FF0499038C03FF849EB807F49903800FFFC495A495A
-A2495AA2EE7FF8495AEE3FF0EE0FC093C7FCAEB712E0A526007FF8C8FCB3B3A7007FB512
-FEA52E547CD329>I<DA3FFF14FF0103B5D8F00713C0010FDAFC1F13E0013FECFF7F9026
-7FFC0F9038FF9FF09026FFE001EBF83F48496C13E0484990387FF01F4890C7D83FF813E0
-489338FC0FC0F0078048486E6CC7FCA2003F82A9001F5EA26C6C4A5AA26C5E6C6D495A6C
-6D495A6C6D485BDAFC0F5B4890B6C8FCD803EF14FC01C314F02607C03F90C9FC91CBFCA2
-120FA37FA213F813FE90B7FC6C16F817FF18C06C836C836C836D828448B9FC12074848C7
-00031480D81FF8EC003F4848150748486F13C083485A83A56D5D007F18806D5D003F1800
-6C6C4B5AD80FFEED1FFC6C6C6CEC7FF86C01E049485A6C01FE011F5B6C6CB71280010F03
-FCC7FC010115E0D9000F01FCC8FC3C4F7CB543>I<EB3FF0B5FCA51203C6FCB3A4EE1FFC
-93B512C0030314F0030F8092391FE07FFC92393F001FFE037C8003F07FDAF1E081ECF3C0
-DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542537BD24B>I<137F497E00
-0313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA512017EB3B3A6
-B612E0A51B547BD325>I<157FEDFF80020313E04A13F0A24A13F8A76E13F0A26E13E002
-001380ED7F0092C7FCADED1FF891B5FCA51401EC007FB3B3B1EA0780EA1FE0487E487E48
-6C13FF16F0A216E05C16C04A13806C4848130049485A003F495A000FB512F06C5C000114
-8026001FFCC7FC256C87D329>I<EB3FF0B5FCA51203C6FCB3A54CB512F8A59339003FFE
-00EF1FF0EF3FC04D5A4DC7FCEE03FEEE07F84C5A4C5AEE7FC04CC8FC4B5A4B5AED0FF8ED
-1FE04B7E4B7EECF1FF02F37F02F77F91B6FC83159F030F7F02FE80DAF8077F4A7E6F7F6F
-7F83707E82707F84707F707F82707F84707F177F717E4D13C0B6D8F003B6FCA540537CD2
-47>I<EB3FF0B5FCA512017EB3B3B3B1B612F0A51C537BD225>I<D93FF0D91FFCEDFFE0B5
-91B500C0010713FE030302F0011F6D7E030F6E017F8092271FE07FFCD9FF037F922A3F00
-1FFE01F8007F0003027C9126FF03E080C602F06DD90780137FDAF1E0038FC77FDAF3C015
-9EDAF7806D01BC143F07FC8102FFC75C4A5EA24A5EA44A5EB3ACB6D8F807B6D8C03FB512
-FEA567367BB570>I<D93FF0EB1FFCB591B512C0030314F0030F8092391FE07FFC92393F
-001FFE0003027C80C602F07FDAF1E081ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6
-D8F807B612C0A542367BB54B>I<913801FFE0021F13FE91B612C0010315F0010F903880
-7FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F48496D7F4A147F48834890C86C
-7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3003F18006D5DA26C5FA26C
-5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE011F90C7FC903A0FFF807F
-FC6D90B55A010015C0023F91C8FC020113E03A387CB643>I<903A3FF001FFE0B5010F13
-FE033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9FFE0EB1FFFC602806D7F92
-C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A0060A36118FFA2615F616E
-4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FBFE075B02F8B612E06F1480
-031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I<912601FFE0EB0780021F01
-F8130F91B500FE131F0103ECFF80010F9039F03FC03F499039800FE07F903A7FFE0003F0
-4948903801F8FF4849EB00FD4849147F4A805A4849805A4A805AA291C87E5AA35B12FFAC
-6C7EA37EA2806C5EA26C6D5CA26C6D5C6C6D5C6C93B5FC6C6D5B6D6C5B6DB4EB0FEF010F
-9038C07FCF6D90B5120F010114FED9003F13F80203138091C8FCB1040FB61280A5414D7C
-B547>I<90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003
-D9E3E013FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55C
-B3AAB612FCA52F367CB537>I<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF8
-1307D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13
-FF15F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0EC003F
-030713F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001
-F8EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C38
-7CB635>I<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F90B6FC
-B8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC
-6DEBFFF86D6C5B021F5B020313802A4D7ECB34>I<D93FF8913801FFC0B50207B5FCA500
-03ED001FC61607B3AE5FA35FA2017F5D173B177B6D6C14F3DC01E313F06D6CD907C3EBFF
-C0903A0FFFC03F836D90B51203010114FE6D6C13F8020701E091C7FC42377BB54B>I<B6
-00F00107B5FCA5000101F8C8EA7FE06C6DED3F00A2017F163E6E157E013F167C6E15FC6D
-5E6F13016D5E8117036D5E6F13076D5E6F130F6D5E6F131F6D93C7FC815F6E6C133E177E
-023F147C6F13FC6E5C16816E5C16C3A26EEBE3E016E76E5C16FF6E5CA26E91C8FCA26F5A
-A36F5AA26F5AA26F5AA26F5A6F5A40367DB447>I<B6D8E07FB5D8C003B512C0A5000101
-F0C701F0C7381FF8006E027FED07E06C715DA26E023F150F017F705DA26E181F013F4B6C
-92C7FC6E606D70143E94B5FC6F177E6D4A6E137C03C001F315FC6D715B160303E001E114
-016D020702E05B03F013C06D71485A160F03F8D9807F13076D05F85B93381F003F03FC16
-0F027F4902FC5BDBFE3E011F131F023F04FE90C8FC167EDBFF7C010F5B6E01FCECFF3E4C
-6D137E6E5FA24C7F6E5F4C7F6E5FA24C7F6E5F4C147FA26E5F93C8123F6F5EA2033E6FC9
-FC5A367DB461>I<007FB500F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D6D5C
-6D6D495A6D4B5A6F495A6D6D91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6EEB8F
-E06EEBCFC06EEBFF806E91C9FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01FD
-7F03F87F4A486C7E4A486C7E020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F495A
-49486D7F01076F7E49486E7E49486E7FEBFFF0B500FE49B612C0A542357EB447>I<B600
-F00107B5FCA5C601F8C8EA7FE06EED3F00A26D6C153E187E013F167C6E15FC6D5E6F1301
-6D5E6F13036D5E8117076D6D5C170F6D6D5C171F6D93C7FC6F5B027F143E6F137E023F14
-7C6F13FCA26E6D5A16816EEBC1F016C36E5C16E76E5C16FF6E5CA26E91C8FCA36F5AA26F
-5AA26F5AA26F5AA26F5AA35E150F5E151F93C9FC5DD81FC0133E486C137E486C137C486C
-13FC5D14015D14034A5A6C48485A49485A263FC07FCAFCEB81FE6CB45A6C13F000035BC6
-90CBFC404D7DB447>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fu cmr10 10.95 89
-/Fu 89 125 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907
-F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91C7
-FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>11
-D<4AB4FC021F13C091387F01F0903901FC0078D907F0131C4948133E494813FF49485A13
-7F1400A213FE6F5A163893C7FCAA167FB8FCA33900FE00018182B3AC486CECFF80007FD9
-FC3F13FEA32F407FBF33>I<4AB47E021F13F791387F00FFEB01F8903807F001EB0FE0EB
-1FC0EB3F80137F14008101FE80AEB8FCA3C648C77EB3AE486CECFF80007FD9FC3F13FEA3
-2F407FBF33>I<4AB4ECFF80021FD9C00F13E0913B7F01F03F80F8903C01F80078FE003C
-D907F0D93FF8130E49484948131F49484948EB7F804948484913FF137F02005CA201FE92
-C7FC6FED7F0070141C96C7FCAAF13F80BBFCA3C648C76CC7FC197F193FB3AC486C4A6CEB
-7FC0007FD9FC3FD9FE1FB5FCA348407FBF4C>I<121EEA7F80EAFFC0A9EA7F80ACEA3F00
-AC121EAB120CC7FCA8121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A4179C019>33
-D<001E130F397F803FC000FF137F01C013E0A201E013F0A3007F133F391E600F30000013
-00A401E01370491360A3000114E04913C00003130101001380481303000EEB070048130E
-0018130C0038131C003013181C1C7DBE2D>I<013F4C7ED9FFC04B7E2601E0E015072607
-C070150F48486C4B5A023E4BC7FC48486C5D48D90FC0EB01FE003ED90EF0EB07FCDA0F3F
-133E007E903A070FFFF8F8007C0200EBC1F0EE000300FC6D6C495A604D5A171F95C8FC17
-3E177E177C5F16015F007C4948485A1607007E5E003E49495A020E131F003F93C9FC6C49
-133E260F803C137E0238137C6C6C485B3901E0E0016CB448485AD93F0049133F90C74848
-EBFFC0030F903801E0E093398007C0704B4848487E4B153C033E90381F001C4B497F03FC
-133E4B150F4A48017E7F0203147C5D4A4801FCEB0380140F5D4AC7FC5C143E5C14FC5C49
-5A13034948027CEB07005C4948147E011F033E5B91C8140E013E153F017E6F5B017C9238
-0F803C4917380001706C5A49923801E0E0496FB45A6C48043FC7FC41497BC34C>37
-D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A
-120E5A1218123812300B1C79BE19>39 D<1430147014E0EB01C0EB03801307EB0F00131E
-133E133C5B13F85B12015B1203A2485AA2120F5BA2121F90C7FCA25AA3123E127EA6127C
-12FCB2127C127EA6123E123FA37EA27F120FA27F1207A26C7EA212017F12007F13787F13
-3E131E7FEB07801303EB01C0EB00E014701430145A77C323>I<12C07E12707E7E121E7E
-6C7E7F12036C7E7F12007F1378137CA27FA2133F7FA21480130FA214C0A3130714E0A613
-0314F0B214E01307A614C0130FA31480A2131F1400A25B133EA25BA2137813F85B12015B
-485A12075B48C7FC121E121C5A5A5A5A145A7BC323>I<EB03C0A2805CA600F0140F00FC
-143F00FE147F00FF14FF393FC3C3FC390FE187F03903F18FC03900FDBF00EB3FFCEB0FF0
-EB03C0EB0FF0EB3FFCEBFDBF3903F18FC0390FE187F0393FC3C3FC39FF03C0FF00FE147F
-00FC143F00F0140F00001400A6805CA220277AC32D>I<1506150FB3A9007FB912E0BA12
-F0A26C18E0C8000FC9FCB3A915063C3C7BB447>I<121EEA7F8012FF13C0A213E0A3127F
-EA1E601200A413E013C0A312011380120313005A120E5A1218123812300B1C798919>I<
-B512FEA617067F961E>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A798919>I<ED01
-80ED03C01507A21680150FA216005DA2151E153EA2153C157CA2157815F8A25D1401A25D
-1403A25D1407A25D140FA24AC7FCA2141E143EA2143C147CA2147814F8A25C1301A25C13
-03A25C1307A25C130FA291C8FC5BA2131E133EA25BA2137813F8A25B1201A25B1203A25B
-1207A25B120FA290C9FC5AA2121E123EA2123C127CA2127812F8A25A1260225B7BC32D>
-I<EB01FE90380FFFC090383F03F090387C00F849137C48487F48487F4848EB0F80A2000F
-15C04848EB07E0A3003F15F0A290C712034815F8A64815FCB3A26C15F8A56C6CEB07F0A3
-001F15E0A36C6CEB0FC0A26C6CEB1F80000315006C6C133E6C6C5B017C5B90383F03F090
-380FFFC0D901FEC7FC263F7DBC2D>I<EB01C013031307131F137FEA07FFB5FC139FEAF8
-1F1200B3B3ACEB7FF0B612F8A31D3D78BC2D>I<EB07FC90383FFF8090B512E03903F01F
-F83907C007FC390F0001FE001E6D7E001C1580003CEC7FC05AED3FE01270B4FC6DEB1FF0
-7FA56C5A6CC7FC120CC813E0153FA216C0157F168015FF16004A5A5D4A5A4A5A5D4A5A4A
-5A4AC7FC147E147C5C495A495A495A495A49C71270133E133C5B4914E0485A485A485A48
-C7120148B6FCA25A4815C0B7FCA3243D7CBC2D>I<EB07FC90383FFF809038F80FE03901
-E003F839078001FCD80F007F000E6D7E001E1580D81F80137F486C14C07FA27F5BA2121F
-6C5AC8138015FF1600A24A5AA24A5A5DEC07E04A5A023FC7FCEB1FFCECFF809038000FE0
-EC07F86E7E6E7E6E7E1680ED7FC0A216E0153FA216F0A2120C123F487E487EA316E0A249
-137F6CC713C01278EDFF807E6C4913006C495A3907C007FC3903F80FF0C6B55A013F1380
-D907F8C7FC243F7CBC2D>I<150E151E153EA2157EA215FE1401A21403EC077E1406140E
-141CA214381470A214E0EB01C0A2EB0380EB0700A2130E5BA25B5BA25B5B1201485A90C7
-FC5A120E120C121C5AA25A5AB8FCA3C8EAFE00AC4A7E49B6FCA3283E7EBD2D>I<000614
-03D80780131F01F813FE90B5FC5D5D5D15C092C7FC14FCEB3FE090C9FCACEB01FE90380F
-FF8090383E03E090387001F8496C7E49137E497F90C713800006141FC813C0A216E0150F
-A316F0A3120C127F7F12FFA416E090C7121F12FC007015C012780038EC3F80123C6CEC7F
-00001F14FE6C6C485A6C6C485A3903F80FE0C6B55A013F90C7FCEB07F8243F7CBC2D>I<
-EC1FE0ECFFF8903803F03E90380FC00F90391F000780133E017EEB1FC049133F4848137F
-12035B12074848EB3F80ED1F00001F91C7FC5BA2123FA3485AA214FE903887FF8039FF8F
-07E090389C01F09038B800FC01B0137E13F0497F16804914C0A2ED1FE0A34914F0A5127F
-A6123F6D14E0A2121FED3FC0A26C6C1480A20007EC7F006C6C137E6C6C5B6C6C485A9038
-7E07F06DB45A010F1380D903FCC7FC243F7CBC2D>I<1238123C123F90B612FCA316F85A
-16F016E00078C712010070EC03C0ED078016005D48141E151C153C5DC8127015F04A5A5D
-14034A5A92C7FC5C141EA25CA2147C147814F8A213015C1303A31307A3130F5CA2131FA6
-133FAA6D5A0107C8FC26407BBD2D>I<EB03FC90381FFF8090387C07E09038F001F83901
-E0007C48487F48487F48C7FCED0F80121E16C0003E1407A4123FA26DEB0F807F6C6C131F
-6D140001FC133E6C6C5B9038FF80786C6D5A6CEBF3E06CEBFF806C91C7FC133F6D13C06D
-7F013F13F801787F48486C7E3903E01FFF48486C1380260F800313C048487E489038007F
-E0003E143F007E141F007CEC0FF01507481403A31501A46C15E0007C1403A2007E15C06C
-14076CEC0F806DEB1F006C6C133ED807F05B3901FC03F86CB512E0011F1380D903FCC7FC
-243F7CBC2D>I<EB03FCEB1FFF90387E07C09038FC03F048486C7E48486C7E4848137C00
-0F147E4848137F81003F15805B007F15C0A2151F12FF16E0A516F0A5127F153FA36C7EA2
-001F147F120F6C6C13FF6D13DF000313013900F8039F90387E0F1FD91FFE13E0EB07F090
-C7FCA2ED3FC0A41680157FD80F801400487E486C13FEA24A5A5D49485AEB8007391E000F
-E0001F495A260FC07FC7FC3803FFFE6C13F838003FC0243F7CBC2D>I<121EEA7F80A2EA
-FFC0A4EA7F80A2EA1E00C7FCB3121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A2779A619>
-I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121E127FEAFF80A213C0A4127F121E
-1200A412011380A3120313005A1206120E120C121C5A1230A20A3979A619>I<007FB912
-E0BA12F0A26C18E0CDFCAE007FB912E0BA12F0A26C18E03C167BA147>61
-D<EB1FF890B5FC3903E01FC0390F0007F0001EEB03F848EB01FC4814FE140000FE14FF7E
-7FA46CC7FC123EC7EA01FEA2EC03FCEC07F815F0EC0FC0EC1F80EC3F00143E5C147814F8
-5C13015CA2495AA25CAB91C7FC90C8FCA8EB0780EB1FE0A2497EA46D5AA2EB078020407B
-BF2B>63 D<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A2913801C7FC15C3A291380381
-FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D7EA349486D7E91B6FCA249
-819138800001A249C87EA24982010E157FA2011E82011C153FA2013C820138151FA20178
-82170F13FC00034C7ED80FFF4B7EB500F0010FB512F8A33D417DC044>65
-D<B712FCEEFF8017F00001903980000FF86C6CC7EA03FE707E701380EF7FC0EF3FE0A2EF
-1FF0A218F8A3170F171FA318F0A2EF3FE0177F18C0EFFF804C1300EE03FCEE0FF8EE7FE0
-91B6C7FC17E091C7EA07FCEE01FE933800FF80EF7FC0EF3FE0EF1FF018F8170F18FC1707
-A218FEA718FC170FA2EF1FF818F0173FEF7FE0EFFFC00403138048486C90380FFE00B85A
-17E094C7FC373E7DBD40>I<DB3FF01306912603FFFE130E020F9038FF801E913A3FF007
-E03E9139FF8000F8D903FEC7EA7C7ED907F8EC1EFE4948140FD93FE0140749481403495A
-91C812014848150012034848167E5B000F173EA24848161EA2123F5B180E127FA3491600
-12FFAC127F7F180EA2123FA27F001F171E181C6C7EA20007173C6D16386C6C1678000117
-706C6C16F06EEC01E06D6C15C06D6C1403D90FF0EC07806D6CEC1F00D903FE143E902600
-FF8013F891393FF007F0020FB512C0020391C7FC9138003FF037427BBF42>I<B712FCEE
-FF8017E000019039C0001FF86C6C48EB03FEEE00FF717E717EEF0FE084717E717E170184
-717EA21980187F19C0A3F03FE0A519F0AB19E0A5F07FC0A21980A218FF19004D5AA24D5A
-6017074D5A4D5AEF7FC04DC7FCEE03FE48486CEB1FF8B85A178004FCC8FC3C3E7DBD45>
-I<B912E0A300019038C000016C6C48EB001FEF0FF01703A217011700A31870A41838161C
-A41800A2163CA2167C16FC150391B5FCA3EC80031500167C163CA2161CA21807A3180E93
-C7FCA4181E181CA2183CA2187CA218F8170117031707171F48486CEB01FFB912F0A3383E
-7DBD3E>I<B91280A300019038C000036C6C48EB007FEF1FC0170F1707A21703A31701A4
-EF00E0A21638A31800A31678A216F81501150791B5FCA3EC8007150115001678A21638A6
-93C8FCAF3801FFE0B612F0A3333E7DBD3B>I<DB3FE0130C912603FFFE131C021F9038FF
-803C913A7FF00FC07C9139FF0001F0D903FC90380078FC4948143DD91FE0141F4948140F
-4948140701FF15034890C8FC491501485A000716005B000F177C5B001F173CA2485AA218
-1C127FA25B95C7FC12FFAB041FB512F0127FA26D9139000FFE00EF03FC123FA27F121FA2
-6C7EA212077F12036C7E7F6C7F6D6C14076D7E6D6C140FD907F8141ED903FEEC3C7C9026
-00FF80EBF83C913A7FF007F01C021FB5EAC00C020391C8FC9138003FF03C427BBF47>I<
-B6D8C01FB512F8A3000101E0C7383FFC0026007F80EC0FF0B3A691B7FCA30280C7120FB3
-A92601FFE0EC3FFCB6D8C01FB512F8A33D3E7DBD44>I<B612F0A3C6EBF000EB3FC0B3B3
-B2EBFFF0B612F0A31C3E7EBD21>I<011FB512FCA3D9000713006E5A1401B3B3A6123FEA
-7F80EAFFC0A44A5A1380D87F005B007C130700385C003C495A6C495A6C495A2603E07EC7
-FC3800FFF8EB3FC026407CBD2F>I<B600C090387FFFFCA3000101E0C7000F138026007F
-80913807FE0018F818E0604D5A4DC7FC173E5F5F4C5A4C5A4C5A4C5A4CC8FC163E5E5E4B
-5A4B5AED07804B7E151F4B7E4B7E15FF913881EFF8913883C7FCEC878791388F03FE9138
-9E01FF14BCDAF8007F4A6D7E5C4A6D7E4A6D7EA2707E707EA2707E707EA2707F717E8417
-3F717E717EA2717E848419802601FFE04A13C0B600C090B6FCA3403E7DBD47>I<B612F8
-A3000101E0C9FC38007F80B3B0EF0380A517071800A45FA35FA25F5F5F4C5A160748486C
-133FB8FCA3313E7DBD39>I<B500C093383FFFF0A300016D93387FF800D8007F18E0D977
-F016EFA3D973F8ED01CFA2D971FCED038FA3D970FEED070FA26E150E80A26E6C141CA36E
-6C1438A26E6C1470A36E6C14E0A26E6CEB01C0A36E6CEB0380A36E6CEB0700A2037F130E
-A36F6C5AA26F6C5AA36F6C5AA25FED07F0A2923803F9C0A36FB45AA26F90C7FCA213F848
-6C147ED807FFEF3FF8B500F8013C011FB512F0A34C3E7DBD53>I<B56C91B512F88080D8
-007F030713006EEC01FC6E6E5A1870EB77FCEB73FEA2EB71FF01707FA26E7E6E7EA26E7E
-6E7EA26E7E6E7EA26E7E6E7FA26F7E6F7EA26F7E6F7EA26F7E6F7EA26F7E6F1380A2EE7F
-C0EE3FE0A2EE1FF0EE0FF8A2EE07FCEE03FEA2EE01FF7013F0A2177F173FA2171F170FA2
-170701F81503487ED807FF1501B500F81400A218703D3E7DBD44>I<ED7FE0913807FFFE
-91391FC03F8091397E0007E04948EB03F8D907F0EB00FE4948147F49486E7E49486E7E49
-C86C7E01FE6F7E00018349150300038348486F7EA248486F7EA2001F188049167F003F18
-C0A3007F18E049163FA300FF18F0AC007F18E06D167FA4003F18C0A26C6CEEFF80A36C6C
-4B1300A26C6C4B5A00035F6D150700015F6C6C4B5A6D5E6D6C4A5A6D6C4A5A6D6C4AC7FC
-6D6C14FED901FCEB03F8D9007FEB0FE091391FC03F80912607FFFEC8FC9138007FE03C42
-7BBF47>I<B712F8EEFF8017E000019039C0003FF86C6C48EB07FCEE01FE707EEF7F80EF
-3FC018E0A2EF1FF0A218F8A818F0A2EF3FE0A218C0EF7F80EFFF004C5AEE07FCEE3FF091
-B612C04CC7FC0280C9FCB3A73801FFE0B612C0A3353E7DBD3E>I<ED7FE0913807FFFE91
-391FC03F8091397F000FE0D901FCEB03F8D907F0EB00FE4948147F49486E7E49486E7E49
-C86C7E498248486F7E49150300038348486F7EA2000F834981001F1880A24848EE7FC0A3
-007F18E0A249163FA200FF18F0AC007F18E0A26D167FA3003F18C0A26C6CEEFF80A3000F
-18006D5D0007DA0F805B6C6C90393FE003FCED70706C6C496C485A6C6C48486C485A017F
-D9800E5BD93F819038061FC0D91FC19038073F80D90FE14AC7FCD907F1EB03FE902601FD
-C013F8903A007EE007E091271FF03FC013180207B5FC9139007FE1E0DB00011438837113
-78A2706C13F0EFFF0318FFA27113E0A37113C0711380711300715AEF01F83D527BBF47>
-I<B712C016FCEEFF800001D9C00013E06C6C48EB1FF0EE07FCEE01FE707E84717EA2717E
-A284A760177F606017FF95C7FCEE01FCEE07F8EE1FE0EEFF8091B500FCC8FC16F0913880
-01FCED003FEE1FC0707E707E83160383160183A383A484A4F0C004190EA28218E0057F13
-1E2601FFE0161CB600C0EB3FF094381FF83805071370CA3801FFE09438003F803F407DBD
-43>I<D907FC130C90391FFF801C017FEBF03C3901FC03F83A03F0007E7CD807C0EB1FFC
-4848130F001F140748C71203003E1401007E1400A2007C157C12FCA2163CA36C151CA27E
-A26C6C14007F7FEA3FF8EBFF806C13F86CEBFF806C14F06C14FC6C14FF6C15C0013F14E0
-010714F0EB007F020713F89138007FFC150FED07FE15031501ED00FFA200E0157FA3163F
-A27EA3163E7E167E6C157C6C15FC6C15F86D13016DEB03F06DEB07E0D8F9FCEB0FC03AF0
-7F803F8090391FFFFE00D8E00713F839C0007FC028427BBF33>I<003FB91280A3903AF0
-007FE001018090393FC0003F48C7ED1FC0007E1707127C00781703A300701701A548EF00
-E0A5C81600B3B14B7E4B7E0107B612FEA33B3D7DBC42>I<B600C090B512F8A3000101E0
-C70007130026007F80EC01FC715A1870B3B3A4013F16F06E5DA21701011F5E80010F1503
-6E4A5A010793C7FC6D6C5C6D6C141E6D6C5C027F14F86E6C485A91390FF00FE00203B512
-80020049C8FCED1FF03D407DBD44>I<B691380FFFFEA3000301E0020113E06C01809138
-007F806CEF3F00017F163E181C6E153C013F1638A26E1578011F1670A26D6C5DA26E1401
-01075EA26E140301035EA26D6C4AC7FCA2806D150EA26F131E027F141CA26F133C023F14
-38A26E6C5BA26F13F0020F5CA2EDF80102075CA26E6C485AA2EDFE07020191C8FCA26F5A
-6E130EA2ED7F9CA216DCED3FF8A36F5AA36F5AA26F5AA36F5A3F407EBD44>I<B500FE01
-7FB5D88007B5FCA3000301C0010101E0C713F86C90C849EC3FE07148EC0F807E7215006E
-143F017F190E84A26D6C60A24D7E6D6C60A2EFE7F86D6C60A2933801C3FC6E18F0010761
-04037F6E0281140101036104077F17006D6C4D5AA2040EEB7F806D6C4DC7FCA24CEB3FC0
-DA7F80160EA24CEB1FE003C0161E023F171C047814F0DBE070010F133C021F173804F014
-F84C1307DA0FF05EA2DBF1C0EB03FCDA07F95EA2DBFB80EB01FEDA03FF6F5AA293C8FCA2
-6E5FA24B157F020094C8FCA24B81037C153EA20378151E0338151C58407EBD5D>I<007F
-B5D8C003B512E0A3C649C7EBFC00D93FF8EC3FE06D48EC1F806D6C92C7FC171E6D6C141C
-6D6C143C5F6D6C14706D6D13F04C5ADA7FC05B023F13036F485ADA1FF090C8FC020F5BED
-F81E913807FC1C163C6E6C5A913801FF7016F06E5B6F5AA26F7E6F7EA28282153FED3BFE
-ED71FF15F103E07F913801C07F0203804B6C7EEC07004A6D7E020E6D7E5C023C6D7E0238
-6D7E14784A6D7E4A6D7F130149486E7E4A6E7E130749C86C7E496F7E497ED9FFC04A7E00
-076DEC7FFFB500FC0103B512FEA33F3E7EBD44>I<B66C0103B51280A3000101F0C8EBF8
-006C6C48ED3FC0725A013F041EC7FC6D7E606D6C15386D6C1578606D6C5D6E14016D5E6D
-6D1303606E6C49C8FC6E6C5B170E6E6C131E171C6E6C5B6E6C137817706E6C13F06F5B6E
-13016EEB83C05FED7FC7DB3FE7C9FC16EFED1FFE5E150F6F5AB3A4ED1FFC020FB512FCA3
-413E7FBD44>I<003FB712F8A391C7EA1FF013F801E0EC3FE00180EC7FC090C8FC003EED
-FF80A2003C4A1300007C4A5A12784B5A4B5AA200704A5AA24B5A4B5AA2C8485A4A90C7FC
-A24A5A4A5AA24A5AA24A5A4A5AA24A5A4A5AA24990C8FCA2495A4948141CA2495A495AA2
-495A495A173C495AA24890C8FC485A1778485A484815F8A24848140116034848140F4848
-143FED01FFB8FCA32E3E7BBD38>I<EAFFFCA4EAF000B3B3B3B3ABEAFFFCA40E5B77C319>
-I<486C13C00003130101001380481303000EEB070048130E0018130C0038131C00301318
-0070133800601330A300E01370481360A400CFEB678039FFC07FE001E013F0A3007F133F
-A2003F131F01C013E0390F0007801C1C73BE2D>I<EAFFFCA4EA003CB3B3B3B3ABEAFFFC
-A40E5B7FC319>I<1318133C137E13FF3801E7803803C3C0380781E0380F00F0001E1378
-48133C48131E48130F00601306180D76BD2D>I<EA0180120313005A120E5A1218123812
-3012701260A312E05AA412CFEAFFC013E0A3127FA2123F13C0EA0F000B1C7ABE19>96
-D<EB0FF8EBFFFE3903F01F8039078007E0000F6D7E9038E001F8D81FF07F6E7EA3157F6C
-5AEA0380C8FCA4EC1FFF0103B5FC90381FF87FEB7F803801FC00EA07F8EA0FE0485A485A
-A248C7FCEE038012FEA315FFA3007F5BEC03BF3B3F80071F8700261FC00E13CF3A07F03C
-0FFE3A01FFF807FC3A003FC001F0292A7DA82D>I<EA01FC12FFA3120712031201B1EC03
-FC91381FFF8091387C07E09039FDE001F09039FFC000FC4A137E91C77E49158049141F17
-C0EE0FE0A217F0A2160717F8AA17F0A2160FA217E0161F17C06D1580EE3F006D5C6E13FE
-9039F3C001F89039F1E003F09039E0780FC09026C03FFFC7FCC7EA07F82D407EBE33>I<
-49B4FC010F13E090383F00F8017C131E4848131F4848137F0007ECFF80485A5B121FA248
-48EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC01C07F001F140316806C6C1307
-6C6C14000003140E6C6C131E6C6C137890383F01F090380FFFC0D901FEC7FC222A7DA828
->I<ED01FC15FFA3150715031501B114FF010713E190381F80F990387E003D49131FD803
-F81307485A49130348481301121F123F5B127FA290C7FCA25AAA7E7FA2123FA26C7E000F
-14037F000714076C6C497E6C6C497ED8007C017913F890383F01F190380FFFC1903A01FE
-01FC002D407DBE33>I<EB01FE90380FFFC090383F03F09038FC01F848486C7E4848137E
-48487F000F158049131F001F15C04848130FA2127F16E090C7FCA25AA290B6FCA290C9FC
-A67EA27F123F16E06C7E1501000F15C06C6C13036DEB07806C6C1400C66C131E017E5B90
-381F80F8903807FFE0010090C7FC232A7EA828>I<EC1FC0EC7FF8903801F83C903807E0
-7E90380FC0FFEB1FC1EB3F811401137FEC00FE01FE137C1500AEB6FCA3C648C7FCB3AE48
-7E007F13FFA320407EBF1C>I<167C903903F801FF903A1FFF078F8090397E0FDE1F9038
-F803F83803F001A23B07E000FC0600000F6EC7FC49137E001F147FA8000F147E6D13FE00
-075C6C6C485AA23901F803E03903FE0FC026071FFFC8FCEB03F80006CAFC120EA3120FA2
-7F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC0001FFC48C7EA01FE003E14004815
-7E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C495AD803F0EB0FC0D800FE017F
-C7FC90383FFFFC010313C0293D7EA82D>I<EA01FC12FFA3120712031201B1EC01FE9138
-07FFC091381E07E091387803F09138E001F8D9FDC07F148001FF6D7E91C7FCA25BA25BB3
-A6486C497EB5D8F87F13FCA32E3F7DBE33>I<EA01E0EA07F8A2487EA46C5AA2EA01E0C8
-FCACEA01FC127FA3120712031201B3AC487EB512F0A3143E7DBD1A>I<1478EB01FEA2EB
-03FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F147FB3B3A5123E127F38FF807E14
-FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF803801FC00185185BD1C>I<EA01FC
-12FFA3120712031201B292B51280A392383FFC0016E0168093C7FC153C5D5D4A5AEC07C0
-4A5A4AC8FC143E147F4A7E13FD9038FFDFC0EC9FE0140F496C7E01FC7F496C7E1401816E
-7E81826F7E151F826F7EA282486C14FEB539F07FFFE0A32B3F7EBE30>I<EA01FC12FFA3
-120712031201B3B3B1487EB512F8A3153F7DBE1A>I<2701F801FE14FF00FF902707FFC0
-0313E0913B1E07E00F03F0913B7803F03C01F80007903BE001F87000FC2603F9C06D487F
-000101805C01FBD900FF147F91C75B13FF4992C7FCA2495CB3A6486C496CECFF80B5D8F8
-7FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807FFC091381E07E091387803F0
-00079038E001F82603F9C07F0001138001FB6D7E91C7FC13FF5BA25BB3A6486C497EB5D8
-F87F13FCA32E287DA733>I<14FF010713E090381F81F890387E007E01F8131F4848EB0F
-804848EB07C04848EB03E0000F15F04848EB01F8A2003F15FCA248C812FEA44815FFA96C
-15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB1F80D800
-7EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D>I<3901FC03FC00FF90381F
-FF8091387C0FE09039FDE003F03A07FFC001FC6C496C7E6C90C7127F49EC3F805BEE1FC0
-17E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F6E13FE9138C001
-F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512F8A32D3A7EA733
->I<02FF131C0107EBC03C90381F80F090397F00387C01FC131CD803F8130E4848EB0FFC
-150748481303121F485A1501485AA448C7FCAA6C7EA36C7EA2001F14036C7E15076C6C13
-0F6C7E6C6C133DD8007E137990383F81F190380FFFC1903801FE0190C7FCAD4B7E92B512
-F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1FE3807F9C100031381EA01FB
-1401EC00FC01FF1330491300A35BB3A5487EB512FEA31F287EA724>I<90383FC0603901
-FFF8E03807C03F381F000F003E1307003C1303127C0078130112F81400A27E7E7E6D1300
-EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F13E0010313F0EB001FEC0FF8
-00E01303A214017E1400A27E15F07E14016C14E06CEB03C0903880078039F3E01F0038E0
-FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FCA2120112031207001FB512C0
-B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03013F138090381F8700EB07FE
-EB01F81B397EB723>I<D801FC14FE00FF147FA3000714030003140100011400B3A51501
-A31503120015076DEB06FF017E010E13806D4913FC90381FC078903807FFE00100903880
-FE002E297DA733>I<B539E00FFFE0A32707FE000313006C48EB00FC5E00015D7F00005D
-A26D13016D5CA26D6C485AA2ECC007011F91C7FCA290380FE00EA2ECF01E0107131CA26D
-6C5AA2ECFC7801011370A2ECFEF001005BA2EC7FC0A36E5AA26EC8FCA3140E2B287EA630
->I<B53BC3FFFE03FFF8A3290FFE003FE00013C06C486D48EB3F806C4817006D010F141E
-00016F131C15076D163C00004A6C1338A2017F5E4B7E151DD93F805DED3DFC1538D91FC0
-4A5AED78FE9238707E03D90FE0017F5BEDE03F02F0140701070387C7FC9138F1C01F02F9
-148F010315CE9138FB800F02FF14DE6D15FCED00076D5DA24A1303027E5CA2027C130102
-3C5C023813003D287EA642>I<B539F01FFFE0A30003D9C00F1300C690388007F8D97F00
-13E002805BD93FC05B011F49C7FC90380FE00EECF01E6D6C5A01035B6D6C5A6E5AEB00FF
-6E5A6E5A81141F814A7E81147BECF1FC903801E1FEECC0FF01037F49486C7ED90F007F01
-1E6D7E013E130F496D7E01FC80486C80000F4A7EB539803FFFF8A32D277FA630>I<B539
-E00FFFE0A32707FE000313006C48EB01FC6F5A00015D7F00005DA2017F495AA2EC800301
-3F5CA26D6C48C7FCA26E5A010F130EA26D6C5AA2ECF83C01031338A26D6C5AA2ECFEF001
-005BA2EC7FC0A36E5AA36EC8FCA2140EA2141E141C143C1438A2147800181370127EB45B
-A2495AA248485AD87E07C9FCEA780EEA3C3CEA1FF8EA07E02B3A7EA630>I<001FB61280
-A2EBE0000180140049485A001E495A121C4A5A003C495A141F00385C4A5A147F5D4AC7FC
-C6485AA2495A495A130F5C495A90393FC00380A2EB7F80EBFF005A5B4848130712074914
-00485A48485BA248485B4848137F00FF495A90B6FCA221277EA628>I<B812F0A22C0280
-982D>I<BE12C0A25A0280985B>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fv cmbx12 20.736 9
-/Fv 9 117 df<B912E0B033107EAE41>45 D<96267FFFE01670063FB6ED01F80503B700
-F01403053F04FC14074CB96C130F040706E0131F043F72133F93BA00FC137F0303DC0007
-6D13FF030F03C09039003FFF814B02FCC8000713C3037F02E0030113F792B600806F6CB5
-FC02034ACA121F4A02F8834A02E0834A4A1701027F4A8391B548CC7E494A85495C4C8549
-88494A85494A85495C8A4991CDFC90B54886A2484A1B7FA2481E3F5D481E1F5D5A1F0FA2
-485CA3481E075DA2795A489BC9FCA45DA2B6FCB27EA26F0403BA12C0A47EA3816C96C800
-0302F8C7FCA36C80A36C80A27E817E817E817F6D80827F6D806D806D80826D6E606D806E
-80021F6E5F6E02F05F6E806E02FE5F0200DAFFC05E6F02F04BB6FC031F02FE030713CF6F
-DAFFE0021F138703039226FF8003B51201030093B6EAFC00043F4E133F040706E0131F04
-014E1307DC003F4CC71201050304F8EC0070DD003F038092C8FCDE007F01F0CCFC827A75
-F798>71 D<BA12F8A8C7001F02C0C7FCB3B3B3B3B3ACBA12F8A83D767BF548>73
-D<B800C051B8128071637163A37163A27163C7003F57C8FC71F33FBFA203EF6DF37F3FA3
-03E76E1AFEA203E36EF101FCA203E16EF103F8A203E06EF107F0A3706DF10FE0A2706DF1
-1FC0A2706DF13F80A2706DF17F00A3706E18FEA2706E4D5AA2706E4D5AA3706E4D5AA271
-6D4D5AA2716D4D5AA2716D4D5AA3716D4DC7FCA2716E16FEA2716E4B5AA2716E4B5AA371
-6E4B5AA2726D4B5AA2726D4B5AA3726D4B5AA2726D4BC8FCA2726E14FEA2726E495AA372
-6E495AA2726E495AA2736D495AA2736D495AA3736D495AA2736D49C9FCA273EC80FEA2F4
-81FC7314C1A273ECE3F8A273ECF7F0A274EBFFE0A3745CA2745CA27491CAFCA2745BA374
-5BA2902603FFFE705BB800F897BA1280745BA2755AA3755A755AA97679F5B8>77
-D<BC12FCF3FFF01CFF1DE01DFC1DFF1EC08AC7003F91C8000115F8E0000F80090180756C
-6D7E76801C0F76808B7680888B7680A28BA2892080A420C0AB2080A49AB61200A267A267
-6467525C64670A1F5C525C5291C7FC51B55A090F14F850B65A94BA12C09BC8FC1DFC1DF0
-9AC9FC1CF809FCCAFC0580CEFCB3B3A8BA12E0A872767AF584>80
-D<EB01FCEB07FF011F13C0497F497F90B57EA24880A24880A76C5CA26C5CA26D5B6D5B6D
-5B010790C8FCEB01FC90CAFCB2903801FFFC007FB5FCA8C67E131F7FB3B3B3A5B81280A8
-297979F835>105 D<902601FFF891380FFFE0B692B512FE05036E7E050F15E0053F15F8
-4D81932701FFF01F7F4CD900077FDC07FC6D80C66CDA0FF06D80011FDA1FC07F6D4A4882
-4CC8FC047E6F7F5EEDF9F85E03FB707F5E15FF5EA25EA293C9FCA45DB3B3A6B8D8E003B8
-1280A8614E79CD6C>110 D<902601FFF8EB07FEB691383FFFC094B512F00403804C14FE
-4C8093261FFC3F138093263FE07F13C0DC7F80B5FCC66C5D011FDAFE0114E06DEBF9FC16
-F815FB16F016E015FF16C07114C05E72138095381FFE0093C76C5AF001E095C8FCA25DA6
-5DB3B3A2B812F8A8434E7ACD4F>114 D<15FFA75CA55CA45CA25CA25CA25CA25C91B5FC
-A25B5B5B131F5B90B9FC120FBAFCA6D8000791C9FCB3B3A3F01FE0AE183F7014C07F187F
-7014806D16FF826D4B13006E6D485AEEFE0F6E90B55A020F5D6E5D020115C06E6C5C031F
-49C7FC030113F03B6E7CEC4B>116 D E
-%EndDVIPSBitmapFont
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-
-%%EndSetup
-%%Page: 1 1
-1 0 bop 150 1318 a Fv(GIMP-Prin)-5 b(t)p 150 1385 3600
-34 v 2515 1481 a Fu(The)30 b(prin)m(t)f(plugin)f(for)i(the)h(GIMP)2529
-1589 y(V)-8 b(ersion)30 b(4.2.7,)j(27)e(Octob)s(er)f(2001)150
-5068 y Ft(The)44 b(GIMP-Prin)l(t)h(Pro)7 b(ject)p 150
-5141 3600 17 v eop
-%%Page: 2 2
-2 1 bop 150 4261 a Fu(Cop)m(yrigh)m(t)680 4258 y(c)655
-4261 y Fs(\015)108 b Fu(2001)j(Mic)m(hael)d(Sw)m(eet)h(\()p
-Fr(mike@easysw.com)p Fu(\))c(and)j(Rob)s(ert)g(Kra)m(witz)150
-4371 y(\()p Fr(rlk@alum.mit.edu)p Fu(\))150 4505 y(P)m(ermission)30
-b(is)i(gran)m(ted)h(to)f(mak)m(e)i(and)d(distribute)f(v)m(erbatim)i
-(copies)g(of)g(this)f(man)m(ual)h(pro)m(vided)f(the)150
-4615 y(cop)m(yrigh)m(t)g(notice)f(and)g(this)f(p)s(ermission)f(notice)i
-(are)h(preserv)m(ed)f(on)h(all)e(copies.)150 4749 y(P)m(ermission)22
-b(is)g(gran)m(ted)j(to)f(cop)m(y)g(and)f(distribute)e(mo)s(di\014ed)h
-(v)m(ersions)h(of)g(this)g(man)m(ual)g(under)f(the)h(con-)150
-4859 y(ditions)28 b(for)i(v)m(erbatim)f(cop)m(ying,)i(pro)m(vided)d
-(that)j(the)f(en)m(tire)g(resulting)e(deriv)m(ed)h(w)m(ork)h(is)f
-(distributed)150 4969 y(under)g(the)h(terms)h(of)f(a)h(p)s(ermission)c
-(notice)k(iden)m(tical)e(to)i(this)e(one.)150 5103 y(P)m(ermission)i
-(is)i(gran)m(ted)g(to)h(cop)m(y)g(and)f(distribute)d(translations)i(of)
-i(this)e(man)m(ual)g(in)m(to)h(another)g(lan-)150 5213
-y(guage,)d(under)e(the)g(ab)s(o)m(v)m(e)i(conditions)d(for)i(mo)s
-(di\014ed)d(v)m(ersions,)j(except)g(that)h(this)d(p)s(ermission)f
-(notice)150 5322 y(ma)m(y)31 b(b)s(e)f(stated)h(in)e(a)i(translation)e
-(appro)m(v)m(ed)i(b)m(y)f(the)h(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8
-b(oundation.)p eop
-%%Page: -1 3
--1 2 bop 3723 -116 a Fq(i)150 299 y Fp(Short)53 b(Con)l(ten)l(ts)150
-540 y Fq(Preface)34 b Fo(.)19 b(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h
-(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)65 b
-Fq(1)150 681 y(GNU)32 b(GENERAL)h(PUBLIC)h(LICENSE)41
-b Fo(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f
-(.)h(.)f(.)g(.)72 b Fq(2)150 822 y(Cop)m(ying)33 b(summary)19
-b Fo(.)g(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)
-g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)51
-b Fq(9)150 963 y(1)156 b(Ov)m(erview)20 b Fo(.)g(.)g(.)f(.)h(.)f(.)g(.)
-h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f
-(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)51 b Fq(10)150
-1104 y(2)156 b(Using)32 b(libgimpprin)m(t)g Fo(.)20 b(.)f(.)h(.)f(.)h
-(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)67 b Fq(11)150 1245 y(3)156 b(In)m(tegrating)32
-b(libgimpprin)m(t)15 b Fo(.)g(.)20 b(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)
-h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)46
-b Fq(12)150 1386 y(4)156 b(F)-8 b(unctions)12 b Fo(.)19
-b(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f
-(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)
-43 b Fq(15)150 1528 y(5)156 b(Programs)15 b Fo(.)j(.)i(.)f(.)h(.)f(.)g
-(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)
-f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)46 b
-Fq(26)150 1669 y(6)156 b(Rep)s(orting)31 b(Bugs)41 b
-Fo(.)19 b(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)71
-b Fq(32)150 1810 y(7)156 b(App)s(endices)38 b Fo(.)20
-b(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f
-(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)69
-b Fq(33)150 1951 y(App)s(endix)33 b(A)99 b(Dithering)26
-b Fo(.)19 b(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h
-(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)59
-b Fq(34)150 2092 y(App)s(endix)33 b(B)103 b(W)-8 b(ea)m(ving)33
-b(for)f(inkjet)g(prin)m(ters)f Fo(.)19 b(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)
-h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)61 b Fq(41)150 2233 y(App)s(endix)33
-b(C)102 b(ESC/P2)21 b Fo(.)g(.)f(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)
-h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f
-(.)53 b Fq(61)150 2374 y(App)s(endix)33 b(D)97 b(Adding)33
-b(a)f(new)h(prin)m(ter)22 b Fo(.)d(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g
-(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)53 b Fq(74)150
-2516 y(Data)32 b(T)m(yp)s(e)i(and)e(V)-8 b(ariable)31
-b(Index)11 b Fo(.)21 b(.)e(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h
-(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)42 b Fq(85)150
-2657 y(F)-8 b(unction)32 b(and)g(Macro)h(Index)i Fo(.)20
-b(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f
-(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)65 b Fq(86)150 2798
-y(Concept)34 b(Index)42 b Fo(.)19 b(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f
-(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)
-f(.)h(.)f(.)g(.)h(.)f(.)h(.)72 b Fq(89)p eop
-%%Page: -2 4
--2 3 bop 3699 -116 a Fu(ii)150 299 y Fp(T)-13 b(able)54
-b(of)g(Con)l(ten)l(ts)150 641 y Ft(Preface)19 b Fo(.)h(.)f(.)h(.)f(.)h
-(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)63
-b Ft(1)150 911 y(GNU)45 b(GENERAL)g(PUBLIC)g(LICENSE)31
-b Fo(.)19 b(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)75 b Ft(2)449
-1048 y Fu(Pream)m(ble)16 b Fn(.)e(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)45 b Fu(2)449 1157 y(TERMS)29
-b(AND)j(CONDITIONS)d(F)m(OR)h(COPYING,)h(DISTRIBUTION)631
-1267 y(AND)g(MODIFICA)-8 b(TION)24 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Fu(3)449 1377
-y(Ho)m(w)31 b(to)g(Apply)e(These)h(T)-8 b(erms)30 b(to)h(Y)-8
-b(our)31 b(New)f(Programs)16 b Fn(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)46 b Fu(7)150 1619 y Ft(Cop)l(ying)g(summary)12
-b Fo(.)19 b(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g
-(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)56
-b Ft(9)150 1889 y(1)135 b(Ov)l(erview)14 b Fo(.)20 b(.)g(.)f(.)h(.)f(.)
-g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h
-(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)58 b Ft(10)150
-2159 y(2)135 b(Using)45 b(libgimpprin)l(t)14 b Fo(.)21
-b(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)g(.)h(.)59 b Ft(11)449 2296 y Fu(2.1)92
-b(Co)s(de)30 b(prerequisites)10 b Fn(.)j(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)39 b Fu(11)449
-2405 y(2.2)92 b(Linking)28 b(with)h(libgimpprin)m(t)12
-b Fn(.)e(.)15 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41
-b Fu(11)150 2648 y Ft(3)135 b(In)l(tegrating)47 b(libgimpprin)l(t)11
-b Fo(.)20 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f
-(.)g(.)h(.)56 b Ft(12)449 2785 y Fu(3.1)92 b Fr(gimpprint-config)17
-b Fn(.)10 b(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)46 b Fu(12)449 2894 y(3.2)92 b Fr(make)22
-b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)52
-b Fu(13)449 3004 y(3.3)92 b Fr(autoconf)14 b Fn(.)f(.)i(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)43 b Fu(13)449 3113 y(3.4)92 b Fr(automake)14
-b Fn(.)f(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)43 b Fu(13)150
-3356 y Ft(4)135 b(F)-11 b(unctions)36 b Fo(.)19 b(.)h(.)f(.)h(.)f(.)h
-(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)
-f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)82 b Ft(15)449 3493 y
-Fu(4.1)92 b(Main)30 b(functions)14 b Fn(.)g(.)h(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)43
-b Fu(15)449 3602 y(4.2)92 b Fr(stp_vars_t)28 b Fu(functions)e
-Fn(.)15 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-58 b Fu(15)449 3712 y(4.3)92 b(Dither)30 b(functions)10
-b Fn(.)j(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)39 b Fu(21)449 3822 y(4.4)92 b(Options)29
-b(functions)23 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)53 b Fu(21)449 3931 y(4.5)92
-b(P)m(ap)s(er)30 b(functions)21 b Fn(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)50
-b Fu(21)449 4041 y(4.6)92 b(Prin)m(ter)29 b(functions)18
-b Fn(.)c(.)h(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)48 b Fu(22)449 4150 y(4.7)92 b(Settings)30
-b(functions)22 b Fn(.)13 b(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51 b Fu(24)449 4260 y(4.8)92
-b(V)-8 b(ersion)30 b(functions)13 b Fn(.)g(.)i(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)42
-b Fu(24)748 4369 y(4.8.1)93 b(V)-8 b(ersion)30 b(macros)20
-b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49
-b Fu(25)748 4479 y(4.8.2)93 b(V)-8 b(ersion)30 b(v)-5
-b(ariables)27 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-58 b Fu(25)p eop
-%%Page: -3 5
--3 4 bop 3674 -116 a Fu(iii)150 83 y Ft(5)135 b(Programs)38
-b Fo(.)19 b(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h
-(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)82
-b Ft(26)449 220 y Fu(5.1)92 b(The)30 b(GIMP)g(Prin)m(t)g(plugin)9
-b Fn(.)k(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)38
-b Fu(26)748 330 y(5.1.1)93 b(Preview)12 b Fn(.)i(.)h(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41
-b Fu(26)748 439 y(5.1.2)93 b(Prin)m(ter)29 b(Settings)e
-Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)56
-b Fu(27)748 549 y(5.1.3)93 b(P)m(osition)9 b Fn(.)14
-b(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)39 b Fu(28)748 658 y(5.1.4)93 b(Scaling)27
-b Fn(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)58 b Fu(28)748 768 y(5.1.5)93 b(Image)31
-b(Settings)26 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)56 b Fu(29)1047 878 y(5.1.5.1)93 b(Adjust)30
-b(Output)13 b Fn(.)g(.)i(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)42 b Fu(29)1047
-987 y(5.1.5.2)93 b(Dither)30 b(Algorithm)25 b Fn(.)15
-b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)55 b Fu(30)748 1097 y(5.1.6)93 b(Action)30
-b(Buttons)15 b Fn(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)44 b Fu(31)449 1206 y(5.2)92 b(Ghostscript)30 b(driv)m(er)15
-b Fn(.)e(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)44 b Fu(31)449 1316 y(5.3)92 b(CUPS)29
-b(driv)m(er)15 b Fn(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)44 b
-Fu(31)150 1538 y Ft(6)135 b(Rep)t(orting)46 b(Bugs)12
-b Fo(.)19 b(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f
-(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)57 b Ft(32)150
-1788 y(7)135 b(App)t(endices)13 b Fo(.)18 b(.)i(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)
-f(.)h(.)f(.)h(.)f(.)58 b Ft(33)150 2038 y(App)t(endix)44
-b(A)134 b(Dithering)25 b Fo(.)20 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h
-(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)69 b Ft(34)150
-2287 y(App)t(endix)44 b(B)134 b(W)-11 b(ea)l(ving)46
-b(for)f(inkjet)g(prin)l(ters)10 b Fo(.)21 b(.)e(.)h(.)f(.)h(.)55
-b Ft(41)449 2424 y Fu(B.1)92 b(In)m(tro)s(duction)11
-b Fn(.)j(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40 b Fu(41)449 2534
-y(B.2)92 b(W)-8 b(ea)m(ving)32 b(algorithms)16 b Fn(.)e(.)h(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)45
-b Fu(42)748 2644 y(B.2.1)92 b(Simple)28 b(w)m(ea)m(ving)j(algorithms)16
-b Fn(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)46 b Fu(43)748 2753 y(B.2.2)92 b(P)m(erfect)32
-b(w)m(ea)m(ving)21 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)50 b Fu(44)748 2863 y(B.2.3)92 b(W)-8 b(ea)m(ving)32
-b(collisions)15 b Fn(.)d(.)j(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)44
-b Fu(47)748 2972 y(B.2.4)92 b(What)32 b(mak)m(es)f(a)g(\\p)s(erfect")g
-(w)m(ea)m(v)m(e?)19 b Fn(.)e(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)48 b Fu(48)748 3082 y(B.2.5)92 b(Ov)m(ersampling)17
-b Fn(.)d(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)46
-b Fu(57)150 3304 y Ft(App)t(endix)e(C)134 b(ESC/P2)35
-b Fo(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h
-(.)f(.)h(.)f(.)g(.)h(.)f(.)79 b Ft(61)449 3441 y Fu(C.1)91
-b(In)m(tro)s(duction)29 b(to)i(ESC/P2)11 b Fn(.)k(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40 b Fu(61)449 3551 y(C.2)91
-b(Standard)29 b(commands)24 b Fn(.)15 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Fu(61)449 3660 y(C.3)91
-b(Remote)32 b(Mo)s(de)e(Commands)23 b Fn(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)52 b Fu(66)449 3770 y(C.4)91 b(Appropriate)29
-b(Remote)j(Commands)22 b Fn(.)13 b(.)j(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51
-b Fu(72)150 3992 y Ft(App)t(endix)44 b(D)134 b(Adding)44
-b(a)i(new)f(prin)l(ter)14 b Fo(.)20 b(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f
-(.)g(.)59 b Ft(74)449 4129 y Fu(D.1)92 b(`)p Fr(printers.xml)p
-Fu(')10 b Fn(.)i(.)j(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)39 b Fu(74)449 4239 y(D.2)92
-b(The)30 b(driv)m(er)f(\014le)17 b Fn(.)d(.)h(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)46
-b Fu(75)449 4348 y(D.3)92 b(Epson)29 b(inkjet)h(prin)m(ters)10
-b Fn(.)k(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)39 b Fu(75)449 4458 y(D.4)92 b(T)-8 b(uning)29 b(the)h(prin)m(ter)17
-b Fn(.)d(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)47 b Fu(81)449 4568 y(D.5)92 b(Canon)30 b(inkjet)f(prin)m
-(ters)24 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)54 b Fu(83)150 4790 y Ft(Data)46 b(T)l(yp)t(e)e(and)h(V)-11
-b(ariable)46 b(Index)21 b Fo(.)e(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)
-g(.)h(.)f(.)h(.)f(.)66 b Ft(85)150 5040 y(F)-11 b(unction)44
-b(and)h(Macro)f(Index)11 b Fo(.)20 b(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)
-g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)56 b Ft(86)150
-5289 y(Concept)45 b(Index)21 b Fo(.)e(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)
-f(.)h(.)f(.)h(.)65 b Ft(89)p eop
-%%Page: 1 6
-1 5 bop 150 -116 a Fu(Preface)3264 b(1)150 299 y Fp(Preface)275
-533 y Fu(This)39 b(man)m(ual)h(do)s(cumen)m(ts)h(the)g(use)g(of)h(the)f
-(GIMP-Prin)m(t)g(pac)m(k)-5 b(age,)46 b(fo)s(cusing)39
-b(mainly)h(on)h(the)150 643 y(libgimpprin)m(t)32 b(library)h(that)k(is)
-e(the)h(core)h(of)f(GIMP-Prin)m(t.)57 b(P)m(arts)37 b(of)f(the)g(man)m
-(ual)g(whic)m(h)f(describ)s(e)150 752 y(the)26 b(use)f(of)h
-(libgimpprin)m(t)c(are)k(aimed)f(primarily)d(at)27 b(programmers,)f
-(and)f(do)h(assume)g(that)g(the)g(reader)150 862 y(is)j(familiar)f
-(with)g(C)i(programming,)f(and)g(using)g(standard)g(programming)f(to)s
-(ols)i(on)g(GNU)h(or)f(UNIX)150 971 y(systems.)52 b(Other)34
-b(parts)g(of)g(the)h(man)m(ual)e(do)s(cumen)m(t)h(the)h(use)f(of)g(the)
-h(programs)e(that)i(mak)m(e)h(up)d(the)150 1081 y(GIMP-Prin)m(t)f(pac)m
-(k)-5 b(age,)34 b(and)e(assume)f(no)h(kno)m(wledge)g(other)g(than)g
-(the)g(basics)f(of)i(using)d(a)i(shell)f(and)150 1191
-y(editor.)275 1325 y(The)39 b(b)s(est)h(w)m(a)m(y)h(to)g(learn)e(ho)m
-(w)h(to)h(use)f(libgimpprin)m(t)c(in)j(y)m(our)h(o)m(wn)g(programs)g
-(is)f(to)i(read)f(the)150 1435 y(man)m(ual)25 b(from)g(start)h(to)g
-(\014nish,)f(using)f(the)h(examples)h(giv)m(en)f(in)f(the)i(text)h(to)f
-(learn)f(ho)m(w)g(it)g(w)m(orks.)39 b(The)150 1544 y(bulk)29
-b(of)h(the)h(man)m(ual)e(can)i(b)s(e)f(used)f(as)i(a)g(reference)g
-(once)g(one)f(understands)f(the)h(basics.)275 1679 y(The)e(man)m(ual)g
-(is)f(split)g(in)m(to)i(sev)m(eral)g(parts)f(for)g(the)h(programmer.)40
-b(It)28 b(starts)h(with)f(a)h(simple)d(usage)150 1788
-y(example)e(of)g(ho)m(w)g(to)h(link)d(a)i(program)g(with)f(libgimpprin)
-m(t,)e(then)j(ho)m(w)g(to)h(in)m(tegrate)g(this)e(in)m(to)h(pac)m(k)-5
-b(age)150 1898 y(build)28 b(scripts,)i(using)g Fr(make)p
-Fu(,)g Fr(autoconf)f Fu(and)i Fr(automake)p Fu(.)40 b(This)30
-b(is)g(follo)m(w)m(ed)h(b)m(y)g(a)g(detailed)f(function)150
-2007 y(reference,)h(including)c(descriptions)h(of)j(all)e(the)i(data)g
-(t)m(yp)s(es)f(used.)275 2142 y(F)-8 b(or)31 b(the)g(end-user,)e(there)
-i(is)f(a)h(section)g(on)f(all)f(of)i(the)g(programs)f(that)h(come)h
-(with)d(GIMP-Prin)m(t,)150 2252 y(including)e(the)k(GIMP)f
-Fr(print)f Fu(plugin,)f(and)i(the)g(CUPS)g(and)g(Ghostscript)g(driv)m
-(ers.)275 2386 y(The)c(app)s(endices)g(at)i(the)g(end)f(of)g(the)h(man)
-m(ual)f(detail)f(the)i(dither)e(and)h(w)m(ea)m(v)m(e)i(algorithms)e
-(used)f(in)150 2496 y(libgimpprin)m(t,)g(the)31 b(ESC/P2)f(prin)m(ter)f
-(con)m(trol)i(language)f(used)g(in)f(Epson)g(prin)m(ters)g(and)h(ho)m
-(w)g(to)i(add)150 2605 y(supp)s(ort)d(for)h(a)h(new)e(prin)m(ter)g(to)j
-(libgimpprin)m(t.)1182 2934 y(W)-8 b(e)31 b(hop)s(e)f(y)m(ou)h(enjo)m
-(y)g(using)d(GIMP-Prin)m(t!)1413 3044 y(|The)i(GIMP-Prin)m(t)g(pro)5
-b(ject)p eop
-%%Page: 2 7
-2 6 bop 150 -116 a Fu(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052
-b(2)150 299 y Fp(GNU)54 b(GENERAL)g(PUBLIC)f(LICENSE)1537
-564 y Fu(V)-8 b(ersion)30 b(2,)h(June)f(1991)390 720
-y(Cop)m(yrigh)m(t)842 717 y(c)817 720 y Fs(\015)g Fu(1989,)j(1991)f(F)
--8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)30 b(Inc.)390
-824 y(675)i(Mass)e(Av)m(e,)i(Cam)m(bridge,)e(MA)h(02139,)h(USA)390
-1032 y(Ev)m(ery)m(one)f(is)f(p)s(ermitted)f(to)i(cop)m(y)g(and)f
-(distribute)e(v)m(erbatim)i(copies)390 1135 y(of)h(this)e(license)g(do)
-s(cumen)m(t,)i(but)e(c)m(hanging)i(it)f(is)f(not)i(allo)m(w)m(ed.)150
-1462 y Ft(Pream)l(ble)275 1683 y Fu(The)39 b(licenses)h(for)g(most)h
-(soft)m(w)m(are)g(are)g(designed)e(to)i(tak)m(e)h(a)m(w)m(a)m(y)h(y)m
-(our)d(freedom)g(to)h(share)g(and)150 1793 y(c)m(hange)g(it.)70
-b(By)40 b(con)m(trast,)k(the)c(GNU)h(General)f(Public)e(License)i(is)f
-(in)m(tended)g(to)h(guaran)m(tee)i(y)m(our)150 1902 y(freedom)24
-b(to)h(share)f(and)f(c)m(hange)i(free)f(soft)m(w)m(are|to)j(mak)m(e)e
-(sure)e(the)h(soft)m(w)m(are)i(is)d(free)h(for)g(all)f(its)h(users.)150
-2012 y(This)38 b(General)i(Public)d(License)j(applies)e(to)i(most)g(of)
-g(the)g(F)-8 b(ree)41 b(Soft)m(w)m(are)g(F)-8 b(oundation's)39
-b(soft)m(w)m(are)150 2121 y(and)c(to)h(an)m(y)g(other)g(program)f
-(whose)h(authors)f(commit)g(to)i(using)d(it.)55 b(\(Some)36
-b(other)g(F)-8 b(ree)37 b(Soft)m(w)m(are)150 2231 y(F)-8
-b(oundation)31 b(soft)m(w)m(are)i(is)d(co)m(v)m(ered)j(b)m(y)e(the)g
-(GNU)h(Library)e(General)h(Public)e(License)h(instead.\))43
-b(Y)-8 b(ou)150 2340 y(can)31 b(apply)e(it)h(to)h(y)m(our)f(programs,)g
-(to)s(o.)275 2503 y(When)37 b(w)m(e)g(sp)s(eak)g(of)g(free)h(soft)m(w)m
-(are,)i(w)m(e)e(are)g(referring)d(to)j(freedom,)h(not)f(price.)60
-b(Our)36 b(General)150 2612 y(Public)c(Licenses)h(are)i(designed)e(to)i
-(mak)m(e)g(sure)f(that)g(y)m(ou)h(ha)m(v)m(e)g(the)g(freedom)f(to)g
-(distribute)e(copies)150 2722 y(of)k(free)h(soft)m(w)m(are)g(\(and)f(c)
-m(harge)i(for)e(this)f(service)h(if)f(y)m(ou)i(wish\),)g(that)f(y)m(ou)
-h(receiv)m(e)g(source)f(co)s(de)h(or)150 2832 y(can)e(get)h(it)e(if)f
-(y)m(ou)i(w)m(an)m(t)h(it,)f(that)g(y)m(ou)g(can)g(c)m(hange)h(the)e
-(soft)m(w)m(are)i(or)f(use)f(pieces)h(of)f(it)g(in)g(new)g(free)150
-2941 y(programs;)c(and)g(that)h(y)m(ou)g(kno)m(w)f(y)m(ou)h(can)f(do)h
-(these)g(things.)275 3104 y(T)-8 b(o)40 b(protect)h(y)m(our)f(righ)m
-(ts,)i(w)m(e)e(need)g(to)h(mak)m(e)g(restrictions)d(that)j(forbid)d(an)
-m(y)m(one)j(to)g(den)m(y)f(y)m(ou)150 3213 y(these)d(righ)m(ts)f(or)g
-(to)h(ask)g(y)m(ou)f(to)h(surrender)e(the)h(righ)m(ts.)58
-b(These)36 b(restrictions)f(translate)i(to)g(certain)150
-3323 y(resp)s(onsibilities)25 b(for)31 b(y)m(ou)f(if)g(y)m(ou)g
-(distribute)e(copies)i(of)h(the)f(soft)m(w)m(are,)j(or)d(if)f(y)m(ou)i
-(mo)s(dify)e(it.)275 3485 y(F)-8 b(or)30 b(example,)f(if)g(y)m(ou)g
-(distribute)e(copies)j(of)f(suc)m(h)g(a)h(program,)g(whether)e(gratis)i
-(or)f(for)g(a)h(fee,)h(y)m(ou)150 3595 y(m)m(ust)i(giv)m(e)h(the)g
-(recipien)m(ts)e(all)h(the)g(righ)m(ts)g(that)h(y)m(ou)g(ha)m(v)m(e.)51
-b(Y)-8 b(ou)34 b(m)m(ust)g(mak)m(e)g(sure)f(that)h(they)-8
-b(,)35 b(to)s(o,)150 3704 y(receiv)m(e)j(or)g(can)g(get)g(the)g(source)
-g(co)s(de.)62 b(And)37 b(y)m(ou)h(m)m(ust)f(sho)m(w)h(them)f(these)h
-(terms)f(so)h(they)g(kno)m(w)150 3814 y(their)29 b(righ)m(ts.)275
-3976 y(W)-8 b(e)29 b(protect)g(y)m(our)f(righ)m(ts)f(with)g(t)m(w)m(o)i
-(steps:)40 b(\(1\))29 b(cop)m(yrigh)m(t)f(the)g(soft)m(w)m(are,)j(and)c
-(\(2\))i(o\013er)g(y)m(ou)f(this)150 4086 y(license)h(whic)m(h)g(giv)m
-(es)i(y)m(ou)g(legal)f(p)s(ermission)d(to)k(cop)m(y)-8
-b(,)32 b(distribute)c(and/or)i(mo)s(dify)f(the)i(soft)m(w)m(are.)275
-4248 y(Also,)45 b(for)d(eac)m(h)i(author's)f(protection)f(and)g(ours,)j
-(w)m(e)e(w)m(an)m(t)h(to)f(mak)m(e)h(certain)e(that)h(ev)m(ery)m(one)
-150 4358 y(understands)29 b(that)j(there)f(is)f(no)h(w)m(arran)m(t)m(y)
-h(for)f(this)f(free)h(soft)m(w)m(are.)44 b(If)30 b(the)i(soft)m(w)m
-(are)g(is)e(mo)s(di\014ed)f(b)m(y)150 4467 y(someone)i(else)e(and)g
-(passed)h(on,)g(w)m(e)g(w)m(an)m(t)h(its)e(recipien)m(ts)g(to)h(kno)m
-(w)g(that)g(what)g(they)g(ha)m(v)m(e)h(is)e(not)h(the)150
-4577 y(original,)e(so)h(that)g(an)m(y)h(problems)d(in)m(tro)s(duced)g
-(b)m(y)i(others)g(will)d(not)j(re\015ect)h(on)f(the)g(original)e
-(authors')150 4686 y(reputations.)275 4849 y(Finally)-8
-b(,)24 b(an)m(y)h(free)f(program)g(is)g(threatened)g(constan)m(tly)h(b)
-m(y)g(soft)m(w)m(are)h(paten)m(ts.)39 b(W)-8 b(e)26 b(wish)c(to)j(a)m
-(v)m(oid)150 4958 y(the)30 b(danger)g(that)h(redistributors)c(of)k(a)f
-(free)h(program)f(will)d(individually)e(obtain)30 b(paten)m(t)h
-(licenses,)e(in)150 5068 y(e\013ect)39 b(making)e(the)h(program)f
-(proprietary)-8 b(.)62 b(T)-8 b(o)38 b(prev)m(en)m(t)g(this,)h(w)m(e)f
-(ha)m(v)m(e)h(made)f(it)f(clear)g(that)i(an)m(y)150 5178
-y(paten)m(t)31 b(m)m(ust)g(b)s(e)e(licensed)g(for)h(ev)m(ery)m(one's)i
-(free)f(use)f(or)g(not)h(licensed)e(at)i(all.)275 5340
-y(The)e(precise)h(terms)g(and)g(conditions)f(for)h(cop)m(ying,)h
-(distribution)26 b(and)k(mo)s(di\014cation)f(follo)m(w.)p
-eop
-%%Page: 3 8
-3 7 bop 150 -116 a Fu(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052
-b(3)150 166 y Ft(TERMS)44 b(AND)h(CONDITIONS)g(F)l(OR)g(COPYING,)150
-299 y(DISTRIBUTION)f(AND)h(MODIFICA)-11 b(TION)199 515
-y Fu(1.)61 b(This)41 b(License)h(applies)e(to)k(an)m(y)f(program)f(or)g
-(other)h(w)m(ork)g(whic)m(h)e(con)m(tains)i(a)g(notice)f(placed)330
-625 y(b)m(y)33 b(the)h(cop)m(yrigh)m(t)g(holder)e(sa)m(ying)i(it)f(ma)m
-(y)h(b)s(e)f(distributed)e(under)h(the)h(terms)h(of)g(this)e(General)
-330 735 y(Public)37 b(License.)67 b(The)39 b(\\Program",)j(b)s(elo)m
-(w,)f(refers)e(to)h(an)m(y)g(suc)m(h)f(program)g(or)g(w)m(ork,)j(and)d
-(a)330 844 y(\\w)m(ork)29 b(based)f(on)h(the)g(Program")g(means)f
-(either)h(the)f(Program)h(or)g(an)m(y)g(deriv)-5 b(ativ)m(e)28
-b(w)m(ork)g(under)330 954 y(cop)m(yrigh)m(t)k(la)m(w:)42
-b(that)32 b(is)e(to)j(sa)m(y)-8 b(,)33 b(a)e(w)m(ork)h(con)m(taining)f
-(the)g(Program)h(or)f(a)h(p)s(ortion)e(of)h(it,)g(either)330
-1063 y(v)m(erbatim)e(or)g(with)e(mo)s(di\014cations)g(and/or)i
-(translated)g(in)m(to)g(another)g(language.)40 b(\(Hereinafter,)330
-1173 y(translation)26 b(is)g(included)f(without)h(limitation)f(in)h
-(the)h(term)g(\\mo)s(di\014cation".\))40 b(Eac)m(h)27
-b(licensee)g(is)330 1282 y(addressed)i(as)i(\\y)m(ou".)330
-1429 y(Activities)38 b(other)h(than)f(cop)m(ying,)k(distribution)35
-b(and)j(mo)s(di\014cation)f(are)i(not)g(co)m(v)m(ered)h(b)m(y)f(this)
-330 1538 y(License;)33 b(they)g(are)f(outside)g(its)f(scop)s(e.)47
-b(The)32 b(act)h(of)g(running)c(the)k(Program)f(is)f(not)i(restricted,)
-330 1648 y(and)24 b(the)g(output)g(from)g(the)h(Program)f(is)g(co)m(v)m
-(ered)i(only)d(if)g(its)h(con)m(ten)m(ts)i(constitute)f(a)g(w)m(ork)f
-(based)330 1758 y(on)h(the)h(Program)f(\(indep)s(enden)m(t)f(of)i(ha)m
-(ving)f(b)s(een)f(made)i(b)m(y)f(running)e(the)i(Program\).)40
-b(Whether)330 1867 y(that)31 b(is)e(true)i(dep)s(ends)d(on)i(what)h
-(the)f(Program)h(do)s(es.)199 2014 y(2.)61 b(Y)-8 b(ou)42
-b(ma)m(y)g(cop)m(y)g(and)e(distribute)f(v)m(erbatim)i(copies)g(of)h
-(the)f(Program's)h(source)f(co)s(de)h(as)g(y)m(ou)330
-2123 y(receiv)m(e)32 b(it,)f(in)f(an)m(y)h(medium,)f(pro)m(vided)g
-(that)h(y)m(ou)h(conspicuously)d(and)h(appropriately)g(publish)330
-2233 y(on)j(eac)m(h)h(cop)m(y)g(an)f(appropriate)f(cop)m(yrigh)m(t)i
-(notice)f(and)g(disclaimer)d(of)k(w)m(arran)m(t)m(y;)h(k)m(eep)f(in)m
-(tact)330 2342 y(all)d(the)g(notices)h(that)h(refer)e(to)h(this)f
-(License)g(and)g(to)i(the)f(absence)g(of)g(an)m(y)g(w)m(arran)m(t)m(y;)
-h(and)e(giv)m(e)330 2452 y(an)m(y)g(other)f(recipien)m(ts)g(of)g(the)h
-(Program)f(a)h(cop)m(y)g(of)g(this)e(License)h(along)g(with)f(the)i
-(Program.)330 2598 y(Y)-8 b(ou)31 b(ma)m(y)g(c)m(harge)h(a)f(fee)g(for)
-f(the)h(ph)m(ysical)e(act)j(of)f(transferring)e(a)i(cop)m(y)-8
-b(,)32 b(and)e(y)m(ou)h(ma)m(y)g(at)g(y)m(our)330 2708
-y(option)f(o\013er)h(w)m(arran)m(t)m(y)g(protection)g(in)e(exc)m(hange)
-j(for)e(a)g(fee.)199 2854 y(3.)61 b(Y)-8 b(ou)24 b(ma)m(y)h(mo)s(dify)d
-(y)m(our)i(cop)m(y)g(or)g(copies)g(of)g(the)g(Program)g(or)g(an)m(y)g
-(p)s(ortion)e(of)i(it,)h(th)m(us)f(forming)f(a)330 2964
-y(w)m(ork)k(based)g(on)f(the)h(Program,)h(and)f(cop)m(y)g(and)g
-(distribute)d(suc)m(h)j(mo)s(di\014cations)e(or)h(w)m(ork)h(under)330
-3074 y(the)k(terms)f(of)g(Section)h(1)f(ab)s(o)m(v)m(e,)i(pro)m(vided)d
-(that)i(y)m(ou)g(also)f(meet)h(all)f(of)g(these)h(conditions:)379
-3220 y(a.)61 b(Y)-8 b(ou)43 b(m)m(ust)f(cause)i(the)e(mo)s(di\014ed)f
-(\014les)g(to)i(carry)g(prominen)m(t)e(notices)i(stating)f(that)i(y)m
-(ou)510 3330 y(c)m(hanged)31 b(the)g(\014les)e(and)h(the)g(date)h(of)g
-(an)m(y)g(c)m(hange.)374 3476 y(b.)60 b(Y)-8 b(ou)31
-b(m)m(ust)g(cause)g(an)m(y)h(w)m(ork)f(that)g(y)m(ou)g(distribute)d(or)
-j(publish,)d(that)j(in)f(whole)g(or)h(in)e(part)510 3586
-y(con)m(tains)35 b(or)h(is)e(deriv)m(ed)g(from)h(the)g(Program)g(or)g
-(an)m(y)h(part)f(thereof,)i(to)f(b)s(e)e(licensed)g(as)i(a)510
-3695 y(whole)30 b(at)h(no)f(c)m(harge)i(to)f(all)e(third)f(parties)i
-(under)f(the)i(terms)f(of)g(this)g(License.)384 3842
-y(c.)61 b(If)39 b(the)h(mo)s(di\014ed)e(program)h(normally)f(reads)i
-(commands)f(in)m(teractiv)m(ely)h(when)f(run,)i(y)m(ou)510
-3951 y(m)m(ust)30 b(cause)h(it,)f(when)g(started)h(running)c(for)k(suc)
-m(h)f(in)m(teractiv)m(e)h(use)f(in)f(the)i(most)g(ordinary)510
-4061 y(w)m(a)m(y)-8 b(,)25 b(to)d(prin)m(t)e(or)h(displa)m(y)f(an)h
-(announcemen)m(t)g(including)d(an)k(appropriate)e(cop)m(yrigh)m(t)i
-(notice)510 4170 y(and)i(a)g(notice)h(that)f(there)h(is)e(no)h(w)m
-(arran)m(t)m(y)h(\(or)g(else,)g(sa)m(ying)f(that)h(y)m(ou)g(pro)m(vide)
-e(a)i(w)m(arran)m(t)m(y\))510 4280 y(and)35 b(that)g(users)g(ma)m(y)g
-(redistribute)e(the)j(program)f(under)e(these)j(conditions,)f(and)g
-(telling)510 4390 y(the)f(user)f(ho)m(w)h(to)g(view)f(a)i(cop)m(y)f(of)
-g(this)f(License.)50 b(\(Exception:)e(if)32 b(the)i(Program)g(itself)f
-(is)510 4499 y(in)m(teractiv)m(e)i(but)e(do)s(es)h(not)g(normally)e
-(prin)m(t)h(suc)m(h)g(an)h(announcemen)m(t,)h(y)m(our)f(w)m(ork)g
-(based)510 4609 y(on)c(the)h(Program)f(is)g(not)g(required)f(to)i(prin)
-m(t)e(an)h(announcemen)m(t.\))330 4792 y(These)41 b(requiremen)m(ts)g
-(apply)f(to)i(the)g(mo)s(di\014ed)e(w)m(ork)h(as)h(a)g(whole.)73
-b(If)42 b(iden)m(ti\014able)d(sections)330 4902 y(of)j(that)h(w)m(ork)g
-(are)f(not)h(deriv)m(ed)e(from)h(the)h(Program,)i(and)d(can)h(b)s(e)e
-(reasonably)h(considered)330 5011 y(indep)s(enden)m(t)24
-b(and)j(separate)g(w)m(orks)g(in)e(themselv)m(es,)j(then)e(this)g
-(License,)h(and)f(its)h(terms,)g(do)g(not)330 5121 y(apply)36
-b(to)i(those)f(sections)g(when)g(y)m(ou)g(distribute)e(them)i(as)g
-(separate)h(w)m(orks.)61 b(But)37 b(when)g(y)m(ou)330
-5230 y(distribute)27 b(the)i(same)g(sections)h(as)f(part)g(of)g(a)h
-(whole)e(whic)m(h)g(is)g(a)h(w)m(ork)h(based)e(on)h(the)h(Program,)330
-5340 y(the)h(distribution)d(of)j(the)h(whole)e(m)m(ust)h(b)s(e)g(on)g
-(the)g(terms)g(of)h(this)e(License,)h(whose)g(p)s(ermissions)p
-eop
-%%Page: 4 9
-4 8 bop 150 -116 a Fu(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052
-b(4)330 299 y(for)22 b(other)h(licensees)e(extend)i(to)g(the)f(en)m
-(tire)g(whole,)i(and)d(th)m(us)h(to)h(eac)m(h)h(and)d(ev)m(ery)i(part)g
-(regardless)330 408 y(of)31 b(who)e(wrote)i(it.)330 538
-y(Th)m(us,)48 b(it)d(is)f(not)i(the)f(in)m(ten)m(t)g(of)h(this)e
-(section)h(to)h(claim)f(righ)m(ts)f(or)h(con)m(test)i(y)m(our)f(righ)m
-(ts)e(to)330 648 y(w)m(ork)34 b(written)e(en)m(tirely)h(b)m(y)h(y)m
-(ou;)h(rather,)g(the)f(in)m(ten)m(t)g(is)e(to)j(exercise)e(the)h(righ)m
-(t)f(to)i(con)m(trol)f(the)330 757 y(distribution)27
-b(of)j(deriv)-5 b(ativ)m(e)30 b(or)h(collectiv)m(e)f(w)m(orks)h(based)f
-(on)g(the)h(Program.)330 887 y(In)41 b(addition,)h(mere)f(aggregation)i
-(of)f(another)f(w)m(ork)g(not)h(based)f(on)g(the)g(Program)h(with)e
-(the)330 996 y(Program)22 b(\(or)g(with)e(a)i(w)m(ork)g(based)f(on)h
-(the)g(Program\))g(on)f(a)h(v)m(olume)g(of)g(a)g(storage)h(or)f
-(distribution)330 1106 y(medium)28 b(do)s(es)j(not)f(bring)f(the)h
-(other)h(w)m(ork)f(under)f(the)i(scop)s(e)f(of)h(this)e(License.)199
-1235 y(4.)61 b(Y)-8 b(ou)38 b(ma)m(y)f(cop)m(y)h(and)f(distribute)d
-(the)k(Program)f(\(or)g(a)h(w)m(ork)f(based)g(on)g(it,)i(under)c
-(Section)i(2\))330 1345 y(in)29 b(ob)5 b(ject)31 b(co)s(de)g(or)g
-(executable)g(form)f(under)e(the)j(terms)f(of)h(Sections)f(1)h(and)f(2)
-h(ab)s(o)m(v)m(e)g(pro)m(vided)330 1455 y(that)g(y)m(ou)g(also)f(do)g
-(one)h(of)f(the)h(follo)m(wing:)379 1584 y(a.)61 b(Accompan)m(y)47
-b(it)e(with)f(the)i(complete)g(corresp)s(onding)e(mac)m(hine-readable)h
-(source)g(co)s(de,)510 1694 y(whic)m(h)25 b(m)m(ust)h(b)s(e)f
-(distributed)e(under)h(the)j(terms)e(of)i(Sections)e(1)i(and)e(2)h(ab)s
-(o)m(v)m(e)i(on)d(a)i(medium)510 1803 y(customarily)i(used)h(for)g
-(soft)m(w)m(are)i(in)m(terc)m(hange;)f(or,)374 1933 y(b.)60
-b(Accompan)m(y)30 b(it)f(with)f(a)i(written)e(o\013er,)j(v)-5
-b(alid)27 b(for)i(at)i(least)e(three)h(y)m(ears,)g(to)g(giv)m(e)g(an)m
-(y)g(third)510 2042 y(part)m(y)-8 b(,)32 b(for)f(a)h(c)m(harge)g(no)f
-(more)h(than)f(y)m(our)g(cost)h(of)f(ph)m(ysically)f(p)s(erforming)f
-(source)i(distri-)510 2152 y(bution,)c(a)h(complete)h(mac)m
-(hine-readable)e(cop)m(y)h(of)g(the)g(corresp)s(onding)e(source)i(co)s
-(de,)h(to)g(b)s(e)510 2262 y(distributed)i(under)i(the)h(terms)g(of)h
-(Sections)f(1)g(and)g(2)h(ab)s(o)m(v)m(e)g(on)f(a)h(medium)d
-(customarily)510 2371 y(used)e(for)g(soft)m(w)m(are)i(in)m(terc)m
-(hange;)f(or,)384 2501 y(c.)61 b(Accompan)m(y)33 b(it)e(with)g(the)h
-(information)e(y)m(ou)i(receiv)m(ed)g(as)g(to)g(the)g(o\013er)g(to)h
-(distribute)c(cor-)510 2610 y(resp)s(onding)i(source)i(co)s(de.)50
-b(\(This)31 b(alternativ)m(e)j(is)e(allo)m(w)m(ed)h(only)g(for)g
-(noncommercial)f(dis-)510 2720 y(tribution)e(and)h(only)g(if)g(y)m(ou)i
-(receiv)m(ed)f(the)g(program)g(in)f(ob)5 b(ject)33 b(co)s(de)f(or)g
-(executable)g(form)510 2829 y(with)d(suc)m(h)h(an)g(o\013er,)h(in)e
-(accord)j(with)d(Subsection)g(b)h(ab)s(o)m(v)m(e.\))330
-2979 y(The)j(source)h(co)s(de)g(for)f(a)h(w)m(ork)g(means)f(the)h
-(preferred)e(form)h(of)h(the)g(w)m(ork)f(for)h(making)f(mo)s(di\014-)
-330 3088 y(cations)e(to)g(it.)40 b(F)-8 b(or)31 b(an)f(executable)h(w)m
-(ork,)g(complete)f(source)h(co)s(de)f(means)h(all)e(the)h(source)h(co)s
-(de)330 3198 y(for)25 b(all)g(mo)s(dules)f(it)h(con)m(tains,)i(plus)c
-(an)m(y)j(asso)s(ciated)g(in)m(terface)h(de\014nition)c(\014les,)j
-(plus)d(the)j(scripts)330 3308 y(used)41 b(to)i(con)m(trol)g
-(compilation)d(and)i(installation)e(of)i(the)h(executable.)76
-b(Ho)m(w)m(ev)m(er,)48 b(as)42 b(a)g(sp)s(e-)330 3417
-y(cial)30 b(exception,)i(the)f(source)g(co)s(de)g(distributed)d(need)i
-(not)h(include)e(an)m(ything)h(that)i(is)e(normally)330
-3527 y(distributed)37 b(\(in)h(either)h(source)h(or)f(binary)f(form\))i
-(with)e(the)i(ma)5 b(jor)39 b(comp)s(onen)m(ts)h(\(compiler,)330
-3636 y(k)m(ernel,)35 b(and)f(so)g(on\))g(of)h(the)f(op)s(erating)g
-(system)g(on)g(whic)m(h)f(the)h(executable)h(runs,)f(unless)e(that)330
-3746 y(comp)s(onen)m(t)f(itself)e(accompanies)i(the)f(executable.)330
-3875 y(If)39 b(distribution)c(of)40 b(executable)g(or)f(ob)5
-b(ject)40 b(co)s(de)f(is)g(made)g(b)m(y)g(o\013ering)g(access)h(to)g
-(cop)m(y)g(from)330 3985 y(a)e(designated)f(place,)i(then)f(o\013ering)
-f(equiv)-5 b(alen)m(t)37 b(access)h(to)h(cop)m(y)f(the)f(source)h(co)s
-(de)g(from)f(the)330 4095 y(same)29 b(place)f(coun)m(ts)g(as)h
-(distribution)24 b(of)k(the)h(source)f(co)s(de,)h(ev)m(en)g(though)e
-(third)g(parties)g(are)i(not)330 4204 y(comp)s(elled)g(to)i(cop)m(y)g
-(the)g(source)f(along)h(with)e(the)h(ob)5 b(ject)31 b(co)s(de.)199
-4334 y(5.)61 b(Y)-8 b(ou)35 b(ma)m(y)h(not)f(cop)m(y)-8
-b(,)37 b(mo)s(dify)-8 b(,)35 b(sublicense,)f(or)g(distribute)f(the)i
-(Program)f(except)i(as)f(expressly)330 4443 y(pro)m(vided)k(under)g
-(this)h(License.)70 b(An)m(y)41 b(attempt)h(otherwise)e(to)h(cop)m(y)-8
-b(,)45 b(mo)s(dify)-8 b(,)42 b(sublicense)c(or)330 4553
-y(distribute)24 b(the)j(Program)g(is)e(v)m(oid,)i(and)f(will)e
-(automatically)j(terminate)f(y)m(our)h(righ)m(ts)f(under)f(this)330
-4663 y(License.)70 b(Ho)m(w)m(ev)m(er,)45 b(parties)40
-b(who)g(ha)m(v)m(e)h(receiv)m(ed)g(copies,)i(or)d(righ)m(ts,)j(from)d
-(y)m(ou)g(under)f(this)330 4772 y(License)d(will)e(not)j(ha)m(v)m(e)h
-(their)e(licenses)f(terminated)i(so)g(long)f(as)h(suc)m(h)f(parties)g
-(remain)g(in)f(full)330 4882 y(compliance.)199 5011 y(6.)61
-b(Y)-8 b(ou)38 b(are)g(not)g(required)d(to)j(accept)h(this)e(License,)i
-(since)e(y)m(ou)g(ha)m(v)m(e)i(not)f(signed)e(it.)62
-b(Ho)m(w)m(ev)m(er,)330 5121 y(nothing)23 b(else)g(gran)m(ts)i(y)m(ou)f
-(p)s(ermission)c(to)25 b(mo)s(dify)d(or)h(distribute)f(the)i(Program)g
-(or)f(its)g(deriv)-5 b(ativ)m(e)330 5230 y(w)m(orks.)38
-b(These)23 b(actions)g(are)h(prohibited)c(b)m(y)j(la)m(w)g(if)f(y)m(ou)
-h(do)g(not)h(accept)g(this)e(License.)38 b(Therefore,)330
-5340 y(b)m(y)e(mo)s(difying)d(or)j(distributing)c(the)k(Program)g(\(or)
-h(an)m(y)f(w)m(ork)g(based)g(on)f(the)i(Program\),)h(y)m(ou)p
-eop
-%%Page: 5 10
-5 9 bop 150 -116 a Fu(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052
-b(5)330 299 y(indicate)31 b(y)m(our)i(acceptance)h(of)f(this)e(License)
-h(to)i(do)e(so,)h(and)f(all)f(its)h(terms)g(and)g(conditions)f(for)330
-408 y(cop)m(ying,)g(distributing)26 b(or)31 b(mo)s(difying)c(the)k
-(Program)f(or)h(w)m(orks)f(based)g(on)g(it.)199 545 y(7.)61
-b(Eac)m(h)43 b(time)e(y)m(ou)h(redistribute)e(the)i(Program)g(\(or)g
-(an)m(y)h(w)m(ork)f(based)f(on)h(the)g(Program\),)k(the)330
-655 y(recipien)m(t)31 b(automatically)i(receiv)m(es)g(a)g(license)e
-(from)h(the)g(original)f(licensor)g(to)i(cop)m(y)-8 b(,)34
-b(distribute)330 765 y(or)i(mo)s(dify)f(the)h(Program)h(sub)5
-b(ject)36 b(to)h(these)g(terms)f(and)g(conditions.)57
-b(Y)-8 b(ou)37 b(ma)m(y)g(not)f(imp)s(ose)330 874 y(an)m(y)27
-b(further)f(restrictions)f(on)i(the)g(recipien)m(ts')f(exercise)h(of)g
-(the)g(righ)m(ts)f(gran)m(ted)h(herein.)38 b(Y)-8 b(ou)28
-b(are)330 984 y(not)j(resp)s(onsible)c(for)j(enforcing)g(compliance)g
-(b)m(y)g(third)e(parties)i(to)h(this)e(License.)199 1121
-y(8.)61 b(If,)27 b(as)g(a)g(consequence)h(of)f(a)g(court)g(judgmen)m(t)
-f(or)h(allegation)f(of)h(paten)m(t)h(infringemen)m(t)c(or)j(for)g(an)m
-(y)330 1230 y(other)h(reason)f(\(not)h(limited)d(to)j(paten)m(t)h
-(issues\),)e(conditions)f(are)h(imp)s(osed)f(on)h(y)m(ou)h(\(whether)f
-(b)m(y)330 1340 y(court)c(order,)h(agreemen)m(t)g(or)f(otherwise\))f
-(that)h(con)m(tradict)h(the)e(conditions)f(of)i(this)f(License,)i(they)
-330 1450 y(do)34 b(not)g(excuse)h(y)m(ou)f(from)g(the)g(conditions)f
-(of)h(this)f(License.)52 b(If)33 b(y)m(ou)i(cannot)g(distribute)c(so)k
-(as)330 1559 y(to)f(satisfy)f(sim)m(ultaneously)f(y)m(our)h
-(obligations)g(under)f(this)g(License)h(and)g(an)m(y)h(other)g(p)s
-(ertinen)m(t)330 1669 y(obligations,)41 b(then)f(as)g(a)g(consequence)h
-(y)m(ou)f(ma)m(y)g(not)g(distribute)e(the)i(Program)g(at)g(all.)68
-b(F)-8 b(or)330 1778 y(example,)25 b(if)e(a)i(paten)m(t)g(license)e(w)m
-(ould)g(not)h(p)s(ermit)f(ro)m(y)m(alt)m(y-free)j(redistribution)20
-b(of)k(the)h(Program)330 1888 y(b)m(y)35 b(all)f(those)h(who)f(receiv)m
-(e)i(copies)f(directly)e(or)i(indirectly)e(through)h(y)m(ou,)i(then)f
-(the)g(only)f(w)m(a)m(y)330 1998 y(y)m(ou)27 b(could)e(satisfy)h(b)s
-(oth)f(it)h(and)g(this)f(License)h(w)m(ould)f(b)s(e)h(to)h(refrain)d
-(en)m(tirely)i(from)g(distribution)330 2107 y(of)31 b(the)f(Program.)
-330 2244 y(If)43 b(an)m(y)g(p)s(ortion)f(of)h(this)g(section)g(is)f
-(held)g(in)m(v)-5 b(alid)41 b(or)i(unenforceable)f(under)g(an)m(y)i
-(particular)330 2354 y(circumstance,)i(the)e(balance)f(of)g(the)h
-(section)f(is)f(in)m(tended)g(to)i(apply)e(and)g(the)i(section)f(as)h
-(a)330 2463 y(whole)30 b(is)f(in)m(tended)g(to)i(apply)e(in)g(other)i
-(circumstances.)330 2600 y(It)41 b(is)e(not)i(the)f(purp)s(ose)f(of)i
-(this)e(section)i(to)g(induce)e(y)m(ou)i(to)g(infringe)d(an)m(y)j
-(paten)m(ts)g(or)g(other)330 2710 y(prop)s(ert)m(y)e(righ)m(t)h(claims)
-e(or)i(to)h(con)m(test)h(v)-5 b(alidit)m(y)38 b(of)i(an)m(y)g(suc)m(h)g
-(claims;)j(this)c(section)h(has)g(the)330 2819 y(sole)30
-b(purp)s(ose)e(of)j(protecting)f(the)g(in)m(tegrit)m(y)g(of)g(the)h
-(free)f(soft)m(w)m(are)h(distribution)c(system,)j(whic)m(h)330
-2929 y(is)k(implemen)m(ted)g(b)m(y)h(public)d(license)i(practices.)55
-b(Man)m(y)36 b(p)s(eople)e(ha)m(v)m(e)i(made)f(generous)h(con)m(tri-)
-330 3039 y(butions)e(to)i(the)f(wide)g(range)g(of)h(soft)m(w)m(are)h
-(distributed)32 b(through)j(that)h(system)f(in)f(reliance)h(on)330
-3148 y(consisten)m(t)h(application)e(of)h(that)h(system;)i(it)d(is)g
-(up)f(to)i(the)g(author/donor)f(to)h(decide)f(if)g(he)g(or)330
-3258 y(she)i(is)g(willing)d(to)k(distribute)d(soft)m(w)m(are)k(through)
-e(an)m(y)g(other)h(system)g(and)f(a)g(licensee)g(cannot)330
-3367 y(imp)s(ose)29 b(that)i(c)m(hoice.)330 3504 y(This)25
-b(section)j(is)e(in)m(tended)g(to)i(mak)m(e)g(thoroughly)e(clear)h
-(what)g(is)f(b)s(eliev)m(ed)g(to)i(b)s(e)f(a)g(consequence)330
-3614 y(of)k(the)f(rest)h(of)f(this)f(License.)199 3751
-y(9.)61 b(If)35 b(the)g(distribution)c(and/or)k(use)g(of)g(the)g
-(Program)g(is)f(restricted)h(in)f(certain)h(coun)m(tries)f(either)330
-3861 y(b)m(y)h(paten)m(ts)h(or)g(b)m(y)f(cop)m(yrigh)m(ted)h(in)m
-(terfaces,)h(the)e(original)f(cop)m(yrigh)m(t)i(holder)e(who)h(places)g
-(the)330 3970 y(Program)h(under)f(this)g(License)h(ma)m(y)h(add)e(an)i
-(explicit)d(geographical)j(distribution)32 b(limitation)330
-4080 y(excluding)27 b(those)i(coun)m(tries,)g(so)g(that)g(distribution)
-c(is)i(p)s(ermitted)h(only)f(in)g(or)i(among)g(coun)m(tries)330
-4189 y(not)k(th)m(us)f(excluded.)47 b(In)32 b(suc)m(h)g(case,)j(this)c
-(License)i(incorp)s(orates)f(the)h(limitation)d(as)j(if)f(written)330
-4299 y(in)d(the)i(b)s(o)s(dy)d(of)j(this)e(License.)154
-4436 y(10.)61 b(The)26 b(F)-8 b(ree)28 b(Soft)m(w)m(are)g(F)-8
-b(oundation)26 b(ma)m(y)i(publish)23 b(revised)i(and/or)i(new)f(v)m
-(ersions)g(of)h(the)g(General)330 4545 y(Public)35 b(License)h(from)h
-(time)g(to)g(time.)61 b(Suc)m(h)36 b(new)h(v)m(ersions)f(will)f(b)s(e)h
-(similar)e(in)i(spirit)f(to)j(the)330 4655 y(presen)m(t)30
-b(v)m(ersion,)h(but)e(ma)m(y)i(di\013er)e(in)g(detail)h(to)h(address)e
-(new)h(problems)f(or)h(concerns.)330 4792 y(Eac)m(h)46
-b(v)m(ersion)e(is)g(giv)m(en)h(a)g(distinguishing)40
-b(v)m(ersion)45 b(n)m(um)m(b)s(er.)83 b(If)44 b(the)h(Program)g(sp)s
-(eci\014es)f(a)330 4902 y(v)m(ersion)35 b(n)m(um)m(b)s(er)g(of)h(this)e
-(License)i(whic)m(h)e(applies)g(to)j(it)e(and)g(\\an)m(y)i(later)e(v)m
-(ersion",)j(y)m(ou)e(ha)m(v)m(e)330 5011 y(the)d(option)f(of)h(follo)m
-(wing)e(the)i(terms)g(and)f(conditions)f(either)i(of)g(that)g(v)m
-(ersion)f(or)h(of)g(an)m(y)g(later)330 5121 y(v)m(ersion)d(published)c
-(b)m(y)k(the)g(F)-8 b(ree)31 b(Soft)m(w)m(are)g(F)-8
-b(oundation.)41 b(If)29 b(the)i(Program)f(do)s(es)g(not)g(sp)s(ecify)f
-(a)330 5230 y(v)m(ersion)e(n)m(um)m(b)s(er)g(of)h(this)e(License,)i(y)m
-(ou)g(ma)m(y)h(c)m(ho)s(ose)f(an)m(y)h(v)m(ersion)e(ev)m(er)h
-(published)c(b)m(y)k(the)g(F)-8 b(ree)330 5340 y(Soft)m(w)m(are)31
-b(F)-8 b(oundation.)p eop
-%%Page: 6 11
-6 10 bop 150 -116 a Fu(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052
-b(6)154 299 y(11.)61 b(If)29 b(y)m(ou)g(wish)f(to)i(incorp)s(orate)f
-(parts)g(of)g(the)g(Program)h(in)m(to)f(other)h(free)f(programs)g
-(whose)g(distri-)330 408 y(bution)e(conditions)g(are)j(di\013eren)m(t,)
-e(write)g(to)i(the)f(author)f(to)i(ask)e(for)h(p)s(ermission.)37
-b(F)-8 b(or)29 b(soft)m(w)m(are)330 518 y(whic)m(h)23
-b(is)g(cop)m(yrigh)m(ted)h(b)m(y)g(the)g(F)-8 b(ree)25
-b(Soft)m(w)m(are)g(F)-8 b(oundation,)25 b(write)e(to)i(the)f(F)-8
-b(ree)25 b(Soft)m(w)m(are)g(F)-8 b(oun-)330 628 y(dation;)28
-b(w)m(e)g(sometimes)g(mak)m(e)g(exceptions)g(for)f(this.)39
-b(Our)26 b(decision)g(will)f(b)s(e)h(guided)h(b)m(y)g(the)h(t)m(w)m(o)
-330 737 y(goals)23 b(of)g(preserving)e(the)h(free)h(status)g(of)f(all)g
-(deriv)-5 b(ativ)m(es)22 b(of)g(our)g(free)h(soft)m(w)m(are)h(and)e(of)
-h(promoting)330 847 y(the)31 b(sharing)e(and)g(reuse)h(of)h(soft)m(w)m
-(are)h(generally)-8 b(.)330 1104 y Ft(NO)45 b(W)-15 b(ARRANTY)154
-1297 y Fu(12.)61 b(BECA)m(USE)40 b(THE)f(PR)m(OGRAM)i(IS)e(LICENSED)g
-(FREE)g(OF)h(CHAR)m(GE,)h(THERE)e(IS)g(NO)330 1406 y(W)-10
-b(ARRANTY)26 b(F)m(OR)f(THE)g(PR)m(OGRAM,)h(TO)e(THE)h(EXTENT)f
-(PERMITTED)h(BY)g(APPLI-)330 1516 y(CABLE)i(LA)-10 b(W.)27
-b(EX)m(CEPT)g(WHEN)h(OTHER)-10 b(WISE)25 b(ST)-8 b(A)g(TED)28
-b(IN)e(WRITING)i(THE)e(COPY-)330 1626 y(RIGHT)35 b(HOLDERS)g(AND/OR)h
-(OTHER)f(P)-8 b(AR)g(TIES)35 b(PR)m(O)m(VIDE)h(THE)f(PR)m(OGRAM)h(\\AS)
-330 1735 y(IS")22 b(WITHOUT)f(W)-10 b(ARRANTY)23 b(OF)f(ANY)g(KIND,)h
-(EITHER)e(EXPRESSED)g(OR)h(IMPLIED,)330 1845 y(INCLUDING,)33
-b(BUT)g(NOT)g(LIMITED)f(TO,)g(THE)h(IMPLIED)g(W)-10 b(ARRANTIES)32
-b(OF)h(MER-)330 1954 y(CHANT)-8 b(ABILITY)28 b(AND)g(FITNESS)e(F)m(OR)i
-(A)g(P)-8 b(AR)g(TICULAR)27 b(PURPOSE.)g(THE)g(ENTIRE)330
-2064 y(RISK)19 b(AS)h(TO)g(THE)g(QUALITY)g(AND)h(PERF)m(ORMANCE)g(OF)f
-(THE)g(PR)m(OGRAM)h(IS)f(WITH)330 2174 y(YOU.)h(SHOULD)g(THE)f(PR)m
-(OGRAM)i(PR)m(O)m(VE)f(DEFECTIVE,)g(YOU)g(ASSUME)f(THE)g(COST)330
-2283 y(OF)30 b(ALL)g(NECESSAR)-8 b(Y)30 b(SER)-10 b(VICING,)30
-b(REP)-8 b(AIR)30 b(OR)g(CORRECTION.)154 2418 y(13.)61
-b(IN)26 b(NO)g(EVENT)g(UNLESS)f(REQUIRED)h(BY)h(APPLICABLE)f(LA)-10
-b(W)26 b(OR)g(A)m(GREED)h(TO)f(IN)330 2527 y(WRITING)37
-b(WILL)f(ANY)i(COPYRIGHT)e(HOLDER,)h(OR)f(ANY)h(OTHER)f(P)-8
-b(AR)g(TY)38 b(WHO)330 2637 y(MA)-8 b(Y)52 b(MODIFY)g(AND/OR)g
-(REDISTRIBUTE)e(THE)h(PR)m(OGRAM)h(AS)f(PERMITTED)330
-2746 y(ABO)m(VE,)40 b(BE)f(LIABLE)f(TO)g(YOU)h(F)m(OR)g(D)m(AMA)m(GES,)
-h(INCLUDING)f(ANY)h(GENERAL,)330 2856 y(SPECIAL,)e(INCIDENT)-8
-b(AL)40 b(OR)e(CONSEQUENTIAL)g(D)m(AMA)m(GES)j(ARISING)e(OUT)g(OF)330
-2966 y(THE)44 b(USE)g(OR)g(INABILITY)h(TO)f(USE)g(THE)g(PR)m(OGRAM)h
-(\(INCLUDING)h(BUT)e(NOT)330 3075 y(LIMITED)29 b(TO)g(LOSS)f(OF)h(D)m
-(A)-8 b(T)g(A)31 b(OR)e(D)m(A)-8 b(T)g(A)31 b(BEING)f(RENDERED)g(INA)m
-(CCURA)-8 b(TE)29 b(OR)330 3185 y(LOSSES)38 b(SUST)-8
-b(AINED)40 b(BY)h(YOU)f(OR)g(THIRD)g(P)-8 b(AR)g(TIES)40
-b(OR)g(A)h(F)-10 b(AILURE)40 b(OF)g(THE)330 3294 y(PR)m(OGRAM)f(TO)f
-(OPERA)-8 b(TE)38 b(WITH)h(ANY)g(OTHER)f(PR)m(OGRAMS\),)h(EVEN)g(IF)f
-(SUCH)330 3404 y(HOLDER)33 b(OR)h(OTHER)f(P)-8 b(AR)g(TY)34
-b(HAS)f(BEEN)h(AD)m(VISED)g(OF)g(THE)f(POSSIBILITY)f(OF)330
-3513 y(SUCH)e(D)m(AMA)m(GES.)150 3771 y Ft(END)45 b(OF)g(TERMS)f(AND)h
-(CONDITIONS)p eop
-%%Page: 7 12
-7 11 bop 150 -116 a Fu(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052
-b(7)150 299 y Ft(Ho)l(w)46 b(to)f(Apply)f(These)h(T)-11
-b(erms)45 b(to)g(Y)-11 b(our)44 b(New)i(Programs)275
-503 y Fu(If)38 b(y)m(ou)i(dev)m(elop)f(a)g(new)g(program,)j(and)c(y)m
-(ou)i(w)m(an)m(t)g(it)e(to)i(b)s(e)f(of)g(the)h(greatest)h(p)s(ossible)
-36 b(use)j(to)150 612 y(the)i(public,)g(the)h(b)s(est)e(w)m(a)m(y)i(to)
-g(ac)m(hiev)m(e)g(this)e(is)g(to)i(mak)m(e)g(it)f(free)g(soft)m(w)m
-(are)h(whic)m(h)e(ev)m(ery)m(one)j(can)150 722 y(redistribute)28
-b(and)i(c)m(hange)h(under)e(these)i(terms.)275 868 y(T)-8
-b(o)29 b(do)h(so,)g(attac)m(h)h(the)f(follo)m(wing)e(notices)h(to)i
-(the)e(program.)40 b(It)30 b(is)f(safest)h(to)g(attac)m(h)h(them)f(to)g
-(the)150 978 y(start)j(of)g(eac)m(h)h(source)e(\014le)g(to)h(most)g
-(e\013ectiv)m(ely)h(con)m(v)m(ey)g(the)e(exclusion)g(of)g(w)m(arran)m
-(t)m(y;)j(and)d(eac)m(h)i(\014le)150 1087 y(should)28
-b(ha)m(v)m(e)k(at)f(least)g(the)f(\\cop)m(yrigh)m(t")i(line)d(and)g(a)i
-(p)s(oin)m(ter)f(to)h(where)f(the)g(full)e(notice)j(is)e(found.)390
-1227 y Fm(one)i(line)d(to)j(giv)m(e)g(the)g(program's)f(name)h(and)e
-(an)i(idea)f(of)g(what)g(it)g(do)s(es.)390 1331 y Fr(Copyright)45
-b(\(C\))i(19)p Fm(yy)103 b(name)30 b(of)h(author)390
-1539 y Fr(This)47 b(program)e(is)j(free)e(software;)g(you)g(can)h
-(redistribute)e(it)i(and/or)390 1642 y(modify)f(it)h(under)g(the)g
-(terms)f(of)h(the)g(GNU)g(General)f(Public)g(License)390
-1746 y(as)h(published)e(by)j(the)f(Free)f(Software)g(Foundation;)e
-(either)j(version)e(2)390 1850 y(of)i(the)g(License,)f(or)h(\(at)g
-(your)f(option\))g(any)h(later)f(version.)390 2057 y(This)h(program)e
-(is)j(distributed)c(in)k(the)e(hope)h(that)g(it)g(will)g(be)g(useful,)
-390 2161 y(but)g(WITHOUT)f(ANY)h(WARRANTY;)e(without)h(even)g(the)h
-(implied)f(warranty)g(of)390 2265 y(MERCHANTABILITY)e(or)j(FITNESS)f
-(FOR)h(A)g(PARTICULAR)e(PURPOSE.)93 b(See)47 b(the)390
-2369 y(GNU)g(General)f(Public)g(License)g(for)h(more)f(details.)390
-2576 y(You)h(should)f(have)h(received)e(a)j(copy)e(of)h(the)g(GNU)g
-(General)f(Public)g(License)390 2680 y(along)g(with)h(this)g(program;)e
-(if)i(not,)g(write)f(to)i(the)e(Free)h(Software)390 2784
-y(Foundation,)e(Inc.,)h(675)h(Mass)g(Ave,)f(Cambridge,)f(MA)i(02139,)g
-(USA.)275 2930 y Fu(Also)30 b(add)f(information)g(on)h(ho)m(w)h(to)g
-(con)m(tact)i(y)m(ou)d(b)m(y)g(electronic)h(and)f(pap)s(er)f(mail.)275
-3076 y(If)f(the)g(program)h(is)e(in)m(teractiv)m(e,)j(mak)m(e)g(it)e
-(output)g(a)h(short)f(notice)h(lik)m(e)f(this)f(when)h(it)g(starts)h
-(in)e(an)150 3185 y(in)m(teractiv)m(e)k(mo)s(de:)390
-3325 y Fr(Gnomovision)45 b(version)h(69,)g(Copyright)g(\(C\))h(19)p
-Fm(yy)55 b(name)30 b(of)g(author)390 3429 y Fr(Gnomovision)45
-b(comes)h(with)h(ABSOLUTELY)e(NO)i(WARRANTY;)e(for)i(details)390
-3533 y(type)g(`show)f(w'.)95 b(This)46 b(is)h(free)g(software,)e(and)i
-(you)g(are)g(welcome)390 3637 y(to)g(redistribute)e(it)i(under)f
-(certain)g(conditions;)f(type)h(`show)h(c')390 3740 y(for)g(details.)
-275 3886 y Fu(The)27 b(h)m(yp)s(othetical)g(commands)h(`)p
-Fr(show)h(w)p Fu(')f(and)f(`)p Fr(show)j(c)p Fu(')d(should)f(sho)m(w)i
-(the)g(appropriate)f(parts)h(of)150 3996 y(the)38 b(General)g(Public)d
-(License.)63 b(Of)37 b(course,)j(the)f(commands)e(y)m(ou)h(use)g(ma)m
-(y)g(b)s(e)f(called)g(something)150 4106 y(other)25 b(than)f(`)p
-Fr(show)29 b(w)p Fu(')c(and)f(`)p Fr(show)29 b(c)p Fu(';)e(they)d
-(could)g(ev)m(en)h(b)s(e)f(mouse-clic)m(ks)g(or)h(men)m(u)f
-(items|whatev)m(er)150 4215 y(suits)29 b(y)m(our)h(program.)275
-4361 y(Y)-8 b(ou)28 b(should)e(also)i(get)h(y)m(our)f(emplo)m(y)m(er)g
-(\(if)f(y)m(ou)h(w)m(ork)g(as)h(a)f(programmer\))g(or)g(y)m(our)f(sc)m
-(ho)s(ol,)i(if)e(an)m(y)-8 b(,)150 4471 y(to)34 b(sign)f(a)g(\\cop)m
-(yrigh)m(t)i(disclaimer")c(for)j(the)f(program,)h(if)f(necessary)-8
-b(.)51 b(Here)34 b(is)e(a)i(sample;)g(alter)g(the)150
-4580 y(names:)390 4720 y Fr(Yoyodyne,)45 b(Inc.,)i(hereby)f(disclaims)f
-(all)i(copyright)390 4824 y(interest)f(in)h(the)g(program)e
-(`Gnomovision')390 4928 y(\(which)h(makes)g(passes)h(at)g(compilers\))e
-(written)390 5032 y(by)i(James)g(Hacker.)390 5239 y Fm(signature)30
-b(of)g(T)m(y)h(Co)s(on)p Fr(,)47 b(1)g(April)g(1989)390
-5343 y(Ty)g(Coon,)g(President)e(of)i(Vice)p eop
-%%Page: 8 13
-8 12 bop 150 -116 a Fu(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052
-b(8)275 299 y(This)19 b(General)h(Public)f(License)h(do)s(es)h(not)g(p)
-s(ermit)e(incorp)s(orating)g(y)m(our)i(program)f(in)m(to)h(proprietary)
-150 408 y(programs.)38 b(If)22 b(y)m(our)h(program)f(is)g(a)h
-(subroutine)e(library)-8 b(,)23 b(y)m(ou)g(ma)m(y)g(consider)f(it)g
-(more)h(useful)e(to)j(p)s(ermit)150 518 y(linking)33
-b(proprietary)i(applications)g(with)g(the)h(library)-8
-b(.)57 b(If)35 b(this)h(is)f(what)h(y)m(ou)h(w)m(an)m(t)g(to)g(do,)h
-(use)e(the)150 628 y(GNU)31 b(Library)e(General)h(Public)e(License)i
-(instead)f(of)i(this)e(License.)p eop
-%%Page: 9 14
-9 13 bop 150 -116 a Fu(Cop)m(ying)30 b(summary)2828 b(9)150
-299 y Fp(Cop)l(ying)53 b(summary)275 533 y Fu(GIMP-Prin)m(t)35
-b(is)g Fm(free)5 b Fu(;)40 b(this)35 b(means)h(that)h(ev)m(ery)m(one)g
-(is)e(free)i(to)f(use)g(it)g(and)f(free)i(to)f(redistribute)150
-643 y(it)j(on)g(a)h(free)g(basis.)66 b(GIMP-Prin)m(t)39
-b(is)g(not)g(in)f(the)i(public)d(domain;)43 b(it)c(is)f(cop)m(yrigh)m
-(ted)i(and)f(there)150 752 y(are)30 b(restrictions)e(on)h(its)g
-(distribution,)d(but)j(these)g(restrictions)f(are)i(designed)e(to)i(p)s
-(ermit)e(ev)m(erything)150 862 y(that)h(a)g(go)s(o)s(d)g(co)s(op)s
-(erating)f(citizen)g(w)m(ould)g(w)m(an)m(t)h(to)h(do.)40
-b(What)29 b(is)f(not)h(allo)m(w)m(ed)f(is)g(to)h(try)g(to)g(prev)m(en)m
-(t)150 971 y(others)h(from)g(further)f(sharing)g(an)m(y)i(v)m(ersion)f
-(of)g(GIMP-Prin)m(t)h(that)f(they)h(migh)m(t)f(get)i(from)e(y)m(ou.)275
-1106 y(Sp)s(eci\014cally)-8 b(,)26 b(w)m(e)i(w)m(an)m(t)g(to)g(mak)m(e)
-h(sure)d(that)j(y)m(ou)e(ha)m(v)m(e)i(the)f(righ)m(t)f(to)h(giv)m(e)g
-(a)m(w)m(a)m(y)h(copies)f(of)f(GIMP-)150 1215 y(Prin)m(t,)36
-b(that)g(y)m(ou)f(receiv)m(e)i(source)e(co)s(de)h(or)f(else)g(can)h
-(get)g(it)f(if)f(y)m(ou)i(w)m(an)m(t)g(it,)h(that)f(y)m(ou)f(can)h(c)m
-(hange)150 1325 y(GIMP-Prin)m(t)31 b(or)g(use)g(pieces)g(of)h(it)e(in)g
-(new)h(free)g(programs,)h(and)e(that)i(y)m(ou)g(kno)m(w)f(y)m(ou)h(can)
-f(do)g(these)150 1435 y(things.)275 1569 y(T)-8 b(o)37
-b(mak)m(e)g(sure)f(that)i(ev)m(ery)m(one)g(has)e(suc)m(h)h(righ)m(ts,)h
-(w)m(e)f(ha)m(v)m(e)h(to)f(forbid)e(y)m(ou)i(to)g(depriv)m(e)f(an)m(y)m
-(one)150 1679 y(else)28 b(of)f(these)i(righ)m(ts.)39
-b(F)-8 b(or)28 b(example,)g(if)f(y)m(ou)h(distribute)d(copies)j(of)g
-(GIMP-Prin)m(t,)g(y)m(ou)g(m)m(ust)g(giv)m(e)g(the)150
-1788 y(recipien)m(ts)k(all)g(the)h(righ)m(ts)f(that)i(y)m(ou)f(ha)m(v)m
-(e.)50 b(Y)-8 b(ou)34 b(m)m(ust)f(mak)m(e)h(sure)e(that)i(they)-8
-b(,)34 b(to)s(o,)h(receiv)m(e)f(or)f(can)150 1898 y(get)f(the)e(source)
-h(co)s(de.)41 b(And)29 b(y)m(ou)i(m)m(ust)f(tell)g(them)g(their)f(righ)
-m(ts.)275 2032 y(Also,)34 b(for)f(our)g(o)m(wn)h(protection,)g(w)m(e)g
-(m)m(ust)g(mak)m(e)g(certain)g(that)g(ev)m(ery)m(one)h(\014nds)d(out)i
-(that)g(there)150 2142 y(is)29 b(no)g(w)m(arran)m(t)m(y)h(for)g
-(GIMP-Prin)m(t.)40 b(If)29 b(GIMP-Prin)m(t)g(is)g(mo)s(di\014ed)e(b)m
-(y)i(someone)i(else)e(and)g(passed)g(on,)150 2252 y(w)m(e)34
-b(w)m(an)m(t)g(their)f(recipien)m(ts)f(to)i(kno)m(w)f(that)h(what)g
-(they)f(ha)m(v)m(e)i(is)d(not)i(what)f(w)m(e)h(distributed,)e(so)h
-(that)150 2361 y(an)m(y)e(problems)d(in)m(tro)s(duced)h(b)m(y)h(others)
-h(will)d(no)i(re\015ect)h(on)f(our)g(reputation.)p eop
-%%Page: 10 15
-10 14 bop 150 -116 a Fu(Chapter)30 b(1:)41 b(Ov)m(erview)2672
-b(10)150 299 y Fp(1)80 b(Ov)l(erview)275 533 y Fu(The)44
-b(GIMP-Prin)m(t)h(pac)m(k)-5 b(age)48 b(is)c(a)i(collection)f(of)g
-(programs)g(and)g(a)h(library)d(for)i(high)f(qualit)m(y)150
-643 y(prin)m(ting)31 b(on)j(mo)s(dern)e(inkjets,)h(including)d
-(`photographic)j(qualit)m(y')g(mo)s(dels)f(whic)m(h)h(o\013er)g(v)m
-(ery)h(high)150 752 y(resolutions)29 b(and)h(sev)m(eral)g(inks.)275
-887 y(MET)-8 b(A:)31 b(Short)e(history)h(of)g(the)h(pro)5
-b(ject)275 1021 y(GIMP-Prin)m(t)25 b(is)g(the)i(prin)m(t)d(facilit)m(y)
-h(of)i(the)f Fm(GNU)h(Image)f(Manipulation)e(Program)i
-Fu(\(GIMP\).)i(It)e(is)150 1131 y(in)h(addition)g(a)i(suite)f(of)g
-(driv)m(ers)f(that)i(ma)m(y)g(b)s(e)f(used)g(with)f(common)i(UNIX)g(sp)
-s(o)s(oling)d(systems)i(using)150 1240 y(GhostScript)23
-b(or)i(CUPS.)e(These)i(driv)m(ers)e(pro)m(vide)g(prin)m(ting)f(qualit)m
-(y)i(for)g(UNIX/Lin)m(ux)f(on)i(a)f(par)g(with)150 1350
-y(proprietary)32 b(v)m(endor-supplied)f(driv)m(ers)h(in)g(man)m(y)i
-(cases,)h(and)e(can)h(b)s(e)f(used)f(for)i(man)m(y)f(of)h(the)g(most)
-150 1460 y(demanding)24 b(prin)m(ting)g(tasks.)40 b(The)25
-b(core)i(of)f(GIMP-Prin)m(t)f(is)g(a)h(shared)g(library)d
-(\(libgimpprin)m(t\))f(whic)m(h)150 1569 y(ma)m(y)31
-b(b)s(e)f(used)f(b)m(y)i(an)m(y)f(program)g(that)h(wishes)e(to)i(pro)s
-(duce)f(high-qulait)m(y)e(prin)m(ted)h(output.)p eop
-%%Page: 11 16
-11 15 bop 150 -116 a Fu(Chapter)30 b(2:)41 b(Using)29
-b(libgimpprin)m(t)2292 b(11)150 299 y Fp(2)80 b(Using)54
-b(libgimpprin)l(t)275 533 y Fu(This)28 b(c)m(hapter)j(describ)s(es)e
-(ho)m(w)h(to)h(write)f(programs)g(that)h(use)f(libgimpprin)m(t.)150
-790 y Ft(2.1)68 b(Co)t(de)45 b(prerequisites)275 983
-y Fu(T)-8 b(o)30 b(use)g(libgimpprin)m(t)c(with)j(a)i(program,)g(sev)m
-(eral)f(steps)h(m)m(ust)f(b)s(e)g(tak)m(en:)199 1117
-y(1.)61 b(Include)29 b(the)h(master)h(libgimpprin)m(t)26
-b(header)k Fr(<gimp-print/gimp-print.h>)o(.)199 1252
-y Fu(2.)61 b(Call)29 b Fr(stp_init\(\))p Fu(.)199 1386
-y(3.)61 b(Link)29 b(with)g(libgimpprin)m(t.)275 1546
-y(The)k(follo)m(wing)f(is)h(a)h(short)g(example)g(program.)51
-b(It)34 b(do)s(es)f(not)h(do)g(an)m(ything)f(useful,)h(but)f(it)g(do)s
-(es)150 1655 y(ev)m(erything)d(required)f(to)i(link)d(with)h
-(libgimpprin)m(t)d(and)k(call)g(other)g(functions)f(from)h(libgimpprin)
-m(t.)390 1784 y Fr(#include)46 b(<gimp-print/gimp-print.)o(h>)390
-1992 y(int)390 2095 y(main)h(\(int)f(argc,)h(char)f(*argv[]\))390
-2199 y({)485 2303 y(stp_init)g(\(\);)485 2407 y(return)h(\(0\);)390
-2511 y(})150 2768 y Ft(2.2)68 b(Linking)45 b(with)g(libgimpprin)l(t)275
-2961 y Fu(T)-8 b(o)41 b(link)f(a)h(program)g(with)f(libgimpprin)m(t,)g
-(then)h(`)p Fr(-lgimpprint)p Fu(')e(needs)i(to)h(b)s(e)f(passed)g(to)h
-(the)150 3070 y(compiler)28 b(when)g(linking.)37 b(F)-8
-b(or)30 b(example,)f(to)h(compile)e(and)h(link)e(`)p
-Fr(prog.c)p Fu(')g(the)j(follo)m(wing)d(commands)150
-3180 y(w)m(ould)i(b)s(e)h(used:)390 3308 y Fr(gcc)47
-b(-c)g(prog.c)390 3412 y(gcc)g(-o)g(prog)g(-lgimpprint)d(prog.o)275
-3547 y Fu(The)34 b(compiler)g(and)g(link)m(er)g(\015ags)h(needed)g(ma)m
-(y)g(v)-5 b(ary)35 b(dep)s(ending)e(on)i(the)g(options)f(GIMP-Prin)m(t)
-150 3656 y(w)m(as)d(con\014gured)e(with)h(when)f(it)h(w)m(as)h(built.)
-38 b(The)30 b Fr(gimpprint-config)c Fu(script)k(will)d(giv)m(e)k(the)g
-(correct)150 3766 y(parameters)g(for)f(the)g(lo)s(cal)g(installation)e
-(\(see)k(Section)e(3.1)h([gimpprin)m(t-con\014g],)f(page)h(12\).)p
-eop
-%%Page: 12 17
-12 16 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(In)m(tegrating)31
-b(libgimpprin)m(t)2077 b(12)150 299 y Fp(3)80 b(In)l(tegrating)53
-b(libgimpprin)l(t)275 568 y Fu(This)38 b(c)m(hapter)i(describ)s(es)e
-(ho)m(w)i(to)g(in)m(tegrate)h(the)f(compiling)e(and)h(linking)e(of)j
-(programs)f(using)150 678 y(libgimpprin)m(t)21 b(with)i(build)f
-(scripts.)38 b(Commonly)24 b(used)g(systems)h(include)e
-Fr(make)p Fu(,)i(but)f(more)h(commonly)150 787 y(`)p
-Fr(Makefile)p Fu(')k(\014les)g(are)i(generated)g(b)m(y)f(using)f(to)s
-(ols)h(suc)m(h)h(as)f Fr(autoconf)e Fu(and)i Fr(automake)p
-Fu(.)150 1074 y Ft(3.1)68 b Fl(gimpprint-conf)o(ig)275
-1279 y Fu(Dep)s(ending)33 b(on)h(the)h(setup)f(of)h(the)g(computer)f
-(system)h(GIMP-Prin)m(t)f(w)m(as)h(installed)d(on,)k(as)f(w)m(ell)150
-1388 y(as)h(the)g(options)g(passed)f(to)i Fr(configure)c
-Fu(when)i(con\014guring)g(the)h(pac)m(k)-5 b(age)38 b(when)d(it)g(w)m
-(as)h(built,)g(the)150 1498 y Fr(CFLAGS)30 b Fu(and)h
-Fr(LIBS)f Fu(parameters)i(needed)f(to)i(compile)d(and)h(link)f
-(programs)h(with)f(libgimpprin)m(t)d(ma)m(y)150 1607
-y(v)-5 b(ary)d(.)82 b(T)-8 b(o)44 b(mak)m(e)h(it)f(simple)e(to)j
-(determine)e(what)h(these)g(are)h(on)f(an)m(y)g(giv)m(en)g(system,)k
-(the)c(script)150 1717 y Fr(gimpprint-config)28 b Fu(w)m(as)k(created.)
-47 b(It's)32 b(job)f(is)g(to)i(output)f(the)g(correct)h(parameters)f
-(for)g(the)g(setup)150 1827 y(on)e(y)m(our)h(system.)40
-b(The)30 b(follo)m(wing)f(options)h(are)h(a)m(v)-5 b(ailable:)390
-1967 y Fr(roger@whinlatter:~/gimpp)o(rint)o(/dev)o(el$)41
-b(gimpprint-config)j(--help)390 2071 y(Usage:)i(gimpprint-config)d
-([OPTIONS])j([LIBRARIES])390 2175 y(Options:)772 2278
-y([--prefix[=DIR]])772 2382 y([--exec-prefix[=DIR]])772
-2486 y([--version])772 2590 y([--libs])772 2693 y([--cflags])390
-2797 y(Libraries:)772 2901 y(gimpprint)275 3047 y Fu(The)31
-b(`)p Fr(--prefix)p Fu(')g(and)g(`)p Fr(--exec-prefix)p
-Fu(')e(options)j(are)g(only)f(needed)h(if)f(the)i(installed)c(lo)s
-(cations)150 3157 y(of)j(parts)f(of)h(GIMP-Prin)m(t)f(are)h(di\013eren)
-m(t)f(from)g(the)g(con\014gured)g(lo)s(cations.)44 b(These)31
-b(should)f(nev)m(er)i(b)s(e)150 3266 y(needed)e(if)f(GIMP-Prin)m(t)h(w)
-m(as)h(prop)s(erly)d(con\014gured)i(and)g(installed.)275
-3413 y(The)f(installed)g(v)m(ersion)g(of)i(GIMP-Prin)m(t)f(can)h(b)s(e)
-e(obtained)h(with)f(the)i(`)p Fr(--version)p Fu(')d(option:)390
-3553 y Fr(roger@whinlatter:~/gimpp)o(rint)o(/dev)o(el$)41
-b(gimpprint-config)j(--version)390 3657 y(4.2.7)275 3803
-y Fu(The)29 b(correct)j Fr(CFLAGS)d Fu(to)i(use)f(can)g(b)s(e)g
-(obtained)g(with)f(the)i(`)p Fr(--cflags)p Fu(')d(option:)390
-3944 y Fr(roger@whinlatter:~/gimpp)o(rint)o(/dev)o(el$)41
-b(gimpprint-config)j(--cflags)275 4194 y Fu(In)29 b(this)g(case,)j
-(there)f(are)f(no)h(sp)s(ecial)e Fr(CFLAGS)f Fu(required)h(to)i
-(compile)e(programs.)275 4340 y(The)g(correct)j Fr(LIBS)d
-Fu(to)i(use)f(can)h(the)g(obtained)e(with)g(the)i(`)p
-Fr(--libs)p Fu(')e(option:)390 4480 y Fr(roger@whinlatter:~/gimpp)o
-(rint)o(/dev)o(el$)41 b(gimpprint-config)j(--libs)390
-4584 y(-L/usr/lib)h(-lgimpprint)g(-lm)275 4730 y Fu(The)29
-b(command)i(can)f(b)s(e)g(used)g(from)f(the)i(shell)e(b)m(y)h
-(enclosing)f(it)h(in)f(bac)m(kquotes)j(`)p Fr(`)p Fu(':)390
-4871 y Fr(gcc)47 b(`gimpprint-config)c(--cflags`)i(-c)i(prog.c)390
-4975 y(gcc)g(`gimpprint-config)c(--libs`)j(-o)h(prog)g(prog.o)275
-5121 y Fu(Ho)m(w)m(ev)m(er,)40 b(this)35 b(is)h(not)h(the)g(w)m(a)m(y)g
-(it)f(it)g(t)m(ypically)g(used.)58 b(Normally)36 b(it)g(is)g(used)f(in)
-h(a)h(`)p Fr(Makefile)p Fu(')150 5230 y(\(see)31 b(Section)f(3.2)h
-([mak)m(e],)h(page)f(13\))h(or)e(b)m(y)g(an)g Fr(m4)g
-Fu(macro)g(in)f(a)i Fr(configure)d Fu(script)h(\(see)i(Section)f(3.3)
-150 5340 y([auto)s(conf)7 b(],)32 b(page)f(13\).)p eop
-%%Page: 13 18
-13 17 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(In)m(tegrating)31
-b(libgimpprin)m(t)2077 b(13)150 299 y Ft(3.2)68 b Fl(make)275
-490 y Fu(If)28 b(y)m(ou)h(use)f Fr(make)f Fu(with)h(y)m(our)g(o)m(wn)h
-(`)p Fr(Makefile)p Fu(')e(\014les,)h(then)g(y)m(ou)h(are)g(on)g(y)m
-(our)g(o)m(wn.)40 b(This)27 b(man)m(ual)150 599 y(o\013ers)k(no)f
-(assistance)h(with)e(doing)g(this.)40 b(Only)29 b(the)h(follo)m(wing)f
-(suggestion)h(is)g(o\013ered:)390 726 y Fr(GIMPPRINT_VERSION)43
-b(=)48 b($\(shell)d(gimpprint-config)f(--version\))390
-830 y(GIMPPRINT_CFLAGS)f(=)48 b($\(shell)e(gimpprint-config)d
-(--cflags\))390 934 y(GIMPPRINT_LIBS)h(=)j($\(shell)f(gimpprint-config)
-e(--libs\))275 1067 y Fu(Ho)m(w)35 b(y)m(ou)g(c)m(ho)s(ose)h(to)f(use)g
-(these)g(v)-5 b(ariables)33 b(is)h(en)m(tirely)g(up)g(to)h(y)m(ou.)54
-b(See)35 b(Info)f(\014le)g(`)p Fr(make)p Fu(',)i(no)s(de)150
-1176 y(`)p Fr(Top)p Fu(',)30 b(for)g(more)h(information.)150
-1429 y Ft(3.3)68 b Fl(autoconf)275 1619 y Fu(The)32 b
-Fr(autoconf)g Fu(program)h(pro)s(duces)f(a)i(Bourne)f(shell)e(script)i
-(called)f(`)p Fr(configure)p Fu(')g(from)g(a)i(tem-)150
-1729 y(plate)28 b(\014le)g(called)f(`)p Fr(configure.in)p
-Fu('.)37 b(`)p Fr(configure.in)p Fu(')26 b(con)m(tains)j(b)s(oth)e
-(Bourne)h(shell)f(script,)h(and)g Fr(m4)150 1839 y Fu(macros.)40
-b Fr(autoconf)23 b Fu(expands)i(the)h Fr(m4)f Fu(macros)i(in)m(to)f
-(`real')g(shell)e(script.)38 b(The)25 b(resulting)f(`)p
-Fr(configure)p Fu(')150 1948 y(script)39 b(p)s(erforms)f(v)-5
-b(arious)39 b(c)m(hec)m(ks)j(for)d(installed)f(programs,)k(compiler)d
-(c)m(haracteristics)h(and)g(other)150 2058 y(system)34
-b(information)f(suc)m(h)g(as)i(a)m(v)-5 b(ailable)33
-b(headers)h(and)f(libraries.)49 b(See)34 b(Info)g(\014le)f(`)p
-Fr(autoconf)p Fu(',)h(no)s(de)150 2167 y(`)p Fr(Top)p
-Fu(',)c(for)g(more)h(information.)275 2300 y(GIMP-Prin)m(t)67
-b(pro)m(vides)g(an)h Fr(m4)g Fu(macro,)78 b Fr(AM_PATH_GIMPPRINT)p
-Fu(,)73 b(suitable)67 b(for)h(use)g(in)f(a)150 2410 y(`)p
-Fr(configure.in)p Fu('.)36 b(It)26 b(de\014nes)f(the)g(en)m(vironmen)m
-(t)g(v)-5 b(ariables)25 b Fr(GIMPPRINT_CFLAGS)p Fu(,)d
-Fr(GIMPPRINT_LIBS)150 2519 y Fu(and)36 b Fr(GIMPPRINT_CONFIG)p
-Fu(.)54 b(Y)-8 b(ou)37 b(can)g(optionally)e(sp)s(ecify)g(a)i(minim)m
-(um)c(v)m(ersion)j(of)h(the)f(library)e(to)150 2629 y(use,)c(and)g
-(shell)f(script)g(to)i(run)e(if)g(the)i(test)g(suceeds)f(or)h(fails.)
-3624 2855 y(Macro)-3723 b Fk(AM)p 353 2855 35 5 v 41
-w(P)-10 b(A)g(TH)p 709 2855 V 41 w(GIMPPRINT)46 b Fj(\()p
-Fi([)p Fm(minim)m(um-v)m(ersion)28 b Fi([)p Fm(,)j(action-if-found)i
-Fi([)p Fm(,)565 2964 y(action-if-not-found)t Fi(]]])p
-Fj(\))390 3074 y Fu(Chec)m(k)42 b(for)g(an)g(installed)e(v)m(ersion)h
-(of)h(GIMP-Prin)m(t)g(greater)h(than)f(or)g(equal)g(to)g
-Fm(minim)m(um-)390 3183 y(v)m(ersion)p Fu(.)390 3316
-y Fm(action-if-found)29 b Fu(is)e(a)g(list)f(of)h(shell)e(commands)i
-(to)h(run)e(if)g(the)h(c)m(hec)m(k)i(for)d(the)i(library)c(succeeds;)
-390 3426 y Fm(action-if-not-found)33 b Fu(is)d(a)g(list)f(of)i(shell)e
-(commands)h(to)h(run)e(if)g(the)i(c)m(hec)m(k)g(fails.)390
-3559 y(The)23 b(macro)h(sets)g(the)g(follo)m(wing)e(en)m(vironmen)m(t)h
-(v)-5 b(ariables:)36 b Fr(GIMPPRINT_CFLAGS)p Fu(,)21
-b Fr(GIMPPRINT_)390 3668 y(LIBS)37 b Fu(and)g Fr(GIMPPRINT_CONFIG)p
-Fu(.)59 b(It)38 b(also)g(will)e(substitute)g(them)i(in)m(to)g(an)m(y)h
-(`)p Fr(Makefile.in)p Fu(')390 3778 y(y)m(ou)33 b(sp)s(ecify)e(in)g
-Fr(AC_OUTPUT)f Fu(b)s(ecause)i(it)g(calls)g Fr(AC_SUBST)e
-Fu(for)i(eac)m(h)i(of)e(them.)47 b(Ho)m(w)m(ev)m(er,)36
-b(y)m(ou)390 3887 y(will)23 b(probably)h(b)s(e)h(using)g
-Fr(automake)e Fu(to)k(generate)g(y)m(our)f(`)p Fr(Makefile.in)p
-Fu(')e(\014les)g(\(see)j(Section)f(3.4)390 3997 y([automak)m(e],)33
-b(page)e(13\).)150 4249 y Ft(3.4)68 b Fl(automake)275
-4440 y Fu(The)25 b Fr(automake)e Fu(program)j(can)g(b)s(e)f(used)g(to)h
-(generate)h(`)p Fr(Makefile.in)p Fu(')c(\014les)i(suitable)f(for)i(use)
-f(with)150 4550 y(a)31 b(`)p Fr(configure)p Fu(')d(script)h(generated)i
-(b)m(y)f Fr(autoconf)p Fu(.)39 b(As)30 b Fr(automake)e
-Fn(r)-5 b(e)g(quir)g(es)38 b Fr(autoconf)p Fu(,)29 b(this)g(section)150
-4659 y(will)20 b(assume)i(the)g(use)g(of)h(a)g(`)p Fr(configure)p
-Fu(')d(script)h(whic)m(h)g(uses)h(the)h Fr(AM_PATH_GIMPPRINT)17
-b Fu(macro)23 b(\(there)150 4769 y(is)29 b(little)h(p)s(oin)m(t)f(in)g
-Fn(not)40 b Fu(using)29 b(it!\).)275 4902 y(It)35 b(is)f(highly)f
-(recommeded)j(that)g(y)m(ou)f(use)g(GNU)h Fr(autoconf)d
-Fu(and)i Fr(automake)p Fu(.)53 b(They)35 b(will)d(allo)m(w)150
-5011 y(y)m(ou)f(to)g(mak)m(e)h(y)m(our)e(soft)m(w)m(are)i(build)27
-b(on)k(most)g(platforms)e(with)g(most)i(compilers.)40
-b Fr(automake)28 b Fu(mak)m(es)150 5121 y(writing)37
-b(complex)i(`)p Fr(Makefile)p Fu(')e(\014les)h(v)m(ery)h(easy)-8
-b(,)42 b(b)m(y)d(expressing)f(ho)m(w)h(to)h(build)c(y)m(our)i(pac)m(k)
--5 b(ages)41 b(in)150 5230 y(terms)h(of)g(what)g(\014les)f(are)i
-(required)d(to)j(build)c(a)j(pro)5 b(ject)42 b(and)g(the)g
-(installation)e(lo)s(cations)i(of)g(the)150 5340 y(\014les.)57
-b(It)37 b(imp)s(oses)d(a)j(few)f(limitations)e(o)m(v)m(er)k(using)c
-(plain)h(`)p Fr(Makefile)p Fu(')f(\014les,)j(suc)m(h)f(as)g(in)f(the)i
-(use)f(of)p eop
-%%Page: 14 19
-14 18 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(In)m(tegrating)31
-b(libgimpprin)m(t)2077 b(14)150 299 y(conditionals,)39
-b(but)e(these)i(problems)e(are)h(v)-5 b(astly)38 b(out)m(w)m(eighed)h
-(b)m(y)f(the)h(b)s(ene\014ts)e(it)h(brings.)63 b(It)38
-b(also)150 408 y(creates)c(man)m(y)f(extra)g(targets)h(in)d(the)i
-(generated)g(`)p Fr(Makefile.in)p Fu(')d(\014les)i(suc)m(h)g(as)h
-Fr(dist)p Fu(,)f Fr(distcheck)p Fu(,)150 518 y Fr(clean)p
-Fu(,)27 b Fr(distclean)p Fu(,)f Fr(maintainer-clean)d
-Fu(and)k Fr(tags)p Fu(,)g(and)g(there)h(are)g(man)m(y)g(more)g(more)f
-(a)m(v)-5 b(ailable.)150 628 y(See)31 b(Info)e(\014le)h(`)p
-Fr(automake)p Fu(',)f(no)s(de)h(`)p Fr(Top)p Fu(',)g(for)g(more)g
-(information.)275 762 y(Because)89 b Fr(AM_PATH_GIMPPRINT)83
-b Fu(calls)88 b Fr(AC_SUBST)d Fu(to)k(substitute)e Fr(GIMPPRINT_CFLAGS)
-p Fu(,)150 872 y Fr(GIMPPRINT_LIBS)30 b Fu(and)j Fr(GIMPPRINT_CONFIG)p
-Fu(,)d Fr(automake)h Fu(will)g(automatically)j(set)g(these)g(v)-5
-b(ariables)150 981 y(in)29 b(the)i(`)p Fr(Makefile.in)p
-Fu(')c(\014les)j(it)g(generates,)i(requiring)c(no)i(additional)e
-(e\013ort)j(on)g(y)m(our)f(part!)275 1116 y(As)d(in)f(previous)g
-(examples,)h(w)m(e)h(will)d(mak)m(e)j(a)g(program)f Fr(prog)f
-Fu(from)h(a)h(\014le)e(`)p Fr(prog.c)p Fu('.)39 b(This)26
-b(is)g(ho)m(w)150 1225 y(one)31 b(migh)m(t)f(build)d(write)j(a)g(`)p
-Fr(Makefile.am)p Fu(')e(to)j(do)g(this:)390 1354 y Fr(AUTOMAKE_OPTIONS)
-43 b(=)48 b(1.4)f(gnu)390 1458 y(MAINT_CHARSET)d(=)k(latin1)390
-1665 y(@SET_MAKE@)390 1873 y(CFLAGS)e(=)i(@CFLAGS@)390
-2081 y(INCLUDES)e(=)h(@INCLUDES@)e($\(GIMPPRINT_CFLAGS\))390
-2288 y(bin_PROGRAMS)f(=)k(prog)390 2392 y(prog_SOURCES)c(=)k(prog.c)390
-2496 y(prog_LDADD)d(=)i($\(GIMPPRINT_LIBS\))390 2703
-y(MAINTAINERCLEANFILES)42 b(=)48 b(Makefile.in)275 2838
-y Fu(That's)27 b(all)e(there)j(is)e(to)i(it!)39 b(Please)27
-b(note)h(that)f(this)f(example)h(also)g(requires)e(the)j(macro)f
-Fr(AC_PROG_)150 2947 y(MAKE_SET)g Fu(to)i(b)s(e)g(used)f(in)g(`)p
-Fr(configure.in)p Fu(')e(and)i(the)h(use)g(of)g Fr(AC_SUBST)e
-Fu(to)i(substitute)f Fr(CFLAGS)g Fu(and)150 3057 y Fr(INCLUDES)g
-Fu(where)i Fr(@CFLAGS@)e Fu(and)i Fr(@INCLUDES@)d Fu(are)k(found)e(in)g
-(the)i(\014le,)f(resp)s(ectiv)m(ely)-8 b(.)p eop
-%%Page: 15 20
-15 19 bop 150 -116 a Fu(Chapter)30 b(4:)41 b(F)-8 b(unctions)2658
-b(15)150 299 y Fp(4)80 b(F)-13 b(unctions)275 499 y Fu(This)37
-b(section)j(of)g(the)g(man)m(ual)f(is)g(a)h(complete)g(reference)h(to)f
-(all)f(of)h(the)g(functions)e(comprising)150 608 y(libgimpprin)m(t,)26
-b(with)j(examples.)275 736 y(All)i(of)j(the)f(libgimpprin)m(t)c
-(functions)j(can)h(b)s(e)g(declared)f(b)m(y)i(including)29
-b(the)34 b(master)f(libgimpprin)m(t)150 845 y(header,)e(`)p
-Fr(<gimp-print/gimp-print.h>)o Fu('.)36 b(This)29 b(should)g(b)s(e)h
-(done)g(in)g(ev)m(ery)h(source)g(\014le)f(that)h(uses)150
-955 y(gimpprin)m(t)d(functions)h(b)m(y)h(putting)390
-1077 y Fr(#include)46 b(<gimp-print/gimp-print.)o(h>)150
-1204 y Fu(at)31 b(the)g(top)f(of)h(eac)m(h)g(\014le.)150
-1441 y Ft(4.1)68 b(Main)45 b(functions)275 1627 y Fu(These)40
-b(functions)f(are)i(essen)m(tial)f(to)i(the)f(correct)g(functioning)e
-(of)i(libgimpprin)m(t.)67 b(All)39 b(or)i(most)150 1736
-y(other)32 b(functions)e(in)g(the)h(library)e(dep)s(end)h(absolutely)g
-(up)s(on)g(them.)43 b(In)31 b(the)h(case)g(of)f Fr(stp_init)p
-Fu(,)f(this)150 1846 y(function)f Fn(must)39 b Fu(b)s(e)30
-b(called)g(b)s(efore)g(an)m(y)h(of)f(the)h(other)f(functions)f(in)g
-(the)i(library)-8 b(.)3525 2046 y(F)g(unction)-3725 b
-Fh(int)39 b Fk(stp)p 506 2046 35 5 v 41 w(init)44 b Fj(\()p
-Fr(void)p Fj(\))390 2155 y Fu(This)d(function)g(initialises)e(the)k
-(libgimpprin)m(t)38 b(library)-8 b(.)75 b(It)43 b(m)m(ust)f(b)s(e)g
-(called)g(b)s(efore)g(an)m(y)h(of)390 2265 y(the)35 b(other)g
-(libgimpprin)m(t)30 b(functions)j(are)i(called.)53 b(It)35
-b(is)e(resp)s(onsible)f(for)i(setting)h(up)f(message)390
-2374 y(catalogues)c(\(for)e(in)m(ternationalisation\).)39
-b(This)26 b(function)h(ma)m(y)i(b)s(e)f(called)f(more)h(than)h(once,)g
-(at)390 2484 y(an)m(y)i(stage)h(during)c(the)i(execution)h(of)f(a)h
-(program.)390 2612 y(It)f(returns)g(zero)h(on)f(success,)h(nonzero)g
-(on)f(failure.)275 2775 y Fr(stp_init)e Fu(migh)m(t)i(b)s(e)f(used)h
-(as)h(follo)m(ws:)390 2897 y Fr(int)390 3001 y(main)47
-b(\(int)f(argc,)h(char)f(**argv\))390 3105 y({)485 3208
-y(stp_init\(\);)485 3416 y(...)390 3623 y(})3525 3823
-y Fu(F)-8 b(unction)-3725 b Fh(void)39 b(*)g Fk(stp)p
-649 3823 V 41 w(mallo)s(c)45 b Fj(\()p Fr(size_t)29 b
-Fm(size)5 b Fj(\))390 3933 y Fu(Where)31 b Fm(size)k
-Fu(is)29 b(the)i(amoun)m(t)g(of)f(memory)h(to)g(allo)s(cate)g(\(in)e(b)
-m(ytes\).)390 4060 y(This)42 b(function)h(allo)s(cates)i(memory)-8
-b(.)82 b(It)45 b(will)c(alw)m(a)m(ys)k(return)e(a)h(p)s(oin)m(ter)g(to)
-h(the)f(allo)s(cated)390 4170 y(memory)-8 b(.)41 b(It)31
-b(will)c(not)k(return)e(on)h(failure.)390 4298 y(It)g(returns)g(a)g(p)s
-(oin)m(ter)g(to)h(the)f(allo)s(cated)h(memory)-8 b(.)150
-4534 y Ft(4.2)68 b Fl(stp_vars_t)40 b Ft(functions)3474
-4792 y Fu(Data)32 b(t)m(yp)s(e)-3724 b Fh(void)39 b(*)g
-Fk(stp)p 649 4792 V 41 w(v)-6 b(ars)p 892 4792 V 41 w(t)390
-4902 y Fu(This)38 b(is)h(an)h(opaque)g(data)h(t)m(yp)s(e,)i(whose)d
-(structure)f(is)g(not)h(visible)e(to)j(the)f(user.)69
-b(This)38 b(ob-)390 5011 y(ject)e(con)m(tains)f(all)f(of)i(the)f
-(information)f(ab)s(out)h(settings)g(for)g(a)g(giv)m(en)g(prin)m(ter,)h
-(suc)m(h)e(as)i(color)390 5121 y(\(con)m(trast,)47 b(brigh)m(tness\),)e
-(the)e(t)m(yp)s(e)f(of)h(prin)m(ter,)h(the)f(dithering)d(algorithm)h
-(in)h(use,)j(and)d(so)390 5230 y(forth.)d(Please)25 b(see)h(the)g
-Fr(stp_set_*)c Fu(and)j Fr(stp_get_*)e Fu(functions)h(b)s(elo)m(w)g
-(for)h(the)h(accessors)h(and)390 5340 y(m)m(utators)k(for)f(this)g
-(data)h(t)m(yp)s(e.)p eop
-%%Page: 16 21
-16 20 bop 150 -116 a Fu(Chapter)30 b(4:)41 b(F)-8 b(unctions)2658
-b(16)3525 299 y(F)-8 b(unction)-3725 b Fh(stp_vars_t)41
-b Fk(stp)p 872 299 35 5 v 41 w(allo)s(cate)p 1298 299
-V 40 w(v)-6 b(ars)45 b Fj(\()p Fr(void)p Fj(\))390 408
-y Fu(Allo)s(cate)31 b(a)f(new)g Fr(stp_vars_t)e Fu(with)h(default)g
-(settings)i(for)f(all)f(mem)m(b)s(ers.)3525 628 y(F)-8
-b(unction)-3725 b Fh(void)39 b Fk(stp)p 558 628 V 41
-w(cop)m(y)p 828 628 V 41 w(v)-6 b(ars)46 b Fj(\()p Fr(stp_vars_t)28
-b Fm(vd)p Fr(,)h(const)g(stp_vars_t)f Fm(vs)t Fj(\))390
-737 y Fu(Cop)m(y)i(the)h(settings)f(from)g Fm(vs)k Fu(to)d
-Fm(vd)p Fu(.)3525 956 y(F)-8 b(unction)-3725 b Fh(stp_vars_t)41
-b Fk(stp)p 872 956 V 41 w(allo)s(cate)p 1298 956 V 40
-w(cop)m(y)k Fj(\()p Fr(const)29 b(stp_vars_t)f Fm(vs)t
-Fj(\))390 1066 y Fu(Allo)s(cate)j(a)f(new)g Fr(stp_vars_t)p
-Fu(,)e(cop)m(ying)i(settings)h(from)f Fm(vs)p Fu(.)3525
-1285 y(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p 558
-1285 V 41 w(free)p 787 1285 V 41 w(v)-6 b(ars)45 b Fj(\()p
-Fr(stp_vars_t)28 b Fm(vv)8 b Fj(\))390 1395 y Fu(F)-8
-b(ree)31 b(all)e(resources)i(asso)s(ciated)f(with)f Fm(vv)p
-Fu(.)41 b Fm(vv)d Fu(m)m(ust)30 b(not)h(b)s(e)e(used)h(in)f(an)m(y)h(w)
-m(a)m(y)h(follo)m(wing)e(this)390 1504 y(call.)3525 1724
-y(F)-8 b(unction)-3725 b Fh(const)40 b(char)f(*)g Fk(stp)p
-949 1724 V 40 w(get)p 1144 1724 V 41 w(output)p 1524
-1724 V 39 w(to)46 b Fj(\()p Fr(const)29 b(stp_vars_t)f
-Fm(vv)8 b Fj(\))3525 1833 y Fu(F)-8 b(unction)-3725 b
-Fh(void)39 b Fk(stp)p 558 1833 V 41 w(set)p 742 1833
-V 41 w(output)p 1122 1833 V 39 w(to)45 b Fj(\()p Fr(stp_vars_t)28
-b Fm(vv)p Fr(,)i(const)f(char)g(*)p Fm(v)-5 b(al)t Fj(\))3525
-1943 y Fu(F)d(unction)-3725 b Fh(void)39 b Fk(stp)p 558
-1943 V 41 w(set)p 742 1943 V 41 w(output)p 1122 1943
-V 39 w(to)p 1263 1943 V 41 w(n)45 b Fj(\()p Fr(stp_vars_t)28
-b Fm(vv)p Fr(,)i(const)f(char)g(*)p Fm(v)-5 b(al)p Fr(,)30
-b(int)565 2052 y Fm(b)m(ytes)t Fj(\))390 2162 y Fu(Get)36
-b(or)g(set)f(the)h(name)f(of)h(the)f(command)g(that)h(this)e(job)h
-(will)e(b)s(e)i(prin)m(ted)f(to.)56 b(This)33 b(is)i(used)390
-2271 y(b)m(y)c(fron)m(t)f(ends;)h(the)f(driv)m(er)g(library)e(alw)m(a)m
-(ys)j(prin)m(ts)f(to)h(a)g(stream)g(pro)m(vided)e(b)m(y)i(the)g(fron)m
-(t)g(end)390 2381 y(and)f(nev)m(er)g(uses)g(this)g(directly)-8
-b(.)3525 2600 y(F)g(unction)-3725 b Fh(const)40 b(char)f(*)g
-Fk(stp)p 949 2600 V 40 w(get)p 1144 2600 V 41 w(driv)m(er)45
-b Fj(\()p Fr(const)29 b(stp_vars_t)f Fm(vv)8 b Fj(\))3525
-2710 y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p
-558 2710 V 41 w(set)p 742 2710 V 41 w(driv)m(er)45 b
-Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(const)e(char)i(*)p
-Fm(v)-5 b(al)t Fj(\))3525 2819 y Fu(F)d(unction)-3725
-b Fh(void)39 b Fk(stp)p 558 2819 V 41 w(set)p 742 2819
-V 41 w(driv)m(er)p 1083 2819 V 40 w(n)46 b Fj(\()p Fr(stp_vars_t)27
-b Fm(vv)p Fr(,)j(const)f(char)h(*)p Fm(v)-5 b(al)p Fr(,)29
-b(int)g Fm(b)m(ytes)t Fj(\))390 2929 y Fu(Get)i(or)g(set)g(the)f(name)h
-(of)f(the)h(driv)m(er)e(\(the)i(t)m(yp)s(e)f(of)h(prin)m(ter\).)3525
-3148 y(F)-8 b(unction)-3725 b Fh(const)40 b(char)f(*)g
-Fk(stp)p 949 3148 V 40 w(get)p 1144 3148 V 41 w(pp)s(d)p
-1380 3148 V 40 w(\014le)45 b Fj(\()p Fr(const)29 b(stp_vars_t)f
-Fm(vv)8 b Fj(\))3525 3258 y Fu(F)-8 b(unction)-3725 b
-Fh(void)39 b Fk(stp)p 558 3258 V 41 w(set)p 742 3258
-V 41 w(pp)s(d)p 978 3258 V 40 w(\014le)44 b Fj(\()p Fr(stp_vars_t)28
-b Fm(vv)p Fr(,)i(const)f(char)g(*)p Fm(v)-5 b(al)t Fj(\))3525
-3367 y Fu(F)d(unction)-3725 b Fh(void)39 b Fk(stp)p 558
-3367 V 41 w(set)p 742 3367 V 41 w(pp)s(d)p 978 3367 V
-40 w(\014le)p 1167 3367 V 40 w(n)45 b Fj(\()p Fr(stp_vars_t)28
-b Fm(vv)p Fr(,)i(const)f(char)g(*)p Fm(v)-5 b(al)p Fr(,)30
-b(int)565 3477 y Fm(b)m(ytes)t Fj(\))390 3587 y Fu(Get)e(or)e(set)i
-(the)f(name)f(of)h(the)g(PPD)g(\014le)f(used)g(b)m(y)g(this)g(prin)m(t)
-f(job.)40 b(Normally)-8 b(,)27 b(only)e(P)m(ostScript)390
-3696 y(prin)m(ters)k(use)h(PPD)g(\014les.)3525 3915 y(F)-8
-b(unction)-3725 b Fh(const)40 b(char)f(*)g Fk(stp)p 949
-3915 V 40 w(get)p 1144 3915 V 41 w(resolution)44 b Fj(\()p
-Fr(const)30 b(stp_vars_t)d Fm(vv)8 b Fj(\))3525 4025
-y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p 558
-4025 V 41 w(set)p 742 4025 V 41 w(resolution)44 b Fj(\()p
-Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(const)f(char)g(*)p
-Fm(v)-5 b(al)t Fj(\))3525 4134 y Fu(F)d(unction)-3725
-b Fh(void)39 b Fk(stp)p 558 4134 V 41 w(set)p 742 4134
-V 41 w(resolution)p 1279 4134 V 40 w(n)45 b Fj(\()p Fr(stp_vars_t)28
-b Fm(vv)p Fr(,)i(const)f(char)g(*)p Fm(v)-5 b(al)p Fr(,)29
-b(int)565 4244 y Fm(b)m(ytes)t Fj(\))390 4354 y Fu(Get)46
-b(or)e(set)i(the)f(resolution)e(to)i(b)s(e)f(used)g(in)g(this)f(prin)m
-(t)h(job.)83 b(Di\013eren)m(t)45 b(driv)m(ers)f(supp)s(ort)390
-4463 y(di\013eren)m(t)34 b(resolutions,)f(and)h(man)m(y)g(driv)m(ers)f
-(supp)s(ort)f(m)m(ultiple)g(qualit)m(y)h(settings)i(for)e(a)i(giv)m(en)
-390 4573 y(DPI)30 b(resolution.)3525 4792 y(F)-8 b(unction)-3725
-b Fh(const)40 b(char)f(*)g Fk(stp)p 949 4792 V 40 w(get)p
-1144 4792 V 41 w(media)p 1485 4792 V 40 w(size)45 b Fj(\()p
-Fr(const)29 b(stp_vars_t)f Fm(vv)8 b Fj(\))3525 4902
-y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p 558
-4902 V 41 w(set)p 742 4902 V 41 w(media)p 1083 4902 V
-40 w(size)45 b Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(const)f(char)g
-(*)p Fm(v)-5 b(al)t Fj(\))3525 5011 y Fu(F)d(unction)-3725
-b Fh(void)39 b Fk(stp)p 558 5011 V 41 w(set)p 742 5011
-V 41 w(media)p 1083 5011 V 40 w(size)p 1304 5011 V 41
-w(n)45 b Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(const)f(char)g(*)p
-Fm(v)-5 b(al)p Fr(,)29 b(int)565 5121 y Fm(b)m(ytes)t
-Fj(\))390 5230 y Fu(Get)h(or)f(set)g(the)g(name)g(of)g(the)g(media)f
-(size)g(\(e.)41 b(g.)g(A3,)30 b(letter,)g(legal\))e(to)i(b)s(e)e(used)g
-(in)g(this)f(prin)m(t)390 5340 y(job.)p eop
-%%Page: 17 22
-17 21 bop 150 -116 a Fu(Chapter)30 b(4:)41 b(F)-8 b(unctions)2658
-b(17)3525 299 y(F)-8 b(unction)-3725 b Fh(const)40 b(char)f(*)g
-Fk(stp)p 949 299 35 5 v 40 w(get)p 1144 299 V 41 w(media)p
-1485 299 V 40 w(t)m(yp)s(e)45 b Fj(\()p Fr(const)29 b(stp_vars_t)f
-Fm(vv)8 b Fj(\))3525 408 y Fu(F)-8 b(unction)-3725 b
-Fh(void)39 b Fk(stp)p 558 408 V 41 w(set)p 742 408 V
-41 w(media)p 1083 408 V 40 w(t)m(yp)s(e)45 b Fj(\()p
-Fr(stp_vars_t)28 b Fm(vv)p Fr(,)h(const)g(char)h(*)p
-Fm(v)-5 b(al)t Fj(\))3525 518 y Fu(F)d(unction)-3725
-b Fh(void)39 b Fk(stp)p 558 518 V 41 w(set)p 742 518
-V 41 w(media)p 1083 518 V 40 w(t)m(yp)s(e)p 1345 518
-V 40 w(n)45 b Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(const)f(char)h
-(*)p Fm(v)-5 b(al)p Fr(,)29 b(int)565 628 y Fm(b)m(ytes)t
-Fj(\))390 737 y Fu(Get)f(or)g(set)g(the)f(name)h(of)f(the)h(media)e(t)m
-(yp)s(e)i(\(e.)40 b(g.)h(plain)25 b(pap)s(er,)i(photo)h(qualit)m(y)e
-(inkjet)h(pap)s(er\))390 847 y(to)k(b)s(e)f(used)f(in)g(this)h(prin)m
-(t)f(job.)3525 1080 y(F)-8 b(unction)-3725 b Fh(const)40
-b(char)f(*)g Fk(stp)p 949 1080 V 40 w(get)p 1144 1080
-V 41 w(media)p 1485 1080 V 40 w(source)45 b Fj(\()p Fr(const)30
-b(stp_vars_t)d Fm(vv)8 b Fj(\))3525 1189 y Fu(F)-8 b(unction)-3725
-b Fh(void)39 b Fk(stp)p 558 1189 V 41 w(set)p 742 1189
-V 41 w(media)p 1083 1189 V 40 w(source)45 b Fj(\()p Fr(stp_vars_t)28
-b Fm(vv)p Fr(,)i(const)f(char)g(*)p Fm(v)-5 b(al)t Fj(\))3525
-1299 y Fu(F)d(unction)-3725 b Fh(void)39 b Fk(stp)p 558
-1299 V 41 w(set)p 742 1299 V 41 w(media)p 1083 1299 V
-40 w(source)p 1440 1299 V 41 w(n)45 b Fj(\()p Fr(stp_vars_t)28
-b Fm(vv)p Fr(,)i(const)f(char)g(*)p Fm(v)-5 b(al)p Fr(,)565
-1408 y(int)30 b Fm(b)m(ytes)t Fj(\))390 1518 y Fu(Get)36
-b(or)e(set)h(the)g(name)f(of)h(the)g(media)f(source)g(\(e.)54
-b(g.)f(man)m(ual)34 b(feed,)i(tra)m(y)f(A\))g(to)h(b)s(e)e(used)f(in)
-390 1628 y(this)c(prin)m(t)g(job.)3525 1861 y(F)-8 b(unction)-3725
-b Fh(const)40 b(char)f(*)g Fk(stp)p 949 1861 V 40 w(get)p
-1144 1861 V 41 w(ink)p 1341 1861 V 41 w(t)m(yp)s(e)45
-b Fj(\()p Fr(const)29 b(stp_vars_t)f Fm(vv)8 b Fj(\))3525
-1970 y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p
-558 1970 V 41 w(set)p 742 1970 V 41 w(ink)p 939 1970
-V 41 w(t)m(yp)s(e)44 b Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p
-Fr(,)i(const)f(char)g(*)p Fm(v)-5 b(al)t Fj(\))3525 2080
-y Fu(F)d(unction)-3725 b Fh(void)39 b Fk(stp)p 558 2080
-V 41 w(set)p 742 2080 V 41 w(ink)p 939 2080 V 41 w(t)m(yp)s(e)p
-1202 2080 V 40 w(n)45 b Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p
-Fr(,)i(const)f(char)g(*)p Fm(v)-5 b(al)p Fr(,)30 b(int)565
-2189 y Fm(b)m(ytes)t Fj(\))390 2299 y Fu(Get)g(or)g(set)g(the)f(name)g
-(of)h(the)f(ink)f(t)m(yp)s(e)i(\(e.)41 b(g.)g(four)28
-b(color)i(standard,)f(six)f(color)i(photo\))f(to)i(b)s(e)390
-2408 y(used)f(in)f(this)g(prin)m(t)g(job.)3525 2641 y(F)-8
-b(unction)-3725 b Fh(const)40 b(char)f(*)g Fk(stp)p 949
-2641 V 40 w(get)p 1144 2641 V 41 w(dither)p 1490 2641
-V 39 w(algorithm)46 b Fj(\()p Fr(const)29 b(stp_vars_t)f
-Fm(vv)8 b Fj(\))3525 2751 y Fu(F)-8 b(unction)-3725 b
-Fh(void)39 b Fk(stp)p 558 2751 V 41 w(set)p 742 2751
-V 41 w(dither)p 1088 2751 V 39 w(algorithm)45 b Fj(\()p
-Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(const)f(char)g(*)p
-Fm(v)-5 b(al)t Fj(\))3525 2861 y Fu(F)d(unction)-3725
-b Fh(void)39 b Fk(stp)p 558 2861 V 41 w(set)p 742 2861
-V 41 w(dither)p 1088 2861 V 39 w(algorithm)p 1612 2861
-V 41 w(n)45 b Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(const)f(char)
-565 2970 y(*)p Fm(v)-5 b(al)p Fr(,)30 b(int)f Fm(b)m(ytes)t
-Fj(\))390 3080 y Fu(Get)i(or)g(set)g(the)f(dither)f(algorithm)h(to)h(b)
-s(e)e(used)h(in)f(this)g(prin)m(t)g(job.)3525 3313 y(F)-8
-b(unction)-3725 b Fh(int)39 b Fk(stp)p 506 3313 V 41
-w(get)p 702 3313 V 40 w(output)p 1081 3313 V 40 w(t)m(yp)s(e)45
-b Fj(\()p Fr(const)29 b(stp_vars_t)e Fm(vv)8 b Fj(\))3525
-3422 y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p
-558 3422 V 41 w(set)p 742 3422 V 41 w(output)p 1122 3422
-V 39 w(t)m(yp)s(e)45 b Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p
-Fr(,)i(int)f Fm(v)-5 b(al)t Fj(\))390 3532 y Fu(Get)31
-b(or)g(set)g(the)f(output)g(t)m(yp)s(e)h(\(color,)g(gra)m(yscale,)h
-(blac)m(k)e(and)g(white\))g(for)g(this)f(prin)m(t)g(job.)3525
-3765 y(F)-8 b(unction)-3725 b Fh(int)39 b Fk(stp)p 506
-3765 V 41 w(get)p 702 3765 V 40 w(orien)m(tation)44 b
-Fj(\()p Fr(const)29 b(stp_vars_t)e Fm(vv)8 b Fj(\))3525
-3874 y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p
-558 3874 V 41 w(set)p 742 3874 V 41 w(orien)m(tation)k
-Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(int)f Fm(v)-5
-b(al)t Fj(\))390 3984 y Fu(Get)31 b(or)g(set)g(the)f(pap)s(er)g(orien)m
-(tation)g(for)g(this)f(prin)m(t)g(job.)3525 4217 y(F)-8
-b(unction)-3725 b Fh(int)39 b Fk(stp)p 506 4217 V 41
-w(get)p 702 4217 V 40 w(left)45 b Fj(\()p Fr(const)29
-b(stp_vars_t)f Fm(vv)8 b Fj(\))3525 4326 y Fu(F)-8 b(unction)-3725
-b Fh(void)39 b Fk(stp)p 558 4326 V 41 w(set)p 742 4326
-V 41 w(left)44 b Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(int)f
-Fm(v)-5 b(al)t Fj(\))390 4436 y Fu(Get)31 b(or)g(set)g(the)f(left)g
-(margin)g(\(in)f(1/72)j(inc)m(h)e(units,)f(or)h Fr(")p
-Fu(p)s(oin)m(ts)p Fr(")p Fu(\))f(for)h(this)f(prin)m(t)g(job.)3525
-4669 y(F)-8 b(unction)-3725 b Fh(int)39 b Fk(stp)p 506
-4669 V 41 w(get)p 702 4669 V 40 w(top)45 b Fj(\()p Fr(const)30
-b(stp_vars_t)d Fm(vv)8 b Fj(\))3525 4778 y Fu(F)-8 b(unction)-3725
-b Fh(void)39 b Fk(stp)p 558 4778 V 41 w(set)p 742 4778
-V 41 w(top)44 b Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(int)g
-Fm(v)-5 b(al)t Fj(\))390 4888 y Fu(Get)31 b(or)g(set)g(the)f(top)h
-(margin)e(\(in)h(1/72)i(inc)m(h)d(units,)g(or)i Fr(")p
-Fu(p)s(oin)m(ts)p Fr(")p Fu(\))e(for)h(this)f(prin)m(t)g(job.)3525
-5121 y(F)-8 b(unction)-3725 b Fh(int)39 b Fk(stp)p 506
-5121 V 41 w(get)p 702 5121 V 40 w(image)p 1035 5121 V
-41 w(t)m(yp)s(e)45 b Fj(\()p Fr(const)29 b(stp_vars_t)f
-Fm(vv)8 b Fj(\))3525 5230 y Fu(F)-8 b(unction)-3725 b
-Fh(void)39 b Fk(stp)p 558 5230 V 41 w(set)p 742 5230
-V 41 w(image)p 1076 5230 V 41 w(t)m(yp)s(e)44 b Fj(\()p
-Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(int)g Fm(v)-5 b(al)t
-Fj(\))390 5340 y Fu(Get)31 b(or)g(set)g(the)f(image)h(t)m(yp)s(e)f
-(\(line)f(art,)i(con)m(tin)m(uous)g(tone,)g(solid)d(colors\))j(for)f
-(this)g(prin)m(t)f(job.)p eop
-%%Page: 18 23
-18 22 bop 150 -116 a Fu(Chapter)30 b(4:)41 b(F)-8 b(unctions)2658
-b(18)3525 299 y(F)-8 b(unction)-3725 b Fh(int)39 b Fk(stp)p
-506 299 35 5 v 41 w(get)p 702 299 V 40 w(unit)44 b Fj(\()p
-Fr(const)30 b(stp_vars_t)d Fm(vv)8 b Fj(\))3525 408 y
-Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p 558 408
-V 41 w(set)p 742 408 V 41 w(unit)44 b Fj(\()p Fr(stp_vars_t)28
-b Fm(vv)p Fr(,)i(int)f Fm(v)-5 b(al)t Fj(\))390 518 y
-Fu(Get)35 b(or)g(set)g(the)f(base)h(unit)e(\(inc)m(hes)h(or)h(cen)m
-(timeters\))g(for)f(this)g(prin)m(t)f(job.)52 b(This)33
-b(is)g(pro)m(vided)390 628 y(for)d(fron)m(t)h(ends;)e(the)i(pac)m(k)-5
-b(age)32 b(itself)e(uses)g(p)s(oin)m(ts)f(as)h(its)g(unit)f(of)i
-(measuremen)m(t.)3525 856 y(F)-8 b(unction)-3725 b Fh(int)39
-b Fk(stp)p 506 856 V 41 w(get)p 702 856 V 40 w(page)p
-972 856 V 41 w(width)44 b Fj(\()p Fr(const)29 b(stp_vars_t)e
-Fm(vv)8 b Fj(\))3525 965 y Fu(F)-8 b(unction)-3725 b
-Fh(void)39 b Fk(stp)p 558 965 V 41 w(set)p 742 965 V
-41 w(page)p 1013 965 V 40 w(width)44 b Fj(\()p Fr(stp_vars_t)28
-b Fm(vv)p Fr(,)i(int)f Fm(v)-5 b(al)t Fj(\))390 1075
-y Fu(Get)31 b(or)g(set)g(the)f(width)f(of)h(the)h(prin)m(ted)e(region)h
-(of)g(the)h(page.)3525 1303 y(F)-8 b(unction)-3725 b
-Fh(int)39 b Fk(stp)p 506 1303 V 41 w(get)p 702 1303 V
-40 w(page)p 972 1303 V 41 w(heigh)m(t)k Fj(\()p Fr(const)30
-b(stp_vars_t)d Fm(vv)8 b Fj(\))3525 1413 y Fu(F)-8 b(unction)-3725
-b Fh(void)39 b Fk(stp)p 558 1413 V 41 w(set)p 742 1413
-V 41 w(page)p 1013 1413 V 40 w(heigh)m(t)44 b Fj(\()p
-Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(int)f Fm(v)-5 b(al)t
-Fj(\))390 1522 y Fu(Get)31 b(or)g(set)g(the)f(heigh)m(t)g(of)h(the)g
-(prin)m(ted)e(region)g(of)i(the)g(page.)3525 1750 y(F)-8
-b(unction)-3725 b Fh(int)39 b Fk(stp)p 506 1750 V 41
-w(get)p 702 1750 V 40 w(input)p 1011 1750 V 40 w(color)p
-1295 1750 V 42 w(mo)s(del)45 b Fj(\()p Fr(const)29 b(stp_vars_t)f
-Fm(vv)8 b Fj(\))3525 1860 y Fu(F)-8 b(unction)-3725 b
-Fh(void)39 b Fk(stp)p 558 1860 V 41 w(set)p 742 1860
-V 41 w(input)p 1052 1860 V 39 w(color)p 1335 1860 V 42
-w(mo)s(del)45 b Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(int)g
-Fm(v)-5 b(al)t Fj(\))390 1969 y Fu(Get)29 b(or)f(set)g(the)g(color)g
-(mo)s(del)f(\(curren)m(tly)g(R)m(GB)i(or)f(CMY\))h(of)f(the)g(input)e
-(to)i(the)g(driv)m(er.)39 b(Most)390 2079 y(fron)m(t)30
-b(ends)g(will)e(use)i(R)m(GB)h(input.)3525 2307 y(F)-8
-b(unction)-3725 b Fh(int)39 b Fk(stp)p 506 2307 V 41
-w(get)p 702 2307 V 40 w(output)p 1081 2307 V 40 w(color)p
-1365 2307 V 42 w(mo)s(del)45 b Fj(\()p Fr(const)29 b(stp_vars_t)f
-Fm(vv)8 b Fj(\))3525 2417 y Fu(F)-8 b(unction)-3725 b
-Fh(void)39 b Fk(stp)p 558 2417 V 41 w(set)p 742 2417
-V 41 w(output)p 1122 2417 V 39 w(color)p 1405 2417 V
-42 w(mo)s(del)45 b Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p
-Fr(,)i(int)g Fm(v)-5 b(al)t Fj(\))390 2526 y Fu(Get)26
-b(or)f(set)g(the)g(color)g(mo)s(del)e(\(curren)m(tly)h(R)m(GB)i(or)f
-(CMY\))g(of)g(the)g(output)f(of)h(the)g(driv)m(er.)38
-b(Most)390 2636 y(prin)m(ters)29 b(will)f(use)i(CMY.)3525
-2864 y(F)-8 b(unction)-3725 b Fh(float)40 b Fk(stp)p
-611 2864 V 40 w(get)p 806 2864 V 41 w(scaling)45 b Fj(\()p
-Fr(const)29 b(stp_vars_t)f Fm(vv)8 b Fj(\))3525 2973
-y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p 558
-2973 V 41 w(set)p 742 2973 V 41 w(scaling)44 b Fj(\()p
-Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(float)f Fm(v)-5 b(al)t
-Fj(\))390 3083 y Fu(Get)35 b(or)g(set)f(the)h(scaling)e(factor)j(of)e
-(the)h(image.)52 b(If)34 b(the)h(scaling)e(factor)j(is)d(greater)i
-(than)f(0,)i(it)390 3193 y(is)29 b(in)m(terpreted)g(as)h(a)h(p)s(ercen)
-m(t)f(\(5.0-100.0)j(is)c(the)h(v)-5 b(alid)29 b(range\))h(of)g(the)g
-(prin)m(table)e(page)j(region,)390 3302 y(using)d(the)i(more)g
-(restrictiv)m(e)f(axis.)40 b(F)-8 b(or)31 b(example,)e(if)g(the)h
-(image)g(to)g(b)s(e)f(prin)m(ted)f(should)g(b)s(e)h(3)p
-Fr(")390 3412 y Fu(\(wide\))g(x)f(2)p Fr(")i Fu(\(high\),)f(and)f(the)h
-(prin)m(table)f(page)h(region)g(is)f(8)p Fr(")p Fu(x10.5)p
-Fr(")p Fu(,)j(the)f(scale)f(factor)h(should)390 3521
-y(b)s(e)g(37.5)i(\(3)p Fr(")p Fu(/8)p Fr(")p Fu(\).)390
-3655 y(If)e(the)g(scaling)g(is)f(less)h(than)g(zero,)i(it)e(is)f(in)m
-(terpreted)h(as)g(pixels)f(p)s(er)g(inc)m(h.)390 3788
-y(It)37 b(is)f(lik)m(ely)f(that)j(in)d(the)i(future)f(this)g(will)e(b)s
-(e)i(migrated)h(in)m(to)f(the)h(fron)m(t)g(end.)60 b(There)36
-b(is)g(no)390 3898 y(particular)29 b(reason)h(wh)m(y)g(the)h(driv)m(er)
-e(needs)h(to)h(kno)m(w)f(ab)s(out)g(this.)3525 4126 y(F)-8
-b(unction)-3725 b Fh(float)40 b Fk(stp)p 611 4126 V 40
-w(get)p 806 4126 V 41 w(gamma)46 b Fj(\()p Fr(const)29
-b(stp_vars_t)f Fm(vv)8 b Fj(\))3525 4235 y Fu(F)-8 b(unction)-3725
-b Fh(void)39 b Fk(stp)p 558 4235 V 41 w(set)p 742 4235
-V 41 w(gamma)46 b Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p
-Fr(,)i(float)e Fm(v)-5 b(al)t Fj(\))390 4345 y Fu(Get)34
-b(or)f(set)h(the)f(gamma)h(of)f(the)g(prin)m(t)f(job)h(\(v)-5
-b(alid)32 b(range:)46 b(0.1-4.0;)37 b(default)c(1.0\).)50
-b(Note)34 b(that)390 4454 y(this)40 b(is)g(not)i(the)f(absolute)g
-(gamma)i(used)d(b)m(y)h(the)h(prin)m(t)e(job;)46 b(it)41
-b(is)f(scaled)h(b)m(y)h(the)f(gamma)390 4564 y(appropriate)29
-b(for)i(the)f(prin)m(ter.)39 b(This)29 b(is)g(true)i(for)f(all)f(of)i
-(the)f(n)m(umerical)f(parameters.)3525 4792 y(F)-8 b(unction)-3725
-b Fh(float)40 b Fk(stp)p 611 4792 V 40 w(get)p 806 4792
-V 41 w(brigh)m(tness)k Fj(\()p Fr(const)29 b(stp_vars_t)f
-Fm(vv)8 b Fj(\))3525 4902 y Fu(F)-8 b(unction)-3725 b
-Fh(void)39 b Fk(stp)p 558 4902 V 41 w(set)p 742 4902
-V 41 w(brigh)m(tness)44 b Fj(\()p Fr(stp_vars_t)27 b
-Fm(vv)p Fr(,)j(float)f Fm(v)-5 b(al)t Fj(\))390 5011
-y Fu(Get)38 b(or)f(set)g(the)h(brigh)m(tness)d(of)i(the)h(prin)m(t)d
-(job)i(\(v)-5 b(alid)35 b(range:)55 b(0.0-2.0;)43 b(default:)53
-b(1.0\).)62 b(An)m(y)390 5121 y(v)-5 b(alue)32 b(other)h(than)f(1.0)i
-(will)c(result)h(in)h(some)h(p)s(ossible)d(v)-5 b(alues)32
-b(not)g(b)s(eing)g(used;)h(if)e(brigh)m(tness)390 5230
-y(is)f(less)g(than)g(1.0,)i(no)f(output)f(p)s(oin)m(t)g(will)e(b)s(e)i
-(pure)f(white,)h(and)h(if)e(brigh)m(tness)h(is)f(greater)j(than)390
-5340 y(1.0,)g(no)e(output)g(p)s(oin)m(t)f(will)f(b)s(e)i(pure)f(blac)m
-(k)h(\(or)h(cy)m(an,)h(or)e(magen)m(ta,)i(or)f(y)m(ello)m(w\).)p
-eop
-%%Page: 19 24
-19 23 bop 150 -116 a Fu(Chapter)30 b(4:)41 b(F)-8 b(unctions)2658
-b(19)3525 299 y(F)-8 b(unction)-3725 b Fh(float)40 b
-Fk(stp)p 611 299 35 5 v 40 w(get)p 806 299 V 41 w(con)m(trast)k
-Fj(\()p Fr(const)30 b(stp_vars_t)d Fm(vv)8 b Fj(\))3525
-408 y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p
-558 408 V 41 w(set)p 742 408 V 41 w(con)m(trast)44 b
-Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(float)f Fm(v)-5
-b(al)t Fj(\))390 518 y Fu(Get)27 b(or)f(set)g(the)g(con)m(trast)i(of)e
-(the)g(prin)m(t)e(job)i(\(v)-5 b(alid)24 b(range:)39
-b(0.0-4.0;)30 b(default:)38 b(1.0\).)j(V)-8 b(alues)26
-b(less)390 628 y(than)35 b(1.0)i(will)32 b(result)j(in)f(pure)g(white)h
-(or)g(blac)m(k)g(not)h(b)s(eing)e(used)g(\(0.0)j(will)c(mak)m(e)j(the)g
-(en)m(tire)390 737 y(image)30 b(50\045)h(gra)m(y\).)42
-b(V)-8 b(alues)30 b(greater)h(than)f(1.0)i(do)e(not)g(hard)f(clip;)g
-(while)f(the)i(con)m(trast)i(in)d(the)390 847 y(midtones)g(increases,)i
-(it)f(only)f(asymptotically)h(approac)m(hes)h(the)f(limits.)3525
-1066 y(F)-8 b(unction)-3725 b Fh(float)40 b Fk(stp)p
-611 1066 V 40 w(get)p 806 1066 V 41 w(cy)m(an)45 b Fj(\()p
-Fr(const)29 b(stp_vars_t)f Fm(vv)8 b Fj(\))3525 1176
-y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p 558
-1176 V 41 w(set)p 742 1176 V 41 w(cy)m(an)45 b Fj(\()p
-Fr(stp_vars_t)27 b Fm(vv)p Fr(,)j(float)f Fm(v)-5 b(al)t
-Fj(\))390 1285 y Fu(Get)35 b(or)g(set)g(the)f(cy)m(an)h(adjustmen)m(t)g
-(of)f(the)h(prin)m(t)e(job)h(\(range:)49 b(0.0-4.0;)40
-b(default:)48 b(1.0\).)54 b(This)390 1395 y(curren)m(tly)32
-b(adjusts)g(the)g(gamma)i(of)f(the)f(cy)m(an)i(curv)m(e.)48
-b(It)32 b(is)g(scaled)g(b)m(y)h(the)g(cy)m(an)g(adjustmen)m(t)390
-1504 y(for)d(the)h(prin)m(ter)e(mo)s(del)g(in)g(question.)3525
-1724 y(F)-8 b(unction)-3725 b Fh(float)40 b Fk(stp)p
-611 1724 V 40 w(get)p 806 1724 V 41 w(magen)m(ta)k Fj(\()p
-Fr(const)29 b(stp_vars_t)f Fm(vv)8 b Fj(\))3525 1833
-y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p 558
-1833 V 41 w(set)p 742 1833 V 41 w(magen)m(ta)44 b Fj(\()p
-Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(float)f Fm(v)-5 b(al)t
-Fj(\))390 1943 y Fu(Get)40 b(or)g(set)f(the)h(magen)m(ta)h(adjustmen)m
-(t)e(of)g(the)h(prin)m(t)e(job)h(\(range:)59 b(0.0-4.0;)47
-b(default:)57 b(1.0\).)390 2052 y(This)28 b(curren)m(tly)h(adjusts)h
-(the)g(gamma)h(of)f(the)g(magen)m(ta)i(curv)m(e.)41 b(It)30
-b(is)f(scaled)h(b)m(y)g(the)g(magen)m(ta)390 2162 y(adjustmen)m(t)g
-(for)g(the)h(prin)m(ter)e(mo)s(del)g(in)g(question.)3525
-2381 y(F)-8 b(unction)-3725 b Fh(float)40 b Fk(stp)p
-611 2381 V 40 w(get)p 806 2381 V 41 w(y)m(ello)m(w)45
-b Fj(\()p Fr(const)29 b(stp_vars_t)f Fm(vv)8 b Fj(\))3525
-2491 y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p
-558 2491 V 41 w(set)p 742 2491 V 41 w(y)m(ello)m(w)44
-b Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(float)f Fm(v)-5
-b(al)t Fj(\))390 2600 y Fu(Get)32 b(or)f(set)g(the)h(y)m(ello)m(w)f
-(adjustmen)m(t)f(of)h(the)h(prin)m(t)d(job)i(\(range:)43
-b(0.0-4.0;)34 b(default:)41 b(1.0\).)j(This)390 2710
-y(curren)m(tly)23 b(adjusts)f(the)i(gamma)h(of)e(the)h(y)m(ello)m(w)g
-(curv)m(e.)39 b(It)23 b(is)g(scaled)g(b)m(y)h(the)g(y)m(ello)m(w)f
-(adjustmen)m(t)390 2819 y(for)30 b(the)h(prin)m(ter)e(mo)s(del)g(in)g
-(question.)3525 3039 y(F)-8 b(unction)-3725 b Fh(float)40
-b Fk(stp)p 611 3039 V 40 w(get)p 806 3039 V 41 w(saturation)k
-Fj(\()p Fr(const)29 b(stp_vars_t)f Fm(vv)8 b Fj(\))3525
-3148 y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p
-558 3148 V 41 w(set)p 742 3148 V 41 w(saturation)k Fj(\()p
-Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(float)f Fm(v)-5 b(al)t
-Fj(\))390 3258 y Fu(Get)30 b(or)f(set)g(the)g(saturation)f(of)h(the)g
-(prin)m(t)f(job)g(\(range:)41 b(0.0-9.0;)32 b(default:)39
-b(1.0\).)j(Saturation)28 b(of)390 3367 y(0.0)34 b(pro)s(duces)e(gra)m
-(yscale)i(output)f(using)f(comp)s(osite)h(\(CMY)g(or)g(CMYK,)h(as)f
-(appropriate)f(for)390 3477 y(the)f(prin)m(ter\))e(color.)3525
-3696 y(F)-8 b(unction)-3725 b Fh(float)40 b Fk(stp)p
-611 3696 V 40 w(get)p 806 3696 V 41 w(densit)m(y)k Fj(\()p
-Fr(const)29 b(stp_vars_t)f Fm(vv)8 b Fj(\))3525 3806
-y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p 558
-3806 V 41 w(set)p 742 3806 V 41 w(densit)m(y)44 b Fj(\()p
-Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(float)f Fm(v)-5 b(al)t
-Fj(\))390 3915 y Fu(Get)30 b(or)f(set)g(the)g(densit)m(y)f(of)h(the)g
-(prin)m(t)f(job)g(\(range:)41 b(0.0-2.0;)32 b(default:)39
-b(1.0\).)j(This)27 b(adjusts)h(the)390 4025 y(amoun)m(t)e(of)g(ink)e
-(dep)s(osited)g(in)h(a)h(linear)e(fashion)g(for)i(all)e(c)m(hannels.)39
-b(It)25 b(is)g(scaled)g(b)m(y)h(the)g(densit)m(y)390
-4134 y(appropriate)35 b(for)g(the)h(c)m(hoice)g(of)g(prin)m(ter,)g
-(resolution,)f(pap)s(er)g(t)m(yp)s(e,)i(and)e(other)h(factors)g(that)
-390 4244 y(the)31 b(driv)m(er)e(ma)m(y)i(deem)f(appropriate.)3525
-4463 y(F)-8 b(unction)-3725 b Fh(float)40 b Fk(stp)p
-611 4463 V 40 w(get)p 806 4463 V 41 w(app)p 1031 4463
-V 40 w(gamma)46 b Fj(\()p Fr(const)30 b(stp_vars_t)d
-Fm(vv)8 b Fj(\))3525 4573 y Fu(F)-8 b(unction)-3725 b
-Fh(void)39 b Fk(stp)p 558 4573 V 41 w(set)p 742 4573
-V 41 w(app)p 967 4573 V 40 w(gamma)46 b Fj(\()p Fr(stp_vars_t)28
-b Fm(vv)p Fr(,)i(float)f Fm(v)-5 b(al)t Fj(\))390 4682
-y Fu(Get)31 b(or)g(set)g(the)f(gamma)h(of)g(the)g(input)d(\(i.)40
-b(e.)h(what)31 b(the)f(driving)e(application)h(uses\).)3525
-4902 y(F)-8 b(unction)-3725 b Fh(void)39 b(*)g Fk(stp)p
-649 4902 V 41 w(get)p 845 4902 V 40 w(lut)45 b Fj(\()p
-Fr(const)29 b(stp_vars_t)e Fm(vv)8 b Fj(\))3525 5011
-y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p 558
-5011 V 41 w(set)p 742 5011 V 41 w(lut)44 b Fj(\()p Fr(stp_vars_t)28
-b Fm(vv)p Fr(,)i(void)f(*)p Fm(v)-5 b(al)t Fj(\))390
-5121 y Fu(Get)43 b(or)f(set)h(the)f(color)h(lo)s(okup)d(table)i(for)g
-(the)h(prin)m(t)d(job.)76 b(This)40 b(is)i(useful)e(outside)h(of)i(the)
-390 5230 y(library)29 b(for)h(computing)g(a)i(preview)d(of)i(the)h
-(prin)m(ted)d(result.)41 b(The)31 b(lo)s(okup)e(table)i(itself)f
-(should)390 5340 y(b)s(e)g(treated)h(as)g(an)f(opaque)h(handle.)p
-eop
-%%Page: 20 25
-20 24 bop 150 -116 a Fu(Chapter)30 b(4:)41 b(F)-8 b(unctions)2658
-b(20)3525 299 y(F)-8 b(unction)-3725 b Fh(unsigned)41
-b(char)e(*)g Fk(stp)p 1106 299 35 5 v 40 w(get)p 1301
-299 V 41 w(cmap)45 b Fj(\()p Fr(const)29 b(stp_vars_t)f
-Fm(vv)8 b Fj(\))3525 408 y Fu(F)-8 b(unction)-3725 b
-Fh(void)39 b Fk(stp)p 558 408 V 41 w(set)p 742 408 V
-41 w(cmap)45 b Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(unsigned)e
-(char)h(*)p Fm(v)-5 b(al)t Fj(\))390 518 y Fu(Get)34
-b(or)f(set)h(the)f(color)g(map)f(for)h(the)g(prin)m(t)f(job.)48
-b(This)31 b(is)i(a)g(table)g(of)g(R,G,B)h(v)-5 b(alues)32
-b(for)h(8-bit)390 628 y(indexed)e(input.)44 b(This)31
-b(ma)m(y)i(b)s(e)f(mo)m(v)m(ed)h(outside)e(of)i(the)f(library)e(in)h
-(the)i(future;)f(in)f(this)h(case,)390 737 y(the)i(fron)m(t)h(end)e(w)m
-(ould)g(b)s(e)h(required)e(to)j(do)f(its)g(o)m(wn)g(mapping)f(and)h
-(supply)d(true-color)k(R)m(GB)390 847 y(to)c(the)g(driv)m(er.)275
-1051 y(The)36 b(follo)m(wing)g(metho)s(ds)g(are)i(used)e(to)i(p)s
-(erform)e(output)g(and)h(error)g(rep)s(orting)f(b)m(y)h(the)g(driv)m
-(er.)150 1161 y(The)j(driv)m(er)f(supplies)e(a)k(stream)f(of)h(output)e
-(b)m(ytes;)46 b(the)41 b(fron)m(t)f(end)f(is)h(resp)s(onsible)d(for)j
-(pro)m(viding)150 1271 y(metho)s(ds)30 b(that)h(accept)g(this)f(output)
-g(and)f(handle)g(it)h(appropriately)-8 b(.)3525 1535
-y(F)g(unction)-3725 b Fh(stp_outfunc_t)42 b Fk(stp)p
-1029 1535 V 41 w(get)p 1225 1535 V 40 w(outfunc)j Fj(\()p
-Fr(const)29 b(stp_vars_t)e Fm(vv)8 b Fj(\))3525 1645
-y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p 558
-1645 V 41 w(set)p 742 1645 V 41 w(outfunc)44 b Fj(\()p
-Fr(const)29 b(stp_vars_t)f Fm(vv)p Fr(,)i(stp_outfunc_t)c
-Fm(v)-5 b(al)t Fj(\))3525 1754 y Fu(F)d(unction)-3725
-b Fh(void)39 b(*)g Fk(stp)p 649 1754 V 41 w(get)p 845
-1754 V 40 w(outdata)44 b Fj(\()p Fr(const)29 b(stp_vars_t)f
-Fm(vv)8 b Fj(\))3525 1864 y Fu(F)-8 b(unction)-3725 b
-Fh(void)39 b Fk(stp)p 558 1864 V 41 w(set)p 742 1864
-V 41 w(outdata)k Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(void)f(*)p
-Fm(v)-5 b(al)t Fj(\))3474 2093 y Fu(Data)32 b(t)m(yp)s(e)-3484
-b Fk(stp)p 551 2093 V 41 w(outfunc)p 972 2093 V 40 w(t)870
-2197 y Fr(typedef)46 b(void)g(\(*stp_outfunc_t\))e(\(void)i(*data,)1538
-2301 y(const)h(char)f(*buffer,)g(size_t)g(bytes\);)390
-2506 y Fu(Get)22 b(or)f(set)g(the)g(output)f(function)g(the)h(driv)m
-(er)e(will)g(use.)37 b(The)20 b(fron)m(t)h(end)f(m)m(ust)h(supply)d(a)j
-(suitable)390 2615 y(function)f(for)i(accepting)g(the)g(output)g(data.)
-38 b(The)21 b Fr(stp_set_outdata)d Fu(metho)s(d)j(pro)m(vides)g(a)h(w)m
-(a)m(y)390 2725 y(of)31 b(passing)e(an)h(appropriate)f(ob)5
-b(ject)32 b(to)f(the)f(output)g(function.)3525 2989 y(F)-8
-b(unction)-3725 b Fh(stp_outfunc_t)42 b Fk(stp)p 1029
-2989 V 41 w(get)p 1225 2989 V 40 w(errfunc)j Fj(\()p
-Fr(const)29 b(stp_vars_t)f Fm(vv)8 b Fj(\))3525 3099
-y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p 558
-3099 V 41 w(set)p 742 3099 V 41 w(errfunc)44 b Fj(\()p
-Fr(const)29 b(stp_vars_t)f Fm(vv)p Fr(,)i(stp_outfunc_t)d
-Fm(v)-5 b(al)t Fj(\))3525 3208 y Fu(F)d(unction)-3725
-b Fh(void)39 b(*)g Fk(stp)p 649 3208 V 41 w(get)p 845
-3208 V 40 w(errdata)44 b Fj(\()p Fr(const)29 b(stp_vars_t)f
-Fm(vv)8 b Fj(\))3525 3318 y Fu(F)-8 b(unction)-3725 b
-Fh(void)39 b Fk(stp)p 558 3318 V 41 w(set)p 742 3318
-V 41 w(errdata)k Fj(\()p Fr(stp_vars_t)28 b Fm(vv)p Fr(,)i(void)g(*)p
-Fm(v)-5 b(al)t Fj(\))390 3428 y Fu(Get)28 b(or)g(set)f(the)h(error)f
-(rep)s(orting)f(function)g(that)i(the)f(driv)m(er)f(will)f(use.)39
-b(This)26 b(is)g(used)h(to)h(rep)s(ort)390 3537 y(errors)g(or)g
-(debugging)f(information,)h(and)g(m)m(ust)g(b)s(e)f(supplied.)37
-b(A)29 b(t)m(ypical)f(errfunc)f(will)e(simply)390 3647
-y(prin)m(t)k(whatev)m(er)i(it's)f(passed)g(to)h(stderr.)275
-3851 y(/*)e(*)f(h)m(ue)p 611 3851 28 4 v 33 w(map)g(is)f(an)i(arra)m(y)
-f(of)h(49)g(doubles)e(represen)m(ting)g(the)i(mapping)e(of)h(h)m(ue)g
-(*)h(from)f(\(0..6\))i(to)150 3961 y(\(0..6\))g(in)d(incremen)m(ts)g
-(of)h(.125.)42 b(The)27 b(h)m(ue)p 1605 3961 V 33 w(map)h(is)f(in)f
-(CMY)j(space,)g(*)f(so)g(h)m(ue=0)g(is)g(cy)m(an.)40
-b(*/)29 b(t)m(yp)s(edef)150 4071 y(v)m(oid)36 b(\(*stp)p
-560 4071 V 33 w(con)m(v)m(ert)p 882 4071 V 35 w(t\)\(const)i(stp)p
-1389 4071 V 32 w(v)-5 b(ars)p 1581 4071 V 33 w(t)37 b(v)-5
-b(ars,)38 b(const)f(unsigned)d(c)m(har)j(*in,)g(unsigned)e(short)h
-(*out,)150 4180 y(in)m(t)j(*zero)p 509 4180 V 34 w(mask,)j(in)m(t)d
-(width,)h(in)m(t)f(bpp,)h(const)g(unsigned)e(c)m(har)i(*cmap,)i(const)e
-(double)e(*h)m(ue)p 3525 4180 V 33 w(map,)150 4290 y(const)31
-b(double)e(*lum)p 884 4290 V 32 w(map,)h(const)h(double)e(*sat)p
-1835 4290 V 33 w(map\);)3525 4554 y(F)-8 b(unction)-3725
-b Fh(void)39 b Fk(stp)p 558 4554 35 5 v 41 w(merge)p
-904 4554 V 41 w(prin)m(tv)-6 b(ars)45 b Fj(\()p Fr(stp_vars_t)27
-b Fm(user)p Fr(,)j(const)f(stp_vars_t)565 4664 y Fm(prin)m(t)r
-Fj(\))3525 4893 y Fu(F)-8 b(unction)-3725 b Fh(void)39
-b Fk(stp)p 558 4893 V 41 w(allo)s(cate)p 984 4893 V 40
-w(lut)44 b Fj(\()p Fr(stp_vars_t)28 b Fm(v)p Fr(,)i(size_t)f
-Fm(steps)t Fj(\))3525 5123 y Fu(F)-8 b(unction)-3725
-b Fh(void)39 b Fk(stp)p 558 5123 V 41 w(free)p 787 5123
-V 41 w(lut)44 b Fj(\()p Fr(stp_vars_t)28 b Fm(v)8 b Fj(\))3525
-5352 y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p
-558 5352 V 41 w(compute)p 1028 5352 V 40 w(lut)45 b Fj(\()p
-Fr(stp_vars_t)28 b Fm(v)p Fr(,)i(size_t)e Fm(steps)t
-Fj(\))p eop
-%%Page: 21 26
-21 25 bop 150 -116 a Fu(Chapter)30 b(4:)41 b(F)-8 b(unctions)2658
-b(21)150 299 y Ft(4.3)68 b(Dither)46 b(functions)3525
-587 y Fu(F)-8 b(unction)-3725 b Fh(size_t)40 b Fk(stp)p
-663 587 35 5 v 41 w(dither)p 1009 587 V 39 w(algorithm)p
-1533 587 V 41 w(coun)m(t)45 b Fj(\()p Fr(void)p Fj(\))3525
-792 y Fu(F)-8 b(unction)-3725 b Fh(const)40 b(char)f(*)g
-Fk(stp)p 949 792 V 40 w(dither)p 1294 792 V 40 w(algorithm)p
-1819 792 V 41 w(name)45 b Fj(\()p Fr(int)30 b Fm(id)t
-Fj(\))3525 998 y Fu(F)-8 b(unction)-3725 b Fh(const)40
-b(char)f(*)g Fk(stp)p 949 998 V 40 w(default)p 1338 998
-V 39 w(dither)p 1682 998 V 40 w(algorithm)45 b Fj(\()p
-Fr(void)p Fj(\))150 1229 y Ft(4.4)68 b(Options)45 b(functions)3474
-1516 y Fu(Data)32 b(t)m(yp)s(e)-3724 b Fh(void)39 b(*)g
-Fk(stp)p 649 1516 V 41 w(option)p 1009 1516 V 40 w(t)390
-1626 y Fu(This)29 b(is)g(an)h(opaque)h(data)g(t)m(yp)s(e,)g(whose)f
-(structure)g(is)f(not)i(visible)d(to)j(the)f(user.)3525
-1856 y(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p 558
-1856 V 41 w(set)p 742 1856 V 41 w(option\(stp)p 1301
-1856 V 39 w(v)-6 b(ars)p 1542 1856 V 41 w(t)45 b Fm(v)p
-Fr(,)30 b(const)f(char)h(*)p Fm(name)p Fr(,)f(const)g(char)565
-1965 y(*)p Fm(data)p Fr(,)i(int)e Fm(b)m(ytes)t Fj(\))3525
-2171 y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p
-558 2171 V 41 w(clear)p 838 2171 V 40 w(option)45 b Fj(\()p
-Fr(stp_vars_t)28 b Fm(v)p Fr(,)i(const)f(char)g(*)p Fm(name)5
-b Fj(\))3525 2377 y Fu(F)-8 b(unction)-3725 b Fh(void)39
-b Fk(stp)p 558 2377 V 41 w(clear)p 838 2377 V 40 w(all)p
-998 2377 V 41 w(options)45 b Fj(\()p Fr(stp_vars_t)28
-b Fm(v)8 b Fj(\))3525 2582 y Fu(F)-8 b(unction)-3725
-b Fh(size_t)40 b Fk(stp)p 663 2582 V 41 w(option)p 1023
-2582 V 40 w(coun)m(t)k Fj(\()p Fr(const)30 b(stp_vars_t)d
-Fm(v)8 b Fj(\))3525 2788 y Fu(F)-8 b(unction)-3725 b
-Fh(const)40 b(stp_option_t)i Fk(stp)p 1277 2788 V 40
-w(get)p 1472 2788 V 41 w(option)p 1832 2788 V 40 w(b)m(y)p
-1993 2788 V 41 w(index)j Fj(\()p Fr(const)29 b(stp_vars_t)565
-2898 y Fm(v)p Fr(,)h(size_t)f Fm(idx)6 b Fj(\))3525 3103
-y Fu(F)-8 b(unction)-3725 b Fh(const)40 b(stp_option_t)i
-Fk(stp)p 1277 3103 V 40 w(get)p 1472 3103 V 41 w(option)p
-1832 3103 V 40 w(b)m(y)p 1993 3103 V 41 w(name)j Fj(\()p
-Fr(const)30 b(stp_vars_t)565 3213 y Fm(v)p Fr(,)g(const)f(char)g(*)p
-Fm(name)5 b Fj(\))3525 3418 y Fu(F)-8 b(unction)-3725
-b Fh(const)40 b(char)f(*)g Fk(stp)p 949 3418 V 40 w(option)p
-1308 3418 V 41 w(data)44 b Fj(\()p Fr(const)29 b(stp_option_t)e
-Fm(option)p Fj(\))390 3528 y Fi(Note)p Fu(:)42 b(not)31
-b(n)m(ull)d(delimited!)3525 3758 y(F)-8 b(unction)-3725
-b Fh(const)40 b(char)f(*)g Fk(stp)p 949 3758 V 40 w(option)p
-1308 3758 V 41 w(name)45 b Fj(\()p Fr(const)29 b(stp_option_t)e
-Fm(option)p Fj(\))3525 3963 y Fu(F)-8 b(unction)-3725
-b Fh(size_t)40 b Fk(stp)p 663 3963 V 41 w(option)p 1023
-3963 V 40 w(length)k Fj(\()p Fr(const)29 b(stp_option_t)e
-Fm(option)p Fj(\))150 4194 y Ft(4.5)68 b(P)l(ap)t(er)45
-b(functions)3474 4482 y Fu(Data)32 b(t)m(yp)s(e)-3724
-b Fh(void)39 b(*)g Fk(stp)p 649 4482 V 41 w(pap)s(ersize)p
-1158 4482 V 39 w(t)390 4591 y Fu(This)29 b(is)g(an)h(opaque)h(data)g(t)
-m(yp)s(e,)g(whose)f(structure)g(is)f(not)i(visible)d(to)j(the)f(user.)
-3474 4821 y(Data)i(t)m(yp)s(e)-3724 b Fk(stp)p 311 4821
-V 41 w(pap)s(ersize)p 820 4821 V 39 w(unit)p 1064 4821
-V 40 w(t)630 4925 y Fr(typedef)46 b(enum)g(papersize_unit)630
-5029 y({)725 5132 y(PAPERSIZE_ENGLISH,)725 5236 y(PAPERSIZE_METRIC)630
-5340 y(})h(stp_papersize_unit_t;)p eop
-%%Page: 22 27
-22 26 bop 150 -116 a Fu(Chapter)30 b(4:)41 b(F)-8 b(unctions)2658
-b(22)3525 299 y(F)-8 b(unction)-3725 b Fh(int)39 b Fk(stp)p
-506 299 35 5 v 41 w(kno)m(wn)p 872 299 V 41 w(pap)s(ersizes)44
-b Fj(\()p Fr(void)p Fj(\))3525 511 y Fu(F)-8 b(unction)-3725
-b Fh(const)40 b(stp_papersize_t)i Fk(stp)p 1433 511 V
-41 w(get)p 1629 511 V 41 w(pap)s(ersize)p 2138 511 V
-39 w(b)m(y)p 2298 511 V 41 w(name)j Fj(\()p Fr(const)30
-b(char)565 621 y(*)p Fm(name)5 b Fj(\))3525 833 y Fu(F)-8
-b(unction)-3725 b Fh(const)40 b(stp_papersize_t)h Fk(stp)p
-1432 833 V 41 w(get)p 1628 833 V 40 w(pap)s(ersize)p
-2136 833 V 40 w(b)m(y)p 2297 833 V 41 w(size)k Fj(\()p
-Fr(int)30 b Fm(l)p Fr(,)f(int)g Fm(w)8 b Fj(\))3525 1155
-y Fu(F)-8 b(unction)-3725 b Fh(const)40 b(stp_papersize_t)i
-Fk(stp)p 1433 1155 V 41 w(get)p 1629 1155 V 41 w(pap)s(ersize)p
-2138 1155 V 39 w(b)m(y)p 2298 1155 V 41 w(index)j Fj(\()p
-Fr(int)30 b Fm(index)6 b Fj(\))3525 1367 y Fu(F)-8 b(unction)-3725
-b Fh(const)40 b(char)f(*)g Fk(stp)p 949 1367 V 40 w(pap)s(ersize)p
-1457 1367 V 40 w(get)p 1652 1367 V 40 w(name)45 b Fj(\()p
-Fr(const)29 b(stp_papersize_t)565 1477 y Fm(pt)r Fj(\))3525
-1689 y Fu(F)-8 b(unction)-3725 b Fh(unsigned)41 b Fk(stp)p
-768 1689 V 40 w(pap)s(ersize)p 1276 1689 V 40 w(get)p
-1471 1689 V 40 w(width)j Fj(\()p Fr(const)30 b(stp_papersize_t)c
-Fm(pt)r Fj(\))3525 1902 y Fu(F)-8 b(unction)-3725 b Fh(unsigned)41
-b Fk(stp)p 768 1902 V 40 w(pap)s(ersize)p 1276 1902 V
-40 w(get)p 1471 1902 V 40 w(heigh)m(t)j Fj(\()p Fr(const)29
-b(stp_papersize_t)e Fm(pt)r Fj(\))3525 2114 y Fu(F)-8
-b(unction)-3725 b Fh(unsigned)41 b Fk(stp)p 768 2114
-V 40 w(pap)s(ersize)p 1276 2114 V 40 w(get)p 1471 2114
-V 40 w(top)k Fj(\()p Fr(const)30 b(stp_papersize_t)c
-Fm(pt)r Fj(\))3525 2326 y Fu(F)-8 b(unction)-3725 b Fh(unsigned)41
-b Fk(stp)p 768 2326 V 40 w(pap)s(ersize)p 1276 2326 V
-40 w(get)p 1471 2326 V 40 w(left)k Fj(\()p Fr(const)29
-b(stp_papersize_t)d Fm(pt)r Fj(\))3525 2539 y Fu(F)-8
-b(unction)-3725 b Fh(unsigned)41 b Fk(stp)p 768 2539
-V 40 w(pap)s(ersize)p 1276 2539 V 40 w(get)p 1471 2539
-V 40 w(b)s(ottom)46 b Fj(\()p Fr(const)29 b(stp_papersize_t)d
-Fm(pt)r Fj(\))3525 2751 y Fu(F)-8 b(unction)-3725 b Fh(unsigned)41
-b Fk(stp)p 768 2751 V 40 w(pap)s(ersize)p 1276 2751 V
-40 w(get)p 1471 2751 V 40 w(righ)m(t)k Fj(\()p Fr(const)29
-b(stp_papersize_t)e Fm(pt)r Fj(\))3525 2963 y Fu(F)-8
-b(unction)-3725 b Fh(stp_papersize_unit_t)44 b Fk(stp)p
-1395 2963 V 41 w(pap)s(ersize)p 1904 2963 V 39 w(get)p
-2098 2963 V 41 w(unit)g Fj(\()p Fr(const)565 3073 y(stp_papersize_t)26
-b Fm(pt)r Fj(\))150 3308 y Ft(4.6)68 b(Prin)l(ter)46
-b(functions)3474 3605 y Fu(Data)32 b(t)m(yp)s(e)-3724
-b Fh(void)39 b(*)g Fk(stp)p 649 3605 V 41 w(prin)m(ter)p
-1039 3605 V 39 w(t)390 3714 y Fu(This)29 b(is)g(an)h(opaque)h(data)g(t)
-m(yp)s(e,)g(whose)f(structure)g(is)f(not)i(visible)d(to)j(the)f(user.)
-3525 3953 y(F)-8 b(unction)-3725 b Fh(int)39 b Fk(stp)p
-506 3953 V 41 w(kno)m(wn)p 872 3953 V 41 w(prin)m(ters)44
-b Fj(\()p Fr(void)p Fj(\))3525 4166 y Fu(F)-8 b(unction)-3725
-b Fh(const)40 b(stp_printer_t)i Fk(stp)p 1329 4166 V
-40 w(get)p 1524 4166 V 41 w(prin)m(ter)p 1914 4166 V
-40 w(b)m(y)p 2075 4166 V 41 w(index)i Fj(\()p Fr(int)30
-b Fm(idx)6 b Fj(\))3525 4378 y Fu(F)-8 b(unction)-3725
-b Fh(const)40 b(char)f(*)g Fk(stp)p 949 4378 V 40 w(prin)m(ter)p
-1338 4378 V 40 w(get)p 1533 4378 V 40 w(long)p 1783 4378
-V 42 w(name)45 b Fj(\()p Fr(const)29 b(stp_printer_t)565
-4487 y Fm(p)s Fj(\))3525 4700 y Fu(F)-8 b(unction)-3725
-b Fh(const)40 b(stp_printer_t)i Fk(stp)p 1329 4700 V
-40 w(get)p 1524 4700 V 41 w(prin)m(ter)p 1914 4700 V
-40 w(b)m(y)p 2075 4700 V 41 w(long)p 2326 4700 V 41 w(name)j
-Fj(\()p Fr(const)565 4809 y(char)29 b(*)p Fm(long)p 1006
-4809 28 4 v 32 w(name)5 b Fj(\))3525 5022 y Fu(F)-8 b(unction)-3725
-b Fh(const)40 b(stp_printer_t)i Fk(stp)p 1329 5022 35
-5 v 40 w(get)p 1524 5022 V 41 w(prin)m(ter)p 1914 5022
-V 40 w(b)m(y)p 2075 5022 V 41 w(driv)m(er)j Fj(\()p Fr(const)29
-b(char)565 5131 y(*)p Fm(driv)m(er)7 b Fj(\))3525 5344
-y Fu(F)-8 b(unction)-3725 b Fh(int)39 b Fk(stp)p 506
-5344 V 41 w(get)p 702 5344 V 40 w(prin)m(ter)p 1091 5344
-V 40 w(index)p 1404 5344 V 40 w(b)m(y)p 1565 5344 V 41
-w(driv)m(er)46 b Fj(\()p Fr(const)29 b(char)g(*)p Fm(driv)m(er)7
-b Fj(\))p eop
-%%Page: 23 28
-23 27 bop 150 -116 a Fu(Chapter)30 b(4:)41 b(F)-8 b(unctions)2658
-b(23)3525 299 y(F)-8 b(unction)-3725 b Fh(const)40 b(char)f(*)g
-Fk(stp)p 949 299 35 5 v 40 w(prin)m(ter)p 1338 299 V
-40 w(get)p 1533 299 V 40 w(driv)m(er)46 b Fj(\()p Fr(const)29
-b(stp_printer_t)e Fm(p)s Fj(\))3525 513 y Fu(F)-8 b(unction)-3725
-b Fh(int)39 b Fk(stp)p 506 513 V 41 w(prin)m(ter)p 896
-513 V 39 w(get)p 1090 513 V 41 w(mo)s(del)45 b Fj(\()p
-Fr(const)30 b(stp_printer_t)c Fm(p)s Fj(\))3525 727 y
-Fu(F)-8 b(unction)-3725 b Fh(const)40 b(stp_printfuncs_t)j(*)38
-b Fk(stp)p 1576 727 V 41 w(prin)m(ter)p 1966 727 V 40
-w(get)p 2161 727 V 40 w(prin)m(tfuncs)44 b Fj(\()p Fr(const)565
-837 y(stp_printer_t)27 b Fm(p)s Fj(\))3474 1051 y Fu(Data)32
-b(t)m(yp)s(e)-3724 b Fk(stp)p 311 1051 V 41 w(prin)m(tfuncs)p
-860 1051 V 39 w(t)630 1155 y Fr(typedef)46 b(struct)630
-1259 y({)725 1362 y(char)95 b(**\(*parameters\)\(const)42
-b(stp_printer_t)i(printer,)1775 1466 y(const)j(char)f(*ppd_file,)1775
-1570 y(const)h(char)f(*name,)h(int)f(*count\);)725 1674
-y(void)95 b(\(*media_size\)\(const)42 b(stp_printer_t)j(printer,)1680
-1778 y(const)h(stp_vars_t)f(v,)j(int)e(*width,)1680 1881
-y(int)h(*height\);)725 1985 y(void)95 b(\(*imageable_area\)\(const)41
-b(stp_printer_t)j(printer,)1871 2089 y(const)i(stp_vars_t)f(v,)1871
-2193 y(int)i(*left,)f(int)h(*right,)1871 2296 y(int)g(*bottom,)e(int)i
-(*top\);)725 2400 y(void)95 b(\(*limit\)\(const)44 b(stp_printer_t)g
-(printer,)1441 2504 y(const)j(stp_vars_t)e(v,)1441 2608
-y(int)i(*width,)f(int)h(*height\);)725 2711 y(void)95
-b(\(*print\)\(const)44 b(stp_printer_t)g(printer,)1441
-2815 y(stp_image_t)h(*image,)h(const)g(stp_vars_t)f(v\);)725
-2919 y(const)i(char)f(*\(*default_parameters\)\(con)o(st)c
-(stp_printer_t)i(printer,)2348 3023 y(const)j(char)f(*ppd_file,)2348
-3127 y(const)h(char)f(*name\);)725 3230 y(void)95 b
-(\(*describe_resolution\)\(c)o(ons)o(t)42 b(stp_printer_t)i(printer,)
-2110 3334 y(const)i(char)h(*resolution,)2110 3438 y(int)f(*x,)h(int)g
-(*y\);)725 3542 y(int)143 b(\(*verify\)\(const)43 b(stp_printer_t)i(p,)
-i(const)f(stp_vars_t)f(v\);)630 3645 y(})i(stp_printfuncs_t;)3474
-3887 y Fu(Data)32 b(t)m(yp)s(e)-3724 b Fk(stp)p 311 3887
-V 41 w(image)p 645 3887 V 41 w(t)630 3991 y Fr(typedef)46
-b(struct)g(stp_image)630 4095 y({)725 4198 y(void)h(\(*init\)\(struct)d
-(stp_image)h(*image\);)725 4302 y(void)i(\(*reset\)\(struct)d
-(stp_image)h(*image\);)725 4406 y(void)i(\(*transpose\)\(struct)c
-(stp_image)i(*image\);)725 4510 y(void)i(\(*hflip\)\(struct)d
-(stp_image)h(*image\);)725 4614 y(void)i(\(*vflip\)\(struct)d
-(stp_image)h(*image\);)725 4717 y(void)i(\(*crop\)\(struct)d(stp_image)
-h(*image,)1346 4821 y(int)i(left,)f(int)h(top,)g(int)g(right,)1346
-4925 y(int)g(bottom\);)725 5029 y(void)g(\(*rotate_ccw\)\(struct)42
-b(stp_image)k(*image\);)725 5132 y(void)h(\(*rotate_cw\)\(struct)c
-(stp_image)i(*image\);)725 5236 y(void)i(\(*rotate_180\)\(struct)42
-b(stp_image)k(*image\);)725 5340 y(int)95 b(\(*bpp\)\(struct)44
-b(stp_image)i(*image\);)p eop
-%%Page: 24 29
-24 28 bop 150 -116 a Fu(Chapter)30 b(4:)41 b(F)-8 b(unctions)2658
-b(24)725 299 y Fr(int)95 b(\(*width\)\(struct)44 b(stp_image)h
-(*image\);)725 403 y(int)95 b(\(*height\)\(struct)43
-b(stp_image)j(*image\);)725 506 y(void)h(\(*get_row\)\(struct)c
-(stp_image)i(*image,)1012 610 y(unsigned)g(char)i(*data,)f(int)h
-(row\);)725 714 y(const)g(char)f(*\(*get_appname\)\(struct)c(stp_image)
-j(*image\);)725 818 y(void)i(\(*progress_init\)\(struct)42
-b(stp_image)j(*image\);)725 922 y(void)i(\(*note_progress\)\(struct)42
-b(stp_image)j(*image,)1012 1025 y(double)h(current,)f(double)i
-(total\);)725 1129 y(void)g(\(*progress_conclude\)\(stru)o(ct)41
-b(stp_image)46 b(*image\);)725 1233 y(void)h(*rep;)630
-1337 y(})g(stp_image_t;)390 1479 y Fu(This)40 b(is)h(an)g(abstract)i
-(data)f(t)m(yp)s(e)g(for)g(in)m(terfacing)f(with)f(the)i(program)g
-(whic)m(h)e(created)j(the)390 1589 y(image.)3525 1846
-y(F)-8 b(unction)-3725 b Fh(const)40 b(stp_vars_t)h Fk(stp)p
-1172 1846 35 5 v 41 w(prin)m(ter)p 1562 1846 V 39 w(get)p
-1756 1846 V 41 w(prin)m(tv)-6 b(ars)44 b Fj(\()p Fr(const)565
-1956 y(stp_printer_t)27 b Fm(p)s Fj(\))150 2200 y Ft(4.7)68
-b(Settings)46 b(functions)3525 2515 y Fu(F)-8 b(unction)-3725
-b Fh(stp_convert_t)42 b Fk(stp)p 1029 2515 V 41 w(c)m(ho)s(ose)p
-1397 2515 V 41 w(colorfunc)j Fj(\()p Fr(int)30 b Fm(output)p
-2416 2515 28 4 v 32 w(t)m(yp)s(e)p Fr(,)h(int)565 2625
-y Fm(image)p 802 2625 V 33 w(bpp)p Fr(,)e(const)g(unsigned)f(char)h(*)p
-Fm(cmap)p Fr(,)h(int)f(*)p Fm(out)p 2657 2625 V 33 w(bpp)p
-Fr(,)g(const)g(stp_vars_t)565 2735 y Fm(v)8 b Fj(\))3525
-2959 y Fu(F)-8 b(unction)-3725 b Fh(void)39 b Fk(stp)p
-558 2959 35 5 v 41 w(compute)p 1028 2959 V 40 w(page)p
-1298 2959 V 41 w(parameters)44 b Fj(\()p Fr(int)30 b
-Fm(page)p 2332 2959 28 4 v 33 w(righ)m(t)p Fr(,)g(int)565
-3069 y Fm(page)p 751 3069 V 34 w(left)p Fr(,)f(int)h
-Fm(page)p 1346 3069 V 34 w(top)p Fr(,)g(int)f Fm(page)p
-1943 3069 V 34 w(b)s(ottom)p Fr(,)h(double)f Fm(scaling)p
-Fr(,)g(int)h Fm(image)p 3414 3069 V 33 w(width)p Fr(,)565
-3179 y(int)g Fm(image)p 976 3179 V 33 w(heigh)m(t)p Fr(,)g(stp_image_t)
-d(*)p Fm(image)p Fr(,)j(int)f(*)p Fm(orien)m(tation)p
-Fr(,)h(int)g(*page_width,)565 3288 y(int)g(*)p Fm(page)p
-973 3288 V 33 w(heigh)m(t)p Fr(,)g(int)f(*)p Fm(out)p
-1681 3288 V 33 w(width)p Fr(,)f(int)i(*)p Fm(out)p 2372
-3288 V 33 w(heigh)m(t)p Fr(,)g(int)f(*)p Fm(left)p Fr(,)h(int)f(*)p
-Fm(top)s Fj(\))3525 3513 y Fu(F)-8 b(unction)-3725 b
-Fh(const)40 b(stp_vars_t)h Fk(stp)p 1172 3513 35 5 v
-41 w(default)p 1562 3513 V 39 w(settings)j Fj(\()p Fr(void)p
-Fj(\))3525 3738 y Fu(F)-8 b(unction)-3725 b Fh(const)40
-b(stp_vars_t)h Fk(stp)p 1172 3738 V 41 w(maxim)m(um)p
-1707 3738 V 42 w(settings)j Fj(\()p Fr(void)p Fj(\))3525
-3963 y Fu(F)-8 b(unction)-3725 b Fh(const)40 b(stp_vars_t)h
-Fk(stp)p 1172 3963 V 41 w(minim)m(um)p 1687 3963 V 41
-w(settings)j Fj(\()p Fr(void)p Fj(\))150 4207 y Ft(4.8)68
-b(V)-11 b(ersion)45 b(functions)3525 4522 y Fu(F)-8 b(unction)-3725
-b Fh(const)40 b(char)f(*)g Fk(stp)p 949 4522 V 40 w(c)m(hec)m(k)p
-1262 4522 V 41 w(v)m(ersion)45 b Fj(\()p Fr(unsigned)28
-b(int)i Fm(required)p 2650 4522 28 4 v 31 w(ma)5 b(jor)p
-Fr(,)390 4632 y Fu(unsigned)28 b(in)m(t)i Fm(required)p
-1241 4632 V 31 w(minor)p Fu(,)f(unsigned)g(in)m(t)g Fm(required)p
-2406 4632 V 31 w(micro)5 b Fu(\))390 4774 y(This)31 b(function)g(c)m
-(hec)m(ks)k(whether)d(the)h(v)m(ersion)f(of)h(libgimpprin)m(t)28
-b(that)33 b(the)g(program)g(is)f(link)m(ed)390 4884 y(with)40
-b(is)h(equal)g(to)h(the)g(v)m(ersion)f(n)m(um)m(b)s(er)f(passed)h(to)i
-(it.)73 b(If)42 b(the)f(v)m(ersion)g(is)g(the)h(same,)j(the)390
-4994 y(function)32 b(returns)h Fr(NULL)p Fu(.)49 b(If)33
-b(an)m(y)h(of)f(the)h(v)m(ersion)f(n)m(um)m(b)s(ers)f(do)i(not)g(matc)m
-(h)g(\(i.e.)51 b(the)33 b(library)390 5103 y(v)m(ersion)38
-b(is)g(to)s(o)h(old)f(or)h(to)s(o)g(new\),)i(a)e(string)f(con)m
-(taining)g(a)h(desription)d(of)j(the)g(di\013erence)f(is)390
-5213 y(returned.)43 b(The)32 b(\014rst)f(error)g(found)f(is)h
-(returned.)44 b(The)31 b(function)f(c)m(hec)m(ks)j(in)e(the)g(order)h
-(ma)5 b(jor,)390 5322 y(minor,)29 b(micro.)p eop
-%%Page: 25 30
-25 29 bop 150 -116 a Fu(Chapter)30 b(4:)41 b(F)-8 b(unctions)2658
-b(25)150 299 y Fg(4.8.1)63 b(V)-10 b(ersion)41 b(macros)3624
-591 y Fu(Macro)-3723 b Fk(GIMPPRINT)p 854 591 35 5 v
-42 w(CHECK)p 1317 591 V 40 w(VERSION)45 b Fj(\()p Fm(ma)5
-b(jor,minor,micro)p Fj(\))390 701 y Fu(This)42 b(macro)i(returns)e
-(zero)i(if)f(the)h(v)m(ersion)f(of)g(the)h(libgimpprin)m(t)39
-b(headers)k(are)h(greater)h(or)390 810 y(equal)36 b(to)g(the)h(v)m
-(ersion)e(giv)m(en)h(as)g(an)g(argumen)m(t.)59 b(It)36
-b(returns)e(nonzero)j(if)e(the)h(v)m(ersion)g(of)g(the)390
-920 y(libgimpprin)m(t)26 b(headers)k(are)h(less)e(than)i(the)f(argumen)
-m(t.)3624 1154 y(Macro)-3723 b Fk(GIMPPRINT)p 854 1154
-V 42 w(MAJOR)p 1323 1154 V 41 w(VERSION)3624 1363 y Fu(Macro)g
-Fk(GIMPPRINT)p 854 1363 V 42 w(MINOR)p 1310 1363 V 41
-w(VERSION)3624 1572 y Fu(Macro)g Fk(GIMPPRINT)p 854 1572
-V 42 w(MICR)m(O)p 1300 1572 V 41 w(VERSION)3624 1782
-y Fu(Macro)g Fk(GIMPPRINT)p 854 1782 V 42 w(CURRENT)p
-1484 1782 V 41 w(INTERF)-13 b(A)m(CE)3624 1991 y Fu(Macro)-3723
-b Fk(GIMPPRINT)p 854 1991 V 42 w(BINAR)-10 b(Y)p 1360
-1991 V 41 w(A)m(GE)3624 2200 y Fu(Macro)-3723 b Fk(GIMPPRINT)p
-854 2200 V 42 w(INTERF)-13 b(A)m(CE)p 1571 2200 V 41
-w(A)m(GE)275 2359 y Fu(These)21 b(macros)i(are)f(in)m(tegers)h(holding)
-c(the)k(v)m(ersion)e(n)m(um)m(b)s(ers.)37 b(They)21 b(should)f(b)s(e)i
-(used)f(for)h(compile-)150 2469 y(time)e(c)m(hec)m(king)i(only)-8
-b(.)37 b(T)-8 b(o)21 b(c)m(hec)m(k)h(v)m(ersion)e(n)m(um)m(b)s(ers)f
-(at)i(run-time,)h(use)e(the)h(equiv)-5 b(alen)m(t)20
-b(v)-5 b(ariables.)36 b(Note)150 2579 y(that)h(at)h(presen)m(t)f
-(\(4.1.x)h(dev)m(elopmen)m(t)f(branc)m(h\))g(the)f(library)f(in)m
-(terface)i(v)m(ersion)f(n)m(um)m(b)s(ers)g(are)h(not)150
-2688 y(used.)150 2912 y Fg(4.8.2)63 b(V)-10 b(ersion)41
-b(v)-7 b(ariables)3546 3205 y Fu(V)f(ariable)-3725 b
-Fh(const)40 b(unsigned)g(int)f Fk(gimpprin)m(t)p 1605
-3205 V 41 w(ma)6 b(jor)p 1942 3205 V 42 w(v)m(ersion)3546
-3414 y Fu(V)-8 b(ariable)-3725 b Fh(const)40 b(unsigned)g(int)f
-Fk(gimpprin)m(t)p 1605 3414 V 41 w(minor)p 1941 3414
-V 41 w(v)m(ersion)3546 3623 y Fu(V)-8 b(ariable)-3725
-b Fh(const)40 b(unsigned)g(int)f Fk(gimpprin)m(t)p 1605
-3623 V 41 w(micro)p 1928 3623 V 42 w(v)m(ersion)3546
-3832 y Fu(V)-8 b(ariable)-3725 b Fh(const)40 b(unsigned)g(int)f
-Fk(gimpprin)m(t)p 1605 3832 V 41 w(curren)m(t)p 2014
-3832 V 39 w(in)m(terface)3546 4042 y Fu(V)-8 b(ariable)-3725
-b Fh(const)40 b(unsigned)g(int)f Fk(gimpprin)m(t)p 1605
-4042 V 41 w(binary)p 1969 4042 V 40 w(age)3546 4251 y
-Fu(V)-8 b(ariable)-3725 b Fh(const)40 b(unsigned)g(int)f
-Fk(gimpprin)m(t)p 1605 4251 V 41 w(in)m(terface)p 2079
-4251 V 39 w(age)275 4410 y Fu(These)24 b(v)-5 b(ariables)24
-b(hold)g(the)h(library)d(v)m(ersion)j(n)m(um)m(b)s(ers.)37
-b(Because)27 b(the)e(v)m(ersion)f(of)i(the)f(library)d(ma)m(y)150
-4520 y(c)m(hange)36 b(on)f(a)h(system)f(using)e(shared)i(libraries,)e
-(these)j(should)d(b)s(e)h(used)h(instead)f(of)h(the)g(equiv)-5
-b(alen)m(t)150 4629 y(macros)34 b(when)f(c)m(hec)m(king)h(the)g
-(library)d(v)m(ersion)i(at)i(run-time.)49 b(Note)35 b(that)f(library)d
-(in)m(terface)j(v)m(ersion)150 4739 y(n)m(um)m(b)s(ers)29
-b(are)i(not)f(used)g(in)f(the)i(dev)m(elopmen)m(t)f(branc)m(h,)g(but)g
-(are)h(in)e(the)h(stable)g(branc)m(h.)p eop
-%%Page: 26 31
-26 30 bop 150 -116 a Fu(Chapter)30 b(5:)41 b(Programs)2663
-b(26)150 299 y Fp(5)80 b(Programs)275 1135 y Fu(This)48
-b(c)m(hapter)j(of)g(the)g(man)m(ual)e(describ)s(es)g(the)i(use)f(of)h
-(some)g(of)f(the)h(programs)f(whic)m(h)f(use)150 1245
-y(the)60 b(GIMP-Prin)m(t)f(library)e(\(libgimpprin)m(t\).)124
-b(Note)61 b(that)f(there)g(is)e(no)m(w)i(a)g(user)e(man)m(ual)h(in)150
-1355 y(Do)s(cBo)s(ok/SGML)30 b(format,)f(curren)m(tly)e(pro)m(vided)f
-(in)h(HTML,)h(P)m(ostScript)f(and)h(PDF)g(formats)g(whic)m(h)150
-1464 y(is)k(distributed)e(with)h(GIMP-Prin)m(t.)48 b(This)31
-b(man)m(ual)h(curren)m(tly)g(co)m(v)m(ers)i(the)f(use)g(of)g(the)g
-(GIMP)g(Prin)m(t)150 1574 y(plugin)28 b(and)i(CUPS)f(driv)m(ers.)150
-2333 y Ft(5.1)68 b(The)45 b(GIMP)f(Prin)l(t)h(plugin)275
-2726 y Fu(The)34 b(GIMP)h(Prin)m(t)f(plugin)f(is)h(the)h(prin)m(ting)e
-(facilit)m(y)h(for)g(the)i(GNU)f(Image)h(Manipulation)d(Pro-)150
-2836 y(gram)352 2803 y Ff(1)390 2836 y Fu(.)40 b(This)29
-b(section)h(examines)g(the)h(features)f(o\013ered)h(b)m(y)f(the)h(Prin)
-m(t)e(plugin.)275 3171 y(The)g(main)h(windo)m(w)e(is)i(divided)e(in)m
-(to)i(\014v)m(e)h(panes:)150 3797 y Fg(5.1.1)63 b(Preview)275
-4190 y Fu(The)25 b(Preview)g(pane)g(con)m(tains)h(a)g(p)s(ositioning)d
-(widget)i(that)i(allo)m(ws)e(in)m(teractiv)m(ely)h(p)s(ositioning)d
-(the)150 4300 y(output)31 b(on)h(the)f(page.)45 b(It)32
-b(con)m(tains)g(an)f(outer)h(b)s(order,)f(represen)m(ting)f(the)i
-(sheet)g(of)g(pap)s(er;)f(an)h(inner)150 4410 y(b)s(order,)f(represen)m
-(ting)f(the)i(prin)m(table)e(area)i(of)g(the)g(prin)m(ter;)f(an)g(arro)
-m(w,)h(p)s(oin)m(ting)e(to)j(the)e(top)h(of)g(the)150
-4519 y(page)h(\(the)f(end)g(that's)g(fed)g(in)m(to)g(the)g(prin)m
-(ter\);)g(and)g(a)g(blac)m(k)g(rectangle,)h(represen)m(ting)f(the)g(p)s
-(osition)150 4629 y(of)h(the)h(image)f(on)h(the)f(page.)50
-b(The)33 b(image)h(can)f(b)s(e)g(mo)m(v)m(ed)h(around)e(on)h(the)h(pap)
-s(er.)48 b(When)33 b(the)h(\014rst)150 4738 y(\(left\))g(button)f(is)g
-(used,)g(the)h(image)g(is)f(mo)m(v)m(ed)h(in)e(screen)i(pixels;)g(when)
-e(an)m(y)i(other)g(button)f(is)f(used,)p 150 5241 1200
-4 v 199 5308 a Ff(1)275 5340 y Fe(http://www.gimp.org)p
-eop
-%%Page: 27 32
-27 31 bop 150 -116 a Fu(Chapter)30 b(5:)41 b(Programs)2663
-b(27)150 299 y(the)35 b(image)h(is)e(mo)m(v)m(ed)i(in)e(p)s(oin)m(ts)
-1320 266 y Ff(2)1356 299 y Fu(.)55 b(The)35 b(arro)m(w)g(resizes)g(dep)
-s(ending)e(up)s(on)g(the)j(media)e(size)h(c)m(hosen;)150
-408 y(the)c(shaft)f(of)g(the)h(arro)m(w)f(is)g(alw)m(a)m(ys)h(equal)f
-(to)h(one)f(inc)m(h)g(on)g(the)h(output.)750 3378 y @beginspecial
-0 @llx 0 @lly 647 @urx 647 @ury 2880 @rwi @setspecial
-%%BeginDocument: print-main.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (print-main.eps)
-%%CreationDate: (Sun Feb 29 19:56:03 2004)
-%%BoundingBox: 0 0 647 647
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 647 647
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-648 648
-12.000000
-648 648
-0
-0
-0
-GhVQ@$[`q*^%hWSdL0pV25M*AV*KTN.8WW)5sPT6;*b^^r@9fAUBjI,"?iJF`KTuqMAV0u7K
-e8B+p8KDK5a@1U(@Hr1E`%669q5$V)6]MP&L?HrH2E.o#roAI:hX5IduF*Sa=YI4L6i9bjK)p
-Z2ak)zzzz!!!!A4Z.-mI;[SA+WsF"G!P_<'mce,hsnlkE*`MU459bRmKTI9q@4?[T+,nWj;:F
-OfBueQ;#*oAn("S-D%eF<id4n&J95s"k<uKodq_0jmU_:Sc>0#:dhRd?Gq7)*Qr*/n#>D$T/?
-"c4Su=h.ct/jqcjo7sd5``/RlKk?h.rSYnm*N4!sd?0.LZgu>M_#O"[+^QpXA\e2\r8"aH=pM(
-%2VLAZ,,4k^GnSWRm<;b9Qad%g&nhL#FW5]<1BTd_8M>Gs1nuZVqA:q%D]tW#8=K:8\kRcdcA
-tbOIYZ[C6[.31[b/=n"\3"kW)(s-?u:IBT!NJ/i7o5$s>U"6uL3#F`F,9HnX_]gtD["?g+pS.
-`3P?G!Q2T7NRH#BH^,?1pEg%^bDRmP:t!UTfpLZK:dD:TpguDaKdf"=\QJq(/oAr%"u;]<dk(
-=a<<<8?URO/Llj#;7[/YG5>Li4[P*:U<A'a$Jo?c('EbU@$H7eg%'UR$Rc:l$lF[N!sM2]!Me
-"QT]##h?kg0\'HCB_N'`k^JtpM>;<Tc3E%-"A#0=E0G"K7R'L_e'[TtS<]]$9MjQ2`i`><+I8
-pTu!H/oQ_huW)V8%S[BSXjeLL]"ejg+JWuQH6P]PI&Sudm#K5HpWkjTY0SE3G=!13bN-<BnP/
-7*LK$e^NOYTZq7r0-MC-i[X6GUY"99f-][X45H]Fi2Qc#Z[VRasH0gne@n&D:*n<5bl\:NHlU
-Qo4gM3eCR[T?cN=#7-`;1jjF;ZJd\nmYD]_5o^ks]l8V6"o>X@MB7#Nbr&l0a_lh]fO90/m,Z
-^\k?AG+i13*EdcMSG*1IlQeKm;,2M"1ql\Eg3r23fn0OU*2oLW^Mpg!"k.hmX6nSa>5)?%]Cq
-WI3H%g9XqTRQCtlP]KU,d$RV-HCW-3"+e1lpr7lQAK<Bk)+h5Cpn,IX>i)+Bkm`/$$MV(Q\69
-a94lbH']XBB6V$Ui3e+d3Hj'Q&"djqgU-P2bM\%o"3*,VMjR4`H((NEqu-o_p?Cma34;IQZ!i
-eBC.X"qJLqXh.>N/\c!o#krW=OhN.*OF56KFa3<gphos@j\*J9?D>U$U=q@4QZ=$T%r/$@*SC
-"Y/\AfQ/2U!.>5@mgMplVtZl#KhPAH4HZb>tUcRpM<OCZUg]ZMI^LiG!SG=&qF/:Fm1FDL(;$
-H13/kmqV*)Q`a!Bp']rIoAmotjdK-0(FRC%4sZK/="^KpC>!t'gN<VUgnXnMoD62,>ONBkp3_
->PmSe;o3baApO3R)PDJ&c#gU/).gN(6^k!Q$t3cJQWr,!D9NGI0lD#K=?Fd';;*A_0c<X+Nio
-[2dKiZXY?IVZ0)(T@%o(n8.!MIT'o>qU9qp"*`l>$:lgXR2?3IBq"YIm,F^J!-)kaO>@S'=Wd
-?SLhNR*kG;lr4^td?+K]7\bcfGo<WK7a5j_Mb0>\Ph6:kfl3.8km,*<Gr4X9?dsFqtcf.+!c^
-WPZoj'Yo]Q;-X410QMLXm,O[5?0B5'Hds,H!H5F)p;lgG\C]^4+@p\f%8Xa4'.OU<BCPX7dM#
-&AM+/!^.02*6G8TA(/eYXJ*g0Dg$D>UMP<H2QW4\ITa-HeiY:[+-BQQQ5>k0F+99aDjA)p+FV
-"h-SL\(0+i!)/8pi0c]j2[PJ<V1pO?<54_j21%iN%?i.5+uqgW`r?cN2\=3U./aZeNFW9_$&O
-3V\4eoC+1m:X^Y4akA::X*c@Icd@8ei"O3[IK?8%1=N4ceG=7qpDeb7agCWWhIU?\m4XO+N2C
-UEZuCn@8Js1d*:$eXB'NgS]bF<WTGDd]Z[TX?@PC%Xd4smabIRR^E/a7b@U/rZ>Q)3]i/7O:"
-K5G#!1hAT?4*+jb8WRTBFB^^*_0S8Y/(6SipC\*]*H\Ob;5s"s,t@s%eFBFhbWaNr#@)*8#\q
-r`rUMn%<J?NZ[W8^3I-<k.*'VmF6O[%Z=)Pg%:EkNCQcYGj!$AIE'g^*E,%V/nYo)[ch`Q=`c
-[CA[),4F-6%Nje5adBL%<DQe,<]VSC6M?J5+HCqNPM]1Y';/fS\o%G/e<Y)r=CangqWe\s<=%
-2o)$X?0G5SLgslG\GA!#645MJX&b!5CQ#XUPJO!s,N]=K=c&/f[[O*o:#Iqm<c=Omb.G$o3/j
-g\+uPb(4C(Ddtok!O.Fkkm`G,0`n0TA[WW!`c76DAdH*Krk]2R(@/Hqc,3?S_o#d%&%*A+EbK
-<QM[nY;_;'+L@pUqntD33L2aNY[bqXnmJHF[k*>l:TQ*gCROb#d09WU&X+=6.87L>MZc_=t)P
-3:cV=,9H56m/Gjcgs^?6mG/.gmQ09pcM?iJHagHPGsUc/DmmkQVg52d/Xh)sdu7cUV]FGEGsV
-E(h<W'UW?&P"8;"nbqWP4RQh/:ECR6QLfT[mr6LlrTX4:KH]'QKIjk&UZ9sT)?4L[WUr\&PE]
-dt7i^T<W1CZWj.jgI&;ld^%C9CfDhEp3sPd6HajkN-L*ad8Ta;kB+IXH[4d*]ill#2f+C^u9e
-.5GYp[m<A1DoUDESYNt'Fb-$/Bgpu#I3qd6$hlXG3mTD,'S_h#sM2PtpUhT\QNDn]e0QE`]EH
-CHc9VT^uAOr/)n(@/9e=]&!?#7*B1R@'KH._-h=FT=E-I;F;)TuVgrE/_r8EW.5ZOF:7%b#!O
-+kaA&?J-I%#Glp@XB6^.Xd2IXae)q%V9d7*Ss<M]apidib9uDWa5mq,(,)$:LZQa8jKu\C$2;
-Vun!0[IGNb.G%j$,a5lH]@#Bo_[E(06nTChLAKC6;Y](YoBkAKI+luH/(SC:\dr)Cl+j-s\1E
-)H#M9iDR:S@G5#_S#_^[]^W5JM(T$3F,\`1['^L=DYR=1R;@6.he],jZj@+WcU8tXqY=_Cd/r
-;b9F.5CE$gOH?j5,oWOCk<FYo**q#@ZXd"1(Q91\">:d=&\Qnr3BmW+ZJ%pC*?9.at3TH1kg"
-YUu^Qi;IQG[VX>'T_uJh%'!^T;qaO8AR\W4-YacQ:?e]7%A.f.V@9I!Wh.T5!3A`7A(N/MiE(
-SpoapWUFYl]V'8]h@8N.e;p"p2er9Q&,`I$80A>Y]3MpDq>\Te<_cNidl@Zrin:nZqcfQ<Pk&
-qZ28e5cag'W-?QN6k2FNmK5Os+3]'a.TLU#tok'Oi/[8T/Rd-GF4QbiCE@Ce"q8R>USCL<3(X
-6&"NjQU<RGD/0OKIjIjmRQ?H#N_i[jQ^Vsmug=]QO@\no59f!YE;b5+Xd:X54g'[l6<3G);=u
-BK6?&kf]0%2o=iY^gD>5"I_KIX;n@06WG@9MFj<1RA*,N5gE#*RHUQ',6^stn\7jn"VJYKRNn
-_*Qm#:egPO#Xu6^KUPr%:)*40OKu2=`dJPo%c7;;:3TWp3jY]e'k.Blr%ZQU&l,lg.,=*g;Ie
-/6nOl^S]H@G\qo]f5$"WIR*V,(Z_"IjJ`mBqh4SmQ[9g;]C)$CG0>kNEn0X>nseb#lXfUOEpi
-%0Aug=A,!#XMH2fhbLpLX,dt`,Dgu'f_%*Ul6J'J@K4+4J[LZ<]h5IPpiqmpA\ft#qN3bf1BT
-6>2>PQ`Y&ju6)kF4#YHS&XjB3-JoOQmq^'[]LK/\ot+m\suLWFP6=u43]"/r_L3C>Go[0M*Z'
-<6s1T"`uar'2)`fcWWG=[ocM17]9pn0b<_I<:u1?@Y;a5)6=*kH0<^[ArN^Ht4DDp4O2utJ96
-[jerEaBP<Na)&Y5"jkpbKDL')Bg^3TiO#_HCp-C!q7#]VeW`G*M?Bkg8[K#A;TubZNN4h1EB*
-qt8P.gG>t7HcdC8PNR'`g9kGMSG$fDCn38\A_bMlEOC_E:2Ln*Z#TF2L/H^TNuV.Y@K]u^/9A
-D(^NdI_(h_i\G.CLr@c\>@=8)KQqR/qTjk"'V>XH*R=n>LWI[;Y,8[7CjdcFSq])8kHr1^j6;
-H>t1:Hft`4<P/Vb<9/%LJI*H:-*hVm;6n."g[4DEo,JienO^N'BBi,.3Er(*-RDpQn*6d)k+4
-ki7-un;el1W:[OW.V0Cq[So#it:RKWh@:JEpD*,asCYr`/le$&X`f+aU1M5%ud7pB*2/YRW@H
-<7@&R3e&<O;LZ*ihF:#U>[Aet7G;nU/fb^4Q>u2-it4jo+qsV28M3B/m)oGT^]al3up_f+L.E
-+*8B:596WEDg$EdbF?8SiYd%08br7Yo([k.BXdp$:0I90l+0/u]0^DJ9Wkp&IWiG1qGk)aMfS
-g=o!OP"Q]@;/hCck;+Wo?ckWQ6WO-heDfSoes[d-#"HLJ`)Scr')pRBU=n)Vd*8KE.OCu9Bif
-"'gFFr],HrAKRGN+o:4h)K+J_mUfU[i&%%HE5a3F?-,eh;rmRa,]`eZKo_s*)"srf<W?FAbF_
-i$El*armUVnJ.P3N]'QKIjg?kR9%H*L00CQZbN7t0H2LuojH&liXg7:pEq`RSa%tgJn&l.lEm
-;/Crafe*75"GH/8gPf*%pEuQd^*q3b@KjPNE:DYZ(SBG3JhEm+r8ulM86>mf1qBlTMYHLJR4q
-FDC^--FYUpfWstSc$PFW[-P6!S]<Y6*n)fQlhX0tlc*jC]/<m>W'#4Uq37H4C8UTOD!,@Ta&7
-BCQg<Z`inlE$53eZ!:YWe>l[e>dRj`d$m'YK7]3G(4?1t\:bF:D>S(,#^AbFOCir@,AJ!H;na
-]!E,j1gdJDj#mYO[&kNQMjYJ^-K9TPM_rVSY)5f4t5+]Vu6I+q8qCPL\hKc[+F6q\q0Hsn,LD
-?^AloppWU02?ehXXZTE>YHMc"JB6AT<7f.t<\%[>qbBp*C+#[h1rO,GtO)*NlRteJKlXt$>2g
-%OUR$s.A<I5u&L*9j*/tKaaVPi*V-._1fK\P>X]It4V]DVM/g$k0;g+R7=A@3^:4=nhY8Y3I_
-<no<'FNWVaZMYO0n>5]kpZ2>Fjkd2as*dhV4sROd<.=E>\bVe:rII=;mm$U=r<@_V:]Ct"lML
-RP]e-kjHtV(!s4X=8loCVDgp,m\gUDZQ<pRf8C\^eDoD>F:HM=546RFYX5H^\t9`:!HlDBW@h
-1dOp'OA02EZSB'Im,brc?GU6Ir!$CeZtlU?<n`?*g=!maI5?:92"Bc5KH',Q03%HB<IPc5EVi
-sOXCsgj6)8AQ7P7+*][(=C6St\/,(,H[-[14Isg"d*=Ma+&+'2DI_AhMgXEl<pQ,%7qYn.Qn*
-\oW]Q<u'419TXG0=N12P2sWd>+SW2,%aIF@*m^D<c<e?+9dRg'Mj]UZf!PQh/:mbDDq9^:&-o
-nlm/BI<>(i4Pott[lgh(9a5L"Q`cTRQcfb$P(-^bc[A=[^FIP^P*MZ*'d&dV&'.]<*d[bR_2$
-o.nA%-^QQFrVa+_4A?-mZAIbe)oe(%dVft)ON7D$"#5I^=@*F$7bIIjEo(*-c:FPPrs,:>Ah1
-9Q)p0m,R=XIVbG1Q!ehHk'd1=iPYGb%%ij$V?\5rP*97'&!17O$bF/k\p$<YIsk-Cq<D#h'JP
-.Q]3rI`p73r(%U'iZJf9GYZNf2;`:-ts8'C0s-0U'PkFJe>'KVsMan4=pTFKC&+BD16[Bi!Hd
-B!M\pqJfldkm&*W'sVU9;1H?L(%$>J;tmq.m;QSMm8-jCsSqSD8)Eq"b/(lZV0sFrFZ3.(X6B
-jZKj4Ef/%Jql/^%'r/tCr/e!"P.qGtn*BQ&lZ1l0\SIDaYt8ii.+`C%.lPOG?BZJD-;.[/Df1
-ZC2ot/@aJ]"`NW519%hAQY97o_t2t675q@C(3%XkSUmE9ecqEt".[s%._?0=CQG1?K#IJ<3<c
-M^eeS?Ffr5&J]k:GtrE@,p=C)TEk$5Bce4Xf'_#Cc/NP,CqQ4ZK6;#5t7-Ognr=RH29HqLC">
-[QdssZnkd<74DoE8>94mBr%4!(Y*D*#aDD$"j(c,JQ!F<?r90bniU_*hF7RjoA^N=)l+bE^=3
-(W<Q?W@GkjV(Hhtb('4-oR^Hro2k^[5<G;pTpEFRR]8<VN964hfOQlhTphcY_M.9.enjg-"Ej
-7CC/n9g5k&iZSckp9#LDF5=o/F?-DcEd@2:5;g:1p'rmHY`M-]!XTk_C/"'d7TmDjqU`oJ6$[
-:K4L.HU]NUW(P!Ak3DLG8tGZLtR.6m'\+$LuDr[-ek-=?#&diXj=r[Nmjo%q.&U!&2IEVJD-^
-E5H!QMpu)m+_Q,^%:!*p:@VXc\oEtrHIG-kB6-=:A[e![*JYEbKLWhV]WB]gA@<c*SNJ]@Db"
-8f8ndnDWCr3S5hFg)*iT5Z;p`_WRk_K#'joZqU\?sJ64JG_uGf_4Y-:)?1)r83Zj]K?MVPbEp
-85I^&-phAb,M@jGZ0sl1abr>NM5I3U?r1n=$$QXr,s_npu4=eA(asI=!U2h>R8C?,,70b;ijL
-cKO'Re;io\eNW:4XkOlJ;Z$IU.IUS"l&_bKq_sPiX's54oqQ-KNS&t<B,+\V&0nc&Q+FVBo=$
-BVP@mt?dkAlD4XY_b.JGtOG<[^p>:qit,hMrsI_JL)Gdgr)-/Z:.cFHA=]0SW+Xo.>sEqE/hD
-6:,4pP/BF10F;,JN^a#5O[od]:RP7pPb\(TBkA(PcjCLka_=NNYrpRTDni@Bh,U*3NRMSgD4X
-Q5h!5+)n26i0R?duel1m(N1nEt7@+%nLb;o./oQu^K<f6O4S+.eeM#+<QCc.YhFH[g4`]jD\a
-b12Wo(uqDjBek8m8B[F+5fLrir!aIJLeoH!dltr`,Bd"kf_dB^Vc&G<T_KViUT@psHhC5L_dlR
-%B]Th:it#2>r?VC%(DUH>rcBKrpR4CY<m7k4/$YNLSZZG';o5)%BeGWZO78DQBnsr8NTKNs*=
-mb5c!>Q`ViFIea^][JJ-d?[hS7o'#-)i,VusJD@\/IWMFBn2pHbYN<'*jhc1$^J2FgTmZCFjl
-HH)O*k)jC6H&u+F>(YgE/:0qd"i\NYn./B`F$8oM'g>DsbE5C&<*MS_l;MYKf^dG"eFX^?s_,
-nT.mRD;W"NN(%6S2iXEW3,2@/f&Q$cN3:oM"C9;&\suhN^Hi[8$1[/ePTP-lq9:P,-83+b0>8
-hb=3?_&as2tg!tRrs4js!.\bTjJY![Zp/o?rts"':NSL7c)927QK:ABM?k6L+)_dq^-R6*p9:
-E?I+1,s-n^spL);^_64RFjTHgRa68]!n6W2.:mqpi.>7[V6gB[WS&o/RugXNuGE>e>T7H[r*0
-GZ=1\-qQ73+X/Vf9=[e\KWbq>LZQNmQW=AJjW1hD6.s6.)bOX)>d_A[\4=SjVo#QH(J%'NDam
-X/1hcqhd?QiML=FPXKr89ZbEfMu+6-_Sa52Rb9]LS!/RiFFahEG`=D)2D-RPAcsG5_;6n(W%i
-n(uN>p70REqrFnc-[!_*fJ.$np?fo0c5P:iA"2Up@i%i\dkl&dj7lI\@n,%1)GrG&/%V6N20:
-jVgA%n:gp,l6Y`ohCGa_9mmk/O+9a94lbH']XBB6V$Ui3gAX[e]7.hCG^J,69hh^Dc3a_dBf9
-c(uq/b4g@jelIO90OR:IR:d?IQ@-.q=8uTg298P]*s.7m_F[#qEM5`ha_kRrQj.[a3<iJNu;6
-lRGN3WD9!eugZtcEmQ[[^hhfUi:O)Jh*d8IU3-.d2PYq,68&"d&b]Gk?k]1"WjnuCIZ@fDfhX
-m8<?Rr=]P1@n$$W"sP]s?W@H"*1DGK[n5aTFKDI90'c]6%=&\,VM2SgV96>HTtdXuKQ:qiJ0+
-,o7UJ/UJ"VX)@DGHOQE#YQ(\0qn=bnpXGa\5.tJ#M*#g-FEZhe1HRe)?2Jta>7[@[ElaL-"",
-_TG='ckEK*&@D:i`JrT(*H`f-kPMCrNT?-Xt3S3IcpFtgAJYJ2D'f#k$HakD2HdjM1Iq<,ZDs
-!LrpO$%iG4E69]f?*S6je5?/Ja^d1kKCR%b2$]$=-MG=0tHro\`kfYIc8XR$O5A[+8GB?rBK)
-Ln%uZmQ9BQ.\QefXmFq60SNBX)WT061gJ=3eg,Pkhf]gZLRBl%IPFE=]B\[B._jiIS1IfoSVo
-tJsQh-(ekE#;e/ltfQ.Hd'N=2c+a*ni"]?]beuA[#OmXcPE$am)CW`V\bhh=B@ijk8P4hf"US
-Ijn/u-BDLXs0l*r2p5RSPb-@bcR6f+4tK?fPe5d,FN;4M\(2)flG3C7%d7]#hg=$?4Vu^ms3D
-`lhqG4(laq8/3N)h_*Et`gX6&@tRZFRVo\QQAn!MaP^k@GJa4>/n\o,AU\sucBfm!,^LF(_!U
-@MSQ+n!j<XipR#/mjgDS&TK=0+WEr<oq@4?*4Ofr5BDSDuQKOf/A-+j8-gXe`E:8k],:F?hF-
-aD)1Tr=adERqO,!@WP!2Dr8W0MmVC8N-$f1u=nrC"q_@ZkO[HfP%0#q(JborA^ZY!4[ia+HbC
-MesqfcDXDqC'ElF_A&NgAMTS*.5O\Pp[cgGb`aF4!LT2]XcPn^*+%qi%SJ4/Qm.?-Y"4>e0^V
-&TF;>QpZZkNAq.rF?+h%]e3BpQnDHoD#".pU"/`1oCD`Mg%75Ve12I[P`>FZCNmmTgL\:Inuq
-@jrQf'RAb,-*1:UEj^EMpW,3r!h=&,'ha2pTad.?]Hr;2TYee.ik+4bYn4*pr$i1AgXm(V_7Y
-,g`0[dW&B_`ccSB3sm_kI-no;tFX7004)BdkOc?h`\MYs7,coO0+m<QSXOP=0B8UQ^oM4Q.L"
-=7(D*Lnu(d;?>%a$^G'>Eg%GY1?@S>Pqe(2/Zo_!Jg[!&#N]jH6JO,X'6N6pPO$fDOkj`fkgE
-u1@,S+dUq_lT&)s-eFjQ6nlr<BfAK3\+'\Tke=?8(2\<R-%n:*#Qp%a'RY%DD5l_5%#jE9&hR
-n+p8G@EX!.q/aluh;&J-kZVpukPT*Wp24g+ZaFr4"YFebRs-o+dHo1:brD\Bg9D*NO/sG<TPj
-,a[3MT.XPs&C1Pma=<o5n[?F=o^E1Q4*M=Z1%Iin0KU0`d6SM%N\6#j_!OXR-Odcdtg`,rO>[
-WM=f=hRCugUR';*rdP0f?48KZ>?)eq23t9<dq_O3X4YXX6%c0Em]g9h&#-fs,\ls0;nHcn^#@
-_.u0/O)gmu0E;7?LLYUe]p?pf64*h\!g:dN/?1Y8bh!;8+4YLO,D/nkokI'Yu<q?g!0:I/ae+
-A\X:-#moi]HJHm8GrUDXGM:F?-,[Z>K8%GM2OK7&YlBrVEhONth1ZU!)!3<8gq#n&MT$@XCYm
-jf4EOI*puTZ=9@ep9He9+Fd]D94*cF4>42;b7,u`QRh.&VrX#Ua^Ro3Hf_>!jKs^'`!>A@J!Q
-jq%39K8i5'm[W5#HaiNN+o>h?UF07*?jBm8AZ?$fi/\_D<hG54W)S?lCC4M>>"Vjh<?^SpjY9
-iI+%o@oTZ/?%H<?JXi4CI_-mb8Ea8SZD4EA(q[0c9YAnO0(4N3[`XaMrCJbA_3i]SJMuA6Y\0
-e/itRWQ`EIPrC)e5V>h:p>9h]KH2+$&Vgc2>)7cM<DL"ROHVCU/Q+"HMpNtu5pWL+jAC3R2fg
-!XZGD@/bRiL9FFO72q(L/b8^b>QIs.jS*97-!=f<aZ"mWm^Tg@a7HS^6ZTkmQl?1ptUmWFa(>
-R\tXSdF9D1-GQm,gB/D7mp/.i:>Mid[3N]?jc#qWcIH!<=`GtLS*6A1CN`inFb62<4"%$A9UF
-4@H2mh`Bqj5&)%#amp3RdVbP!T8HpN(NQ&#>kbFXg-+-YG#Odg[XRQjAj\,>_j\_mrXml,:\Y
-N>B-b/m`,LOL`AD3Ohb%ILiRYjORTH_/hRmq[?`S_^p$)*L'Rf"KN]>s"S33W%hW1I'YYj4Mr
-:UKaT:d6-O;72$IqD*,LPh!PV]GHN#NUMfD>[3N]<jc#qW^-e%Hlc["J<kn:No@Sb+.D+r8@(
-KSXo'\5XI!P<"4[(7,/#;>7\TbU>oiLtVrGppr\`ur#r-#XGAm'M6I,c\:o4QMD,<>aMo)AZT
-,FW3DY7/\Qio$u;%d`c>rgc:(\'p2I4++,Bqi>jFqI%q!pNLM!<6+WT[nf)mFiqNPP7DE#3.K
->/4e'I[ei7inL+tLM7nos%\S^_7UIUb0-I>8LI>>]48SQogeZVA&YMd((fB^Ud5?5H>D7OfBq
--<Qr`uD-r[_15'`p`lY8<]nJ]J%l,(L=0NWViL2Q-[R9/*,*ujM=?^qp3]u<,VMa>^reZEJ+2
-aC:Wg]nsplF3D8E@hia2;,)rMDHVT`V5:X8e4Z*&?_-)O%b^=d;G4g:4(\ZGJh_T+upXFW&VX
-2trC%mXE]<uRhF6eLM>/nm+*]J/ff^5-I9Pkb4WF=;bocprF)_npIWtBG6UZc`)nTeL;A'nlV
-[5P&.X&lE,rJuH0?Emu4'2K$!qWO@QHe-uaCs?70^&5Ls?gbR<mBmsMIrXT(+(+`a%t=;rIkP
--[r2k*SS[7_lB+1C0l+rF/imicn?9R:2Y9'q;(H_)/jkP,_m]sl5]C'[hDL;;%hO_L;IEu9gZ
-.INEr)^B%20F7Q]@XdKmPFmsIHPh@49)nfqd6hi!S?di_"@pPE5M\aDHO.$L4p"R=EmZM7fm,
-Gjh.>2q.&sjfFDM:q2L(G1M4k<C"$\=R^Lmf]BurN55"UALE(?U;+DZ"^A#>0_]SmIa$9Rn:O
-VM,TDe+hcT'sD1XA2TlX0\gH0:aMdaE0P"W(EaaX*9[HKjOX?[fs/='Tgk2:l2brQR:Yr0uUA
-k)MOk\F\!-]=Y\A/R.q8^\m2eLE9X5I/.954ndB(:T[a(U;+JCq<+AW[;+6\2/CdF>IT([qG!
-G;%1NbHHR'.,?-Xt3S3IcpG+d$#3Ig75?I@m4Z08Iq?)Gg@6^RD%0'A9aQQ>9F?-XP'S6+qsO
-HG-8QeSmpjn-r36p[12W\ikZT:4]dJ)J:m9a*>b/B4X^80A>P$m8#])2O)$",IOp"sTeb!+J?
-_JV`MFJ/H[F+JN=g=oZ1:k,A!@0n@X!7[J[>$JXYRDecBuUIL:FKE>E`,-!)2QX@rBX5]'+%D`
-%]$XEr\U<D]*bf^=q#VU9;Lkm[QcS@.($m<40AKW2.Cd-%TX>#1o6C37Z%-b(L@]4K3k>*s:_
-3pRp[r<D=c[IC8S"u,\kF/F&4iC,22f\5jfB@L^Qg4Vu0rc!p:(^b9,0ENEe[LFgAQs#(jsK=
-L>B+af/Rk&6'\7C,',jl//uOLX!tf+@bI38(J!U-'3^p`Pq<i:bR.q/alaSt<TGTr=JasgH\s
-rkE)2Q@q/mEcP^TKfOTBKOOE6i$pZ]YkM@$c;^c#p,;fCU*!([3\5UW`I6='&Jj7E@^B]'T@0
-D:pb@@g.5u<\jtP(IUJ<Y+M9tHAM3#druft`Al6+U7oaj<jtN*(F82-EhFBheRbp5l<)MH,`4
-5;<@PtRs$oE"l*>VDWn?Di$_j7.c0)?a%\W9<>R+([%Wo6pk]/;@6gVI9fO_P8qBpoub>XKTl
-bC08Sr\0t(#qQGMhWkI:M#-k/gEiRla#XBG%/^o^<=^[qn=`@5?0W;n!Cr*+58enc;F6Q^_c[
-T>a80ok]2REEmE=sX8XJU@8rRl_oGcBK\k\s+M?(_4E4t7B*oiWbN?-?bt9Nk]Z:0\27f:sY/
-/Y\LsY@kq5h*4UAi@J"qXYYja?PiD:%MQJM*G<1+t-d+M?(_*)K$]glE!P>rJ<d?<.n.GbN;`
-Vp9(BT0cJ=]3Oa"#f*CdZPYrPUW](f)qO4SJ?Qh5GrTT>4_>*F[*[q$dRe1Yf7?7C]*of*F?-
-*Q@iFgdi/0,hL_3q<,5mHIED>*4AH4HZbP=VE;a?ZM`/$&/)dQ2>?-]K/jAaJb]VQUL2S,DoF
-?'MH3Nq-ps!\V%-H(8SCZmP56^L_J6^MkoeE(HFE>%8AD>lohi?5a1>O$]P:7(R3/uO4Pk7q:
-J+,_a5d,gM>jV6)']V<UFA'nim\stOeS-$9l=*-HPXLEA`Ef*ROa)i3hU<=u6GaH*E=aqiO*Y
-r#<b`fuFft-PHp7]oV70rP/mPTL4aE!e(%t!YDjTcN+7_Ir*$L"d:XTPsdoUmLY(ia`0nd&V%
-B3Yo=RQk7ll#jPB`H3!fU<>!YbJ%8*4f^/1EBPl:S-V2hke(07$eK`,cTaga'kc!l$]9"67@1
-]"l^XI(Rak0-&M1ECQ\QT.<ojF9/gF\E3<aNXFV)3#lb).:d<QD/]6=-cM"s.$-tnq^3?EWb6
-X;4AfmUipI'3iLUW^(Wdq-IU/uO4P>7nG_q&L6FG?K!];j>n#25=ltM=9cRR_Jq5-h&s>5$/l
-pa0(qAHUuLp`/?7GJ1ao0n2_f&4`@Ec9AcY9]t3R<7F[7V3p+.2*VO`p3F%oaC8.*_YiF58ED
-9Pa?$989/gF\E3<aN8nq-^0A(Q9hlZm<iqrD$qOdq#Hg%Tc.orL!^Y;t!S[`)d&s8?tPU=[R+
-8aS_`&%l>^$q*@IeX'3]IG+2TEp3<<hIZZ;Q`D,oK368K]-`mt".;NCFY5bJ0eQ7!5EBZ,O/h
-Z:\5cC@f6^S;]-u!8Q`%n$4LT+8Q$%7Vds&5(A19b3bOlH9Q\!@0GaD.boqHL5-@am=YmY/'M
-_9@[2-i[hct.9C4gQ.=?-XOMcc:4%bK(d:C^?T0[0*,Gq.%f`#J,llU!%^mEgIAu7@,%Y1@g2
-Qk7q:J+,_a5ct28K?-]MC&'.:-\]\jDkVA5OF?-Ns@ugJd#ql/]?G+lhTZbCu\dT]NF;]mj/d
-$nA>m;LIb5c!>Q[stV14U4hAKW2.S6,RUf1!-$Gb8*\%m7E36p[12Wbq>La<5+fW=AJjW1hC"
-VUWuSS18[W7HB9DkDD7GA`OA-c7?Jr58IOJTZbCu\suiD3I`Tklp-o"5BJohk]6Z)Dsd+7`@#
-9PP]KNbJ]u5UQb?EiIl5.2ns/[l8U6RO3P0Z^L!#6L8eLLR&b!*2/B@Rlf5=T;m*TAeF7S-uk
-8FNHAV^Alh5#qK$<rj6.4kL_/n^!:fB(-jdq'YC$Jo@G'AN'lf3M^20!#mWk7(]M47Cm=$.[d
-'h<"4Gb0t",ZYA14asjbLHehqH/*O=p?=.mD=d9L+\dW+E^:WaCJmPj-?>uJ!4'Z+,%k-khpO
-;cO]5l,$T?"A\l<R2USL&ElVX%$#DGHP9Yr'%.$Sbok15@L:/o+M6GI[9@NHHRoh619*]\`CZ
-oD5b2D55na7F%7;Z97!)>rfmtOJ'c^k2a8"Q?S@+T;88"&D-*MFbVF+mf6["el`4Mqm!i_l$R
-*tpEi1ErZYVXbOXu)Zbgf%aIIj+=`ZjFS]pre0`(UN6I>ITkpJIM`#%ZY=I/^=0:+#3]po\Pm
-\Ggp!tc9Ab>tPmL3n>/>aKk7fE3]mH-DK?Ek!o@?=+2e;Kg_N_/pR9S0E11MYqp>hrgD5VsE6
-,qGuluVuQM7Y4'DSICloY<aP78G(&7*n&LI0;L[Jhl_BRp".>A5/f,M"pQ[rY?1qT?\r>F;bB
-ZOCo>fk^YoW$`nqSj\'j]*,M_7*<A`OA-c7?Jr58IOJTZbCu\suiD3I`Tklp-o"5BJohdQ\j!
-"m%AGBqrj:[a=-K.ZHIZV^AqG+*d<^;h6PGJ*8Y<(sun;,.\1*7W]N(Lb8dc&R>SbU<<OG7$i
-I\k]1"o^L%f1'&n=K.6m=c1(XUpcE"CuIisB6.A\rL,GBiE".<%SQZK1Vj_Ffi&)q-i\KVN*)
->QXdo850`O%#BUkVD^a0'<sTc6%rs44%R"%pdI2\su"9>J"-#`MT/8\dW*Z>n0@f<f3N\^6p@
-*-$4=`q=^N17/\aJcGAh8+hH_1*iD8EbP/1aQK*@<fOMB?5H*d$O?%DCSBtOOFIagr?$8+eBG
-:Nm+`s&Vs%/PM/A3Z;[[8ZLR7!=YYoO9iVnG.3$JUUU2g:ill^VXh]53u)gK`VC/'`+IId285
-[OsYfdqs/,s"am2\(?t%*ICiK"+r3.R7!=YWB;(YNst-AlHI*?:S!n(-C/m>O)6u.43pK(6`-
-fOCQ;]`Ah0bI]sqD+GKu)<At>dGAQsuT16=M<3?6pKq@9D%q6J:6-a38mq4?6M(*WB(Hd0_-o
-jt]sm+@RQVq<%'F;`.>\f=Ic?1utr[[I"VQ*#L"[TC5DhW5;mTmsg[BDH]'=^elMA.DlT8*?*
-pd.>nm[gMu#FX><,I9#TYCu8C[hhD(.AtA&^pWKCi?8#re\SKQ'+<nB:Noj9bMBUO:ZKCJr:4
-^"Coi&iJ.".o7iE45T]-`mt".;NC_hn@*Yj6D_-b#Ym=$*%meplSDlV"]J?1s^Sj`K*7W.1gm
-^\W#S9XE`Hq(/h9TD.IDLn`'Xk0R\7GeN;\!h]4P58IPu?>I-2gn;jQn9S\.*4hY)(8$ZT5aR
-TtFP.3d:MU2%Qh/7lb78V3q*UM?MD"(Q7@,%Y1@g2Qk7q:J+,_a5ct28K?-]MC&'.:-\]\jDk
-VA5OF?-Ns@ugJd#ql/]?G+lhTZbCu\dT]NF;]mj/d$nA>m;LIb5c!>Q[stV14U4hAKW2.S6,R
-Uf1!-$Gb8*\%m7E36p[12Wbq>La<5+fW=AJjW1hC"VUWuSS8.)*7<6H.F%%)41@g2Qk7q:J+,
-_a5ct28K?-Xt3S3IcpG+d%"+1dtDF?+iP[s#<&MG6+OF;`.>\uZa:8o`*SkGPT?S[6MJpC7@t
-kkqF>L:/27c:Tg@obG^6*#AK'.gEh1S1bD"lrN5'&7#JqLG%nON"sfJYM&#>fXgEq=b!/XFM*
-(`2';"'`U<mH&u`u7F""<c\m3ot\dW*Z?.Kl2b:ui=PA%-KXs<;'=F"KNI8sT\Z2BLBZ$g\mY
-(LL`eNF8kA_WBXSqC*N=`IZt7FHIU5]Ks*P_*?ae9BkVYOVk?mIfRLa.?<,^nAk9k0R\1Og1-
-B<F:RQ;m37$Y?Bl=AZrK*PUMA@]AB)oP.\ZsFTqFV7==eOoMZ+"bNsNuFI-hfVTV6ect12;<,
-s!*`A&O`0"]tuNTU&BAcrjr)0S(J<O=r!QPHpYl!;YYN4mCqbN\[ubN&QRPuDK0$+^OU%UBQ*
-15]E(kM)LZ7ur[K5W.;oR8MR]L?Pqpmgia><-V]nW%L.^9UC=SU!#JA@qkE26-F&?e`Gk`V"G
-1qmsGc8ZLe+TB';<-MY0]TbLVt94!+uT)9<f/X>;V4ge"W\OS(6l"=pVg?Cg0dI9Eg!6!$'UQ
-RbkLot0RZ@(HbW%UIX')9_'>Ctf\0Vl63u\(hn(^+\AGQW3;>Qb@:2Su<;pf;Fs`=![#&b7iF
-r<=b4/P_-(#YXbcHjl_'&m_<i]a;hd]=+&k+r`F9qH`cNfEe?"-'j]*,MpKFeTZbCu\suiD3I
-`Tklp-o"5BJohk]6Z)FP23t,Ceot?I@m4Z08Iq>t4h?jh+4cJ;b2,]A09C/d'cnQh.46k/a0`
-i6m,5`Ht;_\r?Q\b5c!>Q[stV14U4hAKW2.$m8#])2O)$",IOp"sTeb!+J?_JV`MFJ/H[F+<n
-B*+@^GjLkmYcL_3ns,,36\@RQQ6M!-UE(sun;,.\1*7W]N(Lb8dc&R>SbU<<OG7$iI\kV@Z*d
-:FFE\dT]NF;]mj/d$nA>m;KFXig\OJh@.&UsnF6!(@O^E"VLD7[K5Vl#[dCD!3Y4MCo"0$G$Y
-UU<<P:Jh@/.kV@[gTZ_j9\dY5]kVD(R/d&$Z\dZ*Cb5ePo/d&9?14ZBtbCD+S%%o*61>o09?*
-8IRd#6.T$"O`U#$b05bDLe(>CHPi6C.^S#'S\m,hb/QFLgt2l8_gM5IIa"TKnhE=/L,nFa:i0
-YYA[."cPd7!E\N8cXZ2H?EZ#_]<(diB%b@ohcPhPIiBGj:OJcK&4L>>[XA1Hf6o(d*V<=bG@I
-tp$4k4[.#3^GkVD]Vbq=A!YQ")\Gof&eeHFfao49&=9QW:\f9]uP9`SM`1(]R^?+,?t+1lR)c
-MOm,>"o!'kV<]H[CQbhQfp19&R>SP,J":O7$dqmLb8cAd:E;4U<>eiF;[?&kV<\]>m:ib\dUt
-pQN>$\/cu^5AH4HZb<SI;)*j/E1(Y%'"qW#j$q*LM!Q9dH!tipl!&:4k5X]]35`Fn^&.r1P&0
-nap6q!B*1Q;*JeBJ?3$q*LMP>f7s:/49>\kA>?M1*&G*t#Rf6q!B*;nuC.a;^24L_!88c.-ln
-lVP?,$iL5:YqDoIb<SI;3B77Jjb0Gbje,[r<@[PYF&8dfQBdo`Cfdi8oX^nCkV<\]>u",q=#h
-GGFkO0BPnP[OWP8l'.$nhM8@.X[?!F)<VE*iq&.r2C:'"EV+c1AF;+$l^:6e[/?eHsS^'RiDM
-h*UWb<SI;3B77Jjb+n-^?d^3`%g-ejmjBrdnH)QhAolkrm9cf'QB<N;Y;YH6(Z+<g2-$%V<'.
-E>V8`M//VY&LFsg$k]1\N\B5+4U!$b@>ZIY(&S:nenXX>'\dUtpQ]k@`<DH*8],]hg?V[pOb.
-^MXH+tF_kjkO(/cu^5jl@+pPnOeDb>q'iHlM8AY-=Q\bKq$T*kt\%AKW2.S=BY`E^F7"E`Ef*
-aqe7e,,<?'.Gu[',eI>7+M%tL7$j*9^f=,8?-X"m$q*LMP7u+oa8(m3TUVj&X$k@s%&(j07!(
-FL&Q_!J7lj/Q8a'A)MCrNI>m;LIbK5UHb._5-jSN3eXrm-!H5!Ko[U$`FH\1iW^-"j_QTd^_j
-U@j+5X]]S3=0h2s18^3^])#krfrUG1tq]MMf_ulN@niL>m;LIbK3>dbDM/QTCJko\SoMG-O*#
-+1P@@_&^f_$,hHVjqn[AL?kkV?]kcN>CG%umGHY.k3E,,s&.r2C:($1-XqQGZkB]i5n\hq`@V
-BjD6g-9:&RA.,6LVrQiH]6G?\TB.$q*LMPEXeZ071CCg3-W^rRe8sl?g?*6eAf).@)k?\sspc
-)2O)$-`;Kq>SccoOtLAQ>m;LIbK23e.`_EgW^N10KJ!?=dH0F'E0[1_AaP@-B*_cI,,39&.Gu
-['KJ$mC>m;LIbK23k.OQLR>qY&FJ1^p9dH0F'E0V*"d4PrJ;=+NY'jV"fU<CY-i$p*"Md7qOf
-f./^J&7N!im;6Z,.a;7!j6Q11=p)AM\Tr,s5CNShh)l./cu^5jl@+pPnT=_0"Y0:/'[@?8BkU
-ckV<\]>u",q=#hEAlE]F!f_%aV3TAk+EJOTP\t#8lY&Ziae7EFeIakf/jmmc#!aUh2G?Gn05`
-IBDVgth<ODK'mH>Ara;7<jHE$RfO:R?Wgk]1\N\B5-">aMRM2#Ao<i[[I'(`g0r6q!B*;d/9@
-`$(%/h,9]J\E$Mod:FF=\t#9/`2_PG1ZW&=g5D%N\dUu+6^IhlLFrZ@d:E;4U<>eiF;[?&kV<
-\]>m:ib\dUtpQN>$\/cu^5AH4HZb<SI;)*j/E1(Y%'"qW#j$q*LM!Q9dH!tipl!&:4k5X]]S3
-S"+"kqK,#Af4Y:9kVW2DPPB?1it`<D4A;H+@?LGNFKig/rp*?#,8&ibD@YgW/!1Gieo7\@<7d
-U6$(=n)/r$2PJ_s_:tXRbER:43>m=Q]jlCBR/eg3fGoS[(9U>c]F?)?$W!e=(>oj6q3R_QT'j
-^MO%@o#9-q;+"T_:Eg45Z6sF/qtSW"%ha5,a;/FDc!"Xf;)pqBhW_giOEiLb=%6L?:Ad]<$M'
-FZic<pHWT$(_>cSc0_o)]mcuq8QI`.>m;LIb?grPRpLA4V0T'Uk^;(L$Di7#jb,V&STC9d0)M
-5=e)g-[B[3"u"0Ujnf4_ZhF<1Q!LBY8*520-0g=@E*2dMI6RQ=Z7/gE==ZI`d":=M9f=0?\m0
-"XS5Kqiaa#ATH:G1l3XQ0<76*&QhPQN:00fkWDo-T[m*:8,jF*i0N5:n*Cra,VbS&^b0ndEnD
-NBU@7fda$!dg15:cG'"UXLb=%6L?lcGc^2QJaSZ.Ja[3bVlpR2`j.JDF\dZ*CbI5f;I@%@nHZ
-ZBIK6Fd!I;'a[l#K*W^E6ZmF$$#XE.'o<I?VllDRp6E7$j+T#=.C'k'k///rtYISEVfeMCp93
-"*HfSjZr#b&.r2C%L;9HTZ_o5AKW2.S/`$gKu2t)O+ZSbkq_1S/glDVFeQ%MbN#6UB=\M]U<C
-Y-*N6$P'EJne)o[WX>oj6^$q*CJP>bZNCoR,qAJgoKEZF)PV?1$mrm53V0quiV7!';3N9E#.&
-R>SP,J":O7$dqmW/=jbEl7\YO+!?GAs_7-W7kaI@Fa4VVJP\/.WlWM-+Y)"[`s:]P9C+b7PS@
-nQcFY0"*'1s#cGkS[BAJ@-45CM>oj6q3R_QT(L<%;#O4WaF-jp5F3\kFn3r](`IYTsf\GS.d$
-umt#(4h[G]BB/'K1/\*&QhPQN:I4l*B[c0Ua6EqGY@-S-S?%\(ir'J*MEV:)4Aie_R+f9c;tg
-h6kF`Xld#odtt\*Q[p\9<0otRGf24]>upk[c1<S=qd%e./ljH-pAH#UF`XJM$WtiHRk=dtU<B
-udkL)S35HR$g;kKU0T%I!aHg,R0gXNd%S:<9S[5D53!+#_t0.VKCUWZNC4-27?g%BsKAZlK,C
-[HG@p3gi-p<Rj+Trac-g%BIpp#^=5EN``tF>gUS>Ost#]\=IJR6l%!rVCQEM9`MhGeT^1iS)G
-'Qdsj?$J"6oS"'$2=K\X[mRaJ`@#.-l=ac\jB21eVbDN@Rd,jgXB[3"u"29ZGALmOQg'VtqNq
-g=A\f>^Z>')cic(0<MJUC+(Qcs?6.u0sU/fW#YS,.$dTNAInbN3`jS?lpb"X'.Pdq-_kXZk$L
-4-/#TJ%o7Kp+A#k9eppc:2QJHrJ'R,=LlsuRkf)YFh6qO\VKE)J66BZbCP=q)M&EL.MOdbGoS
-[(SE[omO;5=jZKk(\Lsb-G>o[\Kni1=.3HKrZ+H(9hA]sNu6Sq;c"*JUf\]a$+3Thq7(4aWN;
-jUu3%1^n,_<*A2KBA\^Gut&E7[It-c%3Gcf\GS.d%#/3%gtYFkd#'-U]9R]RL6Qa@`7C]NrrY
-lbX%SdCRm'-*jZ8bF'"Ah][m8t)I3OSN\1E'U!#^;d:L*AF;ZJd\dTF0/cu8IQN<l.A_UC$::
-8+n_lCE79\J3<F;Zc()dRpY>,VC[?r7VW)o[WX>oj6^%%)Z"gX`rj&"4mT2KsEd2!8,f_ZGoT
-\nkSd%b/J6jt;^Ik+%?T=9)5gQYgN_J\!hnguWP&S9$Cq$UDkuZ>H^(:_sA+]0$RlF"ZT`!D$
-@d0&,6:;E8$&(Tp!qRclg45XOATEZD$Kn%*ME:"Qq4;$ZAO@pZl9PX,e'f=m.WK!WY7)p\8SF
-LH<sS(h]u2!7Q!JJ87SZJqK_!d-NAr,q/'58ps_.uogr#NR_f^T<g6X?V$9G<,MS95&B^p/h:
-A@`[^*)@+MIdq'X*Z#nZBmTfUdmAH646scc^M?C9<8\/c16#Yjil_$c%*-^'oHHnb0dGHbmml
-LElXoJ#aC7@DQc0[@uRWG@L5RQN<ZLb<b]^.[0c1rmX68;@#$K\[unTZ,0lY*8B*]qcEFBf(9
-TOT$Ve%!uXjN['2=h:-M1&r_\p\!We'D:PW454`K>Ii=R#@sC#E@)1FiPmuP^.mJ>^;!_!GX&
-s6M9YEF%[qI9b<QD$T._SAA_2Ed5#=<OqfFia0orBYD!mNH\(<TQcC$9e.7iZJlp)6WkO1Jek
-Zp1"\nFlUk,HN92n*8&l>4pCCi6Frd$umt##^Q.lcY0T"Id*N`#,-!Urte<3p>,Hgf<.b?K7\
-=B=\MI+LUrR4)a+@ApV/K=SX2\_V";.pK#QCd.r=F)S\4=Vt4Y5>R0Pe@pU3ek7bpo#DQ<Hg"
-\#pDHCot0M6AXpSC&R0bYW/<@D\Oni1=.R4\RjLptRmdhD=mTIpp:GBk/bk=h4n'Z>I7m/")"
-<cF]a'K1/\*&QhPQ[ok?]bRu`k!32lD!pjRB[4/ULBSf3FP4+R*2ndJc!;@qbrHU3YQ1JX0&+
-r<>L1)$E#ZcPc!;@q\dXsY/j%ZG>H0hu)91gA*/AdB#p;(9$ks[e#)km8JV'Z?J5PMc:iLLo0
-FD(i$B?_@7\S!j_9li0.!-=T34]M8Ke<H28!a7Oct/m.kV?N[\dT8m>m?6SQYic$GtpAaXj=R
-0+M%suKeD*oF0-*EQOQHO!Me"QRprOCE\dCF&-YIg!Me"QRprOCEp0h)kV?N[\nk<h[8%3;2B
-Q3/N'`kJMRh<[U!)SnbCEIRZ;!(*3]V<8Hup5[$=1+1>3hWdd\!64Q-7e';on1.q<0SAPSh$6
-PH>COB_>)/Djd?CiDq5t<R)AkCd,E=(aZ=;LX&rI3=#Cp#U-eGr,&6Og%L=rjo9I@(%6H;+-p
-jf*^Z4<8!a7O`6r5K"0_)celF*?02/P#;>`66S@o'mZL_CmX.YjD3\(;"k5/PZbLo=N!McI>A
-T`;UYGp3\&9Fugo^ueg;Yf1?mj]/@rErI?QS+bg/d"R7m<gp[M2Ip[R'S<fo4?P<JQB]lH+Js
-7TZ_j_Wn:lOQkVLRD-83sS?qC`l#NZKA\]]@S1hM"-hc`.eOs+9QNI[i$!kh5\dTE%L%f)tof
-T[N?+.E'Ale_+f-.HuaS")&6^3>%bo9s60"MH.-&'*@<X29qi6GuMXbrE)Wu'dO=_/Rr>h*M,
-]cgZ>+'f)0_WQ@#'Q^C?6^Q%fQN<l.AXd/3F`Q]Oq<0SA'Y8*ZbdC1U>rEd1#)km8D2PmTae?
-o?UW\0bkd!o;f/bp6fmIlZ0FD*o.HXe]LG#'W/d"S:b;R=Elf?E(o?h-b.!4.^pB*5`'O<V%)
-dNYAdRKS\9'6:5&6-'H.TGUe?kg0\'HCB_N'`k^JtpM>;<Tc3E-)sO$=*iCN\1E'U!#^;"mRj
-n'R4a<5XB(,Go/eMfE$PTX7f[Xzzzz'McS"-n4&2ml(7I+<k#`6aW*u!rrlK79*VhU7DsgkKB
-\0?FR=53<0'9>bAi5Qe1fRZ#,6\T)o!hA;ZH9oK!BRU+WY/C?<WW/3pU-^(^Qt6th#ZBBbkBc
-gC@Q':8;b@\LDMnSuAFJGdjaZ>58=\uboo[Utj,!6Ce*kKB,hFLiIOok!gHkV<,\a.d\/o)AM
-thhed#=8SR-o6tKU5S6ENEr+uT!$K<;d:HWk"oo?*-G"#=4>@<G5gEo:b5_MV!F5m0^`7G6!!
-%)eAH2_S6'hTP0F(kf!#Vlmh]i_&Pa/)g!!&4r&YPRdEQr(][EV=1QN."@c5E9QlnZC7_5/SA
-T>H`6/m%od,lg2T6UO4_3Ib=@RQJVSKQ9(X!4",)>qZ/`Zm'TP+-IT@>RhR#m)iItD+AO%1e7
-"Tjc^56U0tSE&RDiR]Q[6ER^jCj!844%A_/@Wc;rYj.aN+$CE269*&OF1jg^7%#MlJl*%h6Ej
-kF@u]\9OH)tA$]m!:'\V`ETdgOA3GM0;X9ShHE_GhpsA90$8f\lj)7>QD&[h"e7t?$?3iF)kQ
-0%B/CYNQF4A[`qY?Vf\=Z"3?IT\t%'0fTf_`hXV_(-UjKaHJb(@=g6o^^))/E\t[Ai)*k&fIs
-kH?hiqJT%P$?0A,EusbP<J>\u^`@""8uP?.LQF^:Wb)^+\)[l9C?3SfqC"GI-FP\,^&@&m\O&
-bFMIrbPucYmWiW>/r+\"=a`0=9U>e@=OQ[89(RFU3;*#U>Ad52gST<l[(X$(pXIjkIVdm8je_
-n-TZ[<j-cWo.pAO<W>]r,U76Y'RilfD`3EuQiMpM:C7$i1I\L'nu?9&#\\"%Top.sS\=3=.%/
-WV:!Mpl5;.#8je\Zjsq0a%KtZCH'j.e`U!!W[6f+'mGX=gmNL!5NiJ75Muga.G#!Xt3i_!19i
-%TPTIpZLM67!!%[>QN7(?#@0eeeUFYL9="3l)1\`[bD:sEKg*)L.>cBY93SaDN$6H,2S+i\GZ
-8?kbM!n-X/IjU).NSO^lW.6>t.4E.Q#OaI;R[;@o^u3U_uLc&J:'29lsM[&Re5T+4<P9QKIJ]
-A[p_sTntDf,9dPqq*UV7`mS+?\dVY&.Q#OaI7/`321J.1h,p,HTA;+Q=gCGD"l&n`;HpA-m`T
-gLGcdNGHLqBf+&CK=Uu/A3%fi/)A[0Eb%ug'jp#]1[9u/\2MQBdk=\/-2WC=b9mcr1*nPfCA?
-Ts3$pN#0Q-!Me#@s_1QG4:H>8!OVFTPLGc?"Y$3mnnQG;XRWY#=)_0XM.\>?1r#dZP;NElC4R
-eOe?"2h]dV`R&;+P]mP%7<9,tZ8Er#^%a/1VPEc@mk=M!!<pCV.;Y^=D5:iVfA];`8%>&G*'[
-,i#pm0f\%(F#Y'6W^nQX+d;\FnEC]5rkTr<><n;kN\^4X0/DlTCIa[lkr!OX0R\g9+r&OQKl0
-]3LB%[J?Ms8@)'bCjUa0$C\G]--ECj%(^UZQ>5(LH#1H_W:/"lDI*PrYIXIHVH=U9]hN?"b[Q
-q3f?s>d*pE,9+sO1fE[F2mpX`0tEHYAbB@B6ddUA`fY,]-X\MD;RMDWqt<TS>cA`&,fLkBtLj
-bL#-7.o:0Y-mE/Gl9&SGUe.\o_Q98K.aC[p%@c(dp7.r?Y@>FCkBg7dO[^r4q'QaX)Sf!cpAg
-G3+'sm>^"d<jV"aRX3[J]G,9/e$?q^e5Ai?.Ufb5odhU'$^4P`RIDs8UL<+-U294DC2\;M`p:
->k-r@75n/uqLm3EGs3M!KVjHpR^5$9HH9):I<`AXD:.[+Wm(9?U8j\6PKd]Q0Z3l#^)"<hYT&
-Dqr_5q6?cGl7Yqhl!B+PhtIjp\F]kDAXl+@Yib1t8Og=..3J/'ff(,?/h=)#QfEAdAl)gGCqV
-^NMC;\TL%7CD,d]LUWD'WBb*m+D1Yp5nW%LS)?hOppTVjcd/T@?_'r9%LVg\tuMMPl2eIQf6>
-UVW#Z;m$!7?fCcUY>NsV";+WI)]'4/(`T/KQ<O3#Q45+>WDjH,GT><niACgDseTFYA8Hd[H7P
-&hQP4Qjh&^%gW4_Y$eJNAa%@?a><>G6]9?hp'G#+Tj&k7[;V.%QNcU592#$RsASXr-'iE8`;O
-XY5Zo@\U@9Nf7^83T<&#Z^irlAM=1F2^#[Pk%og5D&cWZUMcH;k#q^,/Q+=W\6\idNR;U`!'`
-/gF5j4XtiOZE=tSXH/1%`;!_P82GoO,9e0DRcq%@,/TG15GX-R/Bu_CbAbFq65*YU7mn1lo7o
-0MNMX2^F;_6+<+r#LqD(!1k3iH^BnjuG6r\J3Zp@'f%ZFE;[eXU#/_(muL,;-KkVAm35nMT'>
-Q@GfQN7(?#@.N6^`7G6!!%)eAH2_S&ZEkQ!$H!E?*<m*joGH1MJAck!rr<$zzz5d@-b+oM2/s
-'NKlo)\ml\Wh.!Cj2ekGB+)l-lQ=e]Mds>L0L6I3F.%cX=11;L9=mdk?M3h7B6&P!s%9*ej7J
-2D77H0h9bJVc?j[4aS.</mSreU!!!kQq9b`o&ZhcGCJ3\JC9K.'FudJb=dqX4[+_.?$38.3c-
-P?"?*j*C48%@kI%K"KK)0EOo"AH_?$?2W;!ece"TT6gI[@aj)#MFS,/cN$N2t-jb6@r3/:sHH
-=&+V/jZp"&lZ>.\7A@s*J93'mAa?I:Q?I\WR-QV8Gs0RBS/Cn#B^/$d_M/'k'N1/Ja25XW)7W
-3;J:a^lQhB6^SJhSH#lmdeeN.'gJ)>B`$sY%X5g`R0H#*H\:e$cP!&+X`"ouFYF;Y@ag7JIX"
-Q"t9,_RcP6*VY:r7M.5(qL+Y`K'H-d=<hO$),O-;!\I0)+Y6C#(g;STZ]T@kV<\`3s&[lP!bR
-eT\'k?16<KeS-cnSYOg#+TrI3R^uI44!aR_5OsNbCY3,DrI'2)&p,Wp#>rH'c01H].8T+9BIe
-RDgGASmS"M/EB-!R=Ok4M1:3`ed3kd'0i796<hID0Op.dG/,q#8S*g?$Hp(@]L2fFd>QBhCgC
-A#$!Om(9Sc^W>:+V`YT$8!cq^CU#).^0S0)g=#k59D'@+^28n8,LC"sPbW&3hB*JHepQIMo5I
-RBhoX>5Q]:*1@BVNRS1j2%<6SD+E^?oSct.8t7_(pLk1I:NmBt7f\ni_4WNkcM_KFQ+M.j*Yd
-,f!q6C#r06TCiGig",eS-a;j=Dp=agGUQX.K*3FXk+0Z.G(+r0uN!Y8"e&f(trfjd\Z%SDd4n
-hFC(@fB*)?s=_4$:;7;X5*h+d/@7R!67]B(f,0D3<n&M<Kk+KnP/#QNu,]nIOff,\?:L\ZFnT
-k^J6*MT\A^cmmXH%=Xf*b^>hN*ZKd:Mp7d`a=O%X%srO9QWWU=p!,W9A7KE""Q13s&\G'2d$[
-\dS_\N^/q^jNqH\.!>a)$m^T\"$s1:ct+=[F;Y@A*J#gFae?mC;!\I0)+Y6C#(g;STZ]T@kV<
-\`3s&[lP!bReT\'k?16<Ke$j=P05aR&_<3+2VmaO+3;S2[*k`!1Rg8R;[?Lq+*2=D`U'UqJ'i
-h8U+hmAB+6C.fAXW\J"p#FqfE1jE:Nbrel2nZ+=6C4a"VpPrlTtb?2FU7Wg)"/[7]XC7CXYmj
-c0+cSj9%$uTZsM]l/W%_O>ri2t/,7aD-_o^lJuX%JFsut\IM8dA$]O_m)TcdWMWN5gOqa.)2"
-_ofF$A]nZAMN0RD8SN'L/^)N,7mT6+cJ'>H^cZ]SYbKfLp=]W$U//ocqh+R;F1M??+/,G:r65
-_K,".l=$d,VXGW1I6\R9$!ju&_UXDmf7UWc[e@:2p&$ZXSgcdTCqH)'*iD2D/(Vm&Od`&F5BQ
-1+)U<IUp`@7<4LEUjPMAXtAQ5!@%^PO)jQSq'?>KKSd<r#"]kogJANgd=lubUBIG]m=R09'\<
-?='$4."5+g,acj\q717+T:hh;7J66)^!$I-+?a!RG?ns2t:1(4<5gaVl7>U*^k:TWb7^l"%)>
-_mrD,+f:P+-(1ML:4OZmnR2/5@"20@uI[A6qS&2,D`Tr?CqB-)gVP'<5H=H)"V9<0QOJ`27,,
-;;fV=2k7QJQ-%GD7Q-S)I'/E\+hil^cb,kT<7BoZ!H1D-!6+qPVU^3a5mmiZO!iqJ[6mj?ntF
-?&l5)`ApciNfr^>r=,P_>T)8iduiH=qjp2+maO/6lT?KWr*rg=a!p^>k>I$%ZJtW/Lj'GEU>`
-t3=oH_<rMf+G,d^Er<Up%?^*=D8OF?TRb0bc,B.\Kaa1f_uCYXk[EgNo;^&m<L\\,*0H`)aXj
-Z,E#gErfhpaPZO^.1Mn-\<%*m^e1RpZS8oTegf))pU9k\nnp:Xma=m7nf'-fJe]V0*]u*qdnY
-pK%F\GhSf)iI4&Y$5[ep[=+.8^Gs'T)#JkP;5nDnmOm13hMIe$DmVYKCm;W=_=CFYU&[K,.NI
-=&=[o==qN*YuOa]t1mrC'\6RUZg`Q`@:REm_JBJ\pKUcC`='fo#59&"R@6!2kW764P&HL$CDu
-MScN:[:HPc5]s=V(u&UE#O!oS'KZA%#*M??JY:X-kVA5>\dS_\N^/q^jNqH\.!>a)$m^T\"$s
-1:ct+=[F;Y@A*J#gFae?mC;!\I0)+Y6Cc@dK:QDgu`o2_.*2=D`s_e]gCkNiIrfh=Ha!#tGn&
-`k@uk,JA0m]O%AiWGGuRr?CaMX,M8GV<>t!]pHh2ULq/MX*Yp:jC57(,9tmdH+%?>rGreaDX2
-Je7htPDSBKQUAefe7+[iRh9,EI]bW%afFd>QC!&kFVcfq@^>B-k\?4%NFH.qZbH+eG`I4_HC^
--WW-7_U>gAHb)Ufjt73HlS<cK4q%ouqRH4k!1]=`g&a)ogH<7@JY:ls!f"?cs1.Uj4pt'[q7d
-e[&7,P*tO>YpuMRU.DW9b=8aYfk[=!@=lcS>M'POZ8l/?m$6]uY:odeJ?/J_LjhUfr#NTKqgd
-f0/ON#L\ni^+PY8[;*;$^@`Pg,/G4+g@3NqYP+V^ioY!39c4EeXqa*9k*X37Z\P8K*.)f',nV
-+[/@Vn@#[1spU1WcpK"XYPPMJM*GPN=F:D=a<X(TB]?_gHS%f1D]D(Cs@g*1Xqh0(1/qob9j8
-`ZQdOmMI#rSmFV*TF?'TiZ;E+#XGF0I_!B10ZJ%V-P?O:^J+V0#_j/]PLp@c"bEg1Q-(Rj,fO
-e^l%GC&mm.-4[s7\*i[]h"'A^cmmXPPcpY:ht]ABX"hiHeW]+8%d#aoatp/ut%L#,9<')qq%?
-$hF>]5H;tXr.i1M5aMpZ8i,3J#O$1T<'AC_:3,rPLgWa2phqK;8j:U5BF=8D:gT1qlj.\N8.J
-o0Jmq6Cb<U+31(Y-]!aQ"n6^N@sfFd=&O;th?"BF.fg5:kB!t!AYXo:2/I&k(qe_Ud$51*pA!
-6d`q!<=fDTIp<HJ>?n&Go-M]UnZRUm/R+dzzz!0A;Qro5R1!:XpWrlZkn!:XpW5$nNpzzzzz!
-$I58s1Q/2C2.K#cPSC.nR=W@'m)Qh,Rj9A2G,-QHduG5UG8A1@Q`[>QXKsh;h_Zg2NE,=@Q`\
-iGfD8PGQLHE5?6XO(GEca?ArO0kV<R_I]C2'04'TM]GSt>d:F/HrD\@.?G%-$GVPf[U<>5Y>l
-/6[>BsLE4bpOJ.]unlIbaN8E75XfSsdK@`euIe&2A?2n]qbfLiHii1\nNsIDF<Enp"aYiu'M]
-$pu;rjjJk*s&]3+Ef/IoTCYRuRo`qF.V+lg7a1OGR]"meO(T4_T(/Pu0LQ7R[cLUG;*A..S&Z
-?a_iK/IC[*cdRM-?GpipB\iu'M]$pu<=qJs)>Ghkg8Gt+$Tj.=O(qK+`a(sdHSAJcVbo4?P<i
-O\C"4^E4O-,k[C'i4h@?B$RM&`X`^\dUqChW=#d.r4]q:]5mZfB)YNOXlh^Sls!V`euIe&GbX
-46!dn.g1BqA3FC&U`\UqC)29iFbJ*Gc<hK"!lM]A$a7Iia,N]srk;?1Gpiotgcg@c7+jC,$J`
-E0P.jIX0T.\"mr;Nd*i,LF!bTBXR1CPGhO=8St1]$<h^9:YcAJg#Z.%#25b<#78;uQ!3m4!k^
-5AeaB'_D,*hkq(!hMA+T[`A.)nY42\"<C>nlF</_k)ZF7bNa:,q#4D^&r[`)`KL#1DAD._STG
-`07Rn/O3pu*[q;^`4qJp_*iPhbce6J.^hY\6-\dUsQ&I"qiHT>L5GUE&q"UQnu4>ibO%bG:bc
-/V-W@0eog@+90L#L"8c\f=n0kHWPNeT7V2a>#`M@+90L#L"8c\f?G#?$"+^N!ipG+a!G,'`KF
-Vs";`IVi<^W4Yt,+.!*DW9.X@$k52D6='to\C>7LsSX4Ud2@@`R5P=jn3(AJe,0em[EniHoI"
-F+a4EH/FN#,cS+bFmjp*6-;X]cd\",FCE)@+G_,-P@^>o-)GmY2_UN#eO`$lRCH?p*I<QXL0u
-kHUQkSX9!s7_]>_$_`(8b+.L`RH"sF3THM<N+]fe1(9kkTB_s9L@2A5?%hE:Ldb2qmC6f_p]P
-0^G\.uV))&Q06Nl4@?([[2*o"B2VXq%dH</Vm;m-SC'.r=L).dD$pWOMITZeD%ls`*;7@.G=d
--pj0T=F-X,AZ.iihoZ!ehchY[^"j+PTf(T)iSFBkV<PYH^E:_<2W.I/jab0]<<k,4$GqJ17l%
-mGfGXo_[o]EI^sKnmqJ-bGu:-EW17>/i4NF#RlDcFQuh%=F*rQpB0>d:nVe8iL*6o3T*F-9MK
-[cJqOgfpnOsk]))&Q06f`\\%J39%9bED4;8su^,)g0'(sdHSAJh-Iql0R!_/0O"g^?8/5o!om
-;o<k"M_;mYm&(11pYs/:`f'AG(L;b=fM<5Am_t+SN#1Ll0=hQZPkNQaGR/NKX7fG\Mt)`Biu'
-M]$kq.+&*"N\`\Uq[B=t6m8-T%ozzzzJ40>84)VZ>~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 647 647
-%%EOF
-
-%%EndDocument
- @endspecial 150 3882 a Fg(5.1.2)63 b(Prin)m(ter)40 b(Settings)275
-4214 y Fu(The)28 b(Prin)m(ter)g(Settings)h(pane)g(con)m(tains)g(a)g
-(drop)s(do)m(wn)e(men)m(u)i(for)g(selecting)f(a)i(prin)m(ter)e(to)h
-(prin)m(t)f(to.)150 4323 y(There)h(is)f(a)i(sp)s(ecial)e(`prin)m(ter')g
-(named)h(`)p Fr(File)p Fu(')f(that)i(allo)m(ws)f(y)m(ou)g(to)h(c)m(ho)s
-(ose)h(a)e(\014le)g(to)h(prin)m(t)e(to,)i(rather)150
-4433 y(than)38 b(a)h(prin)m(ter)f(queue.)65 b(The)38
-b(Setup)g(b)s(o)m(x)g(to)i(the)f(righ)m(t)f(allo)m(ws)g(sp)s
-(eci\014cation)f(of)i(a)g(prin)m(ter)f(t)m(yp)s(e,)150
-4543 y(a)g(PPD)f(\014le)580 4510 y Ff(3)617 4543 y Fu(,)i(and)e(the)h
-(command)f(to)h(b)s(e)f(used)g(to)h(prin)m(t.)61 b(Eac)m(h)38
-b(distinct)e(prin)m(ter)g(in)g(the)i(Prin)m(ter)150 4652
-y(list)31 b(can)h(ha)m(v)m(e)h(di\013eren)m(t)e(settings)h(applied)e
-(to)j(it.)45 b(Belo)m(w)32 b(that)h(is)e(a)h(com)m(b)s(o)h(b)s(o)m(x)e
-(allo)m(wing)g(c)m(hoice)i(of)150 4762 y(media)c(size.)41
-b(The)29 b(c)m(hoices)i(are)f(constrained)g(to)h(those)f(that)h(the)f
-(prin)m(ter)f(supp)s(orts.)38 b(Belo)m(w)31 b(that)g(are)p
-150 5137 1200 4 v 199 5204 a Ff(2)275 5236 y Fd(The)25
-b(output)g(resolution)i(of)f(the)g(plugin.)199 5308 y
-Ff(3)275 5340 y Fd(F)-6 b(or)25 b(P)n(ostscript)i(prin)n(ters.)p
-eop
-%%Page: 28 33
-28 32 bop 150 -116 a Fu(Chapter)30 b(5:)41 b(Programs)2663
-b(28)150 299 y(drop)s(do)m(wn)29 b(men)m(us)h(for)h(c)m(ho)s(osing)g
-(media)f(t)m(yp)s(e)h(\(what)g(kind)e(of)i(pap)s(er\),)g(media)f
-(source)h(\(what)g(input)150 408 y(tra)m(y\),)h(ink)d(t)m(yp)s(e,)i
-(and)e(resolution.)40 b(All)29 b(of)h(these)h(settings)f(are)h(prin)m
-(ter-sp)s(eci\014c.)1183 1759 y @beginspecial 0 @llx
-0 @lly 289 @urx 226 @ury 1841 @rwi @setspecial
-%%BeginDocument: print-setup.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (print-setup.eps)
-%%CreationDate: (Sun Feb 29 19:56:03 2004)
-%%BoundingBox: 0 0 289 226
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 289 226
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-290 227
-12.000000
-290 227
-1
-0
-0
-13
-000000
-ffffff
-cccccc
-7f7f7f
-e5e5e5
-999999
-b2b2b2
-d6d6d6
-969696
-888888
-fdfdfd
-c3c3c3
-00009c
-GhVPUM.2r.%#/?AQ#=kD5OW(N+k[D=a*70"$T/KnrfE'R*rq*6.BGsdL9?kaGn=/@DBq*CD?
-Rh^S>U6DU"aHZQI,Ws-:n(K3nK#2Qdp,'0KDkpKGK>='*:R6AjYp0cqOFdDfR:T7&Q&]aAC8u
-]i/kAcW%,X6JjkW0:UC?FR$r%Ft]WjbarOe&^mM(!'7A./^4E>_O`]=NX.d_T>_II%%6^5#Rm
-\X$.523>KlM:4/%F(I4\7[+nu$jMe\jPmluho2CUVl+`k,:07.h)?VMORU8cDb^<Z&<:fH=-K
-U0<nUQ!_+.=ILW*SSkQ&:-/;NAQjJeEpb@%dQ+*H-T<Vcjad$I>4nk;\NpEm6]-&G!`7n7%=,
-\TdLI>S:hG$+iHqXE@O9<B1P2bn@qp+$+4ZeUe#2dAC&#RKRWV)-I^4m2IKEp$P4A1D<kR,qt
-H<PWShiH>H@bNKRU>YpA/!IcusD63FE)tn&0n'&b+o=ha[t4,Q"I%$P4V[<iAJ96.lT./"nkO
-#U-#PcnD(^&je5_;L8_'O:Y#1UhgY.hX18YhX4D+?;Bt_k3icLdPaI7MZ4BUg&u(Za;5*@(8H
-Y:NuSa0[]OdF81EG\9Pd0Z6HY!Ud"mcMKVCpl\Ag@ML5:pM&dV["TX#.b+\++N7p^@(a</6O!
-20K/NuUP.fa.O#eW7mM;%O.^KYTU*3XuIIRY+EV\H44-7-J[P3\R1#YrtL1a!"D0[Khu9H[#A
-0KG)d#Cu71F%V#=\#rRkW&jeou>!d@@HebPj]J;XW(e_mB6-FRj64+=I(>F2AWQs=dQfX:q_0
-nQmTIt'%4%0)#IUjBqiMK.^5;Ak%Z2L=QFf!`>gq.ud,e!.Scq&g.8I,VG+Z(dE!W28R8$59i
-Hf^`[_t=4&KG5Vp/[e/P%nER-^\sgY,*s\jgH1M=O[gdPMT,;Qgt;tpm^F:":rRm1EmHC08:Q
-Toc'C;A#LVDt*E1#P&0m#;JUJt4W;kM!-ff_aZ`5#O=R35F_#EIk0P='"FT;X*9'qcl!GJDL7
-X;YJImV):*$,(j+<n2?K+B>_Wu5PK.t.A<6?#]`grjHPp=8U)#D@In9F+q&WGBQJ"1B$k64+=
-I)qtlqW90KFGP]O0YbBuaQ\b%Ls7W4,Cd03h)3Z^`ni9#Cl9;Xp9rS*E^,;TRC-h&IP_>,0)O
-Ab4j86hAmG;]T?g`,f`$F-hb2bm4"ip.G]gKkB9uZ9fj)UO8UWp7?;"0Sl6JMN=69$'0nFi1S
-\O*YIF@V#^535JSlrTc%,%OACi>50Yh=D4.5Mt=`3VK`\6N.6;U_#T)9AT,`)""8T,*u-eEb!
-]u(gCfDf[g0klJV]0KYi&V';>\ab_J/d*CA<-rO>8ZY!PJ3Qf;b;+[g"?&jiU%%p;DsGC*-Lm
-dL1a\@1N+$/ng8GN7"?,r@lF0r99dCEPr\!&YqL3a1u:[VoG`+XD_)KM\N@p'ToQp3hB#]g3t
-Am=!SXC7e<mKG5VpYMVP1;&kBgV1/;m#t6IDZJXM_8<-<@E52?5IFI!bb-au.*1o%hTh=Y3"8
-]+nme2_/Y"Gad-E)(%^&=,!db;R5!,B">nh:F&3+$6VF,#dX!rmr#L.IoD^_!O?1lD.7IH&?G
-B$Yk(+58==IZ%)%Zm;FYTb=Un\JC$TIUVBkIMbC3F/u+JES2k/Y8_1Bs+nf0RS,u'P7Z_!KK'
-8]:-sc#&E4sg3!ga'6AUg:icL.kf_$-O`ZDpRU.hMDKN>QqL#8uZAkJm4_M`iQPs;,kQ/lM4d
--bE%QUR<;f52qg"?(quVTG'^;!W]I;^rpt9=ueuK^SQ"d&5LFT.D/(8I0;K6C`]?-R$E"#]UJ
-DS:hG$+iHqXE@N_)Aj"Tj"J\OO.8:[HX[c$t3k.cf#pCJA1SGW!Th"G0l]7#Z!?#G8GGt;TlU
-0sD>`<k4d>',\+nT:M.eV>TpH`J8:O_hpJaneR=n)Rt4<ZhkhN,&L4M%-NM@#[qILZY;d2aD1
-j9`J)rKC[V=8<FO<(b#_+q#a'J3SZ[%/0-1Kod>)!%[<t33XQ[b33IZi"ZAG)ELrNQkQ%?!q(
-_j#t9o(3?mMi>TcH$!mR>bn*\SXi"@3uA`3[m\4XV5#gWbsH!,'=d$TR\aNIgY@TZR(M,%a\'
-[X.[8gu*/<`A`^-q,er(qDHgZos,iaFsDO&F,?RcJ3053hb+_O^LV#$-ab>`(:5S&ji+A&18X
->8I0;K6C`]?-R$E"#]UJDS:hG$+iMJ8C-;j(?Wf^t^S'gmianX5&?#AXMGt@4&ZRsZF[SRlo+
-XN]KFfLS`+_\-q&4>UTtD8P,a9gkLeuZ]fC91GPTo`EKJ$iK$6^bV<<t;sYPf*>,>;0Nd_o]`
-:F<"[mdH^.SPR*TCNPigZO&+6'7q$AHU]EPMR&[B(F'UQk&.k'BVeX)Sm6qW#\E\724TP5f)c
-XQG_-8KK^"Ig.*oR8/_GejWJp.S`U<GA.a#OaFa@pIdpc"r9aGaL#pCq1M$W5.<f[OJbd\giI
-!oQ,TtD7%,a;@dIZpC*6AUg:i\VOH'#UB>+uGaA&1:+AFK1>I;PJ&r7Lqi/:%V,]X`sjE#K>N
-22u~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 289 226
-%%EOF
-
-%%EndDocument
- @endspecial 150 1978 a Fg(5.1.3)63 b(P)m(osition)275
-2170 y Fu(The)40 b(P)m(osition)g(pane)g(con)m(tains)h(v)-5
-b(arious)39 b(widgets)h(to)i(place)e(the)h(image)g(on)f(the)h(pap)s
-(er.)70 b(These)150 2279 y(widgets)37 b(w)m(ork)g(in)f(conjunction)h
-(with)f(the)h(Preview)f(pane.)62 b(A)m(t)38 b(the)g(top)f(of)h(the)f
-(pane)g(is)g(a)g(button)150 2389 y(to)g(cen)m(ter)g(the)f(image)g(on)g
-(the)g(pap)s(er)f(\(not)h(on)g(the)g(prin)m(table)e(area\),)39
-b(and)c(on)h(either)g(side)e(buttons)150 2499 y(to)39
-b(cen)m(ter)g(v)m(ertically)f(and)f(horizon)m(tally)-8
-b(.)63 b(Belo)m(w)39 b(these)g(are)f(four)g(b)s(o)m(xes)g(that)g(allo)m
-(w)g(en)m(try)g(of)h(the)150 2608 y(left,)h(top,)h(righ)m(t,)f(and)d(b)
-s(ottom)i(of)f(the)g(image.)65 b(These)37 b(p)s(ositions)g(are)h
-(relativ)m(e)g(to)h(the)g(top)f(left)g(of)150 2718 y(the)28
-b(pap)s(er)530 2685 y Ff(4)566 2718 y Fu(.)40 b(There)27
-b(are)h(t)m(w)m(o)h(additional)d(b)s(o)m(xes)i(that)g(allo)m(w)f(sp)s
-(eci\014cation)g(of)h(the)g(righ)m(t)f(margin)g(and)150
-2827 y(b)s(ottom)e(margin)f(if)g(y)m(ou)i(prefer;)g(these)g(are)f
-(relativ)m(e)g(to)h(the)f(b)s(ottom)h(righ)m(t)e(corner)h(of)h(the)f
-(pap)s(er.)38 b(An)m(y)150 2937 y(of)26 b(these)g(ma)m(y)g(ha)m(v)m(e)h
-(v)-5 b(alues)25 b(en)m(tered)i(in)m(to)e(them;)j(the)e(preview)e
-(image)i(will)d(b)s(e)i(mo)m(v)m(ed)i(appropriately)-8
-b(.)275 3070 y Fi(Note)p Fu(:)42 b(These)30 b(en)m(tries)g(do)g(not)h
-(resize)f(the)h(image.)275 3204 y(Finally)-8 b(,)35 b(there)h(is)e(a)i
-(pic)m(k)f(b)s(o)m(x)g(for)h(orien)m(tation)f(\(landscap)s(e)g(or)g(p)s
-(ortrait\).)56 b(There)35 b(is)f(an)i(`)p Fr(Auto)p Fu(')150
-3313 y(mo)s(de)f(that)h(pic)m(ks)f(the)g(orien)m(tation)h(that)f
-(yields)f(the)i(orien)m(tation)f(that)h(b)s(est)f(matc)m(hes)h(that)g
-(of)g(the)150 3423 y(image)31 b(to)g(b)s(e)e(prin)m(ted.)150
-3643 y Fg(5.1.4)63 b(Scaling)275 3835 y Fu(The)32 b(Scaling)g(pane)h
-(con)m(tains)h(a)f(slider)e(that)j(allo)m(ws)f(scaling)f(of)i(the)f
-(image.)50 b(The)33 b(image)g(can)h(b)s(e)150 3944 y(scaled)e(in)f
-(either)h(p)s(ercen)m(t)g(of)h(the)f(prin)m(table)f(area)i(\()p
-Fi(not)g Fu(the)g(page)g(in)e(this)g(case\))j(or)e(pixels)f(p)s(er)g
-(inc)m(h)150 4054 y(\(PPI\))e(via)f(a)h(radio)f(button)g(b)s(elo)m(w)g
-(the)g(slider.)38 b(PPI)28 b(allo)m(ws)g(matc)m(hing)h(image)g
-(resolution)e(to)i(prin)m(ter)150 4163 y(resolution.)56
-b(The)35 b(image)h(ma)m(y)h(b)s(e)e(scaled)g(using)g(either)g(metho)s
-(d)g(to)i(b)s(et)m(w)m(een)f(5)h(and)e(100\045)i(of)f(the)150
-4273 y(imageable)25 b(area.)40 b(It)25 b(is)e(not)j(p)s(ossible)c(to)k
-(crop)e(with)g(the)h(Prin)m(t)f(plugin.)36 b(In)24 b(P)m(ercen)m(t)j
-(mo)s(de,)f(the)f(image)150 4383 y(is)j(scaled)g(so)h(that)g(neither)f
-(axis)g(will)e(b)s(e)i(longer)g(than)h(the)g(p)s(ercen)m(t)f(of)h(the)g
-(prin)m(table)e(area)i(sp)s(eci\014ed.)150 4492 y(F)-8
-b(or)32 b(example,)g(if)f(y)m(ou)h(prin)m(t)e(an)h(image)h(at)g
-(20\045,)h(it)e(will)e(b)s(e)i(p)s(ossible)e(to)k(tile)d(the)i(image)g
-(5)g(times)f(on)150 4602 y(one)37 b(axis)g(and)f(at)i(least)f(5)g
-(times)g(on)f(the)i(other.)60 b(T)-8 b(o)38 b(the)f(righ)m(t)f(of)h
-(the)g(radio)g(button)f(is)g(a)h(button)150 4711 y(called)c(Set)i
-(Image)g(Scale.)52 b(This)33 b(sets)h(the)h(scaling)e(to)i(PPI,)f(and)g
-(sets)g(the)h(resolution)d(as)j(closely)f(as)150 4821
-y(p)s(ossible)c(to)j(the)g(resolution)e(stored)i(in)e(the)i(image.)47
-b(T)-8 b(o)33 b(the)g(righ)m(t)f(of)h(the)g(Set)f(Image)i(Scale)e
-(button)150 4931 y(are)39 b(t)m(w)m(o)i(b)s(o)m(xes)e(that)h(allo)m(w)e
-(en)m(try)h(of)g(width)f(and)g(heigh)m(t)h(of)g(the)g(image.)67
-b(These)39 b(set)h(the)f(scaling)150 5040 y(mo)s(de)28
-b(to)i(PPI.)e(Sp)s(ecifying)e(one)j(automatically)f(sets)h(the)g
-(other,)h(and)e(the)h(image)f(is)g(rep)s(ositioned)f(as)150
-5150 y(needed)j(to)h(prev)m(en)m(t)g(it)f(from)g(falling)e(o\013)j(the)
-g(edge)g(of)f(the)h(page.)p 150 5241 1200 4 v 199 5308
-a Ff(4)275 5340 y Fd(Again,)26 b(that's)g(relativ)n(e)g(to)g(the)f(pap)
-r(er)h(corner,)g(not)g(the)f(prin)n(table)h(area,)h(whic)n(h)e(is)i
-(usually)e(smaller.)p eop
-%%Page: 29 34
-29 33 bop 150 -116 a Fu(Chapter)30 b(5:)41 b(Programs)2663
-b(29)275 299 y(T)-8 b(o)32 b(its)g(righ)m(t)f(is)g(a)i(button)f(group)f
-(that)i(allo)m(ws)e(c)m(ho)s(osing)h(English)e(\(inc)m(h\))i(units)e
-(or)i(metric)g(\(cen-)150 408 y(timeter\))f(units.)150
-619 y Fg(5.1.5)63 b(Image)40 b(Settings)275 807 y Fu(The)32
-b(Image)i(Settings)e(pane)h(allo)m(ws)f(c)m(hoice)i(of)f(Line)e(Art,)j
-(Solid)d(Colors,)i(or)g(Photograph)g(image)150 917 y(t)m(yp)s(e.)63
-b(Line)36 b(art)i(or)g(Solid)d(Colors)i(should)f(b)s(e)h(used)g(for)g
-(graphics)g(con)m(taining)g(mostly)g(solid)f(areas)150
-1026 y(of)h(color.)61 b(They're)37 b(v)m(ery)g(similar)e(to)j(eac)m(h)g
-(other.)61 b(Photograph)37 b(mo)s(de)g(dithers)e(more)i(slo)m(wly)-8
-b(,)39 b(but)150 1136 y(pro)s(duces)29 b(more)h(accurate)h(colors.)41
-b(T)-8 b(o)30 b(the)h(righ)m(t)e(of)h(these)h(three)f(radio)f(buttons)h
-(is)f(a)h(button)g(called)150 1245 y(Adjust)35 b(Color.)58
-b(This)35 b(p)s(ops)g(up)g(a)h(new)g(windo)m(w)f(that)i(con)m(trols)f
-(v)-5 b(arious)35 b(output)h(qualit)m(y)g(settings.)150
-1355 y(That)30 b(will)d(b)s(e)i(describ)s(ed)f(separately)-8
-b(.)41 b(Finally)-8 b(,)28 b(there)i(is)f(a)h(c)m(hoice)h(of)f(Blac)m
-(k)g(and)f(White,)h(Color)g(and)150 1465 y(Mono)s(c)m(hrome)35
-b(output.)53 b(Mono)s(c)m(hrome)35 b(output)f(can)h(b)s(e)f(used)g(to)h
-(prin)m(t)e(absolute)h(blac)m(k)h(and)f(white)150 1574
-y(v)m(ery)d(quic)m(kly)-8 b(.)150 1785 y Fg(5.1.5.1)63
-b(Adjust)41 b(Output)275 1973 y Fu(The)31 b(Adjust)g(Output)f(button)i
-(button)f(p)s(ops)f(up)h(a)h(non-mo)s(dal)f(dialog)g(that)h(allo)m(ws)f
-(adjustmen)m(t)150 2082 y(of)36 b(v)-5 b(arious)35 b(parameters)h
-(related)g(to)h(the)f(prin)m(t)f(qualit)m(y)-8 b(.)57
-b(These)35 b(are)i(indep)s(enden)m(t)c(of)j(the)h(con)m(trols)150
-2192 y(within)28 b(the)i(GIMP)h(itself)e(and)h(only)g(a\013ect)h(the)g
-(prin)m(t.)1385 3521 y @beginspecial 0 @llx 0 @lly 382
-@urx 406 @ury 1354 @rwi @setspecial
-%%BeginDocument: print-color.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (print-color.eps)
-%%CreationDate: (Sun Feb 29 19:56:02 2004)
-%%BoundingBox: 0 0 382 406
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 382 406
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-383 407
-12.000000
-383 407
-0
-0
-0
-GhVN?ED2SjhZ*W-^\lPFpqt%gO>Ot11r^Ag0fCflU8CBdRaif'=']4f9cLReX_ogSf1hX:_<
-eVA_5TpAA)4`H$%ei+3^L>dOfg4BQ:b5S[8JH=8k1I[IF$1+m<H(1h7N,smbd9>J(O9&;m3pG
-Y"S-SaJY@1J<5kSd(^q,Z*%EHq?JC%KS6YDJ*l@qQ_XS>cdb8,dA'53i1uHr:mUk9jnqW5pp#
->:jBmrH$[dE[no2?'gE.O;k.o=Ak/Q;.lM#Mt?gdW3qOJl1nU:D_%P8rj[Jc'1`8C%(Yoi0/\
-WaeJkN^r%lf#2KnaXL5j+$C3r$,>B4r=7Tr[E1-n.GL]f#.:\cHOV<r#[:^SN?H>YPOg3L\LN
-3j?L0Fq0DkT98ML'p#k;K\$l)cQUAM)qp"NC_qHchp@"R;Y7L1#V_'1dn([jNT>(BsCEib`rU
-3J[]W3-(qt&l5\FTI'!5I+C2_XH'ru(j[NP>e=D]\+$GOdi(r8td:4Dc78J)C77nbM_FNuNS7
-kNY9Yjn%diIntp%s(hE-k,7X.SC/K^q-4[(&c+`D5D%5-GBL&@>T1A0cdcD$X4BLHjn"E%bYE
-P7U$*T=kDu.AOO1a\&**9%n)QUDL:R/]2cC5_5!8?(LLg5'k79n!olos%bqg'jFpSKRfYdL^&
-+8NV#h352qAjr)?7,XKm([`*oCo?]20Zgfnr'(:G?7_X\3]b&B7<dWh`ks$TmtPj&UaTQj=fA
->rQYl85JH^a5Ee?id/Q?-`BBi#ImM@eT)-_)b^XF!i?LNKq2_V)KS5$XXns!.X$;$_hf&3B.K
-@?.ho+]m4PPAYk=eE;kb$5JQh,.0ht_WfIK!B5&*%a'O*1,>5nakDqD[\HHT=<L%toUhK`:_X
-qR?L0oZ+us6:+"*s-qtc=$$II6:+$=h^%,),UE"88\dhe8EaEDJ<,eRd(^h,+!Df$In9]*fc9
-2<q;;;:ju>HGR2JaqF)$SrPIqpp_urFNNf>bIar<Nj8*G-F29[3k*=gd.f\a`QCp[AkZ%q.@m
--NY5$U6N?@h[VOf\42,)qj#b;[0t<k?ACCUQ2P0n225IBmI(S051-NRSTu/5fnG>HsFM.b.1H
-rD5H#3j2PQ2PB(dh=%\i5k$h17([52#EfnR7+rBcS`,ZI775u+D\Hq=A+G*r'Y6Z0]>TsT50I
-VNYKROML,$7:t'qnib:(]$;0^$69KD$:lk.m@:jr>4YT[,o6%dJ+3Rfcq+ZoP)-JL1We*2mnN
-bX"Z-'L3NY#>+t6:]s=?!^HhJ!@$KVSP9FcA95N(-aA1tCm*0O_\9ZticenF3D.&I^(HC8koQ
-_F8Z.3$!S[G'DrXo"IaQ&k?+eP#o+moRdpf&^NM[K");3G+UOc-c)B,QXj'+Bg6cTjD*j=]\%
-?IObU5I8Iq+N(F.]=n2V4<E@QHQeOQs6EB<64_FXqc#C.'jQNPt8#FE[;>K&RU+A$:Ir<]E7-
-:&R:@3EqgsM9&PiIQ&hVd%-GI!O8`^p/VA0`HC(@Q.6<g4,)05/P8N[r[#/;96ZX:WH-e31it
-Bip61&.F(.5\N<K!MQ"SEt;EhU]G74o:b-kem!6AYt'&W1TObs=XUJ58'Mi02Fa%6hl;I,YP/
-gkd^?_/P4(0a:,cnBjJ;lY_$'l#q+"_4^l>p<dd<'e:s3nB3Fjl<o[,?"S8Kpj!fCCZ-X1Ial
-:o"4-1FCg^0^%5iN'a-0]@=j7Tueu5QH;6+5M-''I!\=?@<H(^E!AZR;W6H\jcDO5=CR%$L3N
-C[tUC'0XbO][Zh0k/+X(*Qq9nT>,?6XVMDCZ0[E*[t>l$qW1`#50q<?Oba>=BD3*&D`'(/:aP
-sk*7X&5l1nqY(1LPR[:o7JNb08q5@YTg1AV_Km"oF`6a=6c@[SWasEug!l\W5/V8?^8oc)u7?
-IjRd/lKl!^9bRJ58)t+8B@^n4>4i1Gd;?.8ETX1;`5X,9bn^@q_)m*s3b[]6Sgl,>PfjF:I_C
-+0XD^Y]?ClI9j4&n-]UWRX)`fXu:I1n8fg=CZ6]GI\^U\"'b&8\q\Hj^8Ig$RX,D^eZ;jBKTa
-A+q20bob?6.SO]!6dn`aL(OA]6&8dY6J\P&1?M=aQ=Fs+=9#s%!c`#_?h)o>f6?A`,>![[>SJ
-Tin4S)E"R+W1JC_S-'L)dlk\CGC-nd(Kp[lX3j'o-5q\d4RlR)AlPNGr6#2TJ&]C!U<a\FsV5
-\TO!SXjj6PkcA--PPY4jsL-gj)4NNk^A2.VQ;7$VW>SMu:&Kret^aH`,nB'hl';+mu5-kXl,c
-2ENA1YU>$/Q.H4N:U#%/Dk@_LS-T@JZK6EU_]`Iac>G)kC"jH>)d,Pn%-/ct90*`(Ot6Bjm?j
-SPB%;5`;5r#+FiP@1>HJnVidRC,TjP9$MQ[4K2k$-0l:.;9n3Bl:S%@nYK^/+Q`3K<(hI,bbm
-jsrCHBEl3S^dOf1PCEQ%Pp\d)XI`ZIQe2ZgVL08I"FSt0if^sI65b$j1^rb\lVKs_W.-0X3Ec
-HWT7@$\X9&a^Oa=q"mqRYtQU#Q7g_8l761m2G1h6!K/F!bbV$]`P4q:eFQH&&g;g/VRGgP!$g
-OTP-'UMboKci00-,pgeGq`TR+%I$2sk2oY#Q:.6"hi11EtO"ic>><[d239Fg\R!pE2%XJBDl(
-d!&Q^-0Kkj5%=K6@X+R!I@Q>8t=ji?]^qRb2K8Gs0J2cr.n[C\WaH-7qH`jp)fr;:DIQZ]_49
-q6#>GEkWj_)l5Y?@r3r-Q1A$#O%NM+jq1JQ3M[01odl9P+Rq;JLCdB-H2up%0`E>L8d+k(rrg
-!"n5R32(INO'W.9:TqKKbV%Vlr.GG9FG3p!S.$M-0C9$pt&eh&Rn7e7rD2F>.ZNU'GKN7rF$X
-bHH\<(Wcd%J;3L$DC^]MA8r=7p/%:q']AQR2A@c+C0qX7?HRS:F+k^>m^::F+;/AD?6C,e!uh
-8@Zp6emnRgW`98$_UC@$ECP3iiK>Y@djJ[\i#3bBJf1(gdht5:G`G6L,C8&O=]89VCf[n!DN;
-Tu<<Wb#?H(fdpFmQ3g3?9\TITjul1c23-To'p?H)?b&'l5Mcqf3TIq2UC]MqKN?)hgBt@BGp#
-MDE56IMo,[8013o)Y#;q?9n,g_A\@tLYuSDeF5[)micoc_K>iG:L[-,q`aX:!F#`/O/$nP\eX
-FV%$k0QQc$0Dm5rZEL[e4uDhXl!qCQC9N-Z@V2aXtpg1"$`K4Z^b;Q//3\I'(*:om(<$HSR/,
-Tj='-k\nY"9j\eI'PI-T5<q6n4ClDG+-N%hOA%"_Pmju%<6EId8<A\%$0nDS"X6pSK)])0Yl(
-"hQZO]Pp8Hi[YsP`\h(L+VUNK"2LaIK]9-0`GhG?OSmO>$>/uOY]V&cDQKP;o:;aDQ>#[=/q/
-I]F;R!9n+38`)Pc&)//nU<3V[E7&KR,B1&nTofq@07cO?A(^/`Oe_HOWgm_T+@57IV],0>V!!
-mgJV)Ja7Ri*QI$DYWmd>6a.SaodTMsM=1?+HifT@Qlh)t&)%b3h$mjSRWlWQ"*usG\"S7$C.k
-5S"K`)4)kgCFFV.SgTp29\%2>j><XAL.PUqS@+%8gGbsT;[8/<f8P9[`EZR>jHD!jOXH12A/p
-SU!WJC!ijj!!8"j5_WWpiq.=&N;(l3UUG!_;G=6qA?HaDrls"?LOVtK,tEVB"CYUDWA,?3fS5
-<nS843oXrVfbB<`_L0s4ZeacTqHSrI/As\D<Prr-iZO0mYq5KmVPgUgeHSO9NCb=]c#u?K4/B
-YV\oI6Tm7IhHE:*P-"Ysq.=5e%lq-P1YGJ`H77#-SN.@rQ-:oF_A/@=Jmf7ppZbf#-]OU\ebI
-WaIgeo91lq8,Es5XakCERM@M=#(8KMGG9NkC*/.I/$pV$g'irLl4$RlLN4Cb*e?Y8ZIP$QU1=
-F<b>FK7W>Gea$i&cipgdG-52"^unO_&IDMG-)c;$)SadEDJ':]PPC5d@,)>!CD#bu9,L)G/T_
-SPaCLADaoEQlQj%nF7qn"@unYF-U^HJ7S#U!(O9-=/LTWTRXk*Hea@n;<8)>$eAo<uTfB[&S@
-BabuFsTO;t(ccb!Eb&]>0/Z(s/F!3c1cm358.+<om.oL#A4H7:O&8t&)4[]_b^Pd(pJgV.DK`
-=bklesi)="T/eA+3LN?U;FB[\L'-U\@3!+$o)]YWN<b1GGfTILrVW_71T3:V]d-rE_<ELAK`)
-/V@q&ZuT,_K;Je:btuNT>`Xad.+Y+d$MeG$'L9).71r.X/`<s;^aJF\nB'hf_`[*(0_5i>W@?
-+f1)]&p";;qRO"ii@.3E%ES94AJ0V_B4*"3?sU5ud"$sEC3%te0#fti2mULs?soX448$b]#UR
-eX"9DEV87]N3'g20A,.<D,h>^Xd?hbpt:;.=&Ie2?giHVcD#8V7\3d:GFLnfi?,b&tTd.F&Br
-/oVY6.Jtr^0G/W,HCIRk(_P]-FN*nFCn%ipmpDnKR_Y"\!hS`eblmL.e$eoZ'Fm(uCm\Aun$'
-lB94p'2SBKqI,B4+]4q#Ch!6GF%jQ)NSu=p9#[TIiO]G%_qN\eM.r:i8V="t5@+[MEm48le5Y
-J>2.ek+b0MaV"WHX@p>VS,4^"%q_6$iS76(bXRtii(St$`g@TSgrK0qVqd4?F4//l%Rp\J]8m
-OC_cBP)n5^>m*W44"TUB::hJ?\pKmk9F:%T<J>u,A@4a$\2L2J$HdF)%>@1BE>ku@2QP)`.`X
-e<@t"*.]sAY4pJMtrX&[R,EdTiK<pU<Ee:]9,.8A-Wa>,AofkN9DVpRkXgbJo(e#_#J%lrrc+
-R>jl+BJAHG;5DfA/f\V.d%_]'@q`$WDL#j/q7q&DeHPK_F_"\n<eM')prBW8(M>I1LXb:RF[#
-^nq(Gn4IQ:&%haq@ZiJmni)MBH8aOu8?'6IACr,q)m,JBoD?TBo1c-_'uBI-.;n>/4coK#nRf
-A"4Fu4Wb=^N4TrLk*2'R*K1GHZB'3GN*:M=LQO3D4#g[-/MkFA%(5W;(']a<CZ8%j"*t.ikca
-$+)Z"RJC$Db^LkZs.^K&[`j>W?G.6(SXCN9oMdOF5,@QL=_\r_(A#K48!b$7EiL=@#1?:(A&n
-I(/D8$iBWcS9<'n5BHRL>N.&L[]Zkf,5!f`aCUhn"\b?gH2X26uO<]ha$?2=DD8.%auqAIi5@
-Y@B;fe&K%*l?B)rlW'?*l-_Ykgg'UgHJS$jj4/(@<jYg)&5d:W,)^$e#aWlnL7Ss2^b>GJPOu
-rc;X@p>VS,6!/k3&,"jb"GJ(\!i^A1GIG"D:*75K;b4P<R9Nn=H,+@88m%G;)4rWBT1H0kP!u
-LQc#Ve%qu:\'9l!(hmKiKbHr4C>uaS+[&1%%+[.8__E0MC)Ns^5f6GVr@6Z#dT=QV$@9n[Q.&
-Z(O,Vs3dk0Z?KlfmG/ESfe`eh&).6E\oOLU7Z%C%Pt]nC>X`k)gFO2*dNcbfPs4D))s)#=er+
-2E=0rMO(>L@m_%)USF@3`!W`-HpTd]oMe)[(Zn-b@j'H6P]5`d!-E#C=K8VHOAL*W2bM_&(J4
-b.YDb'.^h[K"_BI1f:uk.A5X*V6Fm4%q2gDp[ogEn]+XVTk5GRWbR>Re1VJ=b>_M!10GS&3N3
-f:Lp$r"ePAV_&3TK0`#O`*UdDor?j&X0H37Z!I%c4TIAnK9*aYlo&n;`XY-JgX7U1^9QiAu^/
-32,@a/T4X1>f2Yl+Vhaj10DXQ"`K^uVOW38#%S]*VI)rF+`Bp8'D&d`j$DCYPRGTK82q3*+D+
--N+5tB[rt7UJ!Z0h1!:P2X3oE&WThdCVLA`@hIgB7/XCooW-Zm+a:'3'9^jHcl#.3!Wo`U5odB
-%uZAa!JfisVg;T_;OP%RGFA<D$pSU##n%DCE\)+bsMWau2W$&LBl-4bBEYOKM!&7)1/h'Ca-+
-ref&"!^<#d5+#f*P3E8$':]GMDN*J61?E"\KIJimLH4\]I0Yr<9_L2Tj,B6Z4hTCc6jFA@:7F
-7\@_@]j(/>`-e\o'(hUOF5^fVU)CH/<RUm?5)):^F@k%thX8k(9J;(u8#YacB']HuU?@c!8g]
-T=9C6XkKlb1oBGJCG#RY9W!lgl9r?U/$@H0lBMN$3HRQ\%uj6k9=.I0Q\@gk?tcls&7Q6L:&&
-8D<O09:*V;a0V<s]*OP.[g'D1/RU:j/3:sDInL3\';0rGW_pCT,We8YHTrs&`09j(GYnII)b"
-<i7KTc"iX[CJS8./7u*0R-"5$=5&:H%qhq#'Up54]0WA>Y`^jF[^[9J@JrHAq)ccM9FY_DsR<
-LAANH.0icR9_C,Oj/eNP4e1p!r=7\n0PP.I`+0g"=u^$Q9G?k4GYcXR!u#fNe1dTV[$L5s`\i
-^U)-:fMaf.m-.<r=l0f`a?N6)nek+n6*Kq+CsNgN[@-A(jm;B[<<8-BLu,Bb))&&N4C%jO&eJ
--16^]N=%%%+gg_\qIm@fXoMf!S^aZ5=P%]k\`n')_>W02T#)Mg/"F8*>m[#o:%G(JA)5I3n1p
-'g6\Ho!pt'-H3Tgj;"'1>'$<A9fEK5(P\l&#$VE<D<fA4OUkL4!!Qd+X/J7KoXos-X\c9V2LS
-+((TB?%ck9l[S0JgO=Lm]u07[`f:_$D-mR3#toag?]b!N,a][W0U8\K9%=ENXq8(4L2apElck
-Qtg'PaA`gO#,_#d2/p!aZSe9'EE:99C>RS3^7+dr9IcI3A5^6S3KnL/P]B75R:=H43E+!:$1E
-^r:R$\\I2AkE8DZgF!q?h25ste\q_@M-d"B+mn6^h"$',1k!=W8RTFH&pqKlZ:L:%].B@6Z,3
-^8@q*Tdl?qD6ibBRLuBGL<LITb7,^1tJE#2:T>K>rAuBT^"ONSqd(A<;WAj5fI50PbCb\Gpu?
-D6+.h'CEZt0i00uDpgeGq`TN"Zr\253VYS+254]B3:N/M9q(^0UEo+k4&^J!K5KnC#k8g'7i-
-ZX0D4J'je&+iq1EF\AQn^C,@]#-Q(1rNL1biKJ7aFa11Ngpk0V`,Ib6QRFT]#u1+/ns"aTn))
-/!qr%>0_4=dk[eYR?fU6aL$V71"2jj$L.FYh*WrX6k!"<&;qZW$fMZ:D^%/uJ.MVkGhr/G"d]
-li%Lh'"mmFi!2CklBkj:]<#<L/I@YWP=;]FFT5jP%NCe""F(uC#H/MttPrWHtCKC3;a?UE9Nc
-l@f:&6&n-gkUd#;!^[):<9o<A2@a8;7$h]2(2Q58\T^Neg97<c2GHR+8Fb!cMbQ3+#rioVgmX
-S4=B;0RHMLN6h;:ekNG$Vo,O0rH_/.HFO&?tiBW-G);6jQB%W;U=,%_5=u%pIBZdP2_j1^j))
-c&>aAAL;6\]_$ei]Vn!OWG?rIC=A<'R&@!L7A"VQ!+m4AC*iV.n*#/5B-4Amq-k1rX0d;An7c
-j'E)_,[q)8M'EYNXXHMEg`4@J&AA.WI^m'.p;#pE@gE0hkd/1X&$$/Q<cn#/UDmi-@CEs^7[j
-^dm5WpZ-6l8Cj)"nTd\FMgYLhgb>.grS93Su)Ku4fK;WE97qio`;J_^\"/AjA+2O@gH%-reT>
-)JRKaHp:+*caZc$Tj7ZnB'gA`b1mLo:263o_\bS)+HBOa=rk;=GERgqAsV:!SqH"Vs-n(Oleo
-tI;.EtBUrYZ*4t@c0h9F]1k/<MpM<L-,t2=$9dpuYeBbF/Q?BO8RAFeeg0%J6Vrg1npSgb_R:
-KllMBpB/Pg?RUL9_[4cVQ[?_L%O&U\Gm!nI4i_E@6Ip8PCB@MB`s*+:<T8hJmdlpa1N,IQ5#[
-G]:WUb<rKC_J2SZ5It[p[,PmT54-A1SS5Lj"#J5i?u3m\XY:TcDapK&FaDOqijF*F>`4qjGX7
-8NWpmA"#LqD06A6&5<M3RtGo969fMmIq19<(EWWdd9$2A%<!^>;mO8-s!KMR?O),=`Yn9Mg+1
-dbu;V)^S,h],/Kkapi(pN1j[7u@Btp8)GlV0/(eZg>9LNr-1/Bhm*@AD7MsAn[]CdgQ][W)'W
-@_7BbbVQ$&^2U:SI20#YV<)$4M`QBVZm]nrEH&SRSb$lonUi_cRPEajrp^T`T$msC.V%?<EOF
-TQUlS3XYE/-/1NhIR8!SI@\il,I>^3&>^&:+Q.AOf6TcJ%ce'd*1E]c1gZ3+INeN$]35[H!fY
-]Of$NbrB,sN?5Z#]NgN_=rbrK3A$i%_EeY)X&5k5*[Pu0@#"g<b-4<pN?p!=6!Aq..96`LA7Y
-g+g"[)Gho,=\Hnl*)4Q'2-PA*M7S=!f"Napsf1dtc/,:U3:3BTstI6*N28?sm?gC12?m((0>"
-?R7'9[c*u;k.]E[S5(.`MU7(gnd3SL)B5'=YiY*,dhhu*Mk)Tokg]Q<(9t-Td%_O0]`s!]g^U
-+(6;B4@UY(U&B3O(F>JP7)E1R`-K.P3*QN+-c6rn7Y`Ig:&=3L'q-isUU'DK>3'W(;K<X!:mY
-Ao=Ft5c?`L1T\44.TT.5Tg8iFG"g>#AqNlcj\!J62A&g5,$?*3$nc*M1jA?knnE<3!3)L##Af
-XFOQ,dP>X%@sn[7afqWJ"]?m)^et3*lq>,AS,4(qbQ9s=31XBkB9&,C3K[c!`N`R+cI-p/,>#
-J1*1ikq*ZYOs,hP%M>Fa8(H`#FQ`K%R;`+Y1Y1s*0t[bRQ2b,3oM7&Z0N+j@MOCF6!l7I;[-O
-&H^d3^cu0ari4TW49t?S!4.[)PCo2`I:GX/G)g!U\Hl=,8n#?E2@M*$"j="3:&A)M;iOm[W,E
-%kRHI%+6U?$nDLAUT+0bC6(%$6YTKu*r7Qrlp#>pfSEe$S(7[4V_1Xc$EM=2gNR0QCAHQ8ej+
-Ts9lLA[B%d@pt$Y:&&2;"\DDAC<YOB5hj!h7B;;3%@`4<h].,-7"q;?3s)MZnL6/-2AZmU:Ja
-E$iio3DRh=1;ueA'=/,'k?*nB8c!$YEf]VkLSsBqdh1cY'`7=H(8Eb,Sk4+]@7QQJgGDE6MQe
-\VQ3eIJZ"]__&G72)"BcOObntR^WP-F=!&^NNql..mV2pnnWUR4K9=]hS*m23.Z('0[=QlJiR
-,Vlq3AYWM@8GiS&sj:,.ZQ/k\.hAM(u=43+2k\icMI(!(M41O/poX3[R$Fgj)dMSD0XA66SI<
-a`lUugBgKEMYFAA;%UCSk2WAC+WXLk]a5KLdl_1>t;`a9sU9Y,Q1t\p"R0q]6fNNhX$HUAo?B
-2E>ONLC%KG@DG$i"7D!^>;mO8*6FpOKSacHIluPN(XS,I<n216gkP$qKd6Qf(E)mPp!"ke'PY
-N!#:1]0feef%]PJYUdqX0J0bI*iCI*[LcYp1lej*-4L"@")RJ5mKRHSeG6'9Z?h0B&(TQ8jeh
-Sf<k>4HB)+=,LKNi;lmdo6PWDo[Vdt>;.hl:7^m;tV.9Met:#J>Xk@<_3i`m=dEI8\C-NTV4p
-s=p04?2B<kohkoidElsrHQA;P?'O6if.iGkX;NVYF4p<$-1b>ZkZS1*,3E6#,q2Se;/bM:tFV
-4*@eGK;ha$Glr7K,$JUft;LqOLCa_Z5*06=l[1!4-=>%Ru!ouqW8AHUr'(F$*IZ7-\;mQl,,W
-RTscomC83#\]5MBc&Aa#H1Qk8cUX*4X8-#]4!RDmAI@]0blZNg:g42efkF[K'P01u;W(O+uuM
-HeI=ch7'J*;tga//ll>Sjr2cFWif7a@--!>fNCC'q%]4h;0JAH2G1_pTp66@`>9u7O?n(/k>O
-@,`7Y8EEL:82,RRHe+-,B6+O1,ZB0ZCV7?[uF\R68kgOhJ"7q4d?YbB@"f6_MM)m=GEQj$")W
-&C?L*Cj:QfEcUUSi5N"*`"\'Im#8sYuc_$Zm`,p:(?9!CfOo%&t:AT6%S#NXHd9i#mt6G=TjQ
-q9+.sl^aK!lnB'gA`[B$a3R4FL_C*IH$muYr9lhl2d4+p$*1<W"%Ypg$7d(,!@"Ng9BFE5a*I
-ED)]#fs4/Yb0"C%AOr3a96RHJ%jA%Gt"N@`((S%C*oEh&s*8<e!ig!7b/LlD*o*.rA8<=Dju5
-&kalUf#-JTP]j>$4=)!^Inl+PK29tk,R%*Zm0U/=d2Koj-r,QfVf=NunQl2"5Mkosn%i3\1^p
-(,&1?hCmDj2cFB0CI`R/S9e;4tn3+Bo!-6-pD1TaIkEM+1F)R*"uMFQs7LS>QrF=>UI7hm)qT
-N$n&.`dk,:k<'Zes8TOa/TadaKW;_q,3"bnAuF7ag)%sZFP8+B,5r,l!NrUIK?'D:*hn\_ao@
-mdgSrjln1e<oM'?O8p>s+@6/>S1!Y=]qgu27d2HE=.(fEDnBp6lH%[LTgY?Ubd5]@ICG\#M+(
-U"VF`u=E:j7WIbH1]#)B74-W\..oOd/(/FL1m-jddqc8(h#\>:;A8n.SDf'Xq#jQ9f:)B2U^[
-`1IZUNoRei$rOYV`nTN5)+7s7Du*?"`<d&i>rY$$<sS8Q*A@0IW"%9X]\&,eh0?XIcW]gs)2C
-mFfT)k5Z/:?bRSdM/?9K?F`9qr9eRF:DE\4_"TgXOXC<0B,TL;W\eg_do_eM1=9!CVd8J.7@i
-3QP$-i4PGal\&lB5RaB=\dl;e-m]<N(e;%MP7X%S)icRqJL@"6MCV<a6=#[&`g`%p'#.$ds?X
-0f@f7sLPHX(bq>H>ff$ba-]JToI8.TZoiKdbR<;lA`^ZMag.SO8V<.j0>u[Amnf01+;IO#0Vj
-)\J;A3X//8h5iQ%`j!3DFKL7IOf,.ZJXNGUEfG![m#AN8`#0lGGS9Nn8o^$/d[*FC#sY5jQ;7
-+]K!376?P%j*;RR>G:K(e(miCid_2.R^(b'II3tH`Eje_1h3uqja-90`/].+>)R5YP\RJ6$C`
-m)TZ29mMNi@]!`B2&Q_?[)'dZs76iI-NGm.:qi0/QqpgeG1ifd]a-aeJ#P#M)jn;25G/jkgBM
-fLX@?^N(IkRMSl8EW].!ZW%gh[S;BdlP@;DqX5aLPqI61coCiAD>^P)5-L,RkE/tU](WZ>[lM
-Xem+lNS(dJ85"Ek#W\%2<WVi-K+&UG*nlEoZYk0b`bq+=9;?I<aV*n,L>84c=6%'Y!;E0e,D$
-%c<GVo\2'Z\);NoOda0*P26`sZ2nn_e[/%M.OO5s/YtTmdugi@-:A^"D5%-TY+5_;f.o0gX3I
-h5r(a@V7K?(a.F?>9gT-USJZpFc^=BTaL*C-rOQW$;r2$<+(sm"_Cdba79l(bHS>ZGu?1r^df
-[.P@Y'qA90uqo0$`!3KrOr%&X`.N&,L@'9`hn3>UReR(ccE$.0dSn4br6l+"P1+8`^XH"_?,B
-:)uVf\rXF6*m,Z.r=N]b?$NLaX/MI(TG0bL+_&"ZK<-L(2?'FodA7VW;_mY&#_V.b0s<HZi#6
-o%4lp_ZBHhWV">*3StMmFi`@RT-%hQ531@_3,cVNVMW;YmN^TQIj10.L%RM2O1O^>7ih-M]>^
-18pb!GC'j,&4af^QBcH[DIM`abRlAO2_%4&+AT%XBQG2.C>W8e'FIa6#j-WlN+_XOj.JMkV]&
-eNg.S)AQ:%;-8C7$EPYnE]N\`YZ(gH&XGtm\,a&IpcuVBRhG54k'i<94\e^mEf,tr-gi[1Rq#
-lehP)[AOW`H\%f>M_dGa2;LOF'o>dRgIO-<iZG1^N>6M"cWCi'!#/XL/;@8f)okG^\d"q0`\A
-^)UPRAg(GeK7V/L2%r5buDEtb'0i3ZhuDthdG[Tb%b)W)PtJVGa+A+MN:U+>R#u4GW#_J&l0l
-o-k95c#GQGmN$lZ>$t<QD:\[fO7>1tn?.^q9`?65.@okn;D()`"B.p];6f*Yi/_FZ)W<oEgf[
->Z%7VlhZ7KYR4Z+^ghoiP:R[5pFE`L89XemOa]Kds0'@RUHd.j-:Y1-(Yd5V,9/&Je$E8AHT'
-'Ca-+I`<bSg&%;-iH0ZMEDFLjRH2;'L;FqB`R,6F@iPg%mH:^7c4N+OjhNhA)lCkOX+NQYG$S
-OsAQin,>A:[i[N;l!dFcR<cY9U[De=WYFW[pO"7"0.CLhQD25dC%Q`?6K2R9W[MA%O*::ZC]>
-0:/\nI(RFcU'K8LF@V/UAYtr9B1jC.[-f%i:/f#`ipft72V)F@s8Kr!\!f<b_r#5lu56S"Sj/
-][:<E*8o5u]@S8@4G@OQ!A/8u<A"s>Lg9J@,77O@o```Jql61"tZlZ8`Z!)oL/IJP_;M,^!/6
->-37",<*.Bp/f@QF!OYXF5b79Cg(D?3-<j9YNk=TUe?glM6S/`;gt^h9*7;k0@g,g(rL6ao#j
-ib4Ff!(Zs/?g$naSSgJn*4X#&X0am#*FMYb]56j/JsM<O?_FBVD&mHgSArn-oEbsK;;]BJ(=o
-$g9f$q\;/9RISsi-Kl_up2j`+>86H)ff=&FF"V2$LHR`,L[<O/ilP!'NJU1e0D44;cD_Y,89#
-s9-H[MZGAYr.KgEKgZ)'#58I2LD^^K2!u>L9PY/)sl5(O7bCF>>`n.U2I'u`**Ni1#iiZV!V:
-5MUb1tDT4..$M>f\6pWt:ema=CbI*F2+^]kL23t5G<!dOJ`!YRj@>Pt^9<_NQ77G:_6<&IT!M
-A^O^aGUUp^YS6rikJ`^aHt_32c1bndZlV:/!>Ui`M;;!W)^6\PBVh_eqMjknrEq+T(N4?(ppH
-HbO%B-$Jq-dRA3^9qScZ1U_Ztj%!p#UYuXS7Q**.cG5lmW&mT<S#ee>9b#W6WjG`+ZgnA:LKX
-U5jTeo!T<\e>.juu^iH@i%;S8ElN>ZP+@m^UhP?=GBE?)qP'Lbk5`k$/k$Y!rQC]/Lr$`OA/(
-Y0"'bog'AZ+;$XCfk7;@4qu";:(.$$W`_$dY&A&=OE#f7P&J4`.34unf*]uO(G_$Wl%^d`)R@
-aOJbR>$;6Uc;Ludo/2"ga3>Rl&<sDM66rN(shua"P/5*c+RsQ!ER0@u83#1IaP`[XIDDCc(a)
-5qI:S3[m,BUOX4A;Z:N^40-g"0$S=1!FmSr;sH^lJ#nS>4b(PF687[^=H7_BpK::"1-7n2BSN
-=n;i?-`B2Rl=8<`V><W\Su5K2b(EYA=^F\1Ju.RnD.iB>8iO(q4XFkm?:@^W"pJ_B9OVKF.hc
-"sa,1^77'Rqpjl9Ga`:<mRIRq,5G`_A\rXeW*O`/:GIOqg6R2&AAZ*YHC4!D$tCkgSq]QWAD,
-0u(XAh5ZEM&o;.Z(rF6C9^lr`EFgm_BKF)WNf!J>U=D@OK3o1$mI]",nS1[;hUYEHm%@2I0o[
-ZF2,M'H3'X0:.?(gi'`Bp0ocDslD)\K&NAMu%Qioscsc*&5Pr0hbt@:jp3*dCP9":M1"0s5WL
-Y->ZK9Ch2RDW^%<#2F()uOApH!(rU[Au,7p5cl22D"odo7@GPP\ImQ[<n^HmcCAA*FcO2R%EH
-V5mb/P*0Aj0;^-VKA8;(;ohZW2hBaDEb!1M+u]qX3(-&g!YG/Nnj;Dga9Bs&7"Z'(+mOj(#*B
-Xp?AQ09l@d4[OVo>VEnZZ)MB!j]RZV)FNZL3?aJh[)/TPsSd3>Iq3?$tWOeY7'&ig]J;#k0X*
-%1hu5S5+B"FRL1!M=2rn)JJ9K&Hl\JtibLG[lD52a,'#3I/lcWrr:2O&p/1Cuq!H][Xn.*B\9
-!3AW66RbMLj@@NB29f*d@Uo0o;qDpOcYYN5B/RPXBb8S*jjq/==/,=95T2KW83?OT/G:@aY\?
-2-&Utf(nFV:hhZTuHVAAh#sOV/lf7RE&Y*b'DNjrp7MnN6sG&BKJg&)JW%/:hRCL6c4d1$jhG
-^DODuYV&E6@WX7mk@.O/_7U&N7;-%]em'&5d@:S30(c\fbXHq4C3-)lKf0`I,%sA@MkC\KR=g
-A:-ur.M"*kAKEZiO;nB'eqI'U;t`@![j`"_6qN("SS?mNZp@gn?;bf@L)Dn,$Pk-n*s*5"2FX
-*sp"`W7SCpX%J[CBo2<lo)3!`6[1OC#LF/Ial:o"4-1FCuG251t5@*A##?.<:bcta43;Li__"
-/XQ8s[WlqB)o>slo+lf/'mZMT\+h(%Q7Eg`8Y!Y[9ZkOr<P&$.]KD6A'<[50oiDg_%KjZ&*L%
-#nq>6%G">QksJM8>I]Y<`*pfTsFd*50PC/O?9;Q@,(k@EM+;1:/ZdE>b43_QX`#0cJ$0(S`l!
-\iaYmTP=ci9;#T"eRBpCTjeTJMbo]IGqM^0+VUP?"DJ>QEWgcq0EIe^mNHsU$i&L]^uoTgP7t
-SL@X*jlU\rEXRj/nqdl0t(PM\Fb)W8"e3c/t@C%#J[(Vf7n(D^=6o7Dh^gXsojZUTDt`/bB*8
-C+^KSuJKiL.s]I[!\d?-T-9MbnDSX.f!g*?WQZmEkW[ZF/=7R`e2609)1jupI_r"bafqq6`(R
-^&u;rY\HRi7Li5b!';@78AJj<\i!'<B^qUrI@X*dh.`0On%'G52/c+)9p'@`toLdNE#+]O;=U
-jsPQr]oo&?Q*i(8,q!$nJ#YJ]?fM?]J:rF:r9Y;7-h$V,/h!8do8P.e967K!H\a01O&-a;1Ht
-(K(hP7$-IP01Wf*WtOpDjqdI.r.NDpC!KC,1!-C#@hZKg@UtGV;3(Mj*8sUN7u->Mdd*Q=JF5
-T2gGia*?k;X1][FX>(>@!>RWu)s(L#I&A4I<Z)Yf_lT/?&43k!SC7E7W.q57uAYG"8,[oIfKa
-Yt_q6G]+2^+/<hV0kkS(Q8+%Pj1RVP40nTpPJZ)1('fl83M^gDBsBK?B/,*U,rtDJar+5DFZr
-%s.f($K4c]>V&1\u?jZ1(d(^I,9sDde]+Nj<d((3`@[N'^.RO"n['#,Q&N!-h=9JL?1p0=H.b
-#5#<rhV[<3:[_3Re\?,Z*Wu@MokQ;'q#[%jajk>E#:FOQN8[(D;j\:UVS-PKj&Z:O3&6fkDcL
-n;0Y[GCl#%7`Q>`jb/\g&I.((3Qt>JD`Hr$TVmig)dQKNl_1YCNXjbp]OL#7'5_UaU4jDC][4
-SL"$?2R]RcA0RVQTbZ!GP]C:7f#>0UXohc%s"8\K^oQ1I^1:R&.c``J(D9Zj,aXHN(/R"n+X"
-rS0(#E_&tjHE+_&`8Z%5")#.\.[g:#X49a*r$K>4pK>N\9;;Z*.qh,mmR2!f]98#MV`46hMTT
-V=@uuX!n1bgDaLK5`XQTf%mr)D7;,q]qR*8M"M-J;Y"$qkBF:FcJ8-Bp.o<Jj$44k@6,"$Z@`
-\+:Zingr-s3j,O%@&6WtOpDjrVD&qk*AGRH/IC;\P+D3'#"B-mLq4)I^_3i%T(1)0!qe5[PVH
-2L;HHpMdX#6QNgSTu0R9M-&DU\V2pd^M)UQ"+0_-DW(=OSu^gQ*C&$$>YUE:m:s)/fV7Hk8iA
-3pIQ7jX^/N1<1,]iQ?HNq8XHE!P0oq09'U^GH?UX/bOr>U;8,P&McQ`2o_G=\>&:t-!2urtWn
-1*DM&(`uR<FW06p:]\I".KACh<<[KmW*F;KOkD4gL5CBmG$"!'ugkCDh2=QoJ/7@7/[>>(.2.
-+m5e30!f[oZePNB"Z4Ia$Tick$$0:n1=U*PW']hWl"9j],aVF<e[KLu`\VK[BRpg'#pD<<j6l
-;QS</@e6hAKnSa2eN6g`.EuG>=/Y(`8p\O#LmfDWOD"^[:#>*?;M,aNU\33ne7ci>!U7ReW/!
-2Ee/O]NE4G)KtFk?H\@DT%22^VHLm!Q2ISDD$m_;o8K3Z;Du_n?82me^0SgD&iPXCL574=WC?
-YC;Qh:D6fJsB0-bWSd?bEI`qYGt*^N$ns)[Zn$]c4/V_N9!K*Ph7$N3c;[NF(KkcI8Ij658+M
-ZW%]@+p>.EjY7fEBBWN0PlAj.iM&W^BM$7T\Bb>##l=)ZOZ9.:e@?cK8NZ*'VK7gjNCCEJSZ3
-]`/s+5i3R(tT:CE(?`DCZ'Ca-+IYH,7'U+`NM(g[#G_f:.N/_l+a63dRDMEplbK5iu_#`EZA&
-(RKQ+e;Gn)?kC^U;F*VTZnnD035UWf`;gg't]hB3tbUWhZ\N<ZNi-fiu]/)Kr+5WT#oacW9Tm
-"jQ-can\d_gLU5TQtN3W?-$UaS&@E8ik*:qOZnV$,E`L,]Rb;J@OD_h7JJj^?U[eH^bPVln/d
-:])Qjl2F9I47fFObW=kK<soalE[UAHB]4pfD]R%Jo.!pu&DFUsFlTm7F_A^Km2UE&rfU38&/-
-.$O!Pmj)j:_uK!"Q`fd8>0.FZ9lV?:pM&r$&Y$7.Rq7;"ak=oI'P4&T5<pCHlgKe4i?`dR@<.
-68L>[p2o.n<nM*du1?RWX#bu9,L)G/T_SPaCLADaonYVS&*r<KnUP%/MoU>#!dG;f\>3Ia4=q
-dG2%dN:lTY6@eC=oHEAM%cLr),n_RMSuj;=[%"]+jT_k;bQKQI6u;VoAR%8lHnf-#=7d!tij%
-@mmmGW?rnJ6c+BK]84.[kXgHb_KZ07D]j!#rn$,2J`eo#F;R&n5qVFVTt_MS(LYddpGm=[Mp>
-sC3<\q>R%?YAPA&bW@jRQcLLC_cO.ifuojt)X!SsNtDF7D11n12)6+$a9@T9F]iXqEWL3s_.<
-^O577JW#t76qt?MZnL6/HMJ[DOs'Ti;=QN$i%pti%mI:q[q+In6Up-0uc^Dj^W+[PA]4pB%4q
-YKAcjflJoC6+Y/1.*:)V/%ZX`V2q)F!oeq,#kV;Y_-@THt9@%A_*3,d?L(54E>2$#;TOGU(QW
-<rU8R!LC$=54F76,]efe)7[@Wk@hY)o8KBG'i7&^ACaOD[Rg%ET-B3.q!u&MkWbN:?]]5D>a2
-J[aT&$#_%NDo,M8TbA9EL&En$^C&^M=LI@@$/JVFHi]Pr@6P*`)XU=q<<_D]BNE!S&,HVimR=
-ej[C`(^K6@L"*ee2Ve6AU"%-9rXXG:7*b+t-&7S+b6.o@RCF;YG(!^9bSJ58)t.t#('@VV(4&
-LJkb'B6\[-:U#_j4"@4gl)\`d`FQ\7L'dpA(\d-.rY)7eA^l;(pn8+baTp`g?<J6%3p9qoGT]
-`Vl,+63kB+jdW&C4CXmNAGZ@InMI.lJYN-E%qoa7fcEBiSPOXQ?>,Al6aBf1"`4R5PH"8st5)
-5@+aj6&&,Aoj7,=L8tDT2Ag"TOFrTAXX>pCo^o\DG6P8IW<:q]"b&KC&fC2<]Gth63JM$d20s
-=2XY3g,3P,%-'-W4p8b(kat9'51EZ.Ft[ru6+[M)4/(=;oera@U"kTaNDQ]HffI1r6-3l_$;n
-/3dX2`[Kk(M\(('bH<<>A;gdCj!Qsk<0F&W!cP,S_"-[7koj;;N!RIDpc_RQ(6_jka&k2>;#n
-+8>Lj)$:k4UcOSU4]p+*&fZaicf5J[W'I3RnX;.kh";@5[PP8f?gSYLmFWII]K/H9p^_i-*L<
-h83plKYKH)Xjju9AM`DpAPsY19GZi7o7'n+I7J\3+4\0`@E?=W[`'-]@K!6-Q+!YGcTFLl2i&
-q1gBt0TdoKEIT_>Z(`oru+5CBJnKd<u(e26a_#o.)M/d=)e3<A817r#?,[kRXBW!:$1Em69_`
-T\Y7#h9_BR]`Y9)Te&XOAgfR3X;LMN.$6j)$:QHgQ(VM&,^BGTfp7.a2YRbHR0@ud;k0?<pCX
-8LrZ?L]pY,he[t"<:jeN,$OH:$:L6.LO&@.!$)@5!tVFHk;.+-:1`GAuu)mTC@\k1G0)f3)We
-Z'Qg2X@;BX))Tg:p"PMG'9sQY*Q4pl*co+d]TsaCY/"NhTqeJqgRtrqZf5Hkke_s5'`]JQk&W
-E/5t"kHC15^""+bGN8#5Z0fI2O_i.b:[4jAWHi4BInueB('8&b,(c^El3B[Hb%-Zp,dbi'4(=
-"baVr>"OhF?@&dA,c0$G,>hWi&M0>IAQFl)^aL_T>F,'_>osm3:8<*#HtVr"sH5OL^C9'aY9-
-f+8rhp^2V>0m<s'TAfYZ?5)*`\9d'e@%n%h?XrFb7QOrU*1"o)Ur>S\qEBN,/50\a4H1Bk]&/
-)<D0.[$pBJ".U&AQ0^4bV^co_PU4W9oCl6qn):co6`@FS:Ep)%NcJ[?%iHQ_!qMDC!sU28"&5
-3kl:'NHH,MRgLl.BMO8]S]K;_JG$$$d8a@R:U]5%m<T\1$)qdOq6nQfU*N;i\9Cn`[m&XnpWf
-u]o8Bt1%Cit@0=DQ]W5\DK0^N1=t[1%^4gW&$tpJSo1gP/.aBM(UYq*$^3WPtkcL[_b1kJ=8G
-H74h.!t=3@1CmaBJ^,O`qpl':D(HZ6:rWp^KWp,A]fqK"7rO?\,C&hEJH!L<C!\#nodepL*>,
-N-)o4'eGmmq@WlkoR-f4a"Xp;fRf^$kl(SYpX&^GFDjPD(><+cl`4\_$-`dTT1?f*:d"pB;(/
-#hr,L4,L9):NO$^E"<I5l$ULFJHgK3nWQLH?39)'*As+sO#Oisg#j?h'C0H8ru/2Pc!GaP(3g
-<#,69\Gi>0fdD;0U#O$YV7fQ6pDK7))j?h@a)o\JbQbneMGpqLlN'!n$On*_Jg1WC)Bi)eB";
-?5p[<]S<n<2T(=]AC)N-(:,VK2kc^dhbh7$^Lc?WT:V^]*D^4F7`eBWjM+PW5&H)^ih[pjIgb
-AZ@_=n>M=5b3RWum?c9`0ih1WE**0uEc=/DV/SJ:[=Ul[W+Ce#+mk6VfeT>G496c4?Rp%pCjE
-)q"L/RU:^0AZ->WGQFi):d+u8%.[TO*J*PgC8rDATW/Wf4fI!>E>cne&8`oU;f%`g.HX\$=]r
-_AY_l4?`dEH_+m'Q-$SXN_lnl$iAuE0"A7guB4#8dl8!tE1g<,0dV?WIRB<%:i1Qs.L0_0dGM
-(U.I9QY5Na1.H*2TAo;CLTuTqeFu+A5pOHOq@jBE^o>>:W@?*_bu5iGuqkpPmiKe.VDSrTTDG
-?(Q].Mk=<OIPSXW:i_tXo&U#:A'6AZ=DhIK_]Ye\miNg7='baY&IMlX^0_,mY-<S"":_*cE6/
-Mj5cbn65UCKGZUAGr&+/-"E\n5X58,GA]4b`%-TQpu],oRIo]`@/6.%Z"f.-bOi4+`oRO?SE!
-rK(!O64@iob-nJ4Z_<%J;,tK2R/9[,$B$I:ifam-^VG5IbHkHFB$S<L'Q[%3-CM7tCL_OPfjQ
-L9\R],\OI:Q0HC6KDD.;5?["7Ho51K14#?*[\ZqRk^e\Yi1P8Ydu9K)HmM@YqF.%$)P;9soSM
-mZfS11&58K^h[S`Jg'<-=TZiR"4pnO!&W_R35E!8GEdh6.Cgs#Jhk53T51t2Z`A,ggb<ZJE&[
-;I`;(>N*X7j5HMQ&r.Lac0^p+ZH=6^VV@,)L7o'B$FjOpOq(Zt56@/q(VpY>^RSQ6@(=]O_i>
-&:*:d,E/Z]H7rh,BCuJXXK<<hW+e8L5j06bEM4gE>3T_Pc$9iD[u!NR(4c.t?SXLp.G"@=a+4
-$a\&Q1[eb$MKpT@PK_dL[kU+ir%OJ>>deTsOL]i&HC6QFB4B0-S:S4'k4Hl@0WS\abA8-(/^-
-+m8])i3QQ!E1if]HB"Z(12lC!bh;p1,aR;-=Z9NNu$B"FLH&^s(D"\^/56nX$a%&jLFG7b?03
-esp]5p,7%n9a)7_<ZdO-<t^RCm__`nR7CTM@g5tK<XuXW##PJoU0)F_XoF=h<;D"mS;t18*=O
-3SV-V\[%Bd&':Rg2jqQ;SBQtOI-'U&LnN>n*W-]Gg>1=OCoH:.TKk*Ctp-?8(A_SB^;So?a.c
-F=M'iqiW_X%WY.nm*bEJ:Y47TL@0iPGp(/"BmJR9j%dXK5*tX>j9^-<F77.kA&nQ-kk^iKY/D
-b)0bAAT24WIq>I#A];<f@TlnhY,iI@<k;=4oIDF4.kA2r(%"VeD5GTW-o;YGRR0;G-o;\HW^9
-!S-n#E+H(e&A.*)aLg-S)/-r^uiP!YkJ:_4EMjb8;b:_4BLJjKL]bK):Zr=I'r(?:5,7jN[_#
-R_"G">Doql"PB)s#;PhSX>q#h%#n`2f<$u3ip*5EXdYR\9o0\0#;@Yab5QgnZ;gt(SF!RN\@*
-TiS6H#[@sE#9hfm$4oF>:)]J5BlZi5:]_E\BHOb1@3%@9i%1Z$NTF);<.OqZ<(Wsn)jWF86KL
-#$V4_^mF=2Ll&qqq/_(b7:<@&Ukp!WrVO(-#Tm-dSbSSU!umC!Y7ok@gI)H!6PK=m"Wtqj6!*
-UH(hCNlE%J3HjM_c`n]b?&mVigTkY;Z7/F@QKg"?ZW(M8bYk]6q%E"[.*JhQ6YV;*)+lZcbYX
-g<H%r%%Kc(6G6n46c%^?G:.>/??`A&IRSM4Z-nBSl1a-7*00.,MZ]3o\fC]YjAY`?OTJfuWK/
-Ee%i:BUBs&)Wf&@m[X:(OC&7)dhh!=XVMZn<"K!gX4LX9f#OYd%H,n!O&Gp:uZa(lK*9%%St5
-dU]q(#GcV8L-.l.ISRQF8#<j>Jpof1hs4<I#qKF65MRe5r;dd2PA764F4<o-+nm'6lOQYscVj
-HYiE@OIkNfuKWZa=:(RcSLSegrCG**cs&L:nIn1GiZV9[f)8=.8tB4!%;oOP1E';J\q0.7Hso
-l6I=4<$eM;;Xo;.#HU]tQ=+Q]dKHTe.9U1mSDlNOitTH]N):-2U3VE5#\>]^66Lj43.+SJ_Jf
-a"CCYjjERP0)(VdS%_hICd==7Joa5@d=7aPeecPHF<K^T.bYn,`ZEP[>"7We>hf8WSupp^tZl
->Td^&)*^k`MmI^V1D6u<uURk$I:5B>_-C*4B7.T)%P8k8d\-).OE_QJK839/&UK^5"/NZT474
-QnB#`+^P^>m6d&`U0p(F3Nmh-WZCG*m1W.<Cm2=X+*)1K6:$Y/M*c`sRrY0]X1ad!0deJ?I#O
-G&ZT3t0@\j^AoCl>VGcDDF90re`"]MDOlas\!%as4!K:_mL,4\EVn%T=!Pj^!a2/.YSlU+f,(
-OI4AS:(B&tpepT,i/Y\i`LgSo%)P15RieChN-Ol^)o&n%c%.AYkT<=`(k*OB%p"'r_8RQ7#&p
-7HH8@TVcl)@V&'f<m9omk#SC-<&(@S]l<%Hg?`p4PUU;fh8GX7&D9%5:4PG>Pr7q=S]K?'e??
-\Jgn`"a[:@qur?Q1-669)'*As+O6W'qbCR50JoH(s+Lsj[,8a--e,_3^Z\t;e\;AS:!kSMRF3
-hP8m?GqLFk7#8?H2A8e"#3))+G@l2-VFeALY4/14nW/\%K*a?Kt$<)#4l4=n%<!B60;R&L_4R
-;/ZRq(h*V#aWSU#Z\6r=o-35"j93KejG<#]Cc6jl":sR=ZZ7RrR)UY_=eM`5iq$qsfRTf=Vr@
-A&*d^#;/`d4:]gWN$J,KMJk&U0Eh=S3rAEW)5!@:cA;08[!(Jg*ZoJjUOua.`cf#JMV"<eZ3C
-Xn?>.,o'qS8hVEh7'O4W?P$jUMiOeT,gHR.6HJMJrJX8&bLiDX!Hn1!N!".s-Wk#V#o1:4uR$
-j.BmVE(3Ek96a$F='#9V#:=2$'$WY3)47ZQ5Bj:m#SG28ooZ_#`\Rl#dZ$TI>Amel@RLifs\\
-^GrEoE';.D%`]I/qWLTeoL@Q55q^D'@ek<!/e[I!tYjsH)h(3bK1e"*rJm60cGtd@.cX8khYl
-ns_0cYm)N*h1H2MWG?#(3rI`?dIe0)XYCG8%JG%`9-p8+<o$k:Pm7Jo1R\p>MMZm3]1YEOH*H
-h9bBUDC83Dd%H)m*Nup2j^u0(_=MC]Dnn.YaHUpIJ]Hk3>_d&3*j*8-.J?eN[fecBY^I6.@0r
-R#X+X8'pJ62-X8(aVn]<Pl`))0rBa3"U9lW3_:QeWekY,r9OnLbO0oj75I%St</J/KL@t0lZG
-A.Q7'VmHS_ZII4WLmZjJ@[hlqUmdMQ5MUVW:<_Jbsj?d\#K!rnJC;)ek]0*@dPa>SZMgS&dKp
-7.DEppRhXO)Zr8YRN9)d__f,h3;tr3N9,q$.\.V8\&:JW0jG2ED+2%BoNJfD+*9a!0KlQ=sco
-H\2XO(,>aUgWW5[,=6bW'CT#=cA`K6OqI8rpte]W&ea=t&.q;CbL!6a"83C-9rFR0p>o4JBQ!
-3NDE7Qjf&*TMgY1<S/T`Gm1X5Z)%jJ79EX.Vmn58;p>1ZTB0(#ZA^@iP$oc`Kng)431K"$"*t
-TMMUNI+A;p41D,H<_3.-e<0J+FXL=dSYml\kd1^.R*6\D":Zdd=*_aiN>[9g;tArDF=DJIs+]
-@c>Ab":]e<&c:uAGo6F-<P&]FI^l>8q(F7(r\F9IY4A'$EmB9-%<tr=q3n;>Y3mp!e#&nMS^@
-Q%mbS-#GWA(4rCrrEoUpOc9'B-JM5%5fbcmj_)X%"/8-'@f`<r(iNsKkR@lIt<"BnYnV/*gGN
-'>X:29<.4.^B0nRg9bE(l7d%B*:cE?u)F:bB^tFca\KY6K?M&6E:q"PYFL&n>thT44mT:GMT^
-Hu_nm\[]R[L64;[.4uk`89-W)ks]pXS;P]3j^a&<HaJJe)WG^lefZR9*1UMgJA$E#B5*g.d7;
-)2]=cX?f^Tc#DJEHn]>YO5RiKp;W4pBn$**>kN`0A]I#R`nPhfa70W!B(D5G1nb$QR*Yl#t>6
-PNk#@"@Iaj&-@OARJ9LPed$5(o-ja$ptS3F1C.`hM4iZ^2ua*_P[lW-ZErC+,ut:"D=iM[c$c
-h1]r!#&#[Wb1uV.R<'>K.)bN7gG2bq2T%DtH46g&?9J^2t4K1eE"-0=!8;V'b*g8rhLOCpWe6
-oa"40)11_6s\e&S"`W2O*\[\k;`3F8m2O$tF!@;@Fk^n:6&mBB,MBd;tpY&N]B#1/*%N[NJ'V
-3'9uPJ<i8:S7V^/H[R_tBt@$6LB]]LVPn^D_b$DOg.Aa/A;d!Qj4)_[rgf$Y<8F3fR#:3o>?U
-tVAJWj'U\$%:Y>@!ib0(LnZ2>5'5>c*k^dNR:LG=R&1GGWOS\Tq=^5Cot(nEs?0aF6kTDG5Ri
-g^s)/pulufa4/d`s6*64bEF0GfPD76YIIT>CB>9nX9bV,@9ehU)PKPGeOj3Ff<pO=?C&qGcDW
-=)Eb0WZiLD3W)DV0"Wie9?QCV,fNj,8;Nt6k]*)=gYZVBC):j_M[Y.Fr<PkZ$.hoL`B6JP8T;
->P8*r_-pJq5moA"8S-'B)oXcF]STd_8!$*(L)Np<u&qMiWM>m.[g;6aN7/(QGn;E3dYQrCqH/
-;"k4&2R`S0Q;KQ":btf<FZ*F&qM!(-<*Z9t$L7pF]?Jtm8h[I'9Z`?s1f=/kbDd3a9;-og0&l
-1ZoJq#*d#l0]$0^CD1^\(:kCRB>_af0_pi+fB1N%Tu_YXhU2h?1mEG>o#O5MT?hR)56+hTi9A
-KO[9TePGY&^U40\Sfp_;:gY73ZQ]0a`c1@ipgVO2)qC$FTW,P+AlU_!gRfmXi##oG1BuU'\f[
-m9nFr3fHeJV&jF9:$(k\phtU`Mb]#;]=Gi4d6O>B`)2N8jb390p@8;O?%!$B[p&JrYNm;[t8*
-_u`[lO4"qq^U]dHm[N6/tZX-J7troepuP;0RZH@CBHSMj7!PC9CE^Q&SkD)PHXV'pg?KRIt17
-9W\2a;Br6WV8U0l/rIDU\XoNj$GW6!7spK?\K!fYTKS!i&nm9bC_UO!BF<bk*8^GM>p%qnifk
-C#]?oKORhJVXj0^VS3Wc,m-S8.'iPY_fn&'3Y*&jSJLhD&'F>o6FnPglNFa-62,OIJGMM'0Pd
-boWoO#Go.(%s(RTth^0`-']]6[9-`UtA]OOT_.(+;A<Q):k)B.Cr.H'Qa;m-hfP`%iJ"qP$f]
-`Kbsnhc:0c6VC0<]"Zkg+H&))rg1E<*c/IEar^Da7K.cjZg$>=,-;AY%D)D19Y#4ISfQ!HC/%
-$/$?";%hS$#S/RHcso?D>S9jUY=<:UuV\hbs.WCV)"nMUgl=l!WW9'S",C/O^a[p^mZ]`0i`V
-Eqgc0pJZ;iJTp-N7r^#;[tA@]_cqT&iPXtf]]R3a0"gPdaU'B8EFK>0N'M:"Eu$l"KXq1Hdta
-jGOI>U&&Pr+nVAkT^EMO8'FZ?0cFZU)?imD@/1t]"O^'7Q8YXaQ+$LEpc7if``fNs2I;M_?W=
-b9?_fI4c9<I=oqI#=s;5/l<lnQB<Vc,J34^uml`&^H+k*MR1t;fd';iT(F752*Xhol/PXX,@`
-@#9E0Ga^.'R2O_X!]KsFh]7-OS=*@]E)l!$5gFfh/QVB\CA#@tu`p]k;8>UlpDTXW:?;F]/CH
-n`h1KJ9?q3[Eh;;B%ZAr9>^p`9U:LputhaPj60hFp5#_!?!Q)T=48]H"l33P=FnMa![#iWV:%
-/j/=4ZP08Z8)5#BNSnM$N`tr%&=sk,9cor\j)Ga.7NCj4Tl*iq;:UL*3]sErU`K>:Z*,#[)XL
-I6:BSNblr%;j!p+HeeR=pU>AG@E@WN8B8[,H$)oPi[L:+)WTS-)Q<PkZ$q_p^,^[XlL&ngDl(
-Es9@3?-uM!^1Upo$]V:a_BIIe+OSJV`9'^<X1383G<'?NP/gYhk93pNE-sH@FmC%#MCgsh.:=
-SZ-CLY+5$3+2&E5MYd'[tYGjW[70hp8epg<F3S(W9g</\:P^L8=%E3(J^J3+F'Y[=nP'ADd71
-Lt_E$BuP&pQSMGne<:GW(BS3RmlpN"<tAOL]A\Kr5o8EWWZ/W#<M5,<0.de:PS*3&H/<IAf'a
-J-h8SnQ6;Ih0;>KrLMT=6_tQFgTdXk]:0tp@$_cn)mD\`1*s@ZYYC.[FV)[!V$<Eb&6<57"</
-hpIMErU#]!'-'NZT.MRe5rP?l/j+W$?Cpr"#,EoA&A+jM]ZHB'%2Ve5._k+mcU2f11-3]ZQ"F
-b5oD3;>T4Dm4GQAh-Rk)R%RCaKC!Wqq1EpF[&c>@[iK3hm05NRL<*\g"8TUNlk.r3(Nd7XDaf
-6RC2K^qC\gE;:<6P'udA\r$4]Y."%&,3oX6_:ZikDi+NHn-1GFb[8GG,nO*qLcf&k.Nqaaiii
-jAW>WCq4o`V;7EF91[7e!>kO'3YD_BT08hhQVl<16Wl6q%X[G%6RS]/q1e@@%`kgTdLgjio4&
-@(R?3)mE%jX\+B`fHSAu3c'sF=G)T2CoG2T$.`0cSJZ-8p_73aI#>K7_Ir[_Hr=3s^f[+hq[>
-p'&8!'+fm-?MTkB*Ydr]mql)*9*gRfJ!a^I952Hn*[35Y[\m/<43CGZLKfM=jV]7-XV7s98US
-WR(XgUc&.'q77`q1@nXfQ`FV2C_q13(*LUf"Xl2.Fu4%WJ]4u8mYug$PX[qq(i^*V6G[U.<.&
-&K/lnD:mF@I!XI_0/;hKbGVf]J*$ftqikp3up:ITUKh;S"-VuOX]jo\VJj!0$[UAh@_unZBLL
-"NY1gu.O4*j`[NA<Z>3jDtGm94=Aa4=:IRN^*eM],e<YZZZS8dH.Cb-A2])eIYuKCr-DYJN=,
-elH1\(kONE.H+3IQ1-6brf'^"'q`Do5#I'O>R3&<ce/;rBBer+l8G2N::b+_cutVJFq38?*Mm
->7K3%\MfR&nG!LbXiG_lV\]1g]nfjUPVMqYAef"i+BRm*P.A#_b&j&rCNW74Y;VS&&a.`u(+m
-7W\X_!9sE4N#=:'\BQo8l6=WO&AeGm)`a5%_FOLSUrg%E?)TbfG2E/+El%=V]S!Jf\sdZ2p,D
-SGG&aRA`ME,L@$5<B#QY9[LH[2!4MT0Wu3)p6q2uYYb`;.p"8&VbrT[h@T,?H[6iLST`uIdf[
-t]`.Vqpj]`RN]=BC9#19@Om=t/$'5p1`O!c,_VZ\f8cp_6dUI#>K7^aH[M:Q1DA6[-'PA71G(
-ISTe(nT)cHVi-agdXICg5</L$LMtOcSJE^\YH`S=^&9cpU<-*(M$>3:^88Q%*FD[q8Ze"iT<R
-Ee2RQG(L?d6(I$^j3<5(f?CQuTXqA1T-NjX"o*bBI',uRcE;_2@&,t28Mb:*u7S+>3r_kmi#V
-6DD"9lY!,@T+,\+G=eIqB>Jskf$"M2S--?JW1>q0THTPfJ%md<c#!J_[n^7@!s-JS$Ch'ogZ%
-O_>8&NdplZ2f'0D6Mm_qSgPWD`=KB8A2:aZNTRoE8JH>m5"Eb9s+K3*p.FqI,N<F#H!&7:SPj
-g-59)'*Aru7TLJ)YN.`.\@!!h>gXDjh^Xh,ADVl'S:&:7I5QUDt06DcU$m*#dm'5C7bQPF3a2
-NCJA4@!<F%d^-943ZUH4ZFu7"/So=aBars"oBf#]WT'sNSlG1_3KMe`R#Fhkno6)h<V%pOpK)
-BrQoiL%9uP:CXqOW^]Dsqm1'46S8-fbC+=]WYJ=lm`!r)rg$/cQ6/V$IoLB%thN3C(M)N:bKF
-U]m;0XM#dCXBNpju"ipJT2-Fet@@!oP;ga#.c\=Y!Mq'[&u^d)JB+.ciC!E-(k8!5TLsLC&f\
-Z"\=.V5/g_4T475<iKIB_-Q6DQ`8C^[!qafZAt!$:4]?G_l($h1STYrhUDt68Lm;!K/VC^icR
-Z]q1\55mIl-_C"#"iFT]_"=T%EL*/Tkp[[]lljXW!d.oDM.mUZ1$#^8^%kEh9Aq#oTA9jYKdU
-X_*QGdRmPs.4Jo+LghON"Peb02WV:iZPBIA88L_B/#"5@70nc)-\?gUHs>Ob!r$<:2T)d;':U
-_j$"KGYZ3f)VYQus/`./DI6C9^KZk:<;kh1d[%FB#Yk6C/$6b=E,ld<9bc0M$*#PC,7XFk7>P
-\Zsp$i*uU#p9nS7KBCf<GN^[K8MN4I#><E5/l=W`$_sM:OEnLHQe+Z\.E%UQMtUp4S2D=0.1%
-hFP8`hj2<@dLH/u.%1B?Mo%/=slfFe-QVHg(ng=Nhki-f4p2odC*A;)O^5ZL.:tNW]2#LJ#%i
-]dp`=J2\:VftM2UkYOj"%Nb8]hjLH!J4!.X>";RW9GbZ!'\TJGYGcLKl,\Pt4mt;1\LK7/%n<
-#JiQjgC=1#pr)ZZiSFai/i\#`@OK0>?u-';b$clWV$o_&(tak_m4`I2BcE#cd'FJC,3VJZg]H
-:IBK)]71Kl`2GnW#$W.ep;#h;Bm2aFVKo(Aqc&(s"nXFkUHWn'K\5_T3t2(2[-_Pd/YiD[u!"
-/#K@5+,Du*\;=d``RnV&Anka"ZS`i^bf[eoM*a!jBn*mg$,lk1!6!'r56\7/\EgZli"3adUM?
-='<`6uftcGsrhS]f*W/[Q*\@h<][/un'0A)L>g:S5Gtu=:-!M'G,Nn<;^+86C>.u;ZWg^+^pe
-iDF&G(-,lU6sD=Y&Fja<*_9#Vo;R%O5s!nO&*R7(=/O.a1o/IfR4'i-c;W$!\*&*l5dDN:4g>
-5)`IX=oh8"LA#(a&,LIe/;?_)j"Buj6MF7=GG)8^\h[sBd(UO&gX*SBR]TDEd'*\Rbtr;4@M@
-fhe-R;QLmed7Y".#'8CjJD/]<6@I+FPO.C)S@'Qa;6:Mpo>LIig/R><R=@5PpD!q-=1SE9Z*"
-!5`_dH@<LP(2.FA`Kmi3ehq/9"Tec6&tX07PCs7Bf4:IjAc;cFRcZ.]cI#R`uh_e^5^,J)Of<
-\i<;*b2mPe>SW]TpGYZPmHFCn>VO"-VI(,QB,]'F?)e-NbcBgtI;+S6JcQ`B?EqRL9K@DV$NZ
-nBYU.5eZMVs\cHP6<]phJ`8!q++f3Wb'N'8J;k#\+)o;@RCV/-dm$(^;$MT*4:H@+l.O54hgK
-])qiBkhH9rDJ7"&hhBXPB\iba3RhVRfFHFi.(;MdJp[sk2FFnZ2*shmU1scUlVXnsijC0JPjg
--99)'*As2&Ctc#f,J76ZNI0u@%Kd08A70Jpu22!7$71W<KEI?X<Wl*8W!9%Pbf<]Ve%(uue;[
-.SI`bRkMl)eh1Vd`&85?Kkk4NdY);C88=nVC$biiC,U5NU0^9CF.:WfHI/qStF/MY*Np&[T<"
-$KHF/k,N_)L4=/uk6G>)1X2r&-grmd/7-Z'D'SrAHoEBo?8+8O_4U;"nnC>E\#PTs_Sq]UeM5
-(o;$=gI\WIa^K=<>ME'Ea-<G6m>`0NGqkKq??3r@%:NF?Tc^5%lIo?@g\@B\j2X)!YC?fEkP<
-P\![-LO:'+[R.D+24GcFKIS,j)c3d\icQYR$^%*8:Q\YoVjR>t52!^@8]I-R0HT6P"\&P%cS@?
-%TSN,;$omLDjG]YY2VoM:?c/D>ns4uZ%W\kI'>==]9UglK7c#igH5E]0rmJVu3Y#kLV2^gGf\
-=?:2)M@JC?0Rg?<#@G@(2XBlD^,TZ^+rhWN5//&tZ.7S!Yeh4<rhj6>?XN#Ph<>SO01cW<OX)
-6Mq9\<=$?oi%(0n_Z)B=0>X]>qZL.W^`gb:Eu7-%Z$M?k"7%[DA/I@bJZ$jr$ZcbNO2H2F4]6
-ADK)QlRX.VNSmA"?]TQNJfpH_^Yoj0KAL.Vm9/gtm.?B2VaODRFG#gt<'g'!6D'cS9%?c&]h/
-)aFNrD.er8Z!;lMX`ucM]p(VGX'!b/AopFGo3(2]T[n<qX'fXd5O\d0KiJ9A`;,]DtW_J?;?q
-L@A;T!E<C^Zii&Fn*PAPM<Qeb'GccZe9t[3/^RBS1]VM9)aWD6Sa_@hhO,SfsG"[+SRX,9%/,
-=md\oN6Li]/1:"oJr-(?EabEsATj,YfSe61eH9ha-`Gk"`bM!8h#M^&b\MY1MTV"VXLeT>[)u
-,:?lI!>[\MNaq!Mo[Ud*$mljN8($oR\ndsg!hDiS3t1L"Zra$q!1G!^7KW731fQeA!Tb@N`/s
-FUh%%NK:pUU/&ZW9)Z3_6b+l7aTFfY;=.H+3!Q1-6brYqKks269&@3WY/"i^V&c8%0"Y_RG#(
-j'e,P&kg'Z-beYR:5rnoNLGrjBqkUlK'TRSL-CV]P6:l(]Vk2f"j']8$s=Nj7O0kS+s%=(,`9
-RE_s^U,qge$/*EaTRUuDjQ6n&qX6)hW%@-i\bR<P1>/^#!FpRk'niGhq77N3b3@*;jrs7"QK[
-1ie#'8&YT8)f_Gi+-X%G*$ghSqqc`o"_%$6uajq?ec,A*>3I]SO9<@$\]P*6)X=;hse=TpMJE
-.HkN?I0/e+d!?PR#GJ,KqCsftT\9of,nt\Lhi53QOR5;-)5Q"`[2"kLW";;.&S:8O>$JkAa=?
-.IbcUf&:G0n.P*nb9@n]=Y$o,$&`;jDS]KaYsL\IY_FttnrTUk[4cAaS59YZiK(A\7"mH<kCH
-H^K#kVD^pJ^,l/oXrkn#p'&mdalFq><(3P)]B3eH+f>@'n9*/U>T$3#O?Y(`lkdVPO_U/J!SG
-daWJGXQ.%/@73N*AFsDJ;\Z_.C,LqXhQ\^-OW".c^&NkiZO5Y#0mmD>(i'%NM'-*o)Tu$N9(f
-Or*D-.`bGnWQKA)K6:.:GCHP6/`;k]n6*cU%R^3pWGc)VUs"IhJk@BKcLB@Aj^2TaIeiTmR!#
-I?7O'D@^9i:pU8P1/r+C7"gHB-%(TX&jF:i5O^*Q1]O*B4H(s/@WI$V!#K8cT4Z<bkS,7:L*m
-kI1Lt!7PRGC![k_?bIuq#8SEZlr9Ws;^NV"(Omc'J&Xq!L8r):e\2Vr8D]npnAD/0(,a>"E"P
-oNZj\t$OcdjjB2[CdjJeS5RcGbpT%@U:["YDANur(4[GO>e=q7-5[k"sgoK]F3*p#jW)h`8$^
-KleqXKhG<&n#?Nu,+(:lIj(C'sKTX`f^'DhC(cmA%7eF@tZO3R2@=/5A-dhl:oIlk9%c),<ld
-1(hX[ge:,W&:^I0:"7TrNk<!#-'epS4kmZ9>,u6b3A"AWU^s`>48`.,.S8Vt_b#;p>1JTB.nN
-8S/d,M(p%0_[o`S9Et9"QAK=q4cE,*^6?r97dRd#@sF63@>:il=u\af\UFa/kr3\7`#0eJ##9
-BiX68j[H?=7E3RpT#$_:"6C?SLCdE%e,:+0gXE*Q.B4b&f<[$EYH*3&(C$%K"O<QngmBbBm(O
-B2UuJp]e'IE5Y[b)F9"Lmnr5,('tg"6R=KrrRRT_:o9?#@*n=nJNZ;_>$$L[:A8b=O4k4N1n]
-;d%KhJQqtQJ#if.Q;5*kek`t@Z$+^esb0bYXX`\<+)OdEtf:q5DW2*62K]3!m'%H<(X9(8++P
-haO*KY)-Ka?[4X8&bHiDX9Pn1!N!IseOVAg0p(QsO/M^uR&1dnG"RQt"jmfHasM7W"*E1,@(#
-<e`17%5QGZ?nW>?S2W01AAGuB?1dGCe%lnBI9LsOk\[#kM&m-+;UaGmQ\mCASI5?FVk]iI1>]
-+oKTu1FrZRu;Ou>&8auLs2%3\4Er!dp%EY`2g+uP1p!90=W]nGlN#l]W?'Dt>p0#DCS]*kbLE
-9K%(M=E5QVSgJ&Yb$KD%7@673/bKtQqtWl/r]7lkA>=U"oTD(Hk!ZRTm[77-dX>5o<Ze+"18O
-H:I=^WPYrn>6@JoW'$0d?AhTrh<:,@7$l)tihMeb"-%(TR&jF:i^[T@C\X[2J'q_<.1Eg?GQk
-&WE/5t"kHC15^""+bG>dQ;)@r.C7@G\IKC11Y7Oa`%3))a9]@`ZW`J\`talT*k=3?83*hJ&b"
-KsOLDd;VQL?R)IKoI>,j6'%Oce^H+F]9Y&u?.HS6TsKo3MWlPPUkgs`S.P0#jDDtt+u=i#FX4
-&E>7eK*n0!>]R-TD)&q";9It7EC\1YX,^dL-$047J7OUbJXLZL<#Bef*3qEBSC"f>lK5<t86h
-.l027d""&WM"YSm4Y57J`c-h3=^0P)P2]K8LSAIO@"C-FU'%QTOo:AHVc#CU`:-(+Pq]*+[kW
-hp_6jWI#>K7`i$%u:OX%N>`@>AZQUqQ0G@i+QK`*IoIr/AP`s3\-LH1g@q([Z@4k_$[kK_]=?
-l9K12:FN`/'Nf"7L@eXCo%qGBF=.)/NfeKaUVFf5P'@\OHd&$n-Bk6,/qroph.aVNsCpIFXjR
-cs')FR%A>E7/T\K[t$*lS]FML1P+%8'#,YTMWcb2^EN@[k,uNb#i?AA0>i2E/i+J3@,cNl?c8
-<4,@.O&%8/('^;PO3I@n<&%]5:pCdlYfFJ":oK2+:GNR5Crp=I^g$CY=Rjoj2[TqNO-VkJJFM
-C0O5U@'.7O.k\J81RNE)j6bjfFG0bKMPHG_P`du(I!OQI.E2#N\M>Y0#[)XZN4ZN\MVQiLRBT
-gSP2iMTq)^29T:ebbbULq$Qfd4dEb36'4rkc(cO3f@'#8@4n!Ua^5c&BUMYss0[dmd)W"CKgr
-Q^WGEiRc(m6[Wc_-4)[9Sf6^7+X+c;cVBAtYZ<7(ab??bdQ?]uYJ\E?fT6M*DTeM5VG')hMRe
-])hqMnGN^_27SG")M"Rn':1Cj`g@&W7TdEZV&Mc<0Q8(]?c&mskn=o[Tr/@U/^U+Uk@s/:L%Z
-57)pkTOo./1XK_bfijA=Amq(rd]6N.,Q%RX9NRR\OWLT8%Llp=,Y`*6*IWJ"(;<PkZ$qZf;8J
-)aI0`?ua;5/QCmQPZ"s0K7211p\68VjMUIBp'>q1H&i7R2KVjb-Zle5sFYu_d94a9UV8'121.
-%Mb-&RFRXjA#qZg-9XJcDM/a!bC;q21;_b.[9Ym*dpZi]^0j;c!P`]]M,`G^nSs]8p)&=qXA6
-?Vio(0rY6"Un3Bd@R@mRG][n=L!C`1.is)gl/b%`A5a>ee'o'baY&IMlX^0Ofde"H*jZhdYL_
-oR.2?H'l=!;2:`=d/>]k+//9WF<<dF*no.XD+*t7d(B_Y8Mlrfl8^9YTo_QHMn6qP4+s%)O?S
-8r$:r+6.#3$dau2VoTnH4(<PkZ$qepj_rl1k?aMKDjq%3-*bQjN-AU^)k*\L5Ck@AIn3BM:?A
-k/70B%G,+L"Sb(qjHj5P*nriArOqNR-A'LcV+Sm3i9;Y[kZ^UF;#a2pe]4jND-==;DP(V9$UC
-!P;4J#R?TI0c(p"'.eu?R6obo)-A5%u(dgKE>Srk?;Y*E^&>)C5)IX/.DTppghZ;V/GfSbaKB
-i^]f.leG`iife&0mNMm=iN<+VP'=kkc.XDOA.inN;-35kep<T0m61F=kitU&BDHWmTT-bo9Ko
-MM@<k]`@/8:cnjU;:O,]-:LWdU_6YoK4GKBG*MJFek5]OF8s*i--_]#<u/=Zj%=tT+Vkhq#d?
-#+_DDWA(8b2QZ7sCPSHTu(UWa6)De7eBr#kV0bkEl2B&:J=Oa.'#?-MW&n)1L3b??O-EOgeH9
-jH7'Ve3)o3>HU-jqQ%]RB'sq``t*:;Wb!IP;$([S=%uMAjsoNR2%E.Hj[Ce13'+a8;%Q_+Zb\
-R*<^"/2\#don4gabKR4?@lu;l_M,B4=a-[Sdf3fVPjYDQCU#1f8'?iq5$nuk"k::Xu5d*Q<-d
-]7ggPWEqBRLuImm-J&e8M)?<N'5Unc^G%6[fGd:I4\6C(<UW!*,(FZ547f+Pr-a/L>e%Y7a%<
-*"+9%?=A#2knPOH\@BE.$6q&0X`0uL5_66F:)E+CE2l09JWg8k$a^X.>2X@NecIE,%Mm](?uL
-VY!_ih:$T&RM<M2P%N]_H0C@c8bZR*qp4>hDao5)WLQ)?B57@s'4lgpA&=du<Gcg#(6Q<Caln
-M8:S.9`TfR=aN_Z8n^:8>_J>+;RHmMS!:"K:&-\h[c=i\%QamEQ\N@!tu=b+33"N7Rlm:'c%1
-[%Ui`FI=:nDN#tagcA6Ccn4bjUet]PbTBl!G(?aEA@4TV]j0T$ZW:>$5hGiGk,u,q/6B:)K3$
-uOA20_HF6WH)g_'9]I/&ojiC_pO'7ViWDc2[I4V>aa,T475<i)=$h^r6@b"\&h-'tB?<+OA_'
-Vt9QA3L-L`R?Ph$0@Q6IBTBtj>'%(331+3*QG$FiZSZ6-bgMSaf+RaLlr]u76Z%Qp)7F).PbB
-EkFde;(WmXkDWCTteOS',5HcXorPbqQRU*R_#'ZDMe-RhYcR%tjma'oO`$mI-R'*uT4+,)q<R
-39.`nG"a"K@>`M2s`0L*#P0\n2Pk9K4P0eXghiVjWXOaJ04[X]brs[(lYuO"+<*ho[%a?'-5f
-7BPkeX<h+'I],J>a`g[E^9neq!32(k-Nk.9mA>lV]</Q<.GZ99C("i+:5+>4?'O)l2MRgLl.K
-#0$T!:C&H%tlp=Cts/ZT1eDkfIfo94sQS=k]3U>N0=N_\lW6Zt).`Aq-8_Bpp-loT7',%4QIs
-W)']D8R7M5,hjBEjT1h`e0LtfY]5f*74R=s`$pbR5#,7>[4t9`XM.KPI9&fdNj:c>;1udl"d(
-q8jq,aE/ql@nbeu4VKdVhY+E#H?iQ"Y7`kD0'N>jKTGJH6?b;b6r0JJ)B.t4qba!#gpJ;\h0Q
-uTrqYDh]3_&(r&9TO7cB[`YDMro1r>4G?DhU^To2-t(6b::0'KNs(@j`n?H:Wi/p%1Ys,<J<p
-gW2tMON:J`?/)aE[Q1-6b<q.X:NDG!<T4LK4%->!\@j&tJ/>niua`&^sB82Uag=*DljQJr@Ve
-AfPP2p#6rCQ]HTK,;:K#U4t(>0G#50f0*FYRY"ZgBq\U25]b';7J(`X#T=W!lT:VYi(46^3:,
-)ko11l6%A\XIQ25T&oPXbu#=N+HXW[%_`@a.<lJE`Slcm&]R3MJ'?kq5=U(2mY01#M[NT,\2&
-WYj6.M9Gm$?6nXTh"LL:t7Kg'lq7]-Q")"C`>[,#EIUU:bJFne4[pY'Ve'ogI_6\AIjGe!i.W
-ZYB;?@cU,4B7.aA<>B8>)GhNYYTka("ag%=W+Z*Yc3:OYuSZ=R/8!#jB(kSAh:EK:R2A]$tM>
-eiH1N[1oDDCRGqb7p*=KHN]uB?K%:&VM]@\^5L/+&bqY[Tdhno)_QF1;pXg(T/kkY<[Y<?H@T
-/AW+Opj9S>U+nauLpQPQt<?LGD)0rKPU5HA3%S.t&+-ZeS39QbqJkGk,h:i6(!('IFKta"\XS
-=;WuK(nQB1O'd:ElG]D8r@[_&nFHe,j"QJ/3.`2%^9QV5&G-(gkelRqHtpMY,MIM6@5lKsdF=
-$IFa-E7;seh1'rklYU;9DY:,G5=_QuiS;rFSo20G#'E3KNOUl\QL;M%%HfI=i615J=0DT)Aa5
-"/HXT475,I.F?5/9<Pd=I,(#6VC\*0TbF5RaW^3;OgA-q1+Y8g(Uj43?%("N7JgtpGj(%ItYK
-IR_pt9BtR)+Lg<=3KBu^5DP#QB[KY:r@$@3$5Lm)VS>"(qV2pLJb.Xmk9ppdE*_P7iG#L088f
-,IU=RN!K:C8*V3:`HXiK"Cr:LQ)2OZ9L6@1C*e`76kQnY=us?8$bN_sDusJaXr41Ch;>\jl1s
-'qH+f3<\.<54-6J1YPN92<&E_R_/+(*q+:3PR`[V][;bk>+ocP9,bI9`cDTf=5fMZ:FT*ja,r
-D&P+el[&h3NS@BTgn$C$IRXUJE+p_7-_I#>K7`$`UElmb1:L,*")1[pL4.8D8TH,-B^SVs"sd
-iP:O5"D@fNmJ]<--X1Zqa9]Zd2\rrJ];sRk1CEArXM$feBLlQ__rT@VV1%,ju1a22Z?.1S'!0
-0>a4,T]p#`d=mM`&P1;K?R:)k^i]gO_UZcn/a!_eL@lT80)-BhA,]GW$_'fN)\/`G`3W.sYO$
-7s[L!bl$(CUdq:#P>WS0(,=#X5`W1CLQWpilc\oqB?`1F@KWKVf"CG2nf.%@q`BLY&qYV&^pf
-nR=;GfAO.WFU`S!Kr:06;;d6ML[%\^_k[78]sE^#U.Y4Us6G-u#="<;&<_d0OG4=pL):hbB`k
-/!)q[u^`G!ePCYcBqlUt7)'"dHu_(Ai+?0QO?C`f7[?+]YW\CE3M[90)F45F'I[6OcW[M13m/
-=Z[W6eAqon%Ef2gtOo]\T@ec9ZYGG1NUl9chVS+ba`_]Z(q@[q,j#>"ZaZJ`gf`Hb.rrRQmVX
-=$H^?5"N]bu5K`0C/brZ5fl7L.iMk!_0ui'C1e-.U_W/Q#\B+B%4FD\b0!P!g>DBZ^/9d`FNm
-hhDQ;%Ht4N3&=XRBfX$#]!;9eWPn=kU]P#(>=/paaP"\?;$,a'!_I,tD+n_)4_beBV'2/84)7
-6d.X5h#5IRc`C/ZI)5FjVZ$;pp0G_:f<B$143+RR'[=Pjis#?h#`YaeD#b%Df\2)kHVi=Rg.o
-;1'K&DMDB#SciiQ8Z\cj&IiJg"imDQ2snS/`[)tEJWXPJaMlL8%1SuKP)<Hqt/*oDXk2IK5_*
-\Kt1>23J>qas^^JtEf'Il3N,@;-m*$a;$$$h>u9#P56`OboJDQnJ3E%EZZ8"N]aeYPc1/s0sA
-IX#r>dZWB,2RAV\-`$ft&BFM65,*.5oNXKYfcbi+4E0dV=fQ*F-#J#234&3&kT1p]cfZ/_b=P
-q<5*c<]7e'4mF<d&NDEVb^#i[Du3\F'XGg0*.LP/Ah7`&.d%oG=ZFA\f0fhSQqOR(JF4T/(0m
-1NkL$-e#N]5kB,GHjrg1ph1*94,X%U7`,DZ&)kFTW#J!=5MkkHHTcV_)t.n.mA$UBJiDGgnK;
-.VKs(ZpgkSu*TR8+nBu\jR]\&&'\)Fm".':CN[<SDMO&t;Fbuh:YO).'Y"Wf'^iEG#@L6\T;;
-1e^T/6e)[7E@(!U&nlg@t#ISF"es\ZSR_m90TgV5-@6CEAKi%kFXu]k8Hjno&;XT?/aJ[*5'3
-gUHC9JhI.<=fl_kdca.,;m:U_>$kEcPFau'A\G%7mpN&hHRsWi\2`CB6Tpt_)A_ktnd`IqfXQ
-j3T=5;G'hj:EXA,.:N42A0#/8\t?k:CN0Ra5*CO/kHU_/:m_`OtT^rIikKbkd\E9hbSCBoP'u
-E#l^.LAGn;3/5"Ae.-!3"hZdIRa\2V5ZL&*l9f+nhX&8%::tQ\^*EDQ)_)>,I4JW<_9;_[Fq7
-p3M<CAuC_KD[n^KI]CrJ'm:gApNeR2)d*o;jM9mC%J<`S)7EYPUo:WouT'R,fbY8Bo5,Gtg*$
-B\VE47\N%LNto$aMt;co!r&sE>t(%S)OCnQ[IhZI"("=J+1ldNdT02=*X-gcX,Vh#Z(Di-\g=
-O*K:Hn3lg8nfl;c6K0293"/jf*c^#7"q[IcDE^pY0]@k]Q`in(BanfMKlen'RXD)<I)_2G=ir
-T#MZ_E`HT6"9Gb<BG#?C'qdnLgut_4p=%e]`V0Ed8>i5%<s[1:r*?^LtQA9`KWW^V,1MfC>>G
-W#<Xf@sDW#D\(m1$`G&^S#<N2!,qL>6Q]Y#_(WFjC+%RS`@FIJEZ<RN`/C`GCVb)hnB;q9[1c
-=oitkGbGpA3UiFcB"V@J[:ih78Q=G?W2UMpn7h11(aX=2-[[CEgWb=]%H"H/2#ZPnaZOBmZ($
-BUO6H$Pd@KA"qFR>DfENsh(tgrtiM\UI18f5A]Cr0D^_na%Y/s3=OZH/\mPcdN_?f,5VOAB2/
-q5K1MfH/Jg0^L9bgp\&QM2g9AK\W]b.f\"#pY?9]-\i+Fd`0pe0q?nggi5QQ/5%DQ<Q@I&"]3
-)LoV4XufRDj[:RQn$TOfPpqTRk;PRJ-`'l^1u$XPY_,L?\.\mHkjk]T-?+_kqFd0o":MZ!eKQ
-?,/+KnEO_h+$b*9?KoA=*k^!^(HYK;'[If9ZYas`+J*=:8IL!P&!-0FnP9"`)/G\F\e,Hk_a@
-Yu5TNnUU9Fjr<hWnW<c5d3%EP`g?0,1s(/)iT\.gqL\?d"[=(=N.jqf5J!;#b9-P*P)0Ja[4R
-@'RsBethtq7$dRa3B:YkBi4oiPdOC)s,`b%M&*[G<Bl:]gFX%Y\T?@#M=$ZmJT0&`rj"km9rX
-HpNCP#-[-P?EsJ2gg"=<!_lQ)D])CF4b*j)HIE'FCgpi-R?*)](nkZcuR:T)DD.LaH(,p2,4c
-;M^W]CpFEqt(+H^D9Cb^Q$a^LkJTVSCE`f5@8@3aTLSp#C:.%'PV!h([Dd^l(R)iA@,J^iTI!
-V@TLdGcD]YG2e@Rpr*h-hM0&\ib,Aqdt6-InF.J]ZkGmQGb>AD)H"!RpMIl4F]_e)T@RCq(%O
-<DY"`$,!I5D^;NBP?a=5$$;CjB8Jn!N?)HfMM/B$<FbfRol4Ntr6H8_X5iq<f9G"Y$AfIfM]E
-AIXdq$4*.jeZsW>is!u4?(-`_]8T7Vp=nP&:;aM(hD4uO.Tt'$+BU!E"<J$ZaG]CS_SRN]0!N
-tS]u"f3lK#?D"nD(^L5li\Rcju5%W7s<pnnc5LK3[/"0SsaE?6>f"f]E=n4Wif5f.5/?7[/G?
-F>mQWGq\'6E&=p1qmP@)dMi^Wa'ODP6>WT"g"ma77@j8k8FD0V5q-Os)r-)F#=Zj8CCo_dbiS
-Zl<dAZ2,ji5(\RD:im6Z[c79%XP/HH4h,\`mV,-V'37##`AT:)MYoNj<JtEGaK*2+buhUb\Jp
-W/JOS[&\/*b/=AXnN--.Q*k%`*l_ONr''OXs*B'(7"#;`Z*HR>U]4t]7oEAKi%k6G>,`[fs<d
-M7e$n_ttCrLIRSEps-+%Iq@Sp(#Lf?roRRpT^K[m6*Sebl_=Zof-09EpjV.DW?aECd,Y3<]5E
-PL-N"n0C/=Nb:_@^B2p`<S%.u5qR3Z'J`ZQ0pH+\kZLg(,WF9c]f=](s2nA2_(APE;Qcr[[gf
-KlVQ<@eCG_YHY1$oc9:ja:E?,P".n`Uh@N+2H6*k?fVL[`Z)'Fj!:IQYu4qg5QI)hjimmjRTe
-JpZ4UnfUuA@RUZjmmI'qgq=AF2.Kc&nf"cT)jYB\i]?/O,,YWh<ajBf/DPpF%9QGX43B:-/[E
-N\=c.JNQs5M0X"h3lZO/Ff!9s<HOb`0]\31e[13$M&dUqDbP)lZ*I,)qqb@ga=HnOsK#gWtOl
-idljj/Fgs1!&2P)ZB$fj7-H!(i8[#iD(FR`mtX.Zub\EmQS]4Ipqs3D#,q,pTe3<lZ]Z&'5hM
-r9bXQG=kUTM>Nu$8'u+>Uqcm4?Z?KFI(/*LpnJb`n@o3D2X_5Jn>lGr=SmuXeZV-\Y3&;UeqB
-J[\i!*4f8)Z>\2i`7*E:54C)+MFGX;o+"do\>T(&_7kL\r4Kh2T$.ES"&=4+b+'/3Se8X]X#'
-`VYb/#<=l.du6AXYc&-A[pe5rACk6U/afRRr$oqJN3#apgjjYbQs5S2CGD^q)5W^+K%\,1\Jd
-8^OC!_\"dkmBg[fB2%]3gt[S3Jg4t]7oEAP)bo?RF4>is*U0E.O*^>mo<*$!t;dl]A#hNKemf
-[\1*#!9EKhT<Z*H/L3]I`[mCgq02j>IgM_c26/#LQ+CKYatI3XD?g]7b0E#Wh,Kjj2P:!hIFO
-:/:X/T.Ts3BV&NP-9,=_oR[71L,$-qJJl44NJpG>ZI?`Cq1[BL%grK&P9Y:0+Q<d#;2(TcgdP
-39j`KFX\^4=0ia?>O<!T`n5c9C%:K14Tue;8lLZ1&%)gQ6gp$X.O?$guZ&q0OfF-aK2'eV).9
-A8];tXdE1F\[@f'K/lrQfSkb`R(WO,.kn"DZdrSt):D0??@j'6R'@RYM_MgU[hiFU5,RH#[N+
-(gNO2p\q8j%1no5D-O.-H;cW+;^_FnAY)<&PCT"DeEk;[^@VnV8LPO(FuUR,6jO*@k(PO1kcp
-]qD;Z1SZ4p2f]ch#/+7I*1SWCtd1SAi;KN^6*R<__#(qo/g"'ZLU.rXJYH'<rAEJDfD8.AJHb
-EKdCM;>fJYIYinZ]HCP/"Er!VsH[r[$1Adun\sjR1R@_='"ZMNc*Eh!U23+amA<%jT)"T@fh@
-Sh@`nUU=mDn!Gbius6DTq@`S>4.bJrDTu*5q2Eb\k8`I@.DIZZ]eY1M/ORAg:o*6i'iZf-.gC
-kr"i*Kc-@7I1rJr_"7uh?B3dliq>-$/&ek.9In,ie[V^e[h[o2!i4p&/IuPUpdmAmP)5fA!0W
-DtOF5j-aRJ]?`JYu(c]8JDNLW0qo'Nn2-Vobm3&0.ac"Ko!BQs47f3aR[4$MBG1"q(e[&r`D_
-*aRgZN&>h?X3GKbLjPT`qFd@[WC'Q-el\1S&^td`Yq&[CY3fUCW#6ElS&;3GF.3j]i+Hk/+:,
-tjfQ"q]NKOAND3K%Y@"8RmE59_nX%G>?X,Phr!VP]c]+8R4oY3ij,ZAfrlCkl5PXaBKb&Q<;#
-(!HJua)I^UiL/X*62,RXJgMk(:U`=cILcIl,Kdh!p0DJ0jNAVQ9t$?KV-Om%ukMs6*f*/A/N@
-4L&EM]"'Xn/.:qEpTj#FP4S-ln'(UV^R*_?jlCmM?ZL';Mf16&D_?tHbED6c-C1K's%11ZOF5
-j-bs+U">2$>te##p55',l1fs>>;R58L4]Qs,3cX3na_8:m6F)l::04);5l-a.dQK@;mY?8&=j
-iWk_giH8"@H%1ZhuDVe%mKX46`X:lIe;#X++*@ZTE"iP:H\0cP>=C<o[?T#qs:Z85QCWh0>-f
-&9/"!Vo#iulkj-j(J+_>nJ+]jLq0]p.?[mLa`f4oNq.=2Lj]cZ:<E3%!?!U`7;tJjmmqpa`V7
-*h@Y-.2F%mHqqYQ+RiJ)AW"Y\i.'`l?#Z55M4WWTiH(5Ak@VroB8=[Vt';CY,`F]6Ac$l)/n&
-meuLYcWXLU56(QPf%/FNqtD0lE8]*:6Z$[W?[hf^H[GWk?[[(hkg<n\NcfMgIf8rkJ,S\?]=Y\
-%H@#Sa\%d@_br:'!IJs-C-Vp<R(`<&AgM[<%#LAo#1Ggq1mbGAEkKeYPh00Yg?6$[.lB.4VdF
-#5(Z-/IeO,o?Os8D[nY?nncmFi(8r,DW2oc#i-r9I_iEr&Q]re':lAgAJ?a2:G3DFX2ZHp!AK
-j(9PYaiD:i5&Nj\OaK9MjPsht+3DR@83Uo\nr\;^N9'#2,Tk.K_alt/7e2[h4H/@]AgAJ?a2:
-G3DFX2ZHp!AKj(9PYaiD:i5&Nj\OaK9MjPsht+3DR@83UpG,1/CK-PcYIne"2JK&e/0E!49Q#
-WGSNKM:s",p+;c^s00DUa#.-[$[Gb8Nmp[$'A&91>%8-S:2M$_fP]OcV0!o[tj$SOdio#l2PL
-OG6iW]0DS.&Ak^9YJ*LHL##<G?3J$qcj56B:&1_<ao!(_8bK$JaR[Wtl!ftGN.$Id*O0eB`XG
-DVeCNbs8aGE7SZ%DY8+;=S"l&0Tk/+PE9Oh\uU'Om\^_WDC[rc)1,@FqV'(!#;'+o,7!AsTb?
-?h+MM6\=Y:eiZ7a<^NZK5+sXhP>4<8ru++&O@&[G753I8a(B!_,p/%;OaO5AGKn0Fo&5W?R6u
-hr+33IVeEdNG2bXo"'IR_(Y\/d'Bnk\Y;(7Zh'g*_58JZegjV,!B?\i.MO?cs:.5#]u/<Z&/,
-Thq85"<]9-gIlSWqi#)q:L72jQ$8!'_aPuK%;0""?k9A3eJ1CW7_mj1!.J.1SZ/iKY8O#-QaS
-$hfa]3L][;T7PgdhI&u\B\/Cab'UOk$h%EZXISLH0I/KK5+qqI:C5Cq,8K:E+b/ss4iq12ML-
-@@LP!hK"[3J14=nr=bn<eS3Fg&$5S+?BA&;_V[K-e-W%!=*9,!#1JI&pCr%*;!FG7[]XFTW'H
-S2mH>OF2_#!u%:t,o;cXAB@=Ii<YU-&Af#)+!KEi*M7?*bp4rFne&_J<,;17ai=O^k;j/\,:J
-1ij&N^bmsJreVqERgim:2ML?)h^T;13mm)qg-?;rE74o%q1.r<+Cq:KdpP)gi49Kr)La3qaaC
-9.Z[pN)HA,a!JU^PPMOE@i0KML<WQj=_<(L"IapH>?'2TEN2t*m(<`_[3oGW:DZA#M_A-=P3/
-4U)#fab9nu+YV$&odo[IG#3@O#b&HHM@ZlemLqDg02Yf%@B<R,QWlTa"[1g+aHCdAHKj?E#nd
-u2H1\-rE0i)Q[K^L_h8SIcDm,;PI4sGPK5"<]9-\@I)r*ge3O%:CbOUmY!p50-T$JeCKI(\;%
-nn4#^83Tf-)>P,@HeW,!]P<MsA2pqZ't2e,KR7$9QomP>`!u:BUMlgdis9YGa1pjl"bF:[L.F
-MMMmMu*SN'md;\=FgBLk=QEE59?@sC[2L:UI=M,1HZLkHD*_3/(fL,tV-OdpY`51ZbtL?'S44
-,Blg\cHR>$6_Mt[:ZV(I"W&0K&e/0E!49Q#iQ&PNtB/?,Te1_,=k!b#Y0u(KQ%$:oGY0-8RA^
-`,D7#7er6GgNsSS-D^i=g:^6M\pBj99]559\),!EX:rcI$o!+/"l+t;S_SM.&A\9B4C.JfgE*
-PRb?'jX4#Tf0?243#AjuJDn'$82jRg9Iul4d:[A*+tb%Z`'W55A$mW(q6%e#4OYHn<:(I%2C\
-I*C(P'ZX\('Z_ZgnDI.OXB4Ks'Sp^,Qbm8eq9\_(4sGQr?1W'*I-A*Y9B3pII"K4&7:_/6,8,
-fFj>4mZRgS^Pa=K>[_]t[Vndu0rnhF$<5+rFgaG9YTHpe&+N-sj"),'#-m"'61[ZuX0j3JcDO
-aN\91\*9m[O^9V6=7-U8h'=PB%K4c[\Ic6jPpMcaN)&p=7&RI68$;]q7oaq/r6K_4u+rm5X(%
-9(2)_R4GLo;A#Oa.SbP$OWCSF')(aJ&A#Nn:&BTbfjC>mW@n8dM\:^0+XW*pF//?#8<,9KOa[
-ZUk,tL3d#Y0u(KQ%$:HpML+PItGJ7gM%MXk>3M*tt09lTf]STFBtB=7(aVo<A=gB!2c&6Q[0a
-P)j1%:3S7s#mW+5Q1:GnW9tD/iOF8O\h;+F&NhB^HELalBJL3fYZO\d7.RV^-:1(73/&+CR(:
-;qG)Iff55EQ`6Y]:?a_Z%h-]]^*Ell@2I*'DXU<:MM*H:=P@UY%LMHU4J:-O--LYW\k/4,($$
-Tpf/Z\9_qndu0Rm[B3kj?o!R?4lB7KT(3q)AlL@7`8_76dKA!j<G:nBB1kj!hPAA$*(Ri*YLJ
-"BOK=JS`D".Lu`%kK7&Vs24:\<7`5X3jDu6>q1pK<1\.50B<R+k4qX5h;9rs$83[%>&J`F..6
-Jgs_n0j!,-1o)a.bb:2EO:YZ\9aG%J$d!DkQ1O#][r+^Zg5?&@a6*Lu`&)p8-PIq7oaq/r6K_
-4u+t-+s/=2N$jIgnduq\A+DA(]u!NlR_;$5Pb8GNm.)m\YuHP?`#J9P?L9Hm+!KE*9Z>Ql:pX
-4/i<cMAH\LN*KU<At+!H:^83TAM!B\"<[@9`oZK*6`)lV?S'p=Ua:="&*]LG^%o>[hS6f7^lJ
-5<LQLr?!J$k:>!1-VTtQJ."E(R<-f:HhbP$JTN)4uQ]5jPpLeP7LTk@qfT`bsE%c/P.30lYdt
-(UkVfMOcPogr,&p16L9mH;f>29KH$a81dYs"a'sG<a!mb*a%RLmlX411LPgsmKY8Y'M5pmj%,
--Dk"-eM2foP2=&kLe8+1K@I*hBtg.\V.p%1fT@6pAa%a[[TfccBa^jk!/r$*;uOQ;</>@?Gq*
-!g.kh,aXQ(n]?jQ@jS#5is;6=%m;t#KbZ.B`QV31+%doCI/MYB.[#ikGXakd9"s]`Va"kDiWJ
-AJEPe;g!]S3@NkU(-O!DRd+9/3E[AOqgap3+LF?rShoT>gjq,kX>q$<&?1&2[O?=>3Fc!DP+8
-l,^bG53!?==Q^ZiXP]cYP&frNtC_%VIJiqW7`\Sn-%:1]gD9%6;.]KNtB/?,Te1_,=k!b#Y0u
-(KFj.dq$8,`61PW)%G9'DfPW$]ac_\rDP1/hQ:a=f3'G$Qn/=S1bT#@g%/'"n!M<sT'o>9u9+
-B"`1;6<gWF9-TLc\2F=hH+(C.JfgR&#+G8sSJ$Uj,Qs9]j10r701#&`Pn>A.B,\b2d(24b<l(
-9jXpBa37!O_@fe'II^f%&#0JqdG<(,`-:?816qF8(gli*?D>T_9H?E=/;?iLI)6@(*jp7(8j<
-69^kttH-6c2^@HFG\36$FY4)`b*J@sqfJr%&$j#6]eq.D69CNbE?Rj*2(C?2$ITcu6Zndu2H1
-\-rEWHWuB!n61:$#>8$5)FSb=S[XLFBBe1O[(06_]A<)i.RKY'1ZTT7lZ*5jMN78YuL9#`;dl
-;MWBu6GXakdP/$B>_EIJsH<)$Y8TNmeU:03CE68Muo('&\B:n7KUr4Dus/&!k#O[Hf,5EK;PE
-?CB`9C_Vi^"Y()Np.m-6jTUK(,.T%!AbX';&kf'aZ07K-e-W%!=*9,!#1JI&pCr%*;!FG7[]X
-FT^-PV*]EYC<]j1q$8.@"Na.>i<YU-&8o:DDc#h5P*[`q#iPuf21(&<@tN0N*=/h\Pek$&Wnl
-$G4uV?JlkL^akT`G^o!+-,Q+C&LQYBC]*_+.rntEWrfLDm_a/7UY3qk<`*g7,JhQ\oAeiK4_"
-KbconhJ&YM[tdJil?q(bZs3^"Yk_`-Qf5$O;b>cn5l](Z\%7J7^[tWN1Hp<0iJ>43ga%%_5<r
-m_.8dk&McOP?slgua=IBZ`Yf0]6PE!SAk5+*&9lC>D=V-+cX(%6Yk!XD*O?#;B=$5%PC1T9I,
-_ptnsO$F:3QGdXi;1iX%%iSPg#5:b`I535k6Wl+Wn$M<bb6]j:`$Fa)4!a+"$gM'c&O)eHE%.
-`eiF91/):$$psM>_k.mC,5M$(N-pSKH.s)-<I<A!Q!pB>AbNK$&"KW`2Ja]Mq=loIV''_Ye.B
-aBSQNGZP`cRD`9E2$"o?<eOF/U/n<6c@&U*1hq&&C'@4+7`?6KqR:^0R9q&&C!.R\=:%Ja,0p
-)&sR&FL[<@d=5sfdhaF"P&sS6Lk^T9F6lC&Af#)+!KEi*M7H-bp4rFne&_J<,;17ai=O^k;j/
-\,:J1ij&N^bmsJreVqERgim:2ML?)h^T+g$2m)qLiIk;iUn&^@M?==dJaiC:%OaN\<A+F&CF=
-[m&]2%JV\mIYP?U/:<$cfLr+#=`/o7'FWp;r)h0r,")%(p'`8Kf16nKf9tM(0T'Fhk,3M1lt^
-.;Eit?MX?u""Q]hS$@]<p_Cn@,`oNO5&QPp;e,M.,?e(P-3L)6%_$\'a[[TfccBa^`ApNO';8
-G?'KN1@X?8n6Hpe$uI#MU%O'uL_=QO$n&ILkq&IHB3nmQ:W?=B5NHmG<jr4+"$P)nXJ7Qs;a]
-^7Ju>?G=+,R:J?D0CWQ%)bI-f[2!Ano9sTjQ#.i(P0A-;*uV$jM_`,^eUCPIjp@@1,L6ub;^[
-fiDhue+%+j7m)5gT.mu]1b$`=D+%%&AKh+tO+Wp%#*^fK1_B$QoCu#(KH\E$&TN\['83T@r.7
-*M:69'SX,D:"=a[ZWq#a15[_@\%8+bV(25$"n_CSu+RZ+aIDd7>CCNtn[YD)OsoKfD7sJVlqV
-JE13klD4:K?!+q!AH\gECuBDIoF@%F'dOmi@7WRW,PbG-o'md@J'3T_L'*]g&rYg\"j+f3(a1
-aYRacre`Bj&d/2>6on6oU1T\2rm8IE'N`u,MTUp0DEduecI+^e^%=N_0u%_6<8[+;G%P8Mm3'
-.=jB-aCT>T<RWI+ca_niCU=Z5&i9%q'7j]8V[oGR1D[_':<hdT>VAOI#S(HDEY3n'GqH"3Cj<
-^IjJc0i(E2cZZB;A;UF:A`iD!8gcI4:IfoZL#/8Cm$k/(:F@adSK+82^J6@1b;\CuNCs#ZZ_h
-*8fCa8a$Q:/j8#U]tc3'i6]l8^(;a=n3!X@Y/kerHKI-\<km$pYJ-6p?*.KHS.'cq9*sb.WdC
-o!U&&,Uc;V5)I6*q1Q`oXbT;.IqVP'm#OUAM414GEInIZ:BX<EUc:l)&9]Al$t862\f!e:;>i
-u7Hu;7AJ^>^8`%kopM/]'%n?A@%TmY(a*/rMO$4NUcq3[Efa_-bRk26!]A0?!9-aCTAT?(l>T
-P.q3*j_(-6XjeR=\5);C&+.(J:c@I[W`S9&eQ=@%11d8MU9G=8M/,",to=K7/;N/N9$1)@[0_
-s[DX.(\CWG/5icAq5sC%6La)'%YU1kN(5aR`RV4'j=(i&#&Z[!c:5C#7Z\6`]Cn\u?4@[7BSA
-Sr9aX=@3,Teu'8D5EjOl;Oil]`%'A2#8NVb%["K\!Z1P%9]9b[VY\ICl!r=leTol<`F4%*?P(
-,TeO-52O2=I%3[sZ%@"e-h5C#qT+H7"pm]gYsKGjD2P+hZ/]q<oF@%F&Af#)+!H:^83T?G8!&
-+O&<7n/#U(0Rne"2JJsh"VSk2fciGm*&j7N'^63rXIAsX(G&L8GAKHj#O6;/7l5@ngB'6ch7&
-Rrn]^@d^J`Slk&#se%n@]HA-^\E?T5pRNqV@:SeOF2_#!m/KEI"ZG?aiBKjKG-?D;;2e53#CN
-`KZ_@"oK$qe./AZJLTq8TS>=(H+/b<=4-GYD*7#G.W3*'6PYZs*Q@-W8Ob*`gC4m;6-^'OXH;
-^u?7?*C\pI+Qa;bm`9[&=R7n=E07@d:3rd/5!E7u.`8W2NkN@[m_='`jZB-hM:9=J@)`i<H"l
-[(qW5Q3kgs'D4W.EZ%Pcq#m7<@T2h0.8ES-#n.6L6.i21fFf"Z=L3lN?r7Am'=D)T:d/<+8<B
-ksCec%n8%=+0RU$M+JrU2oZuU!8R'HY%+.(.u[!ikb_C(E*,MYOX"YH\L&YFFp*#hih$9HNbI
-cN=5SU:j0b+[l@4@U=:I%n'R_?NIm2R71oes+BL7eoHdA!9FR&T1u3o!)NmZ-m<C<BeOZljA&
-r(&@R'fd4:'I';8+4:sGd08(Ac\h!FCEeGc2jM\Yr5%3nLBYu<sgH-8u+5mE%n:S<N&Q8+i83
-UMJ8\ouo2*qZ,'?Na<4XjL[U..\iHQr9AW@%iW>1<g,GY]S,1%e6$3iD/"ZBt@Ij)h<!oU\T;
-@d66o&E++PQ:.ValbGZGI"[l5U/m7O!QdifWCQM6,Te2"5k6WT+!I.>nhDC3+e7JfI%6crb8!
-_+%EV*Gi<YU-&Af%'j<K<hFqZ-nYJ0kUkn]s(,$"-UkGEN2&OM:&`9I,b&0c8m5H,6,W;~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 382 406
-%%EOF
-
-%%EndDocument
- @endspecial 275 3732 a(A)m(t)i(the)h(top)f(of)g(the)g(windo)m(w)f(is)g
-(a)h(th)m(um)m(bnail)e(of)i(the)g(image)h(that)f(c)m(hanges)h(to)g
-(re\015ect)g(the)f(color)150 3842 y(settings)h(of)h(the)f(image.)53
-b(This)32 b(enables)h(y)m(ou)i(to)g(get)g(an)g(idea)e(of)i(ho)m(w)f
-(the)g(image)h(will)c(prin)m(t)i(out)i(as)150 3951 y(y)m(ou)c(adjust)e
-(settings.)275 4081 y(Belo)m(w)h(that)h(there)g(are)g(eigh)m(t)g
-(sliders:)150 4231 y Fn(Brightness)630 4341 y Fu(\(0{2.0,)i(default)d
-(1.0\))h(Adjust)f(the)g(brigh)m(tness)f(of)i(the)g(image.)150
-4491 y Fn(Contr)-5 b(ast)142 b Fu(\(0{4.0,)33 b(default)d(1.0\))h
-(Adjust)f(the)g(output)g(con)m(trast.)150 4642 y Fn(Cyan,)j(Magenta,)g
-(Y)-7 b(el)5 b(low)630 4751 y Fu(\(0{4.0,)31 b(default)c(1.0\))i
-(Adjust)d(the)i(cy)m(an,)h(magen)m(ta,)h(and)d(y)m(ello)m(w)h(in)e(the)
-i(output.)39 b(These)630 4861 y(should)c(not)j(normally)d(need)j(to)g
-(b)s(e)e(adjusted)h(v)m(ery)h(m)m(uc)m(h;)j(ev)m(en)d(v)m(ery)f(small)f
-(adjust-)630 4970 y(men)m(ts)31 b(can)f(go)i(quite)d(a)i(long)f(w)m(a)m
-(y)h(to)h(restoring)d(color)i(balance.)150 5121 y Fn(Satur)-5
-b(ation)70 b Fu(\(0{9.0,)33 b(default)d(1.0\))i(Adjust)e(the)g(color)h
-(brilliance)c(\(saturation\))k(of)g(the)g(output.)40
-b(Sat-)630 5230 y(uration)31 b(of)h(0)g(means)f(pure)g(gra)m(y)i
-(scale,)f(with)f(no)g(color.)45 b(Saturation)31 b(of)h(9.0)h(will)c
-(mak)m(e)630 5340 y(just)h(ab)s(out)g(an)m(ything)g(but)f(pure)h(gra)m
-(ys)h(brillian)m(tly)26 b(colored.)p eop
-%%Page: 30 35
-30 34 bop 150 -116 a Fu(Chapter)30 b(5:)41 b(Programs)2663
-b(30)150 299 y Fn(Density)179 b Fu(\(0.1{2.0,)47 b(default)41
-b(1.0\))i(Adjust)d(the)i(densit)m(y)e(\(amoun)m(t)j(of)e(ink\))g(in)f
-(the)h(prin)m(t.)72 b(The)630 408 y(densit)m(y)30 b(is)h(automatically)
-g(corrected)h(for)f(the)g(particular)e(prin)m(ter,)i(resolution,)f(and)
-g(in)630 518 y(some)35 b(cases)h(pap)s(er)d(c)m(hoices.)55
-b(If)34 b(solid)f(blac)m(k)h(in)g(the)h(input)d(is)i(not)h(solid)e(in)g
-(the)i(prin)m(t,)630 628 y(the)i(densit)m(y)e(needs)h(to)i(b)s(e)d
-(increased;)k(if)d(there)g(is)g(excessiv)m(e)h(ink)e(bleed-through)h
-(and)630 737 y(m)m(uddy)29 b(dark)h(colors,)g(the)h(densit)m(y)f
-(should)e(b)s(e)i(decreased.)630 881 y Fi(Note)p Fu(:)52
-b(the)36 b(densit)m(y)e(will)f(not)j(increase)f(b)s(ey)m(ond)g(a)g
-(certain)h(amoun)m(t)g(no)f(matter)h(what)630 990 y(the)31
-b(slider)d(is)h(set)i(to.)150 1167 y Fn(Gamma)170 b Fu(\(0.1{4.0,)29
-b(default)23 b(1.0\))j(Adjust)d(the)h(output)g(gamma.)40
-b(The)23 b(gamma)i(v)-5 b(alue)24 b(is)f(automati-)630
-1277 y(cally)h(corrected)j(for)d(the)i(c)m(hoice)g(of)f(prin)m(ter;)h
-(this)e(is)g(used)g(if)g(y)m(ou)i(b)s(eliev)m(e)e(the)h(automatic)630
-1387 y(setting)30 b(is)g(incorrect.)150 1646 y Fg(5.1.5.2)63
-b(Dither)41 b(Algorithm)275 1857 y Fu(There)33 b(is)h(also)g(a)h
-(selection)f(b)s(o)m(x)g(for)g(the)h(dither)e(algorithm)g(to)i(b)s(e)f
-(used)f(in)g(the)i(p)s(op-up)d(dialog.)150 1966 y(There)e(are)h(curren)
-m(tly)e(sev)m(en)i(c)m(hoices:)150 2153 y Fn(A)-5 b(daptive)34
-b(Hybrid)630 2262 y Fu(Adaptiv)m(e)g(Hybrid)e(usually)g(yields)g(the)i
-(b)s(est)g(output)f(qualit)m(y;)i(it)f(c)m(ho)s(oses)h(a)f(mo)s
-(di\014ed)630 2372 y(Flo)m(yd-Stein)m(b)s(erg)28 b(error)h(di\013usion)
-d(algorithm)i(or)i(ordered)e(dithering)f(dep)s(ending)g(up)s(on)630
-2481 y(the)k(image)f(c)m(haracteristics.)150 2659 y Fn(Or)-5
-b(der)g(e)g(d)173 b Fu(Ordered)39 b(uses)h(a)h(pure)e(ordered)g
-(dither.)70 b(It)40 b(generally)g(yields)e(excellen)m(t)j(qualit)m(y)e
-(for)630 2768 y(simple)25 b(blac)m(k)i(and)g(white)f(or)h(four)f(color)
-h(prin)m(ters)f(without)g(v)-5 b(ariable)26 b(drop)g(size)h(or)g(drop)
-630 2878 y(mo)s(dulation;)22 b(it)f(is)f(not)h(recommended)g(if)f(high)
-f(qualit)m(y)i(is)f(desired)f(on)i(six)f(color)h(prin)m(ters.)630
-2987 y(It)30 b(is)g(considerably)e(faster)j(than)f(Adaptiv)m(e)h
-(Hybrid.)150 3164 y Fn(F)-7 b(ast)315 b Fu(F)-8 b(ast)37
-b(also)e(uses)f(a)i(pure)e(ordered)h(dither,)g(but)f(uses)h(a)h(v)m
-(ery)f(simple)e(blac)m(k)j(mo)s(del)e(and)630 3274 y(mak)m(es)41
-b(no)g(attempt)h(to)f(handle)e(m)m(ulti-lev)m(el)g(\(6-color,)45
-b(v)-5 b(ariable)39 b(drop)h(size,)j(or)e(drop)630 3384
-y(mo)s(dulation\))31 b(at)i(all)e(cleanly)-8 b(.)46 b(It)32
-b(is)g(substan)m(tially)e(faster)i(than)g(Ordered)f(dither.)45
-b(The)630 3493 y(qualit)m(y)34 b(tends)g(to)h(b)s(e)f(quite)g(p)s(o)s
-(or)f(except)j(on)e(simple)e(four)i(color)h(prin)m(ters.)51
-b(On)34 b(three)630 3603 y(color)c(prin)m(ters,)g(qualit)m(y)f(is)h
-(probably)e(comp)s(etitiv)m(e)j(with)e(an)m(ything)g(else.)150
-3780 y Fn(V)-7 b(ery)40 b(F)-7 b(ast)97 b Fu(V)-8 b(ery)39
-b(F)-8 b(ast)40 b(is)e(similar)e(to)j(F)-8 b(ast,)42
-b(except)d(that)g(it)f(uses)g(a)h(v)m(ery)g(simple)e(dither)g(matrix)
-630 3890 y(that)j(can)g(b)s(e)f(lo)s(ok)m(ed)h(up)e(m)m(uc)m(h)i(more)g
-(quic)m(kly)e(than)i(the)g(matrix)f(used)f(in)h(the)h(F)-8
-b(ast)630 3999 y(dither.)52 b(F)-8 b(or)35 b(simple)d(pure)i(blac)m(k)g
-(and)g(white)g(images)g(dominated)g(b)m(y)g(horizon)m(tal)h(and)630
-4109 y(v)m(ertical)29 b(lines,)e(this)h(ma)m(y)h(actually)g(yield)e
-(the)i(b)s(est)f(results;)g(for)h(other)g(t)m(yp)s(es)g(of)f(image,)630
-4218 y(the)j(qualit)m(y)e(will)f(b)s(e)i(p)s(o)s(or.)150
-4396 y Fn(A)-5 b(daptive)34 b(R)-5 b(andom)630 4505 y
-Fu(Adaptiv)m(e)27 b(Random)g(is)g(similar)d(to)k(Adaptiv)m(e)g(Hybrid,)
-e(except)i(that)g(the)g(mo)s(di\014cations)630 4615 y(to)44
-b(the)g(Flo)m(yd-Stein)m(b)s(erg)f(algorithm)f(are)i(sligh)m(tly)e
-(di\013eren)m(t.)80 b(This)42 b(is)g(slo)m(w)m(er)i(than)630
-4724 y(Adaptiv)m(e)29 b(Hybrid)e(on)i(most)h(systems.)40
-b(F)-8 b(or)30 b(some)g(images)f(the)g(qualit)m(y)g(ma)m(y)g(b)s(e)g(b)
-s(etter)630 4834 y(than)45 b(Adaptiv)m(e)f(Hybrid,)j(but)d(generally)g
-(Adaptiv)m(e)h(Hybrid)e(should)f(yield)i(sligh)m(tly)630
-4944 y(sup)s(erior)28 b(images.)150 5121 y Fn(Hybrid)33
-b(Floyd-Steinb)-5 b(er)g(g)630 5230 y Fu(Hybrid)29 b(Flo)m(yd-Stein)m
-(b)s(erg)i(uses)f(the)i(mo)s(di\014ed)d(Flo)m(yd-Stein)m(b)s(erg)h
-(algorithm)h(of)g(Adap-)630 5340 y(tiv)m(e)c(Hybrid)e(on)i(the)g(en)m
-(tire)g(image.)39 b(Generally)-8 b(,)28 b(the)f(results)e(are)i(p)s(o)s
-(or)f(in)g(pale)g(regions.)p eop
-%%Page: 31 36
-31 35 bop 150 -116 a Fu(Chapter)30 b(5:)41 b(Programs)2663
-b(31)150 299 y Fn(R)-5 b(andom)35 b(Floyd-Steinb)-5 b(er)g(g)630
-408 y Fu(Random)24 b(Flo)m(yd-Stein)m(b)s(erg)f(uses)h(the)g(mo)s
-(di\014ed)e(Flo)m(yd-Stein)m(b)s(erg)i(algorithm)f(of)h(Adap-)630
-518 y(tiv)m(e)f(Random)e(on)h(the)h(en)m(tire)f(image.)38
-b(Generally)-8 b(,)24 b(the)e(results)f(are)h(p)s(o)s(or)g(in)e(pale)i
-(regions.)150 742 y Fg(5.1.6)63 b(Action)40 b(Buttons)275
-935 y Fu(The)29 b(last)i(pane)f(con)m(tains)g(four)g(action)h(buttons:)
-150 1094 y Fn(Print)i(and)g(Save)g(Settings)630 1204
-y Fu(Immediately)40 b(prin)m(t)g(the)i(image)g(\(or,)i(if)d(the)g(File)
-g(prin)m(ter)f(is)g(c)m(hosen,)45 b(displa)m(y)40 b(a)i(\014le)630
-1313 y(selection)36 b(windo)m(w)e(to)i(pic)m(k)g(the)g(output)f
-(\014le\),)i(and)e(sa)m(v)m(e)i(all)e(curren)m(t)h(settings)f(for)h
-(all)630 1423 y(prin)m(ters.)150 1582 y Fn(Save)d(Settings)630
-1692 y Fu(Immediately)c(sa)m(v)m(e)j(the)f(settings,)f(and)g(con)m(tin)
-m(ue)h(w)m(orking)e(in)h(the)g(Prin)m(t)f(plugin.)150
-1851 y Fn(Print)271 b Fu(Immediately)34 b(prin)m(t)f(the)i(image)g
-(\(or,)h(if)e(the)g(`)p Fr(File)p Fu(')g(prin)m(ter)g(is)f(c)m(hosen,)k
-(displa)m(y)c(a)i(\014le)630 1961 y(selection)30 b(windo)m(w)f(to)i
-(pic)m(k)f(the)h(output)f(\014le\),)g(but)f(do)i(not)f(sa)m(v)m(e)i
-(settings.)150 2120 y Fn(Canc)-5 b(el)216 b Fu(Immediately)29
-b(quit)h(without)f(sa)m(ving)h(settings)h(or)f(prin)m(ting.)150
-2378 y Ft(5.2)68 b(Ghostscript)45 b(driv)l(er)150 2693
-y(5.3)68 b(CUPS)45 b(driv)l(er)p eop
-%%Page: 32 37
-32 36 bop 150 -116 a Fu(Chapter)30 b(6:)41 b(Rep)s(orting)29
-b(Bugs)2420 b(32)150 299 y Fp(6)80 b(Rep)t(orting)54
-b(Bugs)275 533 y Fu(If)20 b(y)m(ou)i(\014nd)e(a)i(bug)e(in)g(GIMP-Prin)
-m(t)h(or)h(ha)m(v)m(e)g(an)m(y)g(suggestions)f(for)g(mo)s(di\014cation)
-f(or)h(impro)m(v)m(emen)m(t,)150 643 y(please)30 b(send)g(electronic)h
-(mail)e(to)i(the)g(GIMP-Prin)m(t)f(bug)g(rep)s(orting)f(address)2891
-610 y Ff(1)2928 643 y Fu(.)41 b(Include)29 b(the)h(v)m(ersion)150
-752 y(n)m(um)m(b)s(er,)48 b(whic)m(h)d(y)m(ou)h(can)f(\014nd)f(b)m(y)i
-(running)d(`)p Fr(gimpprint-config)26 b(--version)p Fu(')n(.)86
-b(Also)45 b(include)150 862 y(in)f(y)m(our)h(message)h(the)f(output)g
-(that)h(the)f(program)g(pro)s(duced)e(and)i(the)g(output)g(y)m(ou)g
-(exp)s(ected,)150 971 y(if)29 b(applicable,)g(otherwise)h(the)g(b)s
-(est)g(description)f(of)h(the)h(problem)d(that)j(y)m(ou)g(can)g(pro)m
-(vide.)275 1106 y(If)36 b(y)m(ou)i(ha)m(v)m(e)h(other)e(questions,)h
-(commen)m(ts)h(or)e(suggestions)g(ab)s(out)g(GIMP-Prin)m(t,)i(con)m
-(tact)h(the)150 1215 y(dev)m(elop)s(ers)33 b(via)h(electronic)g(mail)f
-(to)i(the)f(GIMP-Prin)m(t)g(mailing)e(list)2613 1182
-y Ff(2)2649 1215 y Fu(.)52 b(They)34 b(will)d(try)j(to)h(help)e(y)m(ou)
-150 1325 y(out,)e(although)f(they)g(ma)m(y)h(not)g(ha)m(v)m(e)g(time)f
-(to)i(\014x)d(y)m(our)i(problems.)p 150 5137 1200 4 v
-199 5204 a Ff(1)275 5236 y Fe(gimp-print-devel@lists.sourcefo)q(rge.n)q
-(et)199 5308 y Ff(2)275 5340 y Fe(gimp-print-devel@lists.sourcefo)q
-(rge.n)q(et)p eop
-%%Page: 33 38
-33 37 bop 150 -116 a Fu(Chapter)30 b(7:)41 b(App)s(endices)2587
-b(33)150 299 y Fp(7)80 b(App)t(endices)p eop
-%%Page: 34 39
-34 38 bop 150 -116 a Fu(App)s(endix)28 b(A:)i(Dithering)2590
-b(34)150 299 y Fp(App)t(endix)53 b(A)81 b(Dithering)275
-550 y Fu(The)33 b(dithering)f(co)s(de)i(in)f(`)p Fr(print-dither.c)p
-Fu(')e(attempts)k(to)g(repro)s(duce)e(v)-5 b(arious)33
-b(shades)h(of)g(gra)m(y)150 659 y(\(or)e(all)e(colors\))i(from)f(only)f
-(a)i(few)g(di\013eren)m(t)e(inks)g(\(blac)m(k,)j(cy)m(an,)f(magen)m
-(ta,)i(y)m(ello)m(w,)e(and)f(sometimes)150 769 y(ligh)m(t)h(cy)m(an)i
-(and)f(ligh)m(t)f(magen)m(ta\).)51 b(The)33 b(dots)g(can't)h(v)-5
-b(ary)33 b(in)f(darkness)g(or)h(size)g(\(except)h(for)f(certain)150
-879 y(sp)s(ecial)h(prin)m(ters\),)i(and)e(so)i(w)m(e)g(need)f(to)h(la)m
-(y)f(do)m(wn)g(a)h(certain)f(fraction)g(of)h(dots)f(to)h(represen)m(t)g
-(eac)m(h)150 988 y(distinct)29 b(lev)m(el.)275 1128 y(This)20
-b(sounds)g(straigh)m(tforw)m(ard;)25 b(in)c(practice,)j(it)d(isn't.)37
-b(Completely)21 b(random)g(distribution)e(of)j(dots)150
-1238 y(\(simple)k(probabilistic)e(dithering\))h(w)m(ould)h(create)j
-(grain)m(y)e(clumps)f(and)h(ligh)m(t)f(sp)s(ots.)40 b(The)26
-b(smo)s(othest)150 1348 y(pattern)33 b(results)f(from)g(an)h
-(equidistan)m(t)f(spacing)g(of)h(dots.)49 b(Appro)m(ximating)31
-b(this)h(requires)g(sophisti-)150 1457 y(cated)d(algorithms.)39
-b(W)-8 b(e)29 b(ha)m(v)m(e)g(t)m(w)m(o)g(dithering)d(algorithms,)h(an)h
-(ordered)f(dither)g(algorithm)g(that)h(uses)150 1567
-y(a)33 b(grid)e(\(matrix\))i(to)g(decide)f(whether)g(to)h(prin)m(t,)f
-(and)g(a)g(mo)s(di\014ed)f(Flo)m(yd-Stein)m(b)s(erg)h(error)g
-(di\013usion)150 1676 y(algorithm)d(that)i(uses)f(a)h(grid)e(in)g(a)i
-(sligh)m(tly)e(di\013eren)m(t)h(w)m(a)m(y)-8 b(.)275
-1816 y(W)g(e)31 b(curren)m(tly)e(ha)m(v)m(e)j(three)f(dithering)d
-(functions:)199 1957 y(1.)61 b Fr(dither_fastblack)33
-b Fu(pro)s(duces)i(pure)i(blac)m(k)g(or)g(white)f(from)h(a)g
-(pre-dithered)f(input.)59 b(This)35 b(is)330 2066 y(used)27
-b(for)h(t)m(w)m(o)i(purp)s(oses:)38 b(for)28 b(prin)m(ting)e(pure)h
-(blac)m(k)h(and)g(white)f(v)m(ery)i(quic)m(kly)e(\(e.)41
-b(g.)f(text\),)31 b(and)330 2176 y(for)f(prin)m(ting)e(pre-screened)j
-(mono)s(c)m(hrome)f(output)g(that)h(w)m(as)g(rasterized)f(externally)-8
-b(.)199 2313 y(2.)61 b Fr(dither_black)22 b Fu(pro)s(duces)i(blac)m(k)h
-(from)f(gra)m(yscale)j(input.)37 b(The)25 b(new)f(dither)p
-3014 2313 28 4 v 32 w(blac)m(k)h(can)g(pro)s(duce)330
-2423 y(either)30 b(a)h(single)e(or)h(m)m(ultiple)e(lev)m(els)i(of)h
-(blac)m(k,)f(for)g(prin)m(ters)f(supp)s(orting)f(v)-5
-b(ariable)29 b(dot)i(size.)199 2560 y(3.)61 b Fr(dither_cmyk)30
-b Fu(pro)s(duces)i(3,)j(4,)f(5,)h(6,)g(or)e(7)g(color)h(output)f
-(\(CMY,)h(CMYK,)f(CcMmYK,)g(CcM-)330 2670 y(mYy)-8 b(,)43
-b(CcMmYyK,)d(or)g(an)m(y)h(v)-5 b(arian)m(ts\).)70 b(The)39
-b(new)h(routine)f(can)h(handle)f(single)f(or)i(m)m(ultiple)330
-2779 y(lev)m(els)30 b(of)g(eac)m(h)i(color.)275 2947
-y(There)42 b(is)h(a)g(c)m(hoice)i(of)e(dithering)e(algorithms.)79
-b(F)-8 b(our)43 b(of)h(them)f(are)h(based)f(on)g(a)h(basic)e(error)150
-3057 y(di\013usion,)e(with)g(a)g(few)h(t)m(w)m(eaks)h(of)e(m)m(y)h(o)m
-(wn.)71 b(The)40 b(other)g(one)h(is)e(`ordered'.)71 b(Ho)m(w)m(ev)m
-(er,)45 b(they)c(all)150 3166 y(share)30 b(the)h(basic)f(op)s(eration)g
-(in)f(common.)41 b(First,)30 b(the)h(algorithm)f(pic)m(ks)f(what)i
-(kind)e(of)h(dot)h(\(if)f(there)150 3276 y(are)40 b(m)m(ultiple)e(dot)h
-(sizes)h(and/or)g(tones)g(that)g(ma)m(y)g(b)s(e)f(pic)m(k)m(ed\))h(is)f
-(the)h(candidate)g(to)g(b)s(e)f(prin)m(ted.)150 3385
-y(This)30 b(decision)g(is)h(made)h(based)g(on)f(the)h(darkness)f(at)i
-(the)f(p)s(oin)m(t)f(b)s(eing)f(dithered.)44 b(Then,)31
-b(it)h(decides)150 3495 y(whether)25 b(the)g(dot)g(will)e(b)s(e)h(prin)
-m(ted)g(at)i(all.)38 b(What)26 b(this)e(is)g(based)h(on)g(dep)s(ends)e
-(up)s(on)h(whic)m(h)g(algorithm)150 3605 y(family)29
-b(w)m(e)i(use.)40 b(This)29 b(is)g(all)g(describ)s(ed)g(in)g(more)h
-(detail)g(b)s(elo)m(w.)275 3745 y(Ordered)35 b(dithering)g(w)m(orks)j
-(b)m(y)f(comparing)f(the)i(v)-5 b(alue)36 b(at)i(a)g(giv)m(en)f(p)s
-(oin)m(t)f(with)g(the)h(v)-5 b(alue)37 b(of)h(a)150 3854
-y(tiled)c(matrix.)56 b(If)36 b(the)g(v)-5 b(alue)35 b(at)h(the)g(p)s
-(oin)m(t)f(is)g(greater)i(than)e(the)h(v)-5 b(alue)35
-b(in)f(the)i(matrix,)h(the)f(dot)g(is)150 3964 y(prin)m(ted.)h(The)25
-b(matrix)f(should)f(consist)i(of)g(a)g(set)h(of)f(ev)m(enly)g(spaced)g
-(p)s(oin)m(ts)f(b)s(et)m(w)m(een)h(0)g(and)g(the)g(upp)s(er)150
-4073 y(limit.)46 b(The)32 b(c)m(hoice)i(of)f(matrix)f(is)g(v)m(ery)h
-(imp)s(ortan)m(t)f(for)h(prin)m(t)f(qualit)m(y)-8 b(.)47
-b(A)33 b(go)s(o)s(d)g(dither)e(matrix)i(will)150 4183
-y(emphasize)j(high)g(frequency)h(comp)s(onen)m(ts,)i(whic)m(h)c
-(distributes)g(dots)i(ev)m(enly)g(with)e(a)j(minim)m(um)c(of)150
-4293 y(clumping.)62 b(The)38 b(matrices)g(used)g(here)g(are)g(all)g
-(simple)e(matrices)i(that)h(are)g(expanded)e(recursiv)m(ely)150
-4402 y(to)d(create)i(larger)d(matrices)h(with)e(the)i(same)g(kind)e(of)
-i(ev)m(en)g(p)s(oin)m(t)f(distribution.)46 b(This)32
-b(is)h(describ)s(ed)150 4512 y(b)s(elo)m(w.)275 4652
-y(Note)i(that)f(it)g(is)f(imp)s(ortan)m(t)g(to)h(use)g(di\013eren)m(t)f
-(matrices)h(for)g(the)g(t)m(w)m(o)h(sub-op)s(erations,)f(b)s(ecause)150
-4761 y(otherwise)g(the)h(c)m(hoice)h(ab)s(out)f(whether)f(to)h(prin)m
-(t)f(and)g(the)h(c)m(hoice)h(of)f(dot)g(size)g(will)d(b)s(e)i
-(correlated.)150 4871 y(The)j(usual)f(result)h(is)f(that)i(the)g(prin)m
-(t)e(is)h(either)g(to)s(o)h(dark)f(or)h(to)s(o)g(ligh)m(t,)h(but)e
-(there)h(can)g(b)s(e)f(other)150 4981 y(problems.)275
-5121 y(Ordered)h(dithering)f(w)m(orks)i(quite)g(w)m(ell)f(on)h(single)f
-(dot)i(size,)h(four)e(color)g(prin)m(ters.)66 b(It)40
-b(has)f(not)150 5230 y(b)s(een)31 b(w)m(ell)f(tested)j(on)e(four)g
-(color,)i(v)-5 b(ariable)30 b(dot)i(size)f(prin)m(ters.)43
-b(It)32 b(should)e(b)s(e)h(a)m(v)m(oided)h(on)f(six)g(color)150
-5340 y(prin)m(ters.)p eop
-%%Page: 35 40
-35 39 bop 150 -116 a Fu(App)s(endix)28 b(A:)i(Dithering)2590
-b(35)275 299 y(Error)29 b(di\013usion)e(w)m(orks)k(b)m(y)f(taking)g
-(the)h(output)e(error)h(at)h(a)g(giv)m(en)f(pixel)f(and)h
-(\\di\013using")e(it)i(in)m(to)150 408 y(surrounding)h(pixels.)51
-b(Output)34 b(error)g(is)f(the)i(di\013erence)f(b)s(et)m(w)m(een)h(the)
-g(amoun)m(t)g(of)f(ink)f(output)i(and)150 518 y(the)c(input)f(lev)m(el)
-g(at)i(eac)m(h)h(pixel.)41 b(F)-8 b(or)32 b(simple)d(prin)m(ters,)h
-(with)g(one)h(or)g(four)g(ink)f(colors)h(and)f(only)h(one)150
-628 y(dot)f(size,)g(the)g(amoun)m(t)h(of)f(ink)e(output)i(is)f(either)g
-(65536)j(\(i.)40 b(e.)h(full)28 b(output\))i(or)f(0)i(\(no)f(output\).)
-40 b(The)150 737 y(di\013erence)35 b(b)s(et)m(w)m(een)h(this)e(and)h
-(the)h(input)d(lev)m(el)i(is)g(the)g(error.)56 b(Normal)35
-b(error)g(di\013usion)d(adds)j(part)150 847 y(of)i(this)f(error)g(to)i
-(the)f(adjoining)d(pixels)h(in)h(the)h(next)g(column)e(and)i(the)g
-(next)g(ro)m(w)g(\(the)g(algorithm)150 956 y(simply)g(scans)i(eac)m(h)h
-(ro)m(w)f(in)f(turn,)i(nev)m(er)g(bac)m(king)f(up\).)66
-b(The)38 b(error)h(adds)f(up)g(un)m(til)g(it)g(reac)m(hes)j(a)150
-1066 y(threshold)24 b(\(half)h(of)h(the)f(full)f(output)h(lev)m(el,)h
-(or)g(32768\),)j(at)e(whic)m(h)d(p)s(oin)m(t)h(a)h(dot)f(is)g(output,)i
-(the)e(output)150 1176 y(is)k(subtracted)i(from)f(the)g(curren)m(t)g(v)
--5 b(alue,)30 b(and)g(the)h(\(no)m(w)f(negativ)m(e\))i(error)e(is)g
-(di\013used)e(similarly)-8 b(.)275 1316 y(Error)43 b(di\013usion)f(w)m
-(orks)i(quite)g(w)m(ell)f(in)g(general,)48 b(but)c(it)g(tends)f(to)j
-(generate)f(artifacts)g(whic)m(h)150 1426 y(usually)26
-b(app)s(ear)i(as)h(w)m(orm-lik)m(e)f(lines)f(or)h(areas)i(of)e
-(anomalous)h(densit)m(y)-8 b(.)39 b(I)29 b(ha)m(v)m(e)g(devised)f(some)
-h(w)m(a)m(ys,)150 1536 y(as)i(describ)s(ed)d(b)s(elo)m(w,)i(of)g
-(ameliorating)g(these)h(artifacts.)275 1677 y(There)40
-b(are)g(t)m(w)m(o)i(sub-classes)e(of)h(error)f(di\013usion)e(that)j(w)m
-(e)g(use)f(here,)j(`random')d(and)g(`h)m(ybrid'.)150
-1786 y(One)c(of)h(the)g(tec)m(hniques)g(that)g(w)m(e)h(use)e(to)i
-(ameliorate)f(the)g(artifacts)g(is)f(to)i(use)e(a)i(fuzzy)f(threshold)
-150 1896 y(rather)d(than)h(the)f(hard)g(threshold)f(of)h(half)g(of)g
-(the)h(output)f(lev)m(el.)53 b(Random)34 b(error)g(di\013usion)e(uses)i
-(a)150 2005 y(pseudo-random)23 b(n)m(um)m(b)s(er)h(to)h(p)s(erturb)e
-(the)i(threshold,)f(while)f(h)m(ybrid)g(error)h(di\013usion)e(uses)i(a)
-h(matrix.)150 2115 y(Hybrid)36 b(error)h(di\013usion)e(w)m(ork)m(ed)j
-(v)m(ery)g(p)s(o)s(orly)e(in)g(3.1.3,)41 b(and)c(I)h(couldn't)e
-(\014gure)h(out)h(wh)m(y)f(un)m(til)f(I)150 2225 y(found)29
-b(a)i(bug.)40 b(It)30 b(no)m(w)h(w)m(orks)f(v)m(ery)h(w)m(ell.)275
-2365 y(There)24 b(is)g(one)h(additional)e(v)-5 b(arian)m(t)24
-b(\(on)h(b)s(oth)f(sub-classes\),)i(called)e(`adaptiv)m(e)i(h)m(ybrid')
-c(and)j(`adap-)150 2475 y(tiv)m(e)33 b(random'.)49 b(The)32
-b(adaptiv)m(e)h(v)-5 b(arian)m(t)33 b(tak)m(es)i(adv)-5
-b(an)m(tage)35 b(of)e(the)g(fact)h(that)g(the)f(patterns)g(that)h(or-)
-150 2585 y(dered)g(dithering)e(create)k(are)f(less)f(visible)e(at)k(v)m
-(ery)f(lo)m(w)f(densities,)g(while)f(the)h(artifacts)h(created)h(b)m(y)
-150 2694 y(error)d(di\013usion)d(are)j(more)h(ob)5 b(jectionable)32
-b(at)i(lo)m(w)f(densities.)47 b(A)m(t)34 b(lo)m(w)f(densities,)f
-(therefore,)j(it)d(uses)150 2804 y(ordered)e(dithering;)e(at)j(higher)e
-(densities)g(it)h(uses)g(error)g(di\013usion.)275 2945
-y(Handling)42 b(m)m(ultiple)h(output)h(lev)m(els)h(mak)m(es)h(life)d(a)
-i(bit)f(more)h(complicated.)84 b(In)44 b(principle,)h(it)150
-3054 y(shouldn't)32 b(b)s(e)i(m)m(uc)m(h)g(harder:)48
-b(simply)32 b(\014gure)i(out)g(what)g(the)h(ratio)f(b)s(et)m(w)m(een)h
-(the)g(a)m(v)-5 b(ailable)33 b(output)150 3164 y(lev)m(els)c(is)f(and)h
-(ha)m(v)m(e)h(m)m(ultiple)d(thresholds.)39 b(In)29 b(practice,)h
-(getting)g(these)f(righ)m(t)g(in)m(v)m(olv)m(es)h(a)f(lot)h(of)f(trial)
-150 3273 y(and)j(error.)48 b(The)32 b(other)h(thing)f(that's)i(imp)s
-(ortan)m(t)e(is)f(to)j(maximize)e(the)h(n)m(um)m(b)s(er)e(of)i(dots)g
-(that)h(ha)m(v)m(e)150 3383 y(some)d(ink.)39 b(This)29
-b(will)e(reduce)k(the)f(amoun)m(t)h(of)g(sp)s(ec)m(kling.)39
-b(More)31 b(on)f(this)f(later.)275 3524 y(The)i(next)i(question:)43
-b(ho)m(w)33 b(do)f(w)m(e)g(handle)f(blac)m(k)h(when)g(prin)m(ting)e(in)
-h(color?)46 b(Blac)m(k)33 b(ink)e(is)g(m)m(uc)m(h)150
-3634 y(dark)m(er)j(than)h(colored)f(inks.)52 b(It's)35
-b(p)s(ossible)d(to)j(pro)s(duce)e(blac)m(k)i(b)m(y)f(adding)f(some)i
-(mixture)e(of)i(cy)m(an,)150 3743 y(magen)m(ta,)24 b(and)c(y)m(ello)m
-(w|in)f(principle.)34 b(In)20 b(practice,)j(the)e(blac)m(k)f(really)g
-(isn't)f(v)m(ery)i(blac)m(k,)i(and)c(di\013eren)m(t)150
-3853 y(inks)38 b(and)h(di\013eren)m(t)g(pap)s(ers)g(will)e(pro)s(duce)h
-(di\013eren)m(t)h(color)h(casts.)70 b(Ho)m(w)m(ev)m(er,)44
-b(b)m(y)39 b(using)f(CMY)i(to)150 3962 y(pro)s(duce)f(gra)m(y)-8
-b(,)44 b(w)m(e)d(can)g(output)e(a)i(lot)f(more)h(dots!)70
-b(This)38 b(mak)m(es)j(for)f(a)h(m)m(uc)m(h)f(smo)s(other)g(image.)150
-4072 y(What's)35 b(more,)g(one)f(cy)m(an,)i(one)f(magen)m(ta,)i(and)c
-(one)h(y)m(ello)m(w)g(dot)h(pro)s(duce)d(less)i(darkness)f(than)h(one)
-150 4181 y(blac)m(k)29 b(dot,)i(so)e(w)m(e're)i(outputting)d(that)i
-(man)m(y)g(more)g(dots.)40 b(Better)31 b(y)m(et,)g(with)d(6)i(or)g(7)g
-(color)f(prin)m(ters,)150 4291 y(w)m(e)34 b(ha)m(v)m(e)h(to)f(output)f
-(ev)m(en)h(more)g(ligh)m(t)f(ink)f(dots.)51 b(So)33 b(Epson)g(St)m
-(ylus)f(Photo)i(prin)m(ters)e(can)i(pro)s(duce)150 4401
-y(really)24 b(smo)s(oth)h(gra)m(ys|if)g(w)m(e)h(do)f(ev)m(erything)g
-(righ)m(t.)39 b(The)25 b(righ)m(t)g(idea)g(is)f(to)i(use)f(CMY)g(at)h
-(lo)m(w)m(er)g(blac)m(k)150 4510 y(lev)m(els,)31 b(and)f(gradually)f
-(mix)g(in)h(blac)m(k)g(as)h(the)g(o)m(v)m(erall)g(amoun)m(t)g(of)g(ink)
-f(increases,)g(so)h(the)g(blac)m(k)g(dots)150 4620 y(don't)f(really)g
-(b)s(ecome)g(visible)e(within)g(the)j(ink)e(mass.)275
-4761 y(V)-8 b(ariable)25 b(dot)i(sizes)f(are)g(handled)f(b)m(y)h
-(dividing)d(the)j(range)h(b)s(et)m(w)m(een)g(0)f(and)g(65536)i(in)m(to)
-f(segmen)m(ts.)150 4870 y(Eac)m(h)i(segmen)m(t)g(can)g(either)f
-(represen)m(t)g(a)h(range)f(in)f(whic)m(h)h(all)f(of)h(one)h(kind)d(of)
-j(ink)e(\(color)h(and/or)h(dot)150 4980 y(size\))38 b(is)e(used,)j
-(with)d(v)-5 b(arying)36 b(amoun)m(ts)i(of)g(ink,)g(or)f(a)h
-(transition)e(region)h(b)s(et)m(w)m(een)h(inks,)g(in)e(whic)m(h)150
-5089 y(equal)30 b(n)m(um)m(b)s(ers)f(of)i(dots)f(are)h(prin)m(ted)e
-(but)h(the)h(amoun)m(t)f(of)h(eac)m(h)h(ink)d(will)f(b)s(e)i(adjusted)f
-(throughout)150 5199 y(the)i(range.)41 b(Eac)m(h)31 b(range)f(is)g
-(represen)m(ted)g(b)m(y)g(four)g(n)m(um)m(b)s(ers:)199
-5340 y(1.)61 b(b)s(ottom)31 b(of)f(the)h(range)p eop
-%%Page: 36 41
-36 40 bop 150 -116 a Fu(App)s(endix)28 b(A:)i(Dithering)2590
-b(36)199 299 y(2.)61 b(top)31 b(of)f(the)h(range)199
-432 y(3.)61 b(v)-5 b(alue)30 b(of)g(the)h(ligh)m(ter)f(ink)199
-565 y(4.)61 b(v)-5 b(alue)30 b(of)g(the)h(dark)m(er)f(ink)275
-722 y(In)f(addition,)g(the)i(bit)e(patterns)i(and)e(whic)m(h)h(t)m(yp)s
-(e)g(of)h(ink)e(are)i(also)f(represen)m(ted,)h(but)e(they)i(don't)150
-831 y(a\013ect)h(the)f(actual)f(algorithm.)275 964 y(As)i(men)m(tioned)
-f(ab)s(o)m(v)m(e,)j(the)e(basic)g(algorithm)f(is)g(the)h(same)h
-(whether)e(w)m(e)i(use)f(ordered)f(dither)g(or)150 1074
-y(error)f(di\013usion.)38 b(W)-8 b(e)32 b(p)s(erform)d(the)h(follo)m
-(wing)f(steps)h(on)g(eac)m(h)i(color)e(of)h(eac)m(h)h(pixel:)199
-1207 y(1.)61 b(Compute)34 b(the)h(v)-5 b(alue)34 b(of)g(the)h
-(particular)e(color)h(w)m(e're)h(prin)m(ting.)51 b(This)33
-b(isn't)g(usually)f(the)j(pure)330 1316 y(CMY)f(v)-5
-b(alue;)36 b(it's)d(adjusted)h(to)g(impro)m(v)m(e)g(saturation)g(and)f
-(to)i(limit)d(the)i(use)g(of)g(blac)m(k)g(in)f(ligh)m(t)330
-1426 y(toned)e(regions)e(\(to)j(a)m(v)m(oid)f(sp)s(ec)m(kling\).)199
-1559 y(2.)61 b(Find)29 b(the)h(range)h(con)m(taining)f(this)f(v)-5
-b(alue.)199 1692 y(3.)61 b(Compute)26 b(where)h(this)e(v)-5
-b(alue)27 b(lies)e(within)g(the)i(range.)40 b(W)-8 b(e)28
-b(scale)f(the)g(endp)s(oin)m(ts)e(b)s(et)m(w)m(een)i(0)h(and)330
-1802 y(65536)37 b(for)d(this)g(purp)s(ose.)51 b(So)35
-b(for)f(example,)i(if)d(the)i(b)s(ottom)g(of)f(the)h(range)g(is)f
-(10,000)j(and)d(the)330 1911 y(top)g(of)g(the)g(range)g(is)f(20,000,)k
-(and)d(the)g(v)-5 b(alue)33 b(is)g(12,500,)k(w)m(e're)e(1/4)g(of)f(the)
-g(w)m(a)m(y)g(b)s(et)m(w)m(een)h(the)330 2021 y(b)s(ottom)c(and)e(the)i
-(top)g(of)f(the)h(range,)g(so)f(our)g(scale)h(p)s(oin)m(t)e(is)h
-(16384.)199 2154 y(4.)61 b(Compute)35 b(the)h(\\virtual)e(v)-5
-b(alue".)56 b(The)35 b(virtual)f(v)-5 b(alue)35 b(is)g(the)h(distance)f
-(b)s(et)m(w)m(een)h(the)g(v)-5 b(alue)35 b(of)330 2264
-y(the)28 b(ligh)m(ter)f(and)h(the)g(v)-5 b(alue)28 b(of)g(the)g(dark)m
-(er)g(ink.)38 b(So)28 b(if)f(the)i(v)-5 b(alue)27 b(of)h(the)g(ligh)m
-(t)g(ink)e(is)h(32768)k(and)330 2373 y(the)i(dark)f(ink)f(is)h(65536,)k
-(w)m(e)d(compute)g(a)g(virtual)e(v)-5 b(alue)33 b(scaled)f
-(appropriately)f(b)s(et)m(w)m(een)i(these)330 2483 y(t)m(w)m(o)f(v)-5
-b(alues,)30 b(whic)m(h)f(is)g(40960)k(in)c(this)g(case.)199
-2616 y(5.)61 b(Using)24 b(either)h(error)f(di\013usion)e(or)j(ordered)g
-(dither,)f(the)i(standard)e(threshold)f(is)h(1/2)i(of)f(the)g(v)-5
-b(alue)330 2725 y(\(20480)32 b(in)c(this)g(case\).)41
-b(Using)29 b(ordered)f(dither,)h(w)m(e)g(w)m(an)m(t)h(to)g(compute)g(a)
-f(v)-5 b(alue)29 b(b)s(et)m(w)m(een)h(0)g(and)330 2835
-y(40960)j(that)f(w)m(e)g(will)d(compare)i(the)h(input)d(v)-5
-b(alue)31 b(against)g(to)h(decide)f(whether)g(to)h(prin)m(t.)42
-b(Using)330 2945 y(pure)29 b(error)h(di\013usion,)e(w)m(e)i(w)m(ould)f
-(compare)i(the)f(accum)m(ulated)h(error)f(against)g(20480)j(to)e
-(decide)330 3054 y(whether)36 b(to)h(prin)m(t.)57 b(In)36
-b(practice,)i(w)m(e)f(use)f(the)g(same)h(matrix)f(metho)s(d)g(to)h
-(decide)e(whether)h(to)330 3164 y(prin)m(t.)h(The)25
-b(correct)h(amoun)m(t)f(of)g(ink)e(will)f(b)s(e)i(prin)m(ted)g(this)f
-(w)m(a)m(y)-8 b(,)28 b(but)c(w)m(e)h(minimize)d(the)j(squiggly)330
-3273 y(lines)d(c)m(haracteristic)j(of)f(error)f(di\013usion)e(b)m(y)j
-(dithering)e(the)i(threshold)e(in)h(this)g(fashion.)37
-b(A)24 b(future)330 3383 y(enhancemen)m(t)29 b(will)c(allo)m(w)j(us)f
-(to)i(con)m(trol)g(the)f(amoun)m(t)h(of)f(dithering)e(applied)g(to)j
-(the)f(threshold.)275 3540 y(The)35 b(matrices)h(w)m(ere)h(generated)g
-(b)m(y)f(Thomas)f(T)-8 b(onino)36 b Fr(<ttonino@bio.vu.nl>)30
-b Fu(with)35 b(an)h(algo-)150 3649 y(rithm)30 b(of)j(his)d(devising.)44
-b(The)31 b(algorithm)g(is)g(designed)g(to)i(maximize)e(the)h(spacing)f
-(b)s(et)m(w)m(een)i(dots)f(at)150 3759 y(an)m(y)25 b(giv)m(en)g(densit)
-m(y)e(b)m(y)i(searc)m(hing)f(the)h(matrix)f(for)g(holes)g(and)g
-(placing)g(a)h(dot)g(in)e(the)i(largest)g(a)m(v)-5 b(ailable)150
-3868 y(hole.)44 b(It)31 b(requires)f(careful)h(selection)h(of)f
-(initial)e(p)s(oin)m(ts)i(to)h(ac)m(hiev)m(e)h(go)s(o)s(d)e(results,)g
-(and)g(is)f(v)m(ery)i(time)150 3978 y(consuming.)64 b(F)-8
-b(or)39 b(b)s(est)f(results,)h(a)g(di\013eren)m(t)f(matrix)g(m)m(ust)g
-(b)s(e)g(used)g(for)g(mo)s(des)g(with)f(2:1)i(asp)s(ect)150
-4088 y(ratio)28 b(\(e.g.)41 b(1440x720\))31 b(than)d(for)f(1:1)i(\(e.)
-41 b(g.)f(720x720\).)j(It)28 b(is)f(essen)m(tial)g(with)g(an)m(y)h(of)g
-(these)g(matrices)150 4197 y(that)j(ev)m(ery)g(p)s(oin)m(t)e(b)s(e)h
-(used.)40 b(Skipping)27 b(p)s(oin)m(ts)j(generates)h(lo)m(w-frequency)f
-(noise.)275 4330 y(It's)24 b(essen)m(tial)f(to)i(use)e(di\013eren)m(t)h
-(matrices)f(for)h(deciding)e(whether)h(to)i(prin)m(t)d(and)h(for)h
-(deciding)e(what)150 4440 y(color)31 b(\(dark)g(or)h(ligh)m(t\))f(to)h
-(prin)m(t.)42 b(This)29 b(should)g(b)s(e)i(ob)m(vious;)g(the)h
-(decision)e(ab)s(out)h(whether)f(to)i(prin)m(t)150 4549
-y(at)39 b(all)e(should)f(b)s(e)h(as)h(indep)s(enden)m(t)e(as)i(p)s
-(ossible)e(from)h(the)h(decision)f(ab)s(out)g(what)h(color)g(to)h(prin)
-m(t,)150 4659 y(b)s(ecause)h(an)m(y)g(bias)f(will)f(result)g(in)h
-(excess)i(ligh)m(t)e(or)h(dark)g(ink)e(b)s(eing)h(prin)m(ted,)i
-(shifting)d(the)i(tonal)150 4769 y(balance.)h(W)-8 b(e)32
-b(actually)e(use)h(the)g(same)g(matrices,)g(but)e(w)m(e)j(shift)d(them)
-h(v)m(ertically)g(and)g(horizon)m(tally)-8 b(.)150 4878
-y(Assuming)29 b(that)i(the)f(matrices)h(are)f(not)h(self-correlated,)g
-(this)e(will)f(yield)g(go)s(o)s(d)i(results.)275 5011
-y(The)35 b(ranges)i(are)f(computed)g(from)g(a)h(list)d(of)j(ink)e(v)-5
-b(alues)35 b(\(b)s(et)m(w)m(een)i(0)g(and)e(1)i(for)f(eac)m(h)h(p)s
-(ossible)150 5121 y(com)m(bination)c(of)i(dot)f(size)g(and)f(ink)g
-(tone,)j(where)d(the)i(v)-5 b(alue)33 b(represen)m(ts)h(the)g(darkness)
-f(of)i(the)f(ink\))150 5230 y(and)e(the)g(desired)f(maxim)m(um)g
-(densit)m(y)g(of)i(the)f(ink.)45 b(This)31 b(is)g(done)h(in)f(dither)p
-2872 5230 28 4 v 31 w(set)p 3014 5230 V 34 w(ranges,)i(and)e(needs)150
-5340 y(more)g(do)s(cumen)m(tation.)p eop
-%%Page: 37 42
-37 41 bop 150 -116 a Fu(App)s(endix)28 b(A:)i(Dithering)2590
-b(37)275 299 y(I)34 b(stated)i(earlier)e(that)i(I'v)m(e)g(t)m(w)m(eak)m
-(ed)h(the)e(basic)g(error)f(di\013usion)f(algorithm.)53
-b(Here's)36 b(what)f(I'v)m(e)150 408 y(done)30 b(to)h(impro)m(v)m(e)f
-(it:)199 547 y(1.)61 b(W)-8 b(e)28 b(use)e(a)h(v)-5 b(ariable)26
-b(threshold)f(to)i(decide)f(when)g(to)i(prin)m(t,)e(as)h(discussed)e
-(ab)s(o)m(v)m(e.)40 b(This)25 b(do)s(es)i(t)m(w)m(o)330
-657 y(things)i(for)i(us:)40 b(it)30 b(reduces)h(the)f(sligh)m(tly)f
-(squiggly)h(diagonal)f(lines)g(that)i(are)g(the)g(mark)g(of)f(error)330
-767 y(di\013usion;)e(and)i(it)g(allo)m(ws)g(us)g(to)h(la)m(y)g(do)m(wn)
-f(some)h(ink)e(ev)m(en)i(in)e(v)m(ery)i(ligh)m(t)f(areas)h(near)g(the)f
-(edge)330 876 y(of)35 b(the)h(image.)55 b(The)35 b(squiggly)f(lines)g
-(that)h(error)g(di\013usion)e(algorithms)h(tend)h(to)h(generate)h(are)
-330 986 y(caused)28 b(b)m(y)f(the)h(gradual)f(accum)m(ulation)g(of)h
-(error.)40 b(This)25 b(error)j(is)e(partially)g(added)h(horizon)m
-(tally)330 1095 y(and)j(partially)e(v)m(ertically)-8
-b(.)40 b(The)30 b(horizon)m(tal)g(accum)m(ulation)g(results)f(in)g(a)i
-(dot)f(ev)m(en)m(tually)g(b)s(eing)330 1205 y(prin)m(ted.)55
-b(The)35 b(v)m(ertical)h(accum)m(ulation)g(results)e(in)g(a)i(dot)g
-(getting)h(laid)d(do)m(wn)h(in)f(roughly)h(the)330 1315
-y(same)28 b(horizon)m(tal)f(p)s(osition)f(in)g(the)i(next)g(ro)m(w.)40
-b(The)27 b(diagonal)g(squigglies)f(result)g(from)h(the)h(error)330
-1424 y(b)s(eing)35 b(added)g(to)i(pixels)d(one)i(forw)m(ard)f(and)h
-(one)g(b)s(elo)m(w)f(the)h(curren)m(t)g(pixel;)h(these)g(lines)d(slop)s
-(e)330 1534 y(from)c(the)g(top)h(righ)m(t)f(to)h(the)g(b)s(ottom)f
-(left)h(of)f(the)h(image.)330 1670 y(Error)37 b(di\013usion)e(also)j
-(results)e(in)h(pale)g(areas)i(b)s(eing)d(completely)i(white)e(near)i
-(the)g(top)g(left)g(of)330 1780 y(the)29 b(image)g(\(the)g(origin)e(of)
-i(the)f(prin)m(ting)f(co)s(ordinates\).)40 b(This)27
-b(is)h(b)s(ecause)g(enough)h(error)f(has)g(to)330 1890
-y(accum)m(ulate)33 b(for)g(an)m(ything)f(at)h(all)e(to)j(get)f(prin)m
-(ted.)46 b(In)32 b(v)m(ery)h(pale)f(areas)h(it)f(tak)m(es)i(quite)e(a)h
-(long)330 1999 y(time)d(to)h(build)d(up)h(an)m(ything)h(prin)m(table)e
-(at)j(all;)f(this)f(results)g(in)g(the)i(bare)f(sp)s(ots.)330
-2136 y(Randomizing)f(the)i(threshold)e(somewhat)i(breaks)f(up)g(the)h
-(diagonals)f(to)h(some)g(degree)h(b)m(y)e(ran-)330 2245
-y(domizing)40 b(the)j(exact)g(lo)s(cation)e(that)i(the)f(accum)m
-(ulated)g(output)g(crosses)g(the)g(threshold.)74 b(It)330
-2355 y(reduces)29 b(the)h(false)f(white)g(areas)h(b)m(y)f(allo)m(wing)g
-(some)h(dots)f(to)h(b)s(e)f(prin)m(ted)f(ev)m(en)j(when)d(the)i(accu-)
-330 2465 y(m)m(ulated)d(output)g(lev)m(el)g(is)f(v)m(ery)h(lo)m(w.)40
-b(It)27 b(do)s(esn't)g(result)f(in)g(excess)i(ink)e(b)s(ecause)h(the)g
-(full)e(output)330 2574 y(lev)m(el)30 b(is)f(still)g(subtracted)h(and)g
-(di\013used.)330 2711 y(Excessiv)m(e)41 b(randomization)e(leads)h(to)h
-(blobs)d(at)j(high)e(densities.)69 b(Therefore,)43 b(as)d(the)h(densit)
-m(y)330 2821 y(increases,)30 b(the)h(degree)g(of)f(randomization)g
-(decreases.)199 2957 y(2.)61 b(Alternating)36 b(scan)h(direction)f(b)s
-(et)m(w)m(een)h(ro)m(ws)g(\(\014rst)g(ro)m(w)g(is)f(scanned)g(left)h
-(to)h(righ)m(t,)g(second)f(is)330 3067 y(scanned)h(righ)m(t)g(to)h
-(left,)h(and)d(so)i(on\).)64 b(This)37 b(also)h(helps)f(break)h(up)f
-(white)g(areas,)42 b(and)37 b(it)h(also)330 3176 y(seems)30
-b(to)g(break)f(up)g(squigglies)f(a)i(bit.)39 b(F)-8 b(urthermore,)30
-b(it)f(eliminates)f(directional)g(biases)h(in)f(the)330
-3286 y(horizon)m(tal)g(direction.)39 b(This)26 b(isn't)i(necessary)h
-(for)f(ordered)g(dither,)g(but)f(it)h(do)s(esn't)g(h)m(urt)g(either.)
-199 3423 y(3.)61 b(Di\013using)25 b(the)i(error)g(in)m(to)g(more)g
-(pixels.)38 b(Instead)27 b(of)g(di\013using)d(the)k(en)m(tire)f(error)f
-(in)m(to)h(\()p Fc(X)7 b Fu(+)q(1)p Fc(;)15 b(Y)21 b
-Fu(\))330 3532 y(and)37 b(\()p Fc(X)r(;)15 b(Y)21 b Fu(+1\),)41
-b(w)m(e)d(di\013use)e(it)h(in)m(to)h(\()p Fc(X)7 b Fu(+1)p
-Fc(;)15 b(Y)21 b Fu(\),)40 b(\()p Fc(X)7 b Fu(+)q Fc(K)q(;)15
-b(Y)21 b Fu(+1\),)40 b(\()p Fc(X)r(;)15 b(Y)21 b Fu(+1\),)41
-b(\()p Fc(X)33 b Fs(\000)24 b Fc(K)q(;)15 b(Y)21 b Fu(+1\))330
-3642 y(where)27 b Fc(K)34 b Fu(dep)s(ends)25 b(up)s(on)h(the)h(output)g
-(lev)m(el)g(\(it)g(nev)m(er)h(exceeds)g(ab)s(out)f(10)h(dots,)h(and)d
-(is)h(greater)330 3751 y(at)32 b(higher)d(output)h(lev)m(els\).)42
-b(This)29 b(really)h(reduces)g(squigglies)f(and)h(graininess.)40
-b(The)31 b(amoun)m(t)g(of)330 3861 y(this)j(spread)h(can)h(b)s(e)f(con)
-m(trolled;)j(for)e(line)d(art,)38 b(it)d(should)f(b)s(e)h(less)g(than)g
-(for)g(photographs)g(\(of)330 3971 y(course,)k(line)d(art)h(do)s(esn't)
-g(usually)e(con)m(tain)i(m)m(uc)m(h)g(ligh)m(t)f(color,)k(but)c(the)h
-Fi(error)h Fu(v)-5 b(alue)36 b(can)i(b)s(e)330 4080 y(small)28
-b(in)h(places!\))41 b(In)29 b(addition)f(to)j(requiring)c(more)j
-(computation,)g(a)h(wide)d(ink)h(spread)g(results)330
-4190 y(in)d(patterning)g(at)i(high)d(dot)j(densities)d(\(note)j(that)f
-(the)h(dot)f(densit)m(y)f(can)h(b)s(e)g(high)e(ev)m(en)j(in)e(fairly)
-330 4299 y(pale)k(regions)g(if)f(m)m(ultiple)f(dot)j(sizes)f(are)h(in)e
-(use\).)199 4436 y(4.)61 b(Don't)34 b(la)m(y)f(do)m(wn)g(an)m(y)g
-(colored)g(ink)f(if)g(w)m(e're)h(la)m(ying)g(do)m(wn)f(blac)m(k)h(ink.)
-48 b(There's)32 b(no)h(p)s(oin)m(t;)h(the)330 4546 y(colored)j(ink)f(w)
-m(on't)i(sho)m(w.)60 b(W)-8 b(e)39 b(still)c(pretend)h(that)i(w)m(e)f
-(did)f(for)g(purp)s(oses)g(of)h(error)g(di\013usion)330
-4655 y(\(otherwise)29 b(excessiv)m(e)h(error)f(will)e(build)f(up,)j
-(and)g(will)d(tak)m(e)31 b(a)f(long)f(time)g(to)h(clear,)g(resulting)d
-(in)330 4765 y(hea)m(vy)j(bleeding)e(of)i(ink)e(in)m(to)h(surrounding)d
-(areas,)31 b(whic)m(h)d(is)h(v)m(ery)h(ugly)e(indeed\),)h(but)g(w)m(e)h
-(don't)330 4874 y(b)s(other)c(w)m(asting)g(the)g(ink.)38
-b(Ho)m(w)27 b(w)m(ell)e(this)h(will)d(do)j(with)f(v)-5
-b(ariable)25 b(dot)i(size)f(remains)f(to)i(b)s(e)f(seen.)199
-5011 y(5.)61 b(Ov)m(ersampling.)38 b(This)26 b(is)h(ho)m(w)h(to)h(prin)
-m(t)d(1440x720)31 b(with)c(Epson)g(St)m(ylus)g(prin)m(ters.)38
-b(Prin)m(ting)26 b(full)330 5121 y(densit)m(y)g(at)i(1440x720)i(will)25
-b(result)h(in)g(excess)h(ink)f(b)s(eing)g(laid)f(do)m(wn.)39
-b(The)27 b(tric)m(k)g(is)f(to)i(prin)m(t)e(only)330 5230
-y(ev)m(ery)34 b(other)f(dot.)49 b(W)-8 b(e)34 b(still)d(compute)i(the)h
-(error)e(as)i(though)e(w)m(e)i(prin)m(ted)d(ev)m(ery)j(dot.)49
-b(It)33 b(turns)330 5340 y(out)c(that)h(randomizing)d(whic)m(h)g(dots)i
-(are)h(prin)m(ted)d(results)h(in)f(v)m(ery)j(sp)s(ec)m(kled)e(output.)
-40 b(This)27 b(can)p eop
-%%Page: 38 43
-38 42 bop 150 -116 a Fu(App)s(endix)28 b(A:)i(Dithering)2590
-b(38)330 299 y(b)s(e)38 b(tak)m(en)i(to)s(o)f(far;)k(o)m(v)m
-(ersampling)38 b(at)i(1440x1440)i(or)d(1440x2880)j(virtual)37
-b(resolution)g(results)330 408 y(in)g(other)j(problems.)64
-b(Ho)m(w)m(ev)m(er,)43 b(at)c(presen)m(t)g(1440x1440)k(\(whic)m(h)37
-b(is)h(more)h(accurately)h(called)330 518 y Fr(")p Fu(1440x720)j
-(enhanced)p Fr(")p Fu(,)e(as)f(the)g(Epson)f(prin)m(ters)f(cannot)j
-(prin)m(t)d(1440)k(ro)m(ws)d(p)s(er)g(inc)m(h\))g(do)s(es)330
-628 y(quite)30 b(w)m(ell,)f(although)h(it's)g(slo)m(w.)275
-808 y(What)36 b(ab)s(out)f(m)m(ultiple)e(output)i(lev)m(els?)55
-b(F)-8 b(or)36 b(6)g(and)f(7)h(color)f(prin)m(ters,)h(simply)d(using)g
-(di\013eren)m(t)150 918 y(threshold)d(lev)m(els)h(has)g(a)h(problem:)42
-b(the)32 b(pale)f(inks)f(ha)m(v)m(e)j(trouble)d(b)s(eing)g(seen)i(when)
-f(a)h(lot)f(of)h(dark)m(er)150 1027 y(ink)i(is)g(b)s(eing)f(prin)m
-(ted.)54 b(So)35 b(rather)g(than)f(just)h(using)f(the)h(output)f(lev)m
-(el)h(of)g(the)h(particular)d(color)i(to)150 1137 y(decide)i(whic)m(h)e
-(ink)h(to)i(prin)m(t,)g(w)m(e)g(lo)s(ok)e(at)i(the)g(total)g(densit)m
-(y)e(\(sum)h(of)g(all)f(output)h(lev)m(els\).)61 b(If)37
-b(the)150 1246 y(densit)m(y's)31 b(high)f(enough,)i(w)m(e)g(prefer)e
-(to)j(use)e(the)h(dark)e(ink.)43 b(Sp)s(ec)m(kling)30
-b(is)g(less)h(visible)e(when)i(there's)150 1356 y(a)g(lot)f(of)h(ink,)e
-(an)m(yw)m(a)m(y)-8 b(.)42 b(I)31 b(ha)m(v)m(en't)g(y)m(et)h(\014gured)
-d(out)i(what)f(to)h(do)f(for)h(m)m(ultiple)d(lev)m(els)i(of)g(one)h
-(color.)275 1504 y(Y)-8 b(ou'll)34 b(note)h(that)h(I)f(ha)m(v)m(en't)h
-(quoted)f(a)h(single)d(source)j(on)e(color)i(or)f(prin)m(ting)d(theory)
--8 b(.)56 b(I)34 b(simply)150 1614 y(did)29 b(all)g(of)h(this)g
-(empirically)-8 b(.)275 1762 y(There)33 b(are)h(v)-5
-b(arious)33 b(other)h(tric)m(ks)g(to)h(reduce)e(sp)s(ec)m(kling.)50
-b(One)33 b(that)i(I'v)m(e)g(seen)f(is)e(to)j(reduce)f(the)150
-1872 y(amoun)m(t)f(of)f(ink)f(prin)m(ted)g(in)g(regions)h(where)g(one)h
-(color)f(\(particularly)f(cy)m(an,)i(whic)m(h)e(is)h(p)s(erceiv)m(ed)g
-(as)150 1982 y(the)d(dark)m(est\))i(is)d(v)m(ery)h(pale.)40
-b(This)28 b(do)s(es)h(reduce)g(sp)s(ec)m(kling)f(all)g(righ)m(t,)h(but)
-f(it)h(also)g(results)f(in)g(strange)150 2091 y(tonal)i(curv)m(es)h
-(and)f(w)m(eird)f(\(to)i(m)m(y)g(ey)m(e\))h(colors.)275
-2240 y(Before)43 b(an)m(y)h(dither)d(routine)h(is)g(used,)j
-Fr(init_dither\(\))40 b Fu(m)m(ust)i(b)s(e)h(called.)77
-b(This)41 b(tak)m(es)k(three)150 2349 y(argumen)m(ts:)f(the)32
-b(input)e(width)g(\(n)m(um)m(b)s(er)h(of)h(pixels)e(in)g(the)i
-(input\),)f(the)h(output)g(width)e(\(n)m(um)m(b)s(er)h(of)150
-2459 y(pixels)e(in)g(the)h(output\),)h(and)f(a)g Fr(vars_t)f
-Fu(structure)h(con)m(taining)g(the)g(parameters)h(for)f(the)h(prin)m(t)
-e(job.)275 2607 y Fr(init_dither\(\))38 b Fu(returns)i(a)i(p)s(oin)m
-(ter)f(to)h(an)g(opaque)g(ob)5 b(ject)43 b(represen)m(ting)e(the)g
-(dither.)74 b(This)150 2717 y(ob)5 b(ject)31 b(is)f(passed)g(as)g(the)h
-(\014rst)e(argumen)m(t)i(to)g(all)f(of)g(the)h(dither-related)e
-(routines.)275 2865 y(After)34 b(a)h(page)g(is)e(fully)f(dithered,)i
-Fr(free_dither\(\))c Fu(m)m(ust)k(b)s(e)g(called)g(to)g(free)h(the)f
-(dither)f(ob)5 b(ject)150 2975 y(and)37 b(p)s(erform)e(an)m(y)j(clean)m
-(up.)61 b(In)36 b(the)i(future,)g(this)e(ma)m(y)i(do)f(more)g(\(suc)m
-(h)h(as)f(\015ush)e(output\).)62 b(This)150 3084 y(arrangemen)m(t)27
-b(p)s(ermits)d(using)g(these)j(routines)e(with)f(programs)i(that)g
-(create)i(m)m(ultiple)c(output)h(pages,)150 3194 y(suc)m(h)30
-b(as)h(GhostScript.)275 3342 y(The)e(dithering)f(routines)i(themselv)m
-(es)g(ha)m(v)m(e)i(a)f(n)m(um)m(b)s(er)e(of)h(con)m(trol)h(knobs)e
-(that)i(con)m(trol)g(in)m(ternal)150 3452 y(asp)s(ects)e(of)g(the)g
-(dithering)d(pro)s(cess.)40 b(These)29 b(knobs)f(are)h(accessible)f
-(via)h(a)g(n)m(um)m(b)s(er)e(of)i(functions)e(that)150
-3562 y(can)k(b)s(e)e(called)h(after)h Fr(init_dither\(\))p
-Fu(.)225 3710 y Fs(\017)60 b Fr(dither_set_density\(\))30
-b Fu(tak)m(es)36 b(a)f(double)f(b)s(et)m(w)m(een)i(0)f(and)g(1)g
-(represen)m(ting)f(the)i(desired)d(ink)330 3820 y(densit)m(y)j(for)g
-(prin)m(ting)e(solid)h(colors.)58 b(This)35 b(is)g(used)h(in)f(a)i(n)m
-(um)m(b)s(er)e(of)h(places)h(in)e(the)h(dithering)330
-3929 y(routine)29 b(to)i(mak)m(e)h(decisions.)225 4071
-y Fs(\017)60 b Fr(dither_set_black_density)o(\(\))16
-b Fu(tak)m(es)24 b(a)f(double)d(b)s(et)m(w)m(een)j(0)g(and)f(1)g
-(represen)m(ting)g(the)g(desired)330 4180 y(ink)g(densit)m(y)h(for)g
-(prin)m(ting)e(blac)m(k)i(ink)f(in)g(color)h(prin)m(ting.)37
-b(This)21 b(is)i(used)f(to)i(balance)f(blac)m(k)h(against)330
-4290 y(color)33 b(ink.)47 b(By)33 b(default,)g(this)f(is)g(equal)h(to)g
-(the)g(densit)m(y)f(set)i(b)m(y)f Fr(dither_set_density\(\))p
-Fu(.)43 b(By)330 4400 y(setting)30 b(it)g(higher,)f(more)i(blac)m(k)f
-(ink)f(will)f(b)s(e)i(prin)m(ted.)39 b(F)-8 b(or)31 b(example,)f(if)f
-(the)i(base)f(densit)m(y)g(is)f(.4)330 4509 y(and)f(the)h(blac)m(k)g
-(densit)m(y)f(is)g(.8,)i(t)m(wice)f(as)g(m)m(uc)m(h)g(blac)m(k)g(ink)e
-(will)f(b)s(e)j(prin)m(ted)e(as)i(w)m(ould)f(otherwise)330
-4619 y(b)s(e)i(called)f(for.)330 4760 y(This)f(is)g(not)i(used)f(when)f
-(prin)m(ting)f(in)i(mono)s(c)m(hrome.)40 b(When)30 b(prin)m(ting)d
-(mono)s(c)m(hrome,)j(the)g(base)330 4870 y(densit)m(y)g(\()p
-Fr(dither_set_density)p Fu(\))c(should)i(b)s(e)i(adjusted)g
-(appropriately)-8 b(.)225 5011 y Fs(\017)60 b Fr
-(dither_set_ink_budget\(\))25 b Fu(tak)m(es)33 b(an)e(unsigned)e(n)m
-(um)m(b)s(er)h(represen)m(ting)h(the)h(most)f(ink)f(that)330
-5121 y(ma)m(y)f(b)s(e)f(dep)s(osited)f(at)i(a)g(giv)m(en)f(p)s(oin)m
-(t.)39 b(This)27 b(n)m(um)m(b)s(er)g(is)g(arbitrary;)i(the)f(limit)e
-(is)i(computed)g(b)m(y)330 5230 y(summing)e(the)i(size)f(of)h(eac)m(h)h
-(ink)e(dot,)h(whic)m(h)f(is)g(supplied)d(as)k(a)g(parameter)h(in)d
-Fr(dither_set_)p Fm(X)9 b Fr(_)330 5340 y(ranges)p Fu(.)39
-b(By)31 b(default,)f(there)g(is)f(no)i(limit.)p eop
-%%Page: 39 44
-39 43 bop 150 -116 a Fu(App)s(endix)28 b(A:)i(Dithering)2590
-b(39)225 299 y Fs(\017)60 b Fr(dither_set_black_lower\(\))24
-b Fu(tak)m(es)32 b(a)e(double)f(that)i(should)e(b)s(e)h(b)s(et)m(w)m
-(een)h(0)g(and)e(1)i(that)g(rep-)330 408 y(resen)m(ts)39
-b(the)h(lo)m(w)m(est)f(densit)m(y)g(lev)m(el)f(at)i(whic)m(h)e(blac)m
-(k)h(ink)e(will)g(start)i(to)h(mix)e(in)f(with)h(colored)330
-518 y(ink)32 b(to)j(generate)g(gra)m(ys.)51 b(The)33
-b(lo)m(w)m(er)h(this)e(is,)i(the)g(less)f(densit)m(y)f(is)h(required)f
-(to)i(use)f(blac)m(k)h(ink.)330 628 y(Setting)i(this)f(to)s(o)i(lo)m(w)
-g(will)c(result)j(in)f(sp)s(ec)m(kling)f(from)i(blac)m(k)h(dots,)h
-(particularly)c(on)i(6)h(and)f(7)330 737 y(color)30 b(prin)m(ters.)39
-b(Setting)30 b(this)f(to)s(o)i(high)e(will)f(mak)m(e)j(it)f(hard)f(to)i
-(get)g(satisfactory)g(blac)m(k)f(or)g(ma)m(y)330 847
-y(result)f(in)g(sharp)h(transition)e(b)s(et)m(w)m(een)j(blended)e
-(colors)h(and)g(blac)m(k.)41 b(Default:)g(0.0468.)330
-989 y(It)29 b(is)f(imp)s(ortan)m(t)g(to)i(note)f(that)h(since)e(the)h
-(densit)m(y)f(scale)h(is)f(nev)m(er)h(linear)f(\(and)g(since)h(this)e
-(v)-5 b(alue)330 1099 y(is)27 b(adjusted)f(via)i(other)f(things)g(happ)
-s(ening)e(during)g(the)j(dithering)d(pro)s(cess\))j(that)g(this)e(do)s
-(es)i(not)330 1208 y(mean)j(that)g(95\045)g(gra)m(y)h(will)c(use)i(an)m
-(y)h(blac)m(k)g(ink.)41 b(A)m(t)31 b(this)f(setting,)h(there)g(will)d
-(b)s(e)i(no)h(blac)m(k)f(ink)330 1318 y(used)g(un)m(til)e(ab)s(out)i
-(50\045)h(gra)m(y)-8 b(.)330 1461 y(This)29 b(only)g(applies)g(to)i
-(color)f(mo)s(de.)330 1603 y(This)c(v)-5 b(alue)27 b(should)f(b)s(e)h
-(set)h(lo)m(w)m(er)g(for)g(prin)m(ters)e(capable)h(of)h(v)-5
-b(ariable)27 b(dot)h(size,)g(since)f(more)h(dots)330
-1713 y(can)j(b)s(e)e(laid)g(do)m(wn)h(close)h(to)g(eac)m(h)g(other.)225
-1855 y Fs(\017)60 b Fr(dither_set_black_upper\(\))24
-b Fu(tak)m(es)32 b(a)e(double)f(that)i(should)e(b)s(e)h(b)s(et)m(w)m
-(een)h(0)g(and)e(1)i(that)g(rep-)330 1965 y(resen)m(ts)39
-b(the)g(highest)f(densit)m(y)g(lev)m(el)h(at)h(whic)m(h)d(colored)i
-(inks)e(will)g(b)s(e)h(mixed)f(to)j(create)g(gra)m(y)-8
-b(.)330 2074 y(Setting)33 b(this)g(to)s(o)h(lo)m(w)g(will)d(result)i
-(in)f(sp)s(ec)m(kly)h(dark)g(gra)m(ys)i(b)s(ecause)e(there)h(is)f(not)h
-(enough)f(ink)330 2184 y(to)38 b(\014ll)d(all)h(the)i(holes,)g(or)f
-(sharp)f(transition)g(b)s(et)m(w)m(een)i(blended)d(colors)i(and)g(blac)
-m(k)g(if)f(it)h(is)f(to)s(o)330 2293 y(close)31 b(to)h(the)f(v)-5
-b(alue)31 b(of)g(dither)p 1401 2293 28 4 v 32 w(set)p
-1544 2293 V 33 w(blac)m(k)p 1784 2293 V 33 w(upp)s(er\(\).)41
-b(Setting)31 b(this)f(to)s(o)i(high)e(will)e(result)i(in)g(p)s(o)s(or)
-330 2403 y(blac)m(k)h(and)f(dark)g(tone)h(qualit)m(y)-8
-b(.)42 b(Default:)f(0.5.)i(This)29 b(results)g(in)h(10\045)h(and)f
-(dark)m(er)h(gra)m(ys)g(b)s(eing)330 2513 y(prin)m(ted)e(with)g(essen)m
-(tially)g(all)h(blac)m(k.)330 2655 y(This)f(only)g(applies)g(to)i
-(color)f(mo)s(de.)225 2798 y Fs(\017)60 b Fr(dither_set_black_levels\()
-o(\))26 b Fu(tak)m(es)34 b(three)e(doubles)e(that)j(represen)m(t)f(the)
-g(amoun)m(t)h(of)f(cy)m(an,)330 2907 y(magen)m(ta,)g(and)c(y)m(ello)m
-(w)i(resp)s(ectiv)m(ely)f(that)h(are)f(blended)f(to)i(create)h(gra)m(y)
--8 b(.)42 b(The)29 b(defaults)f(are)i(1.0)330 3017 y(for)38
-b(eac)m(h,)k(whic)m(h)37 b(is)g(probably)f(to)s(o)j(lo)m(w)f(for)g
-(most)h(prin)m(ters.)63 b(These)37 b(v)-5 b(alues)38
-b(are)h(adjusted)e(to)330 3126 y(create)31 b(a)f(go)s(o)s(d)f(gra)m(y)h
-(balance.)41 b(Setting)29 b(these)h(to)s(o)g(lo)m(w)f(will)e(result)h
-(in)g(pale)h(ligh)m(t)g(and)g(midtone)330 3236 y(gra)m(ys,)g(with)d(a)i
-(sharp)e(transition)f(to)j(dark)m(er)g(tones)f(as)h(blac)m(k)f(mixes)g
-(in.)38 b(Setting)27 b(them)g(to)s(o)h(high)330 3345
-y(will)19 b(result)i(in)f(o)m(v)m(erly)i(dark)g(gra)m(ys)g(and)f(use)h
-(of)f(to)s(o)i(m)m(uc)m(h)f(ink,)g(p)s(ossibly)d(creating)j
-(bleed-through.)330 3488 y(This)29 b(only)g(applies)g(to)i(color)f(mo)s
-(de.)225 3630 y Fs(\017)60 b Fr(dither_set_randomizers\(\))27
-b Fu(tak)m(es)36 b(four)d(in)m(teger)h(v)-5 b(alues)33
-b(represen)m(ting)g(the)h(degree)h(of)f(ran-)330 3740
-y(domness)24 b(used)h(for)g(cy)m(an,)i(magen)m(ta,)h(y)m(ello)m(w,)f
-(and)d(blac)m(k.)39 b(This)23 b(is)i(used)f(to)i(allo)m(w)f(some)g
-(prin)m(ting)330 3850 y(to)34 b(tak)m(e)i(place)d(in)g(pale)g(areas.)51
-b(Zero)34 b(is)f(the)h(most)g(random;)g(greater)h(than)f(8)g(or)g(so)g
-(giv)m(es)g(v)m(ery)330 3959 y(little)27 b(randomness)h(at)h(all.)39
-b(Defaults)29 b(are)g(0)g(for)g(cy)m(an,)h(magen)m(ta,)h(and)d(y)m
-(ello)m(w,)h(and)f(4)h(for)g(blac)m(k.)330 4069 y(Setting)h(the)h(v)-5
-b(alue)31 b(for)f(blac)m(k)h(to)s(o)g(lo)m(w)g(will)d(result)i(in)f
-(blac)m(k)i(sp)s(ec)m(kling)e(in)g(pale)i(areas.)42 b(Setting)330
-4178 y(v)-5 b(alues)30 b(to)s(o)h(high)e(will)f(result)h(in)g(pale)h
-(areas)h(getting)g(no)f(ink)f(at)i(all.)330 4321 y(This)c(curren)m(tly)
-h(only)g(applies)f(to)i(single)f(dot)h(size)f(in)g(color)h(and)f(blac)m
-(k.)40 b(It)29 b(should)e(b)s(e)h(extended)330 4430 y(to)39
-b(op)s(erate)g(in)d(v)-5 b(ariable)37 b(dot)i(size)f(mo)s(de,)i
-(although)d(actually)h(applying)e(it)i(correctly)g(will)e(b)s(e)330
-4540 y(tric)m(ky)-8 b(.)225 4682 y Fs(\017)60 b Fr
-(dither_set_ink_darkness\()o(\))17 b Fu(tak)m(es)25 b(three)f(doubles)e
-(represen)m(ting)g(the)i(con)m(tribution)e(to)i(p)s(er-)330
-4792 y(ceiv)m(ed)d(darkness)f(of)g(cy)m(an,)k(magen)m(ta,)h(and)20
-b(y)m(ello)m(w.)37 b(This)19 b(is)g(used)h(to)h(help)f(decide)g(when)f
-(to)i(switc)m(h)330 4902 y(b)s(et)m(w)m(een)33 b(ligh)m(t)e(and)h(dark)
-g(inks)f(in)g(6)h(and)g(7)h(color)f(prin)m(ters)f(\(with)g(ligh)m(t)h
-(cy)m(an,)h(ligh)m(t)f(magen)m(ta,)330 5011 y(and)27
-b(p)s(ossibly)d(ligh)m(t)j(y)m(ello)m(w\).)40 b(Setting)27
-b(these)h(to)s(o)g(lo)m(w)g(will)c(result)j(in)f(to)s(o)i(m)m(uc)m(h)g
-(ligh)m(t)e(ink)g(b)s(eing)330 5121 y(laid)j(do)m(wn,)i(creating)h
-(\015at)f(sp)s(ots)g(in)f(the)h(darkness)f(curv)m(es)h(and)g
-(bleed-through.)41 b(Setting)31 b(them)330 5230 y(to)s(o)d(high)f(will)
-e(result)h(in)h(dark)g(ink)f(b)s(eing)g(used)h(in)g(pale)g(areas,)i
-(creating)f(sp)s(ec)m(kle.)40 b(The)27 b(defaults)330
-5340 y(are)33 b(.4)g(for)f(cy)m(an,)h(.3)g(for)f(magen)m(ta,)j(and)d
-(.2)h(for)f(y)m(ello)m(w.)46 b(Dark)33 b(cy)m(an)g(will)c(sho)m(w)k
-(against)f(y)m(ello)m(w)p eop
-%%Page: 40 45
-40 44 bop 150 -116 a Fu(App)s(endix)28 b(A:)i(Dithering)2590
-b(40)330 299 y(m)m(uc)m(h)36 b(more)g(than)g(dark)f(magen)m(ta)j(will)
-33 b(sho)m(w)j(against)g(cy)m(an,)j(since)c(the)h(cy)m(an)h(app)s(ears)
-e(m)m(uc)m(h)330 408 y(dark)m(er)30 b(than)g(the)h(y)m(ello)m(w.)225
-543 y Fs(\017)60 b Fr(dither_set_light_inks\(\))20 b
-Fu(tak)m(es)28 b(three)f(doubles)e(b)s(et)m(w)m(een)i(0)g(and)f(1)g
-(represen)m(ting)g(the)h(ratio)330 653 y(in)i(darkness)g(b)s(et)m(w)m
-(een)i(the)f(ligh)m(t)g(and)f(dark)h(v)m(ersions)f(of)i(the)f(inks.)39
-b(Setting)30 b(these)h(to)s(o)g(lo)m(w)f(will)330 762
-y(result)g(in)g(to)s(o)j(m)m(uc)m(h)e(dark)g(ink)f(b)s(eing)g(used)h
-(in)f(pale)h(areas,)h(creating)g(sp)s(ec)m(kling,)e(while)g(setting)330
-872 y(them)24 b(to)s(o)g(high)f(will)e(result)i(in)f(v)m(ery)j(smo)s
-(oth)e(texture)i(but)e(to)s(o)h(m)m(uc)m(h)g(use)g(of)g(ligh)m(t)f
-(ink,)h(resulting)330 981 y(in)31 b(\015at)h(sp)s(ots)g(in)f(the)h
-(densit)m(y)g(curv)m(es)g(and)g(ink)e(bleed-through.)45
-b(There)32 b(are)h(no)f(defaults.)45 b(An)m(y)330 1091
-y(ligh)m(t)30 b(ink)f(sp)s(eci\014ed)f(as)j(zero)g(indicates)e(that)i
-(there)g(is)e(no)i(ligh)m(t)e(ink)g(for)h(that)h(color.)330
-1225 y(This)i(only)g(applies)f(to)j(6)g(and)f(7)h(color)f(prin)m(ters)f
-(in)g(single)g(dot)h(size)h(color)f(mo)s(de,)h(and)f(only)f(to)330
-1335 y(those)e(inks)e(whic)m(h)g(ha)m(v)m(e)i(ligh)m(t)f(v)m(ersions)g
-(\(usually)e(cy)m(an)j(and)f(magen)m(ta\).)225 1469 y
-Fs(\017)60 b Fr(dither_set_ink_spread\(\))17 b Fu(tak)m(es)24
-b(a)g(small)e(in)m(teger)h(represen)m(ting)g(the)g(amoun)m(t)h(of)f
-(ink)f(spread)330 1579 y(in)27 b(the)i(dither.)39 b(Larger)29
-b(n)m(um)m(b)s(ers)e(mean)i(less)f(spread.)39 b(Larger)29
-b(v)-5 b(alues)28 b(are)h(appropriate)f(for)h(line)330
-1689 y(art)22 b(and)f(solid)f(tones;)25 b(they)d(will)d(yield)h(sharp)s
-(er)g(transitions)g(but)h(more)g(dither)g(artifacts.)38
-b(Smaller)330 1798 y(v)-5 b(alues)27 b(are)i(more)f(appropriate)f(for)h
-(photos.)40 b(They)27 b(will)e(reduce)j(resolution)f(and)g(sharpness)g
-(but)330 1908 y(reduce)38 b(dither)e(artifacts)j(up)e(to)h(a)h(p)s(oin)
-m(t.)63 b(A)38 b(v)-5 b(alue)37 b(of)h(16)h(or)f(higher)f(implies)e
-(minim)m(um)g(ink)330 2017 y(spread)e(at)i(an)m(y)f(resolution)e(no)i
-(matter)g(what)g(the)g(o)m(v)m(erdensit)m(y)-8 b(.)52
-b(A)34 b(v)-5 b(alue)33 b(of)h(14)h(is)e(t)m(ypical)g(for)330
-2127 y(photos)24 b(on)g(single)f(dot)h(size,)i(6)e(color)g(prin)m
-(ters.)38 b(F)-8 b(or)24 b(4)h(color)f(prin)m(ters,)g(subtract)g(1)h
-(\(more)f(spread;)330 2237 y(the)32 b(dots)g(are)h(farther)e(apart\).)
-46 b(F)-8 b(or)33 b(v)-5 b(ariable)31 b(dot)h(size)g(prin)m(ters,)f
-(add)g(1)i(\(more)f(small)e(dots)j(are)330 2346 y(prin)m(ted;)c(less)h
-(spread)f(is)h(desirable\).)225 2481 y Fs(\017)60 b Fr
-(dither_set_adaptive_divi)o(sor\()o(\))30 b Fu(tak)m(es)37
-b(a)f(\015oat)h(represen)m(ting)e(the)h(transition)e(p)s(oin)m(t)h(b)s
-(e-)330 2590 y(t)m(w)m(een)i(error)f(di\013usion)e(and)h(ordered)h
-(dither)f(if)g(adaptiv)m(e)h(dithering)e(is)h(used.)58
-b(The)35 b(\015oat)i(is)f(a)330 2700 y(fraction)e(of)h(the)g(prin)m
-(ting)e(densit)m(y)-8 b(.)53 b(F)-8 b(or)36 b(example,)g(if)d(y)m(ou)i
-(wish)e(the)i(transition)f(to)h(b)s(e)f(at)i(1/4)330
-2809 y(of)29 b(the)f(maxim)m(um)f(densit)m(y)h(\(whic)m(h)f(w)m(orks)i
-(w)m(ell)e(on)h(simple)e(4-color)k(prin)m(ters\),)e(y)m(ou)g(w)m(ould)f
-(pass)330 2919 y(.25)g(here.)39 b(With)25 b(six)g(colors)g(and/or)h
-(with)e(m)m(ultiple)f(dot)j(sizes,)h(the)f(v)-5 b(alues)25
-b(should)e(b)s(e)i(set)h(lo)m(w)m(er.)225 3054 y Fs(\017)60
-b Fr(dither_set_transition\(\))32 b Fu(tak)m(es)39 b(a)g(\015oat)g
-(represen)m(ting)e(the)i(exp)s(onen)m(t)f(of)g(the)g(transition)330
-3163 y(curv)m(e)c(b)s(et)m(w)m(een)g(ligh)m(t)f(and)g(dark)g(inks/dot)g
-(sizes.)51 b(A)34 b(v)-5 b(alue)33 b(less)g(than)g(1)h(\(t)m(ypical)g
-(when)e(using)330 3273 y(error)e(di\013usion\))d(mixes)i(in)g(less)g
-(dark)g(ink/small)f(dots)i(at)h(lo)m(w)m(er)f(ends)f(of)h(the)g(range,)
-h(to)f(reduce)330 3382 y(sp)s(ec)m(kling.)39 b(When)30
-b(using)f(ordered)h(dithering,)e(this)i(m)m(ust)g(b)s(e)g(set)h(to)g
-(1.)225 3517 y Fs(\017)60 b Fr(dither_set_)p Fm(X)9 b
-Fr(_ranges_simple)22 b Fu(\()p Fm(X)9 b Fu(=`)p Fr(c)p
-Fu(',)30 b(`)p Fr(m)p Fu(',)f(`)p Fr(y)p Fu(',)g(or)g(`)p
-Fr(k)p Fu('\))g(describ)s(es)e(the)h(ink)g(c)m(hoices)h(a)m(v)-5
-b(ail-)330 3626 y(able)42 b(for)g(eac)m(h)i(color.)77
-b(This)41 b(is)g(useful)g(in)g(t)m(ypical)h(cases)i(where)e(a)h(four)e
-(color)i(prin)m(ter)e(with)330 3736 y(v)-5 b(ariable)27
-b(dot)i(sizes)f(is)g(in)f(use.)40 b(It)29 b(is)e(passed)h(an)h(arra)m
-(y)g(of)f(doubles)f(b)s(et)m(w)m(een)j(\(0,)f(1])h(represen)m(ting)330
-3846 y(the)g(relativ)m(e)f(darkness)g(of)g(eac)m(h)i(dot)e(size.)40
-b(The)29 b(dot)h(sizes)f(are)h(assigned)e(bit)h(patterns)g(\(and)g(ink)
-330 3955 y(quan)m(tities,)e(see)g Fr(dither_set_ink_budget\(\))20
-b Fu(ab)s(o)m(v)m(e\))27 b(from)f(1)h(to)g(the)f(n)m(um)m(b)s(er)f(of)i
-(lev)m(els.)39 b(This)330 4065 y(also)c(requires)f(a)i(densit)m(y)-8
-b(,)36 b(whic)m(h)f(is)f(the)h(desired)f(densit)m(y)h(for)g(this)f
-(color.)56 b(This)34 b(densit)m(y)g(need)330 4174 y(not)27
-b(equal)e(the)i(densit)m(y)f(sp)s(eci\014ed)e(in)h Fr
-(dither_set_density\(\))p Fu(.)34 b(Setting)26 b(it)g(lo)m(w)m(er)h
-(will)c(tend)j(to)330 4284 y(prin)m(t)j(more)h(dark)g(ink)f(\(b)s
-(ecause)i(the)f(curv)m(es)h(are)f(calculated)h(for)f(this)f(color)h
-(assuming)f(a)i(lo)m(w)m(er)330 4394 y(densit)m(y)f(than)g(is)f
-(actually)h(supplied\).)225 4528 y Fs(\017)60 b Fr(dither_set_)p
-Fm(X)9 b Fr(_ranges)22 b Fu(\()p Fm(X)9 b Fu(=`)p Fr(c)p
-Fu(',)29 b(`)p Fr(m)p Fu(',)f(`)p Fr(y)p Fu(',)g(or)f(`)p
-Fr(k)p Fu('\))g(describ)s(es)f(in)f(a)j(more)f(general)g(w)m(a)m(y)h
-(the)f(ink)330 4638 y(c)m(hoices)36 b(a)m(v)-5 b(ailable)35
-b(for)g(eac)m(h)i(color.)56 b(F)-8 b(or)37 b(eac)m(h)f(p)s(ossible)d
-(ink)i(c)m(hoice,)i(a)f(bit)f(pattern,)i(dot)f(size,)330
-4747 y(v)-5 b(alue)33 b(\(i.)49 b(e.)g(relativ)m(e)34
-b(darkness\),)f(and)g(whether)f(the)i(ink)e(is)g(the)h(dark)g(or)g
-(ligh)m(t)g(v)-5 b(arian)m(t)33 b(ink)f(is)330 4857 y(sp)s(eci\014ed.)
-275 5016 y(|Rob)s(ert)e(Kra)m(witz)g Fr(<rlk@alum.mit.edu>)25
-b Fu(Ma)m(y)32 b(8,)f(2000)p eop
-%%Page: 41 46
-41 45 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(41)150 299 y Fp(App)t(endix)53
-b(B)81 b(W)-13 b(ea)l(ving)53 b(for)h(inkjet)g(prin)l(ters)150
-551 y Fu(b)m(y)30 b(Charles)f(Brisco)s(e-Smith)g(and)h(Rob)s(ert)g(Kra)
-m(witz.)150 823 y Ft(B.1)67 b(In)l(tro)t(duction)275
-1021 y Fu(The)40 b(Epson)h(St)m(ylus)f(Color/Photo)i(prin)m(ters)e
-(don't)i(ha)m(v)m(e)g(memory)g(to)g(prin)m(t)e(using)g(all)g(of)i(the)
-150 1131 y(nozzles)i(in)e(the)h(prin)m(t)f(head.)80 b(F)-8
-b(or)44 b(example,)j(the)c(St)m(ylus)f(Photo)i(700/EX)i(has)d(32)h
-(nozzles.)80 b(A)m(t)150 1241 y(720)35 b(dpi,)f(with)e(an)i(8)p
-Fr(")g Fu(wide)f(image,)j(a)e(single)f(line)f(requires)h(\(8)23
-b Fs(\003)g Fu(720)h Fs(\003)f Fu(6)p Fc(=)p Fu(8\))36
-b(b)m(ytes,)g(or)e(4320)h(b)m(ytes)150 1350 y(\(b)s(ecause)h(the)g(St)m
-(ylus)e(Photo)i(prin)m(ters)e(ha)m(v)m(e)j(6)e(ink)g(colors\).)56
-b(T)-8 b(o)36 b(use)f(32)h(nozzles)g(p)s(er)f(color)g(w)m(ould)150
-1460 y(require)27 b(138240)k(b)m(ytes.)41 b(It's)29 b(actually)f(w)m
-(orse)g(than)h(that,)g(though,)g(b)s(ecause)g(the)f(nozzles)h(are)g
-(spaced)150 1569 y(8)43 b(ro)m(ws)g(apart.)78 b(Therefore,)46
-b(in)c(order)g(to)i(store)f(enough)g(data)g(to)h(p)s(ermit)d(sending)g
-(the)i(page)h(as)150 1679 y(a)38 b(simple)d(raster,)k(the)e(prin)m(ter)
-f(w)m(ould)g(require)g(enough)h(memory)g(to)g(store)h(256)h(ro)m(ws,)g
-(or)e(1105920)150 1789 y(b)m(ytes.)53 b(Considering)32
-b(that)j(the)g(Photo)g(EX)f(can)h(prin)m(t)e(11)p Fr(")i
-Fu(wide,)g(w)m(e're)g(lo)s(oking)e(at)i(more)g(lik)m(e)f(1.5)150
-1898 y(MB.)26 b(In)e(fact,)j(these)e(prin)m(ters)e(are)i(capable)g(of)g
-(1440)h(dpi)d(horizon)m(tal)h(resolution.)38 b(This)23
-b(w)m(ould)g(require)150 2008 y(3)31 b(MB.)g(The)f(prin)m(ters)f
-(actually)h(ha)m(v)m(e)h(64K-256K.)275 2148 y(With)25
-b(the)h(new)m(er)g(\(740/750)k(and)25 b(later\))i(prin)m(ters)d(it's)i
-(ev)m(en)h(w)m(orse,)g(since)f(these)g(prin)m(ters)f(supp)s(ort)150
-2258 y(m)m(ultiple)j(dot)j(sizes;)f(of)h(course,)f(the)h(ev)m(en)g(new)
-m(er)f(2880x720)k(prin)m(ters)29 b(don't)h(help)f(either.)275
-2398 y(Older)j(Epson)h(prin)m(ters)f(had)h(a)h(mo)s(de)f(called)g
-Fm(MicroW)-8 b(ea)m(v)m(e)42 b Fu(\(tm\).)52 b(In)33
-b(this)f(mo)s(de,)j(the)e(host)h(fed)150 2508 y(the)c(prin)m(ter)f
-(individual)d(ro)m(ws)k(of)g(dots,)h(and)e(the)h(prin)m(ter)f(bundled)e
-(them)k(up)e(and)g(sen)m(t)i(them)f(to)h(the)150 2617
-y(prin)m(t)f(head)h(in)g(the)g(correct)i(order)e(to)h(ac)m(hiev)m(e)h
-(high)d(qualit)m(y)-8 b(.)44 b(This)30 b(MicroW)-8 b(ea)m(v)m(e)34
-b(mo)s(de)e(still)d(w)m(orks)150 2727 y(in)36 b(new)h(prin)m(ters,)i
-(but)d(in)h(some)h(cases)g(the)g(implemen)m(tation)e(is)h(v)m(ery)h
-(minimal:)52 b(the)38 b(prin)m(ter)e(uses)150 2837 y(exactly)c(one)g
-(nozzle)g(of)g(eac)m(h)h(color)f(\(the)g(\014rst)f(one\).)45
-b(This)30 b(mak)m(es)j(prin)m(ting)c(extremely)j(slo)m(w)f(\(more)150
-2946 y(than)41 b(30)h(min)m(utes)f(for)g(one)h(8.5x11)p
-Fr(")h Fu(page\),)i(although)c(the)h(qualit)m(y)e(is)g(extremely)i
-(high)e(with)g(no)150 3056 y(visible)24 b(banding)h(whatso)s(ev)m(er.)
-40 b(It's)27 b(not)g(go)s(o)s(d)f(for)g(the)h(prin)m(t)f(head,)h
-(though,)g(since)f(no)h(ink)e(is)h(\015o)m(wing)150 3165
-y(through)32 b(the)h(other)h(nozzles.)48 b(This)31 b(leads)i(to)g
-(drying)e(of)j(ink)d(and)h(p)s(ossible)f(p)s(ermanen)m(t)h(damage)i(to)
-150 3275 y(the)d(prin)m(t)e(head.)275 3415 y(By)j(the)g(w)m(a)m(y)-8
-b(,)35 b(although)c(the)i(Epson)e(man)m(ual)g(sa)m(ys)i(that)g(micro)m
-(w)m(ea)m(v)m(e)h(mo)s(de)e(should)e(b)s(e)i(used)f(at)150
-3525 y(720)36 b(dpi,)d(360)j(dpi)d(con)m(tin)m(ues)h(to)h(w)m(ork)g(in)
-e(m)m(uc)m(h)h(the)h(same)f(w)m(a)m(y)-8 b(.)54 b(A)m(t)36
-b(360)f(dpi,)f(data)h(is)f(fed)g(to)h(the)150 3634 y(prin)m(ter)29
-b(one)i(ro)m(w)f(at)h(a)g(time)f(on)h(all)e(Epson)h(prin)m(ters.)39
-b(The)30 b(pattern)g(that)h(the)g(prin)m(ter)e(uses)h(to)h(prin)m(t)150
-3744 y(is)26 b(v)m(ery)h(prone)f(to)h(banding.)38 b(Ho)m(w)m(ev)m(er,)
-30 b(360)e(dpi)d(is)g(inheren)m(tly)g(a)i(lo)m(w)g(qualit)m(y)f(mo)s
-(de;)h(if)f(y)m(ou're)h(using)150 3854 y(it,)34 b(presumably)e(y)m(ou)i
-(don't)g(m)m(uc)m(h)g(care)g(ab)s(out)g(qualit)m(y)-8
-b(.)51 b(It)34 b(is)e(p)s(ossible)g(to)i(do)g(micro)m(w)m(ea)m(v)m(e)i
-(at)f(360)150 3963 y(DPI,)c(with)e(signi\014can)m(tly)f(impro)m(v)m(ed)
-i(qualit)m(y)-8 b(.)275 4104 y(Except)36 b(for)h(the)f(St)m(ylus)g(Pro)
-g(prin)m(ters)f(\(5000,)40 b(5500,)g(7000,)g(7500,)g(9000,)g(9500,)g
-(and)c(when)f(it's)150 4213 y(released)43 b(the)h(10000\),)50
-b(whic)m(h)42 b(can)i(do)f(micro)m(w)m(ea)m(v)m(e)j(at)e(an)m(y)g
-(resolution,)i(prin)m(ters)c(from)h(roughly)150 4323
-y(the)36 b(St)m(ylus)g(Color)f(600)j(and)d(later)i(do)f(not)g(ha)m(v)m
-(e)i(the)e(capabilit)m(y)f(to)i(do)f(MicroW)-8 b(ea)m(v)m(e)40
-b(correctly)c(in)150 4432 y(man)m(y)41 b(cases)g(\(some)h(prin)m(ters)d
-(can)i(do)f(MicroW)-8 b(ea)m(v)m(e)44 b(correctly)d(at)g(720)h(DPI\).)g
-(Instead,)h(the)e(host)150 4542 y(m)m(ust)32 b(arrange)g(the)g(output)f
-(in)f(the)i(order)g(that)g(it)f(will)e(b)s(e)i(sen)m(t)h(to)h(the)f
-(prin)m(t)e(head.)45 b(This)30 b(is)g(a)j(v)m(ery)150
-4652 y(complex)f(pro)s(cess;)h(the)g(jets)g(in)e(the)h(prin)m(t)f(head)
-h(are)h(spaced)g(more)f(than)g(one)h(ro)m(w)f(\(1/720)p
-Fr(")p Fu(\))j(apart,)150 4761 y(so)29 b(w)m(e)g(can't)g(simply)d(send)
-h(consecutiv)m(e)j(ro)m(ws)e(of)h(dots)f(to)h(the)g(prin)m(ter.)39
-b(Instead,)29 b(w)m(e)g(ha)m(v)m(e)g(to)g(pass)f(e.)150
-4871 y(g.)49 b(the)33 b(\014rst,)h(nin)m(th,)e(17th,)j(25th...)50
-b(ro)m(ws)33 b(in)f(order)g(for)h(them)g(to)h(prin)m(t)e(in)f(the)j
-(correct)g(p)s(osition)d(on)150 4980 y(the)g(pap)s(er.)39
-b(This)29 b(in)m(terlea)m(ving)g(pro)s(cess)h(is)g(called)f
-Fr(")p Fu(soft)p Fr(")i Fu(w)m(ea)m(ving.)275 5121 y(This)e(decision)g
-(w)m(as)i(probably)e(made)i(to)h(sa)m(v)m(e)g(money)f(on)g(memory)f(in)
-g(the)h(prin)m(ter.)41 b(It)31 b(certainly)150 5230 y(mak)m(es)k(the)f
-(driv)m(er)e(co)s(de)i(far)g(more)g(complicated)g(than)f(it)g(w)m(ould)
-g(b)s(e)g(if)g(the)h(prin)m(ter)f(could)g(arrange)150
-5340 y(the)h(output.)50 b(Is)33 b(that)h(a)g(bad)f(thing?)49
-b(Usually)33 b(this)f(tak)m(es)j(far)e(less)g(CPU)h(time)f(than)g(the)h
-(dithering)p eop
-%%Page: 42 47
-42 46 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(42)150 299 y(pro)s(cess,)27
-b(and)e(it)h(do)s(es)g(allo)m(w)f(us)h(more)g(con)m(trol)h(o)m(v)m(er)g
-(the)g(prin)m(ting)d(pro)s(cess,)i(e.g.)41 b(to)27 b(reduce)f(banding.)
-150 408 y(Conceiv)-5 b(ably)d(,)30 b(w)m(e)h(could)e(ev)m(en)i(use)f
-(this)f(abilit)m(y)g(to)i(map)f(out)h(bad)f(jets.)275
-546 y(In)m(terestingly)-8 b(,)30 b(apparen)m(tly)h(the)g(Windo)m(ws)f
-(\(and)h(presumably)d(Macin)m(tosh\))k(driv)m(ers)e(for)h(most)g(or)150
-656 y(all)39 b(Epson)g(prin)m(ters)g(still)f(list)g(a)j(\\micro)m(w)m
-(ea)m(v)m(e")i(mo)s(de.)69 b(Exp)s(erimen)m(ts)39 b(ha)m(v)m(e)i
-(demonstrated)f(that)150 765 y(this)33 b(do)s(es)h(not)g(in)f(fact)i
-(use)e(the)i(\\micro)m(w)m(ea)m(v)m(e")i(mo)s(de)c(of)h(the)h(prin)m
-(ter.)50 b(P)m(ossibly)32 b(it)i(do)s(es)g(nothing,)150
-875 y(or)h(it)g(uses)g(a)h(di\013eren)m(t)f(w)m(ea)m(v)m(e)j(pattern)d
-(from)g(what)h(the)f(non-\\micro)m(w)m(ea)m(v)m(e")k(mo)s(de)c(do)s
-(es.)55 b(This)34 b(is)150 984 y(unnecessarily)f(confusing,)i(at)h
-(least)f(for)g(p)s(eople)f(who)g(write)g(driv)m(ers)g(who)g(try)h(to)h
-(explain)d(them)i(to)150 1094 y(p)s(eople)29 b(who)h(don't.)275
-1232 y(What)35 b(mak)m(es)h(this)e(in)m(teresting)g(is)g(that)i(there)f
-(are)g(man)m(y)g(di\013eren)m(t)g(w)m(a)m(ys)h(of)f(of)g(accomplishing)
-150 1341 y(this)j(goal.)67 b(The)38 b(naiv)m(e)h(w)m(a)m(y)h(w)m(ould)e
-(b)s(e)g(to)i(divide)d(the)i(image)g(up)f(in)m(to)h(groups)f(of)i(256)g
-(ro)m(ws)f(\(for)150 1451 y(a)d(prin)m(ter)e(with)f(32)k(jets)e(and)g
-(a)g(separation)g(of)h(8)f(ro)m(ws\),)i(and)e(prin)m(t)f(all)g(the)i
-(mo)s(d8=0)f(ro)m(ws)g(in)f(the)150 1560 y(\014rst)i(pass,)h(mo)s(d8=1)
-f(ro)m(ws)h(in)e(the)h(second,)j(and)c(so)i(forth.)58
-b(The)36 b(problem)f(with)g(this)g(approac)m(h)i(is)150
-1670 y(that)32 b(the)g(individual)27 b(ink)j(jets)i(are)g(not)g(p)s
-(erfectly)f(uniform;)f(some)i(emit)g(sligh)m(tly)e(bigger)h(or)g
-(smaller)150 1780 y(drops)36 b(than)g(others.)61 b(Since)36
-b(eac)m(h)i(group)e(of)h(8)h(adjacen)m(t)g(ro)m(ws)f(is)f(prin)m(ted)f
-(with)h(the)h(same)g(nozzle,)150 1889 y(that)30 b(means)f(that)g(there)
-g(will)e(b)s(e)h(distinct)g(streaks)h(of)g(ligh)m(ter)g(and)f(dark)m
-(er)h(bands)f(within)e(the)k(image)150 1999 y(\(8)g(ro)m(ws)g(is)e
-(1/90)p Fr(")p Fu(,)k(whic)m(h)c(is)g(visible;)g(1/720)p
-Fr(")j Fu(is)e(not\).)41 b(P)m(ossibly)28 b(w)m(orse)i(is)e(that)i
-(these)g(patterns)g(will)150 2108 y(rep)s(eat)h(ev)m(ery)g(256)g(ro)m
-(ws.)41 b(This)29 b(creates)i(banding)e(patterns)h(that)h(are)g(ab)s
-(out)f(1/3)p Fr(")i Fu(wide.)275 2246 y(So)e(w)m(e)h(ha)m(v)m(e)g(to)g
-(do)g(something)e(to)j(break)e(up)f(this)g(patterning.)275
-2384 y(Epson)j(do)s(es)h(not)h(publish)29 b(the)34 b(w)m(ea)m(ving)g
-(algorithms)e(that)i(they)f(use)g(in)f(their)h(bundled)d(driv)m(ers.)
-150 2493 y(Indeed,)g(their)f(dev)m(elop)s(er)h(w)m(eb)h(site)f(\(h)m
-(ttp://www.ercip)s(d.com/isv/edr)p 2754 2493 28 4 v 32
-w(do)s(cs.h)m(tm\))h(do)s(es)f(not)h(ev)m(en)150 2603
-y(describ)s(e)i(ho)m(w)j(to)f(do)g(this)f(w)m(ea)m(ving)i(at)g(all;)h
-(it)d(sa)m(ys)i(that)g(the)f(only)f(w)m(a)m(y)i(to)g(ac)m(hiev)m(e)g
-(720)h(dpi)c(is)h(to)150 2713 y(use)c(MicroW)-8 b(ea)m(v)m(e.)43
-b(It)30 b(do)s(es)g(note)h(\(correctly\))g(that)f(1440)i(dpi)c(horizon)
-m(tal)i(can)g(only)f(b)s(e)g(ac)m(hiev)m(ed)i(b)m(y)150
-2822 y(the)h(driv)m(er)f(\(i.)46 b(e.)h(in)30 b(soft)m(w)m(are\).)48
-b(The)32 b(man)m(ual)g(actually)f(mak)m(es)i(it)f(fairly)f(clear)h(ho)m
-(w)g(to)h(do)f(this)f(\(it)150 2932 y(requires)g(t)m(w)m(o)j(passes)e
-(with)f(horizon)m(tal)h(head)g(mo)m(v)m(emen)m(t)i(b)s(et)m(w)m(een)f
-(passes\),)g(and)f(it)g(is)f(presumably)150 3041 y(p)s(ossible)d(to)j
-(do)f(this)g(with)f(MicroW)-8 b(ea)m(v)m(e.)275 3179
-y(The)23 b(information)f(ab)s(out)i(ho)m(w)g(to)h(do)f(this)f(is)g
-(apparen)m(tly)h(a)m(v)-5 b(ailable)23 b(under)g(non-disclosure)e
-(agree-)150 3289 y(men)m(t)31 b(\(ND)m(A\).)i(It's)d(actually)g(easy)h
-(enough)g(to)g(rev)m(erse)g(engineer)f(what's)h(inside)d(a)j(prin)m(t)e
-(\014le)g(with)h(a)150 3398 y(simple)c(P)m(erl)h(script,)g(whic)m(h)g
-(is)g(supplied)d(with)j(the)h(Gimp-Prin)m(t)e(distribution)e(as)k
-(tests/parse-escp2.)150 3508 y(In)f(an)m(y)h(ev)m(en)m(t,)i(w)m(e)e(w)m
-(eren't)g(particularly)d(in)m(terested)j(in)e(the)i(w)m(ea)m(ving)g
-(patterns)g(Epson)e(used.)39 b(There)150 3617 y(are)31
-b(man)m(y)g(factors)h(that)g(go)f(in)m(to)g(c)m(ho)s(osing)g(a)g(go)s
-(o)s(d)g(w)m(ea)m(ving)h(pattern;)f(w)m(e're)h(learning)d(them)i(as)g
-(w)m(e)150 3727 y(go)i(along.)44 b(Issues)31 b(suc)m(h)h(as)f(drying)f
-(time)i(\(giving)f(the)h(ink)e(a)i(few)f(seconds)h(more)g(or)g(less)f
-(to)h(dry)f(can)150 3836 y(ha)m(v)m(e)h(highly)c(visible)g(e\013ects\))
-k(a\013ect)g(the)e(qualit)m(y)g(of)g(the)h(output.)275
-3974 y(The)j(Uniprin)m(t)f(GhostScript)h(driv)m(er)g(has)h(b)s(een)g
-(able)g(to)h(do)f(w)m(ea)m(ving)h(for)f(a)g(long)g(time.)55
-b(It)35 b(uses)150 4084 y(patterns)e(that)g(m)m(ust)g(b)s(e)f(sp)s
-(eci\014ed)f(for)h(eac)m(h)i(c)m(hoice)g(of)f(resolution)e(and)h(prin)m
-(ter.)47 b(W)-8 b(e)34 b(preferred)d(an)150 4193 y(algorithmic)i
-(approac)m(h)h(that)g(computes)g(a)g(w)m(ea)m(v)m(e)i(pattern)e(for)g
-(an)m(y)g(giv)m(en)g(c)m(hoice)h(of)f(inputs.)49 b(This)150
-4303 y(ob)m(viously)29 b(requires)g(extensiv)m(e)i(testing;)g(w)m(e)f
-(dev)m(elop)s(ed)g(a)h(test)g(suite)f(sp)s(eci\014cally)e(for)i(this)f
-(purp)s(ose.)150 4568 y Ft(B.2)67 b(W)-11 b(ea)l(ving)46
-b(algorithms)275 4764 y Fu(I)32 b(considered)f(a)i(few)f(algorithms)f
-(to)j(p)s(erform)d(the)h(w)m(ea)m(v)m(e.)49 b(The)32
-b(\014rst)g(one)h(I)f(devised)f(let)i(me)f(use)150 4874
-y(only)40 b(\()p Fc(j)5 b(ets)28 b Fs(\000)g Fc(distance)p
-1025 4874 V 33 w(betw)r(een)p 1378 4874 V 33 w(j)5 b(ets)p
-Fu(+1\))42 b(nozzles,)j(or)c(25.)74 b(This)39 b(is)i(OK)f(in)g
-(principle,)h(but)f(it's)150 4983 y(slo)m(w)m(er)e(than)f(using)f(all)g
-(nozzles.)62 b(By)38 b(pla)m(ying)e(around)g(with)h(it)g(some)g(more,)j
-(I)d(came)i(up)d(with)g(an)150 5093 y(algorithm)29 b(that)i(lets)g(me)f
-(use)g(all)f(of)i(the)f(nozzles,)h(except)h(near)e(the)g(top)h(and)f(b)
-s(ottom)h(of)f(the)h(page.)275 5230 y(This)26 b(still)f(pro)s(duces)i
-(some)h(banding,)f(though.)39 b(Ev)m(en)28 b(b)s(etter)g(qualit)m(y)f
-(can)h(b)s(e)f(ac)m(hiev)m(ed)i(b)m(y)e(using)150 5340
-y(m)m(ultiple)k(nozzles)j(on)g(the)f(same)i(line.)48
-b(Ho)m(w)35 b(do)e(w)m(e)h(do)g(this?)49 b(In)33 b(1440x720)j(mo)s(de,)
-f(w)m(e're)f(prin)m(ting)p eop
-%%Page: 43 48
-43 47 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(43)150 299 y(t)m(w)m(o)30
-b(output)f(lines)e(at)i(the)g(same)h(v)m(ertical)f(p)s(osition.)38
-b(Ho)m(w)m(ev)m(er,)31 b(if)d(w)m(e)i(w)m(an)m(t)f(four)f(passes,)i(w)m
-(e)f(ha)m(v)m(e)h(to)150 408 y(e\013ectiv)m(ely)f(prin)m(t)e(eac)m(h)i
-(line)e(t)m(wice.)40 b(Actually)28 b(doing)f(this)g(w)m(ould)g
-(increase)h(the)g(densit)m(y)-8 b(,)29 b(so)f(what)g(w)m(e)150
-518 y(do)f(is)f(prin)m(t)g(half)h(the)g(dots)g(on)h(eac)m(h)g(pass.)39
-b(This)26 b(pro)s(duces)g(near-p)s(erfect)h(output,)h(and)f(it's)g(far)
-g(faster)150 628 y(than)j(using)f(\(pseudo\))h(\\MicroW)-8
-b(ea)m(v)m(e".)275 762 y(Y)g(et)43 b(another)f(complication)e(is)h(ho)m
-(w)h(to)g(get)h(near)f(the)g(top)g(and)f(b)s(ottom)h(of)g(the)g(page.)
-76 b(This)150 872 y(algorithm)37 b(lets)g(us)g(prin)m(t)f(to)i(within)d
-(one)j(head)f(width)f(of)i(the)g(top)f(of)h(the)g(page,)i(and)d(a)h
-(bit)f(more)150 981 y(than)32 b(one)g(head)g(width)e(from)h(the)i(b)s
-(ottom.)45 b(That)32 b(lea)m(v)m(es)h(a)g(lot)f(of)g(blank)e(space.)47
-b(Doing)32 b(the)g(w)m(ea)m(v)m(e)150 1091 y(prop)s(erly)i(outside)h
-(of)h(this)f(region)h(is)f(increasingly)f(di\016cult)g(as)i(w)m(e)h
-(get)g(closer)f(to)h(the)f(edge)h(of)f(the)150 1200 y(pap)s(er;)g(in)e
-(the)h(in)m(terior)f(region,)i(an)m(y)f(nozzle)h(can)f(prin)m(t)f(an)m
-(y)h(line,)g(but)f(near)h(the)g(top)g(and)g(b)s(ottom)150
-1310 y(edges,)45 b(only)40 b(some)i(nozzles)g(can)f(prin)m(t.)72
-b(W)-8 b(e)43 b(originally)c(handled)g(this)h(b)m(y)h(using)f(the)i
-(naiv)m(e)f(w)m(a)m(y)150 1419 y(men)m(tioned)35 b(ab)s(o)m(v)m(e)i
-(near)f(the)g(b)s(orders,)g(and)f(switc)m(hing)g(o)m(v)m(er)i(to)f(the)
-g(high)f(qualit)m(y)g(metho)s(d)g(in)g(the)150 1529 y(in)m(terior.)47
-b(Unfortunately)-8 b(,)33 b(this)f(mean)m(t)h(that)h(the)f(qualit)m(y)f
-(is)g(quite)g(visibly)e(degraded)i(near)h(the)g(top)150
-1639 y(and)26 b(b)s(ottom)h(of)g(the)g(page.)41 b(W)-8
-b(e)28 b(ha)m(v)m(e)g(since)e(devised)f(b)s(etter)i(algorithms)f(that)h
-(allo)m(w)g(prin)m(ting)d(to)k(the)150 1748 y(extreme)37
-b(top)f(and)g(b)s(ottom)g(of)g(the)h(region)e(that)i(can)f(ph)m
-(ysically)e(b)s(e)i(prin)m(ted,)g(with)f(only)g(minimal)150
-1858 y(loss)30 b(of)g(qualit)m(y)-8 b(.)275 1992 y(Epson)22
-b(do)s(es)h(not)h(adv)m(ertise)g(that)g(the)g(prin)m(ters)e(can)i(prin)
-m(t)e(at)j(the)e(v)m(ery)h(top)g(of)g(the)g(page,)i(although)150
-2102 y(in)d(practice)h(most)h(of)f(them)g(can.)39 b(The)23
-b(qualit)m(y)h(is)f(degraded)h(to)h(some)f(degree,)i(and)e(w)m(e)g(ha)m
-(v)m(e)i(observ)m(ed)150 2211 y(that)45 b(in)f(some)h(cases)h(not)f
-(all)f(of)h(the)g(dots)g(get)h(prin)m(ted.)82 b(Epson)44
-b(ma)m(y)i(ha)m(v)m(e)g(decided)d(that)j(the)150 2321
-y(degradation)28 b(in)e(qualit)m(y)h(is)g(su\016cien)m(t)h(that)g(prin)
-m(ting)e(in)g(that)j(region)e(should)f(not)i(b)s(e)f(allo)m(w)m(ed.)40
-b(That)150 2430 y(is)29 b(a)i(v)-5 b(alid)29 b(decision,)g(although)h
-(w)m(e)h(ha)m(v)m(e)g(tak)m(en)h(another)e(approac)m(h.)150
-2654 y Fg(B.2.1)63 b(Simple)40 b(w)m(ea)m(ving)g(algorithms)275
-2846 y Fu(The)35 b(initial)f(problem)h(is)g(to)i(calculate)g(the)f
-(starting)g(p)s(osition)e(of)j(eac)m(h)g(pass;)i(the)e(ro)m(w)f(n)m(um)
-m(b)s(er)150 2956 y(of)41 b(the)g(prin)m(ter's)f(top)h(jet)h(when)e
-(prin)m(ting)e(that)k(pass.)72 b(Since)40 b(w)m(e)h(assume)g(the)g(pap)
-s(er)f(cannot)i(b)s(e)150 3065 y(rev)m(erse-fed,)30 b(the)f(prin)m(t)e
-(head)i(m)m(ust,)g(for)g(eac)m(h)h(pass,)f(start)g(either)f(further)f
-(do)m(wn)i(the)g(page)g(than)g(the)150 3175 y(previous)c(pass)h(or)h
-(at)g(the)g(same)g(p)s(osition.)38 b(Eac)m(h)27 b(pass's)f(start)h(p)s
-(oin)m(t)f(is)g(therefore)h(at)g(a)g(non-negativ)m(e)150
-3285 y(o\013set)k(from)f(the)h(previous)e(pass's)h(start)h(p)s(oin)m
-(t.)275 3419 y(Once)26 b(w)m(e)g(ha)m(v)m(e)i(a)e(form)m(ula)g(for)g
-(the)g(starting)g(ro)m(w)g(of)g(eac)m(h)i(pass,)f(w)m(e)f(then)g(turn)f
-(that)i(\\inside)d(out")150 3529 y(to)31 b(get)h(a)e(form)m(ula)g(for)g
-(the)h(pass)f(n)m(um)m(b)s(er)f(con)m(taining)h(eac)m(h)h(ro)m(w.)275
-3663 y(First,)h(let's)g(de\014ne)g(ho)m(w)h(our)e(prin)m(ter)g(w)m
-(orks.)47 b(W)-8 b(e)34 b(measure)e(v)m(ertical)h(p)s(osition)d(on)i
-(the)h(pap)s(er)e(in)150 3772 y(\\ro)m(ws";)k(the)f(resolution)d(with)h
-(whic)m(h)g(the)h(prin)m(ter)f(can)h(p)s(osition)e(the)i(pap)s(er)f(v)m
-(ertically)-8 b(.)49 b(The)32 b(prin)m(t)150 3882 y(head)e(con)m(tains)
-h Fc(J)39 b Fu(ink)29 b(jets,)i(whic)m(h)e(are)i(spaced)f
-Fc(S)36 b Fu(ro)m(ws)30 b(apart.)275 4016 y(Consider)37
-b(a)i(v)m(ery)g(simple)e(case:)58 b(w)m(e)40 b(w)m(an)m(t)f(to)h(prin)m
-(t)d(a)i(page)h(as)f(quic)m(kly)f(as)h(p)s(ossible,)f(and)g(w)m(e)150
-4126 y(mostly)30 b(don't)g(care)i(ho)m(w)e(sparse)g(the)g(prin)m(ting)f
-(is,)g(so)i(long)f(as)h(it's)f(fairly)e(ev)m(en.)275
-4260 y(It's)40 b(prett)m(y)h(ob)m(vious)e(ho)m(w)i(to)f(do)h(this.)69
-b(W)-8 b(e)41 b(mak)m(e)g(one)g(pass)e(with)g(the)i(prin)m(t)d(head,)43
-b(prin)m(ting)150 4370 y Fc(J)k Fu(lines)35 b(of)j(data,)i(eac)m(h)f
-(line)c Fc(S)43 b Fu(ro)m(ws)37 b(after)h(the)g(previous)e(one.)62
-b(W)-8 b(e)39 b(then)e(adv)-5 b(ance)38 b(the)g(pap)s(er)e(b)m(y)150
-4479 y Fc(S)27 b Fs(\003)22 b Fc(J)42 b Fu(ro)m(ws)33
-b(and)g(prin)m(t)e(the)i(next)h(ro)m(w.)48 b(F)-8 b(or)34
-b(example,)f(if)f Fc(J)39 b Fu(=)29 b(7)34 b(and)e Fc(S)j
-Fu(=)29 b(4,)34 b(this)e(metho)s(d)g(can)i(b)s(e)150
-4589 y(illustrated)28 b(lik)m(e)i(this:)390 4717 y Fr(pass)47
-b(number)390 4821 y(|)g(row)g(number------->)390 4925
-y(|)g(|)430 b(11111111112222222222333)o(3333)o(3334)o(444)o(4444)o
-(4455)o(555)o(5555)o(5666)o(666)o(6666)390 5029 y(|)47
-b(01234567890123456789012345)o(6789)o(012)o(3456)o(7890)o(123)o(4567)o
-(8901)o(234)o(5678)o(9012)o(345)o(6789)390 5132 y(0)g
-(*---*---*---*---*---*---*)390 5236 y(1)1384 b
-(*---*---*---*---*---*---)o(*)390 5340 y(2)47 b
-(\\-----------------------/)1473 b(*---*---*---*---*---*-)p
-eop
-%%Page: 44 49
-44 48 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(44)867 299 y Fr(7)48
-b(jets)667 b(\\---/)1822 403 y(4)47 b(rows)g(offset)f(from)h(one)g(jet)
-f(to)i(the)f(next)485 506 y(\\-------------------------)o(--/)629
-610 y(7*4=28)f(rows)g(offset)g(from)h(one)g(pass)g(to)g(the)g(next)275
-747 y Fu(In)35 b(these)i(examples,)g(the)f(v)m(ertical)h(axis)e(can)i
-(b)s(e)e(though)m(t)i(of)f(as)h(the)f(time)g(axis,)h(with)e(the)h(pass)
-150 857 y(n)m(um)m(b)s(er)25 b(sho)m(wn)g(at)i(the)g(left)e(margin,)i
-(while)d(the)i(ro)m(w)g(n)m(um)m(b)s(er)f(runs)g(horizon)m(tally)-8
-b(.)38 b(A)27 b(`)p Fr(*)p Fu(')f(sho)m(ws)g(eac)m(h)150
-967 y(ro)m(w)h(prin)m(ted)f(b)m(y)h(a)g(pass,)h(and)e(a)h(ro)m(w)h(of)f
-(`)p Fr(-)p Fu(')g(is)f(used)g(to)i(link)d(together)j(the)g(ro)m(ws)f
-(prin)m(ted)e(b)m(y)i(one)g(pass)150 1076 y(of)h(the)g(prin)m(t)f
-(head.)39 b(The)28 b(\014rst)f(pass)g(is)g(n)m(um)m(b)s(ered)g(`)p
-Fr(0)p Fu(')h(and)f(starts)i(at)f(ro)m(w)g(0.)41 b(Eac)m(h)28
-b(subsequen)m(t)f(pass)150 1186 y Fc(p)h Fu(starts)h(at)g(ro)m(w)f
-Fc(p)16 b Fs(\003)g Fc(S)21 b Fs(\003)16 b Fc(J)9 b Fu(.)40
-b(Eac)m(h)29 b(pass)f(prin)m(ts)f Fc(J)37 b Fu(lines,)27
-b(eac)m(h)j(line)c(b)s(eing)h Fc(S)33 b Fu(ro)m(ws)28
-b(after)h(the)f(previous)150 1295 y(one.)66 b(\(F)-8
-b(or)39 b(ease)h(of)f(viewing)e(this)g(\014le)h(on)g(a)h(standard)f
-(terminal,)h(I'm)g(clipping)c(the)k(examples)f(at)150
-1405 y(column)29 b(80.\))275 1542 y(This)34 b(metho)s(d)i(co)m(v)m(ers)
-h(the)g(whole)e(page)i(with)e(lines)g(prin)m(ted)f(ev)m(enly)j
-Fc(S)k Fu(ro)m(ws)36 b(apart.)59 b(Ho)m(w)m(ev)m(er,)150
-1652 y(w)m(e)30 b(w)m(an)m(t)h(to)g(\014ll)d(in)h(all)g(the)h(other)g
-(ro)m(ws)g(with)f(prin)m(ting)f(to)j(get)g(a)f(full-densit)m(y)e(page)i
-(\(w)m(e're)i(ignoring)150 1762 y(o)m(v)m(ersampling)24
-b(at)i(this)e(stage\).)41 b(Where)25 b(w)m(e)g(ha)m(v)m(e)h(previously)
-d(prin)m(ted)g(a)j(single)d(pass,)j(w)m(e'll)e(no)m(w)h(prin)m(t)150
-1871 y(a)37 b(\\pass)f(blo)s(c)m(k":)53 b(w)m(e)37 b(prin)m(t)e(extra)i
-(passes)f(to)i(\014ll)c(in)h(the)i(empt)m(y)g(ro)m(ws.)58
-b(A)37 b(naiv)m(e)f(implemen)m(tation)150 1981 y(migh)m(t)30
-b(lo)s(ok)g(lik)m(e)g(this:)390 2112 y Fr(0)47 b
-(*---*---*---*---*---*---*)390 2216 y(1)95 b(*---*---*---*---*---*---*)
-390 2320 y(2)143 b(*---*---*---*---*---*---)o(*)390 2423
-y(3)191 b(*---*---*---*---*---*--)o(-*)390 2527 y(4)1384
-b(*---*---*---*---*---*---)o(*)390 2631 y(5)1432 b
-(*---*---*---*---*---*--)o(-*)390 2735 y(6)1479 b
-(*---*---*---*---*---*---*)390 2839 y(7)1527 b
-(*---*---*---*---*---*---)o(*)390 2942 y(8)2720 b
-(*---*---*---*---*---*-)390 3046 y(9)2768 b(*---*---*---*---*---*)390
-3150 y(10)g(*---*---*---*---*---)390 3254 y(11)2815 b
-(*---*---*---*---*--)150 3391 y Fu(\(No)m(w)31 b(y)m(ou)g(can)g(see)g
-(wh)m(y)f(this)f(pro)s(cess)h(is)f(called)h(\\w)m(ea)m(ving"!\))150
-3621 y Fg(B.2.2)63 b(P)m(erfect)39 b(w)m(ea)m(ving)275
-3816 y Fu(This)28 b(simple)f(w)m(ea)m(v)m(e)33 b(pattern)c(prin)m(ts)g
-(ev)m(ery)h(ro)m(w,)h(but)e(will)e(giv)m(e)j(conspicuous)f(banding)f
-(patterns)150 3926 y(for)i(the)h(reasons)f(discussed)f(ab)s(o)m(v)m(e.)
-275 4063 y(Let's)k(start)h(impro)m(ving)e(this)g(for)h(our)f(simple)f
-(case.)51 b(W)-8 b(e)34 b(can)g(reduce)f(banding)e(b)m(y)i(making)g
-(sure)150 4173 y(that)27 b(an)m(y)g(giv)m(en)g(jet)g(nev)m(er)h(prin)m
-(ts)d(a)i(ro)m(w)g(to)s(o)g(close)g(to)h(another)f(ro)m(w)g(prin)m(ted)
-e(b)m(y)i(the)g(same)g(jet.)40 b(This)150 4282 y(means)d(w)m(e)g(w)m
-(an)m(t)g(to)h(space)f(the)g(ro)m(ws)g(prin)m(ted)e(b)m(y)i(a)g(giv)m
-(en)f(jet)i(ev)m(enly)e(do)m(wn)g(the)h(page.)61 b(In)36
-b(turn,)150 4392 y(this)28 b(implies)f(w)m(e)i(w)m(an)m(t)h(to)g(adv)-5
-b(ance)30 b(the)f(pap)s(er)f(b)m(y)i(as)f(nearly)f(an)h(equal)g(amoun)m
-(t)h(after)g(eac)m(h)g(pass)f(as)150 4501 y(p)s(ossible.)275
-4639 y(Eac)m(h)e(pass)f(blo)s(c)m(k)h(prin)m(ts)e Fc(S)18
-b Fs(\003)13 b Fc(J)37 b Fu(lines)25 b(in)g Fc(S)32 b
-Fu(passes.)40 b(The)26 b(\014rst)g(line)f(prin)m(ted)h(in)f(eac)m(h)j
-(pass)f(blo)s(c)m(k)f(is)150 4748 y Fc(S)12 b Fs(\003)7
-b Fc(J)33 b Fu(ro)m(ws)24 b(lo)m(w)m(er)g(on)g(the)g(page)g(than)g(the)
-f(\014rst)g(line)g(prin)m(ted)f(in)g(the)i(previous)f(pass)g(blo)s(c)m
-(k.)38 b(Therefore,)150 4858 y(if)e(w)m(e)h(adv)-5 b(ance)38
-b(the)f(pap)s(er)f(b)m(y)h Fc(J)46 b Fu(ro)m(ws)37 b(b)s(et)m(w)m(een)g
-(eac)m(h)i(pass,)f(w)m(e)g(can)f(prin)m(t)e(the)j(righ)m(t)e(n)m(um)m
-(b)s(er)g(of)150 4967 y(passes)30 b(in)f(eac)m(h)j(blo)s(c)m(k)e(and)g
-(adv)-5 b(ance)30 b(the)h(pap)s(er)e(p)s(erfectly)h(ev)m(enly)-8
-b(.)275 5105 y(Here's)31 b(what)f(this)f(\\p)s(erfect")i(w)m(ea)m(v)m
-(e)i(lo)s(oks)d(lik)m(e:)1345 5236 y Fr(start)46 b(of)h(full)g(weave)
-1345 5340 y(|)p eop
-%%Page: 45 50
-45 49 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(45)390 299 y Fr(0)47
-b(*---*---*---*---*---*---*)390 403 y(1)382 b(*---*---*---*---*---*--)o
-(-*)390 506 y(2)716 b(*---*---*---*---*---*--)o(-*)390
-610 y(3)1050 b(*---*---*---*---*---*--)o(-*)390 714 y(4)1384
-b(*---*---*---*---*---*---)o(*)390 818 y(5)1718 b
-(*---*---*---*---*---*---)o(*)390 922 y(6)2052 b
-(*---*---*---*---*---*---)o(*)390 1025 y(7)2386 b
-(*---*---*---*---*---*---*)390 1129 y(8)2720 b(*---*---*---*---*---*-)
-390 1233 y(9)3054 b(*---*---*---*--)390 1337 y(10)3340
-b(*---*---)390 1440 y(11)3674 b(*)275 1572 y Fu(Y)-8
-b(ou'll)28 b(notice)h(that,)h(for)e(the)h(\014rst)f(few)h(ro)m(ws,)g
-(this)f(w)m(ea)m(v)m(e)j(is)d(to)s(o)h(sparse.)40 b(It)29
-b(is)f(not)h(un)m(til)e(the)i(ro)m(w)150 1681 y(mark)m(ed)35
-b(\\start)h(of)f(full)e(w)m(ea)m(v)m(e")38 b(that)d(ev)m(ery)h
-(subsequen)m(t)e(ro)m(w)h(is)f(prin)m(ted.)53 b(W)-8
-b(e)36 b(can)g(calculate)f(this)150 1791 y(start)c(p)s(osition)d(as)j
-(follo)m(ws:)390 1916 y Fc(star)s(t)72 b Fu(=)h(\()p
-Fc(S)25 b Fs(\000)20 b Fu(1\))69 b Fs(\003)f Fu(\()p
-Fc(J)30 b Fs(\000)20 b Fu(1\))275 2047 y(F)-8 b(or)34
-b(the)f(momen)m(t,)j(w)m(e)d(will)e(ignore)i(this)g(problem)f(with)g
-(the)h(w)m(ea)m(v)m(e.)53 b(W)-8 b(e'll)33 b(consider)f(later)i(ho)m(w)
-150 2157 y(to)d(\014ll)d(in)h(the)i(missing)d(ro)m(ws.)275
-2288 y(Let's)j(lo)s(ok)e(at)j(a)e(few)h(more)f(examples)g(of)g(p)s
-(erfect)h(w)m(ea)m(v)m(es:)150 2419 y Fc(S)f Fu(=)25
-b(2,)31 b Fc(J)k Fu(=)25 b(7,)31 b Fc(star)s(t)24 b Fu(=)h(\(2)c
-Fs(\000)f Fu(1\))h Fs(\003)f Fu(\(7)h Fs(\000)f Fu(1\))26
-b(=)f(6:)772 2544 y Fr(starting)45 b(row)i(of)g(full)g(weave)772
-2648 y(|)390 2752 y(0)g(*-*-*-*-*-*-*)390 2855 y(1)382
-b(*-*-*-*-*-*-*)390 2959 y(2)716 b(*-*-*-*-*-*-*)390
-3063 y(3)1050 b(*-*-*-*-*-*-*)390 3167 y(4)1384 b(*-*-*-*-*-*-*)390
-3271 y(5)1718 b(*-*-*-*-*-*-*)390 3374 y(6)2052 b(*-*-*-*-*-*-*)390
-3478 y(7)2386 b(*-*-*-*-*-*-*)150 3609 y Fc(S)30 b Fu(=)25
-b(7,)31 b Fc(J)k Fu(=)25 b(2,)31 b Fc(star)s(t)24 b Fu(=)h(6:)772
-3734 y Fr(start)772 3838 y(|)390 3942 y(0)47 b(*------*)390
-4046 y(1)143 b(*------*)390 4150 y(2)238 b(*------*)390
-4253 y(3)334 b(*------*)390 4357 y(4)429 b(*------*)390
-4461 y(5)525 b(*------*)390 4565 y(6)620 b(*------*)390
-4668 y(7)716 b(*------*)390 4772 y(8)811 b(*------*)390
-4876 y(9)907 b(*------*)150 5007 y Fc(S)30 b Fu(=)25
-b(4,)31 b Fc(J)k Fu(=)25 b(13,)31 b Fc(star)s(t)24 b
-Fu(=)h(36:)2204 5132 y Fr(start)2204 5236 y(|)390 5340
-y(0)47 b(*---*---*---*---*---*---*-)o(--*-)o(--*)o(---*)o(---*)o(---)o
-(*---)o(*)p eop
-%%Page: 46 51
-46 50 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(46)390 299 y Fr(1)668
-b(*---*---*---*---*---*---)o(*---)o(*--)o(-*--)o(-*--)o(-*-)o(--*-)o
-(--*)390 403 y(2)1288 b(*---*---*---*---*---*---*-)o(--*)o(---*)o(---*)
-o(---)o(*---)o(*---)o(*)390 506 y(3)1909 b(*---*---*---*---*---*---)o
-(*--)o(-*--)o(-*--)o(-*-)o(-)390 610 y(4)2529 b
-(*---*---*---*---*---*---*)o(-)390 714 y(5)3150 b(*---*---*---*)150
-853 y Fc(S)30 b Fu(=)25 b(13,)32 b Fc(J)i Fu(=)25 b(4,)31
-b Fc(star)s(t)24 b Fu(=)h(36:)2204 986 y Fr(start)2204
-1090 y(|)390 1193 y(0)47 b(*------------*------------)o(*---)o(---)o
-(----)o(--*)390 1297 y(1)238 b(*------------*------------)o(*--)o(----)
-o(----)o(--*)390 1401 y(2)429 b(*------------*-----------)o(-*--)o
-(----)o(---)o(---*)390 1505 y(3)620 b(*------------*-----------)o(-*--)
-o(---)o(----)o(---*)390 1608 y(4)811 b(*------------*-----------)o(-*-)
-o(----)o(----)o(---)o(*)390 1712 y(5)1002 b(*------------*----------)o
-(--*-)o(----)o(---)o(----)o(*)390 1816 y(6)1193 b
-(*------------*----------)o(--*-)o(---)o(----)o(----)o(*)390
-1920 y(7)1384 b(*------------*----------)o(--*)o(----)o(----)o(---)o
-(-*)390 2024 y(8)1575 b(*------------*---------)o(---*)o(----)o(---)o
-(----)o(-*)390 2127 y(9)1766 b(*------------*---------)o(---*)o(---)o
-(----)o(----)o(-*)390 2231 y(10)1909 b(*------------*---------)o(---)o
-(*---)o(----)o(---)o(-)390 2335 y(11)2099 b(*------------*------------)
-o(*---)o(---)o(-)390 2439 y(12)2290 b(*------------*------------)o(*--)
-o(-)390 2542 y(13)2481 b(*------------*-----------)o(-)390
-2646 y(14)2672 b(*------------*--------)390 2750 y(15)2863
-b(*------------*----)390 2854 y(16)3054 b(*------------*)390
-2958 y(17)3245 b(*---------)390 3061 y(18)3436 b(*-----)390
-3165 y(19)3627 b(*-)150 3304 y Fc(S)30 b Fu(=)25 b(8,)31
-b Fc(J)k Fu(=)25 b(5,)31 b Fc(star)s(t)24 b Fu(=)h(28:)1822
-3437 y Fr(start)1822 3541 y(|)390 3644 y(0)47 b
-(*-------*-------*-------*-)o(----)o(--*)390 3748 y(1)286
-b(*-------*-------*-------*)o(---)o(----)o(*)390 3852
-y(2)525 b(*-------*-------*------)o(-*--)o(----)o(-*)390
-3956 y(3)763 b(*-------*-------*-------*-)o(---)o(---*)390
-4060 y(4)1002 b(*-------*-------*-------)o(*---)o(----)o(*)390
-4163 y(5)1241 b(*-------*-------*------)o(-*--)o(---)o(--*)390
-4267 y(6)1479 b(*-------*-------*-------*)o(----)o(---*)390
-4371 y(7)1718 b(*-------*-------*-------)o(*---)o(---)o(-*)390
-4475 y(8)1957 b(*-------*-------*------)o(-*-)o(----)o(--*)390
-4578 y(9)2195 b(*-------*-------*-------*)o(----)o(---)o(*)390
-4682 y(10)2386 b(*-------*-------*-------)o(*--)o(-)390
-4786 y(11)2624 b(*-------*-------*------)390 4890 y(12)2863
-b(*-------*-------*-)390 4994 y(13)3102 b(*-------*----)390
-5097 y(14)3340 b(*-------)390 5201 y(15)3579 b(*--)150
-5340 y Fc(S)30 b Fu(=)25 b(9,)31 b Fc(J)k Fu(=)25 b(5,)31
-b Fc(star)s(t)24 b Fu(=)h(32:)p eop
-%%Page: 47 52
-47 51 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(47)2013 299 y Fr(start)2013
-403 y(|)390 506 y(0)47 b(*--------*--------*-------)o(-*--)o(---)o
-(---*)390 610 y(1)286 b(*--------*--------*------)o(--*)o(----)o(----)o
-(*)390 714 y(2)525 b(*--------*--------*----)o(----)o(*---)o(---)o(--*)
-390 818 y(3)763 b(*--------*--------*-------)o(-*-)o(----)o(---*)390
-922 y(4)1002 b(*--------*--------*-----)o(---*)o(----)o(---)o(-*)390
-1025 y(5)1241 b(*--------*--------*----)o(----)o(*--)o(----)o(--*)390
-1129 y(6)1479 b(*--------*--------*------)o(--*-)o(----)o(---)o(*)390
-1233 y(7)1718 b(*--------*--------*-----)o(---*)o(---)o(----)o(-*)390
-1337 y(8)1957 b(*--------*--------*----)o(---)o(-*--)o(----)o(--*)390
-1440 y(9)2195 b(*--------*--------*------)o(--*-)o(---)o(-)390
-1544 y(10)2386 b(*--------*--------*-----)o(---)o(*)390
-1648 y(11)2624 b(*--------*--------*----)390 1752 y(12)2863
-b(*--------*--------)390 1856 y(13)3102 b(*--------*---)390
-1959 y(14)3340 b(*-------)390 2063 y(15)3579 b(*--)150
-2234 y Fc(S)30 b Fu(=)25 b(6,)31 b Fc(J)k Fu(=)25 b(7,)31
-b Fc(star)s(t)24 b Fu(=)h(30:)1917 2400 y Fr(start)1917
-2504 y(|)390 2608 y(0)47 b(*-----*-----*-----*-----*-)o(----)o(*--)o
-(---*)390 2711 y(1)382 b(*-----*-----*-----*----)o(-*-)o(----)o(*---)o
-(--*)390 2815 y(2)716 b(*-----*-----*-----*----)o(-*--)o(---)o(*---)o
-(--*)390 2919 y(3)1050 b(*-----*-----*-----*----)o(-*--)o(---*)o(---)o
-(--*)390 3023 y(4)1384 b(*-----*-----*-----*-----)o(*--)o(---*)o(----)o
-(-*)390 3126 y(5)1718 b(*-----*-----*-----*-----)o(*---)o(--*)o(----)o
-(-*)390 3230 y(6)2052 b(*-----*-----*-----*-----)o(*---)o(--*-)o(---)o
-(-)390 3334 y(7)2386 b(*-----*-----*-----*-----*)o(---)o(-)390
-3438 y(8)2720 b(*-----*-----*-----*---)390 3542 y(9)3054
-b(*-----*-----*--)390 3645 y(10)3340 b(*-----*-)390 3749
-y(11)3674 b(*)150 4047 y Fg(B.2.3)63 b(W)-10 b(ea)m(ving)40
-b(collisions)275 4277 y Fu(This)28 b(p)s(erfect)i(w)m(ea)m(v)m(e)j(is)c
-(not)i(p)s(ossible)d(in)h(all)g(cases.)42 b(Let's)31
-b(lo)s(ok)f(at)h(another)g(example:)150 4448 y Fc(S)f
-Fu(=)25 b(6,)31 b Fc(J)k Fu(=)25 b(4:)390 4614 y Fr(0)47
-b(*-----*-----*-----*)390 4717 y(1)238 b(*-----*-----*-----*)390
-4821 y(2)429 b(*-----*-----*-----*)390 4925 y(3)620 b
-(*-----*-----*-----*)390 5029 y(4)g(^)143 b(*-^---*-----*-----*)390
-5132 y(5)620 b(|)143 b(^)48 b(|)f(*-^---*-----*-----*)1058
-5236 y(OUCH!)142 b(^)47 b(|)143 b(^)1440 5340 y(|)238
-b(|)p eop
-%%Page: 48 53
-48 52 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(48)150 299 y(Here)26
-b(w)m(e)h(ha)m(v)m(e)g(a)f(collision.)37 b(Some)26 b(lines)e(prin)m
-(ted)h(in)f(later)i(passes)g(o)m(v)m(erprin)m(t)g(lines)e(prin)m(ted)g
-(b)m(y)i(earlier)150 408 y(passes.)40 b(W)-8 b(e)30 b(can)g(see)f(wh)m
-(y)g(b)m(y)g(considering)e(whic)m(h)h(ro)m(w)h(n)m(um)m(b)s(er)f(is)g
-(prin)m(ted)f(b)m(y)i(a)h(giv)m(en)f(jet)g(n)m(um)m(b)s(er)150
-518 y Fc(j)36 b Fu(\(n)m(um)m(b)s(ered)29 b(from)h(0\))h(of)g(a)g(giv)m
-(en)f(pass,)g Fc(p)p Fu(:)390 655 y Fc(r)s(ow)r Fu(\()p
-Fc(p;)63 b(j)5 b Fu(\))74 b(=)f Fc(p)20 b Fs(\003)h Fc(J)56
-b Fu(+)48 b Fc(j)26 b Fs(\003)20 b Fc(S)275 799 y Fu(Because)28
-b Fc(J)35 b Fu(=)25 b(4)i(and)g Fc(S)j Fu(=)25 b(6)j(ha)m(v)m(e)h(a)f
-(common)f(factor)i(of)e(2,)i(jet)f(2)f(of)h(pass)f(0)h(prin)m(ts)d(the)
-j(same)g(ro)m(w)150 908 y(as)j(jet)f(0)h(of)g(pass)f(3:)390
-1046 y Fc(r)s(ow)r Fu(\(0)p Fc(;)64 b Fu(2\))74 b(=)f(0)20
-b Fs(\003)h Fu(4)48 b(+)f(2)21 b Fs(\003)g Fu(6)73 b(=)g(12)390
-1150 y Fc(r)s(ow)r Fu(\(3)p Fc(;)64 b Fu(0\))74 b(=)f(3)20
-b Fs(\003)h Fu(4)48 b(+)f(0)21 b Fs(\003)g Fu(6)73 b(=)g(12)275
-1293 y(In)25 b(fact,)j(with)c(this)h(particular)f(w)m(ea)m(v)m(e)29
-b(pattern,)e(jets)f(0)g(and)g(1)g(of)g(pass)f Fc(p)p
-Fu(+3)h(alw)m(a)m(ys)h(o)m(v)m(erprin)m(t)f(jets)150
-1402 y(2)33 b(and)g(3)g(of)g(pass)g Fc(p)p Fu(.)48 b(W)-8
-b(e'll)33 b(represen)m(t)g(o)m(v)m(erprin)m(ting)f(ro)m(ws)h(b)m(y)g(a)
-g(`)p Fr(^)p Fu(')g(in)f(our)g(diagrams,)h(and)g(correct)150
-1512 y(ro)m(ws)d(b)m(y)h(`)p Fr(*)p Fu(':)150 1655 y
-Fc(S)f Fu(=)25 b(6)31 b Fc(J)j Fu(=)25 b(4:)390 1793
-y Fr(0)47 b(*-----*-----*-----*)390 1896 y(1)238 b(*-----*-----*-----*)
-390 2000 y(2)429 b(*-----*-----*-----*)390 2104 y(3)620
-b(^-----^-----*-----*)390 2208 y(4)811 b(^-----^-----*-----*)390
-2311 y(5)1002 b(^-----^-----*-----*)150 2553 y Fg(B.2.4)63
-b(What)40 b(mak)m(es)f(a)i(\\p)s(erfect")g(w)m(ea)m(v)m(e?)275
-2754 y Fu(So)30 b(what)g(causes)g(the)h(p)s(erfect)f(w)m(ea)m(v)m(e)i
-(cases)f(to)g(b)s(e)f(p)s(erfect,)g(and)g(the)g(other)h(cases)g(not)f
-(to)h(b)s(e?)40 b(In)150 2864 y(all)26 b(the)i(p)s(erfect)f(cases)h(ab)
-s(o)m(v)m(e,)h Fc(S)j Fu(and)27 b Fc(J)36 b Fu(are)28
-b(relativ)m(ely)f(prime)e(\(i.e.)40 b(their)27 b(greatest)i(common)e
-(divisor)150 2974 y(\(GCD\))40 b(is)f(1\).)68 b(As)39
-b(w)m(e)h(men)m(tioned)f(ab)s(o)m(v)m(e,)k Fc(S)i Fu(=)40
-b(6)f(and)g Fc(J)49 b Fu(=)40 b(4)g(ha)m(v)m(e)g(a)g(common)f(factor,)k
-(whic)m(h)150 3083 y(causes)37 b(the)f(o)m(v)m(erprin)m(ting.)58
-b(Where)37 b Fc(S)k Fu(and)36 b Fc(J)46 b Fu(ha)m(v)m(e)37
-b(a)g(GCD)g(of)f(1,)j(they)d(ha)m(v)m(e)i(no)e(common)h(factor)150
-3193 y(other)c(than)f(1)h(and,)g(as)f(a)h(result,)g(no)f(o)m(v)m
-(erprin)m(ting)g(o)s(ccurs.)47 b(If)32 b Fc(S)37 b Fu(and)32
-b Fc(J)42 b Fu(are)33 b(not)f(relativ)m(ely)g(prime,)150
-3302 y(their)d(common)i(factor)g(will)d(cause)j(o)m(v)m(erprin)m(ting.)
-275 3446 y(W)-8 b(e)27 b(can)g(w)m(ork)f(out)h(the)f(greatest)i(common)
-f(divisor)d(of)j(a)f(pair)g(of)g(natural)g(n)m(um)m(b)s(ers)e(using)h
-(Euler's)150 3555 y(algorithm:)330 3698 y(Start)31 b(with)e(the)h(t)m
-(w)m(o)i(n)m(um)m(b)s(ers:)39 b(\(e.g.\))k(9,)31 b(24)330
-3837 y(Sw)m(ap)f(them)g(if)g(necessary)g(so)h(that)g(the)f(larger)h
-(one)f(comes)h(\014rst:)40 b(24,)32 b(9)330 3976 y(Subtract)e(the)h
-(second)f(n)m(um)m(b)s(er)f(from)h(the)h(\014rst:)39
-b(15,)32 b(9)330 4115 y(Rep)s(eat)f(un)m(til)e(the)h(\014rst)g(n)m(um)m
-(b)s(er)f(b)s(ecomes)h(smaller:)40 b(6,)31 b(9)330 4254
-y(Sw)m(ap)f(the)g(n)m(um)m(b)s(ers)f(again,)i(so)g(the)f(larger)g(one)h
-(comes)g(\014rst:)40 b(9,)31 b(6)330 4393 y(Subtract)f(again:)41
-b(3,)31 b(6)330 4532 y(Sw)m(ap:)40 b(6,)31 b(3)330 4671
-y(Subtract:)40 b(3,)31 b(3)330 4809 y(And)e(again:)41
-b(0,)31 b(3)330 4948 y(When)25 b(one)h(of)f(the)h(n)m(um)m(b)s(ers)e(b)
-s(ecomes)h(0,)i(the)f(other)f(n)m(um)m(b)s(er)f(is)h(the)g(GCD)h(of)f
-(the)h(t)m(w)m(o)g(n)m(um)m(b)s(ers)330 5058 y(y)m(ou)31
-b(started)g(with.)275 5230 y(These)h(rep)s(eated)h(subtractions)e(can)i
-(b)s(e)f(done)h(with)e(C's)h(`)p Fr(\045)p Fu(')h(op)s(erator,)h(so)f
-(w)m(e)g(can)g(write)f(this)f(in)150 5340 y(C)f(as)h(follo)m(ws:)p
-eop
-%%Page: 49 54
-49 53 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(49)390 299 y Fr(unsigned)46
-b(int)390 403 y(gcd\(unsigned)e(int)j(x,)h(unsigned)d(int)i(y\))390
-506 y({)581 610 y(if)g(\(y)g(==)g(0\))772 714 y(return)f(x;)581
-818 y(while)g(\(x)h(!=)h(0\))f({)772 922 y(if)g(\(y)g(>)h(x\))963
-1025 y(swap)e(\(&x,)h(&y\);)772 1129 y(x)g(\045=)g(y;)581
-1233 y(})581 1337 y(return)f(y;)390 1440 y(})275 1590
-y Fu(`)p Fr(gcd\(S,J\))p Fu(')28 b(will)g(feature)j(quite)e(prominen)m
-(tly)g(in)g(our)h(w)m(ea)m(ving)h(algorithm.)275 1739
-y(If)38 b(0)p Fc(<)i Fu(=)g Fc(j)5 b(<J)k Fu(,)42 b(there)d(should)e
-(only)h(b)s(e)h(a)g(single)f(pair)g(\()p Fc(p;)15 b(j)5
-b Fu(\))40 b(for)f(an)m(y)h(giv)m(en)f(ro)m(w)g(n)m(um)m(b)s(er.)65
-b(If)150 1849 y Fc(S)50 b Fu(and)45 b Fc(J)55 b Fu(are)46
-b(not)f(relativ)m(ely)g(prime,)j(this)c(assumption)g(breaks)i(do)m(wn.)
-85 b(\(F)-8 b(or)47 b(conciseness,)i(let)150 1959 y Fc(G)26
-b Fu(=)f(GCD\()p Fc(S;)15 b(J)9 b Fu(\).\))150 2108 y
-Fc(S)30 b Fu(=)25 b(8,)31 b Fc(J)k Fu(=)25 b(6,)31 b
-Fc(G)25 b Fu(=)g(2:)390 2252 y Fr(0)47 b(*-------*-------*-------*-)o
-(----)o(--*)o(----)o(---*)390 2356 y(1)334 b(*-------*-------*-------)o
-(*--)o(----)o(-*--)o(---)o(--*)390 2459 y(2)620 b
-(*-------*-------*-------*)o(----)o(---)o(*---)o(----)o(*)390
-2563 y(3)907 b(*-------*-------*------)o(-*-)o(----)o(--*-)o(---)o
-(---*)390 2667 y(4)1193 b(^-------^-------^-------)o(*---)o(---)o(-*--)
-o(----)o(-*)390 2771 y(5)1479 b(^-------^-------^-------*)o(----)o
-(---*)o(---)o(----)o(*)275 2920 y Fu(In)29 b(this)g(case,)j(jets)f(0,)g
-(1)g(and)e(2)i(of)g(pass)f Fc(p)p Fu(+)o(4)h(collide)e(with)g(jets)h
-(3,)h(4)g(and)f(5)h(of)f(pass)g Fc(p)p Fu(.)275 3070
-y(Ho)m(w)37 b(can)g(w)m(e)g(calculate)g(these)g(n)m(um)m(b)s(ers?)58
-b(Supp)s(ose)35 b(w)m(e)i(w)m(ere)g(to)h(prin)m(t)d(using)g(few)m(er)i
-(jets,)i(sa)m(y)150 3179 y Fc(J)t(=G)34 b Fu(jets.)48
-b(The)32 b(greatest)i(common)f(divisor)e(of)h Fc(J)t(=G)i
-Fu(and)e Fc(S)38 b Fu(is)31 b(1,)j(enabling)d(a)i(p)s(erfect)g(w)m(ea)m
-(v)m(e.)50 b(But)150 3289 y(to)31 b(get)h(a)e(p)s(erfect)h(w)m(ea)m(v)m
-(e,)i(w)m(e)d(also)h(ha)m(v)m(e)g(to)g(adv)-5 b(ance)31
-b(the)g(pap)s(er)e(b)m(y)i(a)f(factor)i(of)e Fc(G)h Fu(less:)390
-3433 y Fr(0)47 b(*-------*-------*)330 b(-)k(-)g(-)390
-3536 y(1)191 b(*-------*-------*)329 b(-)334 b(-)g(-)390
-3640 y(2)g(*-------*-------*)329 b(-)334 b(-)g(-)390
-3744 y(3)477 b(*-------*-------*)329 b(-)334 b(-)g(-)390
-3848 y(4)620 b(*-------*-------*)330 b(-)j(-)h(-)390
-3952 y(5)763 b(*-------*-------*)330 b(-)k(-)f(-)275
-4101 y Fu(If)27 b(w)m(e)h(left)f(the)h(pap)s(er)f(adv)-5
-b(ance)28 b(alone,)h(w)m(e'd)e(get)i(a)f(sparse)g(w)m(ea)m(v)m(e;)j
-(only)c(one)h(ro)m(w)f(can)h(b)s(e)f(prin)m(ted)150 4211
-y(ev)m(ery)k Fc(G)g Fu(ro)m(ws:)390 4354 y Fr(0)47 b(*-------*-------*)
-330 b(-)k(-)g(-)390 4458 y(1)g(*-------*-------*)329
-b(-)334 b(-)g(-)390 4562 y(2)620 b(*-------*-------*)330
-b(-)j(-)h(-)390 4666 y(3)907 b(*-------*-------*)329
-b(-)334 b(-)g(-)390 4770 y(4)1193 b(*-------*-------*)329
-b(-)334 b(-)g(-)390 4873 y(5)1479 b(*-------*-------*)330
-b(-)k(-)f(-)1106 4977 y(^)47 b(^)h(^)f(^)h(^)f(^)h(^)f(^)h(^)f(^)g(^)
-1058 5081 y(These)g(rows)f(need)h(filling)f(in.)275 5230
-y Fu(The)26 b(ro)m(ws)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s(een)e(prin)m
-(ted)f(b)m(y)i(the)g(jets)g(w)m(e'v)m(e)h(no)m(w)f(omitted)g(\(sho)m
-(wn)f(as)h(`)p Fr(-)p Fu('\))h(are)150 5340 y(prin)m(ted)h(b)m(y)h
-(other)h(jets)f(on)h(later)f(passes.)p eop
-%%Page: 50 55
-50 54 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(50)275 299 y(Let's)38
-b(analyse)f(this.)60 b(Consider)36 b(ho)m(w)h(a)h(pass)f
-Fc(p)g Fu(could)g(collide)e(with)h(pass)h(0.)63 b(P)m(ass)37
-b Fc(p)g Fu(starts)h(at)150 408 y(o\013set)33 b Fc(p)21
-b Fs(\003)g Fc(J)9 b Fu(.)46 b(P)m(ass)32 b(0)g(prin)m(ts)f(at)h(ro)m
-(ws)g(whic)m(h)f(are)h(m)m(ultiples)d(of)j Fc(S)5 b Fu(.)46
-b(If)31 b Fc(p)21 b Fs(\003)h Fc(J)40 b Fu(is)31 b(exactly)i(divisible)
-28 b(b)m(y)150 518 y Fc(S)5 b Fu(,)29 b(a)h(collision)c(has)j(o)s
-(ccurred,)f(unless)f Fc(p)17 b Fs(\003)h Fc(J)9 b(>)25
-b Fu(=)g Fc(J)h Fs(\003)18 b Fc(S)33 b Fu(\(whic)m(h)28
-b(will)e(happ)s(en)i(when)f(w)m(e)j(\014nish)c(a)j(pass)150
-628 y(blo)s(c)m(k\).)275 769 y(So,)41 b(w)m(e)f(w)m(an)m(t)g(to)g
-(\014nd)e Fc(p)h Fu(and)f Fc(q)k Fu(suc)m(h)d(that)h
-Fc(p)26 b Fs(\003)g Fc(J)50 b Fu(=)39 b Fc(q)29 b Fs(\003)e
-Fc(S)44 b Fu(and)39 b Fc(p)g Fu(is)f(minimised.)64 b(Then)38
-b Fc(p)h Fu(is)150 878 y(the)33 b(n)m(um)m(b)s(er)f(of)h(ro)m(ws)g(b)s
-(efore)f(a)i(collision,)d(and)h Fc(q)k Fu(is)c(the)h(n)m(um)m(b)s(er)f
-(of)h(jets)g(in)f(pass)g(0)i(whic)m(h)d(are)j(not)150
-988 y(in)m(v)m(olv)m(ed)27 b(in)f(the)i(collision.)37
-b(T)-8 b(o)28 b(do)f(this,)h(w)m(e)f(\014nd)f(the)i(lo)m(w)m(est)g
-(common)g(m)m(ultiple)d(of)j Fc(J)36 b Fu(and)27 b Fc(S)5
-b Fu(,)28 b(whic)m(h)150 1098 y(is)34 b Fc(L)e Fu(=)h
-Fc(J)f Fs(\003)24 b Fc(S=G)p Fu(.)54 b Fc(L=J)45 b Fu(is)34
-b(the)h(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(b)s(efore)f(a)h(collision,)f
-(and)g Fc(L=S)40 b Fu(is)34 b(the)h(n)m(um)m(b)s(er)f(of)150
-1207 y(jets)d(in)e(the)h(\014rst)g(pass)g(not)h(in)m(v)m(olv)m(ed)f(in)
-f(the)h(collision.)275 1348 y(Th)m(us,)40 b(w)m(e)g(see)g(that)f(the)h
-(\014rst)e Fc(J)t(=G)i Fu(ro)m(ws)g(prin)m(ted)d(b)m(y)i(a)h(giv)m(en)f
-(pass)g(are)g(not)h(o)m(v)m(erprin)m(ted)f(b)m(y)150
-1458 y(an)m(y)31 b(later)f(pass.)40 b(Ho)m(w)m(ev)m(er,)33
-b(the)d(rest)h(of)f(the)g(ro)m(ws)h(prin)m(ted)d(b)m(y)j(pass)e
-Fc(p)h Fu(are)h(o)m(v)m(erprin)m(ted)f(b)m(y)g(the)h(\014rst)150
-1567 y Fc(J)f Fs(\000)21 b Fu(\()p Fc(J)t(=G)p Fu(\))33
-b(jets)f(of)g(pass)f Fc(p)p Fu(+\()p Fc(S=G)p Fu(\).)46
-b(W)-8 b(e)33 b(will)c(use)i Fc(C)38 b Fu(to)33 b(refer)e(to)i
-Fc(S=G)p Fu(,)g(the)f(n)m(um)m(b)s(er)e(of)i(ro)m(ws)f(after)150
-1677 y(whic)m(h)e(a)i(collision)d(o)s(ccurs.)275 1818
-y(Another)i(example:)150 1959 y Fc(S)g Fu(=)25 b(6,)31
-b Fc(J)k Fu(=)25 b(9,)31 b Fc(G)25 b Fu(=)g(3,)31 b Fc(C)h
-Fu(=)25 b Fc(S=G)h Fu(=)f(2:)390 2095 y Fr(0)47 b
-(*-----*-----*-----*-----*-)o(----)o(*--)o(---*)o(----)o(-*-)o(----)o
-(*)390 2198 y(1)477 b(*-----*-----*-----*-----)o(*---)o(--*-)o(---)o
-(-*--)o(---*)o(---)o(--*)390 2302 y(2)907 b(^-----^-----^-----^----)o
-(-^-)o(----)o(^---)o(--*)o(----)o(-*--)o(---)o(*)390
-2406 y(3)1336 b(^-----^-----^-----^-----^)o(---)o(--^-)o(----)o(*--)o
-(---*)o(----)o(-*)390 2510 y(4)1766 b(^-----^-----^-----^----)o(-^--)o
-(---)o(^---)o(--*-)o(---)o(-)390 2614 y(5)2195 b
-(^-----^-----^-----^-----^)o(----)o(-^-)o(-)820 2717
-y(^^)47 b(^^)g(^^)g(^^)g(^^)g(^^)h(^^)f(^^)g(^^)g(^^)g(^^)h(^^)f(^^)g
-(^^)g(^^)g(^^)g(^^)h(^^)f(^^)g(^^)g(^^)g(^^)h(^^)f(^^)1058
-2821 y(These)g(rows)f(need)h(filling)f(in.)150 2962 y
-Fu(In)30 b(this)f(case,)j(the)e(\014rst)g Fc(J)f Fs(\000)20
-b Fu(\()p Fc(J)t(=G)p Fu(\))27 b(=)e(9)c Fs(\000)e Fu(9)p
-Fc(=)p Fu(3)27 b(=)e(6)31 b(jets)f(of)h(pass)f Fc(p)p
-Fu(+)o(\(6)p Fc(=)p Fu(3\))e(=)d Fc(p)p Fu(+)o(2)31 b(collide)e(with)g
-(the)150 3072 y(last)h(6)h(jets)g(of)f(pass)g Fc(p)p
-Fu(.)41 b(Only)28 b(one)j(ro)m(w)f(in)g(ev)m(ery)h Fc(G)25
-b Fu(=)g(2)31 b(ro)m(ws)g(is)e(prin)m(ted)g(b)m(y)h(this)f(w)m(ea)m(v)m
-(e.)150 3213 y Fc(S)h Fu(=)25 b(9,)31 b Fc(J)k Fu(=)25
-b(6,)31 b Fc(G)25 b Fu(=)g(3,)31 b Fc(C)h Fu(=)25 b(3:)390
-3348 y Fr(0)47 b(*--------*--------*-------)o(-*--)o(---)o(---*)o(----)
-o(---)o(-*)390 3452 y(1)334 b(*--------*--------*-----)o(---)o(*---)o
-(----)o(-*-)o(----)o(---*)390 3556 y(2)620 b(*--------*--------*------)
-o(--*-)o(---)o(----)o(*---)o(---)o(--*)390 3660 y(3)907
-b(^--------^--------^----)o(---)o(-^--)o(----)o(--*)o(----)o(----)o(*)
-390 3763 y(4)1193 b(^--------^--------^-----)o(---^)o(---)o(----)o
-(-*--)o(---)o(---*)390 3867 y(5)1479 b(^--------^--------^------)o
-(--^-)o(----)o(---)o(*---)o(----)o(-*)150 4008 y Fu(Here,)32
-b(the)g(\014rst)e Fc(J)g Fs(\000)20 b Fu(\()p Fc(J)t(=G)p
-Fu(\))29 b(=)d(6)21 b Fs(\000)g Fu(6)p Fc(=)p Fu(3)28
-b(=)e(4)32 b(jets)f(of)g(pass)g Fc(p)p Fu(+\(9)p Fc(=)p
-Fu(3\))d(=)f Fc(p)p Fu(+)o(3)32 b(collide)d(with)h(the)i(last)f(4)150
-4118 y(jets)g(of)f(pass)g Fc(p)p Fu(.)275 4259 y(Note)36
-b(that,)i(in)c(these)i(o)m(v)m(erprin)m(ting)f(cases,)j(only)c(ro)m(ws)
-i(divisible)31 b(b)m(y)36 b Fc(G)g Fu(are)g(ev)m(er)g(prin)m(ted.)54
-b(The)150 4369 y(other)31 b(ro)m(ws,)f(those)h(not)g(divisible)26
-b(b)m(y)31 b Fc(G)p Fu(,)g(are)f(not)h(touc)m(hed)g(b)m(y)f(this)f(w)m
-(ea)m(v)m(e.)275 4510 y(W)-8 b(e)28 b(can)g(mo)s(dify)d(our)i(w)m(ea)m
-(v)m(e)i(pattern)f(to)g(a)m(v)m(oid)g(o)m(v)m(erprin)m(ting)e(an)m(y)i
-(ro)m(ws)f(and)g(sim)m(ultaneously)e(\014ll)150 4619
-y(in)30 b(the)i(missing)d(ro)m(ws.)44 b(Instead)31 b(of)h(using)e
-Fc(J)41 b Fu(alone)31 b(to)h(determine)f(the)g(start)h(of)g(eac)m(h)h
-(pass)e(from)g(the)150 4729 y(previous)c(pass,)h(w)m(e)h(adjust)f(the)g
-(starting)g(p)s(osition)e(of)j(some)f(passes.)40 b(As)29
-b(men)m(tioned)e(b)s(efore,)i(w)m(e)g(will)150 4839 y(divide)c(the)i
-(page)h(in)m(to)f(pass)g(blo)s(c)m(ks,)g(with)f Fc(S)32
-b Fu(passes)27 b(in)f(eac)m(h)i(blo)s(c)m(k.)40 b(This)25
-b(ensures)h(that)i(the)f(\014rst)f(jet)150 4948 y(of)j(the)h(\014rst)e
-(pass)h(in)f(a)i(blo)s(c)m(k)f(prin)m(ts)e(the)j(ro)m(w)f(whic)m(h)f
-(the)h Fc(J)9 b Fu(th)30 b(jet)f(of)h(the)f(\014rst)g(pass)g(of)g(the)g
-(previous)150 5058 y(blo)s(c)m(k)h(w)m(ould)f(ha)m(v)m(e)j(prin)m(ted,)
-d(if)g(the)i(prin)m(t)e(head)h(had)g(one)g(extra)h(jet.)275
-5199 y(Lo)s(oking)e(bac)m(k)i(at)h(an)e(example)g(of)g(a)h(p)s(erfect)f
-(w)m(ea)m(v)m(e,)j(w)m(e)e(can)g(divide)d(it)i(in)m(to)g(pass)g(blo)s
-(c)m(ks:)150 5340 y Fc(S)g Fu(=)25 b(7,)31 b Fc(J)k Fu(=)25
-b(2,)31 b Fc(G)25 b Fu(=)g(1:)p eop
-%%Page: 51 56
-51 55 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(51)1154 299 y Fr(imaginary)45
-b(extra)h(jet)1154 403 y(|)390 506 y(0)h(*------*)285
-b(*)h(<--start)45 b(of)i(pass)g(block)f(0)390 610 y(1)143
-b(*------*)189 b(|)390 714 y(2)238 b(*------*)94 b(|)390
-818 y(3)334 b(*------*|)390 922 y(4)429 b(*-----|*)390
-1025 y(5)525 b(*---|--*)390 1129 y(6)620 b(*-|----*)1154
-1233 y(|)390 1337 y(7)716 b(*------*)93 b(<--start)45
-b(of)j(pass)e(block)h(1)390 1440 y(8)811 b(*------*)390
-1544 y(9)907 b(*------*)275 1679 y Fu(W)-8 b(e)33 b(can)f(no)m(w)g
-(calculate)h(the)f(start)g(of)h(a)f(giv)m(en)g(pass)g(b)m(y)g
-(reference)g(to)h(its)e(pass)h(blo)s(c)m(k.)45 b(The)32
-b(\014rst)150 1788 y(pass)k(of)h(pass)g(blo)s(c)m(k)f
-Fc(b)h Fu(alw)m(a)m(ys)g(starts)g(at)h(ro)m(w)f(\()p
-Fc(b)25 b Fs(\003)g Fc(S)k Fs(\003)c Fc(J)9 b Fu(\).)60
-b(The)37 b(start)g(ro)m(w)g(of)g(eac)m(h)h(of)f(the)g(other)150
-1898 y(passes)30 b(in)f(the)i(blo)s(c)m(k)f(are)h(calculated)f(using)f
-(o\013sets)i(from)f(this)f(ro)m(w.)275 2033 y(F)-8 b(or)38
-b(the)f(example)g(ab)s(o)m(v)m(e,)k(there)d(are)f(7)h(passes)f(in)f
-(eac)m(h)j(pass)e(blo)s(c)m(k,)i(and)e(their)f(o\013sets)j(are)e(0,)150
-2142 y(2,)f(4,)g(6,)f(8,)h(10)f(and)f(12.)53 b(The)34
-b(next)g(pass)g(blo)s(c)m(k)g(is)f(o\013set)i Fc(S)28
-b Fs(\003)23 b Fc(J)41 b Fu(=)31 b(14)k(ro)m(ws)f(from)g(the)h(start)f
-(of)h(the)150 2252 y(curren)m(t)30 b(pass)g(blo)s(c)m(k.)275
-2387 y(The)c(simplest)g(w)m(a)m(y)i(to)g(mo)s(dify)d(the)i(\\p)s
-(erfect")h(w)m(ea)m(v)m(e)i(pattern)d(to)h(giv)m(e)g(a)f(correct)i(w)m
-(ea)m(v)m(e)g(in)d(cases)150 2496 y(where)37 b Fc(G)p
-Fu(!)g(=)f(1)i(is)e(to)i(simply)d(c)m(hange)j(an)m(y)f(o\013sets)h
-(whic)m(h)e(w)m(ould)g(result)g(in)g(a)i(collision,)e(un)m(til)g(the)
-150 2606 y(collision)f(disapp)s(ears.)59 b(Ev)m(ery)37
-b(prin)m(ted)f(ro)m(w)h(in)f(the)h(w)m(ea)m(v)m(e,)k(as)d(w)m(e)f(ha)m
-(v)m(e)i(sho)m(wn)d(it)h(up)f(to)i(no)m(w,)h(is)150 2715
-y(separated)g(from)g(eac)m(h)h(of)f(its)f(neigh)m(b)s(ouring)e(prin)m
-(ted)h(ro)m(ws)i(b)m(y)g Fc(G)g Fu(blank)f(ro)m(ws.)66
-b(W)-8 b(e)40 b(will)c(add)i(an)150 2825 y(extra)29 b(o\013set)g(to)g
-(eac)m(h)g(colliding)c(pass)j(in)f(suc)m(h)h(a)g(w)m(a)m(y)h(that)g(w)m
-(e)f(push)f(the)h(pass)g(on)m(to)h(these)g(otherwise)150
-2935 y(blank)g(ro)m(ws.)275 3069 y(W)-8 b(e)33 b(ha)m(v)m(e)g(seen)f
-(that,)h(unless)d Fc(G)e Fu(=)f(1,)33 b(the)f(plain)e(w)m(ea)m(v)m(e)k
-(pattern)e(results)f(in)f(eac)m(h)j(pass)f(colliding)150
-3179 y(with)24 b(the)i(pass)f Fc(S=G)h Fu(passes)f(b)s(efore.)39
-b(W)-8 b(e)26 b(will)d(no)m(w)i(sub)s(divide)d(our)j(pass)g(blo)s(c)m
-(k)g(in)m(to)g(subblo)s(c)m(ks,)g(eac)m(h)150 3288 y(consisting)k(of)i
-Fc(B)f Fu(=)24 b Fc(S=G)32 b Fu(passes.)40 b(There)30
-b(are)h(therefore)g Fc(G)f Fu(subblo)s(c)m(ks)f(in)g(a)i(pass)f(blo)s
-(c)m(k.)275 3423 y(F)-8 b(or)37 b(eac)m(h)i(subblo)s(c)m(k,)e(the)h
-(passes)f(in)f(that)h(subblo)s(c)m(k)f(ha)m(v)m(e)i(a)g(constan)m(t)g
-(o\013set)g(added)f(to)h(them.)150 3533 y(The)27 b(o\013set)h(is)e
-(di\013eren)m(t)h(for)g(eac)m(h)h(subblo)s(c)m(k)d(in)h(a)i(blo)s(c)m
-(k.)39 b(There)27 b(are)g(man)m(y)h(w)m(a)m(ys)f(w)m(e)h(can)g(c)m(ho)s
-(ose)g(the)150 3642 y(o\013sets,)k(but)f(the)g(simplest)e(is)h(to)i
-(mak)m(e)g(the)f(o\013set)h(equal)e(to)i(the)f(subblo)s(c)m(k)f(n)m(um)
-m(b)s(er)f(\(starting)i(from)150 3752 y(0\).)275 3887
-y(Th)m(us,)42 b(the)e(passes)g(in)f(the)i(\014rst)e(subblo)s(c)m(k)g
-(in)g(eac)m(h)j(pass)d(blo)s(c)m(k)h(remain)g(at)h(the)f(o\013sets)h(w)
-m(e'v)m(e)150 3996 y(already)34 b(calculated)f(from)h
-Fc(J)9 b Fu(.)51 b(The)34 b(passes)f(in)g(the)h(second)g(subblo)s(c)m
-(k)e(eac)m(h)k(ha)m(v)m(e)f(1)f(added)f(to)i(their)150
-4106 y(o\013set,)d(the)f(passes)g(in)e(the)i(third)e(subblo)s(c)m(k)g
-(ha)m(v)m(e)j(2)g(added,)e(and)g(so)h(on.)42 b(Th)m(us,)30
-b(the)h(o\013set)h(of)f(pass)f Fc(p)150 4215 y Fu(\(n)m(um)m(b)s(ered)f
-(relativ)m(e)i(to)g(the)f(start)h(of)g(its)f(pass)g(blo)s(c)m(k\))g(is)
-f Fc(p)20 b Fs(\003)h Fc(J)9 b Fu(+\015o)s(or)o(\()p
-Fc(p=B)c Fu(\).)275 4350 y(This)28 b(giv)m(es)j(us)f(a)g(w)m(ea)m(v)m
-(e)j(pattern)d(lo)s(oking)g(lik)m(e)f(this:)150 4485
-y Fc(S)h Fu(=)25 b(6,)31 b Fc(J)k Fu(=)25 b(9,)31 b Fc(G)25
-b Fu(=)g(3,)31 b Fc(B)f Fu(=)25 b(2:)390 4614 y Fr(0)47
-b(*-----*-----*-----*-----*-)o(----)o(*--)o(---*)o(----)o(-*-)o(----)o
-(*)390 4717 y(1)g(^)382 b(*-----*-----*-----*-----)o(*---)o(--*-)o(---)
-o(-*--)o(---*)o(---)o(--*)390 4821 y(2)47 b(|)668 b(+->)47
-b(*-----*-----*-----*-----*)o(----)o(-*--)o(---)o(*---)o(--*-)o(---)o
-(-*)390 4925 y(3)g(|)668 b(|)573 b(*-----*-----*-----*-----)o(*--)o
-(---*)o(----)o(-*-)o(----)o(*---)o(--*)390 5029 y(4)47
-b(|)668 b(|)859 b(+->)47 b(*-----*-----*-----*-----*)o(---)o(--*-)o
-(----)o(*--)o(-)390 5132 y(5)g(|)668 b(|)859 b(|)573
-b(*-----*-----*-----*----)o(-*--)o(---)o(*)390 5236 y(6)47
-b(|)668 b(|)859 b(|)716 b(+->)47 b(*-----*-----*-----*----)o(-)390
-5340 y(7)g(|)668 b(|)859 b(|)716 b(|)572 b(*-----*-----*--)p
-eop
-%%Page: 52 57
-52 56 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(52)485 299 y Fr(|)668
-b(|)859 b(|)620 b(start)47 b(of)g(pass)g(block)f(1)485
-403 y(|)668 b(|)859 b(|)620 b(\(offset)46 b(returns)g(to)h(0\))485
-506 y(|)668 b(|)859 b(start)47 b(of)g(subblock)e(2)j(\(offset)e(2)h
-(rows\))485 610 y(|)668 b(start)47 b(of)g(subblock)e(1)j(\(following)d
-(passes)h(offset)g(by)h(1)h(row\))485 714 y(start)f(of)g(passblock)e
-(0,)i(subblock)f(0)h(\(pass)g(start)f(calculated)f(as)i(p*J\))150
-857 y Fc(S)30 b Fu(=)25 b(9,)31 b Fc(J)k Fu(=)25 b(6,)31
-b Fc(G)25 b Fu(=)g(3,)31 b Fc(B)f Fu(=)25 b(3:)390 994
-y Fr(0)47 b(*--------*--------*-------)o(-*--)o(---)o(---*)o(----)o
-(---)o(-*)390 1098 y(1)334 b(*--------*--------*-----)o(---)o(*---)o
-(----)o(-*-)o(----)o(---*)390 1201 y(2)620 b(*--------*--------*------)
-o(--*-)o(---)o(----)o(*---)o(---)o(--*)390 1305 y(3)954
-b(*--------*--------*------)o(--*-)o(----)o(---)o(*---)o(----)o(-*)390
-1409 y(4)1241 b(*--------*--------*----)o(----)o(*--)o(----)o(--*-)o
-(---)o(----)o(*)390 1513 y(5)1527 b(*--------*--------*-----)o(---*)o
-(----)o(---)o(-*--)o(----)o(--*)390 1616 y(6)1861 b
-(*--------*--------*------)o(--*)o(----)o(----)o(*--)o(-)390
-1720 y(7)2147 b(*--------*--------*-------)o(-*--)o(---)o(-)390
-1824 y(8)2434 b(*--------*--------*-----)o(---)o(*)390
-1928 y(9)2625 b(*--------*--------*----)o(-)390 2032
-y(10)2386 b(\\---/)237 b(*--------*--------)390 2135
-y(11)2243 b(small)46 b(offset)332 b(*--------*--)390
-2239 y(12)3484 b(*----)275 2382 y Fu(This)25 b(metho)s(d)i(of)g(c)m(ho)
-s(osing)g(o\013sets)h(for)g(subblo)s(c)m(ks)d(can)j(result)e(in)g(an)h
-(o)s(ccasional)g(small)f(o\013set)i(\(as)150 2491 y(sho)m(wn)i(ab)s(o)m
-(v)m(e\))h(b)s(et)m(w)m(een)g(one)f(pass)g(and)g(the)g(next,)h
-(particularly)c(when)j Fc(G)g Fu(is)f(large)i(compared)f(to)h
-Fc(J)9 b Fu(.)150 2601 y(F)-8 b(or)31 b(example:)150
-2744 y Fc(S)f Fu(=)25 b(8,)31 b Fc(J)k Fu(=)25 b(4,)31
-b Fc(G)25 b Fu(=)g(4,)31 b Fc(B)f Fu(=)25 b(2:)390 2881
-y Fr(0)47 b(*-------*-------*-------*)390 2985 y(1)238
-b(*-------*-------*-------*)390 3088 y(2)477 b
-(*-------*-------*-------)o(*)390 3192 y(3)668 b
-(*-------*-------*-------)o(*)390 3296 y(4)907 b
-(*-------*-------*------)o(-*)390 3400 y(5)1097 b
-(*-------*-------*-------*)390 3504 y(6)1336 b
-(*-------*-------*-------*)390 3607 y(7)1527 b
-(*-------*-------*-------)o(*)390 3711 y(8)1575 b
-(*-------*-------*------)o(-*)390 3815 y(9)1527 b(\\/)143
-b(*-------*-------*------)o(-*)1822 3919 y(very)46 b(small)h(offset!)
-275 4061 y Fu(W)-8 b(e)31 b(can)g(plot)f(the)g(o\013set)i(against)e
-(the)h(subblo)s(c)m(k)e(n)m(um)m(b)s(er)g(as)h(follo)m(ws:)390
-4198 y Fr(subblock)46 b(number)390 4302 y(|)h(offset)390
-4406 y(|)g(|)390 4510 y(|)g(0123)390 4614 y(0)g(*)390
-4717 y(1)95 b(*)390 4821 y(2)143 b(*)390 4925 y(3)191
-b(*)390 5029 y(0)47 b(*)390 5132 y(1)95 b(*)390 5236
-y(2)143 b(*)390 5340 y(3)191 b(*)p eop
-%%Page: 53 58
-53 57 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(53)150 299 y(The)30
-b(discon)m(tin)m(uit)m(y)f(in)g(this)g(plot)h(results)f(in)g(the)i
-(small)e(o\013set)i(b)s(et)m(w)m(een)g(passes.)275 432
-y(As)36 b(w)m(e)h(said)f(at)i(the)e(b)s(eginning,)g(w)m(e)h(w)m(an)m(t)
-h(the)f(o\013sets)h(from)e(eac)m(h)i(pass)e(to)h(the)g(next)g(to)h(b)s
-(e)e(as)150 541 y(similar)21 b(as)i(p)s(ossible.)36 b(W)-8
-b(e)25 b(can)e(\014x)g(this)f(b)m(y)i(calculating)e(the)i(o\013set)g
-(for)f(a)h(giv)m(en)f(subblo)s(c)m(k)f(b)h(as)h(follo)m(ws:)485
-669 y Fr(offset\(b\))46 b(=)h(2*b)620 b(,)47 b(if)g(b)h(<)f
-(ceiling\(G/2\))963 772 y(=)g(2*\(G-b\)-1)332 b(,)47
-b(otherwise)275 905 y Fu(W)-8 b(e)31 b(can)g(visualise)d(this)h(as)i
-(follo)m(ws,)f(for)g Fc(G)25 b Fu(=)g(10:)485 1033 y
-Fr(0123456789)390 1136 y(0)47 b(*)390 1240 y(1)143 b(*)390
-1344 y(2)238 b(*)390 1448 y(3)334 b(*)390 1551 y(4)429
-b(*)390 1655 y(5)477 b(*)390 1759 y(6)382 b(*)390 1863
-y(7)286 b(*)390 1967 y(8)191 b(*)390 2070 y(9)95 b(*)390
-2174 y(0)47 b(*)390 2278 y(1)143 b(*)390 2382 y(2)238
-b(*)390 2485 y(3)334 b(*)390 2589 y(4)429 b(*)390 2693
-y(5)477 b(*)390 2797 y(6)382 b(*)390 2901 y(7)286 b(*)390
-3004 y(8)191 b(*)390 3108 y(9)95 b(*)150 3241 y Fu(and)30
-b(for)g Fc(G)c Fu(=)f(11:)1010 3368 y Fr(1)533 3472 y(01234567890)438
-3576 y(0)47 b(*)438 3680 y(1)143 b(*)438 3783 y(2)238
-b(*)438 3887 y(3)334 b(*)438 3991 y(4)429 b(*)438 4095
-y(5)524 b(*)438 4198 y(6)477 b(*)438 4302 y(7)381 b(*)438
-4406 y(8)286 b(*)438 4510 y(9)190 b(*)390 4614 y(10)95
-b(*)438 4717 y(0)47 b(*)438 4821 y(1)143 b(*)438 4925
-y(2)238 b(*)438 5029 y(3)334 b(*)438 5132 y(4)429 b(*)438
-5236 y(5)524 b(*)438 5340 y(6)477 b(*)p eop
-%%Page: 54 59
-54 58 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(54)438 299 y Fr(7)381
-b(*)438 403 y(8)286 b(*)438 506 y(9)190 b(*)390 610 y(10)95
-b(*)150 747 y Fu(This)29 b(giv)m(es)h(a)h(w)m(ea)m(v)m(e)i(lo)s(oking)c
-(lik)m(e)h(this:)150 884 y Fc(S)g Fu(=)25 b(12,)32 b
-Fc(J)i Fu(=)25 b(6,)31 b Fc(G)26 b Fu(=)f(6,)31 b Fc(B)f
-Fu(=)24 b(2:)390 1015 y Fr(0)47 b(*-----------*-----------*-)o(----)o
-(---)o(---*)o(----)o(---)o(----)o(*---)o(---)o(----)o(-*)390
-1119 y(1)334 b(*-----------*-----------)o(*--)o(----)o(----)o(-*-)o
-(----)o(----)o(--*)o(----)o(----)o(---)o(*)390 1222 y(2)716
-b(*-----------*----------)o(-*--)o(---)o(----)o(--*-)o(---)o(----)o
-(---*)o(---)o(----)o(----)o(*)390 1326 y(3)1002 b
-(*-----------*-----------)o(*---)o(----)o(---)o(-*--)o(----)o(---)o
-(--*-)o(----)o(---)o(-)390 1430 y(4)1384 b(*-----------*-----------)o
-(*--)o(----)o(----)o(-*-)o(----)o(----)o(--*)o(-)390
-1534 y(5)1670 b(*-----------*-----------*)o(----)o(---)o(----)o(*---)o
-(---)o(-)390 1638 y(6)2004 b(*-----------*-----------*)o(----)o(----)o
-(---)o(*)390 1741 y(7)2291 b(*-----------*----------)o(-*--)o(---)o(-)
-390 1845 y(8)2482 b(*-----------*----------)o(-*-)o(-)390
-1949 y(9)2768 b(*-----------*--------)390 2053 y(10)2911
-b(*-----------*----)390 2156 y(11)3197 b(*----------)390
-2260 y(12)3436 b(*-----)275 2397 y Fu(This)28 b(metho)s(d)i(ensures)f
-(that)i(the)f(o\013set)i(b)s(et)m(w)m(een)f(passes)f(is)f(alw)m(a)m(ys)
-i(in)e(the)h(range)h([)p Fc(J)f Fs(\000)19 b Fu(2)p Fc(;)c(J)9
-b Fu(+)q(2].)275 2534 y(\(This)30 b(migh)m(t)h(seem)h(o)s(dd,)f(but)f
-(it)h(o)s(ccurs)h(to)g(me)g(that)g(a)g(go)s(o)s(d)f(w)m(ea)m(v)m(e)j
-(pattern)d(migh)m(t)g(also)h(mak)m(e)150 2643 y(a)e(go)s(o)s(d)f(score)
-h(for)f(b)s(ell)e(ringers.)40 b(When)29 b(c)m(h)m(urc)m(h)g(b)s(ells)e
-(are)j(rung,)f(a)h(list)e(of)h(\\c)m(hanges")j(are)e(used.)39
-b(F)-8 b(or)150 2753 y(example,)28 b(if)d(8)j(b)s(ells)c(are)k(b)s
-(eing)d(used,)i(they)h(will,)d(at)i(\014rst,)h(b)s(e)e(rung)g(in)f
-(order:)39 b(12345678.)k(If)27 b(the)g(\014rst)150 2863
-y(c)m(hange)k(is)d(for)h(b)s(ells)e(5)j(and)f(6,)h(the)g(b)s(ells)d
-(will)g(then)i(b)s(e)g(rung)f(in)h(the)g(order)g(12346578.)44
-b(If)29 b(the)h(second)150 2972 y(c)m(hange)j(is)d(1)j(and)e(2,)h(the)g
-(next)g(notes)g(are)g(21346578.)48 b(After)32 b(a)g(long)f(list)g(of)h
-(c)m(hanges,)h(the)f(order)f(the)150 3082 y(b)s(ells)d(are)j(rung)e(in)
-g(can)i(b)s(ecome)g(quite)f(complex.)275 3219 y(F)-8
-b(or)29 b(a)g(group)f(of)h(b)s(ell-ringers)d(to)j(c)m(hange)h(the)f
-(order)f(of)h(the)g(notes,)g(they)g(m)m(ust)g(eac)m(h)h(either)e(dela)m
-(y)150 3328 y(their)g(b)s(ell's)f(next)i(ring,)f(hasten)h(it,)g(or)g(k)
-m(eep)h(it)e(the)i(same)f(as)g(the)g(time)g(it)f(tak)m(es)j(to)f(ring)d
-(all)h(the)h(b)s(ells)150 3438 y(once.)40 b(The)27 b(length)f(of)h
-(time)g(b)s(et)m(w)m(een)g(eac)m(h)i(ring)c(of)i(a)h(giv)m(en)f(b)s
-(ell)d(can)k(only)e(b)s(e)g(c)m(hanged)i(a)f(little)f(eac)m(h)150
-3547 y(time,)39 b(though;)h(with)c(an)h(ink-jet)g(w)m(ea)m(v)m(e)i
-(pattern,)h(w)m(e)d(w)m(an)m(t)h(the)g(same)f(to)h(apply)e(to)i(the)f
-(distance)150 3657 y(b)s(et)m(w)m(een)31 b(passes.\))275
-3794 y(Finally)-8 b(,)44 b(kno)m(wing)f(the)g(n)m(um)m(b)s(er)e(of)j
-(jets)f Fc(J)52 b Fu(and)42 b(their)g(separation)h Fc(S)5
-b Fu(,)47 b(w)m(e)c(can)g(calculate)h(the)150 3903 y(starting)30
-b(ro)m(w)h(of)f(an)m(y)h(giv)m(en)f(pass)g Fc(p)g Fu(as)h(follo)m(ws:)
-390 4034 y Fr(passesperblock)44 b(=)j(S)390 4138 y(passblock)e(=)j
-(floor\(p)e(/)h(passesperblock\))390 4242 y(offsetinpassblock)c(=)48
-b(p)f(-)g(passblock)f(*)h(passesperblock)390 4346 y(subblocksperblock)c
-(=)48 b(gcd\(S,)e(J\))390 4449 y(passespersubblock)d(=)48
-b(S)f(/)g(subblocksperblock)390 4553 y(subpassblock)d(=)k
-(floor\(offsetinpassblock)41 b(/)48 b(passespersubblock\))390
-4657 y(if)f(subpassblock)e(<)i(ceiling\(subblocksperblock)o(/2\))581
-4761 y(subblockoffset)d(=)j(2*subpassblock)390 4865 y(else)581
-4968 y(subblockoffset)d(=)j(2*\(subblocksperblock-subp)o(assb)o(lock)o
-(\)-1)390 5072 y(startingrow)e(=)i(passblock)e(*)j(S)f(*)h(J)f(+)h
-(offsetinpassblock)43 b(*)k(J)h(+)f(subblockoffset)275
-5209 y Fu(W)-8 b(e)31 b(can)g(simplify)c(this)i(do)m(wn)h(to)h(the)g
-(follo)m(wing:)390 5340 y Fr(subblocksperblock)43 b(=)48
-b(gcd\(S,)e(J\))p eop
-%%Page: 55 60
-55 59 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(55)390 299 y Fr(subpassblock)44
-b(=)k(floor\(\(p)d(\045)j(S\))f(*)h(subblocksperblock)43
-b(/)k(S\))390 403 y(if)g(subpassblock)e(*)i(2)h(<)f(subblocksperblock)
-581 506 y(subblockoffset)d(=)j(2*subpassblock)390 610
-y(else)581 714 y(subblockoffset)d(=)j(2*\(subblocksperblock-subp)o
-(assb)o(lock)o(\)-1)390 818 y(startingrow)e(=)i(p)h(*)f(J)h(+)f
-(subblockoffset)275 956 y Fu(So)30 b(the)g(ro)m(w)h(n)m(um)m(b)s(er)e
-(of)h(jet)h Fc(j)36 b Fu(of)31 b(pass)f Fc(p)g Fu(is)390
-1088 y Fr(subblocksperblock)43 b(=)48 b(gcd\(S,)e(J\))390
-1295 y(subblockoffset\(p\))581 1399 y(=)h(2*subpassblock)331
-b(,)47 b(if)g(subpassblock)e(*)i(2)h(<)f(subblocksperblock)581
-1503 y(=)g(2*\(subblocksperblock-subpa)o(ssb)o(lock)o(\)-1)280
-b(,)47 b(otherwise)676 1607 y(where)676 1710 y(subpassblock)e(=)i
-(floor\(\(p)f(\045)h(S\))g(*)h(subblocksperblock)43 b(/)k(S\))390
-1918 y(row\(j,)f(p\))h(=)h(p)f(*)h(J)f(+)h(subblockoffset\(p\))43
-b(+)k(j)h(*)f(S)275 2056 y Fu(T)-8 b(ogether)26 b(with)e(the)h
-(inequalit)m(y)f(0)p Fc(<)h Fu(=)g Fc(j)5 b(<)q(J)k Fu(,)26
-b(w)m(e)g(can)g(use)f(this)f(de\014nition)f(in)h(rev)m(erse)i(to)g
-(calculate)150 2166 y(the)35 b(pass)g(n)m(um)m(b)s(er)e(con)m(taining)i
-(a)g(giv)m(en)g(ro)m(w,)h Fc(r)s Fu(.)54 b(W)-8 b(orking)35
-b(out)g(the)g(in)m(v)m(erse)g(de\014nition)e(in)m(v)m(olv)m(es)i(a)150
-2275 y(little)28 b(guessw)m(ork,)i(but)e(one)h(p)s(ossible)e(result)h
-(is)g(as)i(follo)m(ws.)39 b(Giv)m(en)29 b(a)g(ro)m(w,)h
-Fc(r)s Fu(,)f(whic)m(h)f(is)g(kno)m(wn)h(to)h(b)s(e)150
-2385 y(the)h(\014rst)e(ro)m(w)i(of)f(a)h(pass,)f(w)m(e)h(can)g
-(calculate)g(the)f(pass)g(n)m(um)m(b)s(er)f(as)i(follo)m(ws:)390
-2517 y Fr(subblocksperblock)43 b(=)48 b(gcd\(S,)e(J\))390
-2621 y(subblockoffset)e(=)j(r)h(\045)f(subblocksperblock)390
-2724 y(pass)g(=)g(\(r)g(-)h(subblockoffset\))43 b(/)48
-b(J)275 2862 y Fu(If)29 b Fc(G)d Fu(==)f(1,)31 b(w)m(e)g(can)f
-(determine)g(the)g(pass)g(n)m(um)m(b)s(er)f(with)h(this)f(algorithm:)
-390 2994 y Fr(offset)46 b(=)i(r)f(\045)g(J)390 3098 y(pass)g(=)g(\(r)g
-(-)h(offset\))e(/)h(J)390 3202 y(while)f(\(offset)g(\045)i(S)f(!=)g
-(0\))390 3306 y({)485 3410 y(pass--)485 3513 y(offset)g(+=)g(J)390
-3617 y(})390 3721 y(jet)g(=)g(offset)f(/)i(S)275 3859
-y Fu(Generalising,)28 b(w)m(e)j(come)h(up)d(with)g(this)g(algorithm.)40
-b(Giv)m(en)30 b Fc(r)s Fu(,)g Fc(S)36 b Fu(and)29 b Fc(J)9
-b Fu(:)390 3991 y Fr(G)47 b(=)h(gcd\(S,)e(J\))390 4095
-y(passespersubblock)d(=)48 b(S/G)390 4198 y(subblockoffset)c(=)j(r)h
-(\045)f(G)390 4302 y(subpassblock)d(=)k(subblockoffset)c(/)j(2)95
-b(,)48 b(if)f(subblockoffset)d(\045)j(2)h(==)f(0)1010
-4406 y(=)h(G)f(-)h(\(subblockoffset+1\)/2)185 b(,)48
-b(otherwise)390 4510 y(baserow)e(=)h(r)h(-)f(subblockoffset)d(-)k
-(\(subpassblock)c(*)j(passespersubblock)c(*)48 b(J\))390
-4614 y(offset)e(=)i(baserow)d(\045)j(J)390 4717 y(pass)f(=)g(\(baserow)
-f(-)h(offset\))f(/)h(J)390 4821 y(while)f(\(offset)g(\045)i(S)f(!=)g
-(0\))390 4925 y({)485 5029 y(offset)g(+=)g(J)485 5132
-y(pass)g(-=)g(1)390 5236 y(})390 5340 y(subblockretreat)d(=)j
-(floor\(pass)e(/)j(passespersubblock\))42 b(\045)48 b(G)p
-eop
-%%Page: 56 61
-56 60 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(56)390 299 y Fr(pass)47
-b(-=)g(subblockretreat)c(*)48 b(passespersubblock)390
-403 y(pass)f(+=)g(subpassblock)d(*)k(passespersubblock)390
-506 y(jet)f(=)g(\(r)h(-)f(subblockoffset)d(-)j(pass)g(*)g(J\))h(/)f(S)
-275 646 y Fu(Let's)31 b(lo)s(ok)e(at)j(some)e(examples)g(of)h(imp)s
-(erfect)e(but)h(correct)h(w)m(ea)m(v)m(e)i(patterns:)150
-785 y Fc(S)d Fu(=)25 b(6,)31 b Fc(J)k Fu(=)25 b(4,)31
-b(GCD)25 b(=)g(2,)150 895 y(passesp)s(erblo)s(c)m(k=)p
-Fc(S)5 b Fu(=6,)150 1005 y(passesp)s(ersubblo)s(c)m(k=)p
-Fc(S=G)p Fu(=6/2=3:)390 1138 y Fr(0)47 b(*-----*-----*-----*)390
-1242 y(1)238 b(*-----*-----*-----*)390 1346 y(2)429 b
-(*-----*-----*-----*)390 1450 y(3)668 b(*-----*-----*-----*)390
-1553 y(4)859 b(*-----*-----*-----*)390 1657 y(5)1050
-b(*-----*-----*-----*)390 1761 y(6)1193 b(*-----*-----*-----*)390
-1865 y(7)1384 b(*-----*-----*-----*)390 1968 y(8)1575
-b(*-----*-----*-----*)390 2072 y(9)1813 b(*-----*-----*-----*)390
-2176 y(10)1956 b(*-----*-----*-----*)390 2280 y(11)2147
-b(*-----*-----*-----*)390 2384 y(12)2290 b(*-----*-----*-----*)390
-2487 y(13)2481 b(*-----*-----*-----*)390 2591 y(14)2672
-b(*-----*-----*-----*)390 2695 y(15)2911 b(*-----*-----*----)390
-2799 y(16)3102 b(*-----*-----*)390 2902 y(17)3293 b(*-----*--)390
-3006 y(18)3436 b(*-----)390 3110 y(19)3627 b(*-)150 3249
-y Fc(S)30 b Fu(=)25 b(8,)31 b Fc(J)k Fu(=)25 b(6,)31
-b Fc(G)25 b Fu(=)g(2,)150 3359 y(passesp)s(erblo)s(c)m(k=)p
-Fc(S)5 b Fu(=8,)150 3469 y(passesp)s(ersubblo)s(c)m(k=)p
-Fc(S=G)p Fu(=8/2=4:)390 3602 y Fr(0)47 b(*-------*-------*-------*-)o
-(----)o(--*)o(----)o(---*)390 3706 y(1)334 b(*-------*-------*-------)o
-(*--)o(----)o(-*--)o(---)o(--*)390 3810 y(2)620 b
-(*-------*-------*-------*)o(----)o(---)o(*---)o(----)o(*)390
-3914 y(3)907 b(*-------*-------*------)o(-*-)o(----)o(--*-)o(---)o
-(---*)390 4017 y(4)1241 b(*-------*-------*------)o(-*--)o(---)o(--*-)o
-(----)o(--*)390 4121 y(5)1527 b(*-------*-------*-------)o(*---)o(----)
-o(*--)o(----)o(-*)390 4225 y(6)1813 b(*-------*-------*-------*-)o(---)
-o(---*)o(----)o(---)o(*)390 4329 y(7)2100 b(*-------*-------*------)o
-(-*--)o(----)o(-*-)o(-)390 4433 y(8)2338 b(*-------*-------*-------*-)o
-(---)o(-)390 4536 y(9)2625 b(*-------*-------*------)o(-)390
-4640 y(10)2863 b(*-------*-------*-)390 4744 y(11)3149
-b(*-------*---)390 4848 y(12)3484 b(*----)150 4987 y
-Fc(S)30 b Fu(=)25 b(6,)31 b Fc(J)k Fu(=)25 b(12,)31 b
-Fc(G)26 b Fu(=)f(6,)150 5097 y(passesp)s(erblo)s(c)m(k=)p
-Fc(S)5 b Fu(=6,)150 5206 y(passesp)s(ersubblo)s(c)m(k=)p
-Fc(S=G)p Fu(=6/6=1:)390 5340 y Fr(0)47 b(*-----*-----*-----*-----*-)o
-(----)o(*--)o(---*)o(----)o(-*-)o(----)o(*---)o(--*)o(----)o(-*--)o
-(---)o(*)p eop
-%%Page: 57 62
-57 61 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(57)390 299 y Fr(1)716
-b(*-----*-----*-----*----)o(-*--)o(---)o(*---)o(--*-)o(---)o(-*--)o
-(---*)o(---)o(--*-)o(----)o(*--)o(-)390 403 y(2)1384
-b(*-----*-----*-----*-----)o(*--)o(---*)o(----)o(-*-)o(----)o(*---)o
-(--*)o(-)390 506 y(3)2004 b(*-----*-----*-----*-----*)o(----)o(-*--)o
-(---)o(*)390 610 y(4)2482 b(*-----*-----*-----*----)o(-*-)o(-)390
-714 y(5)2959 b(*-----*-----*----)390 818 y(6)3484 b(*-----)275
-962 y Fu(W)-8 b(e)34 b(ha)m(v)m(e)h(no)m(w)f(solv)m(ed)f(the)h(basic)f
-(w)m(ea)m(ving)h(problem.)49 b(There)33 b(are)h(t)m(w)m(o)h(further)d
-(re\014nemen)m(ts)h(w)m(e)150 1071 y(need)d(to)h(consider:)40
-b(o)m(v)m(ersampling,)30 b(and)g(\014lling)d(in)i(the)i(missing)d(ro)m
-(ws)i(at)h(the)g(start)g(of)g(the)f(w)m(ea)m(v)m(e.)150
-1315 y Fg(B.2.5)63 b(Ov)m(ersampling)275 1517 y Fu(By)37
-b(o)m(v)m(ersampling,)i(w)m(e)f(mean)f(prin)m(ting)e(on)i(the)h(same)g
-(ro)m(w)f(more)h(than)f(once.)62 b(There)37 b(are)h(t)m(w)m(o)150
-1626 y(reasons)25 b(for)g(o)m(v)m(ersampling:)38 b(to)26
-b(increase)f(the)h(horizon)m(tal)e(resolution)g(of)i(the)f(prin)m(tout)
-f(and)h(to)h(reduce)150 1736 y(banding.)275 1880 y(Ov)m(ersampling)21
-b(to)k(increase)e(horizon)m(tal)h(resolution)e(is)h(necessary)h(b)s
-(ecause,)h(although)e(the)h(prin)m(ter)150 1990 y(migh)m(t)30
-b(b)s(e)h(able)f(to)h(p)s(osition)e(an)i(ink)e(drop)h(to,)h(for)g
-(example,)g(1/1440)p Fr(")i Fu(horizon)m(tally)-8 b(,)30
-b(it)g(ma)m(y)i(not)f(b)s(e)150 2099 y(able)37 b(to)g(la)m(y)h(do)m(wn)
-e(t)m(w)m(o)j(suc)m(h)d(drops)g(1/1440)p Fr(")k Fu(apart.)61
-b(If)36 b(it)h(can)g(prin)m(t)f(t)m(w)m(o)i(drops)e(1/720)p
-Fr(")j Fu(apart,)150 2209 y(2x)g(o)m(v)m(ersampling)g(will)d(b)s(e)j
-(necessary)h(to)f(get)i(a)e(1/1440)p Fr(")j Fu(horizon)m(tal)c
-(resolution.)66 b(If)39 b(it)f(can)i(only)150 2318 y(prin)m(t)33
-b(t)m(w)m(o)i(drops)e(1/360)p Fr(")j Fu(apart,)f(4x)g(o)m(v)m
-(ersampling)e(will)f(b)s(e)h(necessary)i(for)e(a)i(1/1440)p
-Fr(")h Fu(horizon)m(tal)150 2428 y(resolution.)j(The)29
-b(prin)m(ter)f(enforces)i(this)f(\\drop)g(spacing")g(b)m(y)h(only)f
-(accepting)h(raster)g(passes)f(with)g(a)150 2538 y(horizon)m(tal)k
-(resolution)e(matc)m(hing)j(the)f(spacing)f(with)g(whic)m(h)g(it)g(can)
-i(prin)m(t)d(dots,)k(so)e(w)m(e)g(m)m(ust)g(prin)m(t)150
-2647 y(passes)k(at)h(di\013eren)m(t)e(horizon)m(tal)h(p)s(ositions)e
-(if)h(w)m(e)i(are)g(to)f(obtain)g(a)h(higher)d(horizon)m(tal)i
-(resolution.)150 2757 y(\(Another)24 b(reason)g(it)f(do)s(es)g(this)g
-(ma)m(y)h(b)s(e)f(to)i(reduce)e(the)h(amoun)m(t)g(of)g(memory)f(needed)
-h(in)e(the)i(prin)m(ter.\))275 2901 y(Ov)m(ersampling)42
-b(can)j(also)f(b)s(e)g(done)g(to)h(decrease)g(the)g(banding)d(apparen)m
-(t)j(in)e(an)h(image.)83 b(By)150 3010 y(splitting)32
-b(a)j(ro)m(w)f(in)m(to)h(t)m(w)m(o)g(or)g(more)f(sets)h(of)g(dots)f
-(\(\\lines"\))g(and)g(prin)m(ting)e(eac)m(h)k(line)d(on)h(the)h(same)
-150 3120 y(ro)m(w,)c(but)e(with)g(a)i(di\013eren)m(t)f(nozzle)h(for)f
-(eac)m(h)h(line,)e(w)m(e)i(can)g(get)g(a)g(smo)s(other)f(prin)m(t.)275
-3264 y(T)-8 b(o)23 b(quan)m(tify)f(these)h(t)m(w)m(o)h(kinds)d(of)i(o)m
-(v)m(ersampling,)h(w)m(e'll)e(in)m(tro)s(duce)f(t)m(w)m(o)j(new)f
-(constan)m(ts:)38 b Fc(H)29 b Fu(sho)m(ws)150 3374 y(ho)m(w)k(man)m(y)h
-(di\013eren)m(t)e(horizon)m(tal)h(o\013sets)h(w)m(e)g(w)m(an)m(t)g(to)g
-(prin)m(t)e(at)i(\(the)f(\\horizon)m(tal)h(o)m(v)m(ersampling"\))150
-3483 y(while)c Fc(O)35 b Fu(sho)m(ws)d(ho)m(w)h(man)m(y)f(times)g(w)m
-(e)h(w)m(an)m(t)g(to)g(prin)m(t)e(eac)m(h)i(ro)m(w,)g(o)m(v)m(er)h(and)
-e(ab)s(o)m(v)m(e)h(the)g(n)m(um)m(b)s(er)e(of)150 3593
-y(times)f(necessary)h(for)f(horizon)m(tal)g(o)m(v)m(ersampling)g(\(the)
-h(\\extra)g(o)m(v)m(ersampling"\).)275 3737 y(It)26 b(is)f(necessary)i
-(for)f(all)g(the)g(lines)f(prin)m(ted)g(b)m(y)h(a)h(giv)m(en)f(pass)g
-(to)i(ha)m(v)m(e)f(the)g(same)g(horizon)m(tal)f(o\013set,)150
-3846 y(but)32 b(there)h(need)g(not)g(b)s(e)f(an)m(y)i(relation)e(b)s
-(et)m(w)m(een)h(them)g(in)f(terms)h(of)g(extra)g(o)m(v)m(ersampling.)48
-b(F)-8 b(or)34 b(the)150 3956 y(momen)m(t,)29 b(ho)m(w)m(ev)m(er,)h(w)m
-(e)e(will)e(treat)i(all)f(o)m(v)m(ersampling)g(as)h(p)s(oten)m(tially)f
-(requiring)e(this)i(alignmen)m(t;)h(all)150 4066 y(lines)i(in)h(one)i
-(pass)f(m)m(ust)g(b)s(e)f(deriv)m(ed)h(from)f(the)i(original)d(ro)m(w)i
-(data)h(in)e(the)i(same)f(w)m(a)m(y)-8 b(.)48 b(Th)m(us,)32
-b(w)m(e'll)150 4175 y(assume)e Fc(O)e Fu(=)d(1)31 b(for)f(no)m(w.)275
-4319 y(So,)j(ho)m(w)f(do)g(w)m(e)h(do)f(this)g(o)m(v)m(ersampling?)45
-b(In)32 b(fact,)i(it)e(can)h(b)s(e)e(done)i(easily:)43
-b(adv)-5 b(ance)33 b(the)g(pap)s(er)150 4429 y(b)m(y)42
-b(a)g(factor)g(of)g Fc(H)49 b Fu(less)41 b(b)s(et)m(w)m(een)h(eac)m(h)h
-(pass.)74 b(W)-8 b(e'll)42 b(de\014ne)f(a)h(new)f(v)-5
-b(ariable,)44 b Fc(A)p Fu(,)h(to)d(sho)m(w)g(ho)m(w)150
-4538 y(m)m(uc)m(h)31 b(w)m(e)g(adv)-5 b(ance)32 b(the)f(pap)s(er)f(b)s
-(et)m(w)m(een)i(passes.)42 b(Previously)-8 b(,)30 b(w)m(e'd)h(ha)m(v)m
-(e)i(de\014ned)c Fc(A)e Fu(=)f Fc(J)9 b Fu(;)31 b(w)m(e)h(no)m(w)150
-4648 y(let)37 b Fc(A)e Fu(=)h Fc(J)t(=H)7 b Fu(.)60 b(This)35
-b(also)h(a\013ects)i(our)e(pass)h(blo)s(c)m(ks.)58 b(Prin)m(ting)35
-b(one)i(pass)f(blo)s(c)m(k)h(used)e(to)j(in)m(v)m(olv)m(e)150
-4758 y(adv)-5 b(ancing)35 b(the)i(pap)s(er)d Fc(S)29
-b Fs(\003)c Fc(J)45 b Fu(ro)m(ws;)39 b(it)c(no)m(w)h(adv)-5
-b(ances)37 b(the)f(pap)s(er)f Fc(S)29 b Fs(\003)24 b
-Fc(J)t(=H)44 b Fu(ro)m(ws.)57 b(W)-8 b(e)37 b(therefore)150
-4867 y(name)31 b(a)g(group)f(of)g Fc(H)38 b Fu(pass)30
-b(blo)s(c)m(ks)g(a)h(\\band".)41 b(Prin)m(ting)28 b(one)j(band)f(in)m
-(v)m(olv)m(es)g(adv)-5 b(ancing)30 b(the)h(pap)s(er)150
-4977 y Fc(S)25 b Fs(\003)c Fc(J)39 b Fu(ro)m(ws,)31 b(as)g(a)f(pass)g
-(blo)s(c)m(k)g(did)f(b)s(efore.)275 5121 y(T)-8 b(o)28
-b(k)m(eep)g(our)f(w)m(ea)m(v)m(e)j(pattern)e(w)m(orking)f(correctly)-8
-b(,)29 b(so)f(that)g(o)m(v)m(erprin)m(ting)f(do)s(es)g(not)h(o)s(ccur)f
-(within)150 5230 y(a)c(pass)g(blo)s(c)m(k,)h(w)m(e)g(also)f(ha)m(v)m(e)
-h(to)g(rede\014ne)e Fc(G)h Fu(as)h(GCD\()p Fc(S;)15 b(A)p
-Fu(\).)40 b(Here's)23 b(an)g(example)g(of)g(an)g(o)m(v)m(ersampled)150
-5340 y(w)m(ea)m(v)m(e)33 b(pattern:)p eop
-%%Page: 58 63
-58 62 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(58)150 299 y Fc(S)30
-b Fu(=)25 b(4,)31 b Fc(J)k Fu(=)25 b(10,)31 b Fc(H)h
-Fu(=)25 b(2,)31 b Fc(A)26 b Fu(=)f Fc(J)t(=H)32 b Fu(=)25
-b(10)p Fc(=)p Fu(2)i(=)e(5,)31 b Fc(G)26 b Fu(=)f(GCD\(4)p
-Fc(;)15 b Fu(5\))28 b(=)d(1,)150 408 y(passesp)s(erblo)s(c)m(k=)p
-Fc(S)5 b Fu(=4,)150 518 y(passesp)s(ersubblo)s(c)m(k=)p
-Fc(S=G)p Fu(=4/1=4:)390 656 y Fr(0)47 b(*---*---*---*---*---*---*-)o
-(--*-)o(--*)o(---*)390 760 y(1)286 b(*---*---*---*---*---*---*)o(---)o
-(*---)o(*---)o(*)390 863 y(2)525 b(*---*---*---*---*---*--)o(-*--)o
-(-*--)o(-*-)o(--*)390 967 y(3)763 b(*---*---*---*---*---*---*-)o(--*)o
-(---*)o(---*)390 1071 y(4)1002 b(*---*---*---*---*---*---)o(*---)o
-(*---)o(*--)o(-*)390 1175 y(5)1241 b(*---*---*---*---*---*--)o(-*--)o
-(-*-)o(--*-)o(--*)390 1278 y(6)1479 b(*---*---*---*---*---*---*)o(---*)
-o(---*)o(---)o(*)390 1382 y(7)1718 b(*---*---*---*---*---*---)o(*---)o
-(*--)o(-*--)o(-*)390 1486 y(8)1957 b(*---*---*---*---*---*--)o(-*-)o
-(--*-)o(--*-)o(--*)390 1590 y(9)2195 b(*---*---*---*---*---*---*)o
-(---*)o(---)o(*)390 1694 y(10)2386 b(*---*---*---*---*---*---)o(*--)o
-(-)390 1797 y(11)2624 b(*---*---*---*---*---*--)390 1901
-y(12)2863 b(*---*---*---*---*-)390 2005 y(13)3102 b(*---*---*---*)390
-2109 y(14)3340 b(*---*---)390 2212 y(15)3579 b(*--)275
-2356 y Fu(No)m(w)30 b(w)m(e)h(ha)m(v)m(e)g(to)g(determine)e(whic)m(h)g
-(line)g(is)g(prin)m(ted)g(b)m(y)h(eac)m(h)h(jet)f(on)g(eac)m(h)i(pass.)
-40 b(If)30 b(w)m(e)g(n)m(um)m(b)s(er)150 2465 y(eac)m(h)f(line)e
-(generated)i(as)g(w)m(e)f(split)e(up)i(a)g(ro)m(w,)h(w)m(e)g(can)f(use)
-g(these)h(n)m(um)m(b)s(ers.)38 b(W)-8 b(e'll)28 b(n)m(um)m(b)s(er)f
-(the)i(lines)150 2575 y(in)g(our)h(diagram)g(b)m(y)g(replacing)f(the)i
-(`)p Fr(*)p Fu('s)f(with)f(in)m(tegers)i(in)e(the)h(range)h([0)6
-b(.)23 b(.)f(.)11 b Fc(H)27 b Fs(\000)20 b Fu(1].)275
-2719 y(Ov)m(erprin)m(ting)30 b(o)s(ccurs)j(once)g(p)s(er)f(pass)g(blo)s
-(c)m(k,)h(so)g(w)m(e)h(can)f(simply)d(prin)m(t)h(pass)i(blo)s(c)m(k)f
-(0)h(with)f(line)150 2828 y(0,)e(pass)f(blo)s(c)m(k)f(1)h(with)f(line)g
-(1,)h(pass)g(blo)s(c)m(k)g(2)g(with)f(line)f(2,)j(etc,)h(wrapping)26
-b(to)k(0)g(when)e(w)m(e'v)m(e)i(run)e(out)150 2938 y(of)j(lines:)390
-3075 y Fr(0)47 b(0---0---0---0---0---0---0-)o(--0-)o(--0)o(---0)390
-3179 y(1)286 b(0---0---0---0---0---0---0)o(---)o(0---)o(0---)o(0)390
-3283 y(2)525 b(0---0---0---0---0---0--)o(-0--)o(-0--)o(-0-)o(--0)390
-3387 y(3)763 b(0---0---0---0---0---0---0-)o(--0)o(---0)o(---0)390
-3491 y(4)1002 b(1---1---1---1---1---1---)o(1---)o(1---)o(1--)o(-1)390
-3594 y(5)1241 b(1---1---1---1---1---1--)o(-1--)o(-1-)o(--1-)o(--1)390
-3698 y(6)1479 b(1---1---1---1---1---1---1)o(---1)o(---1)o(---)o(1)390
-3802 y(7)1718 b(1---1---1---1---1---1---)o(1---)o(1--)o(-1--)o(-1)390
-3906 y(8)1957 b(0---0---0---0---0---0--)o(-0-)o(--0-)o(--0-)o(--0)390
-4009 y(9)2195 b(0---0---0---0---0---0---0)o(---0)o(---)o(0)390
-4113 y(10)2386 b(0---0---0---0---0---0---)o(0--)o(-)390
-4217 y(11)2624 b(0---0---0---0---0---0--)390 4321 y(12)2863
-b(1---1---1---1---1-)390 4425 y(13)3102 b(1---1---1---1)390
-4528 y(14)3340 b(1---1---)390 4632 y(15)3579 b(1--)150
-4776 y Fc(S)30 b Fu(=)25 b(4,)31 b Fc(J)k Fu(=)25 b(12,)31
-b Fc(H)h Fu(=)25 b(2,)31 b Fc(A)26 b Fu(=)f Fc(J)t(=H)32
-b Fu(=)25 b(12)p Fc(=)p Fu(2)i(=)e(6,)31 b Fc(G)26 b
-Fu(=)f(GCD\(4)p Fc(;)15 b Fu(6\))28 b(=)d(2,)150 4885
-y(passesp)s(erblo)s(c)m(k=)p Fc(S)5 b Fu(=4,)150 4995
-y(passesp)s(ersubblo)s(c)m(k=)p Fc(S=G)p Fu(=4/2=2:)390
-5132 y Fr(0)47 b(0---0---0---0---0---0---0-)o(--0-)o(--0)o(---0)o(---0)
-o(---)o(0)390 5236 y(1)334 b(0---0---0---0---0---0---)o(0--)o(-0--)o
-(-0--)o(-0-)o(--0-)o(--0)390 5340 y(2)668 b(0---0---0---0---0---0---)o
-(0---)o(0--)o(-0--)o(-0--)o(-0-)o(--0)p eop
-%%Page: 59 64
-59 63 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(59)390 299 y Fr(3)954
-b(0---0---0---0---0---0---0)o(---0)o(---0)o(---)o(0---)o(0---)o(0)390
-403 y(4)1193 b(1---1---1---1---1---1---)o(1---)o(1--)o(-1--)o(-1--)o
-(-1-)o(--1)390 506 y(5)1479 b(1---1---1---1---1---1---1)o(---1)o(---1)o
-(---)o(1---)o(1---)o(1)390 610 y(6)1813 b(1---1---1---1---1---1---1-)o
-(--1)o(---1)o(---1)o(---)o(1)390 714 y(7)2100 b
-(1---1---1---1---1---1--)o(-1--)o(-1--)o(-1-)o(-)390
-818 y(8)2338 b(0---0---0---0---0---0---0-)o(--0)o(-)390
-922 y(9)2625 b(0---0---0---0---0---0--)o(-)390 1025 y(10)2911
-b(0---0---0---0---0)390 1129 y(11)3197 b(0---0---0--)390
-1233 y(12)3436 b(1---1-)275 1365 y Fu(But)27 b(what)g(do)h(w)m(e)g(do)f
-(if)f Fc(J)37 b Fu(is)26 b(not)i(an)f(exact)i(m)m(ultiple)c(of)j
-Fc(H)7 b Fu(?)39 b(This)26 b(is)g(a)i(di\016cult)e(problem,)g(whic)m(h)
-150 1474 y(I)i(struggled)g(with)g(for)g(quite)g(a)h(few)g(da)m(ys)f(b)s
-(efore)h(giving)e(in)g(and)h(taking)h(the)g(easy)g(\(but)f(less)g
-(elegan)m(t\))150 1584 y(w)m(a)m(y)34 b(out.)48 b(The)33
-b(easy)g(solution)f(is)g(to)h(round)f Fc(J)t(=H)40 b
-Fu(do)m(wn,)34 b(then)e(add)g(on)h(the)g(accum)m(ulated)h(error)e(at)
-150 1693 y(the)f(end)e(of)i(eac)m(h)g(band.)150 1825
-y Fc(S)f Fu(=)25 b(4,)31 b Fc(J)k Fu(=)25 b(11,)31 b
-Fc(H)h Fu(=)25 b(2)31 b Fc(A)25 b Fu(=)g(\015o)s(or\()p
-Fc(J)t(=H)7 b Fu(\))26 b(=)f(\015o)s(or\(11)p Fc(=)p
-Fu(2\))j(=)d(5,)31 b Fc(G)25 b Fu(=)g(GCD)q(\(4)p Fc(;)15
-b Fu(5\),)150 1935 y(passesp)s(erblo)s(c)m(k=)p Fc(S)5
-b Fu(=4,)150 2044 y(passesp)s(ersubblo)s(c)m(k=)p Fc(S=G)p
-Fu(=4/1=4)390 2171 y Fr(Band)47 b(0:)390 2274 y(0)g
-(0---0---0---0---0---0---0-)o(--0-)o(--0)o(---0)o(---0)390
-2378 y(1)286 b(0---0---0---0---0---0---0)o(---)o(0---)o(0---)o(0--)o
-(-0)390 2482 y(2)525 b(0---0---0---0---0---0--)o(-0--)o(-0--)o(-0-)o
-(--0-)o(--0)390 2586 y(3)763 b(0---0---0---0---0---0---0-)o(--0)o(---0)
-o(---0)o(---)o(0)390 2689 y(4)1002 b(1---1---1---1---1---1---)o(1---)o
-(1---)o(1--)o(-1--)o(-1)390 2793 y(5)1241 b(1---1---1---1---1---1--)o
-(-1--)o(-1-)o(--1-)o(--1-)o(--1)390 2897 y(6)1479 b
-(1---1---1---1---1---1---1)o(---1)o(---1)o(---)o(1---)o(1)390
-3001 y(7)1718 b(1---1---1---1---1---1---)o(1---)o(1--)o(-1--)o(-1--)o
-(-)390 3208 y(Band)47 b(1:)390 3312 y(8)g(|)2052 b
-(0---0---0---0---0---0---0-)o(--0-)o(--0)o(-)390 3416
-y(9)95 b(\\------------------------)o(----)o(---)o(----)o(----)o(--/)
-232 b(0---0---0---0---0---0---0)o(---)o(0)390 3520 y(10)906
-b(S*J)47 b(rows)1288 b(0---0---0---0---0---0--)o(-)390
-3623 y(11)2815 b(0---0---0---0---0--)390 3727 y(12)3054
-b(1---1---1---1-)390 3831 y(13)3293 b(1---1---1)390 3935
-y(14)3531 b(1---)275 4067 y Fu(W)-8 b(e)29 b(can)g(calculate)g(the)g
-(starting)f(ro)m(w)h(and)e(subpass)g(n)m(um)m(b)s(er)h(of)g(a)h(giv)m
-(en)g(pass)f(in)f(this)g(sc)m(heme)j(as)150 4176 y(follo)m(ws:)390
-4302 y Fr(A)47 b(=)h(floor\(J)e(/)h(H\))390 4406 y(subblocksperblock)c
-(=)48 b(gcd\(S,)e(A\))390 4510 y(subpassblock)e(=)k(floor\(\(p)d(\045)j
-(S\))f(*)h(subblocksperblock)43 b(/)k(S\))390 4614 y(if)g(subpassblock)
-e(*)i(2)h(<)f(subblocksperblock)581 4717 y(subblockoffset)d(=)j
-(2*subpassblock)390 4821 y(else)581 4925 y(subblockoffset)d(=)j
-(2*\(subblocksperblock-subp)o(assb)o(lock)o(\)-1)390
-5029 y(band)g(=)g(floor\(P)f(/)h(\(S)h(*)f(H\)\))390
-5132 y(passinband)e(=)i(P)h(\045)f(\(S)h(*)f(H\))390
-5236 y(startingrow)e(=)i(band)g(*)g(S)h(*)f(J)h(+)f(passinband)e(*)j(A)
-f(+)g(subblockoffset)390 5340 y(subpass)f(=)h(passinband)e(/)j(S)p
-eop
-%%Page: 60 65
-60 64 bop 150 -116 a Fu(App)s(endix)28 b(B:)j(W)-8 b(ea)m(ving)31
-b(for)f(inkjet)g(prin)m(ters)1899 b(60)275 299 y(So)30
-b(the)g(ro)m(w)h(n)m(um)m(b)s(er)e(of)h(jet)h Fc(j)36
-b Fu(of)31 b(pass)f Fc(p)g Fu(is)390 428 y Fr(A)47 b(=)h(floor\(J)e(/)h
-(H\))390 531 y(subblocksperblock)c(=)48 b(gcd\(S,)e(A\))390
-739 y(subblockoffset\(p\))581 843 y(=)h(2*subpassblock)331
-b(,)47 b(if)g(subpassblock)e(*)i(2)h(<)f(subblocksperblock)581
-946 y(=)g(2*\(subblocksperblock-subpa)o(ssb)o(lock)o(\)-1)280
-b(,)47 b(otherwise)676 1050 y(where)676 1154 y(subpassblock)e(=)i
-(floor\(\(p)f(\045)h(S\))g(*)h(subblocksperblock)43 b(/)k(S\))390
-1362 y(band\(p\))f(=)h(floor\(p)f(/)i(\(S)f(*)g(H\)\))390
-1465 y(passinband\(p\))d(=)k(p)f(\045)h(\(S)f(*)g(H\))390
-1673 y(row\(j,)f(p\))h(=)h(band\(p\))e(*)h(S)g(*)h(J)f(+)h
-(passinband\(p\))c(*)j(A)h(+)f(subblockoffset\(p\))c(+)48
-b(j)f(*)h(S)390 1777 y(row\(j,)e(p\))h(=)h(p)f(*)h(J)f(+)h
-(subblockoffset\(p\))43 b(+)k(j)h(*)f(S)275 1911 y Fu(T)-8
-b(o)30 b(b)s(e)g(con)m(tin)m(ued)5 b(.)22 b(.)g(.)g(.)p
-eop
-%%Page: 61 66
-61 65 bop 150 -116 a Fu(App)s(endix)28 b(C:)i(ESC/P2)2640
-b(61)150 299 y Fp(App)t(endix)53 b(C)81 b(ESC/P2)150
-718 y Ft(C.1)68 b(In)l(tro)t(duction)45 b(to)g(ESC/P2)275
-924 y Fu(This)24 b(is)h(a)h(description)e(of)i(the)g(ESC/P2)g(raster)g
-(commands)g(used)f(b)m(y)h(the)g(gimp-prin)m(t)e(plugin)g(and)150
-1034 y(Ghostscript)37 b(driv)m(er,)h(whic)m(h)e(is)h(a)h(subset)e(of)i
-(the)g(complete)g(command)f(set.)62 b(The)37 b(full)e(do)s(cumen)m(ts)
-150 1143 y(are)26 b(found)f(on)h Fr(http://www.ercipd.com/isv)o(/ed)o
-(r_do)o(cs.h)o(tm)p Fu(.)33 b(Note)27 b(that)g(these)g(are)f
-Fi(not)g Fu(alw)m(a)m(ys)150 1253 y(correct,)32 b(and)e(are)g
-(certainly)g(not)g(complete.)275 1401 y(All)23 b(ESCP/2)i(raster)g
-(commands)g(b)s(egin)e(with)h(the)h(`)p Fr(ESC)p Fu(')g(c)m(haracter)h
-(\(1b)f(hex\),)i(follo)m(w)m(ed)e(b)m(y)f(either)150
-1510 y(one)d(or)f(t)m(w)m(o)i(command)e(c)m(haracters)i(and)e(argumen)m
-(ts)h(where)e(applicable.)36 b(Older)19 b(commands)h(generally)150
-1620 y(ha)m(v)m(e)j(one)f(command)f(c)m(haracter.)39
-b(New)m(er)23 b(commands)e(usually)e(ha)m(v)m(e)k(a)f(`)p
-Fr(\()p Fu(')g(\(left)f(paren)m(thesis\))g(follo)m(w)m(ed)150
-1730 y(b)m(y)33 b(a)g(command)f(c)m(haracter)j(and)d(a)h(b)m(yte)g
-(coun)m(t)h(for)e(the)h(argumen)m(ts)g(that)h(follo)m(w.)47
-b(The)32 b(b)m(yte)h(coun)m(t)150 1839 y(is)c(a)i(16-bit)g(\(2)g(b)m
-(yte\))g(binary)e(in)m(teger,)i(in)e(little)g(endian)g(order.)275
-1987 y(All)e(argumen)m(ts)j(listed)e(here)h(are)g(of)h(the)f(form)g(`)p
-Fr(name[bytes])p Fu(')d(where)j(`)p Fr([bytes])p Fu(')f(is)g(the)h(n)m
-(um)m(b)s(er)150 2097 y(of)35 b(b)m(ytes)g(that)g(comprise)f(the)h
-(argumen)m(t.)53 b(The)35 b(argumen)m(ts)f(themselv)m(es)h(are)g
-(usually)e(one,)j(t)m(w)m(o,)h(or)150 2207 y(four)e(b)m(yte)h(in)m
-(tegers,)h(alw)m(a)m(ys)f(little)e(endian)g(\(the)i(least)f
-(signi\014can)m(t)g(bits)f(come)i(\014rst\).)56 b(Presumably)150
-2316 y(this)29 b(is)h(to)h(matc)m(h)g(In)m(tel)f(pro)s(cessors.)275
-2464 y(In)42 b(some)i(cases,)49 b(the)43 b(same)h(command)g(sequence)g
-(iden)m(ti\014es)e(di\013eren)m(t)h(v)m(ersions)g(of)h(the)g(same)150
-2574 y(command,)30 b(dep)s(ending)e(up)s(on)h(the)i(n)m(um)m(b)s(er)e
-(of)h(b)m(ytes)h(of)g(argumen)m(ts.)150 2866 y Ft(C.2)68
-b(Standard)45 b(commands)3130 3199 y Fu(ESC/P2)30 b(command)-3725
-b Fh(ESC)39 b(@)390 3309 y Fu(Reset)33 b(the)g(prin)m(ter.)45
-b(Discards)32 b(an)m(y)h(output,)f(ejects)i(the)e(existing)g(page,)i
-(returns)d(all)g(settings)390 3418 y(to)g(their)f(default.)39
-b(Alw)m(a)m(ys)31 b(use)f(this)f(b)s(efore)h(prin)m(ting)f(a)h(page.)
-3130 3694 y(ESC/P2)g(command)-3725 b Fh(ESC)39 b(\(G)g
-Fm(BC)8 b Fh(=1)39 b Fm(ON1)390 3803 y Fu(T)-8 b(urn)29
-b(on)h(graphics)g(mo)s(de.)40 b Fm(ON)g Fu(should)28
-b(b)s(e)i(`)p Fr(1)p Fu(')h(\(turn)e(on)h(graphics)g(mo)s(de\).)3130
-4078 y(ESC/P2)g(command)-3725 b Fh(ESC)39 b(\(U)g Fm(BC)8
-b Fh(=1)39 b Fm(UNIT1)390 4188 y Fu(Set)j(basic)g(unit)f(of)h
-(measuremen)m(t)h(used)e(b)m(y)i(prin)m(ter.)75 b(This)40
-b(is)h(expressed)h(in)f(m)m(ultiples)f(of)390 4298 y(1/3600)p
-Fr(")p Fu(.)j(A)m(t)31 b(720)h(DPI,)f Fm(UNIT)37 b Fu(is)29
-b(`)p Fr(5)p Fu(';)i(at)g(360)g(DPI,)g Fm(UNIT)37 b Fu(is)29
-b(`)p Fr(10)p Fu('.)3130 4573 y(ESC/P2)h(command)-3725
-b Fh(ESC)39 b(\(U)g Fm(BC)8 b Fh(=5)39 b Fm(P)-8 b(A)m(GEUNITS1)46
-b(VUNIT1)g(HUNIT1)g(BASEUNIT2)390 4682 y Fu(Set)31 b(basic)g(units)f
-(of)h(measuremen)m(t)h(used)e(b)m(y)h(the)h(prin)m(ter.)42
-b Fm(P)-8 b(A)m(GEUNIT)38 b Fu(is)31 b(the)g(unit)f(of)h(page)390
-4792 y(measuremen)m(t)i(\(for)h(commands)e(that)i(set)f(page)h
-(dimensions)c(and)j(the)g(lik)m(e\).)48 b Fm(VUNIT)40
-b Fu(is)32 b(the)390 4902 y(unit)27 b(of)i(v)m(ertical)h(measuremen)m
-(t)f(\(for)g(v)m(ertical)g(mo)m(v)m(emen)m(t)i(commands\).)40
-b Fm(HUNIT)35 b Fu(is)28 b(the)h(unit)390 5011 y(of)41
-b(horizon)m(tal)f(mo)m(v)m(emen)m(t)i(\(for)f(horizon)m(tal)f(p)s
-(ositioning)e(commands\).)72 b(All)39 b(of)h(these)i(units)390
-5121 y(are)29 b(expressed)f(in)f Fm(BASEUNIT)p Fu(,)i(whic)m(h)e(is)g
-(in)h(recipro)s(cal)f(inc)m(hes.)39 b(T)m(ypically)-8
-b(,)28 b Fm(BASEUNIT)35 b Fu(is)390 5230 y(`)p Fr(1440)p
-Fu('.)40 b(In)28 b(720)i(DPI)g(mo)s(de,)f Fm(P)-8 b(A)m(GEUNIT)p
-Fu(,)30 b Fm(VUNIT)p Fu(,)f(and)g Fm(HUNIT)36 b Fu(are)29
-b(all)f(`)p Fr(2)p Fu(';)i(in)e(1440x720)390 5340 y(DPI)i(mo)s(de,)h
-Fm(P)-8 b(A)m(GEUNIT)38 b Fu(and)29 b Fm(VUNIT)37 b Fu(are)31
-b(normally)e(set)h(to)i(`)p Fr(2)p Fu(';)e Fm(HUNIT)37
-b Fu(is)30 b(set)h(to)g(`)p Fr(1)p Fu('.)p eop
-%%Page: 62 67
-62 66 bop 150 -116 a Fu(App)s(endix)28 b(C:)i(ESC/P2)2640
-b(62)3130 299 y(ESC/P2)30 b(command)-3725 b Fh(ESC)39
-b(\(K)g Fm(BC)8 b Fh(=2)39 b Fm(ZER)m(O1)45 b(GRA)-8
-b(YMODE1)390 408 y Fu(Set)25 b(color)g(or)g(gra)m(yscale)h(mo)s(de,)g
-(on)f(prin)m(ters)e(supp)s(orting)g(an)h(explicit)g(gra)m(yscale)i(mo)s
-(de.)38 b(These)390 518 y(prin)m(ters)c(can)i(b)s(e)e(iden)m(ti\014ed)g
-(b)s(ecause)h(they)h(are)g(adv)m(ertised)f(as)h(ha)m(ving)f(more)g
-(blac)m(k)h(nozzles)390 628 y(than)h(nozzles)h(of)f(individual)c
-(colors.)62 b(Setting)37 b(gra)m(yscale)i(mo)s(de)e(allo)m(ws)g(use)g
-(of)g(these)h(extra)390 737 y(nozzles)21 b(for)f(faster)h(prin)m(ting.)
-36 b Fm(GRA)-8 b(YMODE)27 b Fu(should)19 b(b)s(e)h(`)p
-Fr(0)p Fu(')g(or)h(`)p Fr(2)p Fu(')g(for)f(color,)j(`)p
-Fr(1)p Fu(')e(for)f(gra)m(yscale.)390 847 y Fm(ZER)m(O)35
-b Fu(should)28 b(alw)m(a)m(ys)j(b)s(e)f(`)p Fr(0)p Fu('.)3130
-1058 y(ESC/P2)g(command)-3725 b Fh(ESC)39 b(\(i)g Fm(BC)8
-b Fh(=1)39 b Fm(MICR)m(O)m(WEA)-10 b(VE1)390 1168 y Fu(If)23
-b Fm(MICR)m(O)m(WEA)-10 b(VE)29 b Fu(is)23 b(`)p Fr(1)p
-Fu(',)i(use)e(micro)m(w)m(ea)m(v)m(e)j(mo)s(de.)38 b(On)22
-b(older)h(prin)m(ters,)g(this)g(is)f(used)h(to)h(turn)390
-1278 y(on)34 b(micro)m(w)m(ea)m(v)m(e;)k(on)c(new)m(er)h(prin)m(ters,)e
-(it)h(prin)m(ts)f(one)h(ro)m(w)g(at)h(a)g(time.)51 b(All)33
-b(prin)m(ters)g(supp)s(ort)390 1387 y(this)e(mo)s(de.)46
-b(It)32 b(should)e(only)i(b)s(e)f(used)h(at)h(720)g(\(or)g(1440x720\))i
-(DPI.)e(The)f(Epson)f(St)m(ylus)g(Pro)390 1497 y(series)f(indicates)f
-(additional)f(mo)s(des:)390 1647 y(`)p Fr(2)p Fu(')382
-b(\\F)-8 b(ull-o)m(v)m(erlap")390 1797 y(`)p Fr(3)p Fu(')382
-b(\\F)-8 b(our-pass")390 1948 y(`)p Fr(4)p Fu(')382 b(\\F)-8
-b(ull-o)m(v)m(erlap)30 b(2")390 2098 y(An)m(y)g(of)h(these)g(commands)f
-(can)g(b)s(e)g(used)g(with)f(the)h(high)f(four)h(bits)f(set)i(to)g
-(either)f(`)p Fr(3)p Fu(')h(or)f(`)p Fr(0)p Fu('.)3130
-2310 y(ESC/P2)g(command)-3725 b Fh(ESC)39 b(U)g Fm(DIRECTION1)390
-2419 y Fu(If)30 b Fm(DIRECTION)39 b Fu(is)30 b(`)p Fr(1)p
-Fu(',)g(prin)m(t)f(unidirectionally;)e(if)i(`)p Fr(0)p
-Fu(',)i(prin)m(t)e(bidirectionally)-8 b(.)3130 2631 y(ESC/P2)30
-b(command)-3725 b Fh(ESC)39 b(\(s)g Fm(BC)8 b Fh(=1)39
-b Fm(SPEED1)390 2740 y Fu(On)44 b(some)h(older)f(prin)m(ters,)j(this)c
-(con)m(trols)i(the)g(prin)m(t)f(head)g(sp)s(eed.)83 b
-Fm(SPEED)49 b Fu(of)c(`)p Fr(2)p Fu(')f(is)g(10)390 2850
-y(inc)m(hes/sec;)31 b(SPEED)f(of)g(`)p Fr(0)p Fu(')h(or)f(1)h(is)f(20.)
-3130 3062 y(ESC/P2)g(command)-3725 b Fh(ESC)39 b(\(e)g
-Fm(BC)8 b Fh(=2)39 b Fm(ZER)m(O1)45 b(DOTSIZE1)390 3171
-y Fu(Cho)s(ose)c(prin)m(t)f(dotsize.)75 b Fm(DOTSIZE)45
-b Fu(can)d(tak)m(e)h(on)e(v)-5 b(arious)41 b(v)-5 b(alues,)44
-b(dep)s(ending)39 b(up)s(on)h(the)390 3281 y(prin)m(ter.)62
-b(Almost)38 b(all)f(prin)m(ters)f(supp)s(ort)g(`)p Fr(0)p
-Fu(')i(and)g(`)p Fr(2)p Fu('.)63 b(V)-8 b(ariable)38
-b(dot)g(size)g(prin)m(ters)e(allo)m(w)i(a)390 3390 y(v)-5
-b(alue)32 b(of)g Fm(16)p Fu(.)48 b(Other)32 b(than)g(the)g(v)-5
-b(alue)32 b(of)h Fm(16)p Fu(,)h(this)d(app)s(ears)h(to)h(b)s(e)e
-(ignored)h(at)h(resolutions)e(of)390 3500 y(720)h(DPI)e(and)g(ab)s(o)m
-(v)m(e.)3130 3711 y(ESC/P2)g(command)-3725 b Fh(ESC)39
-b(\(C)g Fm(BC)8 b Fh(=2)39 b Fm(P)-8 b(A)m(GELENGTH2)3130
-3821 y Fu(ESC/P2)30 b(command)-3725 b Fh(ESC)39 b(\(C)g
-Fm(BC)8 b Fh(=4)39 b Fm(P)-8 b(A)m(GELENGTH4)390 3931
-y Fu(Set)34 b(the)g(length)g(of)g(the)g(page)g(in)f Fr(")p
-Fu(pageunits)p Fr(")g Fu(\(see)i(`)p Fr(ESC)29 b(\(U)p
-Fu(')34 b(ab)s(o)m(v)m(e\).)53 b(The)33 b(second)h(form)g(of)390
-4040 y(the)c(command)g(allo)m(ws)g(setting)g(of)h(longer)f(page)h
-(lengths)e(on)h(new)g(prin)m(ters)f(\(these)i(happ)s(en)d(to)390
-4150 y(b)s(e)i(the)g(prin)m(ters)f(that)i(supp)s(ort)e(v)-5
-b(ariable)29 b(dot)i(size\).)3130 4361 y(ESC/P2)f(command)-3725
-b Fh(ESC)39 b(\(c)g Fm(BC)8 b Fh(=4)39 b Fm(TOP2)45 b(LENGTH2)3130
-4471 y Fu(ESC/P2)30 b(command)-3725 b Fh(ESC)39 b(\(c)g
-Fm(BC)8 b Fh(=8)39 b Fm(TOP4)45 b(LENGTH4)390 4580 y
-Fu(Set)35 b(the)g(v)m(ertical)g(page)h(margins)d(of)i(the)g(page)h(in)d
-Fr(")p Fu(pageunits)p Fr(")h Fu(\(see)i(`)p Fr(ESC)29
-b(\(U)p Fu(')35 b(ab)s(o)m(v)m(e\).)55 b(The)390 4690
-y(margins)31 b(are)h(sp)s(eci\014ed)e(as)i(the)g(top)g(of)g(the)g(page)
-h(and)e(the)h(length)g(of)g(the)g(page.)46 b(The)31 b(second)390
-4800 y(form)38 b(of)i(the)f(command)f(allo)m(ws)h(setting)g(of)g
-(longer)f(page)i(lengths)e(on)h(new)g(prin)m(ters)e(\(these)390
-4909 y(happ)s(en)29 b(to)i(b)s(e)f(the)g(prin)m(ters)f(that)i(supp)s
-(ort)e(v)-5 b(ariable)29 b(dot)h(size\).)3130 5121 y(ESC/P2)g(command)
--3725 b Fh(ESC)39 b(\(S)g Fm(BC)8 b Fh(=8)39 b Fm(WIDTH4)46
-b(LENGTH4)390 5230 y Fu(Set)d(the)g(width)e(and)h(length)g(of)h(the)g
-(prin)m(ted)e(page)j(region)e(in)f Fr(")p Fu(pageunits)p
-Fr(")h Fu(\(see)i(`)p Fr(ESC)29 b(\(U)p Fu(')390 5340
-y(ab)s(o)m(v)m(e\).)p eop
-%%Page: 63 68
-63 67 bop 150 -116 a Fu(App)s(endix)28 b(C:)i(ESC/P2)2640
-b(63)3130 299 y(ESC/P2)30 b(command)-3725 b Fh(ESC)39
-b(\(v)g Fm(BC)8 b Fh(=2)39 b Fm(AD)m(V)-10 b(ANCE2)3130
-408 y Fu(ESC/P2)30 b(command)-3725 b Fh(ESC)39 b(\(v)g
-Fm(BC)8 b Fh(=4)39 b Fm(AD)m(V)-10 b(ANCE4)390 518 y
-Fu(F)i(eed)44 b(v)m(ertically)f Fm(AD)m(V)-10 b(ANCE)49
-b Fr(")p Fu(v)m(ertical)43 b(units)p Fr(")f Fu(\(see)i(`)p
-Fr(ESC)29 b(\(U)p Fu(')43 b(ab)s(o)m(v)m(e\))i(from)e(the)g(curren)m(t)
-390 628 y(prin)m(t)29 b(head)h(p)s(osition.)3130 871
-y(ESC/P2)g(command)-3725 b Fh(ESC)39 b(\(V)g Fm(BC)8
-b Fh(=2)39 b Fm(AD)m(V)-10 b(ANCE2)3130 981 y Fu(ESC/P2)30
-b(command)-3725 b Fh(ESC)39 b(\(V)g Fm(BC)8 b Fh(=4)39
-b Fm(AD)m(V)-10 b(ANCE4)390 1090 y Fu(F)i(eed)27 b(v)m(ertically)e
-Fm(AD)m(V)-10 b(ANCE)32 b Fr(")p Fu(v)m(ertical)25 b(units)p
-Fr(")f Fu(\(see)j(`)p Fr(ESC)j(\(U)p Fu(')25 b(ab)s(o)m(v)m(e\))j(from)
-d(the)h(top)g(margin.)3130 1334 y(ESC/P2)k(command)-3725
-b Fh(ESC)39 b(\($)g Fm(BC)8 b Fh(=4)39 b Fm(OFFSET4)390
-1443 y Fu(Set)27 b(horizon)m(tal)g(p)s(osition)e(to)i
-Fm(OFFSET)33 b Fu(from)27 b(the)g(left)f(margin.)39 b(This)25
-b(command)i(op)s(erates)g(on)390 1553 y(prin)m(ters)i(of)h(the)h(740)h
-(class)e(and)g(new)m(er)g(\(all)g(prin)m(ters)e(with)h(v)-5
-b(ariable)30 b(dot)g(size\).)3130 1797 y(ESC/P2)g(command)-3725
-b Fh(ESC)39 b($)g Fm(OFFSET2)390 1906 y Fu(Set)27 b(horizon)m(tal)g(p)s
-(osition)e(to)i Fm(OFFSET)33 b Fu(from)27 b(the)g(left)f(margin.)39
-b(This)25 b(command)i(op)s(erates)g(on)390 2016 y(prin)m(ters)i(of)h
-(the)h(740)h(class)e(and)g(new)m(er)g(\(all)g(prin)m(ters)e(with)h(v)-5
-b(ariable)30 b(dot)g(size\).)3130 2259 y(ESC/P2)g(command)-3725
-b Fh(ESC)39 b(\(\\)g Fm(BC)8 b Fh(=4)39 b Fm(UNITS2)45
-b(OFFSET2)390 2369 y Fu(Set)30 b(horizon)m(tal)f(p)s(osition)f(to)j
-Fm(OFFSET)k Fu(from)29 b(the)h(previous)e(prin)m(t)h(head)g(p)s
-(osition,)g(measured)390 2478 y(in)38 b Fm(UNITS)p Fu(.)h
-Fm(UNITS)44 b Fu(is)38 b(measured)h(in)f(in)m(v)m(erse)h(inc)m(hes,)i
-(and)e(should)e(b)s(e)i(set)h(to)g(1440)h(in)d(all)390
-2588 y(cases.)k(This)28 b(op)s(erates)j(on)f(all)g(1440)i(dpi)c(prin)m
-(ters)h(that)i(do)f(not)h(supp)s(ort)e(v)-5 b(ariable)29
-b(dot)h(size.)3130 2832 y(ESC/P2)g(command)-3725 b Fh(ESC)39
-b(\(/)g Fm(BC)8 b Fh(=4)39 b Fm(OFFSET4)390 2941 y Fu(Set)30
-b(horizon)m(tal)f(p)s(osition)f(to)j Fm(OFFSET)k Fu(from)29
-b(the)h(previous)e(prin)m(t)h(head)g(p)s(osition,)g(measured)390
-3051 y(in)42 b Fr(")p Fu(horizon)m(tal)g(units)p Fr(")f
-Fu(\(see)j(`)p Fr(ESC)30 b(\(U)p Fu(')42 b(ab)s(o)m(v)m(e\).)81
-b(This)41 b(op)s(erates)i(on)g(all)f(v)-5 b(ariable)42
-b(dot)h(size)390 3160 y(prin)m(ters.)3130 3404 y(ESC/P2)30
-b(command)-3725 b Fh(ESC)39 b(\\)g Fm(OFFSET2)390 3513
-y Fu(Set)30 b(horizon)m(tal)f(p)s(osition)f(to)j Fm(OFFSET)k
-Fu(from)29 b(the)h(previous)e(prin)m(t)h(head)g(p)s(osition,)g
-(measured)390 3623 y(in)22 b(basic)h(unit)f(of)i(measuremen)m(t)g
-(\(see)h(`)p Fr(ESC)k(\(U)p Fu(')23 b(ab)s(o)m(v)m(e\).)41
-b(This)21 b(is)i(used)g(on)g(all)g(720)h(dpi)e(prin)m(ters,)390
-3733 y(and)f(can)i(also)f(b)s(e)f(used)g(on)h(1440)i(dpi)c(prin)m(ters)
-g(in)h(lo)m(w)m(er)h(resolutions)f(to)h(sa)m(v)m(e)i(a)e(few)g(b)m
-(ytes.)39 b(Note)390 3842 y(that)e Fm(OFFSET)43 b Fu(ma)m(y)37
-b(b)s(e)f(negativ)m(e.)60 b(The)36 b(range)h(of)g(v)-5
-b(alues)36 b(for)g(this)f(command)i(is)e(b)s(et)m(w)m(een)390
-3952 y(`)p Fr(-16384)p Fu(')29 b(and)h(`)p Fr(16383)p
-Fu('.)3130 4195 y(ESC/P2)g(command)-3725 b Fh(ESC)39
-b(r)g Fm(COLOR1)3130 4305 y Fu(ESC/P2)30 b(command)-3725
-b Fh(ESC)39 b(\(r)g Fm(BC)8 b Fh(=2)39 b Fm(DENSITY1)45
-b(COLOR1)390 4415 y Fu(Set)26 b(the)g(ink)f(color.)39
-b(The)26 b(\014rst)f(form)g(is)g(used)h(on)f(four-color)h(prin)m(ters;)
-g(the)h(second)f(on)f(six-color)390 4524 y(prin)m(ters.)39
-b Fm(DENSITY)k Fu(is)29 b(`)p Fr(0)p Fu(')i(for)f(dark)g(inks,)f(`)p
-Fr(1)p Fu(')h(for)h(ligh)m(t.)40 b Fm(COLOR)29 b Fu(is)390
-4688 y(`)p Fr(0)p Fu(')382 b(blac)m(k)390 4851 y(`)p
-Fr(1)p Fu(')g(magen)m(ta)390 5013 y(`)p Fr(2)p Fu(')g(cy)m(an)390
-5176 y(`)p Fr(4)p Fu(')g(y)m(ello)m(w)390 5340 y(This)29
-b(command)h(is)f(not)i(used)e(on)i(v)-5 b(ariable)29
-b(dot)h(size)h(prin)m(ters)d(in)i(soft)m(w)m(ea)m(v)m(e)j(mo)s(de.)p
-eop
-%%Page: 64 69
-64 68 bop 150 -116 a Fu(App)s(endix)28 b(C:)i(ESC/P2)2640
-b(64)3130 299 y(ESC/P2)30 b(command)-3725 b Fh(ESC)39
-b(.)g Fm(COMPRESS1)44 b(VSEP1)h(HSEP1)g(LINES1)h(WIDTH2)g(data...)390
-408 y Fu(Prin)m(t)29 b(data.)42 b Fm(COMPRESS)34 b Fu(signi\014es)28
-b(the)j(compression)e(mo)s(de:)390 565 y(`)p Fr(0)p Fu(')382
-b(no)30 b(compression)390 722 y(`)p Fr(1)p Fu(')382 b(TIFF)30
-b(compression)g(\(incorrectly)g(do)s(cumen)m(ted)g(as)g
-Fr(")p Fu(run)f(length)h(enco)s(ded)p Fr(")p Fu(\))390
-879 y(`)p Fr(2)p Fu(')382 b(TIFF)30 b(compression)g(with)f(a)i(sp)s
-(ecial)e(command)h(set.)390 1036 y Fm(VSEP)38 b Fu(dep)s(ends)32
-b(up)s(on)g(resolution)g(and)i(prin)m(ter)e(t)m(yp)s(e.)51
-b(A)m(t)34 b(360)h(DPI,)f(it)g(is)e(alw)m(a)m(ys)i(`)p
-Fr(10)p Fu('.)51 b(A)m(t)390 1146 y(720)25 b(DPI,)f(it)f(is)g(normally)
-f(`)p Fr(5)p Fu('5.)39 b(On)23 b(the)h(ESC)f(600,)k(it)c(is)g(`)p
-Fr(40)p Fu(')g(\(8)7 b Fs(\003)g Fu(5\).)41 b(On)23 b(some)h(other)g
-(prin)m(ters,)390 1256 y(it)30 b(v)-5 b(aries.)390 1389
-y Fm(HSEP1)34 b Fu(is)26 b(`)p Fr(10)p Fu(')h(at)h(360)g(DPI)f(and)f(`)
-p Fr(5)p Fu(')h(at)h(720)g(or)f(1440)i(DPI)e(\(1440)i(DPI)e(cannot)g(b)
-s(e)g(prin)m(ted)e(in)390 1498 y(one)j(pass;)g(it)f(is)f(prin)m(ted)g
-(in)g(t)m(w)m(o)j(passes,)f(with)e(the)h(dots)h(separated)g(in)e(eac)m
-(h)i(pass)f(b)m(y)g(1/720)p Fr(")p Fu(\).)390 1632 y
-Fm(LINES)37 b Fu(is)31 b(the)i(n)m(um)m(b)s(er)e(of)i(lines)d(to)j(b)s
-(e)f(prin)m(ted.)46 b(It)32 b(should)f(b)s(e)g(`)p Fr(1)p
-Fu(')i(in)e(micro)m(w)m(ea)m(v)m(e)k(and)d(360)390 1741
-y(DPI.)f(A)m(t)g(720)h(DPI)e(soft)m(w)m(ea)m(v)m(e,)k(it)c(should)e(b)s
-(e)i(the)h(n)m(um)m(b)s(er)e(of)h(lines)f(to)i(b)s(e)f(actually)f(prin)
-m(ted.)390 1875 y Fm(WIDTH)40 b Fu(is)28 b(the)i(n)m(um)m(b)s(er)e(of)h
-(pixels)f(to)i(b)s(e)f(prin)m(ted)f(in)g(eac)m(h)i(ro)m(w.)41
-b(F)-8 b(ollo)m(wing)29 b(this)f(command,)390 1984 y(a)34
-b(carriage)g(return)e(\(`)p Fr(13)p Fu(')i(decimal,)f(`)p
-Fr(0A)p Fu(')g(hex\))h(should)d(b)s(e)i(output)g(to)h(return)f(the)g
-(prin)m(t)f(head)390 2094 y(p)s(osition)c(to)k(the)e(left)g(margin.)390
-2227 y(The)i(basic)g(data)i(format)f(is)f(a)h(string)f(of)h(b)m(ytes,)h
-(with)d(data)j(from)e(left)g(to)i(righ)m(t)e(on)h(the)g(page.)390
-2337 y(Within)c(eac)m(h)i(b)m(yte,)g(the)g(highest)f(bit)f(is)g
-(\014rst.)390 2470 y(The)38 b(TIFF)g(compression)f(is)h(implemen)m(ted)
-e(as)j(one)f(coun)m(t)h(b)m(yte)g(follo)m(w)m(ed)f(b)m(y)g(one)h(or)f
-(more)390 2580 y(data)31 b(b)m(ytes.)41 b(There)30 b(are)h(t)m(w)m(o)h
-(cases:)439 2713 y(1.)61 b(If)28 b(the)g(coun)m(t)h(b)m(yte)g(is)e(`)p
-Fr(128)p Fu(')h(or)g(less,)g(it)g(is)f(follo)m(w)m(ed)h(b)m(y)g([)p
-Fc(count)p Fu(]+1)h(data)g(b)m(ytes.)40 b(So)29 b(if)e(the)570
-2822 y(coun)m(t)k(b)m(yte)g(is)f(`)p Fr(0)p Fu(',)h(it)f(is)f(follo)m
-(w)m(ed)h(b)m(y)h(1)g(data)g(b)m(yte;)g(if)f(it)g(is)f(`)p
-Fr(128)p Fu(',)i(it)f(is)f(follo)m(w)m(ed)h(b)m(y)h(129)570
-2932 y(data)g(b)m(ytes.)439 3065 y(2.)61 b(If)38 b(the)g(coun)m(t)h(b)m
-(yte)g(is)e(greater)i(than)f(128,)k(it)37 b(is)h(follo)m(w)m(ed)f(b)m
-(y)i(one)f(b)m(yte.)65 b(This)36 b(b)m(yte)j(is)570 3175
-y(rep)s(eated)d(\(257)h(-)f([coun)m(t]\))h(times.)55
-b(So)36 b(if)e([coun)m(t])j(is)e(129,)j(the)e(next)f(b)m(yte)i(is)d
-(treated)j(as)570 3284 y(though)h(it)f(w)m(ere)i(rep)s(eated)f(128)i
-(times;)h(if)c([coun)m(t])j(is)d(255,)k(it)d(is)f(treated)i(as)g
-(though)e(it)570 3394 y(w)m(ere)31 b(rep)s(eated)f(t)m(wice.)3130
-3622 y(ESC/P2)g(command)-3725 b Fh(ESC)39 b(i)g Fm(COLOR1)44
-b(COMPRESS1)h(BITS1)g(BYTES2)g(LINES2)565 3732 y(data...)390
-3841 y Fu(Prin)m(t)c(data)i(in)f(the)g(new)m(er)h(prin)m(ters)d(\(that)
-k(supp)s(ort)c(v)-5 b(ariable)42 b(dot)g(size\),)k(and)c(St)m(ylus)f
-(Pro)390 3951 y(mo)s(dels.)390 4084 y Fm(COLOR)29 b Fu(is)h(the)g
-(color:)390 4241 y(`)p Fr(0)p Fu(')382 b(blac)m(k)390
-4398 y(`)p Fr(1)p Fu(')g(magen)m(ta)390 4555 y(`)p Fr(2)p
-Fu(')g(cy)m(an)390 4712 y(`)p Fr(4)p Fu(')g(y)m(ello)m(w)390
-4869 y(`)p Fr(17)p Fu(')334 b(ligh)m(t)30 b(magen)m(ta)390
-5026 y(`)p Fr(18)p Fu(')334 b(ligh)m(t)30 b(cy)m(an)390
-5183 y Fm(COMPRESS)k Fu(signi\014es)28 b(the)j(compression)e(mo)s(de:)
-390 5340 y(`)p Fr(0)p Fu(')382 b(no)30 b(compression)p
-eop
-%%Page: 65 70
-65 69 bop 150 -116 a Fu(App)s(endix)28 b(C:)i(ESC/P2)2640
-b(65)390 299 y(`)p Fr(1)p Fu(')382 b(TIFF)30 b(compression)g
-(\(incorrectly)g(do)s(cumen)m(ted)g(as)g Fr(")p Fu(run)f(length)h(enco)
-s(ded)p Fr(")p Fu(\))390 462 y(`)p Fr(2)p Fu(')382 b(TIFF)30
-b(compression)g(with)f(a)i(sp)s(ecial)e(command)h(set.)390
-628 y Fm(BITS)35 b Fu(is)29 b(the)i(n)m(um)m(b)s(er)e(of)i(bits)e(p)s
-(er)g(pixel.)390 767 y Fm(BYTES)j Fu(is)26 b(the)h(n)m(um)m(b)s(er)f
-(of)h(b)m(ytes)g(wide)f(for)h(eac)m(h)h(ro)m(w)f(\()p
-Fc(ceil)r(ing)s Fu(\()p Fc(B)5 b(I)i(T)13 b(S)20 b Fs(\003)13
-b Fc(w)r(idth)p 3252 767 28 4 v 35 w(of)p 3386 767 V
-42 w(r)s(ow)r(;)i Fu(8\)\).)390 876 y(Note)32 b(that)f(this)e(is)g
-(di\013eren)m(t)h(from)g(the)h(`)p Fr(ESC)e(.)p Fu(')i(command)f(ab)s
-(o)m(v)m(e.)390 1015 y Fm(LINES)40 b Fu(is)34 b(the)i(n)m(um)m(b)s(er)e
-(of)i(lines)e(to)i(b)s(e)f(prin)m(ted.)54 b(This)34 b(command)h(is)g
-(the)g(only)g(w)m(a)m(y)i(to)f(get)390 1125 y(v)-5 b(ariable)30
-b(dot)h(size)g(prin)m(ting.)41 b(In)30 b(v)-5 b(ariable)30
-b(dot)i(mo)s(de,)f(the)g(size)g(of)g(the)g(dots)h(increases)e(as)i(the)
-390 1234 y(v)-5 b(alue)30 b(\(`)p Fr(1)p Fu(',)h(`)p
-Fr(2)p Fu(',)g(or)f(`)p Fr(3)p Fu('\))h(increases.)3130
-1481 y(ESC/P2)f(command)-3725 b Fh(ESC)39 b(\(D)g Fm(BC)8
-b Fh(=4)39 b Fm(BASE2)45 b(VER)-8 b(TICAL1)46 b(HORIZONT)-8
-b(AL1)390 1590 y Fu(Set)24 b(prin)m(ter)f(horizon)m(tal)h(and)f(v)m
-(ertical)h(spacing.)38 b(It)24 b(only)f(applies)g(to)h(v)-5
-b(ariable)23 b(dot)i(size)e(prin)m(ters)390 1700 y(in)29
-b(soft)m(w)m(ea)m(v)m(e)34 b(mo)s(de)c(\(and)g(p)s(ossibly)d(other)k
-(high)e(end)h(prin)m(ters\).)390 1839 y Fm(BASE)36 b
-Fu(is)29 b(the)i(base)f(unit)f(for)h(this)f(command;)i(it)f(m)m(ust)g
-(b)s(e)g(`)p Fr(14400)p Fu('.)390 1977 y Fm(VER)-8 b(TICAL)54
-b Fu(is)g(the)i(distance)e(in)g(these)h(units)f(b)s(et)m(w)m(een)h
-(prin)m(ted)f(ro)m(ws;)67 b(it)55 b(should)e(b)s(e)390
-2087 y(\()p Fc(separ)s(ation)p 864 2087 V 32 w(in)p 982
-2087 V 33 w(noz)t(z)t(l)r(es)20 b Fs(\003)h Fc(B)5 b(AS)g(E)g(=)p
-Fu(720\).)390 2226 y Fm(HORIZONT)-8 b(AL)30 b Fu(is)f(the)i(horizon)m
-(tal)f(separation)h(b)s(et)m(w)m(een)g(dots)g(in)e(a)i(ro)m(w.)41
-b(Dep)s(ending)30 b(up)s(on)390 2335 y(the)k(prin)m(ter,)f(this)g
-(should)f(b)s(e)h(either)g(\(14400)p Fc(=)p Fu(720\))39
-b(or)33 b(\(14400)p Fc(=)p Fu(360\).)56 b(The)33 b(St)m(ylus)g(Pro)g
-(9000)390 2445 y(man)m(ual)39 b(suggests)i(that)f(the)g(settings)g
-(should)d(matc)m(h)k(the)f(c)m(hosen)g(resolution,)h(but)f(that)g(is)
-390 2554 y(apparen)m(tly)30 b(not)g(the)h(case)g(\(or)g(not)g(alw)m(a)m
-(ys)g(the)f(case\))i(on)e(other)h(prin)m(ters.)3130 2801
-y(ESC/P2)f(command)-3725 b Fh(ESC)39 b(\(R)g Fm(BC)8
-b Fh(=8)39 b(00)f(R)h(E)f(M)h(O)f(T)h(E)f(1)390 2911
-y Fu(En)m(ters)27 b(\\remote)h(mo)s(de".)40 b(This)25
-b(is)h(a)h(sp)s(ecial,)g(undo)s(cumen)m(ted)e(command)i(set)h(that)f
-(is)f(used)g(to)390 3020 y(set)31 b(up)f(v)-5 b(arious)30
-b(prin)m(ter)f(options,)h(suc)m(h)h(as)f(pap)s(er)g(feed)h(tra)m(y)-8
-b(,)32 b(and)e(p)s(erform)f(utilit)m(y)g(functions)390
-3130 y(suc)m(h)22 b(as)h(head)f(cleaning)f(and)h(alignmen)m(t.)37
-b(It)23 b(do)s(es)f(not)g(app)s(ear)g(that)h(an)m(ything)f(here)g(is)f
-(actually)390 3239 y(required)34 b(to)i(mak)m(e)g(the)g(prin)m(ter)e
-(prin)m(t.)55 b(Our)34 b(b)s(est)h(understanding)e(of)i(what)h(is)e(in)
-g(a)i(remote)390 3349 y(command)30 b(sequence)h(is)e(describ)s(ed)g(in)
-g(a)h(separate)i(section)e(b)s(elo)m(w.)3130 3596 y(ESC/P2)g(command)
--3725 b Fh(ESC)39 b(01)g(@EJL)g([sp])h(ID\\r\\n)390 3705
-y Fu(Return)g(the)g(prin)m(ter)f(ID.)i(This)e(is)g(considered)g(a)i
-(remote)g(mo)s(de)f(command,)j(although)d(the)390 3815
-y(syn)m(tax)31 b(is)e(that)i(of)g(a)g(con)m(v)m(en)m(tional)g(command.)
-40 b(This)29 b(returns)g(the)i(follo)m(wing)d(information:)630
-3948 y Fr(@EJL)47 b(ID\\r)630 4051 y(MFG:EPSON;)630 4155
-y(CMD:ESCPL2,BDC;)630 4259 y(MDL:[printer)d(model];)630
-4363 y(CLS:PRINTER;)630 4467 y(DES:EPSON)h([printer)h(model];)630
-4570 y(\\f)275 4763 y Fu(After)30 b(all)f(data)i(has)g(b)s(een)e(sen)m
-(t,)i(a)g(form)f(feed)g(b)m(yte)h(should)e(b)s(e)h(sen)m(t.)275
-4902 y(All)25 b(new)m(er)i(Epson)e(prin)m(ters)h(\(STC)g(440,)j(STP)c
-(750\))k(require)c(the)i(follo)m(wing)e(command)i(to)g(b)s(e)f(sen)m(t)
-150 5011 y(at)34 b(least)g(once)f(to)i(enable)d(prin)m(ting)f(at)j
-(all.)49 b(This)31 b(command)i(sp)s(eci\014cally)e(tak)m(es)k(the)e
-(prin)m(ter)f(out)i(of)150 5121 y(the)24 b(Epson)f(pac)m(k)m(et)i(mo)s
-(de)f(comm)m(unication)f(proto)s(col)g(\(whatev)m(er)i(that)f(is\))g
-(and)f(enables)g(normal)f(data)150 5230 y(transfer.)39
-b(Sending)26 b(it)i(m)m(ultiple)e(times)h(is)g(is)g(not)i(harmful,)d
-(so)i(it)g(is)f(normally)f(sen)m(t)j(at)f(the)h(b)s(eginning)150
-5340 y(of)i(eac)m(h)g(job:)p eop
-%%Page: 66 71
-66 70 bop 150 -116 a Fu(App)s(endix)28 b(C:)i(ESC/P2)2640
-b(66)390 299 y Fr(ESC)47 b(01@EJL[space]1284.4[newl)o(ine])o(@EJ)o
-(L[sp)o(ace])o([sp)o(ace])o([spa)o(ce])o([spa)o(ce])390
-403 y([space][newline]ESC@)275 540 y Fu(The)29 b(prop)s(er)g(sequence)i
-(of)g(initialization)c(commands)j(is:)390 672 y Fr(magic)46
-b(command)390 776 y(ESC)95 b(remote)46 b(mode)g(if)i(needed)390
-880 y(ESC)f(\(G)390 983 y(ESC)g(\(U)390 1087 y(ESC)g(\(K)g(\(if)g
-(appropriate\))390 1191 y(ESC)g(\(i)390 1295 y(ESC)g(U)g(\(if)g
-(needed\))390 1398 y(ESC)g(\(s)g(\(if)g(appropriate\))390
-1502 y(ESC)g(\(e)390 1606 y(ESC)g(\(C)390 1710 y(ESC)g(\(c)390
-1814 y(ESC)g(\(S)390 1917 y(ESC)g(\(D)g(\(if)g(needed\))390
-2021 y(ESC)g(\(V)g(\(optional)e(--)j(this)e(can)h(be)g(accomplished)e
-(with)h(ESC)h(\(v\))275 2159 y Fu(F)-8 b(or)31 b(prin)m(ting,)d(the)j
-(prop)s(er)e(sequence)h(is:)390 2290 y Fr(ESC)47 b(\(v)150
-2428 y Fu(and)30 b(rep)s(eat)g(for)g(eac)m(h)i(color:)390
-2560 y Fr(ESC)47 b(\($)g Fu(or)h Fr(ESC)f(\(\\)g Fu(or)h
-Fr(ESC)f(\\)390 2663 y(ESC)g(\(r)g Fu(or)h Fr(ESC)f(r)g
-Fu(\(if)30 b(needed|not)g(used)g(with)f(`)p Fr(ESC)47
-b(i)p Fu(')30 b(and)g(not)h(needed)f(if)f(the)i(color)390
-2767 y(has)f(not)h(c)m(hanged)g(from)f(the)g(previous)f(prin)m(ted)g
-(line\))390 2871 y Fr(ESC)47 b(.)g Fu(or)h Fr(ESC)f(i)95
-b(...data...)45 b([return])h(\(0A)h(hex\))275 3009 y
-Fu(T)-8 b(o)30 b(terminate)h(a)g(page:)390 3140 y Fr([formfeed])45
-b(\(0C)i(hex\))390 3244 y(ESC)g(@)150 3509 y Ft(C.3)68
-b(Remote)47 b(Mo)t(de)d(Commands)275 3705 y Fu(The)g(follo)m(wing)f
-(description)h(of)h(remote)h(commands)e(comes)i(out)f(of)g(an)g
-(examination)g(of)g(the)150 3814 y(sequences)33 b(used)e(b)m(y)i(the)f
-(prin)m(ter)f(utilities)f(bundled)f(with)j(the)g(Windo)m(ws)g(driv)m
-(ers)f(for)h(the)g(ESC740,)150 3924 y(and)26 b(from)g(other)h(sources)f
-(\(some)i(Epson)d(man)m(uals,)i(exp)s(erimen)m(tation,)g(analysis)e(of)
-h(prin)m(t)g(\014les\).)38 b(It)27 b(is)150 4034 y(largely)g(sp)s
-(eculativ)m(e)f(as)i(these)g(commands)f(are)h(not)f(all)g(do)s(cumen)m
-(ted)g(in)f(the)i(Epson)e(do)s(cumen)m(tation)150 4143
-y(w)m(e)31 b(ha)m(v)m(e)g(access)h(to.)42 b(Generally)-8
-b(,)30 b(new)m(er)g(man)m(uals)g(pro)m(vide)f(more)i(thorough)f(do)s
-(cumen)m(tation.)275 4281 y(Remote)h(command)f(mo)s(de)g(is)g(en)m
-(tered)h(when)e(the)i(prin)m(ter)e(is)g(sen)m(t)i(the)f(follo)m(wing)f
-(sequence:)390 4412 y Fr(ESC)47 b(\(R)g(BC=8)g(00)g(R)g(E)h(M)f(O)h(T)f
-(E)h(1)275 4550 y Fu(Remote)31 b(mo)s(de)f(commands)g(are)h(then)f(sen)
-m(t,)h(and)f(terminated)g(with)f(the)h(follo)m(wing)f(sequence:)390
-4682 y Fr(ESC)47 b(00)g(00)g(00)275 4819 y Fu(All)29
-b(remote)i(mo)s(de)f(commands)g(m)m(ust)g(b)s(e)g(sen)m(t)h(b)s(efore)f
-(the)g(initial)e(`)p Fr(ESC)i(\(G)p Fu(')g(command)g(is)f(sen)m(t.)275
-4957 y(This)22 b(in)m(tro)s(ductory)i(sequence)h(is)f(then)g(follo)m(w)
-m(ed)h(b)m(y)f(a)h(sequence)g(of)g(commands.)39 b(Eac)m(h)25
-b(command)150 5066 y(is)k(constructed)i(as)g(follo)m(ws:)330
-5204 y(Tw)m(o)g(ASCI)s(I)d(b)m(ytes)j(indicating)d(the)j(function)330
-5340 y(A)f(b)m(yte)i(coun)m(t)f(\(t)m(w)m(o)h(b)m(ytes,)f
-(little-endian\))d(for)i(the)h(parameters)p eop
-%%Page: 67 72
-67 71 bop 150 -116 a Fu(App)s(endix)28 b(C:)i(ESC/P2)2640
-b(67)330 299 y(Binary)29 b(parameters,)i(if)f(an)m(y)275
-458 y(This)e(is)i(a)g(list)f(of)i(all)e(remote)i(commands)f(w)m(e)h(ha)
-m(v)m(e)h(seen:)2826 690 y(ESC/P2)e(remote)i(command)-3725
-b Fh(NC)39 b Fm(BC)8 b Fh(=2)38 b(00)h(00)390 800 y Fu(Prin)m(t)29
-b(a)i(nozzle)g(c)m(hec)m(k)h(pattern)2826 1032 y(ESC/P2)e(remote)i
-(command)-3725 b Fh(VI)39 b Fm(BC)8 b Fh(=2)38 b(00)h(00)390
-1142 y Fu(on)30 b(m)m(y)h(740,)h(prin)m(ts)d(the)h(follo)m(wing:)630
-1270 y Fr(W01286)46 b(I02382\\r\\n)390 1404 y Fu(probably)29
-b(\\v)m(ersion)h(information")2826 1637 y(ESC/P2)g(remote)i(command)
--3725 b Fh(*)38 b(AI)h Fm(BC)8 b Fh(=3)39 b(00)g(00)g(00)390
-1746 y Fu(Prin)m(ts)29 b(a)i(\\prin)m(ter)e(ID".)j(On)d(one)i(870,)h
-(prin)m(ts)d(the)h(follo)m(wing:)630 1875 y Fr(51-51-50-51-49-48\\r\\n)
-390 2009 y Fu(The)f(Windo)m(ws)f(driv)m(er)g(has)h(a)g(text)i(en)m(try)
-e(\014eld)f(where)h(this)f(n)m(um)m(b)s(er)g(can)h(b)s(e)g(en)m(tered,)
-h(but)f(its)390 2118 y(purp)s(ose)g(is)g(unkno)m(wn.)2826
-2351 y(ESC/P2)h(remote)i(command)-3725 b Fh(*)38 b(LD)h
-Fm(BC)8 b Fh(=0)390 2460 y Fu(Load)38 b(prin)m(ter)f(defaults)g(from)g
-(NVRAM,)i(DIP)f(switc)m(hes,)i(and/or)e(R)m(OM.)g(This)f(apparen)m(tly)
-390 2570 y(do)s(es)d(not)g(load)f(factory)i(defaults)e(p)s(er)g(se,)j
-(but)d(an)m(y)h(settings)g(that)h(are)f(sa)m(v)m(ed.)53
-b(This)32 b(is)h(com-)390 2679 y(monly)25 b(used)f(righ)m(t)i(at)g(the)
-g(end)f(of)h(eac)m(h)g(prin)m(t)f(job)g(after)h(the)g(`)p
-Fr(ESC)k(@)p Fu(')25 b(prin)m(ter)g(reset)h(command.)2826
-2912 y(ESC/P2)k(remote)i(command)-3725 b Fh(*)38 b(CH)h
-Fm(BC)8 b Fh(=2)39 b(00)g Fm(xx)390 3021 y Fu(P)m(erform)30
-b(a)h(head)f(cleaning)g(cycle.)41 b(The)30 b(heads)g(to)h(clean)f(are)h
-(determined)e(b)m(y)h(parameter)h Fm(xx)6 b Fu(:)390
-3180 y(`)p Fr(00)p Fu(')334 b(clean)30 b(all)g(heads)390
-3339 y(`)p Fr(01)p Fu(')334 b(clean)30 b(blac)m(k)h(head)390
-3498 y(`)p Fr(02)p Fu(')334 b(clean)30 b(color)h(heads)390
-3656 y(While)i Fm(xx)40 b Fu(=)33 b(`)p Fr(00)p Fu(')h(is)f(probably)f
-(supp)s(orted)g(b)m(y)h(all)g(prin)m(ters,)g Fm(xx)40
-b Fu(=)34 b(`)p Fr(01)p Fu(')g(and)f(`)p Fr(02)p Fu(')h(ma)m(y)g(w)m
-(ell)390 3766 y(not)d(b)s(e.)2826 3998 y(ESC/P2)f(remote)i(command)
--3725 b Fh(*)38 b(DT)h Fm(BC)8 b Fh(=3)39 b(00)g Fm(xx)44
-b Fh(00)390 4108 y Fu(Prin)m(t)25 b(an)h(alignmen)m(t)f(pattern.)40
-b(There)25 b(are)i(three)f(patterns,)h(whic)m(h)e(are)h(pic)m(k)m(ed)g
-(via)g(the)g(c)m(hoice)390 4218 y(of)31 b Fm(xx)p Fu(.)40
-b(P)m(attern)31 b(`)p Fr(0)p Fu(')g(is)e(coarse,)j(pattern)f(`)p
-Fr(1)p Fu(')f(is)g(medium,)e(and)i(pattern)h(`)p Fr(2)p
-Fu(')f(is)g(\014ne.)2826 4450 y(ESC/P2)g(remote)i(command)-3725
-b Fh(*)38 b(DU)h Fm(BC)8 b Fh(=6)39 b(00)g Fm(xx)44 b
-Fh(00)39 b(09)g(00)g Fm(yy)390 4560 y Fu(Prin)m(t)c(another)h(alignmen)
-m(t)f(pattern.)57 b(It)36 b(isn't)f(en)m(tirely)g(clear)g(what)h
-Fm(xx)42 b Fu(and)35 b Fm(yy)44 b Fu(are,)37 b(but)e(it)390
-4669 y(app)s(ears)d(that)i Fm(xx)39 b Fu(tak)m(es)34
-b(on)f(the)g(v)-5 b(alues)32 b(`)p Fr(1)p Fu(')h(and)f(`)p
-Fr(2)p Fu(')h(,)h(and)e Fm(yy)41 b Fu(tak)m(es)34 b(on)f(the)g(v)-5
-b(alues)32 b(`)p Fr(0)p Fu(')i(and)390 4779 y Fm(1)p
-Fu(.)41 b(This)29 b(ma)m(y)i(only)e(w)m(ork)i(on)f(the)g(580)i(and/or)e
-(480.)2826 5011 y(ESC/P2)g(remote)i(command)-3725 b Fh(*)38
-b(DA)h Fm(BC)8 b Fh(=4)39 b(00)g Fm(xx)44 b Fh(00)39
-b Fm(yy)390 5121 y Fu(Set)32 b(results)f(for)h(the)h(\014rst)e
-(alignmen)m(t)h(pattern.)46 b Fm(xx)38 b Fu(is)31 b(the)i(pattern)f
-(\(`)p Fr(1)p Fu('{`)p Fr(3)p Fu('\);)j Fm(yy)40 b Fu(is)31
-b(the)h(b)s(est)390 5230 y(c)m(hoice)f(from)f(the)h(set)g(\(`)p
-Fr(1)p Fu('{`)p Fr(7)p Fu(')g(or)g(`)p Fr(1)p Fu('{`)p
-Fr(15)p Fu('\).)42 b(This)28 b(do)s(es)i(not)h(sa)m(v)m(e)h(to)f
-(NVRAM,)h(so)e(when)g(the)390 5340 y(prin)m(ter)f(is)g(p)s(o)m(w)m
-(ered)i(o\013,)g(the)f(setting)h(will)d(b)s(e)h(lost.)p
-eop
-%%Page: 68 73
-68 72 bop 150 -116 a Fu(App)s(endix)28 b(C:)i(ESC/P2)2640
-b(68)2826 299 y(ESC/P2)30 b(remote)i(command)-3725 b
-Fh(*)38 b(DA)h Fm(BC)8 b Fh(=6)39 b(00)g Fm(xx)44 b Fh(00)39
-b Fm(yy)46 b Fh(09)39 b(00)390 408 y Fu(Set)24 b(results)e(for)h
-(alternate)h(alignmen)m(t)f(pattern.)39 b Fm(xx)29 b
-Fu(app)s(ears)23 b(to)h(b)s(e)f(the)h(pass,)h(and)e Fm(yy)31
-b Fu(app)s(ears)390 518 y(to)k(b)s(e)e(the)i(optim)m(um)e(pattern.)52
-b(This)33 b(do)s(es)h(not)g(sa)m(v)m(e)i(to)f(NVRAM,)g(so)f(when)g(the)
-g(prin)m(ter)f(is)390 628 y(p)s(o)m(w)m(ered)d(o\013,)h(the)g(setting)f
-(will)e(b)s(e)i(lost.)2826 869 y(ESC/P2)g(remote)i(command)-3725
-b Fh(*)38 b(SV)h Fm(BC)8 b Fh(=0)390 979 y Fu(Sa)m(v)m(e)32
-b(the)e(curren)m(t)g(settings)h(to)g(NVRAM.)2826 1220
-y(ESC/P2)f(remote)i(command)-3725 b Fh(*)38 b(RS)h Fm(BC)8
-b Fh(=1)39 b(01)390 1330 y Fu(Reset)31 b(the)g(prin)m(ter.)2826
-1571 y(ESC/P2)f(remote)i(command)-3725 b Fh(*)38 b(IQ)h
-Fm(BC)8 b Fh(=1)39 b(01)390 1681 y Fu(Get)e(ink)d(quan)m(tit)m(y)-8
-b(.)57 b(This)34 b(requires)g(direct)h(access)i(to)g(the)f(prin)m(ter)e
-(p)s(ort.)56 b(The)35 b(return)f(lo)s(oks)390 1790 y(lik)m(e)630
-1921 y Fr(IQ:KKCCMMYY)390 2058 y Fu(or)630 2189 y Fr(IQ:KKCCMMYYccmm)
-390 2326 y Fu(\(for)c(4-color)g(and)f(6-color)h(prin)m(ters)e(resp)s
-(ectiv)m(ely\),)i(where)f(eac)m(h)i(pair)d(of)i(digits)e(are)i
-(hexadeci-)390 2436 y(mal)g(represen)m(tations)g(of)h(p)s(ercen)m(t.)
-275 2625 y(The)e(follo)m(wing)g(t)m(w)m(o)j(commands)e(ha)m(v)m(e)i(b)s
-(een)d(observ)m(ed)i(on)f(an)g(STP)g(870.)2826 2866 y(ESC/P2)g(remote)i
-(command)-3725 b Fh(*)38 b(IR)h Fm(BC)8 b Fh(=2)39 b(00)g
-Fm(xx)390 2976 y Fi(F)-8 b(unction)33 b(unkno)m(wn)p
-Fu(.)46 b(This)31 b(command)h(has)h(b)s(een)f(observ)m(ed)g(on)h(an)f
-(STP)g(870)i(with)d Fm(xx)6 b Fu(=`)p Fr(03)p Fu(')390
-3085 y(at)32 b(the)f(start)g(of)h(a)f(job)g(and)f Fm(xx)6
-b Fu(=`)p Fr(02)p Fu(')31 b(at)h(the)f(end)f(of)h(a)h(job)e(\(where)h
-(it)g(is)f(follo)m(w)m(ed)g(b)m(y)h(an)g(`)p Fr(LD)p
-Fu(')390 3195 y(command\).)57 b(When)36 b(in)f(roll)f(mo)s(de,)j(the)f
-(v)-5 b(alues)35 b(c)m(hange)i(to)g Fm(xx)6 b Fu(=`)p
-Fr(01)p Fu(')36 b(at)g(the)g(start)h(of)f(a)g(job)390
-3305 y(and)30 b Fm(xx)6 b Fu(=`)p Fr(00)p Fu(')30 b(at)h(the)g(end)e
-(of)i(a)g(job.)2826 3546 y(ESC/P2)f(remote)i(command)-3725
-b Fh(*)38 b(FP)h Fm(BC)8 b Fh(=3)39 b(00)g Fm(xx)44 b(yy)390
-3656 y(xx)6 b Fu(=`)p Fr(00)p Fu(')20 b(and)g Fm(yy)8
-b Fu(=`)p Fr(00)p Fu(')20 b(selects)h(the)f(prin)m(ter's)g(normal)f
-(left)h(margin)f(\(ab)s(out)i(3mm\).)38 b Fm(xx)6 b Fu(=`)p
-Fr(0xb0)p Fu(')390 3765 y(and)25 b Fm(yy)8 b Fu(=`)p
-Fr(0xff)p Fu(')25 b(selects)i(zero-margin)f(mo)s(de,)g(where)g(the)g
-(left-most)h(prin)m(t)d(p)s(osition)g(is)h(shifted)390
-3875 y(to)30 b(a)g(p)s(oin)m(t)f(ab)s(out)g(0.1)p Fr(")i
-Fu(to)f(the)g(left)f(of)h(the)g(left-hand)f(edge)h(of)g(the)g(pap)s
-(er,)f(allo)m(wing)f(prin)m(ting)390 3984 y(up)h(to)i(\(and)g(o\013)7
-b(\))31 b(the)f(left-hand)g(edge)h(of)f(the)h(pap)s(er.)275
-4174 y(The)i(commands)h(b)s(elo)m(w)f(are)i(partially)d(do)s(cumen)m
-(ted)i(in)f(the)h(St)m(ylus)f(Pro)h(9000)i(man)m(ual.)52
-b(Muc)m(h)150 4283 y(of)31 b(this)e(information)f(is)i(in)m(terpreted;)
-g(none)g(is)f(tested.)2826 4525 y(ESC/P2)h(remote)i(command)-3725
-b Fh(*)38 b(SN)h Fm(BC)8 b Fh(=3)39 b(00)g Fm(xx)44 b(yy)390
-4634 y Fu(Select)31 b(Mec)m(hanism)g(Sequence.)42 b Fm(xx)37
-b Fu(con)m(trols)31 b(whic)m(h)f(sub-op)s(eration)f(is)h(p)s(erformed.)
-41 b Fm(xx)6 b Fu(=`)p Fr(00)p Fu(')390 4744 y(selects)36
-b(the)g(\\F)-8 b(eed)38 b(pap)s(er)d(sequence)h(setting".)58
-b Fm(yy)43 b Fu(can)37 b(tak)m(e)g(on)f(the)g(follo)m(wing)e(v)-5
-b(alues)36 b(\(on)390 4853 y(the)31 b(STP)e(870,)j(at)f(an)m(y)g
-(rate\):)390 5016 y(`)p Fr(0)p Fu(')382 b(default)390
-5178 y(`)p Fr(1)p Fu(')g(plain)28 b(pap)s(er)390 5340
-y(`)p Fr(2)p Fu(')382 b(p)s(ostcards)p eop
-%%Page: 69 74
-69 73 bop 150 -116 a Fu(App)s(endix)28 b(C:)i(ESC/P2)2640
-b(69)390 299 y(`)p Fr(3)p Fu(')382 b(\014lm)29 b(\(photo)i(qualit)m(y)e
-(glossy)h(\014lm,)g(transparencies\))390 462 y(`)p Fr(4)p
-Fu(')382 b(en)m(v)m(elop)s(es)390 626 y(`)p Fr(5)p Fu(')g(plain)28
-b(pap)s(er)i(\(fast)h(load\))390 789 y(`)p Fr(6)p Fu(')382
-b(bac)m(k)29 b(ligh)m(t)e(\014lm)g(\(although)g(this)g(has)h(b)s(een)f
-(observ)m(ed)i(with)d(hea)m(vyw)m(eigh)m(t)k(matte)870
-899 y(pap)s(er\))390 1062 y(`)p Fr(7)p Fu(')382 b(matte)24
-b(pap)s(er)d(\(observ)m(ed)j(with)d(360)j(dpi)d(inkjet)h(pap)s(er,)h
-(and)f(photo)h(qualit)m(y)f(inkjet)870 1172 y(pap)s(er\))390
-1335 y(`)p Fr(8)p Fu(')382 b(photo)31 b(pap)s(er)390
-1500 y(Exp)s(erimen)m(tation)36 b(suggests)h(that)h(this)e(setting)h(c)
-m(hanges)h(details)e(of)i(ho)m(w)f(the)g(prin)m(ters')f(cut)390
-1610 y(sheet)31 b(feeder)f(w)m(orks,)h(presumably)d(to)j(tune)f(it)g
-(for)g(di\013eren)m(t)g(t)m(yp)s(es)g(of)h(pap)s(er.)390
-1748 y Fm(xx)6 b Fu(=`)p Fr(01)p Fu(')41 b(con)m(trols)g(the)g(platen)g
-(gap)g(setting;)46 b Fm(yy)8 b Fu(=`)p Fr(00)p Fu(')41
-b(is)f(the)h(default,)i Fm(yy)8 b Fu(=`)p Fr(1)p Fu(')40
-b(or)h(`)p Fr(2)p Fu(')h(are)390 1858 y(higher)29 b(settings.)390
-1997 y Fm(xx)6 b Fu(=`)p Fr(02)p Fu(')36 b(con)m(trols)h(pap)s(er)f
-(loading)f(sp)s(eed)h(\()p Fm(yy)8 b Fu(=`)p Fr(0)p Fu(')37
-b(is)e(normal,)j(`)p Fr(1)p Fu(')e(is)g(fast,)j(`)p Fr(2)p
-Fu(')e(is)e(slo)m(w\).)60 b(It)390 2106 y(app)s(ears)35
-b(that)i(`)p Fr(1)p Fu(')f(is)g(used)f(when)g(prin)m(ting)f(on)i
-(\\plain)f(pap)s(er",)i(\\360dpi)f(ink)f(jet)h(pap)s(er")g(or)390
-2216 y(\\ink)29 b(jet)i(transparencies",)g(and)e Fm(yy)8
-b Fu(=`)p Fr(00)p Fu(')30 b(for)g(all)f(other)i(pap)s(er)e(t)m(yp)s(e)i
-(settings.)390 2354 y Fm(xx)6 b Fu(=`)p Fr(07)p Fu(')34
-b(con)m(trols)h(duplex)d(prin)m(ting)g(for)i(prin)m(ters)f(with)g(that)
-i(capabilit)m(y)e(\()p Fm(yy)8 b Fu(=)p Fm(0)42 b Fu(is)33
-b(default,)390 2464 y(for)d(non-duplex)e(prin)m(ting;)h(`)p
-Fr(1)p Fu(')h(is)g(fron)m(t)g(side)g(of)g(the)h(pap)s(er,)e(and)h
-Fm(2)38 b Fu(is)29 b(bac)m(k)j(side\).)390 2602 y Fm(xx)6
-b Fu(=`)p Fr(09)p Fu(')30 b(con)m(trols)h(zero)g(margin)f(prin)m(ting)e
-(on)i(the)h(prin)m(ters)e(with)g(the)h(capabilit)m(y)g(of)g(prin)m
-(ting)390 2712 y(zero-margin)j(on)g(all)f(sides)g(\(St)m(ylus)g(Photo)h
-(780/790,)38 b(890,)d(and)d(1280/1290\).)53 b Fm(yy)8
-b Fu(=`)p Fr(0)p Fu(')33 b(is)f(the)390 2821 y(default;)e(`)p
-Fr(1)p Fu(')g(enables)g(zero)h(margin)f(prin)m(ting.)2826
-3067 y(ESC/P2)g(remote)i(command)-3725 b Fh(*)38 b(PP)h
-Fm(BC)8 b Fh(=3)39 b(00)g Fm(xx)44 b(yy)390 3177 y Fu(Set)36
-b(P)m(ap)s(er)g(P)m(ath.)57 b Fm(xx)6 b Fu(=`)p Fr(2)p
-Fu(')36 b(indicates)f(man)m(ual)g(feed,)j Fm(xx)6 b Fu(=`)p
-Fr(3)p Fu(')36 b(is)f(for)g(roll)g(pap)s(er.)56 b Fm(yy)43
-b Fu(selects)390 3287 y(\\pap)s(er)30 b(path)g(n)m(um)m(b)s(er".)2826
-3533 y(ESC/P2)g(remote)i(command)-3725 b Fh(*)38 b(AC)h
-Fm(BC)8 b Fh(=2)39 b(00)g Fm(xx)390 3642 y Fu(Set)33
-b(Auto)f(Cutting)g(State.)47 b Fm(xx)6 b Fu(=`)p Fr(0)p
-Fu(')33 b(selects)f(auto)h(cutting)f(o\013,)i Fm(xx)6
-b Fu(=`)p Fr(1)p Fu(')32 b(selects)h(auto)g(cutting)390
-3752 y(on,)42 b(and)d Fm(xx)6 b Fu(=`)p Fr(2)p Fu(')39
-b(indicates)f(horizon)m(tal)h(prin)m(t)f(page)j(line)c(on.)68
-b(It)40 b(app)s(ears)e(that)i(with)e(auto)390 3862 y(cutting)32
-b(on,)h(roll)e(pap)s(er)g(is)h(cut)g(automatically)h(at)g(the)f(p)s
-(oin)m(t)g(a)h(formfeed)f(c)m(haracter)i(is)d(sen)m(t.)390
-3971 y(The)g(formfeed)f(c)m(haracter)j(is)d(normally)f(used)h(to)i
-(eject)h(a)e(page;)h(with)e(this)g(turned)g(on,)h(it)g(also)390
-4081 y(cuts)j(the)g(roll)e(pap)s(er.)49 b(Horizon)m(tal)34
-b(prin)m(t)f(page)h(line)e(on)i(prin)m(ts)e(a)i(narro)m(w)f(line)f(of)i
-(blac)m(k)g(dots)390 4190 y(at)d(the)g(p)s(osition)d(the)j(pap)s(er)e
-(should)f(b)s(e)i(cut)h(man)m(ually)-8 b(.)2826 4436
-y(ESC/P2)30 b(remote)i(command)-3725 b Fh(*)38 b(DR)h
-Fm(BC)8 b Fh(=4)39 b(00)g(xx)g Fm(DT2)390 4546 y Fu(Set)31
-b(Drying)f(Time.)40 b Fm(xx)6 b Fu(=`)p Fr(00)p Fu(')31
-b(sets)g(the)g(drying)d(time)j(\\p)s(er)f(scan")h(\(p)s(er)f(pass?\);)h
-Fm(xx)6 b Fu(=`)p Fr(01)p Fu(')31 b(sets)390 4656 y(the)h(drying)e
-(time)i(p)s(er)f(page.)46 b Fm(DT)38 b Fu(indicates)31
-b(the)h(drying)e(time,)i(whic)m(h)f(is)g(in)g(seconds)g(if)g(page)390
-4765 y(mo)s(de)38 b(is)f(used)g(and)h(in)e(milliseconds)f(if)i(scan)h
-(mo)s(de)g(is)f(used.)63 b Fm(DT)45 b Fu(m)m(ust)38 b(not)g(exceed)h
-(3600)390 4875 y(seconds)30 b(in)f(p)s(er-page)i(mo)s(de)f(and)g(10000)
-i(milliseconds)27 b(in)i(p)s(er-scan)h(mo)s(de.)2826
-5121 y(ESC/P2)g(remote)i(command)-3725 b Fh(*)38 b(IK)h
-Fm(BC)8 b Fh(=2)39 b(00)g Fm(xx)390 5230 y Fu(Select)j(Ink)f(T)m(yp)s
-(e.)73 b Fm(xx)6 b Fu(=`)p Fr(00)p Fu(')42 b(selects)g(dy)m(e)g(ink.)73
-b(Pigmen)m(t)41 b(ink)f(is)h(apparen)m(tly)g(selected)h(b)m(y)390
-5340 y Fm(xx)6 b Fu(=`)p Fr(01)p Fu('.)41 b(This)28 b(probably)h(do)s
-(es)h(not)g(apply)f(to)i(the)g(consumer-grade)g(prin)m(ters.)p
-eop
-%%Page: 70 75
-70 74 bop 150 -116 a Fu(App)s(endix)28 b(C:)i(ESC/P2)2640
-b(70)2826 299 y(ESC/P2)30 b(remote)i(command)-3725 b
-Fh(*)38 b(PZ)h(BC=2)h(00)e(xx)390 408 y Fu(Set)h(P)m(ause)g(After)f
-(Prin)m(ting.)64 b Fm(xx)6 b Fu(=`)p Fr(00)p Fu(')38
-b(selects)h(no)f(pause)g(after)i(prin)m(ting;)g Fm(xx)6
-b Fu(=`)p Fr(01)p Fu(')38 b(selects)390 518 y(pause)j(after)g(prin)m
-(ting.)70 b(If)41 b(turned)f(on,)j(the)f(prin)m(ter)d(is)h(paused)g
-(after)i(the)f(page)h(is)e(ejected)390 628 y(\(b)m(y)34
-b(the)f(FF)i(b)m(yte\).)51 b(If)33 b(cutting)g(is)g(turned)f(on,)j(the)
-e(prin)m(ter)f(is)h(paused)g Fi(after)h Fu(the)g(cutting)f(or)390
-737 y(prin)m(ting)28 b(of)j(the)f(horizon)m(tal)g(cut)h(line.)2826
-961 y(ESC/P2)f(remote)i(command)-3725 b Fh(*)38 b(EX)h
-Fm(BC)8 b Fh(=6)39 b(00)g(00)g(00)f(00)h(0x14)h Fm(xx)390
-1071 y Fu(Set)32 b(V)-8 b(ertical)33 b(Prin)m(t)e(P)m(age)j(Line)d(Mo)s
-(de.)47 b Fm(xx)6 b Fu(=`)p Fr(00)p Fu(')32 b(is)f(o\013,)j
-Fm(xx)6 b Fu(=`)p Fr(01)p Fu(')32 b(is)f(on.)46 b(If)32
-b(turned)f(on,)i(this)390 1181 y(prin)m(ts)c(v)m(ertical)h(trim)g
-(lines)e(at)j(the)g(left)f(and)g(righ)m(t)g(margins.)2826
-1405 y(ESC/P2)g(remote)i(command)-3725 b Fh(*)38 b(EX)h
-Fm(BC)8 b Fh(=6)39 b(00)g(00)g(00)f(00)h(0x05)h Fm(xx)390
-1514 y Fu(Set)30 b(Roll)f(P)m(ap)s(er)g(Mo)s(de.)41 b(If)29
-b Fm(xx)36 b Fu(is)29 b(`)p Fr(0)p Fu(',)h(roll)e(pap)s(er)h(mo)s(de)g
-(is)g(o\013;)i(if)d Fm(xx)36 b Fu(is)29 b(`)p Fr(1)p
-Fu(',)h(roll)f(pap)s(er)f(mo)s(de)390 1624 y(is)h(on.)2826
-1848 y(ESC/P2)h(remote)i(command)-3725 b Fh(*)38 b(EX)h
-Fm(BC)8 b Fh(=3)39 b(00)g Fm(xx)44 b(yy)390 1958 y Fu(App)s(ears)29
-b(to)i(b)s(e)f(a)h(synon)m(ym)f(for)g(the)g(`)p Fr(SN)p
-Fu(')h(command)f(describ)s(ed)e(ab)s(o)m(v)m(e.)2826
-2182 y(ESC/P2)i(remote)i(command)-3725 b Fh(*)38 b(PH)h
-Fm(BC)8 b Fh(=2)39 b(00)g Fm(xx)390 2292 y Fu(Select)c(P)m(ap)s(er)f
-(Thic)m(kness.)51 b(Set)34 b(the)h(pap)s(er)e(thic)m(kness)h
-Fm(xx)40 b Fu(in)33 b(.1)i(mm)f(units.)51 b(This)33 b(m)m(ust)h(not)390
-2401 y(exceed)j(0x10)g(\(1.6)g(mm\).)56 b(If)36 b(the)f(thic)m(kness)h
-(is)e(set)j Fr(")p Fu(more)e(than)p Fr(")g Fu(.6)i(mm)e(\(whic)m(h)g
-(probably)390 2511 y(means)e Fr(")p Fu(at)g(least)p Fr(")g
-Fu(.6)g(mm,)h(since)e(the)h(other)g(case)h(reads)f Fr(")p
-Fu(less)f(than)g(0.5)i(mm)p Fr(")p Fu(\),)f(the)h(platen)390
-2620 y(gap)d(is)e(set)i(high)e(irresp)s(ectiv)m(e)g(of)i(the)g(`)p
-Fr(SN)p Fu(')f(command.)2826 2845 y(ESC/P2)g(remote)i(command)-3725
-b Fh(*)38 b(PM)h Fm(BC)8 b Fh(=2)39 b(00)g(00)390 2954
-y Fi(F)-8 b(unction)32 b(unkno)m(wn)p Fu(.)43 b(Used)31
-b(on)h(the)g(STC)e(3000)j(at)g(least)e(when)g(using)f(roll)g(feed,)i
-(and)f(on)h(the)390 3064 y(STP)d(870)j(in)d(all)g(prin)m(t)g(\014les)h
-(analysed)f(to)i(date.)2826 3288 y(ESC/P2)f(remote)i(command)-3725
-b Fh(*)38 b(ST)h Fm(BC)8 b Fh(=2)39 b(00)g Fm(xx)390
-3398 y Fu(Epson's)24 b(STP)f(750/1200)28 b(programming)c(guide)f
-(refers)h(to)i(the)f(`)p Fr(ST)p Fu(')f(command)g(as)h(\\Set)g(prin)m
-(ter)390 3507 y(state)37 b(reply".)56 b(If)35 b Fm(xx)42
-b Fu(is)35 b(`)p Fr(0)p Fu(')h(or)f(`)p Fr(2)p Fu(',)j(the)e(prin)m
-(ter)e(will)f(not)j(send)f(status)h(replies.)55 b(If)35
-b Fm(xx)42 b Fu(is)35 b(`)p Fr(1)p Fu(')390 3617 y(or)h(`)p
-Fr(3)p Fu(',)h(the)f(prin)m(ter)e(will)f(send)i(status)h(replies.)55
-b(The)36 b(status)g(replies)d(consist)j(of)g(state,)i(error)390
-3726 y(co)s(des,)31 b(ink)e(lev)m(e,)i(\014rm)m(w)m(are)f(v)m(ersion,)g
-(and)g(w)m(arning)f(status.)390 3859 y(The)h(actual)h(reply)e(is)g(do)s
-(cumen)m(ted)h(as)630 3986 y Fr(@BDC)47 b(ST\\r)630 4089
-y(ST:)g(xx;)630 4193 y([ER:)g(yy;])630 4297 y(IQ:)g(n1n2n3n4;)630
-4401 y([WR:)g(w1,w2...;])630 4504 y(RV:)g(zz;)630 4608
-y(AI:CW:02kkccmmyy,)c(MI:mm)630 4712 y([TC:tttt;])630
-4816 y(INK:...;)630 4920 y(\\f)390 5052 y Fu(\(`)p Fr(\\r)p
-Fu(')31 b(is)e(carriage)i(return;)f(`)p Fr(\\n)p Fu(')g(is)f(newline;)g
-(`)p Fr(\\f)p Fu(')h(is)f(formfeed.\))390 5185 y(`)p
-Fr(ST)p Fu(')h(is)g(the)g(prin)m(ter)f(status:)390 5340
-y(`)p Fr(00)p Fu(')334 b(Error)p eop
-%%Page: 71 76
-71 75 bop 150 -116 a Fu(App)s(endix)28 b(C:)i(ESC/P2)2640
-b(71)390 299 y(`)p Fr(01)p Fu(')334 b(Self-test)390 457
-y(`)p Fr(02)p Fu(')g(Busy)390 616 y(`)p Fr(03)p Fu(')g(W)-8
-b(aiting)30 b(while)f(prin)m(ting)390 774 y(`)p Fr(04)p
-Fu(')334 b(Idle)390 933 y(`)p Fr(07)p Fu(')g(Cleaning/\014lling)26
-b(ink)k(heads)390 1091 y(`)p Fr(08)p Fu(')334 b(Not)31
-b(y)m(et)h(initialized/\014lling)25 b(heads)390 1250
-y(`)p Fr(ER)p Fu(',)31 b(if)e(pro)m(vided,)g(is)h(the)g(error)g
-(status:)390 1408 y(`)p Fr(00)p Fu(')334 b(F)-8 b(atal)32
-b(error)390 1567 y(`)p Fr(01)p Fu(')334 b(In)m(terface)32
-b(not)e(selected)390 1725 y(`)p Fr(04)p Fu(')334 b(P)m(ap)s(er)30
-b(jam)390 1884 y(`)p Fr(05)p Fu(')334 b(Out)30 b(of)g(ink)390
-2042 y(`)p Fr(06)p Fu(')334 b(P)m(ap)s(er)30 b(out)390
-2201 y(`)p Fr(IQ)p Fu(')k(is)f(the)h(amoun)m(t)g(of)h(ink)d(left,)j(as)
-f(a)h(\(decimal!\))51 b(p)s(ercen)m(tage)35 b(expressed)f(in)e
-(hexadecimal.)390 2311 y(The)d(v)-5 b(alues)28 b(are)i(blac)m(k,)g(cy)m
-(an,)g(magen)m(ta,)i(and)c(y)m(ello)m(w)h(\(presumably)f(6-color)i
-(prin)m(ters)d(supply)390 2420 y(ligh)m(t)j(cy)m(an)h(and)e(ligh)m(t)h
-(magen)m(ta)i(inks)d(as)i(additional)d(parameters\).)390
-2554 y(`)p Fr(WR)p Fu(',)j(if)e(pro)m(vided,)g(is)h(the)g(w)m(arning)f
-(status:)390 2713 y(`)p Fr(10)p Fu(')334 b(Blac)m(k)31
-b(ink)e(lo)m(w)390 2871 y(`)p Fr(11)p Fu(')334 b(Cy)m(an)390
-3030 y(`)p Fr(12)p Fu(')g(Magen)m(ta)390 3188 y(`)p Fr(13)p
-Fu(')g(Y)-8 b(ello)m(w)390 3347 y(`)p Fr(14)p Fu(')334
-b(Ligh)m(t)30 b(cy)m(an)h(\(presumably\))390 3505 y(`)p
-Fr(15)p Fu(')334 b(Ligh)m(t)30 b(magen)m(ta)i(\(presumably\))390
-3664 y(`)p Fr(RV)p Fu(')e(is)g(the)g(\014rm)m(w)m(are)g(revision)f
-(\(one)i(b)m(yte)g(ASCI)s(I\).)390 3798 y(`)p Fr(AI)p
-Fu(')43 b(is)f(actuator)i(information.)76 b(These)43
-b(are)g(t)m(w)m(o)h(b)m(yte)f(ASCI)s(I)f(co)s(des)h(that)g(indicate)f
-(\\ink)390 3907 y(w)m(eigh)m(t)31 b(rank)f(ID")h(of)f(K)m(CMY,)h(resp)s
-(ectiv)m(ely)-8 b(.)390 4041 y(`)p Fr(TC)p Fu(',)31 b(if)e(pro)m
-(vided,)g(is)h(the)g(total)h(time)f(of)h(cleaning)e(or)i(ink)e
-(\014lling)e(\(?\).)390 4176 y(`)p Fr(INK:)p Fu(')j(and)f(`)p
-Fr(MI)p Fu(')i(are)g Fi(not)f(do)s(cumen)m(ted)p Fu(.)2826
-4407 y(ESC/P2)g(remote)i(command)-3725 b Fh(*)38 b(SM)h
-Fm(BC)8 b Fh(=2)39 b(00)g Fm(xx)390 4517 y Fu(Set)30
-b(Status)g(Reply)e(Rate.)42 b Fm(xx)36 b Fu(is)28 b(the)i(rep)s(eat)g
-(in)m(terv)-5 b(al)29 b(in)f(seconds.)41 b(If)29 b Fm(xx)36
-b Fu(is)29 b(`)p Fr(0)p Fu(',)h(the)g(status)g(is)390
-4627 y(returned)f(only)h(when)f(the)i(prin)m(ter's)e(state)i(c)m
-(hanges.)2826 4859 y(ESC/P2)f(remote)i(command)-3725
-b Fh(*)38 b(ST)h Fm(BC)8 b Fh(=1)39 b(01)390 4968 y Fu(Reply)29
-b(Prin)m(ter)h(Status.)40 b(The)30 b(reply)f(is)h(formatted)h(as)630
-5096 y Fr(@BDC)47 b(PS\\r\\nST:)p Fm(xx)6 b Fr(;\\f)390
-5230 y Fu(\(`)p Fr(\\r)p Fu(')29 b(is)e(carriage)i(return;)f(`)p
-Fr(\\n)p Fu(')g(is)g(newline;)f(`)p Fr(\\f)p Fu(')h(is)g(formfeed\).)40
-b(If)28 b Fm(xx)34 b Fu(\(the)29 b(reply)e(v)-5 b(alue\))28
-b(is)g(`)p Fr(0)p Fu(')390 5340 y(or)i(`)p Fr(2)p Fu(',)h(automatic)g
-(status)g(up)s(date)f(is)f(disabled;)f(if)i(`)p Fr(1)p
-Fu(')g(or)h(`)p Fr(3)p Fu(',)f(it)g(is)g(enabled.)p eop
-%%Page: 72 77
-72 76 bop 150 -116 a Fu(App)s(endix)28 b(C:)i(ESC/P2)2640
-b(72)2826 299 y(ESC/P2)30 b(remote)i(command)-3725 b
-Fh(*)38 b(SM)h Fm(BC)8 b Fh(=1)39 b(01)390 408 y Fu(Reply)29
-b(Prin)m(ter)h(Status)g(Rate.)42 b(The)30 b(reply)f(is)g(formatted)i
-(as)630 538 y Fr(@BDC)47 b(PS\\r\\nST:xx;\\f)390 673
-y Fu(\(`)p Fr(\\r)p Fu(')27 b(is)e(carriage)i(return;)g(`)p
-Fr(\\n)p Fu(')g(is)e(newline;)h(`)p Fr(\\f)p Fu(')h(is)e(formfeed\).)40
-b(See)27 b(`)p Fr(SM)j Fm(BC)8 b Fr(=2)p Fu(')26 b(ab)s(o)m(v)m(e)h
-(for)g(the)390 783 y(meaning)j(of)g(the)h(return)e(v)-5
-b(alue.)2826 1019 y(ESC/P2)30 b(remote)i(command)-3725
-b Fh(*)38 b(??)h Fm(BC)8 b Fh(=)p Fm(xx)45 b(y)8 b Fh([1])39
-b(...)g Fm(y)8 b Fh([xx])390 1128 y Fu(Ec)m(ho)45 b(P)m(arameters)g
-(\(p)s(erhaps)e(b)s(etter)h(describ)s(ed)e(as)i(Ec)m(ho)h(Commands\).)
-81 b(The)43 b(command)390 1238 y(string)33 b(is)g(executed)h(\(it)g(w)m
-(ould)f(app)s(ear)g(from)g(the)h(do)s(cumen)m(tation\),)h(and)f(the)g
-(string)f(sen)m(t)h(is)390 1347 y(returned)29 b(using)g(a)i(sequence)g
-(similar)d(to)k(that)f(describ)s(ed)d(in)i(the)g(`)p
-Fr(ST)g Fm(BC)8 b Fr(=1)p Fu(')30 b(and)g(`)p Fr(SM)g
-Fm(BC)8 b Fr(=1)p Fu(')390 1457 y(commands.)40 b(Note)32
-b(that)f(in)e(this)g(case)j(the)e(n)m(um)m(b)s(er)f(of)i(b)m(ytes)g(is)
-e(v)-5 b(ariable!)2826 1693 y(ESC/P2)30 b(remote)i(command)-3725
-b Fh(*)38 b(SM)h Fm(BC)8 b Fh(=2)39 b(00)g(02)390 1803
-y Fi(F)-8 b(unction)31 b(unkno)m(wn)p Fu(.)39 b(Used)30
-b(on)h(the)f(STC)f(3000)j(at)g(least)e(when)g(using)e(roll)h(feed.)150
-2062 y Ft(C.4)68 b(Appropriate)45 b(Remote)i(Commands)275
-2255 y Fu(All)25 b(of)h(the)h(remote)h(commands)e(describ)s(ed)e(ab)s
-(o)m(v)m(e)k(are)f(wrapp)s(ed)d(up)i(with)f(the)i(usual)e(b)s
-(oilerplate.)150 2365 y(The)40 b(\014les)f(alw)m(a)m(ys)j(start)f(with)
-e(`)p Fr(00)30 b(00)g(00)p Fu(')40 b(and)g(the)g(\\magic")i(command)e
-(describ)s(ed)f(ab)s(o)m(v)m(e,)44 b(then)150 2474 y(t)m(w)m(o)32
-b(`)p Fr(ESC)e(@)p Fu('s)g(to)i(reset)f(the)g(prin)m(ter.)41
-b(The)30 b(remote)i(command)e(sequences)h(come)h(next;)g(if)d(they)i
-(prin)m(t)150 2584 y(an)m(ything)26 b(that)i(is)d(usually)g(follo)m(w)m
-(ed)h(b)m(y)h(a)g(`)p Fr(FF)p Fu(')g(\(0C)g(hex\))g(c)m(haracter)i(to)e
-(feed)g(the)g(page,)h(then)f(the)g(\014le)150 2693 y(ends)j(with)f
-(another)h(t)m(w)m(o)i(`)p Fr(ESC)e(@)p Fu('s)g(to)h(get)g(bac)m(k)h
-(to)f(the)f(ground)g(state.)275 2829 y(An)g(alignmen)m(t)f(sequence)i
-(go)s(es)g(lik)m(e)f(this:)199 2964 y(1.)61 b(Host)31
-b(uses)f(`)p Fr(DT)p Fu(')g(to)h(prin)m(t)e(an)i(alignmen)m(t)e(sheet)
-199 3099 y(2.)61 b(User)30 b(ey)m(eballs)g(the)h(sheet)g(to)g(see)g
-(whic)m(h)e(is)g(the)i(b)s(est)f(aligned)f(pattern.)199
-3233 y(3.)61 b(Host)31 b(sends)f(a)g(`)p Fr(DA)p Fu(')h(command)f
-(indicating)e(whic)m(h)h(pattern)i(the)f(user)g(c)m(hose)199
-3368 y(4.)61 b(If)30 b(the)g(user)g(said)g Fr(")p Fu(realign)p
-Fr(")p Fu(,)e(meaning)i(he)g(isn't)g(done)g(y)m(et,)i(go)f(to)g(step)g
-(1)199 3503 y(5.)61 b(W)-8 b(e)32 b(are)e(done:)41 b(host)30
-b(sends)g(a)h(`)p Fr(SV)p Fu(')f(command)g(and)g(exits)275
-3664 y(The)g(sequence)i(used)e(\(b)m(y)h(the)h(STC)e(3000,)j(at)f
-(least\))g(to)f(prin)m(t)f(from)h(the)g(roll)f(feed)h(is)f(\(with)g(b)m
-(yte)150 3773 y(coun)m(t)h(omitted\))629 3903 y Fr(PM)47
-b(00)g(00)629 4006 y(SN)g(00)g(00)g(00)629 4110 y(EX)g(00)g(00)g(00)g
-(00)h(05)f(01)629 4214 y(ST)g(00)g(01)629 4318 y(SM)g(00)g(02)275
-4453 y Fu(The)29 b(sequence)i(used)f(b)m(y)g(the)h(STP)e(870)j(to)f
-(prin)m(t)e(on)h(plain)e(pap)s(er)i(is)629 4582 y Fr(PM)47
-b(00)g(00)629 4686 y(IR)g(00)g(03)629 4790 y(SN)g(00)g(00)g(01)629
-4893 y(SN)g(00)g(01)g(00)629 4997 y(SN)g(00)g(02)g(01)629
-5101 y(EX)g(00)g(00)g(00)g(00)h(05)f(00)629 5205 y(FP)g(00)g(00)g(00)
-150 5340 y Fu(and)30 b(the)g(job)g(\014nishes)f(with)p
-eop
-%%Page: 73 78
-73 77 bop 150 -116 a Fu(App)s(endix)28 b(C:)i(ESC/P2)2640
-b(73)629 299 y Fr(IR)47 b(00)g(02)629 403 y(LD)275 537
-y Fu(F)-8 b(or)43 b(di\013eren)m(t)f(pap)s(er)g(t)m(yp)s(e)h(settings)g
-(on)g(the)g(STP)f(870,)47 b(the)c(argumen)m(ts)h(to)f(`)p
-Fr(SN)p Fu(')g(v)-5 b(ary)d(.)78 b(The)150 647 y(argumen)m(ts)37
-b(to)h(the)f(\014rst)f(and)g(third)f(`)p Fr(SN)p Fu(')i(commands)f(are)
-h(as)g(outlined)e(in)h(the)h(description)e(of)i(the)150
-756 y(`)p Fr(SN)p Fu(')c(command)g(ab)s(o)m(v)m(e;)k(the)c(argumen)m
-(ts)h(to)g(the)f(second)h(\(\\platen)f(gap"\))i(are)e(`)p
-Fr(00)d(01)g(01)p Fu(')j(for)g(thic)m(k)150 866 y(pap)s(ers)e
-(\(\\matte)k(pap)s(er|hea)m(vyw)m(eigh)m(t",)f(\\photo)g(pap)s(er")e
-(and)g(\\premium)f(glossy)h(photo)h(pap)s(er"\))150 976
-y(and)d(`)p Fr(00)g(01)g(00)p Fu(')g(for)g(all)f(others.)275
-1110 y(F)-8 b(or)41 b(roll-mo)s(de)e(prin)m(ting,)i(the)f(STP)g(870's)h
-(sequence)g(c)m(hanges)h(as)e(follo)m(ws.)70 b(`)p Fr(IR)p
-Fu(''s)41 b(argumen)m(ts)150 1220 y(b)s(ecome)35 b(`)p
-Fr(00)30 b(01)p Fu(')k(in)g(the)h(header,)g(and)f(`)p
-Fr(00)d(00)p Fu(')j(after)h(the)g(job,)h(and)e(`)p Fr(EX)p
-Fu(''s)g(last)h(argumen)m(t)g(c)m(hanges)150 1329 y(from)30
-b(`)p Fr(00)p Fu(')g(to)h(`)p Fr(01)p Fu('.)275 1464
-y(F)-8 b(or)27 b(zero-margin)g(prin)m(ting)d(on)j(the)g(STP)e(870,)k
-(the)e(argumen)m(ts)g(to)h(`)p Fr(FP)p Fu(')e(b)s(ecome)h(`)p
-Fr(00)j(0xb0)g(0xff)p Fu('.)150 1573 y(This)h(mo)m(v)m(es)j(the)f
-(origin)e(ab)s(out)i(5.5mm)g(to)g(the)g(left,)h(to)f(a)g(p)s(oin)m(t)f
-(one)h(ten)m(th)g(of)g(an)g(inc)m(h)f(to)h(the)g(left)150
-1683 y(of)g(the)g(left-hand)f(edge)i(of)f(the)g(pap)s(er,)g(allo)m
-(wing)e(prin)m(ting)g(righ)m(t)h(up)g(to)i(\(and)f(b)s(ey)m(ond\))f
-(the)h(edge)h(of)150 1792 y(the)g(pap)s(er.)50 b(Some)34
-b(prin)m(ters)e(\(at)j(least)f(the)g(STP)f(870\))i(include)c(white)i
-(absorb)s(en)m(t)h(pads)f(at)h(the)g(left)150 1902 y(margin)h(p)s
-(osition)f(and)h(other)h(p)s(ositions)e(\(89mm)i(and)f(100mm)i(on)e
-(the)h(STP)f(870\))j(to)e(soak)h(up)d(ink)150 2012 y(whic)m(h)e(misses)
-g(the)i(edge)g(of)f(the)h(pap)s(er.)48 b(Prin)m(ting)32
-b(o\013)i(the)f(edge)h(of)g(pap)s(er)e(of)h(a)h(width)e(not)h(aligned)
-150 2121 y(with)27 b(a)h(pad)f(could)g(result)g(in)g(making)g(a)h(mess)
-g(of)g(the)g(inside)e(of)i(the)g(prin)m(ter)e(and)i(ink)e(getting)j(on)
-f(the)150 2231 y(rev)m(erse)j(of)g(the)f(pap)s(er.)p
-eop
-%%Page: 74 79
-74 78 bop 150 -116 a Fu(App)s(endix)28 b(D:)j(Adding)d(a)j(new)f(prin)m
-(ter)2112 b(74)150 299 y Fp(App)t(endix)53 b(D)81 b(Adding)53
-b(a)h(new)f(prin)l(ter)275 506 y Fu(This)36 b(app)s(endix)f(co)m(v)m
-(ers)40 b(adding)c(a)i(new)g(ESCP/2,)h(PCL,)f(or)g(Canon)f(prin)m(ter.)
-62 b(W)-8 b(riting)37 b(a)h(new)150 616 y(driv)m(er)29
-b(mo)s(dule)g(is)g(not)i(co)m(v)m(ered.)275 745 y(The)e(three)i(steps)f
-(to)h(adding)e(a)i(prin)m(ter)e(are:)199 874 y(1.)61
-b(Add)29 b(an)i(en)m(try)f(to)h(`)p Fr(printers.xml)p
-Fu(')199 1003 y(2.)61 b(Add)29 b(the)i(appropriate)e(co)s(de)i(and)f
-(data)h(to)g(the)g(appropriate)e(driv)m(er)g(mo)s(dule)199
-1132 y(3.)61 b(T)-8 b(une)30 b(the)g(prin)m(ter)275 1281
-y(Prin)m(ter)i(information)f(is)h(stored)h(in)f(t)m(w)m(o)i(places:)46
-b(in)32 b(`)p Fr(printers.xml)p Fu(')e(\(whic)m(h)i(con)m(tains)h(the)g
-(list)150 1391 y(of)25 b(prin)m(ter)f(mo)s(dels)f(a)m(v)-5
-b(ailable)25 b(to)h(the)f(the)g(upp)s(er-lev)m(el)e(application\),)i
-(and)f(in)g(the)h(appropriate)f(driv)m(er)150 1500 y(\014le)29
-b(\(`)p Fr(print-escp2.c)p Fu(',)f(`)p Fr(print-pcl.c)p
-Fu(',)g(or)j(`)p Fr(print-canon.c)p Fu('\).)150 1742
-y Ft(D.1)68 b(`)p Fl(printers.xml)p Ft(')275 1929 y Fu(`)p
-Fr(printers.xml)p Fu(')30 b(is)i(an)i(XML-lik)m(e)f(\014le)f(\(there's)
-i(no)f(formal)g(DTD\))h(that)g(con)m(tains)f(v)m(ery)h(simple)150
-2038 y(prin)m(ter)29 b(de\014nitions.)38 b(A)31 b(t)m(ypical)f
-(de\014nition)e(follo)m(ws:)390 2162 y Fr(<printer)46
-b(name="EPSON)e(Stylus)i(Color)h(1500")f(driver="escp2-1500">)390
-2266 y(<color>)390 2369 y(<model)g(value=2>)390 2473
-y(<gamma)g(value=0.597>)390 2577 y(<density)g(value=1.0>)390
-2681 y(<language)f(value=escp2>)390 2784 y(</printer>)275
-2914 y Fu(There)f(are)i(other)g(tags)g(that)g(ma)m(y)g(b)s(e)f(presen)m
-(t.)86 b(The)44 b(only)h(ones)g(that)h(are)g(mandatory)g(are)150
-3023 y(`)p Fr(<printer>)p Fu(',)51 b(`)p Fr(<color>)p
-Fu(',)h(`)p Fr(<model>)p Fu(',)g(and)c(`)p Fr(<language>)p
-Fu('.)93 b(The)48 b(other)h(optional)f(parameters)150
-3133 y(\(gamma)34 b(and)d(densit)m(y)h(in)f(this)g(case\))j(can)f(b)s
-(e)f(used)f(to)i(adjust)f(con)m(trol)h(settings.)47 b(This)30
-b(is)i(probably)150 3242 y(not)38 b(the)g(righ)m(t)f(place)h(for)f
-(them;)k(the)d(prin)m(ter)f(driv)m(ers)f(themselv)m(es)i(should)d(con)m
-(tain)j(this)f(informa-)150 3352 y(tion.)43 b(There's)30
-b(probably)g(no)h(go)s(o)s(d)g(reason)g(for)g(an)m(ything)g(but)f
-(gamma)i(and)f(densit)m(y)f(to)i(b)s(e)f(in)f(here.)150
-3462 y(Gamma)40 b(refers)f(to)g(the)h(prin)m(ter's)e(gamma)i(factor;)k
-(densit)m(y)39 b(is)f(the)h(desired)f(base)h(ink)f(densit)m(y)g(for)150
-3571 y(the)h(prin)m(ter.)66 b(The)39 b(Epson)g(driv)m(er)f(con)m(tains)
-h(the)g(densit)m(y)g(information)e(for)i(eac)m(h)i(prin)m(ter)d(at)i
-(eac)m(h)150 3681 y(resolution)27 b(in)m(ternally)-8
-b(.)38 b(An)28 b(ev)m(en)i(b)s(etter)e(driv)m(er)f(w)m(ould)g(adjust)h
-(densit)m(y)g(and)g(p)s(ossibly)d(ev)m(en)k(gamma)150
-3790 y(for)h(pap)s(er)f(t)m(yp)s(e.)41 b(All)29 b(the)i(more)f(reason)h
-(not)g(to)g(ha)m(v)m(e)g(that)g(information)e(here.)275
-3919 y(If)38 b(y)m(ou)h(really)f(are)h(curious)e(ab)s(out)i(what)g
-(tags)h(are)f(p)s(ermitted,)h(please)e(see)i(`)p Fr(printdefl.l)p
-Fu('.)63 b(I)150 4029 y(delib)s(erately)28 b(w)m(an)m(t)j(to)h(mak)m(e)
-f(this)e(obscure.)275 4158 y(An)m(yw)m(a)m(y)-8 b(,)32
-b(here's)e(the)h(de\014nition)d(of)i(the)h(tags)g(that)g(do)f(matter:)
-3095 4365 y(`)p Fr(printers.xml)p Fu(')d(tag)-3723 b
-Fh(<printer)41 b(name=")p Fm(longname)5 b Fh(")40 b(driver=")p
-Fm(driv)m(ername)5 b Fh(">)390 4475 y Fu(This)36 b(starts)i(the)g
-(de\014nition)e(of)i(a)g(prin)m(ter.)62 b(The)37 b Fm(longname)43
-b Fu(should)35 b(b)s(e)j(something)f(h)m(uman)390 4585
-y(readable;)29 b(the)g Fm(driv)m(ername)j Fu(should)26
-b(consist)i(of)h(alphan)m(umerics)d(and)i(h)m(yphens,)g(and)g(b)s(e)g
-(fairly)390 4694 y(short.)38 b(The)21 b Fm(longname)27
-b Fu(is)22 b(what)g(will)d(app)s(ear)j(in)f(the)h(GUI)h(listing)d(of)i
-(prin)m(ters;)i(the)e Fm(driv)m(ername)390 4804 y Fu(is)35
-b(what)h(is)f(actually)g(used)g(to)i(k)m(ey)f(in)m(to)g(the)g(list)f
-(of)h(prin)m(ters.)55 b(It)36 b(is)f(legal)h(to)g(ha)m(v)m(e)h(m)m
-(ultiple)390 4913 y(prin)m(ters)29 b(with)g(the)i(same)f(driv)m(er)f
-(name.)3095 5121 y(`)p Fr(printers.xml)p Fu(')e(tag)-3723
-b Fh(<color>)3095 5230 y Fu(`)p Fr(printers.xml)p Fu(')27
-b(tag)-3723 b Fh(<nocolor>)390 5340 y Fu(Indicates)30
-b(that)h(this)e(prin)m(ter)g(is)h(capable)g(of)g(color,)h(or)f(is)g
-(not)g(capable)h(of)f(color)h(resp)s(ectiv)m(ely)p eop
-%%Page: 75 80
-75 79 bop 150 -116 a Fu(App)s(endix)28 b(D:)j(Adding)d(a)j(new)f(prin)m
-(ter)2112 b(75)3095 299 y(`)p Fr(printers.xml)p Fu(')27
-b(tag)-3723 b Fh(<model)40 b(value=)p Fm(in)m(t)r Fh(>)390
-408 y Fu(This)27 b(de\014nes)h(a)i(mo)s(del)e(n)m(um)m(b)s(er.)39
-b(This)27 b(is)h(passed)g(in)m(to)h(the)h(driv)m(er,)e(whic)m(h)g(ma)m
-(y)h(do)g(whatev)m(er)390 518 y(it)35 b(cares)g(to)h(with)e(it|index)f
-(in)m(to)i(a)h(table,)g(compute)g(on,)g(or)f(whatev)m(er.)56
-b(This)33 b(need)i(not)h(b)s(e)390 628 y(unique.)3095
-862 y(`)p Fr(printers.xml)p Fu(')27 b(tag)-3723 b Fh(<language)41
-b(value=)p Fm(t)m(yp)s(e)5 b Fh(>)390 971 y Fu(This)39
-b(de\014nes)h(what)h(driv)m(er)f(mo)s(dule)f(this)h(prin)m(ter)g(uses.)
-72 b Fm(t)m(yp)s(e)46 b Fu(should)39 b(b)s(e)h(`)p Fr(escp2)p
-Fu(',)j(`)p Fr(pcl)p Fu(',)390 1081 y(`)p Fr(canon)p
-Fu(',)30 b(or)g(`)p Fr(ps)p Fu('.)3095 1315 y(`)p Fr(printers.xml)p
-Fu(')d(tag)-3723 b Fh(</printer>)390 1425 y Fu(This,)29
-b(of)h(course,)h(closes)g(o\013)f(a)h(prin)m(ter)e(de\014nition.)275
-1609 y(This)39 b(is)h(handled)g(v)m(ery)i(ad-ho)s(c.)73
-b(It's)42 b(ugly)-8 b(.)73 b(But)41 b(it's)g(reasonably)g(easy)h(to)g
-(extend,)j(and)40 b(it's)150 1719 y(buzzw)m(ord-complian)m(t.)150
-1976 y Ft(D.2)68 b(The)44 b(driv)l(er)i(\014le)275 2169
-y Fu(Adding)61 b(a)j(new)f(prin)m(ter)f(to)i(a)g(driv)m(er)e(mo)s(dule)
-g(\(`)p Fr(print-escp2.c)p Fu(',)69 b(`)p Fr(print-pcl.c)p
-Fu(',)g(or)150 2278 y(`)p Fr(print-canon.c)p Fu('|`)p
-Fr(print-ps.c)p Fu(')43 b(is)k(really)h(ad)g(ho)s(c\))g(requires)f(a)i
-(bit)f(more)g(planning.)92 b(Eac)m(h)150 2388 y(driv)m(er)41
-b(is)g(somewhat)h(di\013eren)m(t,)j(but)c(they)i(all)e(generally)g(ha)m
-(v)m(e)i(a)g(v)m(ector)g(of)f(prin)m(ter)f(de\014nitions,)150
-2497 y(and)35 b(the)g(co)s(de)h(do)s(es)f(some)g(sp)s(ecial)f(casing)h
-(based)g(on)g(particular)f(prin)m(ter)g(capabilities.)53
-b(The)35 b(PCL)150 2607 y(and)c(Canon)h(driv)m(ers)e(are)i(quite)f
-(similar;)f(the)i(Canon)g(driv)m(er)e(w)m(as)j(actually)e(cribb)s(ed)e
-(from)j(the)g(PCL)150 2716 y(driv)m(er,)d(but)h(it)g(then)g(returned)f
-(the)i(fa)m(v)m(or.)275 2851 y(The)j(Epson)h(driv)m(er)e(is)i(a)g
-(little)f(bit)g(di\013eren)m(t.)55 b(Canon)35 b(and)f(PCL)h(prin)m
-(ters)e(ha)m(v)m(e)k(some)e(amoun)m(t)150 2961 y(of)c(in)m(telligence;)
-f(a)h(lot)f(of)h(them)g(ha)m(v)m(e)g(sp)s(eci\014c)f(ink)f(options,)h
-(and)g(kno)m(w)h(ab)s(out)f(sp)s(eci\014c)g(pap)s(er)f(sizes)150
-3070 y(and)c(t)m(yp)s(es,)i(and)e(m)m(ust)h(b)s(e)f(told)h(the)g(righ)m
-(t)f(thing.)38 b(Epson)25 b(prin)m(ters)g(ha)m(v)m(e)i(somewhat)f(less)
-f(in)m(telligence)150 3180 y(and)34 b(will)f(more)i(or)g(less)f(do)h
-(exactly)h(what)e(the)i(host)f(tells)f(it)g(to)i(do)f(in)e(a)j(fairly)d
-(regular)h(fashion.)53 b(I)150 3289 y(actually)29 b(prefer)h(this;)f
-(it)g(isn't)g(materially)g(more)h(w)m(ork)g(for)g(the)g(host)g(to)g
-(compute)g(things)f(lik)m(e)g(exact)150 3399 y(pap)s(er)23
-b(sizes)h(and)g(suc)m(h,)h(it)f(allo)m(ws)g(a)g(lot)h(more)f(t)m(w)m
-(eaking,)j(and)d(it)f(ma)m(y)i(b)s(e)f(wh)m(y)g(Epson)f(has)h(b)s(een)g
-(more)150 3509 y(op)s(en)31 b(with)g(information)f({)i(the)g(comm)m
-(unication)f(proto)s(col)g(do)s(esn't)h(really)f(con)m(tain)h(v)m(ery)g
-(m)m(uc)m(h)g(IP)-8 b(,)150 3618 y(so)31 b(they)f(ha)m(v)m(e)i(less)d
-(reason)i(to)g(k)m(eep)g(it)f(secret.)275 3753 y(Someone)g(else)h(will)
-c(ha)m(v)m(e)32 b(to)f(\014ll)d(in)h(the)i(sections)f(ab)s(out)g(PCL)g
-(and)g(Canon)g(prin)m(ters.)150 4010 y Ft(D.3)68 b(Epson)45
-b(inkjet)g(prin)l(ters)275 4203 y Fu(The)34 b(`)p Fr
-(model_capabilities)p Fu(')c(v)m(ector)36 b(in)d(`)p
-Fr(print-escp2.c)p Fu(')f(con)m(tains)j(one)g(en)m(try)g(for)f(eac)m(h)
-i(de-)150 4312 y(\014ned)29 b(prin)m(ter)g(mo)s(del.)40
-b(The)30 b(`)p Fr(model)p Fu(')f(parameter)i(in)e(`)p
-Fr(printers.xml)p Fu(')f(is)h(an)h(index)f(in)m(to)i(this)e(table.)275
-4447 y(In)43 b(general,)k(the)d(new)f(prin)m(ters)g(ha)m(v)m(e)i(few)m
-(er)f(eccen)m(tricities)g(than)f(the)h(older)f(prin)m(ters.)80
-b(That)150 4556 y(do)s(esn't)30 b(mean)h(they're)f(simpler,)f(just)g
-(that)i(they're)g(more)g(consisten)m(t.)275 4691 y(An)f
-Fr(escp2_printer_t)c Fu(is)j(a)i(C)f(struct)g(de\014ned)f(as)i(follo)m
-(ws:)3474 4925 y(Data)h(t)m(yp)s(e)-3724 b Fk(escp2)p
-427 4925 35 5 v 41 w(prin)m(ter)p 817 4925 V 39 w(t)630
-5029 y Fr(typedef)46 b(struct)g(escp2_printer)630 5132
-y({)725 5236 y(model_cap_t)f(flags;)h(/*)h(Bitmask)f(of)h(flags,)g(see)
-f(below)h(*/)630 5340 y(/***********************)o(****)o(****)o(***)o
-(****)o(****)o(***)o(****)o(****)o(***)o(****)o(****)o(***)o(****)o
-(***)o(***/)p eop
-%%Page: 76 81
-76 80 bop 150 -116 a Fu(App)s(endix)28 b(D:)j(Adding)d(a)j(new)f(prin)m
-(ter)2112 b(76)725 299 y Fr(int)47 b(nozzles;)f(/*)h(Number)f(of)h
-(nozzles)f(per)h(color)f(*/)725 403 y(int)h(min_nozzles;)e(/*)i
-(Minimum)f(number)g(of)h(nozzles)f(per)h(color)f(*/)725
-506 y(int)h(nozzle_separation;)c(/*)k(Separation)e(between)h(rows,)h
-(in)g(1/360")f(*/)725 610 y(int)h(black_nozzles;)d(/*)j(Number)g(of)g
-(black)f(nozzles)g(\(may)h(be)g(extra\))f(*/)725 714
-y(int)h(min_black_nozzles;)c(/*)k(#)h(of)f(black)f(nozzles)g(\(may)h
-(be)g(extra\))f(*/)725 818 y(int)h(black_nozzle_separation;)42
-b(/*)47 b(Separation)e(between)h(rows)g(*/)725 922 y(int)h
-(fast_nozzles;)e(/*)i(Number)f(of)h(fast)g(nozzles)e(*/)725
-1025 y(int)i(min_fast_nozzles;)c(/*)48 b(#)f(of)g(fast)g(nozzles)f
-(\(may)g(be)i(extra\))e(*/)725 1129 y(int)h(fast_nozzle_separation;)42
-b(/*)47 b(Separation)e(between)h(rows)g(*/)630 1233 y
-(/***********************)o(****)o(****)o(***)o(****)o(****)o(***)o
-(****)o(****)o(***)o(****)o(****)o(***)o(****)o(***)o(***/)725
-1337 y(int)h(xres;)g(/*)g(Normal)f(distance)g(between)f(dots)i(in)g(*/)
-630 1440 y(/*)g(softweave)e(mode)i(\(inverse)f(inches\))f(*/)725
-1544 y(int)i(enhanced_xres;)d(/*)j(Distance)f(between)g(dots)g(in)i
-(highest)d(*/)630 1648 y(/*)i(quality)f(modes)g(*/)725
-1752 y(int)h(base_separation;)d(/*)j(Basic)f(unit)h(of)g(row)g
-(separation)e(*/)725 1856 y(int)i(base_resolution;)d(/*)j(Base)g
-(hardware)e(spacing)h(\(above)g(this)h(*/)630 1959 y(/*)g(always)f
-(requires)g(multiple)f(passes\))h(*/)725 2063 y(int)h
-(enhanced_resolution;/*)42 b(Above)k(this)h(we)g(use)g(the)g(*/)821
-2167 y(/*)g(enhanced_xres)d(rather)i(than)h(xres)g(*/)725
-2271 y(int)g(resolution_scale;)139 b(/*)47 b(Scaling)f(factor)g(for)h
-(ESC\(D)f(command)g(*/)725 2374 y(int)h(max_black_resolution;)42
-b(/*)48 b(Above)e(this)h(resolution,)d(we)j(*/)916 2478
-y(/*)h(must)e(use)h(color)f(parameters)f(*/)916 2582
-y(/*)j(rather)e(than)g(\(faster\))g(black)g(*/)916 2686
-y(/*)i(only)e(parameters*/)725 2790 y(int)h(max_hres;)725
-2893 y(int)g(max_vres;)725 2997 y(int)g(min_hres;)725
-3101 y(int)g(min_vres;)630 3205 y(/***********************)o(****)o
-(****)o(***)o(****)o(****)o(***)o(****)o(****)o(***)o(****)o(****)o
-(***)o(****)o(***)o(***/)725 3308 y(int)g(max_paper_width;)d(/*)j
-(Maximum)f(paper)g(width,)g(in)h(points)f(*/)725 3412
-y(int)h(max_paper_height;)c(/*)48 b(Maximum)d(paper)i(height,)f(in)h
-(points)f(*/)725 3516 y(int)h(min_paper_width;)d(/*)j(Maximum)f(paper)g
-(width,)g(in)h(points)f(*/)725 3620 y(int)h(min_paper_height;)c(/*)48
-b(Maximum)d(paper)i(height,)f(in)h(points)f(*/)630 3724
-y(/*)h(Printer)f(interleave:)f(*/)725 3827 y(int)i(m_left_margin;)d(/*)
-j(Left)g(margin,)f(points)g(*/)725 3931 y(int)h(m_right_margin;)d(/*)j
-(Right)g(margin,)e(points)h(*/)725 4035 y(int)h(m_top_margin;)e(/*)i
-(Absolute)e(top)i(margin,)f(points)g(*/)725 4139 y(int)h
-(m_bottom_margin;)d(/*)j(Absolute)e(bottom)i(margin,)e(points)h(*/)630
-4242 y(/*)h(ROLL)g(FEED:)f(*/)630 4346 y(/*)h(Softweave:)e(*/)725
-4450 y(int)i(roll_left_margin;)c(/*)48 b(Left)e(margin,)g(points)g(*/)
-725 4554 y(int)h(roll_right_margin;)c(/*)k(Right)g(margin,)f(points)g
-(*/)725 4658 y(int)h(roll_top_margin;)d(/*)j(Absolute)e(top)i(margin,)f
-(points)g(*/)725 4761 y(int)h(roll_bottom_margin;)c(/*)k(Absolute)f
-(bottom)g(margin,)g(points)g(*/)630 4865 y(/*)h(Printer)f(interleave:)f
-(*/)725 4969 y(int)i(m_roll_left_margin;)c(/*)k(Left)g(margin,)f
-(points)g(*/)725 5073 y(int)h(m_roll_right_margin;)c(/*)k(Right)f
-(margin,)g(points)g(*/)725 5176 y(int)h(m_roll_top_margin;)c(/*)k
-(Absolute)f(top)h(margin,)f(points)g(*/)725 5280 y(int)h
-(m_roll_bottom_margin;)42 b(/*)48 b(Absolute)d(bottom)h(margin,)g
-(points)g(*/)p eop
-%%Page: 77 82
-77 81 bop 150 -116 a Fu(App)s(endix)28 b(D:)j(Adding)d(a)j(new)f(prin)m
-(ter)2112 b(77)630 299 y Fr(/***********************)o(****)o(****)o
-(***)o(****)o(****)o(***)o(****)o(****)o(***)o(****)o(****)o(***)o
-(****)o(***)o(***/)725 403 y(int)47 b(extra_feed;)e(/*)i(Extra)g
-(distance)e(the)i(paper)f(can)h(be)h(spaced)e(*/)630
-506 y(/*)h(beyond)f(the)h(bottom)f(margin,)g(in)h(1/360".)f(*/)630
-610 y(/*)h(\(maximum)f(useful)g(value)g(is)h(*/)630 714
-y(/*)g(nozzles)f(*)h(nozzle_separation\))c(*/)725 818
-y(int)k(separation_rows;)d(/*)j(Some)g(printers)e(require)h(funky)g
-(spacing)g(*/)630 922 y(/*)h(arguments)e(in)j(interleave)d(mode.)h(*/)
-725 1025 y(int)h(pseudo_separation_rows;/*)41 b(Some)47
-b(printers)e(require)h(funky)h(*/)630 1129 y(/*)g(spacing)f(arguments)f
-(in)i(softweave)f(mode)g(*/)725 1337 y(int)525 b(zero_margin_offset;)
-138 b(/*)47 b(Offset)f(to)h(use)g(to)g(achieve)f(*/)916
-1440 y(/*)i(zero-margin)c(printing)i(*/)725 1544 y(int)h
-(initial_vertical_offset;)725 1648 y(int)g(black_initial_vertical_off)o
-(set)o(;)725 1752 y(int)g(extra_720dpi_separation;)630
-1959 y(/***********************)o(****)o(****)o(***)o(****)o(****)o
-(***)o(****)o(****)o(***)o(****)o(****)o(***)o(****)o(***)o(***/)725
-2063 y(const)g(int)g(*dot_sizes;)d(/*)k(Vector)e(of)h(dot)g(sizes)f
-(for)h(resolutions)e(*/)725 2167 y(const)i(double)f(*densities;)f(/*)i
-(List)f(of)i(densities)d(for)i(each)f(printer)g(*/)725
-2271 y(const)h(escp2_variable_inklist_t)41 b(*inks;)46
-b(/*)h(Choices)f(of)h(inks)g(for)g(this)f(printer)g(*/)630
-2374 y(/***********************)o(****)o(****)o(***)o(****)o(****)o
-(***)o(****)o(****)o(***)o(****)o(****)o(***)o(****)o(***)o(***/)725
-2478 y(const)h(paperlist_t)e(*paperlist;)725 2582 y(const)i(res_t)f
-(*reslist;)725 2686 y(const)h(inklist_t)e(*inklist;)630
-2790 y(/***********************)o(****)o(****)o(***)o(****)o(****)o
-(***)o(****)o(****)o(***)o(****)o(****)o(***)o(****)o(***)o(***/)725
-2893 y(const)i(int)g(*bits;)725 2997 y(const)g(int)g
-(*base_resolutions;)725 3101 y(const)g(input_slot_list_t)c
-(*input_slots;)630 3205 y(/***********************)o(****)o(****)o(***)
-o(****)o(****)o(***)o(****)o(****)o(***)o(****)o(****)o(***)o(****)o
-(***)o(***/)725 3308 y(const)k(init_sequence_t)c(*preinit_sequence;)725
-3412 y(const)k(init_sequence_t)c(*postinit_remote_sequence;)630
-3516 y(})k(escp2_printer_t;)275 3756 y Fu(The)c(prin)m(ter)g
-(de\014nition)f(blo)s(c)m(k)i(is)f(divided)f(in)m(to)i(8)h(sections.)82
-b(The)44 b(\014rst)g(section)g(is)f(a)i(set)g(of)150
-3866 y(miscellaneous)33 b(prin)m(ter)g(options.)53 b(These)34
-b(are)h(describ)s(ed)e(in)g(the)i(co)s(de,)h(and)e(will)e(not)j(b)s(e)f
-(discussed)150 3976 y(further)29 b(here.)275 4138 y(The)21
-b(second)i(section)f(describ)s(es)f(the)h(n)m(um)m(b)s(er)f(of)i
-(nozzles)f(and)g(the)h(separation)f(b)s(et)m(w)m(een)h(nozzles)f(in)150
-4248 y(base)28 b(units.)38 b(The)28 b(base)g(unit)e(is)h(1/360)p
-Fr(")j Fu(for)e(all)f(curren)m(tly)g(supp)s(orted)f(prin)m(ters,)h(but)
-g(future)g(prin)m(ters)150 4357 y(ma)m(y)k(supp)s(ort)e(a)h(smaller)f
-(base)i(unit.)275 4520 y(Man)m(y)k(prin)m(ters)e(ha)m(v)m(e)i(more)g
-(blac)m(k)f(nozzles)h(than)f(nozzles)h(of)f(other)h(colors,)g(and)f
-(when)g(used)f(in)150 4629 y(blac)m(k)j(and)g(white)f(mo)s(de,)j(it's)e
-(p)s(ossible)e(to)j(use)f(these)g(extra)h(nozzles,)h(whic)m(h)d(sp)s
-(eeds)h(up)f(prin)m(ting.)150 4739 y(As)i(an)f(example,)j(a)e(prin)m
-(ter)e(that)i(is)f(sp)s(eci\014ed)f(to)j(ha)m(v)m(e)g(48)f(cy)m(an,)i
-(magen)m(ta,)i(and)36 b(y)m(ello)m(w)g(nozzles,)150 4849
-y(and)f(144)h(blac)m(k)g(nozzles,)h(can)e(use)g(all)g(144)h(blac)m(k)g
-(nozzles)f(when)f(prin)m(ting)g(blac)m(k)h(ink)f(only)-8
-b(.)55 b(When)150 4958 y(prin)m(ting)28 b(in)h(color,)i(only)e(48)j
-(nozzles)e(of)h(eac)m(h)g(color)g(\(including)c(blac)m(k\))k(can)g(b)s
-(e)e(used.)275 5121 y(Most)45 b(prin)m(ters)e(can)h(prin)m(t)f(using)g
-(either)h(the)g(n)m(um)m(b)s(er)f(of)h(nozzles)h(a)m(v)-5
-b(ailable)44 b(or)g(an)m(y)g(smaller)150 5230 y(n)m(um)m(b)s(er.)39
-b(Some)29 b(prin)m(ters)e(require)h(that)h(all)f(of)h(the)g(nozzles)h
-(b)s(e)e(used.)39 b(Those)29 b(prin)m(ters)e(will)g(set)i
-Fr(min_)150 5340 y(nozzles)22 b Fu(and/or)i Fr(min_black_nozzles)19
-b Fu(to)25 b(the)f(same)g(v)-5 b(alue)23 b(as)i Fr(nozzles)c
-Fu(and/or)j Fr(black_nozzles)p Fu(.)p eop
-%%Page: 78 83
-78 82 bop 150 -116 a Fu(App)s(endix)28 b(D:)j(Adding)d(a)j(new)f(prin)m
-(ter)2112 b(78)275 299 y(The)31 b(third)g(section)h(de\014nes)f(basic)h
-(units)e(of)j(measure)f(for)g(the)g(prin)m(ter,)g(including)c(the)33
-b(standard)150 408 y(separation)24 b(b)s(et)m(w)m(een)g(dots,)h(the)f
-(base)g(nozzle)g(separation,)h(and)e(the)h(minim)m(um)d(and)i(maxim)m
-(um)g(prin)m(t-)150 518 y(ing)28 b(resolutions)f(the)h(prin)m(ter)g
-(supp)s(orts.)38 b(Most)29 b(of)g(these)g(are)g(fairly)e
-(self-explanatory)-8 b(,)29 b(but)f(some)h(are)150 628
-y(not)i(ob)m(vious.)275 774 y(Most)44 b(Epson)e(prin)m(ters,)j(other)f
-(than)f(the)g(high-end)f(St)m(ylus)g(Pro)h(mo)s(dels,)i(cannot)f(prin)m
-(t)e(dots)150 883 y(spaced)30 b(more)g(closely)g(than)g(1/360)p
-Fr(")i Fu(or)e(1/720)p Fr(")i Fu(apart)e(\(this)g(is)f(the)h(setting)g
-(for)g Fr(xres)p Fu(.)40 b(This)28 b(is)h(true)150 993
-y(ev)m(en)c(for)g(prin)m(ters)e(that)i(supp)s(ort)e(resolutions)g(of)i
-(1440)i(or)d(2880)j(DPI.)e(In)f(these)h(cases,)i(the)e(data)g(m)m(ust)
-150 1103 y(b)s(e)33 b(prin)m(ted)f(in)g(2,)j(4,)g(or)f(8)g(passes.)50
-b(While)33 b(the)g(prin)m(ter)g(can)g(p)s(osition)f(the)i(head)f(to)i
-(a)f(resolution)e(of)150 1212 y(1/1440)p Fr(")h Fu(or)d(1/2880)p
-Fr(")p Fu(,)j(the)e(head)f(cannot)h(dep)s(osit)e(ink)g(that)i(frequen)m
-(tly)-8 b(.)275 1358 y(Some)25 b(prin)m(ters)e(can)j(only)e(prin)m(t)f
-(in)h(their)g(v)m(ery)i(b)s(est)e(qualit)m(y)h(\(using)f(the)h
-(smallest)f(dots)h(a)m(v)-5 b(ailable\))150 1468 y(prin)m(ting)29
-b(at)k(a)f(lo)m(w)m(er)g(resolution.)43 b(F)-8 b(or)32
-b(example,)g(the)g(St)m(ylus)e(Photo)j(EX)e(can)h(normally)e(prin)m(t)g
-(with)150 1577 y(a)f(dot)h(spacing)e(of)h(1/720)p Fr(")p
-Fu(.)42 b(The)29 b(smallest)f(dot)h(size)g(cannot)h(b)s(e)e(prin)m(ted)
-g(with)f(a)j(dot)f(spacing)f(of)i(less)150 1687 y(than)i(1/360)p
-Fr(")p Fu(,)j(ho)m(w)m(ev)m(er.)47 b(In)32 b(this)f(case,)j(w)m(e)e
-(use)g Fr(enhanced_xres)d Fu(to)k(sp)s(ecify)e(the)h(resolution)f(to)i
-(b)s(e)150 1797 y(used)e(in)g(this)h(enhanced)g(mo)s(de,)g(and)g
-Fr(enhanced_resolution)27 b Fu(to)33 b(sp)s(ecify)e(the)h(prin)m(ting)e
-(resolution)150 1906 y(ab)s(o)m(v)m(e)i(whic)m(h)d(w)m(e)i(use)f(the)g
-Fr(enhanced_xres)p Fu(.)275 2052 y(The)22 b Fr(resolution_scale)c
-Fu(command)k(is)g(used)g(to)h(sp)s(ecify)f(scaling)f(factors)j(for)e
-(the)h(dot)g(separation)150 2162 y(on)30 b(new)m(er)h(prin)m(ters.)39
-b(It)30 b(should)f(alw)m(a)m(ys)i(b)s(e)e(14400)k(with)c(curren)m(t)h
-(prin)m(ters.)275 2308 y(The)i(fourth)g(section)h(sp)s(eci\014es)f(the)
-h(minim)m(um)d(and)j(maxim)m(um)f(pap)s(er)g(sizes,)h(and)g(the)g
-(margins.)150 2418 y(Some)f(prin)m(ters)f(allo)m(w)g(use)h(of)h(narro)m
-(w)m(er)f(margins)f(when)g(soft)m(w)m(ea)m(v)m(e)k(is)c(used;)i(b)s
-(oth)e(sets)i(of)f(margins)150 2527 y(are)f(sp)s(eci\014ed.)275
-2673 y(There)41 b(is)f(a)i(con)m(v)m(enien)m(t)h(`)p
-Fr(INCH)p Fu(')e(macro)h(de\014ned)e(to)i(mak)m(e)h(sp)s(eci\014cation)
-d(of)i(the)g Fr(max_paper_)150 2783 y(width)29 b Fu(and)h
-Fr(max_paper_height)c Fu(more)31 b(legible.)39 b(It)31
-b(m)m(ultiplies)c(72)32 b(b)m(y)e(the)h(pro)m(vided)e(expression)g(to)
-150 2892 y(get)j(the)e(appropriate)g(n)m(um)m(b)s(er)f(of)i(p)s(oin)m
-(ts.)40 b(F)-8 b(or)32 b(example,)e(to)i(sp)s(ecify)d(8.5)p
-Fr(")p Fu(,)j(`)p Fr(INCH\(17/2\))p Fu(')c(expands)150
-3002 y(to)j(`)p Fr(\(72)f(*)g(17/2\))p Fu(',)f(whic)m(h)g(is)h(ev)-5
-b(aluated)30 b(left)g(to)i(righ)m(t,)e(and)g(hence)g(generates)i(the)e
-(correct)i(v)-5 b(alue.)275 3148 y(The)21 b(\014fth)f(section)i(sp)s
-(eci\014es)e(some)i(miscellaneous)e(v)-5 b(alues)21 b(that)h(are)g
-(required)d(for)j(certain)f(prin)m(ters.)150 3258 y(F)-8
-b(or)28 b(most)f(prin)m(ters,)f(the)h(correct)h(v)-5
-b(alues)26 b(are)h(1)g(for)g Fr(separation_rows)22 b
-Fu(and)k(0)i(for)e(the)h(others.)40 b(V)-8 b(ery)g(,)150
-3367 y(v)m(ery)36 b(few)f(prin)m(ters)e(require)h(\(or)i(allo)m(w\))f
-Fr(separation_rows)c Fu(to)36 b(b)s(e)f(an)m(ything)f(but)h(1)g(and)g
-Fr(pseudo_)150 3477 y(separation_rows)28 b Fu(other)33
-b(than)f(zero.)47 b(The)32 b(St)m(ylus)f(Color)h(1520,)i(St)m(ylus)d
-(Color)h(800,)i(St)m(ylus)e(Color)150 3587 y(850,)g(and)e(\(strangely)h
-(enough)g(to)g(m)m(y)g(mind,)e(since)h(it's)g(a)i(new)e(prin)m(ter\))f
-(St)m(ylus)h(Color)g(660)i(seem)f(to)150 3696 y(b)s(e)f(the)g(only)g
-(exceptions.)275 3842 y(The)43 b Fr(zero_margin_offset)c
-Fu(is)k(used)h(to)g(sp)s(ecify)f(an)h(additional)e(negativ)m(e)j
-(horizon)m(tal)f(o\013set)150 3952 y(required)36 b(to)i(prin)m(t)e(to)j
-(the)e(edges)h(of)g(the)g(pap)s(er)e(on)i(new)m(er)f(St)m(ylus)g(Photo)
-h(prin)m(ters.)61 b(These)37 b(m)m(ust)150 4061 y(b)s(e)30
-b(determined)f(empirically;)e(go)s(o)s(d)j(starting)g(v)-5
-b(alues)30 b(are)h(100)g(for)f(1440)j(DPI)d(and)g(50)h(for)f(2880)i
-(DPI)150 4171 y(prin)m(ters.)39 b(The)30 b(goal)h(is)e(to)j(prin)m(t)d
-(to)i(the)f(edge)h(of)g(the)f(page,)i(but)d(not)i(o)m(v)m(er)h(it.)275
-4317 y(The)22 b(sixth)g(section)h(sp)s(eci\014es)e(head)i(o\013sets)g
-(for)g(prin)m(ters)e(that)j(do)f(not)g(ha)m(v)m(e)h(the)f(color)g(jets)
-g(aligned.)150 4427 y(Certain)28 b(prin)m(ters,)f(suc)m(h)i(as)f(the)h
-(St)m(ylus)f(Color)f(480,)k(ha)m(v)m(e)f(an)e(un)m(usual)f(head)h
-(arrangemen)m(t)h(whereb)m(y)150 4536 y(instead)38 b(of)g(all)g(of)g
-(the)h(colors)f(b)s(eing)f(aligned)g(v)m(ertically)-8
-b(,)41 b(the)d(nozzles)h(are)g(con\014gured)e(in)g(groups.)150
-4646 y(These)26 b(prin)m(ters)e(are)i(easy)h(to)g(determine;)f(if)f
-(the)h(normal)f(head)h(o\013set)h(of)f(zero)h(for)e(eac)m(h)i(color)g
-(is)d(used,)150 4755 y(the)29 b(prin)m(ting)e(will)g(b)s(e)h(v)m
-(ertically)h(out)g(of)h(alignmen)m(t.)39 b(Most)31 b(of)e(these)h(prin)
-m(ters)d(require)h(sp)s(eci\014cation)150 4865 y(of)g(a)h(negativ)m(e)g
-(o\013set)g(for)f(prin)m(ting)e(to)i(the)h(top)f(edge)h(of)f(the)g(pap)
-s(er;)g(t)m(ypically)f(these)h(prin)m(ters)f(do)h(not)150
-4975 y(require)h(suc)m(h)h(an)g(o\013set)i(when)d(prin)m(ting)f(blac)m
-(k)j(only)-8 b(.)275 5121 y(The)38 b(sev)m(en)m(th)h(section)g(sp)s
-(eci\014es)f(the)g(most)i(di\016cult)c(v)-5 b(alues)38
-b(to)i(tune,)g(the)f(dot)g(sizes,)i(prin)m(ting)150 5230
-y(densities,)28 b(and)f(ink)h(v)-5 b(alues)28 b(\(for)g(v)-5
-b(ariable)28 b(dot)h(size)f(enabled)g(prin)m(ters\).)39
-b(These)28 b(will)e(b)s(e)i(describ)s(ed)e(in)150 5340
-y(detail)k(b)s(elo)m(w.)p eop
-%%Page: 79 84
-79 83 bop 150 -116 a Fu(App)s(endix)28 b(D:)j(Adding)d(a)j(new)f(prin)m
-(ter)2112 b(79)275 299 y(The)42 b(last)g(section)h(sp)s(eci\014es)f
-(luminosit)m(y)-8 b(,)44 b(h)m(ue,)i(and)c(saturation)g(adjustmen)m(t)h
-(v)m(ectors)h(for)f(the)150 408 y(prin)m(ter,)35 b(and)f(the)h(pap)s
-(er)f(de\014nitions.)51 b(These)35 b(are)g(used)f(to)i(adjust)e(the)h
-(color)g(in)f(Photograph)h(and)150 518 y(Solid)h(Colors)h(output)h(mo)s
-(des.)64 b(These)37 b(are)i(eac)m(h)g(v)m(ectors)h(of)e(48)h
-(\(actually)f(49,)j(as)e(the)f(\014rst)f(v)-5 b(alue)150
-628 y(m)m(ust)35 b(b)s(e)g(duplicated\))f(doubles)g(that)i(remap)f(the)
-h(luminosit)m(y)-8 b(,)35 b(h)m(ue,)i(and)e(saturation)g(resp)s(ectiv)m
-(ely)-8 b(.)150 737 y(The)32 b(h)m(ue)h(is)e(calculated,)j(and)e(the)g
-(v)-5 b(alue)32 b(used)g(to)i(in)m(terp)s(olate)e(b)s(et)m(w)m(een)h
-(the)g(t)m(w)m(o)h(closest)f(p)s(oin)m(ts)e(in)150 847
-y(eac)m(h)h(v)m(ector.)275 984 y(The)37 b(pap)s(er)h(de\014nitions)e
-(is)h(a)i(set)g(of)g(pap)s(er)e(de\014nitions.)63 b(The)38
-b(pap)s(er)f(de\014nition)f(con)m(tains)j(the)150 1093
-y(name)30 b(of)g(the)g(pap)s(er)e(t)m(yp)s(e,)j(sp)s(ecial)d(settings)i
-(that)g(are)g(required)e(for)i(prin)m(ters)e(to)j(pro)s(cess)e(the)h
-(pap)s(er)150 1203 y(correctly)-8 b(,)31 b(and)f(a)h(set)g(of)f
-(adjustmen)m(t)h(v)-5 b(alues.)40 b(These)30 b(are)h(not)f(curren)m
-(tly)g(discussed)e(here.)275 1340 y(The)33 b(lists)g(of)h(dot)g(sizes)g
-(and)f(densities)f(con)m(tain)j(v)-5 b(alues)33 b(for)h(13)h(prin)m
-(ting)c(mo)s(des:)48 b(120/180)37 b(DPI)150 1450 y(using)22
-b(prin)m(ter)h(w)m(ea)m(ving)i(\(single)e(ro)m(w;)j(referred)d(to)i(as)
-f(\\in)m(terlea)m(v)m(e"\))i(and)e(\\soft")h(w)m(ea)m(ving)g(\(the)f
-(driv)m(er)150 1559 y(determines)39 b(the)h(exact)i(pattern)e(of)g(dot)
-h(la)m(y)m(out\),)i(360)f(DPI)e(in)m(terlea)m(v)m(e)h(and)e(soft)m(w)m
-(ea)m(v)m(e,)46 b(720x360)150 1669 y(DPI)36 b(in)m(terlea)m(v)m(e)g
-(and)f(soft)m(w)m(ea)m(v)m(e,)41 b(720)c(DPI)e(in)m(terlea)m(v)m(e)i
-(and)e(soft)m(w)m(ea)m(v)m(e,)40 b(1440x720)f(in)m(terlea)m(v)m(e)e
-(and)150 1778 y(soft)m(w)m(ea)m(v)m(e,)d(2880x720)f(in)m(terlea)m(v)m
-(e)f(and)d(soft)m(w)m(ea)m(v)m(e,)34 b(and)c(2880x1440)k(soft)m(w)m(ea)
-m(v)m(e)f(only)-8 b(.)275 1915 y(F)g(or)29 b(the)g(dot)f(sizes,)h(the)g
-(v)-5 b(alue)28 b(for)g(eac)m(h)i(elemen)m(t)f(in)f(the)g(v)m(ector)i
-(selects)f(the)g(dot)g(size)f(to)i(b)s(e)e(used)150 2025
-y(when)35 b(prin)m(ting)e(at)j(this)f(\(or)h(similar\))d(resolution.)55
-b(The)35 b(dot)h(sizes)f(are)h(determined)e(b)m(y)h(consulting)150
-2134 y(the)h(programming)f(man)m(ual)h(for)g(the)h(prin)m(ter)d(and)i
-(exp)s(erimen)m(ting)f(as)h(describ)s(ed)e(b)s(elo)m(w.)58
-b(Curren)m(t)150 2244 y(Epson)25 b(prin)m(ters)f(alw)m(a)m(ys)j(use)e
-(dot)i(sizes)e(less)g(than)h(`)p Fr(16)p Fu(',)h(or)f(`)p
-Fr(0x10)p Fu(',)g(to)h(indicate)e(single)g(dot)h(size)f(\(eac)m(h)150
-2354 y(dot)33 b(is)f(represen)m(ted)g(b)m(y)h(1)g(bit,)g(and)f(it's)g
-(either)g(prin)m(ted)f(or)i(not\),)h(and)e(dot)h(sizes)g(of)f(`)p
-Fr(16)p Fu(')h(or)g(greater)150 2463 y(to)39 b(indicate)f(v)-5
-b(ariable)37 b(dot)i(size)g(\(eac)m(h)h(dot)f(is)f(represen)m(ted)g(b)m
-(y)h(2)g(bits,)g(and)g(it)f(can)h(either)f(b)s(e)g(not)150
-2573 y(prin)m(ted)28 b(or)i(tak)m(e)h(on)e(2)h(or)g(3)g(v)-5
-b(alues,)29 b(represen)m(ting)g(the)h(relativ)m(e)f(size)h(of)g(the)f
-(prin)m(ted)f(dot\).)41 b(V)-8 b(ariable)150 2682 y(dot)33
-b(sizes)g(p)s(ermit)e(the)i(use)f(of)h(v)m(ery)g(small)f(dots)g(\(whic)
-m(h)g(w)m(ould)g(b)s(e)g(to)s(o)h(small)f(to)h(\014ll)e(the)i(page)h
-(and)150 2792 y(pro)s(duce)d(solid)g(blac)m(k\))i(in)f(ligh)m(t)g
-(areas,)i(while)c(allo)m(wing)i(the)h(page)g(to)g(b)s(e)f(\014lled)f
-(with)g(larger)h(dots)h(in)150 2902 y(dark)m(er)d(areas.)275
-3039 y(Ev)m(en)j(single)f(dot)h(size)g(prin)m(ters)f(can)i(usually)d
-(pro)s(duce)h(dots)h(of)h(di\013eren)m(t)e(sizes;)j(it's)e(just)g
-(illegal)150 3148 y(to)27 b(actually)e(try)h(to)g(switc)m(h)g(dot)g
-(size)g(during)d(a)k(page.)40 b(These)25 b(dots)h(are)h(also)e(m)m(uc)m
-(h)h(bigger)g(than)f(those)150 3258 y(used)30 b(in)f(true)h(v)-5
-b(ariable)29 b(dot)i(size)f(prin)m(ting.)275 3395 y(A)e(dot)h(size)f
-(of)h(`)p Fr(-1)p Fu(')f(indicates)g(that)h(this)f(resolution)f(is)g
-(illegal)g(for)h(the)h(prin)m(ter)e(in)g(question.)40
-b(An)m(y)150 3504 y(resolutions)27 b(that)j(w)m(ould)d(use)i(this)e
-(dot)i(size)g(will)d(not)j(b)s(e)f(presen)m(ted)h(to)g(the)g(user.)40
-b(A)29 b(dot)g(size)f(of)h(`)p Fr(-2)p Fu(')150 3614
-y(indicates)j(that)i(this)d(resolution)h(is)g(legal,)i(but)e(that)i
-(the)f(driv)m(er)f(is)g(not)h(to)h(attempt)g(to)g(set)f(an)m(y)h(dot)
-150 3724 y(size.)41 b(Some)30 b(v)m(ery)h(old)e(prin)m(ters)g(do)h(not)
-h(supp)s(ort)e(the)h(command)g(to)h(set)g(the)g(dot)g(size.)275
-3861 y(Most)f(prin)m(ters)e(supp)s(ort)f(a)j(dot)g(size)f(of)g(`)p
-Fr(0)p Fu(')h(as)f(a)h(mo)s(de-sp)s(eci\014c)e(default,)h(but)g(it's)g
-(often)h(a)f(bigger)150 3970 y(dot)23 b(than)f(necessary)-8
-b(.)39 b(Prin)m(ters)22 b(usually)e(also)i(supp)s(ort)f(some)i(dot)g
-(sizes)f(b)s(et)m(w)m(een)i(`)p Fr(1)p Fu(')e(and)g(`)p
-Fr(3)p Fu('.)39 b(Usually)150 4080 y(`)p Fr(1)p Fu(')31
-b(is)e(the)i(righ)m(t)e(dot)i(size)f(for)g(720)i(and)e(1440)i(dpi)d
-(prin)m(ting,)f(and)i(`)p Fr(3)p Fu(')g(w)m(orks)h(b)s(est)f(at)h(360)g
-(dpi.)275 4217 y(V)-8 b(ariable)26 b(dot)h(size)f(prin)m(ters)g
-(usually)e(supp)s(ort)h(2)i(or)g(3)g(sets)g(of)g(v)-5
-b(ariable)26 b(dot)h(sizes.)39 b(Older)25 b(prin)m(ters)150
-4326 y(based)33 b(on)f(a)h(6)h(picolitre)d(drop)h(\(the)h(480,)i(720,)g
-(740,)g(750,)g(900,)g(and)e(1200\))i(supp)s(ort)c(t)m(w)m(o:)47
-b(mo)s(de)32 b(16)150 4436 y(\(0x10)f(in)d(hexadecimal\))h(for)g
-(normal)g(v)-5 b(ariable)28 b(dots)h(at)i(1440)g(or)e(720)i(dpi,)d(and)
-h(mo)s(de)g(17)h(\(0x10\))h(for)150 4545 y(sp)s(ecial)f(larger)h(dots)h
-(at)g(360)h(dpi.)43 b(New)m(er)32 b(prin)m(ters)e(based)h(on)h(4)g
-(picolitre)e(drops)g(normally)g(supp)s(ort)150 4655 y(three)38
-b(sizes:)55 b(`)p Fr(0x10)p Fu(')37 b(for)g(4)h(pl)e(base)i(drops,)g(`)
-p Fr(0x11)p Fu(')f(for)h(6)g(pl)e(base)i(drops,)g(and)f(`)p
-Fr(0x12)p Fu(')g(for)g(sp)s(ecial)150 4765 y(large)i(drops.)64
-b(On)38 b(these)h(prin)m(ters,)h(`)p Fr(0x10)p Fu(')e(usually)f(w)m
-(orks)h(b)s(est)h(at)g(1440x720)j(and)c(`)p Fr(0x11)p
-Fu(')g(w)m(orks)150 4874 y(b)s(est)d(at)i(720x720.)60
-b(Unfortunately)-8 b(,)37 b(`)p Fr(0x10)p Fu(')e(do)s(esn't)h(seem)g
-(to)h(generate)g(quite)e(enough)h(densit)m(y)f(at)150
-4984 y(720x720,)d(b)s(ecause)c(if)g(it)g(did)f(the)h(output)g(w)m(ould)
-g(b)s(e)g(v)m(ery)h(smo)s(oth.)40 b(P)m(erhaps)28 b(it's)g(p)s(ossible)
-e(to)j(t)m(w)m(eak)150 5093 y(things)5 b(.)21 b(.)h(.)g(.)275
-5230 y(The)38 b(list)g(of)i(densities)d(is)i(a)g(list)f(of)i(base)f
-(densit)m(y)g(v)-5 b(alues)39 b(for)g(all)f(of)h(the)h(ab)s(o)m(v)m(e)g
-(listed)e(mo)s(des.)150 5340 y(\\Densit)m(y")47 b(refers)e(to)h(the)f
-(amoun)m(t)h(of)g(ink)e(dep)s(osited)g(when)h(a)g(solid)f(color)i(\(or)
-f(solid)f(blac)m(k\))i(is)p eop
-%%Page: 80 85
-80 84 bop 150 -116 a Fu(App)s(endix)28 b(D:)j(Adding)d(a)j(new)f(prin)m
-(ter)2112 b(80)150 299 y(prin)m(ted.)65 b(So)39 b(if)f(the)h(densit)m
-(y)g(is)f(`)p Fr(.5)p Fu(',)j(solid)c(blac)m(k)i(actually)g(prin)m(ts)f
-(only)g(half)g(the)h(p)s(ossible)e(dots.)150 408 y(\\Base)32
-b(densit)m(y")e(refers)f(to)i(the)g(fact)g(that)f(the)h(densit)m(y)e(v)
--5 b(alue)30 b(can)g(b)s(e)g(scaled)g(in)f(the)h(GUI)h(or)f(on)g(the)
-150 518 y(Ghostscript)35 b(command)g(line.)54 b(The)35
-b(densit)m(y)g(v)-5 b(alue)35 b(sp)s(eci\014ed)f(\(whic)m(h)g(is)h(not)
-g(made)h(visible)d(to)j(the)150 628 y(user\))25 b(is)g(m)m(ultiplied)e
-(b)m(y)i(the)h(base)g(densit)m(y)f(to)i(obtain)e(the)h(e\013ectiv)m(e)i
-(densit)m(y)d(v)-5 b(alue.)39 b(All)24 b(other)i(things)150
-737 y(\(suc)m(h)38 b(as)g(ink)f(drop)g(size\))h(remaining)e(the)i
-(same,)j(doubling)35 b(the)j(resolution)f(requires)f(halving)h(the)150
-847 y(base)c(densit)m(y)-8 b(.)47 b(The)32 b(base)h(densit)m(y)e(in)h
-(the)g(densit)m(y)g(v)m(ector)j(ma)m(y)e(exceed)g(`)p
-Fr(1)p Fu(',)h(as)f(man)m(y)f(pap)s(er)g(t)m(yp)s(es)150
-956 y(require)25 b(lo)m(w)m(er)i(densit)m(y)f(than)h(the)g(base)g(driv)
-m(er.)38 b(The)26 b(driv)m(er)g(ensures)f(that)j(the)f(actual)g(densit)
-m(y)f(nev)m(er)150 1066 y(exceeds)31 b(1.)275 1208 y(T)-8
-b(uning)30 b(the)i(densit)m(y)f(should)f(b)s(e)h(done)h(on)g(high)e
-(qualit)m(y)i(pap)s(er)e(\(usually)h(glossy)g(photo)h(pap)s(er\).)150
-1318 y(The)26 b(goal)i(is)d(to)j(\014nd)d(the)i(lo)m(w)m(est)h(densit)m
-(y)e(v)-5 b(alue)26 b(that)h(results)f(in)f(solid)g(blac)m(k)i(\(no)g
-(visible)d(gaps)j(under)150 1428 y(a)j(fairly)e(high)h(p)s(o)m(w)m(er)h
-(magnifying)e(glass)i(or)g(loup)s(e\).)39 b(If)30 b(an)f(appropriate)g
-(densit)m(y)g(v)-5 b(alue)30 b(is)f(found)f(for)150 1537
-y(720)h(DPI,)f(it)g(could)f(b)s(e)g(divided)e(b)m(y)j(2)g(for)f
-(1440x720,)32 b(b)m(y)c(4)g(for)g(2880x720,)j(and)d(b)m(y)f(8)i(for)e
-(2880x1440.)275 1680 y(Ho)m(w)m(ev)m(er,)36 b(for)d(prin)m(ters)f(that)
-h(o\013er)h(a)g(c)m(hoice)g(of)f(dot)h(size,)g(this)e(ma)m(y)i(not)f(b)
-s(e)g(the)g(b)s(est)g(strategy)-8 b(.)150 1789 y(The)37
-b(b)s(est)g(c)m(hoice)h(for)f(dot)h(size)f(is)g(the)g(smallest)g(dot)h
-(size)f(that)h(allo)m(ws)f(c)m(ho)s(osing)g(a)h(densit)m(y)e(v)-5
-b(alue)150 1899 y(not)41 b(greater)h(than)e(1)h(that)g(giv)m(es)g(full)
-d(co)m(v)m(erage.)74 b(This)39 b(dot)i(size)f(ma)m(y)h(b)s(e)f
-(di\013eren)m(t)g(for)g(di\013eren)m(t)150 2008 y(resolutions.)f(T)-8
-b(uning)29 b(v)-5 b(ariable)29 b(dot)i(size)f(prin)m(ters)f(is)g(more)i
-(complicated;)f(the)h(pro)s(cess)f(is)f(describ)s(ed)150
-2118 y(b)s(elo)m(w.)275 2261 y(The)k(last)h(mem)m(b)s(er)g(is)f(a)i(p)s
-(oin)m(ter)e(to)i(a)g(structure)f(con)m(taining)g(a)g(list)f(of)i(ink)d
-(v)-5 b(alues)34 b(for)g(v)-5 b(ariable)150 2370 y(dot)33
-b(size)h(\(or)f(6)h(color\))f(inks.)48 b(W)-8 b(e)35
-b(mo)s(del)d(v)-5 b(ariable)32 b(dot)h(size)g(inks)f(as)h(pro)s(ducing)
-e(a)j(certain)f Fr(")p Fu(v)-5 b(alue)p Fr(")150 2480
-y Fu(of)34 b(ink)f(for)h(eac)m(h)h(a)m(v)-5 b(ailable)33
-b(dot)h(size,)h(where)f(the)g(largest)h(dot)f(size)g(has)f(a)i(v)-5
-b(alue)33 b(of)h(1.)53 b(6-color)34 b(inks)150 2589 y(are)d(handled)e
-(similarly;)e(the)k(ligh)m(t)f(cy)m(an)h(and)f(ligh)m(t)g(magen)m(ta)j
-(inks)c(are)i(treated)g(as)g(a)g(fractional)f(ink)150
-2699 y(v)-5 b(alue.)57 b(The)36 b(com)m(bination)f(of)h(v)-5
-b(ariable)35 b(dot)h(size)g(and)g(6)g(color)g(inks,)g(of)h(course,)g
-(just)f(creates)h(that)150 2808 y(man)m(y)30 b(more)h(di\013eren)m(t)f
-(ink)f(c)m(hoices.)275 2951 y(This)c(structure)i(is)f(actually)h
-(rather)g(complicated;)h(it)f(con)m(tains)h(en)m(tries)f(for)g(eac)m(h)
-h(com)m(bination)f(of)150 3061 y(ph)m(ysical)f(prin)m(ter)f(resolution)
-h(\(180,)j(360,)h(720,)f(and)d(1440)j(dpi\),)d(ink)g(colors)h(\(4,)i
-(6,)f(and)e(7\),)j(and)d(single)150 3170 y(and)i(v)-5
-b(ariable)28 b(dot)h(sizes)g(\(since)g(some)g(prin)m(ter)f(mo)s(des)g
-(can't)i(handle)e(v)-5 b(ariable)28 b(dot)h(size)g(inks\).)39
-b(Since)150 3280 y(there's)31 b(so)f(m)m(uc)m(h)h(data,)g(it's)f
-(actually)g(a)h(somewhat)g(deeply)e(nested)h(structure:)275
-3422 y(An)f Fr(escp2_printer_t)e Fu(con)m(tains)j(a)h(p)s(oin)m(ter)e
-(\(essen)m(tially)-8 b(,)30 b(a)h(reference)g(rather)f(than)g(a)h(cop)m
-(y\))g(to)150 3532 y(an)f Fr(escp2_variable_inklist_t)p
-Fu(.)275 3674 y(An)c Fr(escp2_variable_inklist_t)20 b
-Fu(con)m(tains)27 b(p)s(oin)m(ters)e(to)j Fr(escp2_variable_inkset_t)20
-b Fu(struc-)150 3784 y(tures.)39 b(There)25 b(is)g(one)h(suc)m(h)g(p)s
-(oin)m(ter)f(for)g(eac)m(h)i(com)m(bination)e(of)h(resolution,)g(dot)g
-(t)m(yp)s(e,)h(and)e(ink)g(colors)150 3893 y(as)31 b(describ)s(ed)d(ab)
-s(o)m(v)m(e.)42 b(Y)-8 b(es,)31 b(this)f(is)f(rather)h(in\015exible.)
-275 4036 y(An)c Fr(escp2_variable_inkset_t)20 b Fu(con)m(tains)26
-b(p)s(oin)m(ters)f(to)i Fr(escp2_variable_ink_t)21 b
-Fu(structures.)150 4145 y(There)30 b(is)f(one)i(suc)m(h)f(p)s(oin)m
-(ter)f(for)i(eac)m(h)g(of)g(the)f(four)g(colors)g(\(C,)h(M,)g(Y,)f(and)
-g(K\).)275 4288 y(An)g Fr(escp2_variable_ink_t)25 b Fu(con)m(tains)31
-b(a)h(p)s(oin)m(ter)d(to)j(the)f(actual)g(list)f(of)h(ink)e(v)-5
-b(alues)31 b(\()p Fr(simple_)150 4398 y(dither_range_t)p
-Fu(\),)c(the)j(n)m(um)m(b)s(er)f(of)i(ink)e(v)-5 b(alues,)29
-b(and)h(a)h(densit)m(y)e(v)-5 b(alue)30 b(to)h(b)s(e)e(used)h(for)g
-(computing)150 4507 y(the)24 b(transitions.)37 b(This)23
-b(densit)m(y)g(v)-5 b(alue)23 b(is)h(actually)f(a)i(scaling)e(v)-5
-b(alue;)26 b(it)d(is)h(m)m(ultiplied)c(b)m(y)k(the)g(e\013ectiv)m(e)150
-4617 y(densit)m(y)36 b(to)i(compute)f(the)g(densit)m(y)f(to)i(b)s(e)e
-(used)g(for)g(computing)g(the)h(transitions.)59 b(Normally)-8
-b(,)38 b(this)150 4726 y(v)-5 b(alue)34 b(is)g(`)p Fr(1)p
-Fu(',)j(but)d(in)f(some)j(cases)f(it)g(ma)m(y)g(b)s(e)f(p)s(ossible)f
-(to)i(get)h(smo)s(other)f(results)f(with)f(a)i(di\013eren)m(t)150
-4836 y(v)-5 b(alue)39 b(\(in)g(particular,)h(the)g(single)e(dot)i(size)
-g(6-color)g(inks)e(w)m(ork)i(b)s(est)f(with)g(the)g(e\013ectiv)m(e)j
-(densit)m(y)150 4945 y(scaled)27 b(to)h(`)p Fr(.75)p
-Fu(')e(for)h(this)f(purp)s(ose\).)38 b(A)27 b(lo)m(w)m(er)h(densit)m(y)
-e(lo)m(w)m(ers)h(the)g(transition)f(p)s(oin)m(ts,)g(whic)m(h)g(results)
-150 5055 y(in)j(more)i(ink)e(b)s(eing)g(dep)s(osited.)275
-5198 y(A)h Fr(simple_dither_range_t)25 b Fu(is)k(a)i(structure)f(con)m
-(taining)g(four)f(v)-5 b(alues:)199 5340 y(1.)61 b(The)30
-b(v)-5 b(alue)30 b(of)g(the)h(particular)e(ink)p eop
-%%Page: 81 86
-81 85 bop 150 -116 a Fu(App)s(endix)28 b(D:)j(Adding)d(a)j(new)f(prin)m
-(ter)2112 b(81)199 299 y(2.)61 b(The)30 b(bit)f(pattern)i(used)e(to)i
-(represen)m(t)g(the)f(ink)199 434 y(3.)61 b(Whether)31
-b(the)f(ink)f(is)h(ligh)m(t)f(\(0\))j(or)e(dark)g(\(1\),)i(for)e(inks)f
-(with)g(ligh)m(t)g(and)h(dark)g(v)-5 b(arian)m(ts)199
-570 y(4.)61 b(The)25 b(relativ)m(e)h(amoun)m(t)g(of)f(ink)g(actually)g
-(dep)s(osited)f(b)m(y)i(this)e(dot)i(\(not)g(curren)m(tly)f(used)f(for)
-i(m)m(uc)m(h;)330 679 y(it)35 b(can)i(b)s(e)e(used)g(for)g(ink)g
-(reduction)g(purp)s(oses,)g(to)i(reduce)f(the)g(amoun)m(t)g(of)g(ink)e
-(dep)s(osited)h(on)330 789 y(the)c(pap)s(er\).)275 951
-y(These)26 b(things)g(are)i(in)m(teresting)e(as)i(arra)m(ys.)40
-b(F)-8 b(rom)27 b(an)g(arra)m(y)h(of)f Fr(simple_dither_range_t)p
-Fu('s,)c(the)150 1060 y(dither)32 b(co)s(de)h(computes)g(transition)f
-(v)-5 b(alues)32 b(that)i(it)f(lo)s(oks)f(up)h(at)g(run)f(time)h(to)h
-(decide)e(what)h(ink)f(to)150 1170 y(prin)m(t,)d(as)i(w)m(ell)e(as)i
-(whether)f(to)h(prin)m(t)e(at)i(all.)275 1306 y Fi(Really)g
-Fu(confused)f(no)m(w?)40 b(Y)-8 b(up.)40 b(Y)-8 b(ou'll)30
-b(probably)f(\014nd)f(it)i(easier)h(to)g(simply)d(read)i(the)g(co)s
-(de.)150 1568 y Ft(D.4)68 b(T)-11 b(uning)44 b(the)h(prin)l(ter)275
-1762 y Fu(No)m(w,)35 b(ho)m(w)g(do)f(y)m(ou)g(use)g(all)f(this)g(to)i
-(tune)e(a)i(prin)m(ter?)50 b(There)34 b(are)g(a)g(n)m(um)m(b)s(er)f(of)
-h(w)m(a)m(ys)h(to)g(do)f(it;)150 1872 y(this)29 b(one)i(is)e(m)m(y)i(p)
-s(ersonal)e(fa)m(v)m(orite.)275 2008 y(There's)37 b(a)h(\014le)f(named)
-g(`)p Fr(cyan-sweep.tif)p Fu('.)59 b(This)36 b(consists)h(of)h(a)g
-(thin)e(bar)h(of)h(cy)m(an)g(sw)m(eeping)150 2118 y(from)33
-b(white)g(to)i(almost)f(pure)f(cy)m(an,)j(and)d(from)h(pure)e(cy)m(an)j
-(to)g(blac)m(k.)51 b(The)34 b(\014rst)f(thing)g(to)h(do)g(is)f(to)150
-2227 y(pic)m(k)39 b(the)g(appropriate)f Fr(simple_dither_range_t)33
-b Fu(\(or)39 b(create)i(a)e(whole)g(new)f Fr(escp2_variable_)150
-2337 y(inklist_t)p Fu(\))24 b(and)h(commen)m(t)i(out)f(all)f(but)g(the)
-h(dark)m(est)g(ink)f(\(this)g(means)h(y)m(ou'll)f(b)s(e)g(using)g(the)h
-(largest)150 2447 y(dots)37 b(of)h(dark)e(ink\).)60 b(A)m(t)39
-b(8.5)p Fr(")f Fu(width)d(\(the)j(width)d(of)i(a)h(letter-size)g(piece)
-f(of)g(pap)s(er\),)i(the)e(bar)g(will)150 2556 y(b)s(e)e(1/8)p
-Fr(")h Fu(high.)55 b(Prin)m(ting)34 b(it)h(on)g(wider)f(or)h(narro)m(w)
-m(er)h(pap)s(er)f(will)d(c)m(hange)37 b(the)f(heigh)m(t)f(accordingly)
--8 b(.)150 2666 y(Prin)m(t)30 b(it)g(width-wise)f(across)i(a)g(piece)g
-(of)g(photo)g(qualit)m(y)f(pap)s(er)f(in)h(line)f(art)i(mo)s(de)f
-(using)g(ordered)g(or)150 2775 y(adaptiv)m(e)35 b(h)m(ybrid)e(dither.)
-54 b(Do)36 b(not)f(use)g(photographic)f(mo)s(de;)k(the)d(colors)g(in)f
-(photographic)g(mo)s(de)150 2885 y(v)-5 b(ary)29 b(non-linearly)d(dep)s
-(ending)h(up)s(on)g(the)i(presence)g(of)g(the)g(three)g(color)g(comp)s
-(onen)m(ts,)h(while)d(in)h(line)150 2995 y(art)36 b(mo)s(de)f(the)h
-(colors)g(are)g(m)m(uc)m(h)g(purer.)55 b(Mak)m(e)37 b(sure)e(that)h
-(all)f(the)h(color)f(adjustmen)m(ts)h(are)g(set)g(to)150
-3104 y(defaults)e(\(1.0\).)57 b(Use)36 b(the)f(highest)f(qualit)m(y)h
-(v)m(ersion)f(of)h(the)h(prin)m(t)e(mo)s(de)g(y)m(ou're)i(testing)f(to)
-h(reduce)150 3214 y(banding)21 b(and)h(other)h(artifacts.)39
-b(This)20 b(is)i(m)m(uc)m(h)h(easier)g(to)g(do)g(with)e(the)i(Gimp)e
-(than)i(with)e(Ghostscript.)275 3350 y(A)m(t)31 b(this)e(stage,)j(y)m
-(ou)f(w)m(an)m(t)g(to)g(lo)s(ok)f(for)g(four)g(things:)199
-3486 y(1.)61 b(The)30 b(blac)m(k)g(near)h(the)f(cen)m(ter)i(of)e(the)h
-(line)d(is)i(solid,)f(but)g(not)i(more)f(so)h(than)f(that.)199
-3622 y(2.)61 b(The)30 b(cy)m(an)h(immediately)e(to)i(the)f(left)g(of)h
-(the)g(blac)m(k)f(is)f Fn(almost)41 b Fu(solid.)199 3757
-y(3.)61 b(The)25 b(dark)h(cy)m(an)h(at)f(the)g(far)g(righ)m(t)g(of)g
-(the)g(page)h(is)e(solid,)g(but)g(not)h(more)g(so.)40
-b(Y)-8 b(ou)26 b(can)h(try)e(tuning)330 3867 y(the)31
-b(densit)m(y)e(so)i(that)g(it)f(isn't)f(quite)h(solid,)f(then)h(n)m
-(udging)f(up)g(the)i(densit)m(y)e(un)m(til)g(it)h(is.)199
-4002 y(4.)61 b(Both)29 b(sw)m(eeps)f(sw)m(eep)g(smo)s(othly)f(from)g
-(ligh)m(t)g(to)i(dark.)40 b(In)27 b(particular,)g(the)h(dark)f(half)g
-(of)h(the)g(bar)330 4112 y(shouldn't)g(visibly)g(c)m(hange)j(color;)g
-(it)f(should)e(go)k(smo)s(othly)d(from)h(cy)m(an)h(to)g(blac)m(k.)275
-4274 y(Rep)s(eat)h(this)e(stage)j(un)m(til)d(y)m(ou)i(ha)m(v)m(e)h(ev)m
-(erything)e(just)g(righ)m(t.)44 b(Use)32 b(the)g(p)s(ositioning)d(en)m
-(try)j(b)s(o)m(xes)150 4383 y(in)g(the)h(dialog)f(to)h(p)s(osition)e
-(eac)m(h)j(bar)f(exactly)h(1/8)p Fr(")f Fu(further)f(do)m(wn)g(the)h
-(page.)49 b(Adjacen)m(t)34 b(bars)f(will)150 4493 y(b)s(e)d(touc)m
-(hing.)275 4629 y(The)e(next)i(step)f(is)f(to)i(uncommen)m(t)g(out)f
-(the)h(second)f(dark)m(est)h(dot)f(size.)41 b(If)28 b(y)m(ou're)i
-(using)e(v)-5 b(ariable)150 4739 y(dots,)32 b(use)f(the)h(second)f
-(largest)h(dot)g(size)f(of)h(the)f(dark)g(ink)f(rather)i(than)f(the)g
-(largest)h(dot)g(size)f(of)h(the)150 4848 y(ligh)m(t)e(ink.)39
-b(This)29 b(will)e(giv)m(e)k(y)m(ou)g(t)m(w)m(o)h(inks.)275
-4985 y(When)j(y)m(ou)g(recompile)g(the)g(plugin,)f(y)m(ou)i(simply)d
-(need)i(to)h(cop)m(y)g(the)g(new)f(executable)g(in)m(to)h(the)150
-5094 y(correct)c(place.)40 b(Y)-8 b(ou)31 b(do)f(not)h(need)f(to)h
-(exit)f(and)g(restart)h(the)g(Gimp.)275 5230 y(Prin)m(t)c(another)j
-(bar)e(adjacen)m(t)i(to)g(the)f(\014rst)f(one.)40 b(Y)-8
-b(our)29 b(goal)h(is)e(to)h(matc)m(h)h(the)f(bar)g(using)e(a)i(single)
-150 5340 y(dot)i(size)f(as)h(closely)f(as)h(p)s(ossible.)38
-b(Y)-8 b(ou'll)30 b(\014nd)f(that)i(the)g(dark)f(region)g(of)g(the)h
-(bar)f(shouldn't)f(c)m(hange)p eop
-%%Page: 82 87
-82 86 bop 150 -116 a Fu(App)s(endix)28 b(D:)j(Adding)d(a)j(new)f(prin)m
-(ter)2112 b(82)150 299 y(to)33 b(an)m(y)f(great)i(degree,)f(but)f(the)g
-(ligh)m(t)f(half)g(probably)f(will.)44 b(If)31 b(the)i(ligh)m(ter)e
-(part)h(of)g(the)h(ligh)m(t)e(half)g(is)150 408 y(to)s(o)37
-b(dark,)h(y)m(ou)g(need)e(to)h(increase)g(the)g(v)-5
-b(alue)36 b(of)h(the)g(smaller)e(dot;)40 b(if)c(it's)g(to)s(o)i(ligh)m
-(t,)g(y)m(ou)f(need)f(to)150 518 y(decrease)e(the)g(v)-5
-b(alue.)48 b(The)33 b(reasoning)f(is)h(that)g(if)g(the)g(v)-5
-b(alue)33 b(is)f(to)s(o)i(lo)m(w,)g(the)f(ink)f(isn't)g(b)s(eing)g(giv)
-m(en)150 628 y(enough)g(credit)h(for)f(its)g(con)m(tribution)f(to)j
-(the)f(darkness)e(of)i(the)g(ink,)f(and)g(vice)h(v)m(ersa.)48
-b(Rep)s(eat)34 b(un)m(til)150 737 y(y)m(ou)29 b(ha)m(v)m(e)g(a)g(go)s
-(o)s(d)f(matc)m(h.)41 b(Mak)m(e)30 b(sure)d(y)m(ou)i(let)f(the)h(ink)e
-(dry)g(fully)-8 b(,)27 b(whic)m(h)g(will)f(tak)m(e)k(a)f(few)f(min)m
-(utes.)150 847 y(W)-8 b(et)32 b(ink)d(will)f(lo)s(ok)i(to)s(o)i(dark.)
-40 b(Don't)32 b(lo)s(ok)e(at)h(the)g(pap)s(er)e(to)s(o)j(closely;)e
-(hold)f(it)h(at)i(a)f(distance.)40 b(The)150 956 y(extra)e(graininess)e
-(of)h(the)h(largest)g(dot)f(size)h(will)d(probably)g(mak)m(e)k(it)e(lo)
-s(ok)g(ligh)m(ter)f(than)i(it)f(should;)150 1066 y(if)e(y)m(ou)h(hold)f
-(it)h(far)f(enough)h(a)m(w)m(a)m(y)i(so)e(that)h(y)m(ou)f(can't)h(see)g
-(the)f(dots,)i(y)m(ou'll)d(get)i(a)f(more)g(accurate)150
-1176 y(picture)29 b(of)i(what's)f(going)h(on.)275 1322
-y(After)j(y)m(ou)g(ha)m(v)m(e)h(what)f(lo)s(oks)f(lik)m(e)g(a)i(go)s(o)
-s(d)e(matc)m(h,)j(prin)m(t)d(another)h(bar)f(using)g(only)g(the)h
-(largest)150 1431 y(dot)29 b(size)g(\(or)g(dark)f(ink,)g(for)g(single)g
-(dot)h(size)f(6-color)i(prin)m(ters\).)39 b(Y)-8 b(ou)29
-b(w)m(an)m(t)h(to)f(ensure)f(that)i(the)f(bars)150 1541
-y(touc)m(hing)34 b(eac)m(h)g(other)g(lo)s(ok)g(iden)m(tical,)f(or)h(as)
-g(close)g(as)g(p)s(ossible)d(to)j(it;)h(y)m(our)f(ey)m(e)h(w)m(on't)f
-(giv)m(e)h(y)m(ou)f(a)150 1650 y(go)s(o)s(d)c(reading)e(if)h(the)h
-(bars)f(are)h(separated)h(from)e(eac)m(h)i(other.)40
-b(Y)-8 b(ou'll)29 b(probably)f(ha)m(v)m(e)j(to)g(rep)s(eat)f(the)150
-1760 y(pro)s(cedure.)275 1906 y(The)24 b(next)g(step)h(is)f(to)h
-(commen)m(t)h(out)f(all)e(but)h(the)h(largest)g(and)f(third-largest)f
-(dot)i(size,)h(and)e(rep)s(eat)150 2016 y(the)31 b(pro)s(cedure.)42
-b(When)31 b(they)g(matc)m(h,)i(use)e(all)f(three)h(dot)g(sizes)g(of)g
-(dark)g(ink.)42 b(Again,)31 b(the)g(goal)h(is)e(to)150
-2125 y(matc)m(h)h(the)g(single)e(dot)h(size.)275 2271
-y(Y)-8 b(ou'll)22 b(probably)g(\014nd)g(the)h(matc)m(h)i(is)d(imp)s
-(erfect.)37 b(No)m(w)24 b(y)m(ou)g(ha)m(v)m(e)h(to)f(\014gure)f(out)g
-(what)h(region)f(isn't)150 2381 y(righ)m(t,)37 b(whic)m(h)d(tak)m(es)j
-(some)f(exp)s(erimen)m(tation.)55 b(Ev)m(en)36 b(small)e(adjustmen)m
-(ts)h(can)h(mak)m(e)g(a)g(noticeable)150 2491 y(di\013erence)d(in)f
-(what)h(y)m(ou)h(see.)50 b(A)m(t)34 b(this)e(stage,)k(it's)d(v)m(ery)h
-(imp)s(ortan)m(t)e(to)i(hold)e(the)i(page)g(far)f(enough)150
-2600 y(from)28 b(y)m(our)h(ey)m(e;)i(when)d(y)m(ou)h(use)g(all)f(three)
-h(dot)g(sizes,)g(the)g(texture)h(will)c(b)s(e)i(m)m(uc)m(h)h(more)g(ev)
-m(en,)h(whic)m(h)150 2710 y(sometimes)g(mak)m(es)i(it)e(lo)s(ok)g(dark)
-m(er)g(and)g(sometimes)g(ligh)m(ter.)275 2856 y(After)j(this)g(is)f
-(calibrated,)i(it's)f(time)g(to)h(calibrate)f(the)h(ligh)m(t)e(ink)g
-(against)i(the)g(dark)f(ink.)48 b(T)-8 b(o)34 b(do)150
-2966 y(this,)d(commen)m(t)i(out)f(all)f(but)g(the)h(large)g(dot)g(v)m
-(ersion)f(of)h(the)g(t)m(w)m(o)i(inks,)d(and)g(rep)s(eat)h(the)g(pro)s
-(cedure.)150 3075 y(This)26 b(is)h(tric)m(kier,)h(b)s(ecause)g(the)g(h)
-m(ues)g(of)g(the)g(inks)f(migh)m(t)h(not)g(b)s(e)f(quite)h(iden)m
-(tical.)38 b(Lo)s(ok)29 b(at)f(the)g(dark)150 3185 y(half)37
-b(of)h(the)g(bar)g(as)g(w)m(ell)f(as)h(the)g(ligh)m(t)g(half)f(to)h
-(see)h(that)g(the)f(h)m(ue)g(really)e(do)s(esn't)i(c)m(hange)h(as)g(y)m
-(ou)150 3294 y(sw)m(eep)c(from)e(cy)m(an)j(to)f(blac)m(k.)52
-b(Sometimes)34 b(it's)g(easier)h(to)g(judge)f(that)h(w)m(a)m(y)-8
-b(.)54 b(Y)-8 b(ou)35 b(ma)m(y)g(\014nd)d(that)j(it)150
-3404 y(lo)s(oks)30 b(blotc)m(h)m(y)-8 b(,)31 b(in)e(whic)m(h)g(case)j
-(y)m(ou)f(should)d(switc)m(h)i(from)g(ordered)f(dither)g(to)i(adaptiv)m
-(e)g(h)m(ybrid.)275 3550 y(After)36 b(y)m(ou)h(ha)m(v)m(e)g(the)g(ligh)
-m(t)f(and)f(dark)h(inks)f(calibrated)h(against)g(eac)m(h)i(other,)g
-(it's)e(time)g(to)i(add)150 3660 y(ev)m(erything)33 b(bac)m(k)g(in.)48
-b(Usually)31 b(y)m(ou)i(don't)g(w)m(an)m(t)h(to)g(use)e(the)i(largest)f
-(dot)g(size)g(of)g(ligh)m(t)f(ink.)47 b(These)150 3769
-y(dots)24 b(will)e(b)s(e)h(m)m(uc)m(h)h(larger)g(than)g(the)g(small)f
-(dots)h(of)g(dark)f(ink,)i(but)e(they'll)g(still)f(b)s(e)h(ligh)m(ter.)
-38 b(This)23 b(will)150 3879 y(cause)34 b(problems)d(when)h(prin)m
-(ting)f(mixed)h(colors,)i(since)e(y)m(ou'll)g(b)s(e)h(dep)s(ositing)e
-(more)i(ink)f(on)h(ligh)m(ter)150 3988 y(regions)d(of)h(the)g(page,)g
-(and)f(y)m(ou'll)g(probably)f(get)i(strange)g(color)g(casts)g(that)h(y)
-m(ou)e(can't)i(get)g(rid)d(of)h(in)150 4098 y(neutral)f(tones.)42
-b(I)30 b(normally)e(use)i(only)g(the)g(smallest)g(one)h(or)f(t)m(w)m(o)
-i(dot)e(sizes)g(of)h(ligh)m(t)f(ink.)275 4244 y(After)35
-b(y)m(ou'v)m(e)h(t)m(w)m(eak)m(ed)h(ev)m(erything,)f(prin)m(t)d(the)i
-(color)g(bar)g(with)e(saturation)i(set)g(to)h(zero.)55
-b(This)150 4354 y(will)32 b(prin)m(t)g(neutral)i(tones)g(using)f(color)
-h(inks.)51 b(Y)-8 b(our)34 b(goal)h(here)f(is)f(to)i(lo)s(ok)f(for)g
-(neutral)f(tonalit)m(y)-8 b(.)52 b(If)150 4463 y(y)m(ou're)31
-b(using)e(a)i(6-color)h(prin)m(ter)d(and)h(get)h(a)g(y)m(ello)m(w)g
-(cast,)h(it)e(means)g(that)h(the)g(v)-5 b(alues)30 b(for)g(y)m(our)h
-(ligh)m(t)150 4573 y(inks)37 b(are)j(to)s(o)f(high)e(\(remem)m(b)s(er,)
-k(that)f(means)e(they're)i(getting)f(to)s(o)h(m)m(uc)m(h)f(credit,)h
-(so)f(y)m(ou're)h(not)150 4682 y(dep)s(ositing)33 b(enough)i(cy)m(an)g
-(and)f(magen)m(ta)j(ink,)e(and)f(the)h(y)m(ello)m(w)g(dominates\).)54
-b(If)35 b(y)m(ou)g(get)h(a)f(bluish)150 4792 y(or)30
-b(bluish-purple)25 b(cast,)31 b(y)m(our)f(ligh)m(t)f(inks)f(are)j(to)s
-(o)f(lo)m(w)g(\(y)m(ou're)h(not)f(giving)f(them)g(enough)h(credit,)g
-(so)150 4902 y(to)s(o)e(m)m(uc)m(h)g(cy)m(an)g(and)f(magen)m(ta)j(is)c
-(dep)s(osited,)h(whic)m(h)g(o)m(v)m(erwhelms)g(the)h(y)m(ello)m(w\).)40
-b(Mak)m(e)29 b(sure)e(y)m(ou)h(do)150 5011 y(this)e(on)i(v)m(ery)g
-(white,)f(v)m(ery)h(high)e(grade)i(inkjet)f(pap)s(er)f(that's)j
-(designed)d(for)h(1440x720)k(dpi)26 b(or)h(higher;)150
-5121 y(otherwise)e(the)g(ink)f(will)f(spread)h(on)h(con)m(tact)j(and)c
-(y)m(ou'll)h(get)h(v)-5 b(alues)25 b(that)g(aren't)h(really)e(true)h
-(for)g(high)150 5230 y(grade)33 b(pap)s(er.)47 b(Y)-8
-b(ou)33 b(can,)h(of)f(course,)h(calibrate)e(for)g(lo)m(w)h(grade)g(pap)
-s(er)f(if)f(that's)j(what)f(y)m(ou're)g(going)150 5340
-y(to)e(use,)f(but)g(that)h(shouldn't)e(b)s(e)g(put)h(in)m(to)g(the)h
-(distribution.)p eop
-%%Page: 83 88
-83 87 bop 150 -116 a Fu(App)s(endix)28 b(D:)j(Adding)d(a)j(new)f(prin)m
-(ter)2112 b(83)275 299 y(Y)-8 b(ou)43 b(can)f(also)h(fully)d
-(desaturate)k(this)d(bar)h(inside)e(the)j(Gimp)f(and)g(prin)m(t)f(it)h
-(as)h(mono)s(c)m(hrome)150 408 y(\(don't)38 b(prin)m(t)e(the)i(cy)m(an)
-g(as)f(mono)s(c)m(hrome;)42 b(the)37 b(driv)m(er)g(do)s(es)g(funn)m(y)f
-(things)g(with)g(luminance\),)i(for)150 518 y(comparison.)i(Y)-8
-b(ou'll)30 b(\014nd)e(it)i(v)m(ery)h(hard)e(to)i(get)h(rid)d(of)h(all)f
-(color)i(casts.)275 652 y(There)e(are)i(other)g(w)m(a)m(ys)g(of)g
-(tuning)d(prin)m(ters,)i(but)f(this)g(one)i(w)m(orks)f(prett)m(y)h(w)m
-(ell)f(for)g(me.)150 909 y Ft(D.5)68 b(Canon)45 b(inkjet)h(prin)l(ters)
-275 1101 y Fu(Basically)-8 b(,)39 b(a)f(new)f(Canon)g(prin)m(ter)g(can)
-h(b)s(e)f(added)g(to)h(`)p Fr(print-canon.c)p Fu(')d(in)h(a)i(similar)d
-(w)m(a)m(y)k(as)150 1210 y(describ)s(ed)28 b(ab)s(o)m(v)m(e)k(for)e
-(the)h(epson)f(inkjet)f(prin)m(ters.)39 b(The)30 b(main)g
-(di\013erences)f(are)i(noted)f(here:)275 1345 y(In)h(general,)i(Canon)f
-(prin)m(ters)f(ha)m(v)m(e)i(more)g(\\built-in)c(in)m(telligence")j
-(than)g(Epson)f(prin)m(ters)g(whic)m(h)150 1454 y(results)j(in)f(the)i
-(fact)h(that)g(the)f(driv)m(er)e(only)h(has)h(to)h(tell)e(the)h(prin)m
-(ting)e(conditions)g(lik)m(e)h(resolutions,)150 1564
-y(dot)i(sizes,)g(etc.)57 b(to)36 b(the)f(prin)m(ter)f(and)h(afterw)m
-(ards)g(transfer)g(the)h(raster)f(data)h(line)e(b)m(y)h(line)f(for)h
-(eac)m(h)150 1673 y(color)30 b(used.)275 1807 y Fr(canon_cap_t)d
-Fu(is)i(a)i(C)f(struct)g(de\014ned)f(as)i(follo)m(ws:)3474
-2040 y(Data)h(t)m(yp)s(e)-3724 b Fk(canon)p 449 2040
-35 5 v 40 w(cap)p 660 2040 V 41 w(t)630 2144 y Fr(typedef)46
-b(struct)g(canon_caps)f({)725 2247 y(int)i(model;)476
-b(/*)47 b(model)g(number)f(as)h(used)f(in)i(printers.xml)c(*/)725
-2351 y(int)j(max_width;)284 b(/*)47 b(maximum)f(printable)f(paper)i
-(size)f(*/)725 2455 y(int)h(max_height;)725 2559 y(int)g(base_res;)332
-b(/*)47 b(base)g(resolution)e(-)i(shall)g(be)g(150)g(or)g(180)g(*/)725
-2663 y(int)g(max_xdpi;)332 b(/*)47 b(maximum)f(horizontal)f(resolution)
-g(*/)725 2766 y(int)i(max_ydpi;)332 b(/*)47 b(maximum)f(vertical)g
-(resolution)f(*/)725 2870 y(int)i(max_quality;)725 2974
-y(int)g(border_left;)188 b(/*)47 b(left)g(margin,)f(points)g(*/)725
-3078 y(int)h(border_right;)140 b(/*)47 b(right)g(margin,)e(points)h(*/)
-725 3181 y(int)h(border_top;)236 b(/*)47 b(absolute)f(top)h(margin,)e
-(points)i(*/)725 3285 y(int)g(border_bottom;)92 b(/*)47
-b(absolute)f(bottom)g(margin,)g(points)g(*/)725 3389
-y(int)h(inks;)524 b(/*)47 b(installable)e(cartridges)g(\(CANON_INK_*\))
-f(*/)725 3493 y(int)j(slots;)476 b(/*)47 b(available)e(paperslots)g(*/)
-725 3597 y(int)i(features;)332 b(/*)47 b(special)f(bjl)h(settings)e(*/)
-725 3700 y(canon_dot_size_t)f(dot_sizes;)h(/*)i(Vector)f(of)h(dot)g
-(sizes)g(for)f(resolutions)f(*/)725 3804 y(canon_densities_t)f
-(densities;)h(/*)i(List)f(of)i(densities)d(for)i(each)f(printer)g(*/)
-725 3908 y(canon_variable_inklist_t)c(*inxs;)k(/*)h(Choices)f(of)h
-(inks)g(for)f(this)h(printer)f(*/)630 4012 y(})h(canon_cap_t;)275
-4195 y Fu(Since)38 b(there)i(are)g(Canon)f(prin)m(ters)f(whic)m(h)g
-(prin)m(t)g(in)h(resolutions)f(of)h(2^)p Fc(n)27 b Fs(\003)g
-Fu(150)41 b(dpi)d(\(e.g.)69 b(300,)150 4305 y(600,)44
-b(1200\))e(and)d(others)h(whic)m(h)e(supp)s(ort)g(resolutions)h(of)h
-(2^)p Fc(n)27 b Fs(\003)g Fu(180)41 b(dpi)d(\(e.g.)70
-b(360,)44 b(720,)g(1440\),)150 4414 y(there's)32 b(a)h(base)f
-(resolution)f(\(150)i(or)f(180,)i(resp)s(ectiv)m(ely\))e(giv)m(en)g(in)
-f(the)h Fr(canon_cap_t)p Fu(.)43 b(The)31 b(structs)150
-4524 y Fr(canon_dot_size_t)p Fu(,)c Fr(canon_densities_t)f
-Fu(and)k Fr(canon_variable_inklist_)o(t)25 b Fu(refer)30
-b(to)i(resolu-)150 4633 y(tions)e(b)s(eing)f(m)m(ultiples)f(of)i(the)h
-(base)f(resolution.)275 4767 y(F)-8 b(or)30 b(the)h(Canon)f(driv)m(er,)
-f(the)h(struct)g Fr(canon_dot_size_t)c Fu(holds)j(v)-5
-b(alues)29 b(for)h(a)h(mo)s(del's)e(capabil-)150 4877
-y(ities)i(at)h(a)g(giv)m(en)g(resolution:)42 b(`)p Fr(-1)p
-Fu(')32 b(if)f(the)g(resolution)g(is)g(not)h(supp)s(orted.)43
-b(`)p Fr(0)p Fu(')31 b(if)g(it)g(can)h(b)s(e)g(used)f(and)150
-4987 y(`)p Fr(1)p Fu(')g(if)e(the)h(resolution)f(can)i(b)s(e)f(used)f
-(for)i(v)-5 b(ariable)29 b(dot)h(size)h(prin)m(ting.)275
-5121 y(In)c Fr(canon_densities_t)c Fu(the)28 b(base)g(densities)f(for)g
-(eac)m(h)j(resolution)c(can)i(b)s(e)g(sp)s(eci\014ed)e(lik)m(e)h(for)h
-(an)150 5230 y(epson)35 b(prin)m(ter,)i(the)f(same)g(holds)e(true)i
-(for)f Fr(canon_variable_inklist_t)p Fu(.)51 b(See)36
-b(the)g(descriptions)150 5340 y(ab)s(o)m(v)m(e)c(to)f(learn)e(ab)s(out)
-h(ho)m(w)h(to)g(adjust)f(y)m(our)g(mo)s(del's)f(output)h(to)h(yield)e
-(nice)h(results.)p eop
-%%Page: 84 89
-84 88 bop 150 -116 a Fu(App)s(endix)28 b(D:)j(Adding)d(a)j(new)f(prin)m
-(ter)2112 b(84)275 299 y(There's)40 b(a)i(sligh)m(t)e(di\013erence)h
-(though)g(in)f(the)h(w)m(a)m(y)h(the)g(Canon)e(driv)m(er)g(and)h(the)g
-(escp2)h(driv)m(er)150 408 y(de\014ne)30 b(their)f(v)-5
-b(ariable)29 b(inklists:)38 b(In)30 b(the)g(Canon)g(driv)m(er,)g(y)m
-(ou)g(need)g(to)i(de\014ne)d(an)h(inklist)e(lik)m(e)i(this:)390
-537 y Fr(static)46 b(const)g(canon_variable_inklist_t)c
-(canon_ink_myinks[])g(=)390 641 y({)485 745 y({)581 848
-y(1,4,)47 b(/*)g(1bit/pixel,)d(4)k(colors)e(*/)581 952
-y(&ci_CMYK_1,)f(&ci_CMYK_1,)f(&ci_CMYK_1,)581 1056 y(&ci_CMYK_1,)h
-(&ci_CMYK_1,)f(&ci_CMYK_1,)485 1160 y(},)485 1264 y({)581
-1367 y(3,4,)j(/*)g(3bit/pixel,)d(4)k(colors)e(*/)581
-1471 y(&ci_CMYK_3,)f(&ci_CMYK_3,)f(&ci_CMYK_3,)581 1575
-y(&ci_CMYK_3,)h(&ci_CMYK_3,)f(&ci_CMYK_3,)485 1679 y(},)390
-1782 y(};)150 1917 y Fu(where)d(the)h(`)p Fr(&ci_CMYK_1)p
-Fu(')d(and)i(`)p Fr(&ci_CMYK_3)p Fu(')e(en)m(tries)i(are)h(references)g
-(to)g(a)g(previously)d(de\014ned)150 2027 y(const)31
-b(of)f(t)m(yp)s(e)h Fr(canon_variable_inkset_t)p Fu(.)p
-eop
-%%Page: 85 90
-85 89 bop 150 -116 a Fu(Data)32 b(T)m(yp)s(e)e(and)g(V)-8
-b(ariable)29 b(Index)2290 b(85)150 299 y Fp(Data)54 b(T)l(yp)t(e)g(and)
-f(V)-13 b(ariable)55 b(Index)150 642 y Ft(C)150 764 y
-Fe(canon_cap_t)23 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)46 b Fd(83)150 1023 y Ft(E)150 1145 y Fe(escp2_printer_t)15
-b Fb(.)g(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)40 b Fd(75)150
-1404 y Ft(G)150 1526 y Fe(gimpprint_binary_age)7 b Fb(.)17
-b(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)33 b Fd(25)150 1618 y Fe
-(gimpprint_current_interface)16 b Fb(.)i(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)41 b Fd(25)150 1709 y Fe
-(gimpprint_interface_age)26 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)47 b Fd(25)150
-1800 y Fe(gimpprint_major_version)26 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)47 b
-Fd(25)2025 642 y Fe(gimpprint_micro_version)26 b Fb(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)47 b Fd(25)2025 737 y Fe(gimpprint_minor_version)26
-b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)47 b Fd(25)2025 1012 y Ft(S)2025 1140 y Fe(stp_image_t)23
-b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)46
-b Fd(23)2025 1234 y Fe(stp_option_t)22 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b Fd(21)2025 1329 y Fe(stp_outfunc_t)18
-b Fb(.)d(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43
-b Fd(20)2025 1423 y Fe(stp_papersize_t)15 b Fb(.)g(.)e(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)40 b Fd(21)2025 1517 y Fe(stp_papersize_unit_t)7
-b Fb(.)17 b(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 b Fd(21)2025 1612 y
-Fe(stp_printer_t)18 b Fb(.)d(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)43 b Fd(22)2025 1706 y Fe(stp_printfuncs_t)13 b Fb(.)j(.)c(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)39 b Fd(23)2025 1800 y Fe(stp_vars_t)24
-b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48
-b Fd(15)p eop
-%%Page: 86 91
-86 90 bop 150 -116 a Fu(F)-8 b(unction)30 b(and)g(Macro)h(Index)2449
-b(86)150 299 y Fp(F)-13 b(unction)53 b(and)g(Macro)h(Index)150
-614 y Ft(*)150 737 y Fe(*)39 b(??)h Fa(BC)6 b Fe(=)p
-Fa(xx)45 b(y)6 b Fe([1])40 b(...)g Fa(y)6 b Fe([xx])g
-Fb(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)31
-b Fd(72)150 829 y Fe(*)39 b(AC)h Fa(BC)6 b Fe(=2)41 b(00)f
-Fa(xx)15 b Fb(.)c(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36
-b Fd(69)150 921 y Fe(*)j(AI)h Fa(BC)6 b Fe(=3)41 b(00)f(00)f(00)10
-b Fb(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fd(67)150 1013 y Fe(*)k(CH)h
-Fa(BC)6 b Fe(=2)41 b(00)f Fa(xx)15 b Fb(.)c(.)i(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)36 b Fd(67)150 1105 y Fe(*)j(DA)h Fa(BC)6 b Fe(=4)41
-b(00)f Fa(xx)j Fe(00)d Fa(yy)20 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)41 b Fd(67)150
-1197 y Fe(*)e(DA)h Fa(BC)6 b Fe(=6)41 b(00)f Fa(xx)j
-Fe(00)d Fa(yy)45 b Fe(09)39 b(00)6 b Fb(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)32 b Fd(68)150 1289 y Fe(*)39
-b(DR)h Fa(BC)6 b Fe(=4)41 b(00)f(xx)f Fa(DT2)31 b Fb(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)50 b Fd(69)150 1381 y Fe(*)39 b(DT)h Fa(BC)6
-b Fe(=3)41 b(00)f Fa(xx)j Fe(00)25 b Fb(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49
-b Fd(67)150 1473 y Fe(*)39 b(DU)h Fa(BC)6 b Fe(=6)41
-b(00)f Fa(xx)j Fe(00)d(09)g(00)f Fa(yy)13 b Fb(.)e(.)i(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)32 b Fd(67)150 1565 y
-Fe(*)39 b(EX)h Fa(BC)6 b Fe(=3)41 b(00)f Fa(xx)j(yy)25
-b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)45 b Fd(70)150 1656 y Fe(*)39
-b(EX)h Fa(BC)6 b Fe(=6)41 b(00)f(00)f(00)h(00)g(0x05)g
-Fa(xx)13 b Fb(.)e(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33
-b Fd(70)150 1748 y Fe(*)39 b(EX)h Fa(BC)6 b Fe(=6)41
-b(00)f(00)f(00)h(00)g(0x14)g Fa(xx)13 b Fb(.)e(.)i(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)33 b Fd(70)150 1840 y Fe(*)39 b(FP)h
-Fa(BC)6 b Fe(=3)41 b(00)f Fa(xx)j(yy)25 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)45
-b Fd(68)150 1932 y Fe(*)39 b(IK)h Fa(BC)6 b Fe(=2)41
-b(00)f Fa(xx)15 b Fb(.)c(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36
-b Fd(69)150 2024 y Fe(*)j(IQ)h Fa(BC)6 b Fe(=1)41 b(01)18
-b Fb(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44
-b Fd(68)150 2116 y Fe(*)39 b(IR)h Fa(BC)6 b Fe(=2)41
-b(00)f Fa(xx)15 b Fb(.)c(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36
-b Fd(68)150 2208 y Fe(*)j(LD)h Fa(BC)6 b Fe(=0)25 b Fb(.)12
-b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48
-b Fd(67)150 2300 y Fe(*)39 b(PH)h Fa(BC)6 b Fe(=2)41
-b(00)f Fa(xx)15 b Fb(.)c(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36
-b Fd(70)150 2392 y Fe(*)j(PM)h Fa(BC)6 b Fe(=2)41 b(00)f(00)14
-b Fb(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fd(70)150
-2484 y Fe(*)g(PP)h Fa(BC)6 b Fe(=3)41 b(00)f Fa(xx)j(yy)25
-b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)45 b Fd(69)150 2576 y Fe(*)39
-b(PZ)h(BC=2)g(00)g(xx)15 b Fb(.)d(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-40 b Fd(70)150 2668 y Fe(*)f(RS)h Fa(BC)6 b Fe(=1)41
-b(01)18 b Fb(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44
-b Fd(68)150 2760 y Fe(*)39 b(SM)h Fa(BC)6 b Fe(=1)41
-b(01)18 b Fb(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44
-b Fd(72)150 2852 y Fe(*)39 b(SM)h Fa(BC)6 b Fe(=2)41
-b(00)f(02)14 b Fb(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39
-b Fd(72)150 2944 y Fe(*)g(SM)h Fa(BC)6 b Fe(=2)41 b(00)f
-Fa(xx)15 b Fb(.)c(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36
-b Fd(71)150 3036 y Fe(*)j(SN)h Fa(BC)6 b Fe(=3)41 b(00)f
-Fa(xx)j(yy)25 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)45 b Fd(68)150
-3127 y Fe(*)39 b(ST)h Fa(BC)6 b Fe(=1)41 b(01)18 b Fb(.)13
-b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b Fd(71)150
-3219 y Fe(*)39 b(ST)h Fa(BC)6 b Fe(=2)41 b(00)f Fa(xx)15
-b Fb(.)c(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fd(70)150
-3311 y Fe(*)j(SV)h Fa(BC)6 b Fe(=0)25 b Fb(.)12 b(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48 b Fd(68)150 3559
-y Fl(<)150 3681 y Fe(</printer>)24 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fd(75)150 3773 y
-Fe(<color>)8 b Fb(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b Fd(74)150 3865 y Fe(<language)41
-b(value=)p Fa(t)n(yp)r(e)t Fe(>)9 b Fb(.)k(.)g(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)34
-b Fd(75)150 3957 y Fe(<model)41 b(value=)p Fa(in)n(t)r
-Fe(>)24 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49 b Fd(75)150
-4049 y Fe(<nocolor>)25 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)h(.)f(.)49 b Fd(74)150 4141 y Fe(<printer)41
-b(name=")p Fa(longname)t Fe(")304 4232 y(driver=")p Fa(driv)n(ername)t
-Fe(">)9 b Fb(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)35 b Fd(74)150 4480 y Ft(A)150 4602
-y Fe(AM_PATH_GIMPPRINT)12 b Fb(.)k(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37
-b Fd(13)150 4849 y Ft(E)150 4972 y Fe(ESC)j($)f Fa(OFFSET2)21
-b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fd(63)150
-5064 y Fe(ESC)h(\($)g Fa(BC)6 b Fe(=4)41 b Fa(OFFSET4)29
-b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)48 b Fd(63)150 5156 y Fe(ESC)40 b(\(/)g
-Fa(BC)6 b Fe(=4)41 b Fa(OFFSET4)29 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48
-b Fd(63)150 5248 y Fe(ESC)40 b(\(\\)g Fa(BC)6 b Fe(=4)41
-b Fa(UNITS2)j(OFFSET2)30 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)49 b Fd(63)150 5340 y Fe(ESC)40 b(\(C)g Fa(BC)6 b
-Fe(=2)41 b Fa(P)-6 b(A)n(GELENGTH2)20 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fd(62)2025 614 y
-Fe(ESC)g(\(C)f Fa(BC)6 b Fe(=4)41 b Fa(P)-6 b(A)n(GELENGTH4)21
-b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40
-b Fd(62)2025 725 y Fe(ESC)g(\(c)f Fa(BC)6 b Fe(=4)41
-b Fa(TOP2)46 b(LENGTH2)21 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)40 b Fd(62)2025 836 y Fe(ESC)g(\(c)f Fa(BC)6
-b Fe(=8)41 b Fa(TOP4)46 b(LENGTH4)21 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)40 b Fd(62)2025 947 y Fe(ESC)g(\(D)f
-Fa(BC)6 b Fe(=4)41 b Fa(BASE2)46 b(VER)-6 b(TICAL1)2178
-1039 y(HORIZONT)g(AL1)26 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48
-b Fd(65)2025 1150 y Fe(ESC)40 b(\(e)f Fa(BC)6 b Fe(=2)41
-b Fa(ZER)n(O1)k(DOTSIZE1)27 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)47 b Fd(62)2025 1261 y Fe(ESC)40 b(\(G)f Fa(BC)6
-b Fe(=1)41 b Fa(ON1)16 b Fb(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)36
-b Fd(61)2025 1372 y Fe(ESC)k(\(i)f Fa(BC)6 b Fe(=1)41
-b Fa(MICR)n(O)n(WEA)-9 b(VE1)15 b Fb(.)d(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)35 b Fd(62)2025 1483 y Fe(ESC)40
-b(\(K)f Fa(BC)6 b Fe(=2)41 b Fa(ZER)n(O1)k(GRA)-6 b(YMODE1)19
-b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fd(62)2025
-1594 y Fe(ESC)g(\(r)f Fa(BC)6 b Fe(=2)41 b Fa(DENSITY1)k(COLOR1)26
-b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 b Fd(63)2025
-1705 y Fe(ESC)40 b(\(R)f Fa(BC)6 b Fe(=8)41 b(00)f(R)f(E)h(M)f(O)h(T)f
-(E)h(1)13 b Fb(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39
-b Fd(65)2025 1816 y Fe(ESC)h(\(s)f Fa(BC)6 b Fe(=1)41
-b Fa(SPEED1)18 b Fb(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 b Fd(62)2025
-1927 y Fe(ESC)i(\(S)f Fa(BC)6 b Fe(=8)41 b Fa(WIDTH4)k(LENGTH4)19
-b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 b Fd(62)2025
-2038 y Fe(ESC)h(\(U)f Fa(BC)6 b Fe(=1)41 b Fa(UNIT1)30
-b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)50 b Fd(61)2025 2149 y Fe(ESC)40
-b(\(U)f Fa(BC)6 b Fe(=5)41 b Fa(P)-6 b(A)n(GEUNITS1)45
-b(VUNIT1)f(HUNIT1)2178 2240 y(BASEUNIT2)13 b Fb(.)g(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)33 b Fd(61)2025 2351 y Fe(ESC)40 b(\(v)f
-Fa(BC)6 b Fe(=2)41 b Fa(AD)n(V)-9 b(ANCE2)27 b Fb(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)47
-b Fd(63)2025 2462 y Fe(ESC)40 b(\(V)f Fa(BC)6 b Fe(=2)41
-b Fa(AD)n(V)-9 b(ANCE2)27 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)47 b Fd(63)2025 2573
-y Fe(ESC)40 b(\(v)f Fa(BC)6 b Fe(=4)41 b Fa(AD)n(V)-9
-b(ANCE4)27 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)47 b Fd(63)2025 2684 y Fe(ESC)40 b(\(V)f
-Fa(BC)6 b Fe(=4)41 b Fa(AD)n(V)-9 b(ANCE4)27 b Fb(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)47
-b Fd(63)2025 2795 y Fe(ESC)40 b(.)f Fa(COMPRESS1)46 b(VSEP1)f(HSEP1)g
-(LINES1)2178 2887 y(WIDTH2)g(data...)17 b Fb(.)d(.)e(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)43
-b Fd(64)2025 2998 y Fe(ESC)d(@)11 b Fb(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37
-b Fd(61)2025 3109 y Fe(ESC)j(\\)f Fa(OFFSET2)21 b Fb(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fd(63)2025
-3220 y Fe(ESC)g(01)f(@EJL)h([sp])h(ID\\r\\n)22 b Fb(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)47 b Fd(65)2025 3331 y Fe(ESC)40 b(i)f Fa(COLOR1)45
-b(COMPRESS1)h(BITS1)f(BYTES2)2178 3422 y(LINES2)g(data...)25
-b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50 b Fd(64)2025 3533
-y Fe(ESC)40 b(r)f Fa(COLOR1)17 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)
-g(.)h(.)f(.)37 b Fd(63)2025 3644 y Fe(ESC)j(U)f Fa(DIRECTION1)22
-b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)42 b Fd(62)2025 3996 y
-Ft(G)2025 4159 y Fe(GIMPPRINT_BINARY_AGE)7 b Fb(.)17
-b(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)33 b Fd(25)2025 4270 y Fe(GIMPPRINT_CHECK_VERSION)
-26 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)47 b Fd(25)2025 4381 y Fe(GIMPPRINT_CURRENT_INTERFACE)16
-b Fb(.)i(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41
-b Fd(25)2025 4492 y Fe(GIMPPRINT_INTERFACE_AGE)26 b Fb(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)47 b Fd(25)2025 4603 y Fe(GIMPPRINT_MAJOR_VERSION)26
-b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)47 b Fd(25)2025 4714 y Fe(GIMPPRINT_MICRO_VERSION)26
-b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)47 b Fd(25)2025 4825 y Fe(GIMPPRINT_MINOR_VERSION)26
-b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)47 b Fd(25)2025 5177 y Ft(N)2025 5340 y Fe(NC)39
-b Fa(BC)6 b Fe(=2)41 b(00)f(00)17 b Fb(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)43 b Fd(67)p eop
-%%Page: 87 92
-87 91 bop 150 -116 a Fu(F)-8 b(unction)30 b(and)g(Macro)h(Index)2449
-b(87)150 299 y Ft(S)150 422 y Fe(stp_allocate_copy)12
-b Fb(.)k(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fd(16)150 514
-y Fe(stp_allocate_lut)13 b Fb(.)j(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39
-b Fd(20)150 606 y Fe(stp_allocate_vars)12 b Fb(.)k(.)c(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)37 b Fd(16)150 698 y Fe(stp_check_version)12
-b Fb(.)k(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fd(24)150 790
-y Fe(stp_choose_colorfunc)7 b Fb(.)17 b(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)33
-b Fd(24)150 882 y Fe(stp_clear_all_options)c Fb(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)50 b Fd(21)150 974 y Fe(stp_clear_option)13
-b Fb(.)j(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 b Fd(21)150
-1066 y Fe(stp_compute_lut)15 b Fb(.)g(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)40 b Fd(20)150 1158 y Fe(stp_compute_page_parameters)16
-b Fb(.)i(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)41
-b Fd(24)150 1250 y Fe(stp_copy_vars)18 b Fb(.)d(.)d(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)43 b Fd(16)150 1342 y Fe
-(stp_default_dither_algorithm)15 b Fb(.)j(.)12 b(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)39 b Fd(21)150 1434 y Fe(stp_default_settings)7
-b Fb(.)17 b(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)33 b Fd(24)150 1526 y Fe
-(stp_dither_algorithm_count)17 b Fb(.)h(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fd(21)150 1619 y
-Fe(stp_dither_algorithm_name)18 b Fb(.)g(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b Fd(21)150 1711
-y Fe(stp_free_lut)22 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)45 b Fd(20)150 1803 y Fe(stp_free_vars)18
-b Fb(.)d(.)d(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43
-b Fd(16)150 1895 y Fe(stp_get_app_gamma)12 b Fb(.)k(.)c(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)37 b Fd(19)150 1987 y Fe(stp_get_brightness)10
-b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fd(18)150
-2079 y Fe(stp_get_cmap)22 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)45 b Fd(20)150 2171 y Fe(stp_get_contrast)13
-b Fb(.)j(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 b Fd(19)150
-2263 y Fe(stp_get_cyan)22 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)45 b Fd(19)150 2355 y Fe(stp_get_density)15
-b Fb(.)g(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)40 b Fd(19)150
-2447 y Fe(stp_get_dither_algorithm)25 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45 b Fd(17)150
-2539 y Fe(stp_get_driver)16 b Fb(.)g(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)42 b Fd(16)150 2631 y Fe(stp_get_errdata)15 b
-Fb(.)g(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)40 b Fd(20)150
-2723 y Fe(stp_get_errfunc)15 b Fb(.)g(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)40 b Fd(20)150 2815 y Fe(stp_get_gamma)18 b Fb(.)d(.)d(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 b Fd(18)150 2907 y Fe
-(stp_get_image_type)10 b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36
-b Fd(17)150 2999 y Fe(stp_get_ink_type)13 b Fb(.)j(.)d(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)39 b Fd(17)150 3091 y Fe(stp_get_input_color_model)18
-b Fb(.)g(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)44 b Fd(18)150 3183 y Fe(stp_get_left)22 b Fb(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)45
-b Fd(17)150 3275 y Fe(stp_get_lut)23 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 b Fd(19)150 3368 y
-Fe(stp_get_magenta)15 b Fb(.)g(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)40
-b Fd(19)150 3460 y Fe(stp_get_media_size)10 b Fb(.)17
-b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fd(16)150 3552 y Fe
-(stp_get_media_source)7 b Fb(.)17 b(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)33
-b Fd(17)150 3644 y Fe(stp_get_media_type)10 b Fb(.)17
-b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fd(17)150 3736 y Fe
-(stp_get_option_by_index)26 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)47 b Fd(21)150
-3828 y Fe(stp_get_option_by_name)28 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48
-b Fd(21)150 3920 y Fe(stp_get_orientation)9 b Fb(.)17
-b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)34 b Fd(17)150 4012 y Fe(stp_get_outdata)15
-b Fb(.)g(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)40 b Fd(20)150
-4104 y Fe(stp_get_outfunc)15 b Fb(.)g(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)40 b Fd(20)150 4196 y Fe(stp_get_output_color_model)17
-b Fb(.)h(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-42 b Fd(18)150 4288 y Fe(stp_get_output_to)12 b Fb(.)k(.)c(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)37 b Fd(16)150 4380 y Fe(stp_get_output_type)9
-b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fd(17)150 4472
-y Fe(stp_get_page_height)9 b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34
-b Fd(18)150 4564 y Fe(stp_get_page_width)10 b Fb(.)17
-b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fd(18)150 4656 y Fe
-(stp_get_papersize_by_index)17 b Fb(.)h(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fd(22)150 4748 y
-Fe(stp_get_papersize_by_name)18 b Fb(.)g(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b Fd(22)150 4840
-y Fe(stp_get_papersize_by_size)18 b Fb(.)g(.)13 b(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b Fd(22)150
-4932 y Fe(stp_get_ppd_file)13 b Fb(.)j(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-39 b Fd(16)150 5024 y Fe(stp_get_printer_by_driver)18
-b Fb(.)g(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)44 b Fd(22)2025 299 y Fe(stp_get_printer_by_index)25
-b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)46 b Fd(22)2025 392 y Fe(stp_get_printer_by_long_name)15
-b Fb(.)i(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40
-b Fd(22)2025 484 y Fe(stp_get_printer_index_by_drive)q(r)10
-b Fb(.)18 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35
-b Fd(22)2025 577 y Fe(stp_get_resolution)10 b Fb(.)17
-b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fd(16)2025 670 y Fe
-(stp_get_saturation)10 b Fb(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36
-b Fd(19)2025 762 y Fe(stp_get_scaling)15 b Fb(.)g(.)e(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)40 b Fd(18)2025 855 y Fe(stp_get_top)23
-b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)46
-b Fd(17)2025 947 y Fe(stp_get_unit)22 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b Fd(18)2025 1040 y Fe(stp_get_yellow)16
-b Fb(.)f(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)42 b
-Fd(19)2025 1133 y Fe(stp_init)7 b Fb(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fd(15)2025
-1225 y Fe(stp_known_papersizes)7 b Fb(.)17 b(.)12 b(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33
-b Fd(22)2025 1318 y Fe(stp_known_printers)10 b Fb(.)17
-b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fd(22)2025 1411 y Fe(stp_malloc)24
-b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48
-b Fd(15)2025 1503 y Fe(stp_maximum_settings)7 b Fb(.)17
-b(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)33 b Fd(24)2025 1596 y Fe(stp_merge_printvars)9
-b Fb(.)16 b(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 b Fd(20)2025 1689 y
-Fe(stp_minimum_settings)7 b Fb(.)17 b(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33
-b Fd(24)2025 1781 y Fe(stp_option_count)13 b Fb(.)j(.)c(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)39 b Fd(21)2025 1874 y Fe(stp_option_data)15
-b Fb(.)g(.)e(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40 b Fd(21)2025
-1967 y Fe(stp_option_length)12 b Fb(.)k(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)38
-b Fd(21)2025 2059 y Fe(stp_option_name)15 b Fb(.)g(.)e(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)40 b Fd(21)2025 2152 y Fe(stp_papersize_get_bottom)25
-b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)46 b Fd(22)2025 2245 y Fe(stp_papersize_get_height)25
-b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)46 b Fd(22)2025 2337 y Fe(stp_papersize_get_left)27
-b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)48 b Fd(22)2025 2430 y Fe(stp_papersize_get_name)27
-b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)48 b Fd(22)2025 2523 y Fe(stp_papersize_get_right)26
-b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)47 b Fd(22)2025 2615 y Fe(stp_papersize_get_top)29
-b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)50 b Fd(22)2025 2708 y Fe(stp_papersize_get_unit)27
-b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)48 b Fd(22)2025 2801 y Fe(stp_papersize_get_width)26
-b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)47 b Fd(22)2025 2893 y Fe(stp_printer_get_driver)27
-b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)48 b Fd(23)2025 2986 y Fe(stp_printer_get_long_name)18
-b Fb(.)g(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)44 b Fd(22)2025 3079 y Fe(stp_printer_get_model)29
-b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)50 b Fd(23)2025 3171 y Fe
-(stp_printer_get_printfuncs)17 b Fb(.)h(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)43 b Fd(23)2025 3264 y
-Fe(stp_printer_get_printvars)18 b Fb(.)g(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b Fd(24)2025 3357
-y Fe(stp_set_app_gamma)12 b Fb(.)k(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)38
-b Fd(19)2025 3449 y Fe(stp_set_brightness)10 b Fb(.)17
-b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fd(18)2025 3542 y Fe(stp_set_cmap)22
-b Fb(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45
-b Fd(20)2025 3635 y Fe(stp_set_contrast)13 b Fb(.)j(.)c(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)39 b Fd(19)2025 3727 y Fe(stp_set_cyan)22
-b Fb(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45
-b Fd(19)2025 3820 y Fe(stp_set_density)15 b Fb(.)g(.)e(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)40 b Fd(19)2025 3913 y Fe(stp_set_dither_algorithm)25
-b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)46 b Fd(17)2025 4005 y Fe(stp_set_dither_algorithm_n)17
-b Fb(.)h(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-43 b Fd(17)2025 4098 y Fe(stp_set_driver)16 b Fb(.)f(.)e(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)g(.)h(.)f(.)42 b Fd(16)2025 4191 y Fe(stp_set_driver_n)13
-b Fb(.)j(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fd(16)2025
-4283 y Fe(stp_set_errdata)15 b Fb(.)g(.)e(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)40 b Fd(20)2025 4376 y Fe(stp_set_errfunc)15 b Fb(.)g(.)e(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)40 b Fd(20)2025 4469 y Fe(stp_set_gamma)18
-b Fb(.)d(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43
-b Fd(18)2025 4561 y Fe(stp_set_image_type)10 b Fb(.)17
-b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fd(17)2025 4654 y Fe(stp_set_ink_type)
-13 b Fb(.)j(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fd(17)2025
-4747 y Fe(stp_set_ink_type_n)10 b Fb(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-36 b Fd(17)2025 4839 y Fe(stp_set_input_color_model)18
-b Fb(.)g(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)44 b Fd(18)2025 4932 y Fe(stp_set_left)22 b Fb(.)12
-b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45
-b Fd(17)2025 5024 y Fe(stp_set_lut)23 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)46 b Fd(19)p eop
-%%Page: 88 93
-88 92 bop 150 -116 a Fu(F)-8 b(unction)30 b(and)g(Macro)h(Index)2449
-b(88)150 299 y Fe(stp_set_magenta)15 b Fb(.)g(.)e(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)40 b Fd(19)150 391 y Fe(stp_set_media_size)10
-b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fd(16)150
-484 y Fe(stp_set_media_size_n)7 b Fb(.)17 b(.)c(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)33
-b Fd(16)150 576 y Fe(stp_set_media_source)7 b Fb(.)17
-b(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)33 b Fd(17)150 669 y Fe(stp_set_media_source_n)28
-b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)48 b Fd(17)150 761 y Fe(stp_set_media_type)10
-b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fd(17)150
-854 y Fe(stp_set_media_type_n)7 b Fb(.)17 b(.)c(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)33
-b Fd(17)150 946 y Fe(stp_set_option\(stp_vars_t)18 b
-Fb(.)g(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)44 b Fd(21)150 1038 y Fe(stp_set_orientation)9 b Fb(.)17
-b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)34 b Fd(17)150 1131 y Fe(stp_set_outdata)15
-b Fb(.)g(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)40 b Fd(20)150
-1223 y Fe(stp_set_outfunc)15 b Fb(.)g(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)40 b Fd(20)150 1316 y Fe(stp_set_output_color_model)17
-b Fb(.)h(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-42 b Fd(18)150 1408 y Fe(stp_set_output_to)12 b Fb(.)k(.)c(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)37 b Fd(16)150 1501 y Fe(stp_set_output_to_n)9
-b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fd(16)150 1593
-y Fe(stp_set_output_type)9 b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34
-b Fd(17)2025 299 y Fe(stp_set_page_height)9 b Fb(.)16
-b(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)35 b Fd(18)2025 390 y Fe(stp_set_page_width)10
-b Fb(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fd(18)2025
-482 y Fe(stp_set_ppd_file)13 b Fb(.)j(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-39 b Fd(16)2025 573 y Fe(stp_set_ppd_file_n)10 b Fb(.)17
-b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fd(16)2025 664 y Fe
-(stp_set_resolution)10 b Fb(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36
-b Fd(16)2025 756 y Fe(stp_set_resolution_n)7 b Fb(.)17
-b(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)33 b Fd(16)2025 847 y Fe(stp_set_saturation)10
-b Fb(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fd(19)2025
-938 y Fe(stp_set_scaling)15 b Fb(.)g(.)e(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)40 b Fd(18)2025 1030 y Fe(stp_set_top)23 b Fb(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)46
-b Fd(17)2025 1121 y Fe(stp_set_unit)22 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b Fd(18)2025 1213 y Fe(stp_set_yellow)16
-b Fb(.)f(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)42 b
-Fd(19)2025 1472 y Ft(V)2025 1593 y Fe(VI)d Fa(BC)6 b
-Fe(=2)41 b(00)f(00)17 b Fb(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-43 b Fd(67)p eop
-%%Page: 89 94
-89 93 bop 150 -116 a Fu(Concept)31 b(Index)2927 b(89)150
-299 y Fp(Concept)52 b(Index)150 592 y Ft(A)150 714 y
-Fd(adding)26 b(a)g(prin)n(ter)18 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)44 b Fd(74)150 805 y(App)r(endices)8 b
-Fb(.)j(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)33
-b Fd(33)150 897 y Fe(autoconf)7 b Fb(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)32 b Fd(13)150
-988 y Fe(automake)7 b Fb(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)32 b Fd(13)150 1232 y Ft(B)150
-1354 y Fd(bugs)14 b Fb(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fd(32)150
-1611 y Ft(C)150 1733 y Fd(collisions)14 b Fb(.)h(.)d(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fd(47)150
-1824 y(CUPS)26 b(driv)n(er)20 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)47 b Fd(31)150 2068 y Ft(D)150
-2190 y Fd(dither)25 b(functions)7 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)32 b Fd(21)150 2281 y(dithering)12
-b Fb(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)38 b Fd(34)150 2373 y(driv)n(er)25 b(\014le)d
-Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)47 b Fd(75)150 2617 y Ft(E)150 2739 y Fd(Epson)26
-b(inkjet)f(prin)n(ters)9 b Fb(.)k(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35
-b Fd(75)150 2830 y(ESC/P2)25 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49 b Fd(61)150
-2921 y(ESC/P2)27 b(in)n(tro)r(duction)22 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)48 b Fd(61)150 3183 y Ft(F)150 3304 y Fd(functions)11
-b Fb(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)36 b Fd(15)150 3549 y Ft(G)150 3670 y Fd(ghostscript)27
-b(driv)n(er)14 b Fb(.)d(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39
-b Fd(31)150 3762 y(GIMP)26 b(Prin)n(t)g(plugin)d Fb(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fd(26)150 3853 y
-Fe(gimpprint-config)13 b Fb(.)j(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39
-b Fd(12)150 4112 y Ft(H)150 4234 y Fd(ho)n(w)26 b(to)g(read)20
-b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-46 b Fd(1)150 4478 y Ft(I)150 4600 y Fd(initialising)28
-b(libgimpprin)n(t)21 b Fb(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fd(15)150
-4691 y(in)n(tegrating)17 b Fb(.)d(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)43 b Fd(12)150 4948 y Ft(M)150
-5070 y Fd(m4)25 b(macros)18 b Fb(.)13 b(.)f(.)h(.)f(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b Fd(13)150 5161 y(main)25
-b(functions)f Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49
-b Fd(15)150 5253 y Fe(make)13 b Fb(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38
-b Fd(13)150 5344 y(man)n(ual,)25 b(ho)n(w)h(to)g(read)19
-b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b Fd(1)150
-5435 y(memory)24 b(allo)r(cation)16 b Fb(.)e(.)e(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)41 b Fd(15)2025 592 y Ft(N)2025 731 y Fd(new)26
-b(prin)n(ter)7 b Fb(.)k(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)32 b Fd(74)2025 1034 y Ft(O)2025 1173 y Fd(options)26
-b(functions)c Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47
-b Fd(21)2025 1273 y(o)n(v)n(ersampling)17 b Fb(.)12 b(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 b Fd(57)2025 1372
-y(o)n(v)n(erview)18 b Fb(.)13 b(.)f(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b Fd(10)2025 1662 y Ft(P)2025
-1801 y Fd(pap)r(er)25 b(functions)12 b Fb(.)h(.)g(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)38 b Fd(21)2025 1900 y(p)r(erfect)26
-b(w)n(ea)n(v)n(e)21 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)46
-b Fd(44,)27 b(48)2025 2000 y(Prin)n(t)e(plugin)14 b Fb(.)f(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fd(26)2025
-2100 y(prin)n(ter)25 b(functions)11 b Fb(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)37 b Fd(22)2025 2199 y(prin)n(ter,)25
-b(adding)d Fb(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47
-b Fd(74)2025 2299 y(prin)n(ter,)25 b(tuning)8 b Fb(.)k(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b Fd(81)2025 2399
-y(problems)12 b Fb(.)f(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)38 b Fd(32)2025 2498 y(programs)8
-b Fb(.)k(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
-(.)h(.)33 b Fd(26)2025 2801 y Ft(R)2025 2940 y Fd(reading)23
-b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)49 b Fd(1)2025 3242 y Ft(S)2025 3381
-y Fd(settings)26 b(functions)15 b Fb(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)41 b Fd(24)2025 3481 y Fe(stp_vars_t)28 b Fd(functions)20
-b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 b Fd(15)2025 3786 y
-Ft(T)2025 3924 y Fd(tuning)25 b(the)g(prin)n(ter)7 b
-Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33 b Fd(81)2025
-4227 y Ft(U)2025 4366 y Fd(using)22 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)47
-b Fd(11)2025 4668 y Ft(V)2025 4807 y Fd(v)n(ersion)26
-b(functions)8 b Fb(.)k(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33
-b Fd(24)2025 5097 y Ft(W)2025 5236 y Fd(w)n(ea)n(ving)12
-b Fb(.)h(.)f(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)38 b Fd(41)2025 5336 y(w)n(ea)n(ving)26 b(algorithms)c
-Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fd(42)2025
-5435 y(w)n(ea)n(ving)26 b(collisions)13 b Fb(.)i(.)d(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)39 b Fd(47)p eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/doc/gimpprint.texi b/doc/gimpprint.texi
deleted file mode 100644
index 92a27d7..0000000
--- a/doc/gimpprint.texi
+++ /dev/null
@@ -1,130 +0,0 @@
-\input texinfo @c -*-texinfo-*-
-@c %**start of header
-@c $Id: gimpprint.texi,v 1.6 2001/10/27 17:16:37 rlk Exp $
-@setfilename gimpprint.info
-@settitle GIMP-Print
-@finalout
-@c @exampleindent 0
-@c For double-sided printing, uncomment:
-@c @setchapternewpage odd
-@c %**end of header
-
-@c Combine several related indices
-@syncodeindex pg cp
-@syncodeindex tp vr
-
-@c Include version numbers
-@include version.texi
-
-@c Macro definitions
-@set BUGADDR @email{gimp-print-devel@@lists.sourceforge.net}
-@set MAILLIST @email{gimp-print-devel@@lists.sourceforge.net}
-
-@dircategory Libraries
-@direntry
-* GIMP-Print: (gimpprint). print plugin for the GIMP, and printing library
-@end direntry
-
-@ifinfo
-This file documents the gimpprint library and associated programs
-used for high quality printing.
-
-Copyright (C) 2001 Michael Sweet (@email{mike@@easysw.com}) and Robert
-Krawitz (@email{rlk@@alum.mit.edu})
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-
-@end ignore
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Foundation.
-@end ifinfo
-
-@titlepage
-@title GIMP-Print
-@subtitle The print plugin for the GIMP
-@subtitle Version @value{VERSION}, @value{UPDATED}
-@author The GIMP-Print Project
-
-@page
-@vskip 0pt plus 1filll
-Copyright @copyright{} 2001 Michael Sweet
-(@email{mike@@easysw.com}) and Robert Krawitz (@email{rlk@@alum.mit.edu})
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-@end titlepage
-
-
-@c Print tables of contents
-@shortcontents
-@contents
-
-@ifnottex
-@c All the nodes can be updated using the EMACS command
-@c texinfo-every-node-update, which is normally bound to C-c C-u C-e.
-@node Top, , (dir), (dir)
-@comment node-name, next, previous, up
-@top The print plugin for the GIMP and printing library
-
-This file documents the libgimpprint library and associated programs used
-for high quality printing. This edition documents version @value{VERSION}.
-
-@xref{Problems}, for information on how to report problems with
-GIMP-Print.
-@end ifnottex
-
-@c All the menus can be updated with the EMACS command
-@c texinfo-all-menus-update, which is normally bound to C-c C-u C-a.
-@menu
-* Instructions:: How to read this manual.
-* Copying:: Your rights.
-* Overview:: Preliminary information.
-* Using libgimpprint:: Examples of how to use libgimpprint.
-* Integrating libgimpprint:: Using libgimpprint in your own packages.
-* Functions:: libgimpprint function reference.
-* Programs:: Using GIMP-Print programs.
-* Problems:: Reporting bugs.
-* Appendices:: Additional information.
-* Data Type and Variable Index:: Index of data types and variables.
-* Function and Macro Index:: Index of functions and macros.
-* Concept Index:: Index of concepts.
-@end menu
-
-@include introduction.texi
-@include copying.texi
-@include overview.texi
-@include using.texi
-@include integrating.texi
-@include functions.texi
-@include programs.texi
-@include problems.texi
-@include appendices.texi
-@include indices.texi
-
-@bye
diff --git a/doc/gpl.texi b/doc/gpl.texi
deleted file mode 100644
index 1aeb8f3..0000000
--- a/doc/gpl.texi
+++ /dev/null
@@ -1,396 +0,0 @@
-@setfilename gpl.info
-
-@unnumbered GNU GENERAL PUBLIC LICENSE
-@center Version 2, June 1991
-
-@display
-Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
-675 Mass Ave, Cambridge, MA 02139, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-@end display
-
-@unnumberedsec 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.
-
-@iftex
-@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-@end iftex
-@ifinfo
-@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-@end ifinfo
-
-@enumerate
-@item
-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.
-
-@item
-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.
-
-@item
-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:
-
-@enumerate a
-@item
-You must cause the modified files to carry prominent notices
-stating that you changed the files and the date of any change.
-
-@item
-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.
-
-@item
-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.)
-@end enumerate
-
-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.
-
-@item
-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:
-
-@enumerate a
-@item
-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,
-
-@item
-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,
-
-@item
-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.)
-@end enumerate
-
-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.
-
-@item
-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.
-
-@item
-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.
-
-@item
-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.
-
-@item
-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.
-
-@item
-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.
-
-@item
-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.
-
-@item
-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.
-
-@iftex
-@heading NO WARRANTY
-@end iftex
-@ifinfo
-@center NO WARRANTY
-@end ifinfo
-
-@item
-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.
-
-@item
-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 enumerate
-
-@iftex
-@heading END OF TERMS AND CONDITIONS
-@end iftex
-@ifinfo
-@center END OF TERMS AND CONDITIONS
-@end ifinfo
-
-@page
-@unnumberedsec 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.
-
-@smallexample
-@var{one line to give the program's name and an idea of what it does.}
-Copyright (C) 19@var{yy} @var{name of author}
-
-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.
-@end smallexample
-
-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:
-
-@smallexample
-Gnomovision version 69, Copyright (C) 19@var{yy} @var{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.
-@end smallexample
-
-The hypothetical commands @samp{show w} and @samp{show c} should show
-the appropriate parts of the General Public License. Of course, the
-commands you use may be called something other than @samp{show w} and
-@samp{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:
-
-@smallexample
-@group
-Yoyodyne, Inc., hereby disclaims all copyright
-interest in the program `Gnomovision'
-(which makes passes at compilers) written
-by James Hacker.
-
-@var{signature of Ty Coon}, 1 April 1989
-Ty Coon, President of Vice
-@end group
-@end smallexample
-
-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/doc/gutenprint-stamp b/doc/gutenprint-stamp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/doc/gutenprint-stamp
diff --git a/doc/gutenprint.dox.in b/doc/gutenprint.dox.in
new file mode 100644
index 0000000..c75434f
--- /dev/null
+++ b/doc/gutenprint.dox.in
@@ -0,0 +1,1078 @@
+# Doxyfile 1.3.4
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = "libgutenprint API Reference"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = @VERSION@
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = ./gutenprint
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch,
+# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en
+# (Japanese with English messages), Korean, Norwegian, Polish, Portuguese,
+# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE = English
+
+# This tag can be used to specify the encoding used in the generated output.
+# The encoding is not always determined by the language that is chosen,
+# but also whether or not the output is meant for Windows or non-Windows users.
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
+# forces the Windows encoding (this is the default for the Windows binary),
+# whereas setting the tag to NO uses a Unix-style encoding (the default for
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited
+# members of a class in the documentation of that class as if those members were
+# ordinary class members. Constructors, destructors and assignment operators of
+# the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. It is allowed to use relative paths in the argument list.
+
+STRIP_FROM_PATH = ../
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like the Qt-style comments (thus requiring an
+# explict @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF = YES
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member
+# documentation.
+
+DETAILS_AT_TOP = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# reimplements.
+
+INHERIT_DOCS = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources
+# only. Doxygen will then generate output that is more tailored for Java.
+# For instance, namespaces will be presented as packages, qualified scopes
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = YES
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text.
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = @top_srcdir@/include/gutenprint
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp
+# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc
+
+FILE_PATTERNS =
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE = @top_srcdir@/src/main/xmli18n-tmp.h
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories
+# that are symbolic links (a Unix filesystem feature) are excluded from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+
+EXCLUDE_PATTERNS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+
+INPUT_FILTER =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default)
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default)
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = YES
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output dir.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = YES
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimised for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assigments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader. This is useful
+# if you want to understand what is going on. On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse the
+# parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE = ./gutenprint/gutenprint.tag
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = @PERL@
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or
+# super classes. Setting the tag to NO turns the diagrams off. Note that this
+# option is superceded by the HAVE_DOT option below. This is only a fallback. It is
+# recommended to install and use dot, since it yields more powerful graphs.
+
+CLASS_DIAGRAMS = NO
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = NO
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = NO
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = NO
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similiar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = NO
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a call dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = NO
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found on the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_WIDTH = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes that
+# lay further from the root node will be omitted. Note that setting this option to
+# 1 or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that a graph may be further truncated if the graph's image dimensions are
+# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT).
+# If 0 is used for the depth value (the default), the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
diff --git a/doc/gutenprint/gutenprint.tag b/doc/gutenprint/gutenprint.tag
new file mode 100644
index 0000000..b3c6a2e
--- /dev/null
+++ b/doc/gutenprint/gutenprint.tag
@@ -0,0 +1,8996 @@
+<?xml version='1.0' encoding='ISO-8859-1' standalone='yes' ?>
+<tagfile>
+ <compound kind="file">
+ <name>array.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>array_8h</filename>
+ <includes id="sequence_8h" name="sequence.h" local="no" imported="no">gutenprint/sequence.h</includes>
+ <member kind="typedef">
+ <type>stp_array</type>
+ <name>stp_array_t</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>stp_array_t *</type>
+ <name>stp_array_create</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(int x_size, int y_size)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_array_destroy</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(stp_array_t *array)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_array_copy</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(stp_array_t *dest, const stp_array_t *source)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_array_t *</type>
+ <name>stp_array_create_copy</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(const stp_array_t *array)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_array_set_size</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(stp_array_t *array, int x_size, int y_size)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_array_get_size</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(const stp_array_t *array, int *x_size, int *y_size)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_array_set_data</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(stp_array_t *array, const double *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_array_get_data</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist>(const stp_array_t *array, size_t *size, const double **data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_array_set_point</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist>(stp_array_t *array, int x, int y, double data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_array_get_point</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist>(const stp_array_t *array, int x, int y, double *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_sequence_t *</type>
+ <name>stp_array_get_sequence</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist>(const stp_array_t *array)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>bit-ops.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>bit-ops_8h</filename>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_fold</name>
+ <anchorfile>bit-ops_8h.html</anchorfile>
+ <anchor>a0</anchor>
+ <arglist>(const unsigned char *line, int single_height, unsigned char *outbuf)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_split_2</name>
+ <anchorfile>bit-ops_8h.html</anchorfile>
+ <anchor>a1</anchor>
+ <arglist>(int height, int bits, const unsigned char *in, unsigned char *outhi, unsigned char *outlo)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_split_4</name>
+ <anchorfile>bit-ops_8h.html</anchorfile>
+ <anchor>a2</anchor>
+ <arglist>(int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_unpack_2</name>
+ <anchorfile>bit-ops_8h.html</anchorfile>
+ <anchor>a3</anchor>
+ <arglist>(int height, int bits, const unsigned char *in, unsigned char *outlo, unsigned char *outhi)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_unpack_4</name>
+ <anchorfile>bit-ops_8h.html</anchorfile>
+ <anchor>a4</anchor>
+ <arglist>(int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_unpack_8</name>
+ <anchorfile>bit-ops_8h.html</anchorfile>
+ <anchor>a5</anchor>
+ <arglist>(int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3, unsigned char *out4, unsigned char *out5, unsigned char *out6, unsigned char *out7)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_unpack_16</name>
+ <anchorfile>bit-ops_8h.html</anchorfile>
+ <anchor>a6</anchor>
+ <arglist>(int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3, unsigned char *out4, unsigned char *out5, unsigned char *out6, unsigned char *out7, unsigned char *out8, unsigned char *out9, unsigned char *out10, unsigned char *out11, unsigned char *out12, unsigned char *out13, unsigned char *out14, unsigned char *out15)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>channel.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>channel_8h</filename>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_channel_reset</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a0</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_channel_reset_channel</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a1</anchor>
+ <arglist>(stp_vars_t *v, int channel)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_channel_add</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a2</anchor>
+ <arglist>(stp_vars_t *v, unsigned channel, unsigned subchannel, double value)</arglist>
+ </member>
+ <member kind="function">
+ <type>double</type>
+ <name>stp_channel_get_value</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a3</anchor>
+ <arglist>(stp_vars_t *v, unsigned channel, unsigned subchannel)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_channel_set_density_adjustment</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a4</anchor>
+ <arglist>(stp_vars_t *v, int color, int subchannel, double adjustment)</arglist>
+ </member>
+ <member kind="function">
+ <type>double</type>
+ <name>stp_channel_get_density_adjustment</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a5</anchor>
+ <arglist>(stp_vars_t *v, int color, int subchannel)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_channel_set_ink_limit</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a6</anchor>
+ <arglist>(stp_vars_t *v, double limit)</arglist>
+ </member>
+ <member kind="function">
+ <type>double</type>
+ <name>stp_channel_get_ink_limit</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a7</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_channel_set_cutoff_adjustment</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a8</anchor>
+ <arglist>(stp_vars_t *v, int color, int subchannel, double adjustment)</arglist>
+ </member>
+ <member kind="function">
+ <type>double</type>
+ <name>stp_channel_get_cutoff_adjustment</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a9</anchor>
+ <arglist>(stp_vars_t *v, int color, int subchannel)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_channel_set_black_channel</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a10</anchor>
+ <arglist>(stp_vars_t *v, int channel)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_channel_get_black_channel</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a11</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_channel_set_gloss_channel</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a12</anchor>
+ <arglist>(stp_vars_t *v, int channel)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_channel_get_gloss_channel</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a13</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_channel_set_gloss_limit</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a14</anchor>
+ <arglist>(stp_vars_t *v, double limit)</arglist>
+ </member>
+ <member kind="function">
+ <type>double</type>
+ <name>stp_channel_get_gloss_limit</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a15</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_channel_set_curve</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a16</anchor>
+ <arglist>(stp_vars_t *v, int channel, const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_curve_t *</type>
+ <name>stp_channel_get_curve</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a17</anchor>
+ <arglist>(stp_vars_t *v, int channel)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_channel_initialize</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a18</anchor>
+ <arglist>(stp_vars_t *v, stp_image_t *image, int input_channel_count)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_channel_convert</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a19</anchor>
+ <arglist>(const stp_vars_t *v, unsigned *zero_mask)</arglist>
+ </member>
+ <member kind="function">
+ <type>unsigned short *</type>
+ <name>stp_channel_get_input</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a20</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>unsigned short *</type>
+ <name>stp_channel_get_output</name>
+ <anchorfile>channel_8h.html</anchorfile>
+ <anchor>a21</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>color.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>color_8h</filename>
+ <class kind="struct">stp_colorfuncs_t</class>
+ <class kind="struct">stp_color</class>
+ <member kind="typedef">
+ <type>stp_color</type>
+ <name>stp_color_t</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_color_init</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(stp_vars_t *v, stp_image_t *image, size_t steps)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_color_get_row</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(stp_vars_t *v, stp_image_t *image, int row, unsigned *zero_mask)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_list_t</type>
+ <name>stp_color_list_parameters</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_color_describe_parameter</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(const stp_vars_t *v, const char *name, stp_parameter_t *description)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_color_register</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(const stp_color_t *color)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_color_unregister</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(const stp_color_t *color)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_color_count</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_color_t *</type>
+ <name>stp_get_color_by_name</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist>(const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_color_t *</type>
+ <name>stp_get_color_by_index</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist>(int idx)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_color_t *</type>
+ <name>stp_get_color_by_colorfuncs</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist>(stp_colorfuncs_t *colorfuncs)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_color_get_name</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist>(const stp_color_t *c)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_color_get_long_name</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga12</anchor>
+ <arglist>(const stp_color_t *c)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>curve-cache.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>curve-cache_8h</filename>
+ <includes id="curve_8h" name="curve.h" local="no" imported="no">gutenprint/curve.h</includes>
+ <class kind="struct">stp_cached_curve_t</class>
+ <member kind="define">
+ <type>#define</type>
+ <name>CURVE_CACHE_FAST_USHORT</name>
+ <anchorfile>curve-cache_8h.html</anchorfile>
+ <anchor>a0</anchor>
+ <arglist>(cache)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>CURVE_CACHE_FAST_DOUBLE</name>
+ <anchorfile>curve-cache_8h.html</anchorfile>
+ <anchor>a1</anchor>
+ <arglist>(cache)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>CURVE_CACHE_FAST_COUNT</name>
+ <anchorfile>curve-cache_8h.html</anchorfile>
+ <anchor>a2</anchor>
+ <arglist>(cache)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_curve_free_curve_cache</name>
+ <anchorfile>curve-cache_8h.html</anchorfile>
+ <anchor>a3</anchor>
+ <arglist>(stp_cached_curve_t *cache)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_curve_cache_curve_data</name>
+ <anchorfile>curve-cache_8h.html</anchorfile>
+ <anchor>a4</anchor>
+ <arglist>(stp_cached_curve_t *cache)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_t *</type>
+ <name>stp_curve_cache_get_curve</name>
+ <anchorfile>curve-cache_8h.html</anchorfile>
+ <anchor>a5</anchor>
+ <arglist>(stp_cached_curve_t *cache)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_curve_cache_curve_invalidate</name>
+ <anchorfile>curve-cache_8h.html</anchorfile>
+ <anchor>a6</anchor>
+ <arglist>(stp_cached_curve_t *cache)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_curve_cache_set_curve</name>
+ <anchorfile>curve-cache_8h.html</anchorfile>
+ <anchor>a7</anchor>
+ <arglist>(stp_cached_curve_t *cache, stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_curve_cache_set_curve_copy</name>
+ <anchorfile>curve-cache_8h.html</anchorfile>
+ <anchor>a8</anchor>
+ <arglist>(stp_cached_curve_t *cache, const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>const size_t</type>
+ <name>stp_curve_cache_get_count</name>
+ <anchorfile>curve-cache_8h.html</anchorfile>
+ <anchor>a9</anchor>
+ <arglist>(stp_cached_curve_t *cache)</arglist>
+ </member>
+ <member kind="function">
+ <type>const unsigned short *</type>
+ <name>stp_curve_cache_get_ushort_data</name>
+ <anchorfile>curve-cache_8h.html</anchorfile>
+ <anchor>a10</anchor>
+ <arglist>(stp_cached_curve_t *cache)</arglist>
+ </member>
+ <member kind="function">
+ <type>const double *</type>
+ <name>stp_curve_cache_get_double_data</name>
+ <anchorfile>curve-cache_8h.html</anchorfile>
+ <anchor>a11</anchor>
+ <arglist>(stp_cached_curve_t *cache)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_curve_cache_copy</name>
+ <anchorfile>curve-cache_8h.html</anchorfile>
+ <anchor>a12</anchor>
+ <arglist>(stp_cached_curve_t *dest, const stp_cached_curve_t *src)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>curve.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>curve_8h</filename>
+ <includes id="sequence_8h" name="sequence.h" local="no" imported="no">gutenprint/sequence.h</includes>
+ <class kind="struct">stp_curve_point_t</class>
+ <member kind="typedef">
+ <type>stp_curve</type>
+ <name>stp_curve_t</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_curve_type_t</name>
+ <anchor>ga47</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_TYPE_LINEAR</name>
+ <anchor>gga47a1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_TYPE_SPLINE</name>
+ <anchor>gga47a2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_curve_wrap_mode_t</name>
+ <anchor>ga48</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_WRAP_NONE</name>
+ <anchor>gga48a3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_WRAP_AROUND</name>
+ <anchor>gga48a4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_curve_compose_t</name>
+ <anchor>ga49</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_COMPOSE_ADD</name>
+ <anchor>gga49a5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_COMPOSE_MULTIPLY</name>
+ <anchor>gga49a6</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_COMPOSE_EXPONENTIATE</name>
+ <anchor>gga49a7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_curve_bounds_t</name>
+ <anchor>ga50</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_BOUNDS_RESCALE</name>
+ <anchor>gga50a8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_BOUNDS_CLIP</name>
+ <anchor>gga50a9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_BOUNDS_ERROR</name>
+ <anchor>gga50a10</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_t *</type>
+ <name>stp_curve_create</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(stp_curve_wrap_mode_t wrap)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_t *</type>
+ <name>stp_curve_create_copy</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_curve_copy</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(stp_curve_t *dest, const stp_curve_t *source)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_curve_destroy</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_bounds</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(stp_curve_t *curve, double low, double high)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_curve_get_bounds</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(const stp_curve_t *curve, double *low, double *high)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_wrap_mode_t</type>
+ <name>stp_curve_get_wrap</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_is_piecewise</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_curve_get_range</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist>(const stp_curve_t *curve, double *low, double *high)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>stp_curve_count_points</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_interpolation_type</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist>(stp_curve_t *curve, stp_curve_type_t itype)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_type_t</type>
+ <name>stp_curve_get_interpolation_type</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga12</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga13</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const double *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_data_points</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga14</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const stp_curve_point_t *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_float_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga15</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const float *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_long_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga16</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const long *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_ulong_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga17</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const unsigned long *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_int_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga18</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const int *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_uint_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga19</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const unsigned int *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_short_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga20</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const short *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_ushort_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga21</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const unsigned short *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_t *</type>
+ <name>stp_curve_get_subrange</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga22</anchor>
+ <arglist>(const stp_curve_t *curve, size_t start, size_t count)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_subrange</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga23</anchor>
+ <arglist>(stp_curve_t *curve, const stp_curve_t *range, size_t start)</arglist>
+ </member>
+ <member kind="function">
+ <type>const double *</type>
+ <name>stp_curve_get_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga24</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_curve_point_t *</type>
+ <name>stp_curve_get_data_points</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga25</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const float *</type>
+ <name>stp_curve_get_float_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga26</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const long *</type>
+ <name>stp_curve_get_long_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga27</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const unsigned long *</type>
+ <name>stp_curve_get_ulong_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga28</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const int *</type>
+ <name>stp_curve_get_int_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga29</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const unsigned int *</type>
+ <name>stp_curve_get_uint_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga30</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const short *</type>
+ <name>stp_curve_get_short_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga31</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const unsigned short *</type>
+ <name>stp_curve_get_ushort_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga32</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_sequence_t *</type>
+ <name>stp_curve_get_sequence</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga33</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_gamma</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga34</anchor>
+ <arglist>(stp_curve_t *curve, double f_gamma)</arglist>
+ </member>
+ <member kind="function">
+ <type>double</type>
+ <name>stp_curve_get_gamma</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga35</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_point</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga36</anchor>
+ <arglist>(stp_curve_t *curve, size_t where, double data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_get_point</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga37</anchor>
+ <arglist>(const stp_curve_t *curve, size_t where, double *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_interpolate_value</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga38</anchor>
+ <arglist>(const stp_curve_t *curve, double where, double *result)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_resample</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga39</anchor>
+ <arglist>(stp_curve_t *curve, size_t points)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_rescale</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga40</anchor>
+ <arglist>(stp_curve_t *curve, double scale, stp_curve_compose_t mode, stp_curve_bounds_t bounds_mode)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_write</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga41</anchor>
+ <arglist>(FILE *file, const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>char *</type>
+ <name>stp_curve_write_string</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga42</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_t *</type>
+ <name>stp_curve_create_from_stream</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga43</anchor>
+ <arglist>(FILE *fp)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_t *</type>
+ <name>stp_curve_create_from_file</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga44</anchor>
+ <arglist>(const char *file)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_t *</type>
+ <name>stp_curve_create_from_string</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga45</anchor>
+ <arglist>(const char *string)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_compose</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga46</anchor>
+ <arglist>(stp_curve_t **retval, stp_curve_t *a, stp_curve_t *b, stp_curve_compose_t mode, int points)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>dither.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>dither_8h</filename>
+ <class kind="struct">stp_dither_matrix_short</class>
+ <class kind="struct">stp_dither_matrix_normal</class>
+ <class kind="struct">stp_dither_matrix_generic</class>
+ <class kind="struct">dither_matrix_impl</class>
+ <class kind="struct">stp_dotsize</class>
+ <class kind="struct">stp_shade</class>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_ECOLOR_K</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_ECOLOR_C</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_ECOLOR_M</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_ECOLOR_Y</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_NCOLORS</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_dither_matrix_short</type>
+ <name>stp_dither_matrix_short_t</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_dither_matrix_normal</type>
+ <name>stp_dither_matrix_normal_t</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a6</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_dither_matrix_generic</type>
+ <name>stp_dither_matrix_generic_t</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>dither_matrix_impl</type>
+ <name>stp_dither_matrix_impl_t</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_dotsize</type>
+ <name>stp_dotsize_t</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_shade</type>
+ <name>stp_shade_t</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a10</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_matrix_iterated_init</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a11</anchor>
+ <arglist>(stp_dither_matrix_impl_t *mat, size_t size, size_t exponent, const unsigned *array)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_matrix_shear</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a12</anchor>
+ <arglist>(stp_dither_matrix_impl_t *mat, int x_shear, int y_shear)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_matrix_init</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a13</anchor>
+ <arglist>(stp_dither_matrix_impl_t *mat, int x_size, int y_size, const unsigned int *array, int transpose, int prescaled)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_matrix_init_short</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a14</anchor>
+ <arglist>(stp_dither_matrix_impl_t *mat, int x_size, int y_size, const unsigned short *array, int transpose, int prescaled)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_dither_matrix_validate_array</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a15</anchor>
+ <arglist>(const stp_array_t *array)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_matrix_init_from_dither_array</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a16</anchor>
+ <arglist>(stp_dither_matrix_impl_t *mat, const stp_array_t *array, int transpose)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_matrix_destroy</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a17</anchor>
+ <arglist>(stp_dither_matrix_impl_t *mat)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_matrix_clone</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a18</anchor>
+ <arglist>(const stp_dither_matrix_impl_t *src, stp_dither_matrix_impl_t *dest, int x_offset, int y_offset)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_matrix_copy</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a19</anchor>
+ <arglist>(const stp_dither_matrix_impl_t *src, stp_dither_matrix_impl_t *dest)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_matrix_scale_exponentially</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a20</anchor>
+ <arglist>(stp_dither_matrix_impl_t *mat, double exponent)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_matrix_set_row</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a21</anchor>
+ <arglist>(stp_dither_matrix_impl_t *mat, int y)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_array_t *</type>
+ <name>stp_find_standard_dither_array</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a22</anchor>
+ <arglist>(int x_aspect, int y_aspect)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_list_t</type>
+ <name>stp_dither_list_parameters</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a23</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_describe_parameter</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a24</anchor>
+ <arglist>(const stp_vars_t *v, const char *name, stp_parameter_t *description)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_init</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a25</anchor>
+ <arglist>(stp_vars_t *v, stp_image_t *image, int out_width, int xdpi, int ydpi)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_set_iterated_matrix</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a26</anchor>
+ <arglist>(stp_vars_t *v, size_t edge, size_t iterations, const unsigned *data, int prescaled, int x_shear, int y_shear)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_set_matrix</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a27</anchor>
+ <arglist>(stp_vars_t *v, const stp_dither_matrix_generic_t *mat, int transpose, int x_shear, int y_shear)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_set_matrix_from_dither_array</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a28</anchor>
+ <arglist>(stp_vars_t *v, const stp_array_t *array, int transpose)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_set_transition</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a29</anchor>
+ <arglist>(stp_vars_t *v, double)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_set_randomizer</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a30</anchor>
+ <arglist>(stp_vars_t *v, int color, double)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_set_ink_spread</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a31</anchor>
+ <arglist>(stp_vars_t *v, int spread)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_set_adaptive_limit</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a32</anchor>
+ <arglist>(stp_vars_t *v, double limit)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_dither_get_first_position</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a33</anchor>
+ <arglist>(stp_vars_t *v, int color, int subchan)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_dither_get_last_position</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a34</anchor>
+ <arglist>(stp_vars_t *v, int color, int subchan)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_set_inks_simple</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a35</anchor>
+ <arglist>(stp_vars_t *v, int color, int nlevels, const double *levels, double density, double darkness)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_set_inks_full</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a36</anchor>
+ <arglist>(stp_vars_t *v, int color, int nshades, const stp_shade_t *shades, double density, double darkness)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_set_inks</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a37</anchor>
+ <arglist>(stp_vars_t *v, int color, double density, double darkness, int nshades, const double *svalues, int ndotsizes, const double *dvalues)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_add_channel</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a38</anchor>
+ <arglist>(stp_vars_t *v, unsigned char *data, unsigned channel, unsigned subchannel)</arglist>
+ </member>
+ <member kind="function">
+ <type>unsigned char *</type>
+ <name>stp_dither_get_channel</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a39</anchor>
+ <arglist>(stp_vars_t *v, unsigned channel, unsigned subchannel)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a40</anchor>
+ <arglist>(stp_vars_t *v, int row, int duplicate_line, int zero_mask, const unsigned char *mask)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dither_internal</name>
+ <anchorfile>dither_8h.html</anchorfile>
+ <anchor>a41</anchor>
+ <arglist>(stp_vars_t *v, int row, const unsigned short *input, int duplicate_line, int zero_mask, const unsigned char *mask)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>gutenprint-intl-internal.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>gutenprint-intl-internal_8h</filename>
+ <member kind="define">
+ <type>#define</type>
+ <name>textdomain</name>
+ <anchorfile>group__intl__internal.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist>(String)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>gettext</name>
+ <anchorfile>group__intl__internal.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(String)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>dgettext</name>
+ <anchorfile>group__intl__internal.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(Domain, Message)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>dcgettext</name>
+ <anchorfile>group__intl__internal.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(Domain, Message, Type)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>bindtextdomain</name>
+ <anchorfile>group__intl__internal.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(Domain, Directory)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>_</name>
+ <anchorfile>group__intl__internal.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(String)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>N_</name>
+ <anchorfile>group__intl__internal.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(String)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>gutenprint-intl.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>gutenprint-intl_8h</filename>
+ <member kind="define">
+ <type>#define</type>
+ <name>textdomain</name>
+ <anchorfile>group__intl.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist>(String)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>gettext</name>
+ <anchorfile>group__intl.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(String)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>dgettext</name>
+ <anchorfile>group__intl.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(Domain, Message)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>dcgettext</name>
+ <anchorfile>group__intl.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(Domain, Message, Type)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>bindtextdomain</name>
+ <anchorfile>group__intl.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(Domain, Directory)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>_</name>
+ <anchorfile>group__intl.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(String)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>N_</name>
+ <anchorfile>group__intl.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(String)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>gutenprint-module.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>gutenprint-module_8h</filename>
+ <includes id="gutenprint_8h" name="gutenprint.h" local="no" imported="no">gutenprint/gutenprint.h</includes>
+ <includes id="bit-ops_8h" name="bit-ops.h" local="no" imported="no">gutenprint/bit-ops.h</includes>
+ <includes id="channel_8h" name="channel.h" local="no" imported="no">gutenprint/channel.h</includes>
+ <includes id="color_8h" name="color.h" local="no" imported="no">gutenprint/color.h</includes>
+ <includes id="dither_8h" name="dither.h" local="no" imported="no">gutenprint/dither.h</includes>
+ <includes id="list_8h" name="list.h" local="no" imported="no">gutenprint/list.h</includes>
+ <includes id="module_8h" name="module.h" local="no" imported="no">gutenprint/module.h</includes>
+ <includes id="path_8h" name="path.h" local="no" imported="no">gutenprint/path.h</includes>
+ <includes id="weave_8h" name="weave.h" local="no" imported="no">gutenprint/weave.h</includes>
+ <includes id="xml_8h" name="xml.h" local="no" imported="no">gutenprint/xml.h</includes>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MODULE</name>
+ <anchorfile>gutenprint-module_8h.html</anchorfile>
+ <anchor>a0</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>gutenprint-version.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>gutenprint-version_8h</filename>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MAJOR_VERSION</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MINOR_VERSION</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MICRO_VERSION</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_CURRENT_INTERFACE</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_BINARY_AGE</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_INTERFACE_AGE</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga12</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_CHECK_VERSION</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga13</anchor>
+ <arglist>(major, minor, micro)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_check_version</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(unsigned int required_major, unsigned int required_minor, unsigned int required_micro)</arglist>
+ </member>
+ <member kind="variable">
+ <type>const unsigned int</type>
+ <name>stp_major_version</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const unsigned int</type>
+ <name>stp_minor_version</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const unsigned int</type>
+ <name>stp_micro_version</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const unsigned int</type>
+ <name>stp_current_interface</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const unsigned int</type>
+ <name>stp_binary_age</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const unsigned int</type>
+ <name>stp_interface_age</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>gutenprint.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>gutenprint_8h</filename>
+ <includes id="array_8h" name="array.h" local="no" imported="no">gutenprint/array.h</includes>
+ <includes id="curve_8h" name="curve.h" local="no" imported="no">gutenprint/curve.h</includes>
+ <includes id="gutenprint-version_8h" name="gutenprint-version.h" local="no" imported="no">gutenprint/gutenprint-version.h</includes>
+ <includes id="image_8h" name="image.h" local="no" imported="no">gutenprint/image.h</includes>
+ <includes id="paper_8h" name="paper.h" local="no" imported="no">gutenprint/paper.h</includes>
+ <includes id="printers_8h" name="printers.h" local="no" imported="no">gutenprint/printers.h</includes>
+ <includes id="sequence_8h" name="sequence.h" local="no" imported="no">gutenprint/sequence.h</includes>
+ <includes id="string-list_8h" name="string-list.h" local="no" imported="no">gutenprint/string-list.h</includes>
+ <includes id="util_8h" name="util.h" local="no" imported="no">gutenprint/util.h</includes>
+ <includes id="vars_8h" name="vars.h" local="no" imported="no">gutenprint/vars.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>image.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>image_8h</filename>
+ <class kind="struct">stp_image</class>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_CHANNEL_LIMIT</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_image</type>
+ <name>stp_image_t</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_image_status_t</name>
+ <anchor>ga9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_IMAGE_STATUS_OK</name>
+ <anchor>gga9a2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_IMAGE_STATUS_ABORT</name>
+ <anchor>gga9a3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_image_init</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(stp_image_t *image)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_image_reset</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(stp_image_t *image)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_image_width</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(stp_image_t *image)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_image_height</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(stp_image_t *image)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_image_status_t</type>
+ <name>stp_image_get_row</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(stp_image_t *image, unsigned char *data, size_t limit, int row)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_image_get_appname</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(stp_image_t *image)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_image_conclude</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(stp_image_t *image)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>list.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>list_8h</filename>
+ <member kind="typedef">
+ <type>stp_list_item</type>
+ <name>stp_list_item_t</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_list</type>
+ <name>stp_list_t</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>void(*</type>
+ <name>stp_node_freefunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>)(void *)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>void *(*</type>
+ <name>stp_node_copyfunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>)(const void *)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>const char *(*</type>
+ <name>stp_node_namefunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>)(const void *)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>int(*</type>
+ <name>stp_node_sortfunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>)(const void *, const void *)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_list_node_free_data</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(void *item)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_t *</type>
+ <name>stp_list_create</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_t *</type>
+ <name>stp_list_copy</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_list_destroy</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist>(stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_item_t *</type>
+ <name>stp_list_get_start</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_item_t *</type>
+ <name>stp_list_get_end</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_item_t *</type>
+ <name>stp_list_get_item_by_index</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga12</anchor>
+ <arglist>(const stp_list_t *list, int idx)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_item_t *</type>
+ <name>stp_list_get_item_by_name</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga13</anchor>
+ <arglist>(const stp_list_t *list, const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_item_t *</type>
+ <name>stp_list_get_item_by_long_name</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga14</anchor>
+ <arglist>(const stp_list_t *list, const char *long_name)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_list_get_length</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga15</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_list_set_freefunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga16</anchor>
+ <arglist>(stp_list_t *list, stp_node_freefunc freefunc)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_node_freefunc</type>
+ <name>stp_list_get_freefunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga17</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_list_set_copyfunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga18</anchor>
+ <arglist>(stp_list_t *list, stp_node_copyfunc copyfunc)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_node_copyfunc</type>
+ <name>stp_list_get_copyfunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga19</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_list_set_namefunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga20</anchor>
+ <arglist>(stp_list_t *list, stp_node_namefunc namefunc)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_node_namefunc</type>
+ <name>stp_list_get_namefunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga21</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_list_set_long_namefunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga22</anchor>
+ <arglist>(stp_list_t *list, stp_node_namefunc long_namefunc)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_node_namefunc</type>
+ <name>stp_list_get_long_namefunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga23</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_list_set_sortfunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga24</anchor>
+ <arglist>(stp_list_t *list, stp_node_sortfunc sortfunc)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_node_sortfunc</type>
+ <name>stp_list_get_sortfunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga25</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_list_item_create</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga26</anchor>
+ <arglist>(stp_list_t *list, stp_list_item_t *next, const void *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_list_item_destroy</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga27</anchor>
+ <arglist>(stp_list_t *list, stp_list_item_t *item)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_item_t *</type>
+ <name>stp_list_item_prev</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga28</anchor>
+ <arglist>(const stp_list_item_t *item)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_item_t *</type>
+ <name>stp_list_item_next</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga29</anchor>
+ <arglist>(const stp_list_item_t *item)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>stp_list_item_get_data</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga30</anchor>
+ <arglist>(const stp_list_item_t *item)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_list_item_set_data</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga31</anchor>
+ <arglist>(stp_list_item_t *item, void *data)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>module.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>module_8h</filename>
+ <includes id="list_8h" name="list.h" local="no" imported="no">gutenprint/list.h</includes>
+ <class kind="struct">stp_module_version</class>
+ <class kind="struct">stp_module</class>
+ <member kind="typedef">
+ <type>stp_module_version</type>
+ <name>stp_module_version_t</name>
+ <anchorfile>module_8h.html</anchorfile>
+ <anchor>a0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_module</type>
+ <name>stp_module_t</name>
+ <anchorfile>module_8h.html</anchorfile>
+ <anchor>a1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_module_class_t</name>
+ <anchor>a13</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_MODULE_CLASS_INVALID</name>
+ <anchor>a13a2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_MODULE_CLASS_MISC</name>
+ <anchor>a13a3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_MODULE_CLASS_FAMILY</name>
+ <anchor>a13a4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_MODULE_CLASS_COLOR</name>
+ <anchor>a13a5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_MODULE_CLASS_DITHER</name>
+ <anchor>a13a6</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_module_load</name>
+ <anchorfile>module_8h.html</anchorfile>
+ <anchor>a7</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_module_exit</name>
+ <anchorfile>module_8h.html</anchorfile>
+ <anchor>a8</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_module_open</name>
+ <anchorfile>module_8h.html</anchorfile>
+ <anchor>a9</anchor>
+ <arglist>(const char *modulename)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_module_init</name>
+ <anchorfile>module_8h.html</anchorfile>
+ <anchor>a10</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_module_close</name>
+ <anchorfile>module_8h.html</anchorfile>
+ <anchor>a11</anchor>
+ <arglist>(stp_list_item_t *module)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_t *</type>
+ <name>stp_module_get_class</name>
+ <anchorfile>module_8h.html</anchorfile>
+ <anchor>a12</anchor>
+ <arglist>(stp_module_class_t class)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>mxml.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>mxml_8h</filename>
+ <class kind="struct">stp_mxml_attr_s</class>
+ <class kind="struct">stp_mxml_value_s</class>
+ <class kind="struct">stp_mxml_text_s</class>
+ <class kind="union">stp_mxml_value_u</class>
+ <class kind="struct">stp_mxml_node_s</class>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MXML_WRAP</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MXML_TAB</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MXML_NO_CALLBACK</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MXML_NO_PARENT</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MXML_DESCEND</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MXML_NO_DESCEND</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MXML_DESCEND_FIRST</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a6</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MXML_WS_BEFORE_OPEN</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MXML_WS_AFTER_OPEN</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MXML_WS_BEFORE_CLOSE</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MXML_WS_AFTER_CLOSE</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a10</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MXML_ADD_BEFORE</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a11</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MXML_ADD_AFTER</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a12</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MXML_ADD_TO_PARENT</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a13</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>enum stp_mxml_type_e</type>
+ <name>stp_mxml_type_t</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a14</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_mxml_attr_s</type>
+ <name>stp_mxml_attr_t</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a15</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_mxml_value_s</type>
+ <name>stp_mxml_element_t</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a16</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_mxml_text_s</type>
+ <name>stp_mxml_text_t</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a17</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_mxml_value_u</type>
+ <name>stp_mxml_value_t</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a18</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_mxml_node_s</type>
+ <name>stp_mxml_node_t</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a19</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_mxml_type_e</name>
+ <anchor>a43</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_MXML_ELEMENT</name>
+ <anchor>a43a20</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_MXML_INTEGER</name>
+ <anchor>a43a21</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_MXML_OPAQUE</name>
+ <anchor>a43a22</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_MXML_REAL</name>
+ <anchor>a43a23</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_MXML_TEXT</name>
+ <anchor>a43a24</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_mxmlAdd</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a25</anchor>
+ <arglist>(stp_mxml_node_t *parent, int where, stp_mxml_node_t *child, stp_mxml_node_t *node)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_mxmlDelete</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a26</anchor>
+ <arglist>(stp_mxml_node_t *node)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_mxmlElementGetAttr</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a27</anchor>
+ <arglist>(stp_mxml_node_t *node, const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_mxmlElementSetAttr</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a28</anchor>
+ <arglist>(stp_mxml_node_t *node, const char *name, const char *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_mxml_node_t *</type>
+ <name>stp_mxmlFindElement</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a29</anchor>
+ <arglist>(stp_mxml_node_t *node, stp_mxml_node_t *top, const char *name, const char *attr, const char *value, int descend)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_mxml_node_t *</type>
+ <name>stp_mxmlLoadFile</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a30</anchor>
+ <arglist>(stp_mxml_node_t *top, FILE *fp, stp_mxml_type_t(*cb)(stp_mxml_node_t *))</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_mxml_node_t *</type>
+ <name>stp_mxmlLoadString</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a31</anchor>
+ <arglist>(stp_mxml_node_t *top, const char *s, stp_mxml_type_t(*cb)(stp_mxml_node_t *))</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_mxml_node_t *</type>
+ <name>stp_mxmlNewElement</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a32</anchor>
+ <arglist>(stp_mxml_node_t *parent, const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_mxml_node_t *</type>
+ <name>stp_mxmlNewInteger</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a33</anchor>
+ <arglist>(stp_mxml_node_t *parent, int integer)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_mxml_node_t *</type>
+ <name>stp_mxmlNewOpaque</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a34</anchor>
+ <arglist>(stp_mxml_node_t *parent, const char *opaque)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_mxml_node_t *</type>
+ <name>stp_mxmlNewReal</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a35</anchor>
+ <arglist>(stp_mxml_node_t *parent, double real)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_mxml_node_t *</type>
+ <name>stp_mxmlNewText</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a36</anchor>
+ <arglist>(stp_mxml_node_t *parent, int whitespace, const char *string)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_mxmlRemove</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a37</anchor>
+ <arglist>(stp_mxml_node_t *node)</arglist>
+ </member>
+ <member kind="function">
+ <type>char *</type>
+ <name>stp_mxmlSaveAllocString</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a38</anchor>
+ <arglist>(stp_mxml_node_t *node, int(*cb)(stp_mxml_node_t *, int))</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_mxmlSaveFile</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a39</anchor>
+ <arglist>(stp_mxml_node_t *node, FILE *fp, int(*cb)(stp_mxml_node_t *, int))</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_mxmlSaveString</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a40</anchor>
+ <arglist>(stp_mxml_node_t *node, char *buffer, int bufsize, int(*cb)(stp_mxml_node_t *, int))</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_mxml_node_t *</type>
+ <name>stp_mxmlWalkNext</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a41</anchor>
+ <arglist>(stp_mxml_node_t *node, stp_mxml_node_t *top, int descend)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_mxml_node_t *</type>
+ <name>stp_mxmlWalkPrev</name>
+ <anchorfile>mxml_8h.html</anchorfile>
+ <anchor>a42</anchor>
+ <arglist>(stp_mxml_node_t *node, stp_mxml_node_t *top, int descend)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>paper.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>paper_8h</filename>
+ <includes id="vars_8h" name="vars.h" local="no" imported="no">gutenprint/vars.h</includes>
+ <class kind="struct">stp_papersize_t</class>
+ <member kind="enumeration">
+ <name>stp_papersize_unit_t</name>
+ <anchor>ga5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>PAPERSIZE_ENGLISH_STANDARD</name>
+ <anchor>gga5a0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>PAPERSIZE_METRIC_STANDARD</name>
+ <anchor>gga5a1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>PAPERSIZE_ENGLISH_EXTENDED</name>
+ <anchor>gga5a2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>PAPERSIZE_METRIC_EXTENDED</name>
+ <anchor>gga5a3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_known_papersizes</name>
+ <anchorfile>group__papersize.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_papersize_t *</type>
+ <name>stp_get_papersize_by_name</name>
+ <anchorfile>group__papersize.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_papersize_t *</type>
+ <name>stp_get_papersize_by_size</name>
+ <anchorfile>group__papersize.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(int length, int width)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_papersize_t *</type>
+ <name>stp_get_papersize_by_index</name>
+ <anchorfile>group__papersize.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(int idx)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_default_media_size</name>
+ <anchorfile>group__papersize.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(const stp_vars_t *v, int *width, int *height)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>path.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>path_8h</filename>
+ <member kind="function">
+ <type>stp_list_t *</type>
+ <name>stp_path_search</name>
+ <anchorfile>path_8h.html</anchorfile>
+ <anchor>a0</anchor>
+ <arglist>(stp_list_t *dirlist, const char *suffix)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_path_split</name>
+ <anchorfile>path_8h.html</anchorfile>
+ <anchor>a1</anchor>
+ <arglist>(stp_list_t *list, const char *path)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>printers.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>printers_8h</filename>
+ <includes id="list_8h" name="list.h" local="no" imported="no">gutenprint/list.h</includes>
+ <includes id="vars_8h" name="vars.h" local="no" imported="no">gutenprint/vars.h</includes>
+ <class kind="struct">stp_printfuncs_t</class>
+ <class kind="struct">stp_family</class>
+ <member kind="typedef">
+ <type>stp_printer</type>
+ <name>stp_printer_t</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_family</type>
+ <name>stp_family_t</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_printer_model_count</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_printer_t *</type>
+ <name>stp_get_printer_by_index</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(int idx)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_printer_t *</type>
+ <name>stp_get_printer_by_long_name</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(const char *long_name)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_printer_t *</type>
+ <name>stp_get_printer_by_driver</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(const char *driver)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_printer_t *</type>
+ <name>stp_get_printer</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_printer_index_by_driver</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(const char *driver)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_printer_get_long_name</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist>(const stp_printer_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_printer_get_driver</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist>(const stp_printer_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_printer_get_family</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist>(const stp_printer_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_printer_get_manufacturer</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist>(const stp_printer_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_printer_get_model</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga12</anchor>
+ <arglist>(const stp_printer_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_vars_t *</type>
+ <name>stp_printer_get_defaults</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga13</anchor>
+ <arglist>(const stp_printer_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_printer_defaults</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga14</anchor>
+ <arglist>(stp_vars_t *v, const stp_printer_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_print</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga15</anchor>
+ <arglist>(const stp_vars_t *v, stp_image_t *image)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_start_job</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga16</anchor>
+ <arglist>(const stp_vars_t *v, stp_image_t *image)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_end_job</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga17</anchor>
+ <arglist>(const stp_vars_t *v, stp_image_t *image)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_model_id</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga18</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_verify_printer_params</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga19</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_family_register</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga20</anchor>
+ <arglist>(stp_list_t *family)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_family_unregister</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga21</anchor>
+ <arglist>(stp_list_t *family)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_initialize_printer_defaults</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga22</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_list_t</type>
+ <name>stp_printer_list_parameters</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga23</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_printer_describe_parameter</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga24</anchor>
+ <arglist>(const stp_vars_t *v, const char *name, stp_parameter_t *description)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_describe_output</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga25</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>sequence.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>sequence_8h</filename>
+ <member kind="typedef">
+ <type>stp_sequence</type>
+ <name>stp_sequence_t</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>stp_sequence_t *</type>
+ <name>stp_sequence_create</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_sequence_destroy</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(stp_sequence_t *sequence)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_sequence_copy</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(stp_sequence_t *dest, const stp_sequence_t *source)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_sequence_t *</type>
+ <name>stp_sequence_create_copy</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(const stp_sequence_t *sequence)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_bounds</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(stp_sequence_t *sequence, double low, double high)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_sequence_get_bounds</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(const stp_sequence_t *sequence, double *low, double *high)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_sequence_get_range</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(const stp_sequence_t *sequence, double *low, double *high)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_size</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t size)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>stp_sequence_get_size</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist>(const stp_sequence_t *sequence)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t count, const double *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_subrange</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t where, size_t size, const double *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_sequence_get_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga12</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t *size, const double **data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_point</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga13</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t where, double data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_get_point</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga14</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t where, double *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_float_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga15</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t count, const float *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_long_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga16</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t count, const long *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_ulong_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga17</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t count, const unsigned long *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_int_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga18</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t count, const int *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_uint_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga19</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t count, const unsigned int *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_short_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga20</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t count, const short *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_ushort_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga21</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t count, const unsigned short *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>const float *</type>
+ <name>stp_sequence_get_float_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga22</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const long *</type>
+ <name>stp_sequence_get_long_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga23</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const unsigned long *</type>
+ <name>stp_sequence_get_ulong_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga24</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const int *</type>
+ <name>stp_sequence_get_int_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga25</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const unsigned int *</type>
+ <name>stp_sequence_get_uint_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga26</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const short *</type>
+ <name>stp_sequence_get_short_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga27</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const unsigned short *</type>
+ <name>stp_sequence_get_ushort_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga28</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t *count)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>string-list.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>string-list_8h</filename>
+ <class kind="struct">stp_param_string_t</class>
+ <member kind="typedef">
+ <type>stp_string_list</type>
+ <name>stp_string_list_t</name>
+ <anchorfile>string-list_8h.html</anchorfile>
+ <anchor>a0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>stp_string_list_t *</type>
+ <name>stp_string_list_create</name>
+ <anchorfile>string-list_8h.html</anchorfile>
+ <anchor>a1</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_string_list_destroy</name>
+ <anchorfile>string-list_8h.html</anchorfile>
+ <anchor>a2</anchor>
+ <arglist>(stp_string_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_param_string_t *</type>
+ <name>stp_string_list_param</name>
+ <anchorfile>string-list_8h.html</anchorfile>
+ <anchor>a3</anchor>
+ <arglist>(const stp_string_list_t *list, size_t element)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_param_string_t *</type>
+ <name>stp_string_list_find</name>
+ <anchorfile>string-list_8h.html</anchorfile>
+ <anchor>a4</anchor>
+ <arglist>(const stp_string_list_t *list, const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>stp_string_list_count</name>
+ <anchorfile>string-list_8h.html</anchorfile>
+ <anchor>a5</anchor>
+ <arglist>(const stp_string_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_string_list_t *</type>
+ <name>stp_string_list_create_copy</name>
+ <anchorfile>string-list_8h.html</anchorfile>
+ <anchor>a6</anchor>
+ <arglist>(const stp_string_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_string_list_add_string</name>
+ <anchorfile>string-list_8h.html</anchorfile>
+ <anchor>a7</anchor>
+ <arglist>(stp_string_list_t *list, const char *name, const char *text)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_string_list_remove_string</name>
+ <anchorfile>string-list_8h.html</anchorfile>
+ <anchor>a8</anchor>
+ <arglist>(stp_string_list_t *list, const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_string_list_t *</type>
+ <name>stp_string_list_create_from_params</name>
+ <anchorfile>string-list_8h.html</anchorfile>
+ <anchor>a9</anchor>
+ <arglist>(const stp_param_string_t *list, size_t count)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_string_list_is_present</name>
+ <anchorfile>string-list_8h.html</anchorfile>
+ <anchor>a10</anchor>
+ <arglist>(const stp_string_list_t *list, const char *value)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>util.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>util_8h</filename>
+ <includes id="curve_8h" name="curve.h" local="no" imported="no">gutenprint/curve.h</includes>
+ <includes id="vars_8h" name="vars.h" local="no" imported="no">gutenprint/vars.h</includes>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_LUT</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga33</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_COLORFUNC</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga34</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_INK</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga35</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_PS</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga36</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_PCL</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga37</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_ESCP2</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga38</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_CANON</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga39</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_LEXMARK</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga40</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_WEAVE_PARAMS</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga41</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_ROWS</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga42</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_MARK_FILE</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga43</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_LIST</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga44</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_MODULE</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga45</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_PATH</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga46</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_PAPER</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga47</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_PRINTERS</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga48</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_XML</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga49</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_VARS</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga50</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_OLYMPUS</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga51</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_CURVE</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga52</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_CURVE_ERRORS</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga53</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_SAFE_FREE</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga54</anchor>
+ <arglist>(x)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_init</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_set_output_codeset</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(const char *codeset)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_t *</type>
+ <name>stp_read_and_compose_curves</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(const char *s1, const char *s2, stp_curve_compose_t comp, size_t piecewise_point_count)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_abort</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_prune_inactive_options</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_zprintf</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(const stp_vars_t *v, const char *format,...) __attribute__((format(__printf__</arglist>
+ </member>
+ <member kind="function">
+ <type>void void</type>
+ <name>stp_zfwrite</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(const char *buf, size_t bytes, size_t nitems, const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_putc</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(int ch, const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_put16_le</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist>(unsigned short sh, const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_put16_be</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist>(unsigned short sh, const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_put32_le</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist>(unsigned int sh, const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_put32_be</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist>(unsigned int sh, const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_puts</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga12</anchor>
+ <arglist>(const char *s, const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_send_command</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga13</anchor>
+ <arglist>(const stp_vars_t *v, const char *command, const char *format,...)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_erputc</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga14</anchor>
+ <arglist>(int ch)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_eprintf</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga15</anchor>
+ <arglist>(const stp_vars_t *v, const char *format,...) __attribute__((format(__printf__</arglist>
+ </member>
+ <member kind="function">
+ <type>void void</type>
+ <name>stp_erprintf</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga16</anchor>
+ <arglist>(const char *format,...) __attribute__((format(__printf__</arglist>
+ </member>
+ <member kind="function">
+ <type>void void void</type>
+ <name>stp_asprintf</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga17</anchor>
+ <arglist>(char **strp, const char *format,...) __attribute__((format(__printf__</arglist>
+ </member>
+ <member kind="function">
+ <type>void void void void</type>
+ <name>stp_catprintf</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga18</anchor>
+ <arglist>(char **strp, const char *format,...) __attribute__((format(__printf__</arglist>
+ </member>
+ <member kind="function">
+ <type>unsigned long</type>
+ <name>stp_get_debug_level</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga19</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dprintf</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga20</anchor>
+ <arglist>(unsigned long level, const stp_vars_t *v, const char *format,...) __attribute__((format(__printf__</arglist>
+ </member>
+ <member kind="function">
+ <type>void void</type>
+ <name>stp_deprintf</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga21</anchor>
+ <arglist>(unsigned long level, const char *format,...) __attribute__((format(__printf__</arglist>
+ </member>
+ <member kind="function">
+ <type>void void void</type>
+ <name>stp_init_debug_messages</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga22</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_flush_debug_messages</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga23</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>stp_malloc</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga24</anchor>
+ <arglist>(size_t)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>stp_zalloc</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga25</anchor>
+ <arglist>(size_t)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>stp_realloc</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga26</anchor>
+ <arglist>(void *ptr, size_t)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_free</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga27</anchor>
+ <arglist>(void *ptr)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>stp_strlen</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga28</anchor>
+ <arglist>(const char *s)</arglist>
+ </member>
+ <member kind="function">
+ <type>char *</type>
+ <name>stp_strndup</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga29</anchor>
+ <arglist>(const char *s, int n)</arglist>
+ </member>
+ <member kind="function">
+ <type>char *</type>
+ <name>stp_strdup</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga30</anchor>
+ <arglist>(const char *s)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_get_version</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga31</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_get_release_version</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga32</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>vars.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>vars_8h</filename>
+ <includes id="array_8h" name="array.h" local="no" imported="no">gutenprint/array.h</includes>
+ <includes id="curve_8h" name="curve.h" local="no" imported="no">gutenprint/curve.h</includes>
+ <includes id="string-list_8h" name="string-list.h" local="no" imported="no">gutenprint/string-list.h</includes>
+ <class kind="struct">stp_raw_t</class>
+ <class kind="struct">stp_double_bound_t</class>
+ <class kind="struct">stp_int_bound_t</class>
+ <class kind="struct">stp_parameter_t</class>
+ <member kind="typedef">
+ <type>stp_vars</type>
+ <name>stp_vars_t</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>void *</type>
+ <name>stp_parameter_list_t</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>const void *</type>
+ <name>stp_const_parameter_list_t</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>void(*</type>
+ <name>stp_outfunc_t</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>)(void *data, const char *buffer, size_t bytes)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>void *(*</type>
+ <name>stp_copy_data_func_t</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>)(void *)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>void(*</type>
+ <name>stp_free_data_func_t</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>)(void *)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_compdata</type>
+ <name>compdata_t</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_parameter_type_t</name>
+ <anchor>ga132</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_STRING_LIST</name>
+ <anchor>gga132a7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_INT</name>
+ <anchor>gga132a8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_BOOLEAN</name>
+ <anchor>gga132a9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_DOUBLE</name>
+ <anchor>gga132a10</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_CURVE</name>
+ <anchor>gga132a11</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_FILE</name>
+ <anchor>gga132a12</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_RAW</name>
+ <anchor>gga132a13</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_ARRAY</name>
+ <anchor>gga132a14</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_DIMENSION</name>
+ <anchor>gga132a15</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_INVALID</name>
+ <anchor>gga132a16</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_parameter_class_t</name>
+ <anchor>ga133</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_CLASS_FEATURE</name>
+ <anchor>gga133a17</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_CLASS_OUTPUT</name>
+ <anchor>gga133a18</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_CLASS_CORE</name>
+ <anchor>gga133a19</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_CLASS_INVALID</name>
+ <anchor>gga133a20</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_parameter_level_t</name>
+ <anchor>ga134</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_BASIC</name>
+ <anchor>gga134a21</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_ADVANCED</name>
+ <anchor>gga134a22</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_ADVANCED1</name>
+ <anchor>gga134a23</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_ADVANCED2</name>
+ <anchor>gga134a24</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_ADVANCED3</name>
+ <anchor>gga134a25</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_ADVANCED4</name>
+ <anchor>gga134a26</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_INTERNAL</name>
+ <anchor>gga134a27</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_EXTERNAL</name>
+ <anchor>gga134a28</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_INVALID</name>
+ <anchor>gga134a29</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_parameter_activity_t</name>
+ <anchor>ga135</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_INACTIVE</name>
+ <anchor>gga135a30</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_DEFAULTED</name>
+ <anchor>gga135a31</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_ACTIVE</name>
+ <anchor>gga135a32</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_parameter_verify_t</name>
+ <anchor>ga136</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>PARAMETER_BAD</name>
+ <anchor>gga136a33</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>PARAMETER_OK</name>
+ <anchor>gga136a34</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>PARAMETER_INACTIVE</name>
+ <anchor>gga136a35</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>stp_vars_t *</type>
+ <name>stp_vars_create</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_vars_copy</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist>(stp_vars_t *dest, const stp_vars_t *source)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_vars_t *</type>
+ <name>stp_vars_create_copy</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist>(const stp_vars_t *source)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_vars_destroy</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_driver</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist>(stp_vars_t *v, const char *val)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_driver_n</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga12</anchor>
+ <arglist>(stp_vars_t *v, const char *val, int bytes)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_get_driver</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga13</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_color_conversion</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga14</anchor>
+ <arglist>(stp_vars_t *v, const char *val)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_color_conversion_n</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga15</anchor>
+ <arglist>(stp_vars_t *v, const char *val, int bytes)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_get_color_conversion</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga16</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_left</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga17</anchor>
+ <arglist>(stp_vars_t *v, int val)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_left</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga18</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_top</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga19</anchor>
+ <arglist>(stp_vars_t *v, int val)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_top</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga20</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_width</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga21</anchor>
+ <arglist>(stp_vars_t *v, int val)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_width</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga22</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_height</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga23</anchor>
+ <arglist>(stp_vars_t *v, int val)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_height</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga24</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_page_width</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga25</anchor>
+ <arglist>(stp_vars_t *v, int val)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_page_width</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga26</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_page_height</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga27</anchor>
+ <arglist>(stp_vars_t *v, int val)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_page_height</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga28</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_outfunc</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga29</anchor>
+ <arglist>(stp_vars_t *v, stp_outfunc_t val)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_outfunc_t</type>
+ <name>stp_get_outfunc</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga30</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_errfunc</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga31</anchor>
+ <arglist>(stp_vars_t *v, stp_outfunc_t val)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_outfunc_t</type>
+ <name>stp_get_errfunc</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga32</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_outdata</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga33</anchor>
+ <arglist>(stp_vars_t *v, void *val)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>stp_get_outdata</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga34</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_errdata</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga35</anchor>
+ <arglist>(stp_vars_t *v, void *val)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>stp_get_errdata</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga36</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_merge_printvars</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga37</anchor>
+ <arglist>(stp_vars_t *user, const stp_vars_t *print)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_list_t</type>
+ <name>stp_get_parameter_list</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga38</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>stp_parameter_list_count</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga39</anchor>
+ <arglist>(stp_const_parameter_list_t list)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_parameter_t *</type>
+ <name>stp_parameter_find</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga40</anchor>
+ <arglist>(stp_const_parameter_list_t list, const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_parameter_t *</type>
+ <name>stp_parameter_list_param</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga41</anchor>
+ <arglist>(stp_const_parameter_list_t list, size_t item)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_parameter_list_destroy</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga42</anchor>
+ <arglist>(stp_parameter_list_t list)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_list_t</type>
+ <name>stp_parameter_list_create</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga43</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_parameter_list_add_param</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga44</anchor>
+ <arglist>(stp_parameter_list_t list, const stp_parameter_t *item)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_list_t</type>
+ <name>stp_parameter_list_copy</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga45</anchor>
+ <arglist>(stp_const_parameter_list_t list)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_parameter_list_append</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga46</anchor>
+ <arglist>(stp_parameter_list_t list, stp_const_parameter_list_t append)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_describe_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga47</anchor>
+ <arglist>(const stp_vars_t *v, const char *name, stp_parameter_t *description)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_parameter_description_destroy</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga48</anchor>
+ <arglist>(stp_parameter_t *description)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_parameter_t *</type>
+ <name>stp_parameter_find_in_settings</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga49</anchor>
+ <arglist>(const stp_vars_t *v, const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_string_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga50</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const char *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_string_parameter_n</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga51</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const char *value, size_t bytes)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_file_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga52</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const char *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_file_parameter_n</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga53</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const char *value, size_t bytes)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_float_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga54</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, double value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_int_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga55</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, int value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_dimension_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga56</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, int value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_boolean_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga57</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, int value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_curve_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga58</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const stp_curve_t *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_array_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga59</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const stp_array_t *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_raw_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga60</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const void *value, size_t bytes)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_scale_float_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga61</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, double scale)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_string_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga62</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const char *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_string_parameter_n</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga63</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const char *value, size_t bytes)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_file_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga64</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const char *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_file_parameter_n</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga65</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const char *value, size_t bytes)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_float_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga66</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, double value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_int_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga67</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, int value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_dimension_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga68</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, int value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_boolean_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga69</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, int value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_curve_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga70</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const stp_curve_t *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_array_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga71</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const stp_array_t *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_raw_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga72</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const void *value, size_t bytes)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_get_string_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga73</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_get_file_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga74</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>double</type>
+ <name>stp_get_float_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga75</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_int_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga76</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_dimension_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga77</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_boolean_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga78</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_curve_t *</type>
+ <name>stp_get_curve_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga79</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_array_t *</type>
+ <name>stp_get_array_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga80</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_raw_t *</type>
+ <name>stp_get_raw_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga81</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_string_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga82</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_file_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga83</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_float_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga84</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_int_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga85</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_dimension_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga86</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_boolean_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga87</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_curve_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga88</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_array_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga89</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_raw_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga90</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_string_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga91</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_file_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga92</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_float_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga93</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_int_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga94</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_dimension_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga95</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_boolean_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga96</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_curve_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga97</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_array_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga98</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_raw_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga99</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_string_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga100</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_file_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga101</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_float_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga102</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_int_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga103</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_dimension_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga104</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_boolean_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga105</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_curve_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga106</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_array_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga107</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_raw_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga108</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_string_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga109</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_file_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga110</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_float_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga111</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_int_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga112</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_dimension_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga113</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_boolean_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga114</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_curve_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga115</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_array_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga116</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_raw_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga117</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_get_media_size</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga118</anchor>
+ <arglist>(const stp_vars_t *v, int *width, int *height)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_get_imageable_area</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga119</anchor>
+ <arglist>(const stp_vars_t *v, int *left, int *right, int *bottom, int *top)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_get_size_limit</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga120</anchor>
+ <arglist>(const stp_vars_t *v, int *max_width, int *max_height, int *min_width, int *min_height)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_describe_resolution</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga121</anchor>
+ <arglist>(const stp_vars_t *v, int *x, int *y)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_verify</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga122</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_vars_t *</type>
+ <name>stp_default_settings</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga123</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_allocate_component_data</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga124</anchor>
+ <arglist>(stp_vars_t *v, const char *name, stp_copy_data_func_t copyfunc, stp_free_data_func_t freefunc, void *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_destroy_component_data</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga125</anchor>
+ <arglist>(stp_vars_t *v, const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>stp_get_component_data</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga126</anchor>
+ <arglist>(const stp_vars_t *v, const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_verify_t</type>
+ <name>stp_verify_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga127</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, int quiet)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_verified</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga128</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_verified</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga129</anchor>
+ <arglist>(stp_vars_t *v, int value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_copy_options</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga130</anchor>
+ <arglist>(stp_vars_t *vd, const stp_vars_t *vs)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_fill_parameter_settings</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga131</anchor>
+ <arglist>(stp_parameter_t *desc, const stp_parameter_t *param)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>weave.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>weave_8h</filename>
+ <class kind="struct">stp_weave_t</class>
+ <class kind="struct">stp_pass_t</class>
+ <class kind="struct">stp_lineoff_t</class>
+ <class kind="struct">stp_lineactive_t</class>
+ <class kind="struct">stp_linecount_t</class>
+ <class kind="struct">stp_linebufs_t</class>
+ <class kind="struct">stp_linebounds_t</class>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MAX_WEAVE</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>int</type>
+ <name>stp_packfunc</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a1</anchor>
+ <arglist>(stp_vars_t *v, const unsigned char *line, int height, unsigned char *comp_buf, unsigned char **comp_ptr, int *first, int *last)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>void</type>
+ <name>stp_fillfunc</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a2</anchor>
+ <arglist>(stp_vars_t *v, int row, int subpass, int width, int missingstartrows, int color)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>void</type>
+ <name>stp_flushfunc</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a3</anchor>
+ <arglist>(stp_vars_t *v, int passno, int vertical_subpass)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>int</type>
+ <name>stp_compute_linewidth_func</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a4</anchor>
+ <arglist>(stp_vars_t *v, int n)</arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_weave_strategy_t</name>
+ <anchor>a26</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_WEAVE_ZIGZAG</name>
+ <anchor>a26a11</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_WEAVE_ASCENDING</name>
+ <anchor>a26a12</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_WEAVE_DESCENDING</name>
+ <anchor>a26a13</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_WEAVE_ASCENDING_2X</name>
+ <anchor>a26a14</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_WEAVE_STAGGERED</name>
+ <anchor>a26a15</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_WEAVE_ASCENDING_3X</name>
+ <anchor>a26a16</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_initialize_weave</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a17</anchor>
+ <arglist>(stp_vars_t *v, int jets, int separation, int oversample, int horizontal, int vertical, int ncolors, int bitwidth, int linewidth, int line_count, int first_line, int page_height, const int *head_offset, stp_weave_strategy_t, stp_flushfunc, stp_fillfunc, stp_packfunc, stp_compute_linewidth_func)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_flush_all</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a18</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_write_weave</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a19</anchor>
+ <arglist>(stp_vars_t *v, unsigned char *const cols[])</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_lineoff_t *</type>
+ <name>stp_get_lineoffsets_by_pass</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a20</anchor>
+ <arglist>(const stp_vars_t *v, int pass)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_lineactive_t *</type>
+ <name>stp_get_lineactive_by_pass</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a21</anchor>
+ <arglist>(const stp_vars_t *v, int pass)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_linecount_t *</type>
+ <name>stp_get_linecount_by_pass</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a22</anchor>
+ <arglist>(const stp_vars_t *v, int pass)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_linebufs_t *</type>
+ <name>stp_get_linebases_by_pass</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a23</anchor>
+ <arglist>(const stp_vars_t *v, int pass)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_pass_t *</type>
+ <name>stp_get_pass_by_pass</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a24</anchor>
+ <arglist>(const stp_vars_t *v, int pass)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_weave_parameters_by_row</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a25</anchor>
+ <arglist>(const stp_vars_t *v, int row, int vertical_subpass, stp_weave_t *w)</arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_packfunc</type>
+ <name>stp_pack_tiff</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_packfunc</type>
+ <name>stp_pack_uncompressed</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a6</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_fillfunc</type>
+ <name>stp_fill_tiff</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_fillfunc</type>
+ <name>stp_fill_uncompressed</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_compute_linewidth_func</type>
+ <name>stp_compute_tiff_linewidth</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_compute_linewidth_func</type>
+ <name>stp_compute_uncompressed_linewidth</name>
+ <anchorfile>weave_8h.html</anchorfile>
+ <anchor>a10</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>xml.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>xml_8h</filename>
+ <includes id="mxml_8h" name="mxml.h" local="no" imported="no">gutenprint/mxml.h</includes>
+ <member kind="typedef">
+ <type>int(*</type>
+ <name>stp_xml_parse_func</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a0</anchor>
+ <arglist>)(stp_mxml_node_t *node, const char *file)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_register_xml_parser</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a1</anchor>
+ <arglist>(const char *name, stp_xml_parse_func parse_func)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_unregister_xml_parser</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a2</anchor>
+ <arglist>(const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_register_xml_preload</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a3</anchor>
+ <arglist>(const char *filename)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_unregister_xml_preload</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a4</anchor>
+ <arglist>(const char *filename)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_xml_init_defaults</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a5</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_xml_parse_file</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a6</anchor>
+ <arglist>(const char *file)</arglist>
+ </member>
+ <member kind="function">
+ <type>long</type>
+ <name>stp_xmlstrtol</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a7</anchor>
+ <arglist>(const char *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>unsigned long</type>
+ <name>stp_xmlstrtoul</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a8</anchor>
+ <arglist>(const char *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>double</type>
+ <name>stp_xmlstrtod</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a9</anchor>
+ <arglist>(const char *textval)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_xml_init</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a10</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_xml_exit</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a11</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_mxml_node_t *</type>
+ <name>stp_xml_get_node</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a12</anchor>
+ <arglist>(stp_mxml_node_t *xmlroot,...)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_mxml_node_t *</type>
+ <name>stp_xmldoc_create_generic</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a13</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_xml_preinit</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a14</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_sequence_t *</type>
+ <name>stp_sequence_create_from_xmltree</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a15</anchor>
+ <arglist>(stp_mxml_node_t *da)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_mxml_node_t *</type>
+ <name>stp_xmltree_create_from_sequence</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a16</anchor>
+ <arglist>(const stp_sequence_t *seq)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_t *</type>
+ <name>stp_curve_create_from_xmltree</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a17</anchor>
+ <arglist>(stp_mxml_node_t *da)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_mxml_node_t *</type>
+ <name>stp_xmltree_create_from_curve</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a18</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_array_t *</type>
+ <name>stp_array_create_from_xmltree</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a19</anchor>
+ <arglist>(stp_mxml_node_t *array)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_mxml_node_t *</type>
+ <name>stp_xmltree_create_from_array</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a20</anchor>
+ <arglist>(const stp_array_t *array)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_xml_parse_file_named</name>
+ <anchorfile>xml_8h.html</anchorfile>
+ <anchor>a21</anchor>
+ <arglist>(const char *name)</arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>dither_matrix_impl</name>
+ <filename>structdither__matrix__impl.html</filename>
+ <member kind="variable">
+ <type>int</type>
+ <name>base</name>
+ <anchorfile>structdither__matrix__impl.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>exp</name>
+ <anchorfile>structdither__matrix__impl.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>x_size</name>
+ <anchorfile>structdither__matrix__impl.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>y_size</name>
+ <anchorfile>structdither__matrix__impl.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>total_size</name>
+ <anchorfile>structdither__matrix__impl.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>last_x</name>
+ <anchorfile>structdither__matrix__impl.html</anchorfile>
+ <anchor>o5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>last_x_mod</name>
+ <anchorfile>structdither__matrix__impl.html</anchorfile>
+ <anchor>o6</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>last_y</name>
+ <anchorfile>structdither__matrix__impl.html</anchorfile>
+ <anchor>o7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>last_y_mod</name>
+ <anchorfile>structdither__matrix__impl.html</anchorfile>
+ <anchor>o8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>index</name>
+ <anchorfile>structdither__matrix__impl.html</anchorfile>
+ <anchor>o9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>i_own</name>
+ <anchorfile>structdither__matrix__impl.html</anchorfile>
+ <anchor>o10</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>x_offset</name>
+ <anchorfile>structdither__matrix__impl.html</anchorfile>
+ <anchor>o11</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>y_offset</name>
+ <anchorfile>structdither__matrix__impl.html</anchorfile>
+ <anchor>o12</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>unsigned</type>
+ <name>fast_mask</name>
+ <anchorfile>structdither__matrix__impl.html</anchorfile>
+ <anchor>o13</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>unsigned *</type>
+ <name>matrix</name>
+ <anchorfile>structdither__matrix__impl.html</anchorfile>
+ <anchor>o14</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_cached_curve_t</name>
+ <filename>structstp__cached__curve__t.html</filename>
+ <member kind="variable">
+ <type>stp_curve_t *</type>
+ <name>curve</name>
+ <anchorfile>structstp__cached__curve__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const double *</type>
+ <name>d_cache</name>
+ <anchorfile>structstp__cached__curve__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const unsigned short *</type>
+ <name>s_cache</name>
+ <anchorfile>structstp__cached__curve__t.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>size_t</type>
+ <name>count</name>
+ <anchorfile>structstp__cached__curve__t.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_color</name>
+ <filename>structstp__color.html</filename>
+ <member kind="variable">
+ <type>const char *</type>
+ <name>short_name</name>
+ <anchorfile>structstp__color.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const char *</type>
+ <name>long_name</name>
+ <anchorfile>structstp__color.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const stp_colorfuncs_t *</type>
+ <name>colorfuncs</name>
+ <anchorfile>structstp__color.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_colorfuncs_t</name>
+ <filename>structstp__colorfuncs__t.html</filename>
+ <member kind="variable">
+ <type>int(*</type>
+ <name>init</name>
+ <anchorfile>structstp__colorfuncs__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist>)(stp_vars_t *v, stp_image_t *image, size_t steps)</arglist>
+ </member>
+ <member kind="variable">
+ <type>int(*</type>
+ <name>get_row</name>
+ <anchorfile>structstp__colorfuncs__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist>)(stp_vars_t *v, stp_image_t *image, int row, unsigned *zero_mask)</arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_parameter_list_t(*</type>
+ <name>list_parameters</name>
+ <anchorfile>structstp__colorfuncs__t.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist>)(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>describe_parameter</name>
+ <anchorfile>structstp__colorfuncs__t.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist>)(const stp_vars_t *v, const char *name, stp_parameter_t *description)</arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_curve_point_t</name>
+ <filename>structstp__curve__point__t.html</filename>
+ <member kind="variable">
+ <type>double</type>
+ <name>x</name>
+ <anchorfile>structstp__curve__point__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>double</type>
+ <name>y</name>
+ <anchorfile>structstp__curve__point__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_dither_matrix_generic</name>
+ <filename>structstp__dither__matrix__generic.html</filename>
+ <member kind="variable">
+ <type>int</type>
+ <name>x</name>
+ <anchorfile>structstp__dither__matrix__generic.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>y</name>
+ <anchorfile>structstp__dither__matrix__generic.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>bytes</name>
+ <anchorfile>structstp__dither__matrix__generic.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>prescaled</name>
+ <anchorfile>structstp__dither__matrix__generic.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const void *</type>
+ <name>data</name>
+ <anchorfile>structstp__dither__matrix__generic.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_dither_matrix_normal</name>
+ <filename>structstp__dither__matrix__normal.html</filename>
+ <member kind="variable">
+ <type>int</type>
+ <name>x</name>
+ <anchorfile>structstp__dither__matrix__normal.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>y</name>
+ <anchorfile>structstp__dither__matrix__normal.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>bytes</name>
+ <anchorfile>structstp__dither__matrix__normal.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>prescaled</name>
+ <anchorfile>structstp__dither__matrix__normal.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const unsigned *</type>
+ <name>data</name>
+ <anchorfile>structstp__dither__matrix__normal.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_dither_matrix_short</name>
+ <filename>structstp__dither__matrix__short.html</filename>
+ <member kind="variable">
+ <type>int</type>
+ <name>x</name>
+ <anchorfile>structstp__dither__matrix__short.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>y</name>
+ <anchorfile>structstp__dither__matrix__short.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>bytes</name>
+ <anchorfile>structstp__dither__matrix__short.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>prescaled</name>
+ <anchorfile>structstp__dither__matrix__short.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const unsigned short *</type>
+ <name>data</name>
+ <anchorfile>structstp__dither__matrix__short.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_dotsize</name>
+ <filename>structstp__dotsize.html</filename>
+ <member kind="variable">
+ <type>unsigned</type>
+ <name>bit_pattern</name>
+ <anchorfile>structstp__dotsize.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>double</type>
+ <name>value</name>
+ <anchorfile>structstp__dotsize.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_double_bound_t</name>
+ <filename>structstp__double__bound__t.html</filename>
+ <member kind="variable">
+ <type>double</type>
+ <name>lower</name>
+ <anchorfile>structstp__double__bound__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>double</type>
+ <name>upper</name>
+ <anchorfile>structstp__double__bound__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_family</name>
+ <filename>structstp__family.html</filename>
+ <member kind="variable">
+ <type>const stp_printfuncs_t *</type>
+ <name>printfuncs</name>
+ <anchorfile>structstp__family.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_list_t *</type>
+ <name>printer_list</name>
+ <anchorfile>structstp__family.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_image</name>
+ <filename>structstp__image.html</filename>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>init</name>
+ <anchorfile>structstp__image.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist>)(struct stp_image *image)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>reset</name>
+ <anchorfile>structstp__image.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist>)(struct stp_image *image)</arglist>
+ </member>
+ <member kind="variable">
+ <type>int(*</type>
+ <name>width</name>
+ <anchorfile>structstp__image.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist>)(struct stp_image *image)</arglist>
+ </member>
+ <member kind="variable">
+ <type>int(*</type>
+ <name>height</name>
+ <anchorfile>structstp__image.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist>)(struct stp_image *image)</arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_image_status_t(*</type>
+ <name>get_row</name>
+ <anchorfile>structstp__image.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist>)(struct stp_image *image, unsigned char *data, size_t byte_limit, int row)</arglist>
+ </member>
+ <member kind="variable">
+ <type>const char *(*</type>
+ <name>get_appname</name>
+ <anchorfile>structstp__image.html</anchorfile>
+ <anchor>o5</anchor>
+ <arglist>)(struct stp_image *image)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>conclude</name>
+ <anchorfile>structstp__image.html</anchorfile>
+ <anchor>o6</anchor>
+ <arglist>)(struct stp_image *image)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void *</type>
+ <name>rep</name>
+ <anchorfile>structstp__image.html</anchorfile>
+ <anchor>o7</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_int_bound_t</name>
+ <filename>structstp__int__bound__t.html</filename>
+ <member kind="variable">
+ <type>int</type>
+ <name>lower</name>
+ <anchorfile>structstp__int__bound__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>upper</name>
+ <anchorfile>structstp__int__bound__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_lineactive_t</name>
+ <filename>structstp__lineactive__t.html</filename>
+ <member kind="variable">
+ <type>int</type>
+ <name>ncolors</name>
+ <anchorfile>structstp__lineactive__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>char *</type>
+ <name>v</name>
+ <anchorfile>structstp__lineactive__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_linebounds_t</name>
+ <filename>structstp__linebounds__t.html</filename>
+ <member kind="variable">
+ <type>int</type>
+ <name>ncolors</name>
+ <anchorfile>structstp__linebounds__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int *</type>
+ <name>start_pos</name>
+ <anchorfile>structstp__linebounds__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int *</type>
+ <name>end_pos</name>
+ <anchorfile>structstp__linebounds__t.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_linebufs_t</name>
+ <filename>structstp__linebufs__t.html</filename>
+ <member kind="variable">
+ <type>int</type>
+ <name>ncolors</name>
+ <anchorfile>structstp__linebufs__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>unsigned char **</type>
+ <name>v</name>
+ <anchorfile>structstp__linebufs__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_linecount_t</name>
+ <filename>structstp__linecount__t.html</filename>
+ <member kind="variable">
+ <type>int</type>
+ <name>ncolors</name>
+ <anchorfile>structstp__linecount__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int *</type>
+ <name>v</name>
+ <anchorfile>structstp__linecount__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_lineoff_t</name>
+ <filename>structstp__lineoff__t.html</filename>
+ <member kind="variable">
+ <type>int</type>
+ <name>ncolors</name>
+ <anchorfile>structstp__lineoff__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>unsigned long *</type>
+ <name>v</name>
+ <anchorfile>structstp__lineoff__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_module</name>
+ <filename>structstp__module.html</filename>
+ <member kind="variable">
+ <type>const char *</type>
+ <name>name</name>
+ <anchorfile>structstp__module.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const char *</type>
+ <name>version</name>
+ <anchorfile>structstp__module.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const char *</type>
+ <name>comment</name>
+ <anchorfile>structstp__module.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_module_class_t</type>
+ <name>class</name>
+ <anchorfile>structstp__module.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>void *</type>
+ <name>handle</name>
+ <anchorfile>structstp__module.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int(*</type>
+ <name>init</name>
+ <anchorfile>structstp__module.html</anchorfile>
+ <anchor>o5</anchor>
+ <arglist>)(void)</arglist>
+ </member>
+ <member kind="variable">
+ <type>int(*</type>
+ <name>fini</name>
+ <anchorfile>structstp__module.html</anchorfile>
+ <anchor>o6</anchor>
+ <arglist>)(void)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void *</type>
+ <name>syms</name>
+ <anchorfile>structstp__module.html</anchorfile>
+ <anchor>o7</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_module_version</name>
+ <filename>structstp__module__version.html</filename>
+ <member kind="variable">
+ <type>int</type>
+ <name>major</name>
+ <anchorfile>structstp__module__version.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>minor</name>
+ <anchorfile>structstp__module__version.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_mxml_attr_s</name>
+ <filename>structstp__mxml__attr__s.html</filename>
+ <member kind="variable">
+ <type>char *</type>
+ <name>name</name>
+ <anchorfile>structstp__mxml__attr__s.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>char *</type>
+ <name>value</name>
+ <anchorfile>structstp__mxml__attr__s.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_mxml_node_s</name>
+ <filename>structstp__mxml__node__s.html</filename>
+ <member kind="variable">
+ <type>stp_mxml_type_t</type>
+ <name>type</name>
+ <anchorfile>structstp__mxml__node__s.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_mxml_node_t *</type>
+ <name>next</name>
+ <anchorfile>structstp__mxml__node__s.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_mxml_node_t *</type>
+ <name>prev</name>
+ <anchorfile>structstp__mxml__node__s.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_mxml_node_t *</type>
+ <name>parent</name>
+ <anchorfile>structstp__mxml__node__s.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_mxml_node_t *</type>
+ <name>child</name>
+ <anchorfile>structstp__mxml__node__s.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_mxml_node_t *</type>
+ <name>last_child</name>
+ <anchorfile>structstp__mxml__node__s.html</anchorfile>
+ <anchor>o5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_mxml_value_t</type>
+ <name>value</name>
+ <anchorfile>structstp__mxml__node__s.html</anchorfile>
+ <anchor>o6</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_mxml_text_s</name>
+ <filename>structstp__mxml__text__s.html</filename>
+ <member kind="variable">
+ <type>int</type>
+ <name>whitespace</name>
+ <anchorfile>structstp__mxml__text__s.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>char *</type>
+ <name>string</name>
+ <anchorfile>structstp__mxml__text__s.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_mxml_value_s</name>
+ <filename>structstp__mxml__value__s.html</filename>
+ <member kind="variable">
+ <type>char *</type>
+ <name>name</name>
+ <anchorfile>structstp__mxml__value__s.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>num_attrs</name>
+ <anchorfile>structstp__mxml__value__s.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_mxml_attr_t *</type>
+ <name>attrs</name>
+ <anchorfile>structstp__mxml__value__s.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="union">
+ <name>stp_mxml_value_u</name>
+ <filename>unionstp__mxml__value__u.html</filename>
+ <member kind="variable">
+ <type>stp_mxml_element_t</type>
+ <name>element</name>
+ <anchorfile>unionstp__mxml__value__u.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>integer</name>
+ <anchorfile>unionstp__mxml__value__u.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>char *</type>
+ <name>opaque</name>
+ <anchorfile>unionstp__mxml__value__u.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>double</type>
+ <name>real</name>
+ <anchorfile>unionstp__mxml__value__u.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_mxml_text_t</type>
+ <name>text</name>
+ <anchorfile>unionstp__mxml__value__u.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_papersize_t</name>
+ <filename>structstp__papersize__t.html</filename>
+ <member kind="variable">
+ <type>char *</type>
+ <name>name</name>
+ <anchorfile>structstp__papersize__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>char *</type>
+ <name>text</name>
+ <anchorfile>structstp__papersize__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>char *</type>
+ <name>comment</name>
+ <anchorfile>structstp__papersize__t.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>unsigned</type>
+ <name>width</name>
+ <anchorfile>structstp__papersize__t.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>unsigned</type>
+ <name>height</name>
+ <anchorfile>structstp__papersize__t.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>unsigned</type>
+ <name>top</name>
+ <anchorfile>structstp__papersize__t.html</anchorfile>
+ <anchor>o5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>unsigned</type>
+ <name>left</name>
+ <anchorfile>structstp__papersize__t.html</anchorfile>
+ <anchor>o6</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>unsigned</type>
+ <name>bottom</name>
+ <anchorfile>structstp__papersize__t.html</anchorfile>
+ <anchor>o7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>unsigned</type>
+ <name>right</name>
+ <anchorfile>structstp__papersize__t.html</anchorfile>
+ <anchor>o8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_papersize_unit_t</type>
+ <name>paper_unit</name>
+ <anchorfile>structstp__papersize__t.html</anchorfile>
+ <anchor>o9</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_param_string_t</name>
+ <filename>structstp__param__string__t.html</filename>
+ <member kind="variable">
+ <type>const char *</type>
+ <name>name</name>
+ <anchorfile>structstp__param__string__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const char *</type>
+ <name>text</name>
+ <anchorfile>structstp__param__string__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_parameter_t</name>
+ <filename>structstp__parameter__t.html</filename>
+ <member kind="variable">
+ <type>const char *</type>
+ <name>name</name>
+ <anchorfile>structstp__parameter__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const char *</type>
+ <name>text</name>
+ <anchorfile>structstp__parameter__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const char *</type>
+ <name>category</name>
+ <anchorfile>structstp__parameter__t.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const char *</type>
+ <name>help</name>
+ <anchorfile>structstp__parameter__t.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_parameter_type_t</type>
+ <name>p_type</name>
+ <anchorfile>structstp__parameter__t.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_parameter_class_t</type>
+ <name>p_class</name>
+ <anchorfile>structstp__parameter__t.html</anchorfile>
+ <anchor>o5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_parameter_level_t</type>
+ <name>p_level</name>
+ <anchorfile>structstp__parameter__t.html</anchorfile>
+ <anchor>o6</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>unsigned char</type>
+ <name>is_mandatory</name>
+ <anchorfile>structstp__parameter__t.html</anchorfile>
+ <anchor>o7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>unsigned char</type>
+ <name>is_active</name>
+ <anchorfile>structstp__parameter__t.html</anchorfile>
+ <anchor>o8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>unsigned char</type>
+ <name>channel</name>
+ <anchorfile>structstp__parameter__t.html</anchorfile>
+ <anchor>o9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>unsigned char</type>
+ <name>verify_this_parameter</name>
+ <anchorfile>structstp__parameter__t.html</anchorfile>
+ <anchor>o10</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>unsigned char</type>
+ <name>read_only</name>
+ <anchorfile>structstp__parameter__t.html</anchorfile>
+ <anchor>o11</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_parameter_t::@0</type>
+ <name>bounds</name>
+ <anchorfile>structstp__parameter__t.html</anchorfile>
+ <anchor>o18</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_curve_t *</type>
+ <name>curve</name>
+ <anchorfile>unionstp__parameter__t_1_1@0.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_double_bound_t</type>
+ <name>dbl</name>
+ <anchorfile>unionstp__parameter__t_1_1@0.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_int_bound_t</type>
+ <name>integer</name>
+ <anchorfile>unionstp__parameter__t_1_1@0.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_int_bound_t</type>
+ <name>dimension</name>
+ <anchorfile>unionstp__parameter__t_1_1@0.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_string_list_t *</type>
+ <name>str</name>
+ <anchorfile>unionstp__parameter__t_1_1@0.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_array_t *</type>
+ <name>array</name>
+ <anchorfile>unionstp__parameter__t_1_1@0.html</anchorfile>
+ <anchor>o5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_parameter_t::@1</type>
+ <name>deflt</name>
+ <anchorfile>structstp__parameter__t.html</anchorfile>
+ <anchor>o26</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_curve_t *</type>
+ <name>curve</name>
+ <anchorfile>unionstp__parameter__t_1_1@1.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>double</type>
+ <name>dbl</name>
+ <anchorfile>unionstp__parameter__t_1_1@1.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>dimension</name>
+ <anchorfile>unionstp__parameter__t_1_1@1.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>integer</name>
+ <anchorfile>unionstp__parameter__t_1_1@1.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>boolean</name>
+ <anchorfile>unionstp__parameter__t_1_1@1.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const char *</type>
+ <name>str</name>
+ <anchorfile>unionstp__parameter__t_1_1@1.html</anchorfile>
+ <anchor>o5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_array_t *</type>
+ <name>array</name>
+ <anchorfile>unionstp__parameter__t_1_1@1.html</anchorfile>
+ <anchor>o6</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_pass_t</name>
+ <filename>structstp__pass__t.html</filename>
+ <member kind="variable">
+ <type>int</type>
+ <name>pass</name>
+ <anchorfile>structstp__pass__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>missingstartrows</name>
+ <anchorfile>structstp__pass__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>logicalpassstart</name>
+ <anchorfile>structstp__pass__t.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>physpassstart</name>
+ <anchorfile>structstp__pass__t.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>physpassend</name>
+ <anchorfile>structstp__pass__t.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>subpass</name>
+ <anchorfile>structstp__pass__t.html</anchorfile>
+ <anchor>o5</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_printfuncs_t</name>
+ <filename>structstp__printfuncs__t.html</filename>
+ <member kind="variable">
+ <type>stp_parameter_list_t(*</type>
+ <name>list_parameters</name>
+ <anchorfile>structstp__printfuncs__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist>)(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>parameters</name>
+ <anchorfile>structstp__printfuncs__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist>)(const stp_vars_t *v, const char *name, stp_parameter_t *)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>media_size</name>
+ <anchorfile>structstp__printfuncs__t.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist>)(const stp_vars_t *v, int *width, int *height)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>imageable_area</name>
+ <anchorfile>structstp__printfuncs__t.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist>)(const stp_vars_t *v, int *left, int *right, int *bottom, int *top)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>limit</name>
+ <anchorfile>structstp__printfuncs__t.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist>)(const stp_vars_t *v, int *max_width, int *max_height, int *min_width, int *min_height)</arglist>
+ </member>
+ <member kind="variable">
+ <type>int(*</type>
+ <name>print</name>
+ <anchorfile>structstp__printfuncs__t.html</anchorfile>
+ <anchor>o5</anchor>
+ <arglist>)(const stp_vars_t *v, stp_image_t *image)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>describe_resolution</name>
+ <anchorfile>structstp__printfuncs__t.html</anchorfile>
+ <anchor>o6</anchor>
+ <arglist>)(const stp_vars_t *v, int *x, int *y)</arglist>
+ </member>
+ <member kind="variable">
+ <type>const char *(*</type>
+ <name>describe_output</name>
+ <anchorfile>structstp__printfuncs__t.html</anchorfile>
+ <anchor>o7</anchor>
+ <arglist>)(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="variable">
+ <type>int(*</type>
+ <name>verify</name>
+ <anchorfile>structstp__printfuncs__t.html</anchorfile>
+ <anchor>o8</anchor>
+ <arglist>)(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="variable">
+ <type>int(*</type>
+ <name>start_job</name>
+ <anchorfile>structstp__printfuncs__t.html</anchorfile>
+ <anchor>o9</anchor>
+ <arglist>)(const stp_vars_t *v, stp_image_t *image)</arglist>
+ </member>
+ <member kind="variable">
+ <type>int(*</type>
+ <name>end_job</name>
+ <anchorfile>structstp__printfuncs__t.html</anchorfile>
+ <anchor>o10</anchor>
+ <arglist>)(const stp_vars_t *v, stp_image_t *image)</arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_raw_t</name>
+ <filename>structstp__raw__t.html</filename>
+ <member kind="variable">
+ <type>size_t</type>
+ <name>bytes</name>
+ <anchorfile>structstp__raw__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const void *</type>
+ <name>data</name>
+ <anchorfile>structstp__raw__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_shade</name>
+ <filename>structstp__shade.html</filename>
+ <member kind="variable">
+ <type>double</type>
+ <name>value</name>
+ <anchorfile>structstp__shade.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>numsizes</name>
+ <anchorfile>structstp__shade.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const stp_dotsize_t *</type>
+ <name>dot_sizes</name>
+ <anchorfile>structstp__shade.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stp_weave_t</name>
+ <filename>structstp__weave__t.html</filename>
+ <member kind="variable">
+ <type>int</type>
+ <name>row</name>
+ <anchorfile>structstp__weave__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>pass</name>
+ <anchorfile>structstp__weave__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>jet</name>
+ <anchorfile>structstp__weave__t.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>missingstartrows</name>
+ <anchorfile>structstp__weave__t.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>logicalpassstart</name>
+ <anchorfile>structstp__weave__t.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>physpassstart</name>
+ <anchorfile>structstp__weave__t.html</anchorfile>
+ <anchor>o5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>physpassend</name>
+ <anchorfile>structstp__weave__t.html</anchorfile>
+ <anchor>o6</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="group">
+ <name>array</name>
+ <title>array</title>
+ <filename>group__array.html</filename>
+ <member kind="typedef">
+ <type>stp_array</type>
+ <name>stp_array_t</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>stp_array_t *</type>
+ <name>stp_array_create</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(int x_size, int y_size)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_array_destroy</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(stp_array_t *array)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_array_copy</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(stp_array_t *dest, const stp_array_t *source)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_array_t *</type>
+ <name>stp_array_create_copy</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(const stp_array_t *array)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_array_set_size</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(stp_array_t *array, int x_size, int y_size)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_array_get_size</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(const stp_array_t *array, int *x_size, int *y_size)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_array_set_data</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(stp_array_t *array, const double *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_array_get_data</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist>(const stp_array_t *array, size_t *size, const double **data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_array_set_point</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist>(stp_array_t *array, int x, int y, double data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_array_get_point</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist>(const stp_array_t *array, int x, int y, double *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_sequence_t *</type>
+ <name>stp_array_get_sequence</name>
+ <anchorfile>group__array.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist>(const stp_array_t *array)</arglist>
+ </member>
+ </compound>
+ <compound kind="group">
+ <name>color</name>
+ <title>color</title>
+ <filename>group__color.html</filename>
+ <class kind="struct">stp_colorfuncs_t</class>
+ <class kind="struct">stp_color</class>
+ <member kind="typedef">
+ <type>stp_color</type>
+ <name>stp_color_t</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_color_init</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(stp_vars_t *v, stp_image_t *image, size_t steps)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_color_get_row</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(stp_vars_t *v, stp_image_t *image, int row, unsigned *zero_mask)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_list_t</type>
+ <name>stp_color_list_parameters</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_color_describe_parameter</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(const stp_vars_t *v, const char *name, stp_parameter_t *description)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_color_register</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(const stp_color_t *color)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_color_unregister</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(const stp_color_t *color)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_color_count</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_color_t *</type>
+ <name>stp_get_color_by_name</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist>(const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_color_t *</type>
+ <name>stp_get_color_by_index</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist>(int idx)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_color_t *</type>
+ <name>stp_get_color_by_colorfuncs</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist>(stp_colorfuncs_t *colorfuncs)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_color_get_name</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist>(const stp_color_t *c)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_color_get_long_name</name>
+ <anchorfile>group__color.html</anchorfile>
+ <anchor>ga12</anchor>
+ <arglist>(const stp_color_t *c)</arglist>
+ </member>
+ </compound>
+ <compound kind="group">
+ <name>curve</name>
+ <title>curve</title>
+ <filename>group__curve.html</filename>
+ <class kind="struct">stp_curve_point_t</class>
+ <member kind="typedef">
+ <type>stp_curve</type>
+ <name>stp_curve_t</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_curve_type_t</name>
+ <anchor>ga47</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_TYPE_LINEAR</name>
+ <anchor>gga47a1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_TYPE_SPLINE</name>
+ <anchor>gga47a2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_curve_wrap_mode_t</name>
+ <anchor>ga48</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_WRAP_NONE</name>
+ <anchor>gga48a3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_WRAP_AROUND</name>
+ <anchor>gga48a4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_curve_compose_t</name>
+ <anchor>ga49</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_COMPOSE_ADD</name>
+ <anchor>gga49a5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_COMPOSE_MULTIPLY</name>
+ <anchor>gga49a6</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_COMPOSE_EXPONENTIATE</name>
+ <anchor>gga49a7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_curve_bounds_t</name>
+ <anchor>ga50</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_BOUNDS_RESCALE</name>
+ <anchor>gga50a8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_BOUNDS_CLIP</name>
+ <anchor>gga50a9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_CURVE_BOUNDS_ERROR</name>
+ <anchor>gga50a10</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_t *</type>
+ <name>stp_curve_create</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(stp_curve_wrap_mode_t wrap)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_t *</type>
+ <name>stp_curve_create_copy</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_curve_copy</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(stp_curve_t *dest, const stp_curve_t *source)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_curve_destroy</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_bounds</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(stp_curve_t *curve, double low, double high)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_curve_get_bounds</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(const stp_curve_t *curve, double *low, double *high)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_wrap_mode_t</type>
+ <name>stp_curve_get_wrap</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_is_piecewise</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_curve_get_range</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist>(const stp_curve_t *curve, double *low, double *high)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>stp_curve_count_points</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_interpolation_type</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist>(stp_curve_t *curve, stp_curve_type_t itype)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_type_t</type>
+ <name>stp_curve_get_interpolation_type</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga12</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga13</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const double *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_data_points</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga14</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const stp_curve_point_t *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_float_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga15</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const float *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_long_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga16</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const long *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_ulong_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga17</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const unsigned long *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_int_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga18</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const int *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_uint_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga19</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const unsigned int *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_short_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga20</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const short *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_ushort_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga21</anchor>
+ <arglist>(stp_curve_t *curve, size_t count, const unsigned short *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_t *</type>
+ <name>stp_curve_get_subrange</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga22</anchor>
+ <arglist>(const stp_curve_t *curve, size_t start, size_t count)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_subrange</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga23</anchor>
+ <arglist>(stp_curve_t *curve, const stp_curve_t *range, size_t start)</arglist>
+ </member>
+ <member kind="function">
+ <type>const double *</type>
+ <name>stp_curve_get_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga24</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_curve_point_t *</type>
+ <name>stp_curve_get_data_points</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga25</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const float *</type>
+ <name>stp_curve_get_float_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga26</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const long *</type>
+ <name>stp_curve_get_long_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga27</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const unsigned long *</type>
+ <name>stp_curve_get_ulong_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga28</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const int *</type>
+ <name>stp_curve_get_int_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga29</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const unsigned int *</type>
+ <name>stp_curve_get_uint_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga30</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const short *</type>
+ <name>stp_curve_get_short_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga31</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const unsigned short *</type>
+ <name>stp_curve_get_ushort_data</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga32</anchor>
+ <arglist>(const stp_curve_t *curve, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_sequence_t *</type>
+ <name>stp_curve_get_sequence</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga33</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_gamma</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga34</anchor>
+ <arglist>(stp_curve_t *curve, double f_gamma)</arglist>
+ </member>
+ <member kind="function">
+ <type>double</type>
+ <name>stp_curve_get_gamma</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga35</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_set_point</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga36</anchor>
+ <arglist>(stp_curve_t *curve, size_t where, double data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_get_point</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga37</anchor>
+ <arglist>(const stp_curve_t *curve, size_t where, double *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_interpolate_value</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga38</anchor>
+ <arglist>(const stp_curve_t *curve, double where, double *result)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_resample</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga39</anchor>
+ <arglist>(stp_curve_t *curve, size_t points)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_rescale</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga40</anchor>
+ <arglist>(stp_curve_t *curve, double scale, stp_curve_compose_t mode, stp_curve_bounds_t bounds_mode)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_write</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga41</anchor>
+ <arglist>(FILE *file, const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>char *</type>
+ <name>stp_curve_write_string</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga42</anchor>
+ <arglist>(const stp_curve_t *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_t *</type>
+ <name>stp_curve_create_from_stream</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga43</anchor>
+ <arglist>(FILE *fp)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_t *</type>
+ <name>stp_curve_create_from_file</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga44</anchor>
+ <arglist>(const char *file)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_t *</type>
+ <name>stp_curve_create_from_string</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga45</anchor>
+ <arglist>(const char *string)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_curve_compose</name>
+ <anchorfile>group__curve.html</anchorfile>
+ <anchor>ga46</anchor>
+ <arglist>(stp_curve_t **retval, stp_curve_t *a, stp_curve_t *b, stp_curve_compose_t mode, int points)</arglist>
+ </member>
+ </compound>
+ <compound kind="group">
+ <name>intl_internal</name>
+ <title>intl-internal</title>
+ <filename>group__intl__internal.html</filename>
+ <member kind="define">
+ <type>#define</type>
+ <name>textdomain</name>
+ <anchorfile>group__intl__internal.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist>(String)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>gettext</name>
+ <anchorfile>group__intl__internal.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(String)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>dgettext</name>
+ <anchorfile>group__intl__internal.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(Domain, Message)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>dcgettext</name>
+ <anchorfile>group__intl__internal.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(Domain, Message, Type)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>bindtextdomain</name>
+ <anchorfile>group__intl__internal.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(Domain, Directory)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>_</name>
+ <anchorfile>group__intl__internal.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(String)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>N_</name>
+ <anchorfile>group__intl__internal.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(String)</arglist>
+ </member>
+ </compound>
+ <compound kind="group">
+ <name>intl</name>
+ <title>intl</title>
+ <filename>group__intl.html</filename>
+ <member kind="define">
+ <type>#define</type>
+ <name>textdomain</name>
+ <anchorfile>group__intl.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist>(String)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>gettext</name>
+ <anchorfile>group__intl.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(String)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>dgettext</name>
+ <anchorfile>group__intl.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(Domain, Message)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>dcgettext</name>
+ <anchorfile>group__intl.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(Domain, Message, Type)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>bindtextdomain</name>
+ <anchorfile>group__intl.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(Domain, Directory)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>_</name>
+ <anchorfile>group__intl.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(String)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>N_</name>
+ <anchorfile>group__intl.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(String)</arglist>
+ </member>
+ </compound>
+ <compound kind="group">
+ <name>version</name>
+ <title>version</title>
+ <filename>group__version.html</filename>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MAJOR_VERSION</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MINOR_VERSION</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_MICRO_VERSION</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_CURRENT_INTERFACE</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_BINARY_AGE</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_INTERFACE_AGE</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga12</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_CHECK_VERSION</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga13</anchor>
+ <arglist>(major, minor, micro)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_check_version</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(unsigned int required_major, unsigned int required_minor, unsigned int required_micro)</arglist>
+ </member>
+ <member kind="variable">
+ <type>const unsigned int</type>
+ <name>stp_major_version</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const unsigned int</type>
+ <name>stp_minor_version</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const unsigned int</type>
+ <name>stp_micro_version</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const unsigned int</type>
+ <name>stp_current_interface</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const unsigned int</type>
+ <name>stp_binary_age</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>const unsigned int</type>
+ <name>stp_interface_age</name>
+ <anchorfile>group__version.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="group">
+ <name>image</name>
+ <title>image</title>
+ <filename>group__image.html</filename>
+ <class kind="struct">stp_image</class>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_CHANNEL_LIMIT</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_image</type>
+ <name>stp_image_t</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_image_status_t</name>
+ <anchor>ga9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_IMAGE_STATUS_OK</name>
+ <anchor>gga9a2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_IMAGE_STATUS_ABORT</name>
+ <anchor>gga9a3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_image_init</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(stp_image_t *image)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_image_reset</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(stp_image_t *image)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_image_width</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(stp_image_t *image)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_image_height</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(stp_image_t *image)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_image_status_t</type>
+ <name>stp_image_get_row</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(stp_image_t *image, unsigned char *data, size_t limit, int row)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_image_get_appname</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(stp_image_t *image)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_image_conclude</name>
+ <anchorfile>group__image.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(stp_image_t *image)</arglist>
+ </member>
+ </compound>
+ <compound kind="group">
+ <name>list</name>
+ <title>list</title>
+ <filename>group__list.html</filename>
+ <member kind="typedef">
+ <type>stp_list_item</type>
+ <name>stp_list_item_t</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_list</type>
+ <name>stp_list_t</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>void(*</type>
+ <name>stp_node_freefunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>)(void *)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>void *(*</type>
+ <name>stp_node_copyfunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>)(const void *)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>const char *(*</type>
+ <name>stp_node_namefunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>)(const void *)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>int(*</type>
+ <name>stp_node_sortfunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>)(const void *, const void *)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_list_node_free_data</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(void *item)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_t *</type>
+ <name>stp_list_create</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_t *</type>
+ <name>stp_list_copy</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_list_destroy</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist>(stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_item_t *</type>
+ <name>stp_list_get_start</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_item_t *</type>
+ <name>stp_list_get_end</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_item_t *</type>
+ <name>stp_list_get_item_by_index</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga12</anchor>
+ <arglist>(const stp_list_t *list, int idx)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_item_t *</type>
+ <name>stp_list_get_item_by_name</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga13</anchor>
+ <arglist>(const stp_list_t *list, const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_item_t *</type>
+ <name>stp_list_get_item_by_long_name</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga14</anchor>
+ <arglist>(const stp_list_t *list, const char *long_name)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_list_get_length</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga15</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_list_set_freefunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga16</anchor>
+ <arglist>(stp_list_t *list, stp_node_freefunc freefunc)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_node_freefunc</type>
+ <name>stp_list_get_freefunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga17</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_list_set_copyfunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga18</anchor>
+ <arglist>(stp_list_t *list, stp_node_copyfunc copyfunc)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_node_copyfunc</type>
+ <name>stp_list_get_copyfunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga19</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_list_set_namefunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga20</anchor>
+ <arglist>(stp_list_t *list, stp_node_namefunc namefunc)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_node_namefunc</type>
+ <name>stp_list_get_namefunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga21</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_list_set_long_namefunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga22</anchor>
+ <arglist>(stp_list_t *list, stp_node_namefunc long_namefunc)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_node_namefunc</type>
+ <name>stp_list_get_long_namefunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga23</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_list_set_sortfunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga24</anchor>
+ <arglist>(stp_list_t *list, stp_node_sortfunc sortfunc)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_node_sortfunc</type>
+ <name>stp_list_get_sortfunc</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga25</anchor>
+ <arglist>(const stp_list_t *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_list_item_create</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga26</anchor>
+ <arglist>(stp_list_t *list, stp_list_item_t *next, const void *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_list_item_destroy</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga27</anchor>
+ <arglist>(stp_list_t *list, stp_list_item_t *item)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_item_t *</type>
+ <name>stp_list_item_prev</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga28</anchor>
+ <arglist>(const stp_list_item_t *item)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_list_item_t *</type>
+ <name>stp_list_item_next</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga29</anchor>
+ <arglist>(const stp_list_item_t *item)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>stp_list_item_get_data</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga30</anchor>
+ <arglist>(const stp_list_item_t *item)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_list_item_set_data</name>
+ <anchorfile>group__list.html</anchorfile>
+ <anchor>ga31</anchor>
+ <arglist>(stp_list_item_t *item, void *data)</arglist>
+ </member>
+ </compound>
+ <compound kind="group">
+ <name>papersize</name>
+ <title>papersize</title>
+ <filename>group__papersize.html</filename>
+ <class kind="struct">stp_papersize_t</class>
+ <member kind="enumeration">
+ <name>stp_papersize_unit_t</name>
+ <anchor>ga5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>PAPERSIZE_ENGLISH_STANDARD</name>
+ <anchor>gga5a0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>PAPERSIZE_METRIC_STANDARD</name>
+ <anchor>gga5a1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>PAPERSIZE_ENGLISH_EXTENDED</name>
+ <anchor>gga5a2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>PAPERSIZE_METRIC_EXTENDED</name>
+ <anchor>gga5a3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_known_papersizes</name>
+ <anchorfile>group__papersize.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_papersize_t *</type>
+ <name>stp_get_papersize_by_name</name>
+ <anchorfile>group__papersize.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_papersize_t *</type>
+ <name>stp_get_papersize_by_size</name>
+ <anchorfile>group__papersize.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(int length, int width)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_papersize_t *</type>
+ <name>stp_get_papersize_by_index</name>
+ <anchorfile>group__papersize.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(int idx)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_default_media_size</name>
+ <anchorfile>group__papersize.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(const stp_vars_t *v, int *width, int *height)</arglist>
+ </member>
+ </compound>
+ <compound kind="group">
+ <name>printer</name>
+ <title>printer</title>
+ <filename>group__printer.html</filename>
+ <class kind="struct">stp_printfuncs_t</class>
+ <class kind="struct">stp_family</class>
+ <member kind="typedef">
+ <type>stp_printer</type>
+ <name>stp_printer_t</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_family</type>
+ <name>stp_family_t</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_printer_model_count</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_printer_t *</type>
+ <name>stp_get_printer_by_index</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(int idx)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_printer_t *</type>
+ <name>stp_get_printer_by_long_name</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(const char *long_name)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_printer_t *</type>
+ <name>stp_get_printer_by_driver</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(const char *driver)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_printer_t *</type>
+ <name>stp_get_printer</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_printer_index_by_driver</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(const char *driver)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_printer_get_long_name</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist>(const stp_printer_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_printer_get_driver</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist>(const stp_printer_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_printer_get_family</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist>(const stp_printer_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_printer_get_manufacturer</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist>(const stp_printer_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_printer_get_model</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga12</anchor>
+ <arglist>(const stp_printer_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_vars_t *</type>
+ <name>stp_printer_get_defaults</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga13</anchor>
+ <arglist>(const stp_printer_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_printer_defaults</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga14</anchor>
+ <arglist>(stp_vars_t *v, const stp_printer_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_print</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga15</anchor>
+ <arglist>(const stp_vars_t *v, stp_image_t *image)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_start_job</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga16</anchor>
+ <arglist>(const stp_vars_t *v, stp_image_t *image)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_end_job</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga17</anchor>
+ <arglist>(const stp_vars_t *v, stp_image_t *image)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_model_id</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga18</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_verify_printer_params</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga19</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_family_register</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga20</anchor>
+ <arglist>(stp_list_t *family)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_family_unregister</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga21</anchor>
+ <arglist>(stp_list_t *family)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_initialize_printer_defaults</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga22</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_list_t</type>
+ <name>stp_printer_list_parameters</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga23</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_printer_describe_parameter</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga24</anchor>
+ <arglist>(const stp_vars_t *v, const char *name, stp_parameter_t *description)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_describe_output</name>
+ <anchorfile>group__printer.html</anchorfile>
+ <anchor>ga25</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ </compound>
+ <compound kind="group">
+ <name>sequence</name>
+ <title>sequence</title>
+ <filename>group__sequence.html</filename>
+ <member kind="typedef">
+ <type>stp_sequence</type>
+ <name>stp_sequence_t</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>stp_sequence_t *</type>
+ <name>stp_sequence_create</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_sequence_destroy</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(stp_sequence_t *sequence)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_sequence_copy</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(stp_sequence_t *dest, const stp_sequence_t *source)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_sequence_t *</type>
+ <name>stp_sequence_create_copy</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(const stp_sequence_t *sequence)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_bounds</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(stp_sequence_t *sequence, double low, double high)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_sequence_get_bounds</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(const stp_sequence_t *sequence, double *low, double *high)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_sequence_get_range</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(const stp_sequence_t *sequence, double *low, double *high)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_size</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t size)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>stp_sequence_get_size</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist>(const stp_sequence_t *sequence)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t count, const double *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_subrange</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t where, size_t size, const double *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_sequence_get_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga12</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t *size, const double **data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_point</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga13</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t where, double data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_get_point</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga14</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t where, double *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_float_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga15</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t count, const float *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_long_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga16</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t count, const long *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_ulong_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga17</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t count, const unsigned long *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_int_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga18</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t count, const int *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_uint_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga19</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t count, const unsigned int *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_short_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga20</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t count, const short *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_sequence_set_ushort_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga21</anchor>
+ <arglist>(stp_sequence_t *sequence, size_t count, const unsigned short *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>const float *</type>
+ <name>stp_sequence_get_float_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga22</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const long *</type>
+ <name>stp_sequence_get_long_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga23</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const unsigned long *</type>
+ <name>stp_sequence_get_ulong_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga24</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const int *</type>
+ <name>stp_sequence_get_int_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga25</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const unsigned int *</type>
+ <name>stp_sequence_get_uint_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga26</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const short *</type>
+ <name>stp_sequence_get_short_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga27</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t *count)</arglist>
+ </member>
+ <member kind="function">
+ <type>const unsigned short *</type>
+ <name>stp_sequence_get_ushort_data</name>
+ <anchorfile>group__sequence.html</anchorfile>
+ <anchor>ga28</anchor>
+ <arglist>(const stp_sequence_t *sequence, size_t *count)</arglist>
+ </member>
+ </compound>
+ <compound kind="group">
+ <name>util</name>
+ <title>util</title>
+ <filename>group__util.html</filename>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_LUT</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga33</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_COLORFUNC</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga34</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_INK</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga35</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_PS</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga36</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_PCL</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga37</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_ESCP2</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga38</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_CANON</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga39</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_LEXMARK</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga40</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_WEAVE_PARAMS</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga41</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_ROWS</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga42</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_MARK_FILE</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga43</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_LIST</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga44</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_MODULE</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga45</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_PATH</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga46</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_PAPER</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga47</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_PRINTERS</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga48</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_XML</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga49</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_VARS</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga50</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_OLYMPUS</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga51</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_CURVE</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga52</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_DBG_CURVE_ERRORS</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga53</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STP_SAFE_FREE</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga54</anchor>
+ <arglist>(x)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_init</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_set_output_codeset</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist>(const char *codeset)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_curve_t *</type>
+ <name>stp_read_and_compose_curves</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist>(const char *s1, const char *s2, stp_curve_compose_t comp, size_t piecewise_point_count)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_abort</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_prune_inactive_options</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_zprintf</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>(const stp_vars_t *v, const char *format,...) __attribute__((format(__printf__</arglist>
+ </member>
+ <member kind="function">
+ <type>void void</type>
+ <name>stp_zfwrite</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist>(const char *buf, size_t bytes, size_t nitems, const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_putc</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(int ch, const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_put16_le</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist>(unsigned short sh, const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_put16_be</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist>(unsigned short sh, const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_put32_le</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist>(unsigned int sh, const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_put32_be</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist>(unsigned int sh, const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_puts</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga12</anchor>
+ <arglist>(const char *s, const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_send_command</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga13</anchor>
+ <arglist>(const stp_vars_t *v, const char *command, const char *format,...)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_erputc</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga14</anchor>
+ <arglist>(int ch)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_eprintf</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga15</anchor>
+ <arglist>(const stp_vars_t *v, const char *format,...) __attribute__((format(__printf__</arglist>
+ </member>
+ <member kind="function">
+ <type>void void</type>
+ <name>stp_erprintf</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga16</anchor>
+ <arglist>(const char *format,...) __attribute__((format(__printf__</arglist>
+ </member>
+ <member kind="function">
+ <type>void void void</type>
+ <name>stp_asprintf</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga17</anchor>
+ <arglist>(char **strp, const char *format,...) __attribute__((format(__printf__</arglist>
+ </member>
+ <member kind="function">
+ <type>void void void void</type>
+ <name>stp_catprintf</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga18</anchor>
+ <arglist>(char **strp, const char *format,...) __attribute__((format(__printf__</arglist>
+ </member>
+ <member kind="function">
+ <type>unsigned long</type>
+ <name>stp_get_debug_level</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga19</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_dprintf</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga20</anchor>
+ <arglist>(unsigned long level, const stp_vars_t *v, const char *format,...) __attribute__((format(__printf__</arglist>
+ </member>
+ <member kind="function">
+ <type>void void</type>
+ <name>stp_deprintf</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga21</anchor>
+ <arglist>(unsigned long level, const char *format,...) __attribute__((format(__printf__</arglist>
+ </member>
+ <member kind="function">
+ <type>void void void</type>
+ <name>stp_init_debug_messages</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga22</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_flush_debug_messages</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga23</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>stp_malloc</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga24</anchor>
+ <arglist>(size_t)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>stp_zalloc</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga25</anchor>
+ <arglist>(size_t)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>stp_realloc</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga26</anchor>
+ <arglist>(void *ptr, size_t)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_free</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga27</anchor>
+ <arglist>(void *ptr)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>stp_strlen</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga28</anchor>
+ <arglist>(const char *s)</arglist>
+ </member>
+ <member kind="function">
+ <type>char *</type>
+ <name>stp_strndup</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga29</anchor>
+ <arglist>(const char *s, int n)</arglist>
+ </member>
+ <member kind="function">
+ <type>char *</type>
+ <name>stp_strdup</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga30</anchor>
+ <arglist>(const char *s)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_get_version</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga31</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_get_release_version</name>
+ <anchorfile>group__util.html</anchorfile>
+ <anchor>ga32</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ </compound>
+ <compound kind="group">
+ <name>vars</name>
+ <title>vars</title>
+ <filename>group__vars.html</filename>
+ <class kind="struct">stp_raw_t</class>
+ <class kind="struct">stp_double_bound_t</class>
+ <class kind="struct">stp_int_bound_t</class>
+ <class kind="struct">stp_parameter_t</class>
+ <member kind="typedef">
+ <type>stp_vars</type>
+ <name>stp_vars_t</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>void *</type>
+ <name>stp_parameter_list_t</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>const void *</type>
+ <name>stp_const_parameter_list_t</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>void(*</type>
+ <name>stp_outfunc_t</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga3</anchor>
+ <arglist>)(void *data, const char *buffer, size_t bytes)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>void *(*</type>
+ <name>stp_copy_data_func_t</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga4</anchor>
+ <arglist>)(void *)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>void(*</type>
+ <name>stp_free_data_func_t</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga5</anchor>
+ <arglist>)(void *)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>stp_compdata</type>
+ <name>compdata_t</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga6</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_parameter_type_t</name>
+ <anchor>ga132</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_STRING_LIST</name>
+ <anchor>gga132a7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_INT</name>
+ <anchor>gga132a8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_BOOLEAN</name>
+ <anchor>gga132a9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_DOUBLE</name>
+ <anchor>gga132a10</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_CURVE</name>
+ <anchor>gga132a11</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_FILE</name>
+ <anchor>gga132a12</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_RAW</name>
+ <anchor>gga132a13</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_ARRAY</name>
+ <anchor>gga132a14</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_DIMENSION</name>
+ <anchor>gga132a15</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_TYPE_INVALID</name>
+ <anchor>gga132a16</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_parameter_class_t</name>
+ <anchor>ga133</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_CLASS_FEATURE</name>
+ <anchor>gga133a17</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_CLASS_OUTPUT</name>
+ <anchor>gga133a18</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_CLASS_CORE</name>
+ <anchor>gga133a19</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_CLASS_INVALID</name>
+ <anchor>gga133a20</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_parameter_level_t</name>
+ <anchor>ga134</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_BASIC</name>
+ <anchor>gga134a21</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_ADVANCED</name>
+ <anchor>gga134a22</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_ADVANCED1</name>
+ <anchor>gga134a23</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_ADVANCED2</name>
+ <anchor>gga134a24</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_ADVANCED3</name>
+ <anchor>gga134a25</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_ADVANCED4</name>
+ <anchor>gga134a26</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_INTERNAL</name>
+ <anchor>gga134a27</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_EXTERNAL</name>
+ <anchor>gga134a28</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_LEVEL_INVALID</name>
+ <anchor>gga134a29</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_parameter_activity_t</name>
+ <anchor>ga135</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_INACTIVE</name>
+ <anchor>gga135a30</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_DEFAULTED</name>
+ <anchor>gga135a31</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STP_PARAMETER_ACTIVE</name>
+ <anchor>gga135a32</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>stp_parameter_verify_t</name>
+ <anchor>ga136</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>PARAMETER_BAD</name>
+ <anchor>gga136a33</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>PARAMETER_OK</name>
+ <anchor>gga136a34</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>PARAMETER_INACTIVE</name>
+ <anchor>gga136a35</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>stp_vars_t *</type>
+ <name>stp_vars_create</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga7</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_vars_copy</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga8</anchor>
+ <arglist>(stp_vars_t *dest, const stp_vars_t *source)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_vars_t *</type>
+ <name>stp_vars_create_copy</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga9</anchor>
+ <arglist>(const stp_vars_t *source)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_vars_destroy</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga10</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_driver</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga11</anchor>
+ <arglist>(stp_vars_t *v, const char *val)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_driver_n</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga12</anchor>
+ <arglist>(stp_vars_t *v, const char *val, int bytes)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_get_driver</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga13</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_color_conversion</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga14</anchor>
+ <arglist>(stp_vars_t *v, const char *val)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_color_conversion_n</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga15</anchor>
+ <arglist>(stp_vars_t *v, const char *val, int bytes)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_get_color_conversion</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga16</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_left</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga17</anchor>
+ <arglist>(stp_vars_t *v, int val)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_left</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga18</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_top</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga19</anchor>
+ <arglist>(stp_vars_t *v, int val)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_top</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga20</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_width</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga21</anchor>
+ <arglist>(stp_vars_t *v, int val)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_width</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga22</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_height</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga23</anchor>
+ <arglist>(stp_vars_t *v, int val)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_height</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga24</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_page_width</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga25</anchor>
+ <arglist>(stp_vars_t *v, int val)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_page_width</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga26</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_page_height</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga27</anchor>
+ <arglist>(stp_vars_t *v, int val)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_page_height</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga28</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_outfunc</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga29</anchor>
+ <arglist>(stp_vars_t *v, stp_outfunc_t val)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_outfunc_t</type>
+ <name>stp_get_outfunc</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga30</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_errfunc</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga31</anchor>
+ <arglist>(stp_vars_t *v, stp_outfunc_t val)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_outfunc_t</type>
+ <name>stp_get_errfunc</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga32</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_outdata</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga33</anchor>
+ <arglist>(stp_vars_t *v, void *val)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>stp_get_outdata</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga34</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_errdata</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga35</anchor>
+ <arglist>(stp_vars_t *v, void *val)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>stp_get_errdata</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga36</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_merge_printvars</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga37</anchor>
+ <arglist>(stp_vars_t *user, const stp_vars_t *print)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_list_t</type>
+ <name>stp_get_parameter_list</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga38</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>stp_parameter_list_count</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga39</anchor>
+ <arglist>(stp_const_parameter_list_t list)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_parameter_t *</type>
+ <name>stp_parameter_find</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga40</anchor>
+ <arglist>(stp_const_parameter_list_t list, const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_parameter_t *</type>
+ <name>stp_parameter_list_param</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga41</anchor>
+ <arglist>(stp_const_parameter_list_t list, size_t item)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_parameter_list_destroy</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga42</anchor>
+ <arglist>(stp_parameter_list_t list)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_list_t</type>
+ <name>stp_parameter_list_create</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga43</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_parameter_list_add_param</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga44</anchor>
+ <arglist>(stp_parameter_list_t list, const stp_parameter_t *item)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_list_t</type>
+ <name>stp_parameter_list_copy</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga45</anchor>
+ <arglist>(stp_const_parameter_list_t list)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_parameter_list_append</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga46</anchor>
+ <arglist>(stp_parameter_list_t list, stp_const_parameter_list_t append)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_describe_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga47</anchor>
+ <arglist>(const stp_vars_t *v, const char *name, stp_parameter_t *description)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_parameter_description_destroy</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga48</anchor>
+ <arglist>(stp_parameter_t *description)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_parameter_t *</type>
+ <name>stp_parameter_find_in_settings</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga49</anchor>
+ <arglist>(const stp_vars_t *v, const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_string_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga50</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const char *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_string_parameter_n</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga51</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const char *value, size_t bytes)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_file_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga52</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const char *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_file_parameter_n</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga53</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const char *value, size_t bytes)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_float_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga54</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, double value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_int_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga55</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, int value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_dimension_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga56</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, int value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_boolean_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga57</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, int value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_curve_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga58</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const stp_curve_t *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_array_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga59</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const stp_array_t *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_raw_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga60</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const void *value, size_t bytes)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_scale_float_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga61</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, double scale)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_string_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga62</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const char *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_string_parameter_n</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga63</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const char *value, size_t bytes)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_file_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga64</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const char *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_file_parameter_n</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga65</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const char *value, size_t bytes)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_float_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga66</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, double value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_int_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga67</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, int value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_dimension_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga68</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, int value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_boolean_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga69</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, int value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_curve_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga70</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const stp_curve_t *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_array_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga71</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const stp_array_t *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_default_raw_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga72</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter, const void *value, size_t bytes)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_get_string_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga73</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stp_get_file_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga74</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>double</type>
+ <name>stp_get_float_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga75</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_int_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga76</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_dimension_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga77</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_boolean_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga78</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_curve_t *</type>
+ <name>stp_get_curve_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga79</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_array_t *</type>
+ <name>stp_get_array_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga80</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_raw_t *</type>
+ <name>stp_get_raw_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga81</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_string_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga82</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_file_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga83</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_float_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga84</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_int_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga85</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_dimension_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga86</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_boolean_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga87</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_curve_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga88</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_array_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga89</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_clear_raw_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga90</anchor>
+ <arglist>(stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_string_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga91</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_file_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga92</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_float_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga93</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_int_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga94</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_dimension_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga95</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_boolean_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga96</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_curve_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga97</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_array_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga98</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_raw_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga99</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_string_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga100</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_file_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga101</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_float_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga102</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_int_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga103</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_dimension_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga104</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_boolean_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga105</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_curve_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga106</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_array_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga107</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_check_raw_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga108</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_string_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga109</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_file_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga110</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_float_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga111</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_int_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga112</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_dimension_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga113</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_boolean_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga114</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_curve_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga115</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_array_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga116</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_activity_t</type>
+ <name>stp_get_raw_parameter_active</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga117</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_get_media_size</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga118</anchor>
+ <arglist>(const stp_vars_t *v, int *width, int *height)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_get_imageable_area</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga119</anchor>
+ <arglist>(const stp_vars_t *v, int *left, int *right, int *bottom, int *top)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_get_size_limit</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga120</anchor>
+ <arglist>(const stp_vars_t *v, int *max_width, int *max_height, int *min_width, int *min_height)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_describe_resolution</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga121</anchor>
+ <arglist>(const stp_vars_t *v, int *x, int *y)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_verify</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga122</anchor>
+ <arglist>(stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stp_vars_t *</type>
+ <name>stp_default_settings</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga123</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_allocate_component_data</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga124</anchor>
+ <arglist>(stp_vars_t *v, const char *name, stp_copy_data_func_t copyfunc, stp_free_data_func_t freefunc, void *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_destroy_component_data</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga125</anchor>
+ <arglist>(stp_vars_t *v, const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>stp_get_component_data</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga126</anchor>
+ <arglist>(const stp_vars_t *v, const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_parameter_verify_t</type>
+ <name>stp_verify_parameter</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga127</anchor>
+ <arglist>(const stp_vars_t *v, const char *parameter, int quiet)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stp_get_verified</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga128</anchor>
+ <arglist>(const stp_vars_t *v)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_set_verified</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga129</anchor>
+ <arglist>(stp_vars_t *v, int value)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_copy_options</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga130</anchor>
+ <arglist>(stp_vars_t *vd, const stp_vars_t *vs)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stp_fill_parameter_settings</name>
+ <anchorfile>group__vars.html</anchorfile>
+ <anchor>ga131</anchor>
+ <arglist>(stp_parameter_t *desc, const stp_parameter_t *param)</arglist>
+ </member>
+ </compound>
+ <compound kind="dir">
+ <name>include/gutenprint/</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprint/</path>
+ <filename>dir_000001.html</filename>
+ <file>array.h</file>
+ <file>bit-ops.h</file>
+ <file>channel.h</file>
+ <file>color.h</file>
+ <file>curve-cache.h</file>
+ <file>curve.h</file>
+ <file>dither.h</file>
+ <file>gutenprint-intl-internal.h</file>
+ <file>gutenprint-intl.h</file>
+ <file>gutenprint-module.h</file>
+ <file>gutenprint-version.h</file>
+ <file>gutenprint.h</file>
+ <file>image.h</file>
+ <file>list.h</file>
+ <file>module.h</file>
+ <file>mxml.h</file>
+ <file>paper.h</file>
+ <file>path.h</file>
+ <file>printers.h</file>
+ <file>sequence.h</file>
+ <file>string-list.h</file>
+ <file>util.h</file>
+ <file>vars.h</file>
+ <file>weave.h</file>
+ <file>xml.h</file>
+ </compound>
+ <compound kind="dir">
+ <name>include/</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/</path>
+ <filename>dir_000000.html</filename>
+ <dir>include/gutenprint/</dir>
+ </compound>
+</tagfile>
diff --git a/doc/gutenprint/html/annotated.html b/doc/gutenprint/html/annotated.html
new file mode 100644
index 0000000..c53689d
--- /dev/null
+++ b/doc/gutenprint/html/annotated.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Structures</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindexHL" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>libgutenprint API Reference Data Structures</h1>Here are the data structures with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="structdither__matrix__impl.html">dither_matrix_impl</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__color.html">stp_color</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__colorfuncs__t.html">stp_colorfuncs_t</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a></td><td class="indexvalue">Point (x,y) for piecewise curve </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__dither__matrix__generic.html">stp_dither_matrix_generic</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__dither__matrix__normal.html">stp_dither_matrix_normal</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__dither__matrix__short.html">stp_dither_matrix_short</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__dotsize.html">stp_dotsize</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__double__bound__t.html">stp_double_bound_t</a></td><td class="indexvalue">Double_bound (range) parameter </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__family.html">stp_family</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__image.html">stp_image</a></td><td class="indexvalue">The image type is an abstract data type for interfacing with the image creation program </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__int__bound__t.html">stp_int_bound_t</a></td><td class="indexvalue">Int_bound (range) parameter </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__lineactive__t.html">stp_lineactive_t</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__linebounds__t.html">stp_linebounds_t</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__linebufs__t.html">stp_linebufs_t</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__linecount__t.html">stp_linecount_t</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__lineoff__t.html">stp_lineoff_t</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__module.html">stp_module</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__module__version.html">stp_module_version</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__mxml__attr__s.html">stp_mxml_attr_s</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_s</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__mxml__text__s.html">stp_mxml_text_s</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__mxml__value__s.html">stp_mxml_value_s</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="unionstp__mxml__value__u.html">stp_mxml_value_u</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__papersize__t.html">stp_papersize_t</a></td><td class="indexvalue">The papersize data type </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__param__string__t.html">stp_param_string_t</a></td><td class="indexvalue">String parameter </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__parameter__t.html">stp_parameter_t</a></td><td class="indexvalue">Parameter description </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__pass__t.html">stp_pass_t</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__printfuncs__t.html">stp_printfuncs_t</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__raw__t.html">stp_raw_t</a></td><td class="indexvalue">Raw parameter </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__shade.html">stp_shade</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstp__weave__t.html">stp_weave_t</a></td><td class="indexvalue"></td></tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/array_8h.html b/doc/gutenprint/html/array_8h.html
new file mode 100644
index 0000000..dcfacd7
--- /dev/null
+++ b/doc/gutenprint/html/array_8h.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/array.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>array.h File Reference</h1>Array functions. <a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="sequence_8h.html">gutenprint/sequence.h</a>&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_array&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga0">stp_array_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The array opaque data type. <a href="group__array.html#ga0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga1">stp_array_create</a> (int x_size, int y_size)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new array. <a href="group__array.html#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga2">stp_array_destroy</a> (<a class="el" href="group__array.html#ga0">stp_array_t</a> *array)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy an array. <a href="group__array.html#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga3">stp_array_copy</a> (<a class="el" href="group__array.html#ga0">stp_array_t</a> *dest, const <a class="el" href="group__array.html#ga0">stp_array_t</a> *source)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy an array. <a href="group__array.html#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga4">stp_array_create_copy</a> (const <a class="el" href="group__array.html#ga0">stp_array_t</a> *array)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy and allocate an array. <a href="group__array.html#ga4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga5">stp_array_set_size</a> (<a class="el" href="group__array.html#ga0">stp_array_t</a> *array, int x_size, int y_size)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Resize an array. <a href="group__array.html#ga5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga6">stp_array_get_size</a> (const <a class="el" href="group__array.html#ga0">stp_array_t</a> *array, int *x_size, int *y_size)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the size of an array. <a href="group__array.html#ga6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga7">stp_array_set_data</a> (<a class="el" href="group__array.html#ga0">stp_array_t</a> *array, const double *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in an array. <a href="group__array.html#ga7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga8">stp_array_get_data</a> (const <a class="el" href="group__array.html#ga0">stp_array_t</a> *array, size_t *size, const double **data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in an array. <a href="group__array.html#ga8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga9">stp_array_set_point</a> (<a class="el" href="group__array.html#ga0">stp_array_t</a> *array, int x, int y, double data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data at a single point in the array. <a href="group__array.html#ga9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga10">stp_array_get_point</a> (const <a class="el" href="group__array.html#ga0">stp_array_t</a> *array, int x, int y, double *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data at a single point in the array. <a href="group__array.html#ga10"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga11">stp_array_get_sequence</a> (const <a class="el" href="group__array.html#ga0">stp_array_t</a> *array)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the underlying stp_sequence_t. <a href="group__array.html#ga11"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Array functions.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/bit-ops_8h.html b/doc/gutenprint/html/bit-ops_8h.html
new file mode 100644
index 0000000..379f26d
--- /dev/null
+++ b/doc/gutenprint/html/bit-ops_8h.html
@@ -0,0 +1,555 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/bit-ops.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>bit-ops.h File Reference</h1>Bit operations. <a href="#_details">More...</a>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#a0">stp_fold</a> (const unsigned char *line, int single_height, unsigned char *outbuf)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#a1">stp_split_2</a> (int height, int bits, const unsigned char *in, unsigned char *outhi, unsigned char *outlo)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#a2">stp_split_4</a> (int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#a3">stp_unpack_2</a> (int height, int bits, const unsigned char *in, unsigned char *outlo, unsigned char *outhi)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#a4">stp_unpack_4</a> (int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#a5">stp_unpack_8</a> (int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3, unsigned char *out4, unsigned char *out5, unsigned char *out6, unsigned char *out7)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#a6">stp_unpack_16</a> (int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3, unsigned char *out4, unsigned char *out5, unsigned char *out6, unsigned char *out7, unsigned char *out8, unsigned char *out9, unsigned char *out10, unsigned char *out11, unsigned char *out12, unsigned char *out13, unsigned char *out14, unsigned char *out15)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Bit operations.
+<p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a0"></a><!-- doxytag: member="bit-ops.h::stp_fold" ref="a0" args="(const unsigned char *line, int single_height, unsigned char *outbuf)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_fold </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>line</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>single_height</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>outbuf</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a1"></a><!-- doxytag: member="bit-ops.h::stp_split_2" ref="a1" args="(int height, int bits, const unsigned char *in, unsigned char *outhi, unsigned char *outlo)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_split_2 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname" nowrap> <em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>bits</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>outhi</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>outlo</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a2"></a><!-- doxytag: member="bit-ops.h::stp_split_4" ref="a2" args="(int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_split_4 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname" nowrap> <em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>bits</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out0</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out1</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out2</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out3</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a6"></a><!-- doxytag: member="bit-ops.h::stp_unpack_16" ref="a6" args="(int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3, unsigned char *out4, unsigned char *out5, unsigned char *out6, unsigned char *out7, unsigned char *out8, unsigned char *out9, unsigned char *out10, unsigned char *out11, unsigned char *out12, unsigned char *out13, unsigned char *out14, unsigned char *out15)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_unpack_16 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname" nowrap> <em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>bits</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out0</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out1</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out2</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out3</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out4</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out5</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out6</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out7</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out8</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out9</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out10</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out11</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out12</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out13</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out14</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out15</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a3"></a><!-- doxytag: member="bit-ops.h::stp_unpack_2" ref="a3" args="(int height, int bits, const unsigned char *in, unsigned char *outlo, unsigned char *outhi)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_unpack_2 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname" nowrap> <em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>bits</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>outlo</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>outhi</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a4"></a><!-- doxytag: member="bit-ops.h::stp_unpack_4" ref="a4" args="(int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_unpack_4 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname" nowrap> <em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>bits</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out0</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out1</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out2</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out3</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a5"></a><!-- doxytag: member="bit-ops.h::stp_unpack_8" ref="a5" args="(int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3, unsigned char *out4, unsigned char *out5, unsigned char *out6, unsigned char *out7)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_unpack_8 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname" nowrap> <em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>bits</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out0</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out1</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out2</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out3</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out4</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out5</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out6</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out7</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/channel_8h.html b/doc/gutenprint/html/channel_8h.html
new file mode 100644
index 0000000..18ef67d
--- /dev/null
+++ b/doc/gutenprint/html/channel_8h.html
@@ -0,0 +1,885 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/channel.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>channel.h File Reference</h1>Channel functions. <a href="#_details">More...</a>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a0">stp_channel_reset</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a1">stp_channel_reset_channel</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int channel)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a2">stp_channel_add</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, unsigned channel, unsigned subchannel, double value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a3">stp_channel_get_value</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, unsigned channel, unsigned subchannel)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a4">stp_channel_set_density_adjustment</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int color, int subchannel, double adjustment)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a5">stp_channel_get_density_adjustment</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int color, int subchannel)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a6">stp_channel_set_ink_limit</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, double limit)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a7">stp_channel_get_ink_limit</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a8">stp_channel_set_cutoff_adjustment</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int color, int subchannel, double adjustment)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a9">stp_channel_get_cutoff_adjustment</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int color, int subchannel)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a10">stp_channel_set_black_channel</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int channel)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a11">stp_channel_get_black_channel</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a12">stp_channel_set_gloss_channel</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int channel)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a13">stp_channel_get_gloss_channel</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a14">stp_channel_set_gloss_limit</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, double limit)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a15">stp_channel_get_gloss_limit</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a16">stp_channel_set_curve</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int channel, const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a17">stp_channel_get_curve</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int channel)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a18">stp_channel_initialize</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image, int input_channel_count)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a19">stp_channel_convert</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, unsigned *zero_mask)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned short *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a20">stp_channel_get_input</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned short *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a21">stp_channel_get_output</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Channel functions.
+<p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a2"></a><!-- doxytag: member="channel.h::stp_channel_add" ref="a2" args="(stp_vars_t *v, unsigned channel, unsigned subchannel, double value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_channel_add </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned&nbsp;</td>
+ <td class="mdname" nowrap> <em>channel</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned&nbsp;</td>
+ <td class="mdname" nowrap> <em>subchannel</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a19"></a><!-- doxytag: member="channel.h::stp_channel_convert" ref="a19" args="(const stp_vars_t *v, unsigned *zero_mask)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_channel_convert </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned *&nbsp;</td>
+ <td class="mdname" nowrap> <em>zero_mask</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a11"></a><!-- doxytag: member="channel.h::stp_channel_get_black_channel" ref="a11" args="(stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_channel_get_black_channel </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a17"></a><!-- doxytag: member="channel.h::stp_channel_get_curve" ref="a17" args="(stp_vars_t *v, int channel)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_channel_get_curve </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>channel</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a9"></a><!-- doxytag: member="channel.h::stp_channel_get_cutoff_adjustment" ref="a9" args="(stp_vars_t *v, int color, int subchannel)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double stp_channel_get_cutoff_adjustment </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>color</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>subchannel</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a5"></a><!-- doxytag: member="channel.h::stp_channel_get_density_adjustment" ref="a5" args="(stp_vars_t *v, int color, int subchannel)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double stp_channel_get_density_adjustment </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>color</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>subchannel</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a13"></a><!-- doxytag: member="channel.h::stp_channel_get_gloss_channel" ref="a13" args="(stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_channel_get_gloss_channel </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a15"></a><!-- doxytag: member="channel.h::stp_channel_get_gloss_limit" ref="a15" args="(stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double stp_channel_get_gloss_limit </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a7"></a><!-- doxytag: member="channel.h::stp_channel_get_ink_limit" ref="a7" args="(stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double stp_channel_get_ink_limit </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a20"></a><!-- doxytag: member="channel.h::stp_channel_get_input" ref="a20" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned short* stp_channel_get_input </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a21"></a><!-- doxytag: member="channel.h::stp_channel_get_output" ref="a21" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned short* stp_channel_get_output </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a3"></a><!-- doxytag: member="channel.h::stp_channel_get_value" ref="a3" args="(stp_vars_t *v, unsigned channel, unsigned subchannel)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double stp_channel_get_value </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned&nbsp;</td>
+ <td class="mdname" nowrap> <em>channel</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned&nbsp;</td>
+ <td class="mdname" nowrap> <em>subchannel</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a18"></a><!-- doxytag: member="channel.h::stp_channel_initialize" ref="a18" args="(stp_vars_t *v, stp_image_t *image, int input_channel_count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_channel_initialize </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__image.html">stp_image_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>image</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>input_channel_count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a0"></a><!-- doxytag: member="channel.h::stp_channel_reset" ref="a0" args="(stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_channel_reset </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a1"></a><!-- doxytag: member="channel.h::stp_channel_reset_channel" ref="a1" args="(stp_vars_t *v, int channel)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_channel_reset_channel </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>channel</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a10"></a><!-- doxytag: member="channel.h::stp_channel_set_black_channel" ref="a10" args="(stp_vars_t *v, int channel)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_channel_set_black_channel </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>channel</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a16"></a><!-- doxytag: member="channel.h::stp_channel_set_curve" ref="a16" args="(stp_vars_t *v, int channel, const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_channel_set_curve </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>channel</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a8"></a><!-- doxytag: member="channel.h::stp_channel_set_cutoff_adjustment" ref="a8" args="(stp_vars_t *v, int color, int subchannel, double adjustment)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_channel_set_cutoff_adjustment </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>color</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>subchannel</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>adjustment</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a4"></a><!-- doxytag: member="channel.h::stp_channel_set_density_adjustment" ref="a4" args="(stp_vars_t *v, int color, int subchannel, double adjustment)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_channel_set_density_adjustment </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>color</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>subchannel</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>adjustment</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a12"></a><!-- doxytag: member="channel.h::stp_channel_set_gloss_channel" ref="a12" args="(stp_vars_t *v, int channel)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_channel_set_gloss_channel </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>channel</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a14"></a><!-- doxytag: member="channel.h::stp_channel_set_gloss_limit" ref="a14" args="(stp_vars_t *v, double limit)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_channel_set_gloss_limit </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>limit</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a6"></a><!-- doxytag: member="channel.h::stp_channel_set_ink_limit" ref="a6" args="(stp_vars_t *v, double limit)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_channel_set_ink_limit </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>limit</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/classes.html b/doc/gutenprint/html/classes.html
new file mode 100644
index 0000000..f2ed916
--- /dev/null
+++ b/doc/gutenprint/html/classes.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Alphabetical List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindexHL" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>libgutenprint API Reference Data Structure Index</h1><p><div class="qindex"><a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a></div><p>
+<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
+<tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;D&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structstp__dither__matrix__generic.html">stp_dither_matrix_generic</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__int__bound__t.html">stp_int_bound_t</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__module__version.html">stp_module_version</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__param__string__t.html">stp_param_string_t</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structdither__matrix__impl.html">dither_matrix_impl</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__dither__matrix__normal.html">stp_dither_matrix_normal</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__lineactive__t.html">stp_lineactive_t</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__mxml__attr__s.html">stp_mxml_attr_s</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__parameter__t.html">stp_parameter_t</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;S&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structstp__dither__matrix__short.html">stp_dither_matrix_short</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__linebounds__t.html">stp_linebounds_t</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_s</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__pass__t.html">stp_pass_t</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__dotsize.html">stp_dotsize</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__linebufs__t.html">stp_linebufs_t</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__mxml__text__s.html">stp_mxml_text_s</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__printfuncs__t.html">stp_printfuncs_t</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structstp__color.html">stp_color</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__double__bound__t.html">stp_double_bound_t</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__linecount__t.html">stp_linecount_t</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__mxml__value__s.html">stp_mxml_value_s</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__raw__t.html">stp_raw_t</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structstp__colorfuncs__t.html">stp_colorfuncs_t</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__family.html">stp_family</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__lineoff__t.html">stp_lineoff_t</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="unionstp__mxml__value__u.html">stp_mxml_value_u</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__shade.html">stp_shade</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__image.html">stp_image</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__module.html">stp_module</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__papersize__t.html">stp_papersize_t</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstp__weave__t.html">stp_weave_t</a>&nbsp;&nbsp;&nbsp;</td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a></div><p>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/color_8h.html b/doc/gutenprint/html/color_8h.html
new file mode 100644
index 0000000..6d31997
--- /dev/null
+++ b/doc/gutenprint/html/color_8h.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/color.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>color.h File Reference</h1>Color functions. <a href="#_details">More...</a>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__colorfuncs__t.html">stp_colorfuncs_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__color.html">stp_color</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__color.html">stp_color</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga0">stp_color_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga1">stp_color_init</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image, size_t steps)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga2">stp_color_get_row</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image, int row, unsigned *zero_mask)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga3">stp_color_list_parameters</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga4">stp_color_describe_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name, <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *description)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga5">stp_color_register</a> (const <a class="el" href="structstp__color.html">stp_color_t</a> *color)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga6">stp_color_unregister</a> (const <a class="el" href="structstp__color.html">stp_color_t</a> *color)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga7">stp_color_count</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of available color modules. <a href="group__color.html#ga7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__color.html">stp_color_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga8">stp_get_color_by_name</a> (const char *name)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a color module by its name. <a href="group__color.html#ga8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__color.html">stp_color_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga9">stp_get_color_by_index</a> (int idx)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a color module by its index number. <a href="group__color.html#ga9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__color.html">stp_color_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga10">stp_get_color_by_colorfuncs</a> (<a class="el" href="structstp__colorfuncs__t.html">stp_colorfuncs_t</a> *colorfuncs)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga11">stp_color_get_name</a> (const <a class="el" href="structstp__color.html">stp_color_t</a> *c)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the short (untranslated) name of a color module. <a href="group__color.html#ga11"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga12">stp_color_get_long_name</a> (const <a class="el" href="structstp__color.html">stp_color_t</a> *c)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the long (translated) name of a color module. <a href="group__color.html#ga12"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Color functions.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/curve-cache_8h.html b/doc/gutenprint/html/curve-cache_8h.html
new file mode 100644
index 0000000..fb253d4
--- /dev/null
+++ b/doc/gutenprint/html/curve-cache_8h.html
@@ -0,0 +1,447 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/curve-cache.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>curve-cache.h File Reference</h1>Curve caching functions. <a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="curve_8h.html">gutenprint/curve.h</a>&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a0">CURVE_CACHE_FAST_USHORT</a>(cache)&nbsp;&nbsp;&nbsp;((cache)-&gt;s_cache)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a1">CURVE_CACHE_FAST_DOUBLE</a>(cache)&nbsp;&nbsp;&nbsp;((cache)-&gt;d_cache)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a2">CURVE_CACHE_FAST_COUNT</a>(cache)&nbsp;&nbsp;&nbsp;((cache)-&gt;count)</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a3">stp_curve_free_curve_cache</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a4">stp_curve_cache_curve_data</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a5">stp_curve_cache_get_curve</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a6">stp_curve_cache_curve_invalidate</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a7">stp_curve_cache_set_curve</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache, <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a8">stp_curve_cache_set_curve_copy</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache, const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a9">stp_curve_cache_get_count</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned short *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a10">stp_curve_cache_get_ushort_data</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const double *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a11">stp_curve_cache_get_double_data</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a12">stp_curve_cache_copy</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *dest, const <a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *src)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Curve caching functions.
+<p>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="a2"></a><!-- doxytag: member="curve-cache.h::CURVE_CACHE_FAST_COUNT" ref="a2" args="(cache)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define CURVE_CACHE_FAST_COUNT </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">cache&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;((cache)-&gt;count)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a1"></a><!-- doxytag: member="curve-cache.h::CURVE_CACHE_FAST_DOUBLE" ref="a1" args="(cache)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define CURVE_CACHE_FAST_DOUBLE </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">cache&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;((cache)-&gt;d_cache)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a0"></a><!-- doxytag: member="curve-cache.h::CURVE_CACHE_FAST_USHORT" ref="a0" args="(cache)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define CURVE_CACHE_FAST_USHORT </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">cache&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;((cache)-&gt;s_cache)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a12"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_copy" ref="a12" args="(stp_cached_curve_t *dest, const stp_cached_curve_t *src)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_curve_cache_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dest</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>src</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a4"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_curve_data" ref="a4" args="(stp_cached_curve_t *cache)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_curve_cache_curve_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>cache</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a6"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_curve_invalidate" ref="a6" args="(stp_cached_curve_t *cache)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_curve_cache_curve_invalidate </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>cache</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a9"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_get_count" ref="a9" args="(stp_cached_curve_t *cache)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const size_t stp_curve_cache_get_count </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>cache</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a5"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_get_curve" ref="a5" args="(stp_cached_curve_t *cache)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_curve_cache_get_curve </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>cache</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a11"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_get_double_data" ref="a11" args="(stp_cached_curve_t *cache)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const double* stp_curve_cache_get_double_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>cache</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a10"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_get_ushort_data" ref="a10" args="(stp_cached_curve_t *cache)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned short* stp_curve_cache_get_ushort_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>cache</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a7"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_set_curve" ref="a7" args="(stp_cached_curve_t *cache, stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_curve_cache_set_curve </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>cache</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a8"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_set_curve_copy" ref="a8" args="(stp_cached_curve_t *cache, const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_curve_cache_set_curve_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>cache</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a3"></a><!-- doxytag: member="curve-cache.h::stp_curve_free_curve_cache" ref="a3" args="(stp_cached_curve_t *cache)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_curve_free_curve_cache </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>cache</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/curve_8h.html b/doc/gutenprint/html/curve_8h.html
new file mode 100644
index 0000000..a475f61
--- /dev/null
+++ b/doc/gutenprint/html/curve_8h.html
@@ -0,0 +1,193 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/curve.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>curve.h File Reference</h1>Curve functions. <a href="#_details">More...</a>
+<p>
+<code>#include &lt;stdio.h&gt;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;<a class="el" href="sequence_8h.html">gutenprint/sequence.h</a>&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Point (x,y) for piecewise curve. <a href="structstp__curve__point__t.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_curve&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga0">stp_curve_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The curve opaque data type. <a href="group__curve.html#ga0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga47">stp_curve_type_t</a> { <a class="el" href="group__curve.html#gga47a1">STP_CURVE_TYPE_LINEAR</a>,
+<a class="el" href="group__curve.html#gga47a2">STP_CURVE_TYPE_SPLINE</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Curve types. <a href="group__curve.html#ga47">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga48">stp_curve_wrap_mode_t</a> { <a class="el" href="group__curve.html#gga48a3">STP_CURVE_WRAP_NONE</a>,
+<a class="el" href="group__curve.html#gga48a4">STP_CURVE_WRAP_AROUND</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapping mode. <a href="group__curve.html#ga48">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a> { <a class="el" href="group__curve.html#gga49a5">STP_CURVE_COMPOSE_ADD</a>,
+<a class="el" href="group__curve.html#gga49a6">STP_CURVE_COMPOSE_MULTIPLY</a>,
+<a class="el" href="group__curve.html#gga49a7">STP_CURVE_COMPOSE_EXPONENTIATE</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Composition types. <a href="group__curve.html#ga49">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga50">stp_curve_bounds_t</a> { <a class="el" href="group__curve.html#gga50a8">STP_CURVE_BOUNDS_RESCALE</a>,
+<a class="el" href="group__curve.html#gga50a9">STP_CURVE_BOUNDS_CLIP</a>,
+<a class="el" href="group__curve.html#gga50a10">STP_CURVE_BOUNDS_ERROR</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Behaviour when curve exceeds bounds. <a href="group__curve.html#ga50">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga1">stp_curve_create</a> (<a class="el" href="group__curve.html#ga48">stp_curve_wrap_mode_t</a> wrap)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new curve. <a href="group__curve.html#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga2">stp_curve_create_copy</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy and allocate an curve. <a href="group__curve.html#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga3">stp_curve_copy</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *dest, const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *source)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy an curve. <a href="group__curve.html#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga4">stp_curve_destroy</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy an curve. <a href="group__curve.html#ga4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga5">stp_curve_set_bounds</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double low, double high)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the lower and upper bounds on a curve. <a href="group__curve.html#ga5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga6">stp_curve_get_bounds</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double *low, double *high)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the lower and upper bounds on a curve. <a href="group__curve.html#ga6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga48">stp_curve_wrap_mode_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga7">stp_curve_get_wrap</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the wrapping mode. <a href="group__curve.html#ga7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga8">stp_curve_is_piecewise</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determine whether the curve is piecewise. <a href="group__curve.html#ga8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga9">stp_curve_get_range</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double *low, double *high)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga10">stp_curve_count_points</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of allocated points in the curve. <a href="group__curve.html#ga10"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga11">stp_curve_set_interpolation_type</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, <a class="el" href="group__curve.html#ga47">stp_curve_type_t</a> itype)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the curve interpolation type. <a href="group__curve.html#ga11"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga47">stp_curve_type_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga12">stp_curve_get_interpolation_type</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the curve interpolation type. <a href="group__curve.html#ga12"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga13">stp_curve_set_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const double *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set all data points of the curve. <a href="group__curve.html#ga13"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga14">stp_curve_set_data_points</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const <a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a> *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set all data points of the curve. <a href="group__curve.html#ga14"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga15">stp_curve_set_float_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const float *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from float values. <a href="group__curve.html#ga15"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga16">stp_curve_set_long_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const long *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from long values. <a href="group__curve.html#ga16"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga17">stp_curve_set_ulong_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const unsigned long *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from unsigned long values. <a href="group__curve.html#ga17"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga18">stp_curve_set_int_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const int *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from integer values. <a href="group__curve.html#ga18"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga19">stp_curve_set_uint_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const unsigned int *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from unsigned integer values. <a href="group__curve.html#ga19"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga20">stp_curve_set_short_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const short *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from short values. <a href="group__curve.html#ga20"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga21">stp_curve_set_ushort_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const unsigned short *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from unsigned short values. <a href="group__curve.html#ga21"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga22">stp_curve_get_subrange</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t start, size_t count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a curve containing a subrange of data. <a href="group__curve.html#ga22"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga23">stp_curve_set_subrange</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *range, size_t start)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const double *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga24">stp_curve_get_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a pointer to the curve's raw data. <a href="group__curve.html#ga24"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga25">stp_curve_get_data_points</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a pointer to the curve's raw data as points. <a href="group__curve.html#ga25"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const float *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga26">stp_curve_get_float_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as floats. <a href="group__curve.html#ga26"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const long *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga27">stp_curve_get_long_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as longs. <a href="group__curve.html#ga27"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned long *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga28">stp_curve_get_ulong_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as unsigned longs. <a href="group__curve.html#ga28"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga29">stp_curve_get_int_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as integers. <a href="group__curve.html#ga29"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga30">stp_curve_get_uint_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as unsigned integers. <a href="group__curve.html#ga30"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const short *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga31">stp_curve_get_short_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as shorts. <a href="group__curve.html#ga31"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned short *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga32">stp_curve_get_ushort_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as unsigned shorts. <a href="group__curve.html#ga32"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga33">stp_curve_get_sequence</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the underlying stp_sequence_t data structure which stp_curve_t is derived from. <a href="group__curve.html#ga33"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga34">stp_curve_set_gamma</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double f_gamma)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the gamma of a curve. <a href="group__curve.html#ga34"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga35">stp_curve_get_gamma</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the gamma value of the curve. <a href="group__curve.html#ga35"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga36">stp_curve_set_point</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t where, double data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a point along the curve. <a href="group__curve.html#ga36"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga37">stp_curve_get_point</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t where, double *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a point along the curve. <a href="group__curve.html#ga37"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga38">stp_curve_interpolate_value</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double where, double *result)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Interpolate a point along the curve. <a href="group__curve.html#ga38"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga39">stp_curve_resample</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t points)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Resample a curve (change the number of points). <a href="group__curve.html#ga39"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga40">stp_curve_rescale</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double scale, <a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a> mode, <a class="el" href="group__curve.html#ga50">stp_curve_bounds_t</a> bounds_mode)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rescale a curve (multiply all points by a scaling constant). <a href="group__curve.html#ga40"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga41">stp_curve_write</a> (FILE *file, const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write a curve to a file. <a href="group__curve.html#ga41"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga42">stp_curve_write_string</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write a curve to a string. <a href="group__curve.html#ga42"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga43">stp_curve_create_from_stream</a> (FILE *fp)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a curve from a stream. <a href="group__curve.html#ga43"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga44">stp_curve_create_from_file</a> (const char *file)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a curve from a stream. <a href="group__curve.html#ga44"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga45">stp_curve_create_from_string</a> (const char *string)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a curve from a string. <a href="group__curve.html#ga45"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga46">stp_curve_compose</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> **retval, <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *a, <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *b, <a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a> mode, int points)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compose two curves, creating a third curve. <a href="group__curve.html#ga46"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Curve functions.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/deprecated.html b/doc/gutenprint/html/deprecated.html
new file mode 100644
index 0000000..3547296
--- /dev/null
+++ b/doc/gutenprint/html/deprecated.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Deprecated List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1><a class="anchor" name="deprecated">Deprecated List</a></h1><a class="anchor" name="_deprecated000001"></a> <dl>
+<dt>Global <a class="el" href="group__printer.html#ga7">stp_get_printer_index_by_driver</a> </dt>
+<dd>There should never be any need to use this function.</dd>
+</dl>
+<p>
+<a class="anchor" name="_deprecated000002"></a> <dl>
+<dt>Global <a class="el" href="group__vars.html#ga37">stp_merge_printvars</a> </dt>
+<dd>This is likely to go away.</dd>
+</dl>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/dir_000000.html b/doc/gutenprint/html/dir_000000.html
new file mode 100644
index 0000000..d2fb987
--- /dev/null
+++ b/doc/gutenprint/html/dir_000000.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/ Directory Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a></div>
+<h1>include Directory Reference</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Directories</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">directory &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_000001.html">gutenprint</a></td></tr>
+
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/dir_000001.html b/doc/gutenprint/html/dir_000001.html
new file mode 100644
index 0000000..aa75f63
--- /dev/null
+++ b/doc/gutenprint/html/dir_000001.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/ Directory Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>gutenprint Directory Reference</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Files</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html">array.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Array functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html">bit-ops.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bit operations. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html">channel.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Channel functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="color_8h.html">color.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Color functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html">curve-cache.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Curve caching functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html">curve.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Curve functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html">dither.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dither functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprint-intl-internal_8h.html">gutenprint-intl-internal.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internationalisation functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprint-intl_8h.html">gutenprint-intl.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internationalisation functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprint-module_8h.html">gutenprint-module.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gutenprint module header. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprint-version_8h.html">gutenprint-version.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Version functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprint_8h.html">gutenprint.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gutenprint master header. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="image_8h.html">image.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Image functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html">list.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic list functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="module_8h.html">module.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Module functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html">mxml.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mini-XML XML parsing functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="paper_8h.html">paper.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Paper size functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="path_8h.html">path.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simple directory path functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="printers_8h.html">printers.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Printer functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="sequence_8h.html">sequence.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sequence functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="string-list_8h.html">string-list.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">String list functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html">util.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Utility functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="vars_8h.html">vars.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Print job functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html">weave.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Softweave functions. <br></td></tr>
+
+<p>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html">xml.h</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">XML tree functions. <br></td></tr>
+
+<p>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/dirs.html b/doc/gutenprint/html/dirs.html
new file mode 100644
index 0000000..776d45f
--- /dev/null
+++ b/doc/gutenprint/html/dirs.html
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Directory Hierarchy</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindexHL" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>libgutenprint API Reference Directories</h1>This directory hierarchy is sorted roughly, but not completely, alphabetically:<ul>
+<li><a class="el" href="dir_000000.html">include</a>
+<ul>
+<li><a class="el" href="dir_000001.html">gutenprint</a>
+</ul>
+</ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/dither_8h.html b/doc/gutenprint/html/dither_8h.html
new file mode 100644
index 0000000..fc8f3d1
--- /dev/null
+++ b/doc/gutenprint/html/dither_8h.html
@@ -0,0 +1,1822 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/dither.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>dither.h File Reference</h1>Dither functions. <a href="#_details">More...</a>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__short.html">stp_dither_matrix_short</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__normal.html">stp_dither_matrix_normal</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__generic.html">stp_dither_matrix_generic</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdither__matrix__impl.html">dither_matrix_impl</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dotsize.html">stp_dotsize</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__shade.html">stp_shade</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a0">STP_ECOLOR_K</a>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a1">STP_ECOLOR_C</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a2">STP_ECOLOR_M</a>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a3">STP_ECOLOR_Y</a>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a4">STP_NCOLORS</a>&nbsp;&nbsp;&nbsp;(4)</td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__dither__matrix__short.html">stp_dither_matrix_short</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a5">stp_dither_matrix_short_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__dither__matrix__normal.html">stp_dither_matrix_normal</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a6">stp_dither_matrix_normal_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__dither__matrix__generic.html">stp_dither_matrix_generic</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a7">stp_dither_matrix_generic_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structdither__matrix__impl.html">dither_matrix_impl</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a8">stp_dither_matrix_impl_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__dotsize.html">stp_dotsize</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a9">stp_dotsize_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__shade.html">stp_shade</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a10">stp_shade_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a11">stp_dither_matrix_iterated_init</a> (<a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *mat, size_t size, size_t exponent, const unsigned *array)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a12">stp_dither_matrix_shear</a> (<a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *mat, int x_shear, int y_shear)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a13">stp_dither_matrix_init</a> (<a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *mat, int x_size, int y_size, const unsigned int *array, int transpose, int prescaled)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a14">stp_dither_matrix_init_short</a> (<a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *mat, int x_size, int y_size, const unsigned short *array, int transpose, int prescaled)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a15">stp_dither_matrix_validate_array</a> (const <a class="el" href="group__array.html#ga0">stp_array_t</a> *array)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a16">stp_dither_matrix_init_from_dither_array</a> (<a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *mat, const <a class="el" href="group__array.html#ga0">stp_array_t</a> *array, int transpose)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a17">stp_dither_matrix_destroy</a> (<a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *mat)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a18">stp_dither_matrix_clone</a> (const <a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *src, <a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *dest, int x_offset, int y_offset)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a19">stp_dither_matrix_copy</a> (const <a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *src, <a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *dest)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a20">stp_dither_matrix_scale_exponentially</a> (<a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *mat, double exponent)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a21">stp_dither_matrix_set_row</a> (<a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *mat, int y)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a22">stp_find_standard_dither_array</a> (int x_aspect, int y_aspect)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a23">stp_dither_list_parameters</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a24">stp_dither_describe_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name, <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *description)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a25">stp_dither_init</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image, int out_width, int xdpi, int ydpi)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a26">stp_dither_set_iterated_matrix</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, size_t edge, size_t iterations, const unsigned *data, int prescaled, int x_shear, int y_shear)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a27">stp_dither_set_matrix</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const <a class="el" href="structstp__dither__matrix__generic.html">stp_dither_matrix_generic_t</a> *mat, int transpose, int x_shear, int y_shear)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a28">stp_dither_set_matrix_from_dither_array</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const <a class="el" href="group__array.html#ga0">stp_array_t</a> *array, int transpose)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a29">stp_dither_set_transition</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, double)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a30">stp_dither_set_randomizer</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int color, double)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a31">stp_dither_set_ink_spread</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int spread)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a32">stp_dither_set_adaptive_limit</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, double limit)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a33">stp_dither_get_first_position</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int color, int subchan)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a34">stp_dither_get_last_position</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int color, int subchan)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a35">stp_dither_set_inks_simple</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int color, int nlevels, const double *levels, double density, double darkness)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a36">stp_dither_set_inks_full</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int color, int nshades, const <a class="el" href="structstp__shade.html">stp_shade_t</a> *shades, double density, double darkness)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a37">stp_dither_set_inks</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int color, double density, double darkness, int nshades, const double *svalues, int ndotsizes, const double *dvalues)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a38">stp_dither_add_channel</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, unsigned char *data, unsigned channel, unsigned subchannel)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a39">stp_dither_get_channel</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, unsigned channel, unsigned subchannel)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a40">stp_dither</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int row, int duplicate_line, int zero_mask, const unsigned char *mask)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dither_8h.html#a41">stp_dither_internal</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int row, const unsigned short *input, int duplicate_line, int zero_mask, const unsigned char *mask)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Dither functions.
+<p>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="a1"></a><!-- doxytag: member="dither.h::STP_ECOLOR_C" ref="a1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_ECOLOR_C&nbsp;&nbsp;&nbsp;1 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a0"></a><!-- doxytag: member="dither.h::STP_ECOLOR_K" ref="a0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_ECOLOR_K&nbsp;&nbsp;&nbsp;0 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a2"></a><!-- doxytag: member="dither.h::STP_ECOLOR_M" ref="a2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_ECOLOR_M&nbsp;&nbsp;&nbsp;2 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a3"></a><!-- doxytag: member="dither.h::STP_ECOLOR_Y" ref="a3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_ECOLOR_Y&nbsp;&nbsp;&nbsp;3 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a4"></a><!-- doxytag: member="dither.h::STP_NCOLORS" ref="a4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_NCOLORS&nbsp;&nbsp;&nbsp;(4) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="a7"></a><!-- doxytag: member="dither.h::stp_dither_matrix_generic_t" ref="a7" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="structstp__dither__matrix__generic.html">stp_dither_matrix_generic</a> <a class="el" href="structstp__dither__matrix__generic.html">stp_dither_matrix_generic_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a8"></a><!-- doxytag: member="dither.h::stp_dither_matrix_impl_t" ref="a8" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="structdither__matrix__impl.html">dither_matrix_impl</a> <a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a6"></a><!-- doxytag: member="dither.h::stp_dither_matrix_normal_t" ref="a6" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="structstp__dither__matrix__normal.html">stp_dither_matrix_normal</a> <a class="el" href="structstp__dither__matrix__normal.html">stp_dither_matrix_normal_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a5"></a><!-- doxytag: member="dither.h::stp_dither_matrix_short_t" ref="a5" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="structstp__dither__matrix__short.html">stp_dither_matrix_short</a> <a class="el" href="structstp__dither__matrix__short.html">stp_dither_matrix_short_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a9"></a><!-- doxytag: member="dither.h::stp_dotsize_t" ref="a9" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="structstp__dotsize.html">stp_dotsize</a> <a class="el" href="structstp__dotsize.html">stp_dotsize_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a10"></a><!-- doxytag: member="dither.h::stp_shade_t" ref="a10" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="structstp__shade.html">stp_shade</a> <a class="el" href="structstp__shade.html">stp_shade_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a40"></a><!-- doxytag: member="dither.h::stp_dither" ref="a40" args="(stp_vars_t *v, int row, int duplicate_line, int zero_mask, const unsigned char *mask)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>row</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>duplicate_line</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>zero_mask</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mask</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a38"></a><!-- doxytag: member="dither.h::stp_dither_add_channel" ref="a38" args="(stp_vars_t *v, unsigned char *data, unsigned channel, unsigned subchannel)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_add_channel </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned&nbsp;</td>
+ <td class="mdname" nowrap> <em>channel</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned&nbsp;</td>
+ <td class="mdname" nowrap> <em>subchannel</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a24"></a><!-- doxytag: member="dither.h::stp_dither_describe_parameter" ref="a24" args="(const stp_vars_t *v, const char *name, stp_parameter_t *description)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_describe_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>description</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a39"></a><!-- doxytag: member="dither.h::stp_dither_get_channel" ref="a39" args="(stp_vars_t *v, unsigned channel, unsigned subchannel)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned char* stp_dither_get_channel </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned&nbsp;</td>
+ <td class="mdname" nowrap> <em>channel</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned&nbsp;</td>
+ <td class="mdname" nowrap> <em>subchannel</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a33"></a><!-- doxytag: member="dither.h::stp_dither_get_first_position" ref="a33" args="(stp_vars_t *v, int color, int subchan)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_dither_get_first_position </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>color</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>subchan</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a34"></a><!-- doxytag: member="dither.h::stp_dither_get_last_position" ref="a34" args="(stp_vars_t *v, int color, int subchan)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_dither_get_last_position </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>color</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>subchan</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a25"></a><!-- doxytag: member="dither.h::stp_dither_init" ref="a25" args="(stp_vars_t *v, stp_image_t *image, int out_width, int xdpi, int ydpi)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_init </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__image.html">stp_image_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>image</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>out_width</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>xdpi</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>ydpi</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a41"></a><!-- doxytag: member="dither.h::stp_dither_internal" ref="a41" args="(stp_vars_t *v, int row, const unsigned short *input, int duplicate_line, int zero_mask, const unsigned char *mask)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_internal </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>row</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned short *&nbsp;</td>
+ <td class="mdname" nowrap> <em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>duplicate_line</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>zero_mask</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mask</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a23"></a><!-- doxytag: member="dither.h::stp_dither_list_parameters" ref="a23" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a> stp_dither_list_parameters </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a18"></a><!-- doxytag: member="dither.h::stp_dither_matrix_clone" ref="a18" args="(const stp_dither_matrix_impl_t *src, stp_dither_matrix_impl_t *dest, int x_offset, int y_offset)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_matrix_clone </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>src</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dest</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>x_offset</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>y_offset</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a19"></a><!-- doxytag: member="dither.h::stp_dither_matrix_copy" ref="a19" args="(const stp_dither_matrix_impl_t *src, stp_dither_matrix_impl_t *dest)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_matrix_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>src</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dest</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a17"></a><!-- doxytag: member="dither.h::stp_dither_matrix_destroy" ref="a17" args="(stp_dither_matrix_impl_t *mat)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_matrix_destroy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>mat</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a13"></a><!-- doxytag: member="dither.h::stp_dither_matrix_init" ref="a13" args="(stp_dither_matrix_impl_t *mat, int x_size, int y_size, const unsigned int *array, int transpose, int prescaled)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_matrix_init </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>x_size</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>y_size</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>array</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>transpose</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>prescaled</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a16"></a><!-- doxytag: member="dither.h::stp_dither_matrix_init_from_dither_array" ref="a16" args="(stp_dither_matrix_impl_t *mat, const stp_array_t *array, int transpose)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_matrix_init_from_dither_array </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>array</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>transpose</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a14"></a><!-- doxytag: member="dither.h::stp_dither_matrix_init_short" ref="a14" args="(stp_dither_matrix_impl_t *mat, int x_size, int y_size, const unsigned short *array, int transpose, int prescaled)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_matrix_init_short </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>x_size</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>y_size</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned short *&nbsp;</td>
+ <td class="mdname" nowrap> <em>array</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>transpose</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>prescaled</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a11"></a><!-- doxytag: member="dither.h::stp_dither_matrix_iterated_init" ref="a11" args="(stp_dither_matrix_impl_t *mat, size_t size, size_t exponent, const unsigned *array)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_matrix_iterated_init </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>exponent</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned *&nbsp;</td>
+ <td class="mdname" nowrap> <em>array</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a20"></a><!-- doxytag: member="dither.h::stp_dither_matrix_scale_exponentially" ref="a20" args="(stp_dither_matrix_impl_t *mat, double exponent)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_matrix_scale_exponentially </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>exponent</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a21"></a><!-- doxytag: member="dither.h::stp_dither_matrix_set_row" ref="a21" args="(stp_dither_matrix_impl_t *mat, int y)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_matrix_set_row </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>y</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a12"></a><!-- doxytag: member="dither.h::stp_dither_matrix_shear" ref="a12" args="(stp_dither_matrix_impl_t *mat, int x_shear, int y_shear)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_matrix_shear </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structdither__matrix__impl.html">stp_dither_matrix_impl_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>x_shear</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>y_shear</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a15"></a><!-- doxytag: member="dither.h::stp_dither_matrix_validate_array" ref="a15" args="(const stp_array_t *array)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_dither_matrix_validate_array </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>array</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a32"></a><!-- doxytag: member="dither.h::stp_dither_set_adaptive_limit" ref="a32" args="(stp_vars_t *v, double limit)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_set_adaptive_limit </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>limit</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a31"></a><!-- doxytag: member="dither.h::stp_dither_set_ink_spread" ref="a31" args="(stp_vars_t *v, int spread)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_set_ink_spread </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>spread</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a37"></a><!-- doxytag: member="dither.h::stp_dither_set_inks" ref="a37" args="(stp_vars_t *v, int color, double density, double darkness, int nshades, const double *svalues, int ndotsizes, const double *dvalues)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_set_inks </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>color</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>density</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>darkness</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>nshades</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>svalues</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>ndotsizes</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dvalues</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a36"></a><!-- doxytag: member="dither.h::stp_dither_set_inks_full" ref="a36" args="(stp_vars_t *v, int color, int nshades, const stp_shade_t *shades, double density, double darkness)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_set_inks_full </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>color</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>nshades</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="structstp__shade.html">stp_shade_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>shades</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>density</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>darkness</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a35"></a><!-- doxytag: member="dither.h::stp_dither_set_inks_simple" ref="a35" args="(stp_vars_t *v, int color, int nlevels, const double *levels, double density, double darkness)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_set_inks_simple </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>color</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>nlevels</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>levels</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>density</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>darkness</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a26"></a><!-- doxytag: member="dither.h::stp_dither_set_iterated_matrix" ref="a26" args="(stp_vars_t *v, size_t edge, size_t iterations, const unsigned *data, int prescaled, int x_shear, int y_shear)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_set_iterated_matrix </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>edge</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>iterations</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>prescaled</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>x_shear</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>y_shear</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a27"></a><!-- doxytag: member="dither.h::stp_dither_set_matrix" ref="a27" args="(stp_vars_t *v, const stp_dither_matrix_generic_t *mat, int transpose, int x_shear, int y_shear)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_set_matrix </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="structstp__dither__matrix__generic.html">stp_dither_matrix_generic_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>transpose</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>x_shear</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>y_shear</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a28"></a><!-- doxytag: member="dither.h::stp_dither_set_matrix_from_dither_array" ref="a28" args="(stp_vars_t *v, const stp_array_t *array, int transpose)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_set_matrix_from_dither_array </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>array</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>transpose</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a30"></a><!-- doxytag: member="dither.h::stp_dither_set_randomizer" ref="a30" args="(stp_vars_t *v, int color, double)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_set_randomizer </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>color</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a29"></a><!-- doxytag: member="dither.h::stp_dither_set_transition" ref="a29" args="(stp_vars_t *v, double)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dither_set_transition </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a22"></a><!-- doxytag: member="dither.h::stp_find_standard_dither_array" ref="a22" args="(int x_aspect, int y_aspect)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a>* stp_find_standard_dither_array </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname" nowrap> <em>x_aspect</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>y_aspect</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/doxygen.css b/doc/gutenprint/html/doxygen.css
new file mode 100644
index 0000000..decae9e
--- /dev/null
+++ b/doc/gutenprint/html/doxygen.css
@@ -0,0 +1,309 @@
+BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+}
+BODY,TD {
+ font-size: 90%;
+}
+H1 {
+ text-align: center;
+ font-size: 160%;
+}
+H2 {
+ font-size: 120%;
+}
+H3 {
+ font-size: 100%;
+}
+CAPTION { font-weight: bold }
+DIV.qindex {
+ width: 100%;
+ background-color: #eeeeff;
+ border: 1px solid #b0b0b0;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.nav {
+ width: 100%;
+ background-color: #eeeeff;
+ border: 1px solid #b0b0b0;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navtab {
+ background-color: #eeeeff;
+ border: 1px solid #b0b0b0;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+TD.navtab {
+ font-size: 70%;
+}
+A.qindex {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D;
+}
+A.qindex:visited {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D
+}
+A.qindex:hover {
+ text-decoration: none;
+ background-color: #ddddff;
+}
+A.qindexHL {
+ text-decoration: none;
+ font-weight: bold;
+ background-color: #6666cc;
+ color: #ffffff;
+ border: 1px double #9295C2;
+}
+A.qindexHL:hover {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff;
+}
+A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
+A.el { text-decoration: none; font-weight: bold }
+A.elRef { font-weight: bold }
+A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
+A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
+A.codeRef:link { font-weight: normal; color: #0000FF}
+A.codeRef:visited { font-weight: normal; color: #0000FF}
+A:hover { text-decoration: none; background-color: #f2f2ff }
+DL.el { margin-left: -1cm }
+.fragment {
+ font-family: Fixed, monospace;
+ font-size: 95%;
+}
+PRE.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ margin-left: 2px;
+ margin-right: 8px;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
+TD.md { background-color: #F4F4FB; font-weight: bold; }
+TD.mdPrefix {
+ background-color: #F4F4FB;
+ color: #606060;
+ font-size: 80%;
+}
+TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }
+TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }
+DIV.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold;
+}
+DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
+BODY {
+ background: white;
+ color: black;
+ margin-right: 20px;
+ margin-left: 20px;
+}
+TD.indexkey {
+ background-color: #eeeeff;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+ background-color: #eeeeff;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TR.memlist {
+ background-color: #f0f0f0;
+}
+P.formulaDsp { text-align: center; }
+IMG.formulaDsp { }
+IMG.formulaInl { vertical-align: middle; }
+SPAN.keyword { color: #008000 }
+SPAN.keywordtype { color: #604020 }
+SPAN.keywordflow { color: #e08000 }
+SPAN.comment { color: #800000 }
+SPAN.preprocessor { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral { color: #008080 }
+.mdTable {
+ border: 1px solid #868686;
+ background-color: #F4F4FB;
+}
+.mdRow {
+ padding: 8px 10px;
+}
+.mdescLeft {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.mdescRight {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.memItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplParams {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ color: #606060;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.search { color: #003399;
+ font-weight: bold;
+}
+FORM.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+INPUT.search { font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #eeeeff;
+}
+TD.tiny { font-size: 75%;
+}
+a {
+ color: #252E78;
+}
+a:visited {
+ color: #3D2185;
+}
+.dirtab { padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #b0b0b0;
+}
+TH.dirtab { background: #eeeeff;
+ font-weight: bold;
+}
+HR { height: 1px;
+ border: none;
+ border-top: 1px solid black;
+}
diff --git a/doc/gutenprint/html/doxygen.png b/doc/gutenprint/html/doxygen.png
new file mode 100644
index 0000000..f0a274b
--- /dev/null
+++ b/doc/gutenprint/html/doxygen.png
Binary files differ
diff --git a/doc/gutenprint/html/files.html b/doc/gutenprint/html/files.html
new file mode 100644
index 0000000..1a64535
--- /dev/null
+++ b/doc/gutenprint/html/files.html
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: File Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindexHL" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>libgutenprint API Reference File List</h1>Here is a list of all files with brief descriptions:<table>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="array_8h.html">array.h</a></td><td class="indexvalue">Array functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="bit-ops_8h.html">bit-ops.h</a></td><td class="indexvalue">Bit operations </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="channel_8h.html">channel.h</a></td><td class="indexvalue">Channel functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="color_8h.html">color.h</a></td><td class="indexvalue">Color functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="curve-cache_8h.html">curve-cache.h</a></td><td class="indexvalue">Curve caching functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="curve_8h.html">curve.h</a></td><td class="indexvalue">Curve functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="dither_8h.html">dither.h</a></td><td class="indexvalue">Dither functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="gutenprint-intl-internal_8h.html">gutenprint-intl-internal.h</a></td><td class="indexvalue">Internationalisation functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="gutenprint-intl_8h.html">gutenprint-intl.h</a></td><td class="indexvalue">Internationalisation functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="gutenprint-module_8h.html">gutenprint-module.h</a></td><td class="indexvalue">Gutenprint module header </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="gutenprint-version_8h.html">gutenprint-version.h</a></td><td class="indexvalue">Version functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="gutenprint_8h.html">gutenprint.h</a></td><td class="indexvalue">Gutenprint master header </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="image_8h.html">image.h</a></td><td class="indexvalue">Image functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="list_8h.html">list.h</a></td><td class="indexvalue">Generic list functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="module_8h.html">module.h</a></td><td class="indexvalue">Module functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="mxml_8h.html">mxml.h</a></td><td class="indexvalue">Mini-XML XML parsing functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="paper_8h.html">paper.h</a></td><td class="indexvalue">Paper size functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="path_8h.html">path.h</a></td><td class="indexvalue">Simple directory path functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="printers_8h.html">printers.h</a></td><td class="indexvalue">Printer functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="sequence_8h.html">sequence.h</a></td><td class="indexvalue">Sequence functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="string-list_8h.html">string-list.h</a></td><td class="indexvalue">String list functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="util_8h.html">util.h</a></td><td class="indexvalue">Utility functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="vars_8h.html">vars.h</a></td><td class="indexvalue">Print job functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="weave_8h.html">weave.h</a></td><td class="indexvalue">Softweave functions </td></tr>
+ <tr><td class="indexkey">include/gutenprint/<a class="el" href="xml_8h.html">xml.h</a></td><td class="indexvalue">XML tree functions </td></tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/functions.html b/doc/gutenprint/html/functions.html
new file mode 100644
index 0000000..a6bd690
--- /dev/null
+++ b/doc/gutenprint/html/functions.html
@@ -0,0 +1,177 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindexHL" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"><a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
+<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_b">b</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_d">d</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_g">g</a> | <a class="qindex" href="#index_h">h</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_j">j</a> | <a class="qindex" href="#index_l">l</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_n">n</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_p">p</a> | <a class="qindex" href="#index_r">r</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_t">t</a> | <a class="qindex" href="#index_u">u</a> | <a class="qindex" href="#index_v">v</a> | <a class="qindex" href="#index_w">w</a> | <a class="qindex" href="#index_x">x</a> | <a class="qindex" href="#index_y">y</a></div>
+
+<p>
+Here is a list of all struct and union fields with links to the structures/unions they belong to:
+<p>
+<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+<li>array
+: <a class="el" href="structstp__parameter__t.html#o25">stp_parameter_t</a><li>attrs
+: <a class="el" href="structstp__mxml__value__s.html#o2">stp_mxml_value_s</a></ul>
+<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
+<li>base
+: <a class="el" href="structdither__matrix__impl.html#o0">dither_matrix_impl</a><li>bit_pattern
+: <a class="el" href="structstp__dotsize.html#o0">stp_dotsize</a><li>boolean
+: <a class="el" href="structstp__parameter__t.html#o23">stp_parameter_t</a><li>bottom
+: <a class="el" href="structstp__papersize__t.html#o7">stp_papersize_t</a><li>bounds
+: <a class="el" href="structstp__parameter__t.html#o18">stp_parameter_t</a><li>bytes
+: <a class="el" href="structstp__raw__t.html#o0">stp_raw_t</a>, <a class="el" href="structstp__dither__matrix__generic.html#o2">stp_dither_matrix_generic</a>, <a class="el" href="structstp__dither__matrix__normal.html#o2">stp_dither_matrix_normal</a>, <a class="el" href="structstp__dither__matrix__short.html#o2">stp_dither_matrix_short</a></ul>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>category
+: <a class="el" href="structstp__parameter__t.html#o2">stp_parameter_t</a><li>channel
+: <a class="el" href="structstp__parameter__t.html#o9">stp_parameter_t</a><li>child
+: <a class="el" href="structstp__mxml__node__s.html#o4">stp_mxml_node_s</a><li>class
+: <a class="el" href="structstp__module.html#o3">stp_module</a><li>colorfuncs
+: <a class="el" href="structstp__color.html#o2">stp_color</a><li>comment
+: <a class="el" href="structstp__papersize__t.html#o2">stp_papersize_t</a>, <a class="el" href="structstp__module.html#o2">stp_module</a><li>conclude
+: <a class="el" href="structstp__image.html#o6">stp_image</a><li>count
+: <a class="el" href="structstp__cached__curve__t.html#o3">stp_cached_curve_t</a><li>curve
+: <a class="el" href="structstp__parameter__t.html#o19">stp_parameter_t</a>, <a class="el" href="structstp__cached__curve__t.html#o0">stp_cached_curve_t</a></ul>
+<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
+<li>d_cache
+: <a class="el" href="structstp__cached__curve__t.html#o1">stp_cached_curve_t</a><li>data
+: <a class="el" href="structstp__raw__t.html#o1">stp_raw_t</a>, <a class="el" href="structstp__dither__matrix__generic.html#o4">stp_dither_matrix_generic</a>, <a class="el" href="structstp__dither__matrix__normal.html#o4">stp_dither_matrix_normal</a>, <a class="el" href="structstp__dither__matrix__short.html#o4">stp_dither_matrix_short</a><li>dbl
+: <a class="el" href="structstp__parameter__t.html#o20">stp_parameter_t</a><li>deflt
+: <a class="el" href="structstp__parameter__t.html#o26">stp_parameter_t</a><li>describe_output
+: <a class="el" href="structstp__printfuncs__t.html#o7">stp_printfuncs_t</a><li>describe_parameter
+: <a class="el" href="structstp__colorfuncs__t.html#o3">stp_colorfuncs_t</a><li>describe_resolution
+: <a class="el" href="structstp__printfuncs__t.html#o6">stp_printfuncs_t</a><li>dimension
+: <a class="el" href="structstp__parameter__t.html#o21">stp_parameter_t</a><li>dot_sizes
+: <a class="el" href="structstp__shade.html#o2">stp_shade</a></ul>
+<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
+<li>element
+: <a class="el" href="unionstp__mxml__value__u.html#o0">stp_mxml_value_u</a><li>end_job
+: <a class="el" href="structstp__printfuncs__t.html#o10">stp_printfuncs_t</a><li>end_pos
+: <a class="el" href="structstp__linebounds__t.html#o2">stp_linebounds_t</a><li>exp
+: <a class="el" href="structdither__matrix__impl.html#o1">dither_matrix_impl</a></ul>
+<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+<li>fast_mask
+: <a class="el" href="structdither__matrix__impl.html#o13">dither_matrix_impl</a><li>fini
+: <a class="el" href="structstp__module.html#o6">stp_module</a></ul>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>get_appname
+: <a class="el" href="structstp__image.html#o5">stp_image</a><li>get_row
+: <a class="el" href="structstp__image.html#o4">stp_image</a>, <a class="el" href="structstp__colorfuncs__t.html#o1">stp_colorfuncs_t</a></ul>
+<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
+<li>handle
+: <a class="el" href="structstp__module.html#o4">stp_module</a><li>height
+: <a class="el" href="structstp__papersize__t.html#o4">stp_papersize_t</a>, <a class="el" href="structstp__image.html#o3">stp_image</a><li>help
+: <a class="el" href="structstp__parameter__t.html#o3">stp_parameter_t</a></ul>
+<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+<li>i_own
+: <a class="el" href="structdither__matrix__impl.html#o10">dither_matrix_impl</a><li>imageable_area
+: <a class="el" href="structstp__printfuncs__t.html#o3">stp_printfuncs_t</a><li>index
+: <a class="el" href="structdither__matrix__impl.html#o9">dither_matrix_impl</a><li>init
+: <a class="el" href="structstp__module.html#o5">stp_module</a>, <a class="el" href="structstp__image.html#o0">stp_image</a>, <a class="el" href="structstp__colorfuncs__t.html#o0">stp_colorfuncs_t</a><li>integer
+: <a class="el" href="structstp__parameter__t.html#o22">stp_parameter_t</a>, <a class="el" href="unionstp__mxml__value__u.html#o1">stp_mxml_value_u</a><li>is_active
+: <a class="el" href="structstp__parameter__t.html#o8">stp_parameter_t</a><li>is_mandatory
+: <a class="el" href="structstp__parameter__t.html#o7">stp_parameter_t</a></ul>
+<h3><a class="anchor" name="index_j">- j -</a></h3><ul>
+<li>jet
+: <a class="el" href="structstp__weave__t.html#o2">stp_weave_t</a></ul>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>last_child
+: <a class="el" href="structstp__mxml__node__s.html#o5">stp_mxml_node_s</a><li>last_x
+: <a class="el" href="structdither__matrix__impl.html#o5">dither_matrix_impl</a><li>last_x_mod
+: <a class="el" href="structdither__matrix__impl.html#o6">dither_matrix_impl</a><li>last_y
+: <a class="el" href="structdither__matrix__impl.html#o7">dither_matrix_impl</a><li>last_y_mod
+: <a class="el" href="structdither__matrix__impl.html#o8">dither_matrix_impl</a><li>left
+: <a class="el" href="structstp__papersize__t.html#o6">stp_papersize_t</a><li>limit
+: <a class="el" href="structstp__printfuncs__t.html#o4">stp_printfuncs_t</a><li>list_parameters
+: <a class="el" href="structstp__printfuncs__t.html#o0">stp_printfuncs_t</a>, <a class="el" href="structstp__colorfuncs__t.html#o2">stp_colorfuncs_t</a><li>logicalpassstart
+: <a class="el" href="structstp__pass__t.html#o2">stp_pass_t</a>, <a class="el" href="structstp__weave__t.html#o4">stp_weave_t</a><li>long_name
+: <a class="el" href="structstp__color.html#o1">stp_color</a><li>lower
+: <a class="el" href="structstp__int__bound__t.html#o0">stp_int_bound_t</a>, <a class="el" href="structstp__double__bound__t.html#o0">stp_double_bound_t</a></ul>
+<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
+<li>major
+: <a class="el" href="structstp__module__version.html#o0">stp_module_version</a><li>matrix
+: <a class="el" href="structdither__matrix__impl.html#o14">dither_matrix_impl</a><li>media_size
+: <a class="el" href="structstp__printfuncs__t.html#o2">stp_printfuncs_t</a><li>minor
+: <a class="el" href="structstp__module__version.html#o1">stp_module_version</a><li>missingstartrows
+: <a class="el" href="structstp__pass__t.html#o1">stp_pass_t</a>, <a class="el" href="structstp__weave__t.html#o3">stp_weave_t</a></ul>
+<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+<li>name
+: <a class="el" href="structstp__parameter__t.html#o0">stp_parameter_t</a>, <a class="el" href="structstp__param__string__t.html#o0">stp_param_string_t</a>, <a class="el" href="structstp__papersize__t.html#o0">stp_papersize_t</a>, <a class="el" href="structstp__mxml__value__s.html#o0">stp_mxml_value_s</a>, <a class="el" href="structstp__mxml__attr__s.html#o0">stp_mxml_attr_s</a>, <a class="el" href="structstp__module.html#o0">stp_module</a><li>ncolors
+: <a class="el" href="structstp__linebounds__t.html#o0">stp_linebounds_t</a>, <a class="el" href="structstp__linebufs__t.html#o0">stp_linebufs_t</a>, <a class="el" href="structstp__linecount__t.html#o0">stp_linecount_t</a>, <a class="el" href="structstp__lineactive__t.html#o0">stp_lineactive_t</a>, <a class="el" href="structstp__lineoff__t.html#o0">stp_lineoff_t</a><li>next
+: <a class="el" href="structstp__mxml__node__s.html#o1">stp_mxml_node_s</a><li>num_attrs
+: <a class="el" href="structstp__mxml__value__s.html#o1">stp_mxml_value_s</a><li>numsizes
+: <a class="el" href="structstp__shade.html#o1">stp_shade</a></ul>
+<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
+<li>opaque
+: <a class="el" href="unionstp__mxml__value__u.html#o2">stp_mxml_value_u</a></ul>
+<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+<li>p_class
+: <a class="el" href="structstp__parameter__t.html#o5">stp_parameter_t</a><li>p_level
+: <a class="el" href="structstp__parameter__t.html#o6">stp_parameter_t</a><li>p_type
+: <a class="el" href="structstp__parameter__t.html#o4">stp_parameter_t</a><li>paper_unit
+: <a class="el" href="structstp__papersize__t.html#o9">stp_papersize_t</a><li>parameters
+: <a class="el" href="structstp__printfuncs__t.html#o1">stp_printfuncs_t</a><li>parent
+: <a class="el" href="structstp__mxml__node__s.html#o3">stp_mxml_node_s</a><li>pass
+: <a class="el" href="structstp__pass__t.html#o0">stp_pass_t</a>, <a class="el" href="structstp__weave__t.html#o1">stp_weave_t</a><li>physpassend
+: <a class="el" href="structstp__pass__t.html#o4">stp_pass_t</a>, <a class="el" href="structstp__weave__t.html#o6">stp_weave_t</a><li>physpassstart
+: <a class="el" href="structstp__pass__t.html#o3">stp_pass_t</a>, <a class="el" href="structstp__weave__t.html#o5">stp_weave_t</a><li>prescaled
+: <a class="el" href="structstp__dither__matrix__generic.html#o3">stp_dither_matrix_generic</a>, <a class="el" href="structstp__dither__matrix__normal.html#o3">stp_dither_matrix_normal</a>, <a class="el" href="structstp__dither__matrix__short.html#o3">stp_dither_matrix_short</a><li>prev
+: <a class="el" href="structstp__mxml__node__s.html#o2">stp_mxml_node_s</a><li>print
+: <a class="el" href="structstp__printfuncs__t.html#o5">stp_printfuncs_t</a><li>printer_list
+: <a class="el" href="structstp__family.html#o1">stp_family</a><li>printfuncs
+: <a class="el" href="structstp__family.html#o0">stp_family</a></ul>
+<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
+<li>read_only
+: <a class="el" href="structstp__parameter__t.html#o11">stp_parameter_t</a><li>real
+: <a class="el" href="unionstp__mxml__value__u.html#o3">stp_mxml_value_u</a><li>rep
+: <a class="el" href="structstp__image.html#o7">stp_image</a><li>reset
+: <a class="el" href="structstp__image.html#o1">stp_image</a><li>right
+: <a class="el" href="structstp__papersize__t.html#o8">stp_papersize_t</a><li>row
+: <a class="el" href="structstp__weave__t.html#o0">stp_weave_t</a></ul>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>s_cache
+: <a class="el" href="structstp__cached__curve__t.html#o2">stp_cached_curve_t</a><li>short_name
+: <a class="el" href="structstp__color.html#o0">stp_color</a><li>start_job
+: <a class="el" href="structstp__printfuncs__t.html#o9">stp_printfuncs_t</a><li>start_pos
+: <a class="el" href="structstp__linebounds__t.html#o1">stp_linebounds_t</a><li>str
+: <a class="el" href="structstp__parameter__t.html#o24">stp_parameter_t</a><li>string
+: <a class="el" href="structstp__mxml__text__s.html#o1">stp_mxml_text_s</a><li>subpass
+: <a class="el" href="structstp__pass__t.html#o5">stp_pass_t</a><li>syms
+: <a class="el" href="structstp__module.html#o7">stp_module</a></ul>
+<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
+<li>text
+: <a class="el" href="structstp__parameter__t.html#o1">stp_parameter_t</a>, <a class="el" href="structstp__param__string__t.html#o1">stp_param_string_t</a>, <a class="el" href="structstp__papersize__t.html#o1">stp_papersize_t</a>, <a class="el" href="unionstp__mxml__value__u.html#o4">stp_mxml_value_u</a><li>top
+: <a class="el" href="structstp__papersize__t.html#o5">stp_papersize_t</a><li>total_size
+: <a class="el" href="structdither__matrix__impl.html#o4">dither_matrix_impl</a><li>type
+: <a class="el" href="structstp__mxml__node__s.html#o0">stp_mxml_node_s</a></ul>
+<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
+<li>upper
+: <a class="el" href="structstp__int__bound__t.html#o1">stp_int_bound_t</a>, <a class="el" href="structstp__double__bound__t.html#o1">stp_double_bound_t</a></ul>
+<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
+<li>v
+: <a class="el" href="structstp__linebufs__t.html#o1">stp_linebufs_t</a>, <a class="el" href="structstp__linecount__t.html#o1">stp_linecount_t</a>, <a class="el" href="structstp__lineactive__t.html#o1">stp_lineactive_t</a>, <a class="el" href="structstp__lineoff__t.html#o1">stp_lineoff_t</a><li>value
+: <a class="el" href="structstp__mxml__node__s.html#o6">stp_mxml_node_s</a>, <a class="el" href="structstp__mxml__attr__s.html#o1">stp_mxml_attr_s</a>, <a class="el" href="structstp__shade.html#o0">stp_shade</a>, <a class="el" href="structstp__dotsize.html#o1">stp_dotsize</a><li>verify
+: <a class="el" href="structstp__printfuncs__t.html#o8">stp_printfuncs_t</a><li>verify_this_parameter
+: <a class="el" href="structstp__parameter__t.html#o10">stp_parameter_t</a><li>version
+: <a class="el" href="structstp__module.html#o1">stp_module</a></ul>
+<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
+<li>whitespace
+: <a class="el" href="structstp__mxml__text__s.html#o0">stp_mxml_text_s</a><li>width
+: <a class="el" href="structstp__papersize__t.html#o3">stp_papersize_t</a>, <a class="el" href="structstp__image.html#o2">stp_image</a></ul>
+<h3><a class="anchor" name="index_x">- x -</a></h3><ul>
+<li>x
+: <a class="el" href="structstp__dither__matrix__generic.html#o0">stp_dither_matrix_generic</a>, <a class="el" href="structstp__dither__matrix__normal.html#o0">stp_dither_matrix_normal</a>, <a class="el" href="structstp__dither__matrix__short.html#o0">stp_dither_matrix_short</a>, <a class="el" href="structstp__curve__point__t.html#o0">stp_curve_point_t</a><li>x_offset
+: <a class="el" href="structdither__matrix__impl.html#o11">dither_matrix_impl</a><li>x_size
+: <a class="el" href="structdither__matrix__impl.html#o2">dither_matrix_impl</a></ul>
+<h3><a class="anchor" name="index_y">- y -</a></h3><ul>
+<li>y
+: <a class="el" href="structstp__dither__matrix__generic.html#o1">stp_dither_matrix_generic</a>, <a class="el" href="structstp__dither__matrix__normal.html#o1">stp_dither_matrix_normal</a>, <a class="el" href="structstp__dither__matrix__short.html#o1">stp_dither_matrix_short</a>, <a class="el" href="structstp__curve__point__t.html#o1">stp_curve_point_t</a><li>y_offset
+: <a class="el" href="structdither__matrix__impl.html#o12">dither_matrix_impl</a><li>y_size
+: <a class="el" href="structdither__matrix__impl.html#o3">dither_matrix_impl</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/functions_vars.html b/doc/gutenprint/html/functions_vars.html
new file mode 100644
index 0000000..c59740b
--- /dev/null
+++ b/doc/gutenprint/html/functions_vars.html
@@ -0,0 +1,177 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields - Variables</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindexHL" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_vars.html">Variables</a></div>
+<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_b">b</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_d">d</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_g">g</a> | <a class="qindex" href="#index_h">h</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_j">j</a> | <a class="qindex" href="#index_l">l</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_n">n</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_p">p</a> | <a class="qindex" href="#index_r">r</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_t">t</a> | <a class="qindex" href="#index_u">u</a> | <a class="qindex" href="#index_v">v</a> | <a class="qindex" href="#index_w">w</a> | <a class="qindex" href="#index_x">x</a> | <a class="qindex" href="#index_y">y</a></div>
+
+<p>
+
+<p>
+<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+<li>array
+: <a class="el" href="structstp__parameter__t.html#o25">stp_parameter_t</a><li>attrs
+: <a class="el" href="structstp__mxml__value__s.html#o2">stp_mxml_value_s</a></ul>
+<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
+<li>base
+: <a class="el" href="structdither__matrix__impl.html#o0">dither_matrix_impl</a><li>bit_pattern
+: <a class="el" href="structstp__dotsize.html#o0">stp_dotsize</a><li>boolean
+: <a class="el" href="structstp__parameter__t.html#o23">stp_parameter_t</a><li>bottom
+: <a class="el" href="structstp__papersize__t.html#o7">stp_papersize_t</a><li>bounds
+: <a class="el" href="structstp__parameter__t.html#o18">stp_parameter_t</a><li>bytes
+: <a class="el" href="structstp__raw__t.html#o0">stp_raw_t</a>, <a class="el" href="structstp__dither__matrix__generic.html#o2">stp_dither_matrix_generic</a>, <a class="el" href="structstp__dither__matrix__normal.html#o2">stp_dither_matrix_normal</a>, <a class="el" href="structstp__dither__matrix__short.html#o2">stp_dither_matrix_short</a></ul>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>category
+: <a class="el" href="structstp__parameter__t.html#o2">stp_parameter_t</a><li>channel
+: <a class="el" href="structstp__parameter__t.html#o9">stp_parameter_t</a><li>child
+: <a class="el" href="structstp__mxml__node__s.html#o4">stp_mxml_node_s</a><li>class
+: <a class="el" href="structstp__module.html#o3">stp_module</a><li>colorfuncs
+: <a class="el" href="structstp__color.html#o2">stp_color</a><li>comment
+: <a class="el" href="structstp__papersize__t.html#o2">stp_papersize_t</a>, <a class="el" href="structstp__module.html#o2">stp_module</a><li>conclude
+: <a class="el" href="structstp__image.html#o6">stp_image</a><li>count
+: <a class="el" href="structstp__cached__curve__t.html#o3">stp_cached_curve_t</a><li>curve
+: <a class="el" href="structstp__parameter__t.html#o19">stp_parameter_t</a>, <a class="el" href="structstp__cached__curve__t.html#o0">stp_cached_curve_t</a></ul>
+<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
+<li>d_cache
+: <a class="el" href="structstp__cached__curve__t.html#o1">stp_cached_curve_t</a><li>data
+: <a class="el" href="structstp__raw__t.html#o1">stp_raw_t</a>, <a class="el" href="structstp__dither__matrix__generic.html#o4">stp_dither_matrix_generic</a>, <a class="el" href="structstp__dither__matrix__normal.html#o4">stp_dither_matrix_normal</a>, <a class="el" href="structstp__dither__matrix__short.html#o4">stp_dither_matrix_short</a><li>dbl
+: <a class="el" href="structstp__parameter__t.html#o20">stp_parameter_t</a><li>deflt
+: <a class="el" href="structstp__parameter__t.html#o26">stp_parameter_t</a><li>describe_output
+: <a class="el" href="structstp__printfuncs__t.html#o7">stp_printfuncs_t</a><li>describe_parameter
+: <a class="el" href="structstp__colorfuncs__t.html#o3">stp_colorfuncs_t</a><li>describe_resolution
+: <a class="el" href="structstp__printfuncs__t.html#o6">stp_printfuncs_t</a><li>dimension
+: <a class="el" href="structstp__parameter__t.html#o21">stp_parameter_t</a><li>dot_sizes
+: <a class="el" href="structstp__shade.html#o2">stp_shade</a></ul>
+<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
+<li>element
+: <a class="el" href="unionstp__mxml__value__u.html#o0">stp_mxml_value_u</a><li>end_job
+: <a class="el" href="structstp__printfuncs__t.html#o10">stp_printfuncs_t</a><li>end_pos
+: <a class="el" href="structstp__linebounds__t.html#o2">stp_linebounds_t</a><li>exp
+: <a class="el" href="structdither__matrix__impl.html#o1">dither_matrix_impl</a></ul>
+<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+<li>fast_mask
+: <a class="el" href="structdither__matrix__impl.html#o13">dither_matrix_impl</a><li>fini
+: <a class="el" href="structstp__module.html#o6">stp_module</a></ul>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>get_appname
+: <a class="el" href="structstp__image.html#o5">stp_image</a><li>get_row
+: <a class="el" href="structstp__image.html#o4">stp_image</a>, <a class="el" href="structstp__colorfuncs__t.html#o1">stp_colorfuncs_t</a></ul>
+<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
+<li>handle
+: <a class="el" href="structstp__module.html#o4">stp_module</a><li>height
+: <a class="el" href="structstp__papersize__t.html#o4">stp_papersize_t</a>, <a class="el" href="structstp__image.html#o3">stp_image</a><li>help
+: <a class="el" href="structstp__parameter__t.html#o3">stp_parameter_t</a></ul>
+<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+<li>i_own
+: <a class="el" href="structdither__matrix__impl.html#o10">dither_matrix_impl</a><li>imageable_area
+: <a class="el" href="structstp__printfuncs__t.html#o3">stp_printfuncs_t</a><li>index
+: <a class="el" href="structdither__matrix__impl.html#o9">dither_matrix_impl</a><li>init
+: <a class="el" href="structstp__module.html#o5">stp_module</a>, <a class="el" href="structstp__image.html#o0">stp_image</a>, <a class="el" href="structstp__colorfuncs__t.html#o0">stp_colorfuncs_t</a><li>integer
+: <a class="el" href="structstp__parameter__t.html#o22">stp_parameter_t</a>, <a class="el" href="unionstp__mxml__value__u.html#o1">stp_mxml_value_u</a><li>is_active
+: <a class="el" href="structstp__parameter__t.html#o8">stp_parameter_t</a><li>is_mandatory
+: <a class="el" href="structstp__parameter__t.html#o7">stp_parameter_t</a></ul>
+<h3><a class="anchor" name="index_j">- j -</a></h3><ul>
+<li>jet
+: <a class="el" href="structstp__weave__t.html#o2">stp_weave_t</a></ul>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>last_child
+: <a class="el" href="structstp__mxml__node__s.html#o5">stp_mxml_node_s</a><li>last_x
+: <a class="el" href="structdither__matrix__impl.html#o5">dither_matrix_impl</a><li>last_x_mod
+: <a class="el" href="structdither__matrix__impl.html#o6">dither_matrix_impl</a><li>last_y
+: <a class="el" href="structdither__matrix__impl.html#o7">dither_matrix_impl</a><li>last_y_mod
+: <a class="el" href="structdither__matrix__impl.html#o8">dither_matrix_impl</a><li>left
+: <a class="el" href="structstp__papersize__t.html#o6">stp_papersize_t</a><li>limit
+: <a class="el" href="structstp__printfuncs__t.html#o4">stp_printfuncs_t</a><li>list_parameters
+: <a class="el" href="structstp__printfuncs__t.html#o0">stp_printfuncs_t</a>, <a class="el" href="structstp__colorfuncs__t.html#o2">stp_colorfuncs_t</a><li>logicalpassstart
+: <a class="el" href="structstp__pass__t.html#o2">stp_pass_t</a>, <a class="el" href="structstp__weave__t.html#o4">stp_weave_t</a><li>long_name
+: <a class="el" href="structstp__color.html#o1">stp_color</a><li>lower
+: <a class="el" href="structstp__int__bound__t.html#o0">stp_int_bound_t</a>, <a class="el" href="structstp__double__bound__t.html#o0">stp_double_bound_t</a></ul>
+<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
+<li>major
+: <a class="el" href="structstp__module__version.html#o0">stp_module_version</a><li>matrix
+: <a class="el" href="structdither__matrix__impl.html#o14">dither_matrix_impl</a><li>media_size
+: <a class="el" href="structstp__printfuncs__t.html#o2">stp_printfuncs_t</a><li>minor
+: <a class="el" href="structstp__module__version.html#o1">stp_module_version</a><li>missingstartrows
+: <a class="el" href="structstp__pass__t.html#o1">stp_pass_t</a>, <a class="el" href="structstp__weave__t.html#o3">stp_weave_t</a></ul>
+<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+<li>name
+: <a class="el" href="structstp__parameter__t.html#o0">stp_parameter_t</a>, <a class="el" href="structstp__param__string__t.html#o0">stp_param_string_t</a>, <a class="el" href="structstp__papersize__t.html#o0">stp_papersize_t</a>, <a class="el" href="structstp__mxml__value__s.html#o0">stp_mxml_value_s</a>, <a class="el" href="structstp__mxml__attr__s.html#o0">stp_mxml_attr_s</a>, <a class="el" href="structstp__module.html#o0">stp_module</a><li>ncolors
+: <a class="el" href="structstp__linebounds__t.html#o0">stp_linebounds_t</a>, <a class="el" href="structstp__linebufs__t.html#o0">stp_linebufs_t</a>, <a class="el" href="structstp__linecount__t.html#o0">stp_linecount_t</a>, <a class="el" href="structstp__lineactive__t.html#o0">stp_lineactive_t</a>, <a class="el" href="structstp__lineoff__t.html#o0">stp_lineoff_t</a><li>next
+: <a class="el" href="structstp__mxml__node__s.html#o1">stp_mxml_node_s</a><li>num_attrs
+: <a class="el" href="structstp__mxml__value__s.html#o1">stp_mxml_value_s</a><li>numsizes
+: <a class="el" href="structstp__shade.html#o1">stp_shade</a></ul>
+<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
+<li>opaque
+: <a class="el" href="unionstp__mxml__value__u.html#o2">stp_mxml_value_u</a></ul>
+<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+<li>p_class
+: <a class="el" href="structstp__parameter__t.html#o5">stp_parameter_t</a><li>p_level
+: <a class="el" href="structstp__parameter__t.html#o6">stp_parameter_t</a><li>p_type
+: <a class="el" href="structstp__parameter__t.html#o4">stp_parameter_t</a><li>paper_unit
+: <a class="el" href="structstp__papersize__t.html#o9">stp_papersize_t</a><li>parameters
+: <a class="el" href="structstp__printfuncs__t.html#o1">stp_printfuncs_t</a><li>parent
+: <a class="el" href="structstp__mxml__node__s.html#o3">stp_mxml_node_s</a><li>pass
+: <a class="el" href="structstp__pass__t.html#o0">stp_pass_t</a>, <a class="el" href="structstp__weave__t.html#o1">stp_weave_t</a><li>physpassend
+: <a class="el" href="structstp__pass__t.html#o4">stp_pass_t</a>, <a class="el" href="structstp__weave__t.html#o6">stp_weave_t</a><li>physpassstart
+: <a class="el" href="structstp__pass__t.html#o3">stp_pass_t</a>, <a class="el" href="structstp__weave__t.html#o5">stp_weave_t</a><li>prescaled
+: <a class="el" href="structstp__dither__matrix__generic.html#o3">stp_dither_matrix_generic</a>, <a class="el" href="structstp__dither__matrix__normal.html#o3">stp_dither_matrix_normal</a>, <a class="el" href="structstp__dither__matrix__short.html#o3">stp_dither_matrix_short</a><li>prev
+: <a class="el" href="structstp__mxml__node__s.html#o2">stp_mxml_node_s</a><li>print
+: <a class="el" href="structstp__printfuncs__t.html#o5">stp_printfuncs_t</a><li>printer_list
+: <a class="el" href="structstp__family.html#o1">stp_family</a><li>printfuncs
+: <a class="el" href="structstp__family.html#o0">stp_family</a></ul>
+<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
+<li>read_only
+: <a class="el" href="structstp__parameter__t.html#o11">stp_parameter_t</a><li>real
+: <a class="el" href="unionstp__mxml__value__u.html#o3">stp_mxml_value_u</a><li>rep
+: <a class="el" href="structstp__image.html#o7">stp_image</a><li>reset
+: <a class="el" href="structstp__image.html#o1">stp_image</a><li>right
+: <a class="el" href="structstp__papersize__t.html#o8">stp_papersize_t</a><li>row
+: <a class="el" href="structstp__weave__t.html#o0">stp_weave_t</a></ul>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>s_cache
+: <a class="el" href="structstp__cached__curve__t.html#o2">stp_cached_curve_t</a><li>short_name
+: <a class="el" href="structstp__color.html#o0">stp_color</a><li>start_job
+: <a class="el" href="structstp__printfuncs__t.html#o9">stp_printfuncs_t</a><li>start_pos
+: <a class="el" href="structstp__linebounds__t.html#o1">stp_linebounds_t</a><li>str
+: <a class="el" href="structstp__parameter__t.html#o24">stp_parameter_t</a><li>string
+: <a class="el" href="structstp__mxml__text__s.html#o1">stp_mxml_text_s</a><li>subpass
+: <a class="el" href="structstp__pass__t.html#o5">stp_pass_t</a><li>syms
+: <a class="el" href="structstp__module.html#o7">stp_module</a></ul>
+<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
+<li>text
+: <a class="el" href="structstp__parameter__t.html#o1">stp_parameter_t</a>, <a class="el" href="structstp__param__string__t.html#o1">stp_param_string_t</a>, <a class="el" href="structstp__papersize__t.html#o1">stp_papersize_t</a>, <a class="el" href="unionstp__mxml__value__u.html#o4">stp_mxml_value_u</a><li>top
+: <a class="el" href="structstp__papersize__t.html#o5">stp_papersize_t</a><li>total_size
+: <a class="el" href="structdither__matrix__impl.html#o4">dither_matrix_impl</a><li>type
+: <a class="el" href="structstp__mxml__node__s.html#o0">stp_mxml_node_s</a></ul>
+<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
+<li>upper
+: <a class="el" href="structstp__int__bound__t.html#o1">stp_int_bound_t</a>, <a class="el" href="structstp__double__bound__t.html#o1">stp_double_bound_t</a></ul>
+<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
+<li>v
+: <a class="el" href="structstp__linebufs__t.html#o1">stp_linebufs_t</a>, <a class="el" href="structstp__linecount__t.html#o1">stp_linecount_t</a>, <a class="el" href="structstp__lineactive__t.html#o1">stp_lineactive_t</a>, <a class="el" href="structstp__lineoff__t.html#o1">stp_lineoff_t</a><li>value
+: <a class="el" href="structstp__mxml__node__s.html#o6">stp_mxml_node_s</a>, <a class="el" href="structstp__mxml__attr__s.html#o1">stp_mxml_attr_s</a>, <a class="el" href="structstp__shade.html#o0">stp_shade</a>, <a class="el" href="structstp__dotsize.html#o1">stp_dotsize</a><li>verify
+: <a class="el" href="structstp__printfuncs__t.html#o8">stp_printfuncs_t</a><li>verify_this_parameter
+: <a class="el" href="structstp__parameter__t.html#o10">stp_parameter_t</a><li>version
+: <a class="el" href="structstp__module.html#o1">stp_module</a></ul>
+<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
+<li>whitespace
+: <a class="el" href="structstp__mxml__text__s.html#o0">stp_mxml_text_s</a><li>width
+: <a class="el" href="structstp__papersize__t.html#o3">stp_papersize_t</a>, <a class="el" href="structstp__image.html#o2">stp_image</a></ul>
+<h3><a class="anchor" name="index_x">- x -</a></h3><ul>
+<li>x
+: <a class="el" href="structstp__dither__matrix__generic.html#o0">stp_dither_matrix_generic</a>, <a class="el" href="structstp__dither__matrix__normal.html#o0">stp_dither_matrix_normal</a>, <a class="el" href="structstp__dither__matrix__short.html#o0">stp_dither_matrix_short</a>, <a class="el" href="structstp__curve__point__t.html#o0">stp_curve_point_t</a><li>x_offset
+: <a class="el" href="structdither__matrix__impl.html#o11">dither_matrix_impl</a><li>x_size
+: <a class="el" href="structdither__matrix__impl.html#o2">dither_matrix_impl</a></ul>
+<h3><a class="anchor" name="index_y">- y -</a></h3><ul>
+<li>y
+: <a class="el" href="structstp__dither__matrix__generic.html#o1">stp_dither_matrix_generic</a>, <a class="el" href="structstp__dither__matrix__normal.html#o1">stp_dither_matrix_normal</a>, <a class="el" href="structstp__dither__matrix__short.html#o1">stp_dither_matrix_short</a>, <a class="el" href="structstp__curve__point__t.html#o1">stp_curve_point_t</a><li>y_offset
+: <a class="el" href="structdither__matrix__impl.html#o12">dither_matrix_impl</a><li>y_size
+: <a class="el" href="structdither__matrix__impl.html#o3">dither_matrix_impl</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/globals.html b/doc/gutenprint/html/globals.html
new file mode 100644
index 0000000..47b90f2
--- /dev/null
+++ b/doc/gutenprint/html/globals.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"><a class="qindexHL" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindexHL" href="globals.html#index__">_</a> | <a class="qindex" href="globals_0x62.html#index_b">b</a> | <a class="qindex" href="globals_0x63.html#index_c">c</a> | <a class="qindex" href="globals_0x64.html#index_d">d</a> | <a class="qindex" href="globals_0x67.html#index_g">g</a> | <a class="qindex" href="globals_0x6e.html#index_n">n</a> | <a class="qindex" href="globals_0x70.html#index_p">p</a> | <a class="qindex" href="globals_0x73.html#index_s">s</a> | <a class="qindex" href="globals_0x74.html#index_t">t</a></div>
+
+<p>
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index__">- _ -</a></h3><ul>
+<li>_
+: <a class="el" href="group__intl.html#ga5">gutenprint-intl.h</a>, <a class="el" href="group__intl__internal.html#ga5">gutenprint-intl-internal.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/globals_0x62.html b/doc/gutenprint/html/globals_0x62.html
new file mode 100644
index 0000000..db5ccc0
--- /dev/null
+++ b/doc/gutenprint/html/globals_0x62.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"> | <a class="qindexHL" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindex" href="globals.html#index__">_</a> | <a class="qindexHL" href="globals_0x62.html#index_b">b</a> | <a class="qindex" href="globals_0x63.html#index_c">c</a> | <a class="qindex" href="globals_0x64.html#index_d">d</a> | <a class="qindex" href="globals_0x67.html#index_g">g</a> | <a class="qindex" href="globals_0x6e.html#index_n">n</a> | <a class="qindex" href="globals_0x70.html#index_p">p</a> | <a class="qindex" href="globals_0x73.html#index_s">s</a> | <a class="qindex" href="globals_0x74.html#index_t">t</a></div>
+
+<p>
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
+<li>bindtextdomain
+: <a class="el" href="group__intl.html#ga4">gutenprint-intl.h</a>, <a class="el" href="group__intl__internal.html#ga4">gutenprint-intl-internal.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/globals_0x63.html b/doc/gutenprint/html/globals_0x63.html
new file mode 100644
index 0000000..12956bd
--- /dev/null
+++ b/doc/gutenprint/html/globals_0x63.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"> | <a class="qindexHL" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindex" href="globals.html#index__">_</a> | <a class="qindex" href="globals_0x62.html#index_b">b</a> | <a class="qindexHL" href="globals_0x63.html#index_c">c</a> | <a class="qindex" href="globals_0x64.html#index_d">d</a> | <a class="qindex" href="globals_0x67.html#index_g">g</a> | <a class="qindex" href="globals_0x6e.html#index_n">n</a> | <a class="qindex" href="globals_0x70.html#index_p">p</a> | <a class="qindex" href="globals_0x73.html#index_s">s</a> | <a class="qindex" href="globals_0x74.html#index_t">t</a></div>
+
+<p>
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>compdata_t
+: <a class="el" href="group__vars.html#ga6">vars.h</a><li>CURVE_CACHE_FAST_COUNT
+: <a class="el" href="curve-cache_8h.html#a2">curve-cache.h</a><li>CURVE_CACHE_FAST_DOUBLE
+: <a class="el" href="curve-cache_8h.html#a1">curve-cache.h</a><li>CURVE_CACHE_FAST_USHORT
+: <a class="el" href="curve-cache_8h.html#a0">curve-cache.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/globals_0x64.html b/doc/gutenprint/html/globals_0x64.html
new file mode 100644
index 0000000..9ae3005
--- /dev/null
+++ b/doc/gutenprint/html/globals_0x64.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"> | <a class="qindexHL" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindex" href="globals.html#index__">_</a> | <a class="qindex" href="globals_0x62.html#index_b">b</a> | <a class="qindex" href="globals_0x63.html#index_c">c</a> | <a class="qindexHL" href="globals_0x64.html#index_d">d</a> | <a class="qindex" href="globals_0x67.html#index_g">g</a> | <a class="qindex" href="globals_0x6e.html#index_n">n</a> | <a class="qindex" href="globals_0x70.html#index_p">p</a> | <a class="qindex" href="globals_0x73.html#index_s">s</a> | <a class="qindex" href="globals_0x74.html#index_t">t</a></div>
+
+<p>
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
+<li>dcgettext
+: <a class="el" href="group__intl.html#ga3">gutenprint-intl.h</a>, <a class="el" href="group__intl__internal.html#ga3">gutenprint-intl-internal.h</a><li>dgettext
+: <a class="el" href="group__intl.html#ga2">gutenprint-intl.h</a>, <a class="el" href="group__intl__internal.html#ga2">gutenprint-intl-internal.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/globals_0x67.html b/doc/gutenprint/html/globals_0x67.html
new file mode 100644
index 0000000..45fcf85
--- /dev/null
+++ b/doc/gutenprint/html/globals_0x67.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"> | <a class="qindexHL" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindex" href="globals.html#index__">_</a> | <a class="qindex" href="globals_0x62.html#index_b">b</a> | <a class="qindex" href="globals_0x63.html#index_c">c</a> | <a class="qindex" href="globals_0x64.html#index_d">d</a> | <a class="qindexHL" href="globals_0x67.html#index_g">g</a> | <a class="qindex" href="globals_0x6e.html#index_n">n</a> | <a class="qindex" href="globals_0x70.html#index_p">p</a> | <a class="qindex" href="globals_0x73.html#index_s">s</a> | <a class="qindex" href="globals_0x74.html#index_t">t</a></div>
+
+<p>
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>gettext
+: <a class="el" href="group__intl.html#ga1">gutenprint-intl.h</a>, <a class="el" href="group__intl__internal.html#ga1">gutenprint-intl-internal.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/globals_0x6e.html b/doc/gutenprint/html/globals_0x6e.html
new file mode 100644
index 0000000..78d6f22
--- /dev/null
+++ b/doc/gutenprint/html/globals_0x6e.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"> | <a class="qindexHL" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindex" href="globals.html#index__">_</a> | <a class="qindex" href="globals_0x62.html#index_b">b</a> | <a class="qindex" href="globals_0x63.html#index_c">c</a> | <a class="qindex" href="globals_0x64.html#index_d">d</a> | <a class="qindex" href="globals_0x67.html#index_g">g</a> | <a class="qindexHL" href="globals_0x6e.html#index_n">n</a> | <a class="qindex" href="globals_0x70.html#index_p">p</a> | <a class="qindex" href="globals_0x73.html#index_s">s</a> | <a class="qindex" href="globals_0x74.html#index_t">t</a></div>
+
+<p>
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+<li>N_
+: <a class="el" href="group__intl.html#ga6">gutenprint-intl.h</a>, <a class="el" href="group__intl__internal.html#ga6">gutenprint-intl-internal.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/globals_0x70.html b/doc/gutenprint/html/globals_0x70.html
new file mode 100644
index 0000000..58c68d7
--- /dev/null
+++ b/doc/gutenprint/html/globals_0x70.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"> | <a class="qindexHL" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindex" href="globals.html#index__">_</a> | <a class="qindex" href="globals_0x62.html#index_b">b</a> | <a class="qindex" href="globals_0x63.html#index_c">c</a> | <a class="qindex" href="globals_0x64.html#index_d">d</a> | <a class="qindex" href="globals_0x67.html#index_g">g</a> | <a class="qindex" href="globals_0x6e.html#index_n">n</a> | <a class="qindexHL" href="globals_0x70.html#index_p">p</a> | <a class="qindex" href="globals_0x73.html#index_s">s</a> | <a class="qindex" href="globals_0x74.html#index_t">t</a></div>
+
+<p>
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+<li>PAPERSIZE_ENGLISH_EXTENDED
+: <a class="el" href="group__papersize.html#gga5a2">paper.h</a><li>PAPERSIZE_ENGLISH_STANDARD
+: <a class="el" href="group__papersize.html#gga5a0">paper.h</a><li>PAPERSIZE_METRIC_EXTENDED
+: <a class="el" href="group__papersize.html#gga5a3">paper.h</a><li>PAPERSIZE_METRIC_STANDARD
+: <a class="el" href="group__papersize.html#gga5a1">paper.h</a><li>PARAMETER_BAD
+: <a class="el" href="group__vars.html#gga136a33">vars.h</a><li>PARAMETER_INACTIVE
+: <a class="el" href="group__vars.html#gga136a35">vars.h</a><li>PARAMETER_OK
+: <a class="el" href="group__vars.html#gga136a34">vars.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/globals_0x73.html b/doc/gutenprint/html/globals_0x73.html
new file mode 100644
index 0000000..ce946cd
--- /dev/null
+++ b/doc/gutenprint/html/globals_0x73.html
@@ -0,0 +1,644 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"> | <a class="qindexHL" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindex" href="globals.html#index__">_</a> | <a class="qindex" href="globals_0x62.html#index_b">b</a> | <a class="qindex" href="globals_0x63.html#index_c">c</a> | <a class="qindex" href="globals_0x64.html#index_d">d</a> | <a class="qindex" href="globals_0x67.html#index_g">g</a> | <a class="qindex" href="globals_0x6e.html#index_n">n</a> | <a class="qindex" href="globals_0x70.html#index_p">p</a> | <a class="qindexHL" href="globals_0x73.html#index_s">s</a> | <a class="qindex" href="globals_0x74.html#index_t">t</a></div>
+
+<p>
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>stp_abort()
+: <a class="el" href="group__util.html#ga3">util.h</a><li>stp_allocate_component_data()
+: <a class="el" href="group__vars.html#ga124">vars.h</a><li>stp_array_copy()
+: <a class="el" href="group__array.html#ga3">array.h</a><li>stp_array_create()
+: <a class="el" href="group__array.html#ga1">array.h</a><li>stp_array_create_copy()
+: <a class="el" href="group__array.html#ga4">array.h</a><li>stp_array_create_from_xmltree()
+: <a class="el" href="xml_8h.html#a19">xml.h</a><li>stp_array_destroy()
+: <a class="el" href="group__array.html#ga2">array.h</a><li>stp_array_get_data()
+: <a class="el" href="group__array.html#ga8">array.h</a><li>stp_array_get_point()
+: <a class="el" href="group__array.html#ga10">array.h</a><li>stp_array_get_sequence()
+: <a class="el" href="group__array.html#ga11">array.h</a><li>stp_array_get_size()
+: <a class="el" href="group__array.html#ga6">array.h</a><li>stp_array_set_data()
+: <a class="el" href="group__array.html#ga7">array.h</a><li>stp_array_set_point()
+: <a class="el" href="group__array.html#ga9">array.h</a><li>stp_array_set_size()
+: <a class="el" href="group__array.html#ga5">array.h</a><li>stp_array_t
+: <a class="el" href="group__array.html#ga0">array.h</a><li>stp_asprintf()
+: <a class="el" href="group__util.html#ga17">util.h</a><li>STP_BINARY_AGE
+: <a class="el" href="group__version.html#ga11">gutenprint-version.h</a><li>stp_binary_age
+: <a class="el" href="group__version.html#ga4">gutenprint-version.h</a><li>stp_catprintf()
+: <a class="el" href="group__util.html#ga18">util.h</a><li>stp_channel_add()
+: <a class="el" href="channel_8h.html#a2">channel.h</a><li>stp_channel_convert()
+: <a class="el" href="channel_8h.html#a19">channel.h</a><li>stp_channel_get_black_channel()
+: <a class="el" href="channel_8h.html#a11">channel.h</a><li>stp_channel_get_curve()
+: <a class="el" href="channel_8h.html#a17">channel.h</a><li>stp_channel_get_cutoff_adjustment()
+: <a class="el" href="channel_8h.html#a9">channel.h</a><li>stp_channel_get_density_adjustment()
+: <a class="el" href="channel_8h.html#a5">channel.h</a><li>stp_channel_get_gloss_channel()
+: <a class="el" href="channel_8h.html#a13">channel.h</a><li>stp_channel_get_gloss_limit()
+: <a class="el" href="channel_8h.html#a15">channel.h</a><li>stp_channel_get_ink_limit()
+: <a class="el" href="channel_8h.html#a7">channel.h</a><li>stp_channel_get_input()
+: <a class="el" href="channel_8h.html#a20">channel.h</a><li>stp_channel_get_output()
+: <a class="el" href="channel_8h.html#a21">channel.h</a><li>stp_channel_get_value()
+: <a class="el" href="channel_8h.html#a3">channel.h</a><li>stp_channel_initialize()
+: <a class="el" href="channel_8h.html#a18">channel.h</a><li>STP_CHANNEL_LIMIT
+: <a class="el" href="group__image.html#ga8">image.h</a><li>stp_channel_reset()
+: <a class="el" href="channel_8h.html#a0">channel.h</a><li>stp_channel_reset_channel()
+: <a class="el" href="channel_8h.html#a1">channel.h</a><li>stp_channel_set_black_channel()
+: <a class="el" href="channel_8h.html#a10">channel.h</a><li>stp_channel_set_curve()
+: <a class="el" href="channel_8h.html#a16">channel.h</a><li>stp_channel_set_cutoff_adjustment()
+: <a class="el" href="channel_8h.html#a8">channel.h</a><li>stp_channel_set_density_adjustment()
+: <a class="el" href="channel_8h.html#a4">channel.h</a><li>stp_channel_set_gloss_channel()
+: <a class="el" href="channel_8h.html#a12">channel.h</a><li>stp_channel_set_gloss_limit()
+: <a class="el" href="channel_8h.html#a14">channel.h</a><li>stp_channel_set_ink_limit()
+: <a class="el" href="channel_8h.html#a6">channel.h</a><li>stp_check_array_parameter()
+: <a class="el" href="group__vars.html#ga107">vars.h</a><li>stp_check_boolean_parameter()
+: <a class="el" href="group__vars.html#ga105">vars.h</a><li>stp_check_curve_parameter()
+: <a class="el" href="group__vars.html#ga106">vars.h</a><li>stp_check_dimension_parameter()
+: <a class="el" href="group__vars.html#ga104">vars.h</a><li>stp_check_file_parameter()
+: <a class="el" href="group__vars.html#ga101">vars.h</a><li>stp_check_float_parameter()
+: <a class="el" href="group__vars.html#ga102">vars.h</a><li>stp_check_int_parameter()
+: <a class="el" href="group__vars.html#ga103">vars.h</a><li>stp_check_raw_parameter()
+: <a class="el" href="group__vars.html#ga108">vars.h</a><li>stp_check_string_parameter()
+: <a class="el" href="group__vars.html#ga100">vars.h</a><li>stp_check_version()
+: <a class="el" href="group__version.html#ga6">gutenprint-version.h</a><li>STP_CHECK_VERSION
+: <a class="el" href="group__version.html#ga13">gutenprint-version.h</a><li>stp_clear_array_parameter()
+: <a class="el" href="group__vars.html#ga89">vars.h</a><li>stp_clear_boolean_parameter()
+: <a class="el" href="group__vars.html#ga87">vars.h</a><li>stp_clear_curve_parameter()
+: <a class="el" href="group__vars.html#ga88">vars.h</a><li>stp_clear_dimension_parameter()
+: <a class="el" href="group__vars.html#ga86">vars.h</a><li>stp_clear_file_parameter()
+: <a class="el" href="group__vars.html#ga83">vars.h</a><li>stp_clear_float_parameter()
+: <a class="el" href="group__vars.html#ga84">vars.h</a><li>stp_clear_int_parameter()
+: <a class="el" href="group__vars.html#ga85">vars.h</a><li>stp_clear_raw_parameter()
+: <a class="el" href="group__vars.html#ga90">vars.h</a><li>stp_clear_string_parameter()
+: <a class="el" href="group__vars.html#ga82">vars.h</a><li>stp_color_count()
+: <a class="el" href="group__color.html#ga7">color.h</a><li>stp_color_describe_parameter()
+: <a class="el" href="group__color.html#ga4">color.h</a><li>stp_color_get_long_name()
+: <a class="el" href="group__color.html#ga12">color.h</a><li>stp_color_get_name()
+: <a class="el" href="group__color.html#ga11">color.h</a><li>stp_color_get_row()
+: <a class="el" href="group__color.html#ga2">color.h</a><li>stp_color_init()
+: <a class="el" href="group__color.html#ga1">color.h</a><li>stp_color_list_parameters()
+: <a class="el" href="group__color.html#ga3">color.h</a><li>stp_color_register()
+: <a class="el" href="group__color.html#ga5">color.h</a><li>stp_color_t
+: <a class="el" href="group__color.html#ga0">color.h</a><li>stp_color_unregister()
+: <a class="el" href="group__color.html#ga6">color.h</a><li>stp_compute_linewidth_func
+: <a class="el" href="weave_8h.html#a4">weave.h</a><li>stp_compute_tiff_linewidth
+: <a class="el" href="weave_8h.html#a9">weave.h</a><li>stp_compute_uncompressed_linewidth
+: <a class="el" href="weave_8h.html#a10">weave.h</a><li>stp_const_parameter_list_t
+: <a class="el" href="group__vars.html#ga2">vars.h</a><li>stp_copy_data_func_t
+: <a class="el" href="group__vars.html#ga4">vars.h</a><li>stp_copy_options()
+: <a class="el" href="group__vars.html#ga130">vars.h</a><li>STP_CURRENT_INTERFACE
+: <a class="el" href="group__version.html#ga10">gutenprint-version.h</a><li>stp_current_interface
+: <a class="el" href="group__version.html#ga3">gutenprint-version.h</a><li>STP_CURVE_BOUNDS_CLIP
+: <a class="el" href="group__curve.html#gga50a9">curve.h</a><li>STP_CURVE_BOUNDS_ERROR
+: <a class="el" href="group__curve.html#gga50a10">curve.h</a><li>STP_CURVE_BOUNDS_RESCALE
+: <a class="el" href="group__curve.html#gga50a8">curve.h</a><li>stp_curve_bounds_t
+: <a class="el" href="group__curve.html#ga50">curve.h</a><li>stp_curve_cache_copy()
+: <a class="el" href="curve-cache_8h.html#a12">curve-cache.h</a><li>stp_curve_cache_curve_data()
+: <a class="el" href="curve-cache_8h.html#a4">curve-cache.h</a><li>stp_curve_cache_curve_invalidate()
+: <a class="el" href="curve-cache_8h.html#a6">curve-cache.h</a><li>stp_curve_cache_get_count()
+: <a class="el" href="curve-cache_8h.html#a9">curve-cache.h</a><li>stp_curve_cache_get_curve()
+: <a class="el" href="curve-cache_8h.html#a5">curve-cache.h</a><li>stp_curve_cache_get_double_data()
+: <a class="el" href="curve-cache_8h.html#a11">curve-cache.h</a><li>stp_curve_cache_get_ushort_data()
+: <a class="el" href="curve-cache_8h.html#a10">curve-cache.h</a><li>stp_curve_cache_set_curve()
+: <a class="el" href="curve-cache_8h.html#a7">curve-cache.h</a><li>stp_curve_cache_set_curve_copy()
+: <a class="el" href="curve-cache_8h.html#a8">curve-cache.h</a><li>stp_curve_compose()
+: <a class="el" href="group__curve.html#ga46">curve.h</a><li>STP_CURVE_COMPOSE_ADD
+: <a class="el" href="group__curve.html#gga49a5">curve.h</a><li>STP_CURVE_COMPOSE_EXPONENTIATE
+: <a class="el" href="group__curve.html#gga49a7">curve.h</a><li>STP_CURVE_COMPOSE_MULTIPLY
+: <a class="el" href="group__curve.html#gga49a6">curve.h</a><li>stp_curve_compose_t
+: <a class="el" href="group__curve.html#ga49">curve.h</a><li>stp_curve_copy()
+: <a class="el" href="group__curve.html#ga3">curve.h</a><li>stp_curve_count_points()
+: <a class="el" href="group__curve.html#ga10">curve.h</a><li>stp_curve_create()
+: <a class="el" href="group__curve.html#ga1">curve.h</a><li>stp_curve_create_copy()
+: <a class="el" href="group__curve.html#ga2">curve.h</a><li>stp_curve_create_from_file()
+: <a class="el" href="group__curve.html#ga44">curve.h</a><li>stp_curve_create_from_stream()
+: <a class="el" href="group__curve.html#ga43">curve.h</a><li>stp_curve_create_from_string()
+: <a class="el" href="group__curve.html#ga45">curve.h</a><li>stp_curve_create_from_xmltree()
+: <a class="el" href="xml_8h.html#a17">xml.h</a><li>stp_curve_destroy()
+: <a class="el" href="group__curve.html#ga4">curve.h</a><li>stp_curve_free_curve_cache()
+: <a class="el" href="curve-cache_8h.html#a3">curve-cache.h</a><li>stp_curve_get_bounds()
+: <a class="el" href="group__curve.html#ga6">curve.h</a><li>stp_curve_get_data()
+: <a class="el" href="group__curve.html#ga24">curve.h</a><li>stp_curve_get_data_points()
+: <a class="el" href="group__curve.html#ga25">curve.h</a><li>stp_curve_get_float_data()
+: <a class="el" href="group__curve.html#ga26">curve.h</a><li>stp_curve_get_gamma()
+: <a class="el" href="group__curve.html#ga35">curve.h</a><li>stp_curve_get_int_data()
+: <a class="el" href="group__curve.html#ga29">curve.h</a><li>stp_curve_get_interpolation_type()
+: <a class="el" href="group__curve.html#ga12">curve.h</a><li>stp_curve_get_long_data()
+: <a class="el" href="group__curve.html#ga27">curve.h</a><li>stp_curve_get_point()
+: <a class="el" href="group__curve.html#ga37">curve.h</a><li>stp_curve_get_range()
+: <a class="el" href="group__curve.html#ga9">curve.h</a><li>stp_curve_get_sequence()
+: <a class="el" href="group__curve.html#ga33">curve.h</a><li>stp_curve_get_short_data()
+: <a class="el" href="group__curve.html#ga31">curve.h</a><li>stp_curve_get_subrange()
+: <a class="el" href="group__curve.html#ga22">curve.h</a><li>stp_curve_get_uint_data()
+: <a class="el" href="group__curve.html#ga30">curve.h</a><li>stp_curve_get_ulong_data()
+: <a class="el" href="group__curve.html#ga28">curve.h</a><li>stp_curve_get_ushort_data()
+: <a class="el" href="group__curve.html#ga32">curve.h</a><li>stp_curve_get_wrap()
+: <a class="el" href="group__curve.html#ga7">curve.h</a><li>stp_curve_interpolate_value()
+: <a class="el" href="group__curve.html#ga38">curve.h</a><li>stp_curve_is_piecewise()
+: <a class="el" href="group__curve.html#ga8">curve.h</a><li>stp_curve_resample()
+: <a class="el" href="group__curve.html#ga39">curve.h</a><li>stp_curve_rescale()
+: <a class="el" href="group__curve.html#ga40">curve.h</a><li>stp_curve_set_bounds()
+: <a class="el" href="group__curve.html#ga5">curve.h</a><li>stp_curve_set_data()
+: <a class="el" href="group__curve.html#ga13">curve.h</a><li>stp_curve_set_data_points()
+: <a class="el" href="group__curve.html#ga14">curve.h</a><li>stp_curve_set_float_data()
+: <a class="el" href="group__curve.html#ga15">curve.h</a><li>stp_curve_set_gamma()
+: <a class="el" href="group__curve.html#ga34">curve.h</a><li>stp_curve_set_int_data()
+: <a class="el" href="group__curve.html#ga18">curve.h</a><li>stp_curve_set_interpolation_type()
+: <a class="el" href="group__curve.html#ga11">curve.h</a><li>stp_curve_set_long_data()
+: <a class="el" href="group__curve.html#ga16">curve.h</a><li>stp_curve_set_point()
+: <a class="el" href="group__curve.html#ga36">curve.h</a><li>stp_curve_set_short_data()
+: <a class="el" href="group__curve.html#ga20">curve.h</a><li>stp_curve_set_subrange()
+: <a class="el" href="group__curve.html#ga23">curve.h</a><li>stp_curve_set_uint_data()
+: <a class="el" href="group__curve.html#ga19">curve.h</a><li>stp_curve_set_ulong_data()
+: <a class="el" href="group__curve.html#ga17">curve.h</a><li>stp_curve_set_ushort_data()
+: <a class="el" href="group__curve.html#ga21">curve.h</a><li>stp_curve_t
+: <a class="el" href="group__curve.html#ga0">curve.h</a><li>STP_CURVE_TYPE_LINEAR
+: <a class="el" href="group__curve.html#gga47a1">curve.h</a><li>STP_CURVE_TYPE_SPLINE
+: <a class="el" href="group__curve.html#gga47a2">curve.h</a><li>stp_curve_type_t
+: <a class="el" href="group__curve.html#ga47">curve.h</a><li>STP_CURVE_WRAP_AROUND
+: <a class="el" href="group__curve.html#gga48a4">curve.h</a><li>stp_curve_wrap_mode_t
+: <a class="el" href="group__curve.html#ga48">curve.h</a><li>STP_CURVE_WRAP_NONE
+: <a class="el" href="group__curve.html#gga48a3">curve.h</a><li>stp_curve_write()
+: <a class="el" href="group__curve.html#ga41">curve.h</a><li>stp_curve_write_string()
+: <a class="el" href="group__curve.html#ga42">curve.h</a><li>STP_DBG_CANON
+: <a class="el" href="group__util.html#ga39">util.h</a><li>STP_DBG_COLORFUNC
+: <a class="el" href="group__util.html#ga34">util.h</a><li>STP_DBG_CURVE
+: <a class="el" href="group__util.html#ga52">util.h</a><li>STP_DBG_CURVE_ERRORS
+: <a class="el" href="group__util.html#ga53">util.h</a><li>STP_DBG_ESCP2
+: <a class="el" href="group__util.html#ga38">util.h</a><li>STP_DBG_INK
+: <a class="el" href="group__util.html#ga35">util.h</a><li>STP_DBG_LEXMARK
+: <a class="el" href="group__util.html#ga40">util.h</a><li>STP_DBG_LIST
+: <a class="el" href="group__util.html#ga44">util.h</a><li>STP_DBG_LUT
+: <a class="el" href="group__util.html#ga33">util.h</a><li>STP_DBG_MARK_FILE
+: <a class="el" href="group__util.html#ga43">util.h</a><li>STP_DBG_MODULE
+: <a class="el" href="group__util.html#ga45">util.h</a><li>STP_DBG_OLYMPUS
+: <a class="el" href="group__util.html#ga51">util.h</a><li>STP_DBG_PAPER
+: <a class="el" href="group__util.html#ga47">util.h</a><li>STP_DBG_PATH
+: <a class="el" href="group__util.html#ga46">util.h</a><li>STP_DBG_PCL
+: <a class="el" href="group__util.html#ga37">util.h</a><li>STP_DBG_PRINTERS
+: <a class="el" href="group__util.html#ga48">util.h</a><li>STP_DBG_PS
+: <a class="el" href="group__util.html#ga36">util.h</a><li>STP_DBG_ROWS
+: <a class="el" href="group__util.html#ga42">util.h</a><li>STP_DBG_VARS
+: <a class="el" href="group__util.html#ga50">util.h</a><li>STP_DBG_WEAVE_PARAMS
+: <a class="el" href="group__util.html#ga41">util.h</a><li>STP_DBG_XML
+: <a class="el" href="group__util.html#ga49">util.h</a><li>stp_default_media_size()
+: <a class="el" href="group__papersize.html#ga4">paper.h</a><li>stp_default_settings()
+: <a class="el" href="group__vars.html#ga123">vars.h</a><li>stp_deprintf()
+: <a class="el" href="group__util.html#ga21">util.h</a><li>stp_describe_output()
+: <a class="el" href="group__printer.html#ga25">printers.h</a><li>stp_describe_parameter()
+: <a class="el" href="group__vars.html#ga47">vars.h</a><li>stp_describe_resolution()
+: <a class="el" href="group__vars.html#ga121">vars.h</a><li>stp_destroy_component_data()
+: <a class="el" href="group__vars.html#ga125">vars.h</a><li>stp_dither()
+: <a class="el" href="dither_8h.html#a40">dither.h</a><li>stp_dither_add_channel()
+: <a class="el" href="dither_8h.html#a38">dither.h</a><li>stp_dither_describe_parameter()
+: <a class="el" href="dither_8h.html#a24">dither.h</a><li>stp_dither_get_channel()
+: <a class="el" href="dither_8h.html#a39">dither.h</a><li>stp_dither_get_first_position()
+: <a class="el" href="dither_8h.html#a33">dither.h</a><li>stp_dither_get_last_position()
+: <a class="el" href="dither_8h.html#a34">dither.h</a><li>stp_dither_init()
+: <a class="el" href="dither_8h.html#a25">dither.h</a><li>stp_dither_internal()
+: <a class="el" href="dither_8h.html#a41">dither.h</a><li>stp_dither_list_parameters()
+: <a class="el" href="dither_8h.html#a23">dither.h</a><li>stp_dither_matrix_clone()
+: <a class="el" href="dither_8h.html#a18">dither.h</a><li>stp_dither_matrix_copy()
+: <a class="el" href="dither_8h.html#a19">dither.h</a><li>stp_dither_matrix_destroy()
+: <a class="el" href="dither_8h.html#a17">dither.h</a><li>stp_dither_matrix_generic_t
+: <a class="el" href="dither_8h.html#a7">dither.h</a><li>stp_dither_matrix_impl_t
+: <a class="el" href="dither_8h.html#a8">dither.h</a><li>stp_dither_matrix_init()
+: <a class="el" href="dither_8h.html#a13">dither.h</a><li>stp_dither_matrix_init_from_dither_array()
+: <a class="el" href="dither_8h.html#a16">dither.h</a><li>stp_dither_matrix_init_short()
+: <a class="el" href="dither_8h.html#a14">dither.h</a><li>stp_dither_matrix_iterated_init()
+: <a class="el" href="dither_8h.html#a11">dither.h</a><li>stp_dither_matrix_normal_t
+: <a class="el" href="dither_8h.html#a6">dither.h</a><li>stp_dither_matrix_scale_exponentially()
+: <a class="el" href="dither_8h.html#a20">dither.h</a><li>stp_dither_matrix_set_row()
+: <a class="el" href="dither_8h.html#a21">dither.h</a><li>stp_dither_matrix_shear()
+: <a class="el" href="dither_8h.html#a12">dither.h</a><li>stp_dither_matrix_short_t
+: <a class="el" href="dither_8h.html#a5">dither.h</a><li>stp_dither_matrix_validate_array()
+: <a class="el" href="dither_8h.html#a15">dither.h</a><li>stp_dither_set_adaptive_limit()
+: <a class="el" href="dither_8h.html#a32">dither.h</a><li>stp_dither_set_ink_spread()
+: <a class="el" href="dither_8h.html#a31">dither.h</a><li>stp_dither_set_inks()
+: <a class="el" href="dither_8h.html#a37">dither.h</a><li>stp_dither_set_inks_full()
+: <a class="el" href="dither_8h.html#a36">dither.h</a><li>stp_dither_set_inks_simple()
+: <a class="el" href="dither_8h.html#a35">dither.h</a><li>stp_dither_set_iterated_matrix()
+: <a class="el" href="dither_8h.html#a26">dither.h</a><li>stp_dither_set_matrix()
+: <a class="el" href="dither_8h.html#a27">dither.h</a><li>stp_dither_set_matrix_from_dither_array()
+: <a class="el" href="dither_8h.html#a28">dither.h</a><li>stp_dither_set_randomizer()
+: <a class="el" href="dither_8h.html#a30">dither.h</a><li>stp_dither_set_transition()
+: <a class="el" href="dither_8h.html#a29">dither.h</a><li>stp_dotsize_t
+: <a class="el" href="dither_8h.html#a9">dither.h</a><li>stp_dprintf()
+: <a class="el" href="group__util.html#ga20">util.h</a><li>STP_ECOLOR_C
+: <a class="el" href="dither_8h.html#a1">dither.h</a><li>STP_ECOLOR_K
+: <a class="el" href="dither_8h.html#a0">dither.h</a><li>STP_ECOLOR_M
+: <a class="el" href="dither_8h.html#a2">dither.h</a><li>STP_ECOLOR_Y
+: <a class="el" href="dither_8h.html#a3">dither.h</a><li>stp_end_job()
+: <a class="el" href="group__printer.html#ga17">printers.h</a><li>stp_eprintf()
+: <a class="el" href="group__util.html#ga15">util.h</a><li>stp_erprintf()
+: <a class="el" href="group__util.html#ga16">util.h</a><li>stp_erputc()
+: <a class="el" href="group__util.html#ga14">util.h</a><li>stp_family_register()
+: <a class="el" href="group__printer.html#ga20">printers.h</a><li>stp_family_t
+: <a class="el" href="group__printer.html#ga1">printers.h</a><li>stp_family_unregister()
+: <a class="el" href="group__printer.html#ga21">printers.h</a><li>stp_fill_parameter_settings()
+: <a class="el" href="group__vars.html#ga131">vars.h</a><li>stp_fill_tiff
+: <a class="el" href="weave_8h.html#a7">weave.h</a><li>stp_fill_uncompressed
+: <a class="el" href="weave_8h.html#a8">weave.h</a><li>stp_fillfunc
+: <a class="el" href="weave_8h.html#a2">weave.h</a><li>stp_find_standard_dither_array()
+: <a class="el" href="dither_8h.html#a22">dither.h</a><li>stp_flush_all()
+: <a class="el" href="weave_8h.html#a18">weave.h</a><li>stp_flush_debug_messages()
+: <a class="el" href="group__util.html#ga23">util.h</a><li>stp_flushfunc
+: <a class="el" href="weave_8h.html#a3">weave.h</a><li>stp_fold()
+: <a class="el" href="bit-ops_8h.html#a0">bit-ops.h</a><li>stp_free()
+: <a class="el" href="group__util.html#ga27">util.h</a><li>stp_free_data_func_t
+: <a class="el" href="group__vars.html#ga5">vars.h</a><li>stp_get_array_parameter()
+: <a class="el" href="group__vars.html#ga80">vars.h</a><li>stp_get_array_parameter_active()
+: <a class="el" href="group__vars.html#ga116">vars.h</a><li>stp_get_boolean_parameter()
+: <a class="el" href="group__vars.html#ga78">vars.h</a><li>stp_get_boolean_parameter_active()
+: <a class="el" href="group__vars.html#ga114">vars.h</a><li>stp_get_color_by_colorfuncs()
+: <a class="el" href="group__color.html#ga10">color.h</a><li>stp_get_color_by_index()
+: <a class="el" href="group__color.html#ga9">color.h</a><li>stp_get_color_by_name()
+: <a class="el" href="group__color.html#ga8">color.h</a><li>stp_get_color_conversion()
+: <a class="el" href="group__vars.html#ga16">vars.h</a><li>stp_get_component_data()
+: <a class="el" href="group__vars.html#ga126">vars.h</a><li>stp_get_curve_parameter()
+: <a class="el" href="group__vars.html#ga79">vars.h</a><li>stp_get_curve_parameter_active()
+: <a class="el" href="group__vars.html#ga115">vars.h</a><li>stp_get_debug_level()
+: <a class="el" href="group__util.html#ga19">util.h</a><li>stp_get_dimension_parameter()
+: <a class="el" href="group__vars.html#ga77">vars.h</a><li>stp_get_dimension_parameter_active()
+: <a class="el" href="group__vars.html#ga113">vars.h</a><li>stp_get_driver()
+: <a class="el" href="group__vars.html#ga13">vars.h</a><li>stp_get_errdata()
+: <a class="el" href="group__vars.html#ga36">vars.h</a><li>stp_get_errfunc()
+: <a class="el" href="group__vars.html#ga32">vars.h</a><li>stp_get_file_parameter()
+: <a class="el" href="group__vars.html#ga74">vars.h</a><li>stp_get_file_parameter_active()
+: <a class="el" href="group__vars.html#ga110">vars.h</a><li>stp_get_float_parameter()
+: <a class="el" href="group__vars.html#ga75">vars.h</a><li>stp_get_float_parameter_active()
+: <a class="el" href="group__vars.html#ga111">vars.h</a><li>stp_get_height()
+: <a class="el" href="group__vars.html#ga24">vars.h</a><li>stp_get_imageable_area()
+: <a class="el" href="group__vars.html#ga119">vars.h</a><li>stp_get_int_parameter()
+: <a class="el" href="group__vars.html#ga76">vars.h</a><li>stp_get_int_parameter_active()
+: <a class="el" href="group__vars.html#ga112">vars.h</a><li>stp_get_left()
+: <a class="el" href="group__vars.html#ga18">vars.h</a><li>stp_get_lineactive_by_pass()
+: <a class="el" href="weave_8h.html#a21">weave.h</a><li>stp_get_linebases_by_pass()
+: <a class="el" href="weave_8h.html#a23">weave.h</a><li>stp_get_linecount_by_pass()
+: <a class="el" href="weave_8h.html#a22">weave.h</a><li>stp_get_lineoffsets_by_pass()
+: <a class="el" href="weave_8h.html#a20">weave.h</a><li>stp_get_media_size()
+: <a class="el" href="group__vars.html#ga118">vars.h</a><li>stp_get_model_id()
+: <a class="el" href="group__printer.html#ga18">printers.h</a><li>stp_get_outdata()
+: <a class="el" href="group__vars.html#ga34">vars.h</a><li>stp_get_outfunc()
+: <a class="el" href="group__vars.html#ga30">vars.h</a><li>stp_get_page_height()
+: <a class="el" href="group__vars.html#ga28">vars.h</a><li>stp_get_page_width()
+: <a class="el" href="group__vars.html#ga26">vars.h</a><li>stp_get_papersize_by_index()
+: <a class="el" href="group__papersize.html#ga3">paper.h</a><li>stp_get_papersize_by_name()
+: <a class="el" href="group__papersize.html#ga1">paper.h</a><li>stp_get_papersize_by_size()
+: <a class="el" href="group__papersize.html#ga2">paper.h</a><li>stp_get_parameter_list()
+: <a class="el" href="group__vars.html#ga38">vars.h</a><li>stp_get_pass_by_pass()
+: <a class="el" href="weave_8h.html#a24">weave.h</a><li>stp_get_printer()
+: <a class="el" href="group__printer.html#ga6">printers.h</a><li>stp_get_printer_by_driver()
+: <a class="el" href="group__printer.html#ga5">printers.h</a><li>stp_get_printer_by_index()
+: <a class="el" href="group__printer.html#ga3">printers.h</a><li>stp_get_printer_by_long_name()
+: <a class="el" href="group__printer.html#ga4">printers.h</a><li>stp_get_printer_index_by_driver()
+: <a class="el" href="group__printer.html#ga7">printers.h</a><li>stp_get_raw_parameter()
+: <a class="el" href="group__vars.html#ga81">vars.h</a><li>stp_get_raw_parameter_active()
+: <a class="el" href="group__vars.html#ga117">vars.h</a><li>stp_get_release_version()
+: <a class="el" href="group__util.html#ga32">util.h</a><li>stp_get_size_limit()
+: <a class="el" href="group__vars.html#ga120">vars.h</a><li>stp_get_string_parameter()
+: <a class="el" href="group__vars.html#ga73">vars.h</a><li>stp_get_string_parameter_active()
+: <a class="el" href="group__vars.html#ga109">vars.h</a><li>stp_get_top()
+: <a class="el" href="group__vars.html#ga20">vars.h</a><li>stp_get_verified()
+: <a class="el" href="group__vars.html#ga128">vars.h</a><li>stp_get_version()
+: <a class="el" href="group__util.html#ga31">util.h</a><li>stp_get_width()
+: <a class="el" href="group__vars.html#ga22">vars.h</a><li>stp_image_conclude()
+: <a class="el" href="group__image.html#ga7">image.h</a><li>stp_image_get_appname()
+: <a class="el" href="group__image.html#ga6">image.h</a><li>stp_image_get_row()
+: <a class="el" href="group__image.html#ga5">image.h</a><li>stp_image_height()
+: <a class="el" href="group__image.html#ga4">image.h</a><li>stp_image_init()
+: <a class="el" href="group__image.html#ga1">image.h</a><li>stp_image_reset()
+: <a class="el" href="group__image.html#ga2">image.h</a><li>STP_IMAGE_STATUS_ABORT
+: <a class="el" href="group__image.html#gga9a3">image.h</a><li>STP_IMAGE_STATUS_OK
+: <a class="el" href="group__image.html#gga9a2">image.h</a><li>stp_image_status_t
+: <a class="el" href="group__image.html#ga9">image.h</a><li>stp_image_t
+: <a class="el" href="group__image.html#ga0">image.h</a><li>stp_image_width()
+: <a class="el" href="group__image.html#ga3">image.h</a><li>stp_init()
+: <a class="el" href="group__util.html#ga0">util.h</a><li>stp_init_debug_messages()
+: <a class="el" href="group__util.html#ga22">util.h</a><li>stp_initialize_printer_defaults()
+: <a class="el" href="group__printer.html#ga22">printers.h</a><li>stp_initialize_weave()
+: <a class="el" href="weave_8h.html#a17">weave.h</a><li>stp_interface_age
+: <a class="el" href="group__version.html#ga5">gutenprint-version.h</a><li>STP_INTERFACE_AGE
+: <a class="el" href="group__version.html#ga12">gutenprint-version.h</a><li>stp_known_papersizes()
+: <a class="el" href="group__papersize.html#ga0">paper.h</a><li>stp_list_copy()
+: <a class="el" href="group__list.html#ga8">list.h</a><li>stp_list_create()
+: <a class="el" href="group__list.html#ga7">list.h</a><li>stp_list_destroy()
+: <a class="el" href="group__list.html#ga9">list.h</a><li>stp_list_get_copyfunc()
+: <a class="el" href="group__list.html#ga19">list.h</a><li>stp_list_get_end()
+: <a class="el" href="group__list.html#ga11">list.h</a><li>stp_list_get_freefunc()
+: <a class="el" href="group__list.html#ga17">list.h</a><li>stp_list_get_item_by_index()
+: <a class="el" href="group__list.html#ga12">list.h</a><li>stp_list_get_item_by_long_name()
+: <a class="el" href="group__list.html#ga14">list.h</a><li>stp_list_get_item_by_name()
+: <a class="el" href="group__list.html#ga13">list.h</a><li>stp_list_get_length()
+: <a class="el" href="group__list.html#ga15">list.h</a><li>stp_list_get_long_namefunc()
+: <a class="el" href="group__list.html#ga23">list.h</a><li>stp_list_get_namefunc()
+: <a class="el" href="group__list.html#ga21">list.h</a><li>stp_list_get_sortfunc()
+: <a class="el" href="group__list.html#ga25">list.h</a><li>stp_list_get_start()
+: <a class="el" href="group__list.html#ga10">list.h</a><li>stp_list_item_create()
+: <a class="el" href="group__list.html#ga26">list.h</a><li>stp_list_item_destroy()
+: <a class="el" href="group__list.html#ga27">list.h</a><li>stp_list_item_get_data()
+: <a class="el" href="group__list.html#ga30">list.h</a><li>stp_list_item_next()
+: <a class="el" href="group__list.html#ga29">list.h</a><li>stp_list_item_prev()
+: <a class="el" href="group__list.html#ga28">list.h</a><li>stp_list_item_set_data()
+: <a class="el" href="group__list.html#ga31">list.h</a><li>stp_list_item_t
+: <a class="el" href="group__list.html#ga0">list.h</a><li>stp_list_node_free_data()
+: <a class="el" href="group__list.html#ga6">list.h</a><li>stp_list_set_copyfunc()
+: <a class="el" href="group__list.html#ga18">list.h</a><li>stp_list_set_freefunc()
+: <a class="el" href="group__list.html#ga16">list.h</a><li>stp_list_set_long_namefunc()
+: <a class="el" href="group__list.html#ga22">list.h</a><li>stp_list_set_namefunc()
+: <a class="el" href="group__list.html#ga20">list.h</a><li>stp_list_set_sortfunc()
+: <a class="el" href="group__list.html#ga24">list.h</a><li>stp_list_t
+: <a class="el" href="group__list.html#ga1">list.h</a><li>STP_MAJOR_VERSION
+: <a class="el" href="group__version.html#ga7">gutenprint-version.h</a><li>stp_major_version
+: <a class="el" href="group__version.html#ga0">gutenprint-version.h</a><li>stp_malloc()
+: <a class="el" href="group__util.html#ga24">util.h</a><li>STP_MAX_WEAVE
+: <a class="el" href="weave_8h.html#a0">weave.h</a><li>stp_merge_printvars()
+: <a class="el" href="group__vars.html#ga37">vars.h</a><li>STP_MICRO_VERSION
+: <a class="el" href="group__version.html#ga9">gutenprint-version.h</a><li>stp_micro_version
+: <a class="el" href="group__version.html#ga2">gutenprint-version.h</a><li>STP_MINOR_VERSION
+: <a class="el" href="group__version.html#ga8">gutenprint-version.h</a><li>stp_minor_version
+: <a class="el" href="group__version.html#ga1">gutenprint-version.h</a><li>STP_MODULE
+: <a class="el" href="gutenprint-module_8h.html#a0">gutenprint-module.h</a><li>STP_MODULE_CLASS_COLOR
+: <a class="el" href="module_8h.html#a13a5">module.h</a><li>STP_MODULE_CLASS_DITHER
+: <a class="el" href="module_8h.html#a13a6">module.h</a><li>STP_MODULE_CLASS_FAMILY
+: <a class="el" href="module_8h.html#a13a4">module.h</a><li>STP_MODULE_CLASS_INVALID
+: <a class="el" href="module_8h.html#a13a2">module.h</a><li>STP_MODULE_CLASS_MISC
+: <a class="el" href="module_8h.html#a13a3">module.h</a><li>stp_module_class_t
+: <a class="el" href="module_8h.html#a13">module.h</a><li>stp_module_close()
+: <a class="el" href="module_8h.html#a11">module.h</a><li>stp_module_exit()
+: <a class="el" href="module_8h.html#a8">module.h</a><li>stp_module_get_class()
+: <a class="el" href="module_8h.html#a12">module.h</a><li>stp_module_init()
+: <a class="el" href="module_8h.html#a10">module.h</a><li>stp_module_load()
+: <a class="el" href="module_8h.html#a7">module.h</a><li>stp_module_open()
+: <a class="el" href="module_8h.html#a9">module.h</a><li>stp_module_t
+: <a class="el" href="module_8h.html#a1">module.h</a><li>stp_module_version_t
+: <a class="el" href="module_8h.html#a0">module.h</a><li>STP_MXML_ADD_AFTER
+: <a class="el" href="mxml_8h.html#a12">mxml.h</a><li>STP_MXML_ADD_BEFORE
+: <a class="el" href="mxml_8h.html#a11">mxml.h</a><li>STP_MXML_ADD_TO_PARENT
+: <a class="el" href="mxml_8h.html#a13">mxml.h</a><li>stp_mxml_attr_t
+: <a class="el" href="mxml_8h.html#a15">mxml.h</a><li>STP_MXML_DESCEND
+: <a class="el" href="mxml_8h.html#a4">mxml.h</a><li>STP_MXML_DESCEND_FIRST
+: <a class="el" href="mxml_8h.html#a6">mxml.h</a><li>STP_MXML_ELEMENT
+: <a class="el" href="mxml_8h.html#a43a20">mxml.h</a><li>stp_mxml_element_t
+: <a class="el" href="mxml_8h.html#a16">mxml.h</a><li>STP_MXML_INTEGER
+: <a class="el" href="mxml_8h.html#a43a21">mxml.h</a><li>STP_MXML_NO_CALLBACK
+: <a class="el" href="mxml_8h.html#a2">mxml.h</a><li>STP_MXML_NO_DESCEND
+: <a class="el" href="mxml_8h.html#a5">mxml.h</a><li>STP_MXML_NO_PARENT
+: <a class="el" href="mxml_8h.html#a3">mxml.h</a><li>stp_mxml_node_t
+: <a class="el" href="mxml_8h.html#a19">mxml.h</a><li>STP_MXML_OPAQUE
+: <a class="el" href="mxml_8h.html#a43a22">mxml.h</a><li>STP_MXML_REAL
+: <a class="el" href="mxml_8h.html#a43a23">mxml.h</a><li>STP_MXML_TAB
+: <a class="el" href="mxml_8h.html#a1">mxml.h</a><li>STP_MXML_TEXT
+: <a class="el" href="mxml_8h.html#a43a24">mxml.h</a><li>stp_mxml_text_t
+: <a class="el" href="mxml_8h.html#a17">mxml.h</a><li>stp_mxml_type_e
+: <a class="el" href="mxml_8h.html#a43">mxml.h</a><li>stp_mxml_type_t
+: <a class="el" href="mxml_8h.html#a14">mxml.h</a><li>stp_mxml_value_t
+: <a class="el" href="mxml_8h.html#a18">mxml.h</a><li>STP_MXML_WRAP
+: <a class="el" href="mxml_8h.html#a0">mxml.h</a><li>STP_MXML_WS_AFTER_CLOSE
+: <a class="el" href="mxml_8h.html#a10">mxml.h</a><li>STP_MXML_WS_AFTER_OPEN
+: <a class="el" href="mxml_8h.html#a8">mxml.h</a><li>STP_MXML_WS_BEFORE_CLOSE
+: <a class="el" href="mxml_8h.html#a9">mxml.h</a><li>STP_MXML_WS_BEFORE_OPEN
+: <a class="el" href="mxml_8h.html#a7">mxml.h</a><li>stp_mxmlAdd()
+: <a class="el" href="mxml_8h.html#a25">mxml.h</a><li>stp_mxmlDelete()
+: <a class="el" href="mxml_8h.html#a26">mxml.h</a><li>stp_mxmlElementGetAttr()
+: <a class="el" href="mxml_8h.html#a27">mxml.h</a><li>stp_mxmlElementSetAttr()
+: <a class="el" href="mxml_8h.html#a28">mxml.h</a><li>stp_mxmlFindElement()
+: <a class="el" href="mxml_8h.html#a29">mxml.h</a><li>stp_mxmlLoadFile()
+: <a class="el" href="mxml_8h.html#a30">mxml.h</a><li>stp_mxmlLoadString()
+: <a class="el" href="mxml_8h.html#a31">mxml.h</a><li>stp_mxmlNewElement()
+: <a class="el" href="mxml_8h.html#a32">mxml.h</a><li>stp_mxmlNewInteger()
+: <a class="el" href="mxml_8h.html#a33">mxml.h</a><li>stp_mxmlNewOpaque()
+: <a class="el" href="mxml_8h.html#a34">mxml.h</a><li>stp_mxmlNewReal()
+: <a class="el" href="mxml_8h.html#a35">mxml.h</a><li>stp_mxmlNewText()
+: <a class="el" href="mxml_8h.html#a36">mxml.h</a><li>stp_mxmlRemove()
+: <a class="el" href="mxml_8h.html#a37">mxml.h</a><li>stp_mxmlSaveAllocString()
+: <a class="el" href="mxml_8h.html#a38">mxml.h</a><li>stp_mxmlSaveFile()
+: <a class="el" href="mxml_8h.html#a39">mxml.h</a><li>stp_mxmlSaveString()
+: <a class="el" href="mxml_8h.html#a40">mxml.h</a><li>stp_mxmlWalkNext()
+: <a class="el" href="mxml_8h.html#a41">mxml.h</a><li>stp_mxmlWalkPrev()
+: <a class="el" href="mxml_8h.html#a42">mxml.h</a><li>STP_NCOLORS
+: <a class="el" href="dither_8h.html#a4">dither.h</a><li>stp_node_copyfunc
+: <a class="el" href="group__list.html#ga3">list.h</a><li>stp_node_freefunc
+: <a class="el" href="group__list.html#ga2">list.h</a><li>stp_node_namefunc
+: <a class="el" href="group__list.html#ga4">list.h</a><li>stp_node_sortfunc
+: <a class="el" href="group__list.html#ga5">list.h</a><li>stp_outfunc_t
+: <a class="el" href="group__vars.html#ga3">vars.h</a><li>stp_pack_tiff
+: <a class="el" href="weave_8h.html#a5">weave.h</a><li>stp_pack_uncompressed
+: <a class="el" href="weave_8h.html#a6">weave.h</a><li>stp_packfunc
+: <a class="el" href="weave_8h.html#a1">weave.h</a><li>stp_papersize_unit_t
+: <a class="el" href="group__papersize.html#ga5">paper.h</a><li>STP_PARAMETER_ACTIVE
+: <a class="el" href="group__vars.html#gga135a32">vars.h</a><li>stp_parameter_activity_t
+: <a class="el" href="group__vars.html#ga135">vars.h</a><li>STP_PARAMETER_CLASS_CORE
+: <a class="el" href="group__vars.html#gga133a19">vars.h</a><li>STP_PARAMETER_CLASS_FEATURE
+: <a class="el" href="group__vars.html#gga133a17">vars.h</a><li>STP_PARAMETER_CLASS_INVALID
+: <a class="el" href="group__vars.html#gga133a20">vars.h</a><li>STP_PARAMETER_CLASS_OUTPUT
+: <a class="el" href="group__vars.html#gga133a18">vars.h</a><li>stp_parameter_class_t
+: <a class="el" href="group__vars.html#ga133">vars.h</a><li>STP_PARAMETER_DEFAULTED
+: <a class="el" href="group__vars.html#gga135a31">vars.h</a><li>stp_parameter_description_destroy()
+: <a class="el" href="group__vars.html#ga48">vars.h</a><li>stp_parameter_find()
+: <a class="el" href="group__vars.html#ga40">vars.h</a><li>stp_parameter_find_in_settings()
+: <a class="el" href="group__vars.html#ga49">vars.h</a><li>STP_PARAMETER_INACTIVE
+: <a class="el" href="group__vars.html#gga135a30">vars.h</a><li>STP_PARAMETER_LEVEL_ADVANCED
+: <a class="el" href="group__vars.html#gga134a22">vars.h</a><li>STP_PARAMETER_LEVEL_ADVANCED1
+: <a class="el" href="group__vars.html#gga134a23">vars.h</a><li>STP_PARAMETER_LEVEL_ADVANCED2
+: <a class="el" href="group__vars.html#gga134a24">vars.h</a><li>STP_PARAMETER_LEVEL_ADVANCED3
+: <a class="el" href="group__vars.html#gga134a25">vars.h</a><li>STP_PARAMETER_LEVEL_ADVANCED4
+: <a class="el" href="group__vars.html#gga134a26">vars.h</a><li>STP_PARAMETER_LEVEL_BASIC
+: <a class="el" href="group__vars.html#gga134a21">vars.h</a><li>STP_PARAMETER_LEVEL_EXTERNAL
+: <a class="el" href="group__vars.html#gga134a28">vars.h</a><li>STP_PARAMETER_LEVEL_INTERNAL
+: <a class="el" href="group__vars.html#gga134a27">vars.h</a><li>STP_PARAMETER_LEVEL_INVALID
+: <a class="el" href="group__vars.html#gga134a29">vars.h</a><li>stp_parameter_level_t
+: <a class="el" href="group__vars.html#ga134">vars.h</a><li>stp_parameter_list_add_param()
+: <a class="el" href="group__vars.html#ga44">vars.h</a><li>stp_parameter_list_append()
+: <a class="el" href="group__vars.html#ga46">vars.h</a><li>stp_parameter_list_copy()
+: <a class="el" href="group__vars.html#ga45">vars.h</a><li>stp_parameter_list_count()
+: <a class="el" href="group__vars.html#ga39">vars.h</a><li>stp_parameter_list_create()
+: <a class="el" href="group__vars.html#ga43">vars.h</a><li>stp_parameter_list_destroy()
+: <a class="el" href="group__vars.html#ga42">vars.h</a><li>stp_parameter_list_param()
+: <a class="el" href="group__vars.html#ga41">vars.h</a><li>stp_parameter_list_t
+: <a class="el" href="group__vars.html#ga1">vars.h</a><li>STP_PARAMETER_TYPE_ARRAY
+: <a class="el" href="group__vars.html#gga132a14">vars.h</a><li>STP_PARAMETER_TYPE_BOOLEAN
+: <a class="el" href="group__vars.html#gga132a9">vars.h</a><li>STP_PARAMETER_TYPE_CURVE
+: <a class="el" href="group__vars.html#gga132a11">vars.h</a><li>STP_PARAMETER_TYPE_DIMENSION
+: <a class="el" href="group__vars.html#gga132a15">vars.h</a><li>STP_PARAMETER_TYPE_DOUBLE
+: <a class="el" href="group__vars.html#gga132a10">vars.h</a><li>STP_PARAMETER_TYPE_FILE
+: <a class="el" href="group__vars.html#gga132a12">vars.h</a><li>STP_PARAMETER_TYPE_INT
+: <a class="el" href="group__vars.html#gga132a8">vars.h</a><li>STP_PARAMETER_TYPE_INVALID
+: <a class="el" href="group__vars.html#gga132a16">vars.h</a><li>STP_PARAMETER_TYPE_RAW
+: <a class="el" href="group__vars.html#gga132a13">vars.h</a><li>STP_PARAMETER_TYPE_STRING_LIST
+: <a class="el" href="group__vars.html#gga132a7">vars.h</a><li>stp_parameter_type_t
+: <a class="el" href="group__vars.html#ga132">vars.h</a><li>stp_parameter_verify_t
+: <a class="el" href="group__vars.html#ga136">vars.h</a><li>stp_path_search()
+: <a class="el" href="path_8h.html#a0">path.h</a><li>stp_path_split()
+: <a class="el" href="path_8h.html#a1">path.h</a><li>stp_print()
+: <a class="el" href="group__printer.html#ga15">printers.h</a><li>stp_printer_describe_parameter()
+: <a class="el" href="group__printer.html#ga24">printers.h</a><li>stp_printer_get_defaults()
+: <a class="el" href="group__printer.html#ga13">printers.h</a><li>stp_printer_get_driver()
+: <a class="el" href="group__printer.html#ga9">printers.h</a><li>stp_printer_get_family()
+: <a class="el" href="group__printer.html#ga10">printers.h</a><li>stp_printer_get_long_name()
+: <a class="el" href="group__printer.html#ga8">printers.h</a><li>stp_printer_get_manufacturer()
+: <a class="el" href="group__printer.html#ga11">printers.h</a><li>stp_printer_get_model()
+: <a class="el" href="group__printer.html#ga12">printers.h</a><li>stp_printer_list_parameters()
+: <a class="el" href="group__printer.html#ga23">printers.h</a><li>stp_printer_model_count()
+: <a class="el" href="group__printer.html#ga2">printers.h</a><li>stp_printer_t
+: <a class="el" href="group__printer.html#ga0">printers.h</a><li>stp_prune_inactive_options()
+: <a class="el" href="group__util.html#ga4">util.h</a><li>stp_put16_be()
+: <a class="el" href="group__util.html#ga9">util.h</a><li>stp_put16_le()
+: <a class="el" href="group__util.html#ga8">util.h</a><li>stp_put32_be()
+: <a class="el" href="group__util.html#ga11">util.h</a><li>stp_put32_le()
+: <a class="el" href="group__util.html#ga10">util.h</a><li>stp_putc()
+: <a class="el" href="group__util.html#ga7">util.h</a><li>stp_puts()
+: <a class="el" href="group__util.html#ga12">util.h</a><li>stp_read_and_compose_curves()
+: <a class="el" href="group__util.html#ga2">util.h</a><li>stp_realloc()
+: <a class="el" href="group__util.html#ga26">util.h</a><li>stp_register_xml_parser()
+: <a class="el" href="xml_8h.html#a1">xml.h</a><li>stp_register_xml_preload()
+: <a class="el" href="xml_8h.html#a3">xml.h</a><li>STP_SAFE_FREE
+: <a class="el" href="group__util.html#ga54">util.h</a><li>stp_scale_float_parameter()
+: <a class="el" href="group__vars.html#ga61">vars.h</a><li>stp_send_command()
+: <a class="el" href="group__util.html#ga13">util.h</a><li>stp_sequence_copy()
+: <a class="el" href="group__sequence.html#ga3">sequence.h</a><li>stp_sequence_create()
+: <a class="el" href="group__sequence.html#ga1">sequence.h</a><li>stp_sequence_create_copy()
+: <a class="el" href="group__sequence.html#ga4">sequence.h</a><li>stp_sequence_create_from_xmltree()
+: <a class="el" href="xml_8h.html#a15">xml.h</a><li>stp_sequence_destroy()
+: <a class="el" href="group__sequence.html#ga2">sequence.h</a><li>stp_sequence_get_bounds()
+: <a class="el" href="group__sequence.html#ga6">sequence.h</a><li>stp_sequence_get_data()
+: <a class="el" href="group__sequence.html#ga12">sequence.h</a><li>stp_sequence_get_float_data()
+: <a class="el" href="group__sequence.html#ga22">sequence.h</a><li>stp_sequence_get_int_data()
+: <a class="el" href="group__sequence.html#ga25">sequence.h</a><li>stp_sequence_get_long_data()
+: <a class="el" href="group__sequence.html#ga23">sequence.h</a><li>stp_sequence_get_point()
+: <a class="el" href="group__sequence.html#ga14">sequence.h</a><li>stp_sequence_get_range()
+: <a class="el" href="group__sequence.html#ga7">sequence.h</a><li>stp_sequence_get_short_data()
+: <a class="el" href="group__sequence.html#ga27">sequence.h</a><li>stp_sequence_get_size()
+: <a class="el" href="group__sequence.html#ga9">sequence.h</a><li>stp_sequence_get_uint_data()
+: <a class="el" href="group__sequence.html#ga26">sequence.h</a><li>stp_sequence_get_ulong_data()
+: <a class="el" href="group__sequence.html#ga24">sequence.h</a><li>stp_sequence_get_ushort_data()
+: <a class="el" href="group__sequence.html#ga28">sequence.h</a><li>stp_sequence_set_bounds()
+: <a class="el" href="group__sequence.html#ga5">sequence.h</a><li>stp_sequence_set_data()
+: <a class="el" href="group__sequence.html#ga10">sequence.h</a><li>stp_sequence_set_float_data()
+: <a class="el" href="group__sequence.html#ga15">sequence.h</a><li>stp_sequence_set_int_data()
+: <a class="el" href="group__sequence.html#ga18">sequence.h</a><li>stp_sequence_set_long_data()
+: <a class="el" href="group__sequence.html#ga16">sequence.h</a><li>stp_sequence_set_point()
+: <a class="el" href="group__sequence.html#ga13">sequence.h</a><li>stp_sequence_set_short_data()
+: <a class="el" href="group__sequence.html#ga20">sequence.h</a><li>stp_sequence_set_size()
+: <a class="el" href="group__sequence.html#ga8">sequence.h</a><li>stp_sequence_set_subrange()
+: <a class="el" href="group__sequence.html#ga11">sequence.h</a><li>stp_sequence_set_uint_data()
+: <a class="el" href="group__sequence.html#ga19">sequence.h</a><li>stp_sequence_set_ulong_data()
+: <a class="el" href="group__sequence.html#ga17">sequence.h</a><li>stp_sequence_set_ushort_data()
+: <a class="el" href="group__sequence.html#ga21">sequence.h</a><li>stp_sequence_t
+: <a class="el" href="group__sequence.html#ga0">sequence.h</a><li>stp_set_array_parameter()
+: <a class="el" href="group__vars.html#ga59">vars.h</a><li>stp_set_array_parameter_active()
+: <a class="el" href="group__vars.html#ga98">vars.h</a><li>stp_set_boolean_parameter()
+: <a class="el" href="group__vars.html#ga57">vars.h</a><li>stp_set_boolean_parameter_active()
+: <a class="el" href="group__vars.html#ga96">vars.h</a><li>stp_set_color_conversion()
+: <a class="el" href="group__vars.html#ga14">vars.h</a><li>stp_set_color_conversion_n()
+: <a class="el" href="group__vars.html#ga15">vars.h</a><li>stp_set_curve_parameter()
+: <a class="el" href="group__vars.html#ga58">vars.h</a><li>stp_set_curve_parameter_active()
+: <a class="el" href="group__vars.html#ga97">vars.h</a><li>stp_set_default_array_parameter()
+: <a class="el" href="group__vars.html#ga71">vars.h</a><li>stp_set_default_boolean_parameter()
+: <a class="el" href="group__vars.html#ga69">vars.h</a><li>stp_set_default_curve_parameter()
+: <a class="el" href="group__vars.html#ga70">vars.h</a><li>stp_set_default_dimension_parameter()
+: <a class="el" href="group__vars.html#ga68">vars.h</a><li>stp_set_default_file_parameter()
+: <a class="el" href="group__vars.html#ga64">vars.h</a><li>stp_set_default_file_parameter_n()
+: <a class="el" href="group__vars.html#ga65">vars.h</a><li>stp_set_default_float_parameter()
+: <a class="el" href="group__vars.html#ga66">vars.h</a><li>stp_set_default_int_parameter()
+: <a class="el" href="group__vars.html#ga67">vars.h</a><li>stp_set_default_raw_parameter()
+: <a class="el" href="group__vars.html#ga72">vars.h</a><li>stp_set_default_string_parameter()
+: <a class="el" href="group__vars.html#ga62">vars.h</a><li>stp_set_default_string_parameter_n()
+: <a class="el" href="group__vars.html#ga63">vars.h</a><li>stp_set_dimension_parameter()
+: <a class="el" href="group__vars.html#ga56">vars.h</a><li>stp_set_dimension_parameter_active()
+: <a class="el" href="group__vars.html#ga95">vars.h</a><li>stp_set_driver()
+: <a class="el" href="group__vars.html#ga11">vars.h</a><li>stp_set_driver_n()
+: <a class="el" href="group__vars.html#ga12">vars.h</a><li>stp_set_errdata()
+: <a class="el" href="group__vars.html#ga35">vars.h</a><li>stp_set_errfunc()
+: <a class="el" href="group__vars.html#ga31">vars.h</a><li>stp_set_file_parameter()
+: <a class="el" href="group__vars.html#ga52">vars.h</a><li>stp_set_file_parameter_active()
+: <a class="el" href="group__vars.html#ga92">vars.h</a><li>stp_set_file_parameter_n()
+: <a class="el" href="group__vars.html#ga53">vars.h</a><li>stp_set_float_parameter()
+: <a class="el" href="group__vars.html#ga54">vars.h</a><li>stp_set_float_parameter_active()
+: <a class="el" href="group__vars.html#ga93">vars.h</a><li>stp_set_height()
+: <a class="el" href="group__vars.html#ga23">vars.h</a><li>stp_set_int_parameter()
+: <a class="el" href="group__vars.html#ga55">vars.h</a><li>stp_set_int_parameter_active()
+: <a class="el" href="group__vars.html#ga94">vars.h</a><li>stp_set_left()
+: <a class="el" href="group__vars.html#ga17">vars.h</a><li>stp_set_outdata()
+: <a class="el" href="group__vars.html#ga33">vars.h</a><li>stp_set_outfunc()
+: <a class="el" href="group__vars.html#ga29">vars.h</a><li>stp_set_output_codeset()
+: <a class="el" href="group__util.html#ga1">util.h</a><li>stp_set_page_height()
+: <a class="el" href="group__vars.html#ga27">vars.h</a><li>stp_set_page_width()
+: <a class="el" href="group__vars.html#ga25">vars.h</a><li>stp_set_printer_defaults()
+: <a class="el" href="group__printer.html#ga14">printers.h</a><li>stp_set_raw_parameter()
+: <a class="el" href="group__vars.html#ga60">vars.h</a><li>stp_set_raw_parameter_active()
+: <a class="el" href="group__vars.html#ga99">vars.h</a><li>stp_set_string_parameter()
+: <a class="el" href="group__vars.html#ga50">vars.h</a><li>stp_set_string_parameter_active()
+: <a class="el" href="group__vars.html#ga91">vars.h</a><li>stp_set_string_parameter_n()
+: <a class="el" href="group__vars.html#ga51">vars.h</a><li>stp_set_top()
+: <a class="el" href="group__vars.html#ga19">vars.h</a><li>stp_set_verified()
+: <a class="el" href="group__vars.html#ga129">vars.h</a><li>stp_set_width()
+: <a class="el" href="group__vars.html#ga21">vars.h</a><li>stp_shade_t
+: <a class="el" href="dither_8h.html#a10">dither.h</a><li>stp_split_2()
+: <a class="el" href="bit-ops_8h.html#a1">bit-ops.h</a><li>stp_split_4()
+: <a class="el" href="bit-ops_8h.html#a2">bit-ops.h</a><li>stp_start_job()
+: <a class="el" href="group__printer.html#ga16">printers.h</a><li>stp_strdup()
+: <a class="el" href="group__util.html#ga30">util.h</a><li>stp_string_list_add_string()
+: <a class="el" href="string-list_8h.html#a7">string-list.h</a><li>stp_string_list_count()
+: <a class="el" href="string-list_8h.html#a5">string-list.h</a><li>stp_string_list_create()
+: <a class="el" href="string-list_8h.html#a1">string-list.h</a><li>stp_string_list_create_copy()
+: <a class="el" href="string-list_8h.html#a6">string-list.h</a><li>stp_string_list_create_from_params()
+: <a class="el" href="string-list_8h.html#a9">string-list.h</a><li>stp_string_list_destroy()
+: <a class="el" href="string-list_8h.html#a2">string-list.h</a><li>stp_string_list_find()
+: <a class="el" href="string-list_8h.html#a4">string-list.h</a><li>stp_string_list_is_present()
+: <a class="el" href="string-list_8h.html#a10">string-list.h</a><li>stp_string_list_param()
+: <a class="el" href="string-list_8h.html#a3">string-list.h</a><li>stp_string_list_remove_string()
+: <a class="el" href="string-list_8h.html#a8">string-list.h</a><li>stp_string_list_t
+: <a class="el" href="string-list_8h.html#a0">string-list.h</a><li>stp_strlen()
+: <a class="el" href="group__util.html#ga28">util.h</a><li>stp_strndup()
+: <a class="el" href="group__util.html#ga29">util.h</a><li>stp_unpack_16()
+: <a class="el" href="bit-ops_8h.html#a6">bit-ops.h</a><li>stp_unpack_2()
+: <a class="el" href="bit-ops_8h.html#a3">bit-ops.h</a><li>stp_unpack_4()
+: <a class="el" href="bit-ops_8h.html#a4">bit-ops.h</a><li>stp_unpack_8()
+: <a class="el" href="bit-ops_8h.html#a5">bit-ops.h</a><li>stp_unregister_xml_parser()
+: <a class="el" href="xml_8h.html#a2">xml.h</a><li>stp_unregister_xml_preload()
+: <a class="el" href="xml_8h.html#a4">xml.h</a><li>stp_vars_copy()
+: <a class="el" href="group__vars.html#ga8">vars.h</a><li>stp_vars_create()
+: <a class="el" href="group__vars.html#ga7">vars.h</a><li>stp_vars_create_copy()
+: <a class="el" href="group__vars.html#ga9">vars.h</a><li>stp_vars_destroy()
+: <a class="el" href="group__vars.html#ga10">vars.h</a><li>stp_vars_t
+: <a class="el" href="group__vars.html#ga0">vars.h</a><li>stp_verify()
+: <a class="el" href="group__vars.html#ga122">vars.h</a><li>stp_verify_parameter()
+: <a class="el" href="group__vars.html#ga127">vars.h</a><li>stp_verify_printer_params()
+: <a class="el" href="group__printer.html#ga19">printers.h</a><li>STP_WEAVE_ASCENDING
+: <a class="el" href="weave_8h.html#a26a12">weave.h</a><li>STP_WEAVE_ASCENDING_2X
+: <a class="el" href="weave_8h.html#a26a14">weave.h</a><li>STP_WEAVE_ASCENDING_3X
+: <a class="el" href="weave_8h.html#a26a16">weave.h</a><li>STP_WEAVE_DESCENDING
+: <a class="el" href="weave_8h.html#a26a13">weave.h</a><li>stp_weave_parameters_by_row()
+: <a class="el" href="weave_8h.html#a25">weave.h</a><li>STP_WEAVE_STAGGERED
+: <a class="el" href="weave_8h.html#a26a15">weave.h</a><li>stp_weave_strategy_t
+: <a class="el" href="weave_8h.html#a26">weave.h</a><li>STP_WEAVE_ZIGZAG
+: <a class="el" href="weave_8h.html#a26a11">weave.h</a><li>stp_write_weave()
+: <a class="el" href="weave_8h.html#a19">weave.h</a><li>stp_xml_exit()
+: <a class="el" href="xml_8h.html#a11">xml.h</a><li>stp_xml_get_node()
+: <a class="el" href="xml_8h.html#a12">xml.h</a><li>stp_xml_init()
+: <a class="el" href="xml_8h.html#a10">xml.h</a><li>stp_xml_init_defaults()
+: <a class="el" href="xml_8h.html#a5">xml.h</a><li>stp_xml_parse_file()
+: <a class="el" href="xml_8h.html#a6">xml.h</a><li>stp_xml_parse_file_named()
+: <a class="el" href="xml_8h.html#a21">xml.h</a><li>stp_xml_parse_func
+: <a class="el" href="xml_8h.html#a0">xml.h</a><li>stp_xml_preinit()
+: <a class="el" href="xml_8h.html#a14">xml.h</a><li>stp_xmldoc_create_generic()
+: <a class="el" href="xml_8h.html#a13">xml.h</a><li>stp_xmlstrtod()
+: <a class="el" href="xml_8h.html#a9">xml.h</a><li>stp_xmlstrtol()
+: <a class="el" href="xml_8h.html#a7">xml.h</a><li>stp_xmlstrtoul()
+: <a class="el" href="xml_8h.html#a8">xml.h</a><li>stp_xmltree_create_from_array()
+: <a class="el" href="xml_8h.html#a20">xml.h</a><li>stp_xmltree_create_from_curve()
+: <a class="el" href="xml_8h.html#a18">xml.h</a><li>stp_xmltree_create_from_sequence()
+: <a class="el" href="xml_8h.html#a16">xml.h</a><li>stp_zalloc()
+: <a class="el" href="group__util.html#ga25">util.h</a><li>stp_zfwrite()
+: <a class="el" href="group__util.html#ga6">util.h</a><li>stp_zprintf()
+: <a class="el" href="group__util.html#ga5">util.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/globals_0x74.html b/doc/gutenprint/html/globals_0x74.html
new file mode 100644
index 0000000..103ecd1
--- /dev/null
+++ b/doc/gutenprint/html/globals_0x74.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"> | <a class="qindexHL" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindex" href="globals.html#index__">_</a> | <a class="qindex" href="globals_0x62.html#index_b">b</a> | <a class="qindex" href="globals_0x63.html#index_c">c</a> | <a class="qindex" href="globals_0x64.html#index_d">d</a> | <a class="qindex" href="globals_0x67.html#index_g">g</a> | <a class="qindex" href="globals_0x6e.html#index_n">n</a> | <a class="qindex" href="globals_0x70.html#index_p">p</a> | <a class="qindex" href="globals_0x73.html#index_s">s</a> | <a class="qindexHL" href="globals_0x74.html#index_t">t</a></div>
+
+<p>
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
+<li>textdomain
+: <a class="el" href="group__intl.html#ga0">gutenprint-intl.h</a>, <a class="el" href="group__intl__internal.html#ga0">gutenprint-intl-internal.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/globals_defs.html b/doc/gutenprint/html/globals_defs.html
new file mode 100644
index 0000000..5f07189
--- /dev/null
+++ b/doc/gutenprint/html/globals_defs.html
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindexHL" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindex" href="#index__">_</a> | <a class="qindex" href="#index_b">b</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_d">d</a> | <a class="qindex" href="#index_g">g</a> | <a class="qindex" href="#index_n">n</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_t">t</a></div>
+
+<p>
+
+<p>
+<h3><a class="anchor" name="index__">- _ -</a></h3><ul>
+<li>_
+: <a class="el" href="group__intl.html#ga5">gutenprint-intl.h</a>, <a class="el" href="group__intl__internal.html#ga5">gutenprint-intl-internal.h</a></ul>
+<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
+<li>bindtextdomain
+: <a class="el" href="group__intl.html#ga4">gutenprint-intl.h</a>, <a class="el" href="group__intl__internal.html#ga4">gutenprint-intl-internal.h</a></ul>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>CURVE_CACHE_FAST_COUNT
+: <a class="el" href="curve-cache_8h.html#a2">curve-cache.h</a><li>CURVE_CACHE_FAST_DOUBLE
+: <a class="el" href="curve-cache_8h.html#a1">curve-cache.h</a><li>CURVE_CACHE_FAST_USHORT
+: <a class="el" href="curve-cache_8h.html#a0">curve-cache.h</a></ul>
+<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
+<li>dcgettext
+: <a class="el" href="group__intl.html#ga3">gutenprint-intl.h</a>, <a class="el" href="group__intl__internal.html#ga3">gutenprint-intl-internal.h</a><li>dgettext
+: <a class="el" href="group__intl.html#ga2">gutenprint-intl.h</a>, <a class="el" href="group__intl__internal.html#ga2">gutenprint-intl-internal.h</a></ul>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>gettext
+: <a class="el" href="group__intl.html#ga1">gutenprint-intl.h</a>, <a class="el" href="group__intl__internal.html#ga1">gutenprint-intl-internal.h</a></ul>
+<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+<li>N_
+: <a class="el" href="group__intl.html#ga6">gutenprint-intl.h</a>, <a class="el" href="group__intl__internal.html#ga6">gutenprint-intl-internal.h</a></ul>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>STP_BINARY_AGE
+: <a class="el" href="group__version.html#ga11">gutenprint-version.h</a><li>STP_CHANNEL_LIMIT
+: <a class="el" href="group__image.html#ga8">image.h</a><li>STP_CHECK_VERSION
+: <a class="el" href="group__version.html#ga13">gutenprint-version.h</a><li>STP_CURRENT_INTERFACE
+: <a class="el" href="group__version.html#ga10">gutenprint-version.h</a><li>STP_DBG_CANON
+: <a class="el" href="group__util.html#ga39">util.h</a><li>STP_DBG_COLORFUNC
+: <a class="el" href="group__util.html#ga34">util.h</a><li>STP_DBG_CURVE
+: <a class="el" href="group__util.html#ga52">util.h</a><li>STP_DBG_CURVE_ERRORS
+: <a class="el" href="group__util.html#ga53">util.h</a><li>STP_DBG_ESCP2
+: <a class="el" href="group__util.html#ga38">util.h</a><li>STP_DBG_INK
+: <a class="el" href="group__util.html#ga35">util.h</a><li>STP_DBG_LEXMARK
+: <a class="el" href="group__util.html#ga40">util.h</a><li>STP_DBG_LIST
+: <a class="el" href="group__util.html#ga44">util.h</a><li>STP_DBG_LUT
+: <a class="el" href="group__util.html#ga33">util.h</a><li>STP_DBG_MARK_FILE
+: <a class="el" href="group__util.html#ga43">util.h</a><li>STP_DBG_MODULE
+: <a class="el" href="group__util.html#ga45">util.h</a><li>STP_DBG_OLYMPUS
+: <a class="el" href="group__util.html#ga51">util.h</a><li>STP_DBG_PAPER
+: <a class="el" href="group__util.html#ga47">util.h</a><li>STP_DBG_PATH
+: <a class="el" href="group__util.html#ga46">util.h</a><li>STP_DBG_PCL
+: <a class="el" href="group__util.html#ga37">util.h</a><li>STP_DBG_PRINTERS
+: <a class="el" href="group__util.html#ga48">util.h</a><li>STP_DBG_PS
+: <a class="el" href="group__util.html#ga36">util.h</a><li>STP_DBG_ROWS
+: <a class="el" href="group__util.html#ga42">util.h</a><li>STP_DBG_VARS
+: <a class="el" href="group__util.html#ga50">util.h</a><li>STP_DBG_WEAVE_PARAMS
+: <a class="el" href="group__util.html#ga41">util.h</a><li>STP_DBG_XML
+: <a class="el" href="group__util.html#ga49">util.h</a><li>STP_ECOLOR_C
+: <a class="el" href="dither_8h.html#a1">dither.h</a><li>STP_ECOLOR_K
+: <a class="el" href="dither_8h.html#a0">dither.h</a><li>STP_ECOLOR_M
+: <a class="el" href="dither_8h.html#a2">dither.h</a><li>STP_ECOLOR_Y
+: <a class="el" href="dither_8h.html#a3">dither.h</a><li>STP_INTERFACE_AGE
+: <a class="el" href="group__version.html#ga12">gutenprint-version.h</a><li>STP_MAJOR_VERSION
+: <a class="el" href="group__version.html#ga7">gutenprint-version.h</a><li>STP_MAX_WEAVE
+: <a class="el" href="weave_8h.html#a0">weave.h</a><li>STP_MICRO_VERSION
+: <a class="el" href="group__version.html#ga9">gutenprint-version.h</a><li>STP_MINOR_VERSION
+: <a class="el" href="group__version.html#ga8">gutenprint-version.h</a><li>STP_MODULE
+: <a class="el" href="gutenprint-module_8h.html#a0">gutenprint-module.h</a><li>STP_MXML_ADD_AFTER
+: <a class="el" href="mxml_8h.html#a12">mxml.h</a><li>STP_MXML_ADD_BEFORE
+: <a class="el" href="mxml_8h.html#a11">mxml.h</a><li>STP_MXML_ADD_TO_PARENT
+: <a class="el" href="mxml_8h.html#a13">mxml.h</a><li>STP_MXML_DESCEND
+: <a class="el" href="mxml_8h.html#a4">mxml.h</a><li>STP_MXML_DESCEND_FIRST
+: <a class="el" href="mxml_8h.html#a6">mxml.h</a><li>STP_MXML_NO_CALLBACK
+: <a class="el" href="mxml_8h.html#a2">mxml.h</a><li>STP_MXML_NO_DESCEND
+: <a class="el" href="mxml_8h.html#a5">mxml.h</a><li>STP_MXML_NO_PARENT
+: <a class="el" href="mxml_8h.html#a3">mxml.h</a><li>STP_MXML_TAB
+: <a class="el" href="mxml_8h.html#a1">mxml.h</a><li>STP_MXML_WRAP
+: <a class="el" href="mxml_8h.html#a0">mxml.h</a><li>STP_MXML_WS_AFTER_CLOSE
+: <a class="el" href="mxml_8h.html#a10">mxml.h</a><li>STP_MXML_WS_AFTER_OPEN
+: <a class="el" href="mxml_8h.html#a8">mxml.h</a><li>STP_MXML_WS_BEFORE_CLOSE
+: <a class="el" href="mxml_8h.html#a9">mxml.h</a><li>STP_MXML_WS_BEFORE_OPEN
+: <a class="el" href="mxml_8h.html#a7">mxml.h</a><li>STP_NCOLORS
+: <a class="el" href="dither_8h.html#a4">dither.h</a><li>STP_SAFE_FREE
+: <a class="el" href="group__util.html#ga54">util.h</a></ul>
+<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
+<li>textdomain
+: <a class="el" href="group__intl.html#ga0">gutenprint-intl.h</a>, <a class="el" href="group__intl__internal.html#ga0">gutenprint-intl-internal.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/globals_enum.html b/doc/gutenprint/html/globals_enum.html
new file mode 100644
index 0000000..9628de3
--- /dev/null
+++ b/doc/gutenprint/html/globals_enum.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindexHL" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+
+<p>
+<ul>
+<li>stp_curve_bounds_t
+: <a class="el" href="group__curve.html#ga50">curve.h</a><li>stp_curve_compose_t
+: <a class="el" href="group__curve.html#ga49">curve.h</a><li>stp_curve_type_t
+: <a class="el" href="group__curve.html#ga47">curve.h</a><li>stp_curve_wrap_mode_t
+: <a class="el" href="group__curve.html#ga48">curve.h</a><li>stp_image_status_t
+: <a class="el" href="group__image.html#ga9">image.h</a><li>stp_module_class_t
+: <a class="el" href="module_8h.html#a13">module.h</a><li>stp_mxml_type_e
+: <a class="el" href="mxml_8h.html#a43">mxml.h</a><li>stp_papersize_unit_t
+: <a class="el" href="group__papersize.html#ga5">paper.h</a><li>stp_parameter_activity_t
+: <a class="el" href="group__vars.html#ga135">vars.h</a><li>stp_parameter_class_t
+: <a class="el" href="group__vars.html#ga133">vars.h</a><li>stp_parameter_level_t
+: <a class="el" href="group__vars.html#ga134">vars.h</a><li>stp_parameter_type_t
+: <a class="el" href="group__vars.html#ga132">vars.h</a><li>stp_parameter_verify_t
+: <a class="el" href="group__vars.html#ga136">vars.h</a><li>stp_weave_strategy_t
+: <a class="el" href="weave_8h.html#a26">weave.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/globals_eval.html b/doc/gutenprint/html/globals_eval.html
new file mode 100644
index 0000000..99d4780
--- /dev/null
+++ b/doc/gutenprint/html/globals_eval.html
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindexHL" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindex" href="#index_p">p</a> | <a class="qindex" href="#index_s">s</a></div>
+
+<p>
+
+<p>
+<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+<li>PAPERSIZE_ENGLISH_EXTENDED
+: <a class="el" href="group__papersize.html#gga5a2">paper.h</a><li>PAPERSIZE_ENGLISH_STANDARD
+: <a class="el" href="group__papersize.html#gga5a0">paper.h</a><li>PAPERSIZE_METRIC_EXTENDED
+: <a class="el" href="group__papersize.html#gga5a3">paper.h</a><li>PAPERSIZE_METRIC_STANDARD
+: <a class="el" href="group__papersize.html#gga5a1">paper.h</a><li>PARAMETER_BAD
+: <a class="el" href="group__vars.html#gga136a33">vars.h</a><li>PARAMETER_INACTIVE
+: <a class="el" href="group__vars.html#gga136a35">vars.h</a><li>PARAMETER_OK
+: <a class="el" href="group__vars.html#gga136a34">vars.h</a></ul>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>STP_CURVE_BOUNDS_CLIP
+: <a class="el" href="group__curve.html#gga50a9">curve.h</a><li>STP_CURVE_BOUNDS_ERROR
+: <a class="el" href="group__curve.html#gga50a10">curve.h</a><li>STP_CURVE_BOUNDS_RESCALE
+: <a class="el" href="group__curve.html#gga50a8">curve.h</a><li>STP_CURVE_COMPOSE_ADD
+: <a class="el" href="group__curve.html#gga49a5">curve.h</a><li>STP_CURVE_COMPOSE_EXPONENTIATE
+: <a class="el" href="group__curve.html#gga49a7">curve.h</a><li>STP_CURVE_COMPOSE_MULTIPLY
+: <a class="el" href="group__curve.html#gga49a6">curve.h</a><li>STP_CURVE_TYPE_LINEAR
+: <a class="el" href="group__curve.html#gga47a1">curve.h</a><li>STP_CURVE_TYPE_SPLINE
+: <a class="el" href="group__curve.html#gga47a2">curve.h</a><li>STP_CURVE_WRAP_AROUND
+: <a class="el" href="group__curve.html#gga48a4">curve.h</a><li>STP_CURVE_WRAP_NONE
+: <a class="el" href="group__curve.html#gga48a3">curve.h</a><li>STP_IMAGE_STATUS_ABORT
+: <a class="el" href="group__image.html#gga9a3">image.h</a><li>STP_IMAGE_STATUS_OK
+: <a class="el" href="group__image.html#gga9a2">image.h</a><li>STP_MODULE_CLASS_COLOR
+: <a class="el" href="module_8h.html#a13a5">module.h</a><li>STP_MODULE_CLASS_DITHER
+: <a class="el" href="module_8h.html#a13a6">module.h</a><li>STP_MODULE_CLASS_FAMILY
+: <a class="el" href="module_8h.html#a13a4">module.h</a><li>STP_MODULE_CLASS_INVALID
+: <a class="el" href="module_8h.html#a13a2">module.h</a><li>STP_MODULE_CLASS_MISC
+: <a class="el" href="module_8h.html#a13a3">module.h</a><li>STP_MXML_ELEMENT
+: <a class="el" href="mxml_8h.html#a43a20">mxml.h</a><li>STP_MXML_INTEGER
+: <a class="el" href="mxml_8h.html#a43a21">mxml.h</a><li>STP_MXML_OPAQUE
+: <a class="el" href="mxml_8h.html#a43a22">mxml.h</a><li>STP_MXML_REAL
+: <a class="el" href="mxml_8h.html#a43a23">mxml.h</a><li>STP_MXML_TEXT
+: <a class="el" href="mxml_8h.html#a43a24">mxml.h</a><li>STP_PARAMETER_ACTIVE
+: <a class="el" href="group__vars.html#gga135a32">vars.h</a><li>STP_PARAMETER_CLASS_CORE
+: <a class="el" href="group__vars.html#gga133a19">vars.h</a><li>STP_PARAMETER_CLASS_FEATURE
+: <a class="el" href="group__vars.html#gga133a17">vars.h</a><li>STP_PARAMETER_CLASS_INVALID
+: <a class="el" href="group__vars.html#gga133a20">vars.h</a><li>STP_PARAMETER_CLASS_OUTPUT
+: <a class="el" href="group__vars.html#gga133a18">vars.h</a><li>STP_PARAMETER_DEFAULTED
+: <a class="el" href="group__vars.html#gga135a31">vars.h</a><li>STP_PARAMETER_INACTIVE
+: <a class="el" href="group__vars.html#gga135a30">vars.h</a><li>STP_PARAMETER_LEVEL_ADVANCED
+: <a class="el" href="group__vars.html#gga134a22">vars.h</a><li>STP_PARAMETER_LEVEL_ADVANCED1
+: <a class="el" href="group__vars.html#gga134a23">vars.h</a><li>STP_PARAMETER_LEVEL_ADVANCED2
+: <a class="el" href="group__vars.html#gga134a24">vars.h</a><li>STP_PARAMETER_LEVEL_ADVANCED3
+: <a class="el" href="group__vars.html#gga134a25">vars.h</a><li>STP_PARAMETER_LEVEL_ADVANCED4
+: <a class="el" href="group__vars.html#gga134a26">vars.h</a><li>STP_PARAMETER_LEVEL_BASIC
+: <a class="el" href="group__vars.html#gga134a21">vars.h</a><li>STP_PARAMETER_LEVEL_EXTERNAL
+: <a class="el" href="group__vars.html#gga134a28">vars.h</a><li>STP_PARAMETER_LEVEL_INTERNAL
+: <a class="el" href="group__vars.html#gga134a27">vars.h</a><li>STP_PARAMETER_LEVEL_INVALID
+: <a class="el" href="group__vars.html#gga134a29">vars.h</a><li>STP_PARAMETER_TYPE_ARRAY
+: <a class="el" href="group__vars.html#gga132a14">vars.h</a><li>STP_PARAMETER_TYPE_BOOLEAN
+: <a class="el" href="group__vars.html#gga132a9">vars.h</a><li>STP_PARAMETER_TYPE_CURVE
+: <a class="el" href="group__vars.html#gga132a11">vars.h</a><li>STP_PARAMETER_TYPE_DIMENSION
+: <a class="el" href="group__vars.html#gga132a15">vars.h</a><li>STP_PARAMETER_TYPE_DOUBLE
+: <a class="el" href="group__vars.html#gga132a10">vars.h</a><li>STP_PARAMETER_TYPE_FILE
+: <a class="el" href="group__vars.html#gga132a12">vars.h</a><li>STP_PARAMETER_TYPE_INT
+: <a class="el" href="group__vars.html#gga132a8">vars.h</a><li>STP_PARAMETER_TYPE_INVALID
+: <a class="el" href="group__vars.html#gga132a16">vars.h</a><li>STP_PARAMETER_TYPE_RAW
+: <a class="el" href="group__vars.html#gga132a13">vars.h</a><li>STP_PARAMETER_TYPE_STRING_LIST
+: <a class="el" href="group__vars.html#gga132a7">vars.h</a><li>STP_WEAVE_ASCENDING
+: <a class="el" href="weave_8h.html#a26a12">weave.h</a><li>STP_WEAVE_ASCENDING_2X
+: <a class="el" href="weave_8h.html#a26a14">weave.h</a><li>STP_WEAVE_ASCENDING_3X
+: <a class="el" href="weave_8h.html#a26a16">weave.h</a><li>STP_WEAVE_DESCENDING
+: <a class="el" href="weave_8h.html#a26a13">weave.h</a><li>STP_WEAVE_STAGGERED
+: <a class="el" href="weave_8h.html#a26a15">weave.h</a><li>STP_WEAVE_ZIGZAG
+: <a class="el" href="weave_8h.html#a26a11">weave.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/globals_func.html b/doc/gutenprint/html/globals_func.html
new file mode 100644
index 0000000..aa8be08
--- /dev/null
+++ b/doc/gutenprint/html/globals_func.html
@@ -0,0 +1,474 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindexHL" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindexHL" href="globals_func.html#index_s">s</a></div>
+
+<p>
+
+<p>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>stp_abort()
+: <a class="el" href="group__util.html#ga3">util.h</a><li>stp_allocate_component_data()
+: <a class="el" href="group__vars.html#ga124">vars.h</a><li>stp_array_copy()
+: <a class="el" href="group__array.html#ga3">array.h</a><li>stp_array_create()
+: <a class="el" href="group__array.html#ga1">array.h</a><li>stp_array_create_copy()
+: <a class="el" href="group__array.html#ga4">array.h</a><li>stp_array_create_from_xmltree()
+: <a class="el" href="xml_8h.html#a19">xml.h</a><li>stp_array_destroy()
+: <a class="el" href="group__array.html#ga2">array.h</a><li>stp_array_get_data()
+: <a class="el" href="group__array.html#ga8">array.h</a><li>stp_array_get_point()
+: <a class="el" href="group__array.html#ga10">array.h</a><li>stp_array_get_sequence()
+: <a class="el" href="group__array.html#ga11">array.h</a><li>stp_array_get_size()
+: <a class="el" href="group__array.html#ga6">array.h</a><li>stp_array_set_data()
+: <a class="el" href="group__array.html#ga7">array.h</a><li>stp_array_set_point()
+: <a class="el" href="group__array.html#ga9">array.h</a><li>stp_array_set_size()
+: <a class="el" href="group__array.html#ga5">array.h</a><li>stp_asprintf()
+: <a class="el" href="group__util.html#ga17">util.h</a><li>stp_catprintf()
+: <a class="el" href="group__util.html#ga18">util.h</a><li>stp_channel_add()
+: <a class="el" href="channel_8h.html#a2">channel.h</a><li>stp_channel_convert()
+: <a class="el" href="channel_8h.html#a19">channel.h</a><li>stp_channel_get_black_channel()
+: <a class="el" href="channel_8h.html#a11">channel.h</a><li>stp_channel_get_curve()
+: <a class="el" href="channel_8h.html#a17">channel.h</a><li>stp_channel_get_cutoff_adjustment()
+: <a class="el" href="channel_8h.html#a9">channel.h</a><li>stp_channel_get_density_adjustment()
+: <a class="el" href="channel_8h.html#a5">channel.h</a><li>stp_channel_get_gloss_channel()
+: <a class="el" href="channel_8h.html#a13">channel.h</a><li>stp_channel_get_gloss_limit()
+: <a class="el" href="channel_8h.html#a15">channel.h</a><li>stp_channel_get_ink_limit()
+: <a class="el" href="channel_8h.html#a7">channel.h</a><li>stp_channel_get_input()
+: <a class="el" href="channel_8h.html#a20">channel.h</a><li>stp_channel_get_output()
+: <a class="el" href="channel_8h.html#a21">channel.h</a><li>stp_channel_get_value()
+: <a class="el" href="channel_8h.html#a3">channel.h</a><li>stp_channel_initialize()
+: <a class="el" href="channel_8h.html#a18">channel.h</a><li>stp_channel_reset()
+: <a class="el" href="channel_8h.html#a0">channel.h</a><li>stp_channel_reset_channel()
+: <a class="el" href="channel_8h.html#a1">channel.h</a><li>stp_channel_set_black_channel()
+: <a class="el" href="channel_8h.html#a10">channel.h</a><li>stp_channel_set_curve()
+: <a class="el" href="channel_8h.html#a16">channel.h</a><li>stp_channel_set_cutoff_adjustment()
+: <a class="el" href="channel_8h.html#a8">channel.h</a><li>stp_channel_set_density_adjustment()
+: <a class="el" href="channel_8h.html#a4">channel.h</a><li>stp_channel_set_gloss_channel()
+: <a class="el" href="channel_8h.html#a12">channel.h</a><li>stp_channel_set_gloss_limit()
+: <a class="el" href="channel_8h.html#a14">channel.h</a><li>stp_channel_set_ink_limit()
+: <a class="el" href="channel_8h.html#a6">channel.h</a><li>stp_check_array_parameter()
+: <a class="el" href="group__vars.html#ga107">vars.h</a><li>stp_check_boolean_parameter()
+: <a class="el" href="group__vars.html#ga105">vars.h</a><li>stp_check_curve_parameter()
+: <a class="el" href="group__vars.html#ga106">vars.h</a><li>stp_check_dimension_parameter()
+: <a class="el" href="group__vars.html#ga104">vars.h</a><li>stp_check_file_parameter()
+: <a class="el" href="group__vars.html#ga101">vars.h</a><li>stp_check_float_parameter()
+: <a class="el" href="group__vars.html#ga102">vars.h</a><li>stp_check_int_parameter()
+: <a class="el" href="group__vars.html#ga103">vars.h</a><li>stp_check_raw_parameter()
+: <a class="el" href="group__vars.html#ga108">vars.h</a><li>stp_check_string_parameter()
+: <a class="el" href="group__vars.html#ga100">vars.h</a><li>stp_check_version()
+: <a class="el" href="group__version.html#ga6">gutenprint-version.h</a><li>stp_clear_array_parameter()
+: <a class="el" href="group__vars.html#ga89">vars.h</a><li>stp_clear_boolean_parameter()
+: <a class="el" href="group__vars.html#ga87">vars.h</a><li>stp_clear_curve_parameter()
+: <a class="el" href="group__vars.html#ga88">vars.h</a><li>stp_clear_dimension_parameter()
+: <a class="el" href="group__vars.html#ga86">vars.h</a><li>stp_clear_file_parameter()
+: <a class="el" href="group__vars.html#ga83">vars.h</a><li>stp_clear_float_parameter()
+: <a class="el" href="group__vars.html#ga84">vars.h</a><li>stp_clear_int_parameter()
+: <a class="el" href="group__vars.html#ga85">vars.h</a><li>stp_clear_raw_parameter()
+: <a class="el" href="group__vars.html#ga90">vars.h</a><li>stp_clear_string_parameter()
+: <a class="el" href="group__vars.html#ga82">vars.h</a><li>stp_color_count()
+: <a class="el" href="group__color.html#ga7">color.h</a><li>stp_color_describe_parameter()
+: <a class="el" href="group__color.html#ga4">color.h</a><li>stp_color_get_long_name()
+: <a class="el" href="group__color.html#ga12">color.h</a><li>stp_color_get_name()
+: <a class="el" href="group__color.html#ga11">color.h</a><li>stp_color_get_row()
+: <a class="el" href="group__color.html#ga2">color.h</a><li>stp_color_init()
+: <a class="el" href="group__color.html#ga1">color.h</a><li>stp_color_list_parameters()
+: <a class="el" href="group__color.html#ga3">color.h</a><li>stp_color_register()
+: <a class="el" href="group__color.html#ga5">color.h</a><li>stp_color_unregister()
+: <a class="el" href="group__color.html#ga6">color.h</a><li>stp_copy_options()
+: <a class="el" href="group__vars.html#ga130">vars.h</a><li>stp_curve_cache_copy()
+: <a class="el" href="curve-cache_8h.html#a12">curve-cache.h</a><li>stp_curve_cache_curve_data()
+: <a class="el" href="curve-cache_8h.html#a4">curve-cache.h</a><li>stp_curve_cache_curve_invalidate()
+: <a class="el" href="curve-cache_8h.html#a6">curve-cache.h</a><li>stp_curve_cache_get_count()
+: <a class="el" href="curve-cache_8h.html#a9">curve-cache.h</a><li>stp_curve_cache_get_curve()
+: <a class="el" href="curve-cache_8h.html#a5">curve-cache.h</a><li>stp_curve_cache_get_double_data()
+: <a class="el" href="curve-cache_8h.html#a11">curve-cache.h</a><li>stp_curve_cache_get_ushort_data()
+: <a class="el" href="curve-cache_8h.html#a10">curve-cache.h</a><li>stp_curve_cache_set_curve()
+: <a class="el" href="curve-cache_8h.html#a7">curve-cache.h</a><li>stp_curve_cache_set_curve_copy()
+: <a class="el" href="curve-cache_8h.html#a8">curve-cache.h</a><li>stp_curve_compose()
+: <a class="el" href="group__curve.html#ga46">curve.h</a><li>stp_curve_copy()
+: <a class="el" href="group__curve.html#ga3">curve.h</a><li>stp_curve_count_points()
+: <a class="el" href="group__curve.html#ga10">curve.h</a><li>stp_curve_create()
+: <a class="el" href="group__curve.html#ga1">curve.h</a><li>stp_curve_create_copy()
+: <a class="el" href="group__curve.html#ga2">curve.h</a><li>stp_curve_create_from_file()
+: <a class="el" href="group__curve.html#ga44">curve.h</a><li>stp_curve_create_from_stream()
+: <a class="el" href="group__curve.html#ga43">curve.h</a><li>stp_curve_create_from_string()
+: <a class="el" href="group__curve.html#ga45">curve.h</a><li>stp_curve_create_from_xmltree()
+: <a class="el" href="xml_8h.html#a17">xml.h</a><li>stp_curve_destroy()
+: <a class="el" href="group__curve.html#ga4">curve.h</a><li>stp_curve_free_curve_cache()
+: <a class="el" href="curve-cache_8h.html#a3">curve-cache.h</a><li>stp_curve_get_bounds()
+: <a class="el" href="group__curve.html#ga6">curve.h</a><li>stp_curve_get_data()
+: <a class="el" href="group__curve.html#ga24">curve.h</a><li>stp_curve_get_data_points()
+: <a class="el" href="group__curve.html#ga25">curve.h</a><li>stp_curve_get_float_data()
+: <a class="el" href="group__curve.html#ga26">curve.h</a><li>stp_curve_get_gamma()
+: <a class="el" href="group__curve.html#ga35">curve.h</a><li>stp_curve_get_int_data()
+: <a class="el" href="group__curve.html#ga29">curve.h</a><li>stp_curve_get_interpolation_type()
+: <a class="el" href="group__curve.html#ga12">curve.h</a><li>stp_curve_get_long_data()
+: <a class="el" href="group__curve.html#ga27">curve.h</a><li>stp_curve_get_point()
+: <a class="el" href="group__curve.html#ga37">curve.h</a><li>stp_curve_get_range()
+: <a class="el" href="group__curve.html#ga9">curve.h</a><li>stp_curve_get_sequence()
+: <a class="el" href="group__curve.html#ga33">curve.h</a><li>stp_curve_get_short_data()
+: <a class="el" href="group__curve.html#ga31">curve.h</a><li>stp_curve_get_subrange()
+: <a class="el" href="group__curve.html#ga22">curve.h</a><li>stp_curve_get_uint_data()
+: <a class="el" href="group__curve.html#ga30">curve.h</a><li>stp_curve_get_ulong_data()
+: <a class="el" href="group__curve.html#ga28">curve.h</a><li>stp_curve_get_ushort_data()
+: <a class="el" href="group__curve.html#ga32">curve.h</a><li>stp_curve_get_wrap()
+: <a class="el" href="group__curve.html#ga7">curve.h</a><li>stp_curve_interpolate_value()
+: <a class="el" href="group__curve.html#ga38">curve.h</a><li>stp_curve_is_piecewise()
+: <a class="el" href="group__curve.html#ga8">curve.h</a><li>stp_curve_resample()
+: <a class="el" href="group__curve.html#ga39">curve.h</a><li>stp_curve_rescale()
+: <a class="el" href="group__curve.html#ga40">curve.h</a><li>stp_curve_set_bounds()
+: <a class="el" href="group__curve.html#ga5">curve.h</a><li>stp_curve_set_data()
+: <a class="el" href="group__curve.html#ga13">curve.h</a><li>stp_curve_set_data_points()
+: <a class="el" href="group__curve.html#ga14">curve.h</a><li>stp_curve_set_float_data()
+: <a class="el" href="group__curve.html#ga15">curve.h</a><li>stp_curve_set_gamma()
+: <a class="el" href="group__curve.html#ga34">curve.h</a><li>stp_curve_set_int_data()
+: <a class="el" href="group__curve.html#ga18">curve.h</a><li>stp_curve_set_interpolation_type()
+: <a class="el" href="group__curve.html#ga11">curve.h</a><li>stp_curve_set_long_data()
+: <a class="el" href="group__curve.html#ga16">curve.h</a><li>stp_curve_set_point()
+: <a class="el" href="group__curve.html#ga36">curve.h</a><li>stp_curve_set_short_data()
+: <a class="el" href="group__curve.html#ga20">curve.h</a><li>stp_curve_set_subrange()
+: <a class="el" href="group__curve.html#ga23">curve.h</a><li>stp_curve_set_uint_data()
+: <a class="el" href="group__curve.html#ga19">curve.h</a><li>stp_curve_set_ulong_data()
+: <a class="el" href="group__curve.html#ga17">curve.h</a><li>stp_curve_set_ushort_data()
+: <a class="el" href="group__curve.html#ga21">curve.h</a><li>stp_curve_write()
+: <a class="el" href="group__curve.html#ga41">curve.h</a><li>stp_curve_write_string()
+: <a class="el" href="group__curve.html#ga42">curve.h</a><li>stp_default_media_size()
+: <a class="el" href="group__papersize.html#ga4">paper.h</a><li>stp_default_settings()
+: <a class="el" href="group__vars.html#ga123">vars.h</a><li>stp_deprintf()
+: <a class="el" href="group__util.html#ga21">util.h</a><li>stp_describe_output()
+: <a class="el" href="group__printer.html#ga25">printers.h</a><li>stp_describe_parameter()
+: <a class="el" href="group__vars.html#ga47">vars.h</a><li>stp_describe_resolution()
+: <a class="el" href="group__vars.html#ga121">vars.h</a><li>stp_destroy_component_data()
+: <a class="el" href="group__vars.html#ga125">vars.h</a><li>stp_dither()
+: <a class="el" href="dither_8h.html#a40">dither.h</a><li>stp_dither_add_channel()
+: <a class="el" href="dither_8h.html#a38">dither.h</a><li>stp_dither_describe_parameter()
+: <a class="el" href="dither_8h.html#a24">dither.h</a><li>stp_dither_get_channel()
+: <a class="el" href="dither_8h.html#a39">dither.h</a><li>stp_dither_get_first_position()
+: <a class="el" href="dither_8h.html#a33">dither.h</a><li>stp_dither_get_last_position()
+: <a class="el" href="dither_8h.html#a34">dither.h</a><li>stp_dither_init()
+: <a class="el" href="dither_8h.html#a25">dither.h</a><li>stp_dither_internal()
+: <a class="el" href="dither_8h.html#a41">dither.h</a><li>stp_dither_list_parameters()
+: <a class="el" href="dither_8h.html#a23">dither.h</a><li>stp_dither_matrix_clone()
+: <a class="el" href="dither_8h.html#a18">dither.h</a><li>stp_dither_matrix_copy()
+: <a class="el" href="dither_8h.html#a19">dither.h</a><li>stp_dither_matrix_destroy()
+: <a class="el" href="dither_8h.html#a17">dither.h</a><li>stp_dither_matrix_init()
+: <a class="el" href="dither_8h.html#a13">dither.h</a><li>stp_dither_matrix_init_from_dither_array()
+: <a class="el" href="dither_8h.html#a16">dither.h</a><li>stp_dither_matrix_init_short()
+: <a class="el" href="dither_8h.html#a14">dither.h</a><li>stp_dither_matrix_iterated_init()
+: <a class="el" href="dither_8h.html#a11">dither.h</a><li>stp_dither_matrix_scale_exponentially()
+: <a class="el" href="dither_8h.html#a20">dither.h</a><li>stp_dither_matrix_set_row()
+: <a class="el" href="dither_8h.html#a21">dither.h</a><li>stp_dither_matrix_shear()
+: <a class="el" href="dither_8h.html#a12">dither.h</a><li>stp_dither_matrix_validate_array()
+: <a class="el" href="dither_8h.html#a15">dither.h</a><li>stp_dither_set_adaptive_limit()
+: <a class="el" href="dither_8h.html#a32">dither.h</a><li>stp_dither_set_ink_spread()
+: <a class="el" href="dither_8h.html#a31">dither.h</a><li>stp_dither_set_inks()
+: <a class="el" href="dither_8h.html#a37">dither.h</a><li>stp_dither_set_inks_full()
+: <a class="el" href="dither_8h.html#a36">dither.h</a><li>stp_dither_set_inks_simple()
+: <a class="el" href="dither_8h.html#a35">dither.h</a><li>stp_dither_set_iterated_matrix()
+: <a class="el" href="dither_8h.html#a26">dither.h</a><li>stp_dither_set_matrix()
+: <a class="el" href="dither_8h.html#a27">dither.h</a><li>stp_dither_set_matrix_from_dither_array()
+: <a class="el" href="dither_8h.html#a28">dither.h</a><li>stp_dither_set_randomizer()
+: <a class="el" href="dither_8h.html#a30">dither.h</a><li>stp_dither_set_transition()
+: <a class="el" href="dither_8h.html#a29">dither.h</a><li>stp_dprintf()
+: <a class="el" href="group__util.html#ga20">util.h</a><li>stp_end_job()
+: <a class="el" href="group__printer.html#ga17">printers.h</a><li>stp_eprintf()
+: <a class="el" href="group__util.html#ga15">util.h</a><li>stp_erprintf()
+: <a class="el" href="group__util.html#ga16">util.h</a><li>stp_erputc()
+: <a class="el" href="group__util.html#ga14">util.h</a><li>stp_family_register()
+: <a class="el" href="group__printer.html#ga20">printers.h</a><li>stp_family_unregister()
+: <a class="el" href="group__printer.html#ga21">printers.h</a><li>stp_fill_parameter_settings()
+: <a class="el" href="group__vars.html#ga131">vars.h</a><li>stp_find_standard_dither_array()
+: <a class="el" href="dither_8h.html#a22">dither.h</a><li>stp_flush_all()
+: <a class="el" href="weave_8h.html#a18">weave.h</a><li>stp_flush_debug_messages()
+: <a class="el" href="group__util.html#ga23">util.h</a><li>stp_fold()
+: <a class="el" href="bit-ops_8h.html#a0">bit-ops.h</a><li>stp_free()
+: <a class="el" href="group__util.html#ga27">util.h</a><li>stp_get_array_parameter()
+: <a class="el" href="group__vars.html#ga80">vars.h</a><li>stp_get_array_parameter_active()
+: <a class="el" href="group__vars.html#ga116">vars.h</a><li>stp_get_boolean_parameter()
+: <a class="el" href="group__vars.html#ga78">vars.h</a><li>stp_get_boolean_parameter_active()
+: <a class="el" href="group__vars.html#ga114">vars.h</a><li>stp_get_color_by_colorfuncs()
+: <a class="el" href="group__color.html#ga10">color.h</a><li>stp_get_color_by_index()
+: <a class="el" href="group__color.html#ga9">color.h</a><li>stp_get_color_by_name()
+: <a class="el" href="group__color.html#ga8">color.h</a><li>stp_get_color_conversion()
+: <a class="el" href="group__vars.html#ga16">vars.h</a><li>stp_get_component_data()
+: <a class="el" href="group__vars.html#ga126">vars.h</a><li>stp_get_curve_parameter()
+: <a class="el" href="group__vars.html#ga79">vars.h</a><li>stp_get_curve_parameter_active()
+: <a class="el" href="group__vars.html#ga115">vars.h</a><li>stp_get_debug_level()
+: <a class="el" href="group__util.html#ga19">util.h</a><li>stp_get_dimension_parameter()
+: <a class="el" href="group__vars.html#ga77">vars.h</a><li>stp_get_dimension_parameter_active()
+: <a class="el" href="group__vars.html#ga113">vars.h</a><li>stp_get_driver()
+: <a class="el" href="group__vars.html#ga13">vars.h</a><li>stp_get_errdata()
+: <a class="el" href="group__vars.html#ga36">vars.h</a><li>stp_get_errfunc()
+: <a class="el" href="group__vars.html#ga32">vars.h</a><li>stp_get_file_parameter()
+: <a class="el" href="group__vars.html#ga74">vars.h</a><li>stp_get_file_parameter_active()
+: <a class="el" href="group__vars.html#ga110">vars.h</a><li>stp_get_float_parameter()
+: <a class="el" href="group__vars.html#ga75">vars.h</a><li>stp_get_float_parameter_active()
+: <a class="el" href="group__vars.html#ga111">vars.h</a><li>stp_get_height()
+: <a class="el" href="group__vars.html#ga24">vars.h</a><li>stp_get_imageable_area()
+: <a class="el" href="group__vars.html#ga119">vars.h</a><li>stp_get_int_parameter()
+: <a class="el" href="group__vars.html#ga76">vars.h</a><li>stp_get_int_parameter_active()
+: <a class="el" href="group__vars.html#ga112">vars.h</a><li>stp_get_left()
+: <a class="el" href="group__vars.html#ga18">vars.h</a><li>stp_get_lineactive_by_pass()
+: <a class="el" href="weave_8h.html#a21">weave.h</a><li>stp_get_linebases_by_pass()
+: <a class="el" href="weave_8h.html#a23">weave.h</a><li>stp_get_linecount_by_pass()
+: <a class="el" href="weave_8h.html#a22">weave.h</a><li>stp_get_lineoffsets_by_pass()
+: <a class="el" href="weave_8h.html#a20">weave.h</a><li>stp_get_media_size()
+: <a class="el" href="group__vars.html#ga118">vars.h</a><li>stp_get_model_id()
+: <a class="el" href="group__printer.html#ga18">printers.h</a><li>stp_get_outdata()
+: <a class="el" href="group__vars.html#ga34">vars.h</a><li>stp_get_outfunc()
+: <a class="el" href="group__vars.html#ga30">vars.h</a><li>stp_get_page_height()
+: <a class="el" href="group__vars.html#ga28">vars.h</a><li>stp_get_page_width()
+: <a class="el" href="group__vars.html#ga26">vars.h</a><li>stp_get_papersize_by_index()
+: <a class="el" href="group__papersize.html#ga3">paper.h</a><li>stp_get_papersize_by_name()
+: <a class="el" href="group__papersize.html#ga1">paper.h</a><li>stp_get_papersize_by_size()
+: <a class="el" href="group__papersize.html#ga2">paper.h</a><li>stp_get_parameter_list()
+: <a class="el" href="group__vars.html#ga38">vars.h</a><li>stp_get_pass_by_pass()
+: <a class="el" href="weave_8h.html#a24">weave.h</a><li>stp_get_printer()
+: <a class="el" href="group__printer.html#ga6">printers.h</a><li>stp_get_printer_by_driver()
+: <a class="el" href="group__printer.html#ga5">printers.h</a><li>stp_get_printer_by_index()
+: <a class="el" href="group__printer.html#ga3">printers.h</a><li>stp_get_printer_by_long_name()
+: <a class="el" href="group__printer.html#ga4">printers.h</a><li>stp_get_printer_index_by_driver()
+: <a class="el" href="group__printer.html#ga7">printers.h</a><li>stp_get_raw_parameter()
+: <a class="el" href="group__vars.html#ga81">vars.h</a><li>stp_get_raw_parameter_active()
+: <a class="el" href="group__vars.html#ga117">vars.h</a><li>stp_get_release_version()
+: <a class="el" href="group__util.html#ga32">util.h</a><li>stp_get_size_limit()
+: <a class="el" href="group__vars.html#ga120">vars.h</a><li>stp_get_string_parameter()
+: <a class="el" href="group__vars.html#ga73">vars.h</a><li>stp_get_string_parameter_active()
+: <a class="el" href="group__vars.html#ga109">vars.h</a><li>stp_get_top()
+: <a class="el" href="group__vars.html#ga20">vars.h</a><li>stp_get_verified()
+: <a class="el" href="group__vars.html#ga128">vars.h</a><li>stp_get_version()
+: <a class="el" href="group__util.html#ga31">util.h</a><li>stp_get_width()
+: <a class="el" href="group__vars.html#ga22">vars.h</a><li>stp_image_conclude()
+: <a class="el" href="group__image.html#ga7">image.h</a><li>stp_image_get_appname()
+: <a class="el" href="group__image.html#ga6">image.h</a><li>stp_image_get_row()
+: <a class="el" href="group__image.html#ga5">image.h</a><li>stp_image_height()
+: <a class="el" href="group__image.html#ga4">image.h</a><li>stp_image_init()
+: <a class="el" href="group__image.html#ga1">image.h</a><li>stp_image_reset()
+: <a class="el" href="group__image.html#ga2">image.h</a><li>stp_image_width()
+: <a class="el" href="group__image.html#ga3">image.h</a><li>stp_init()
+: <a class="el" href="group__util.html#ga0">util.h</a><li>stp_init_debug_messages()
+: <a class="el" href="group__util.html#ga22">util.h</a><li>stp_initialize_printer_defaults()
+: <a class="el" href="group__printer.html#ga22">printers.h</a><li>stp_initialize_weave()
+: <a class="el" href="weave_8h.html#a17">weave.h</a><li>stp_known_papersizes()
+: <a class="el" href="group__papersize.html#ga0">paper.h</a><li>stp_list_copy()
+: <a class="el" href="group__list.html#ga8">list.h</a><li>stp_list_create()
+: <a class="el" href="group__list.html#ga7">list.h</a><li>stp_list_destroy()
+: <a class="el" href="group__list.html#ga9">list.h</a><li>stp_list_get_copyfunc()
+: <a class="el" href="group__list.html#ga19">list.h</a><li>stp_list_get_end()
+: <a class="el" href="group__list.html#ga11">list.h</a><li>stp_list_get_freefunc()
+: <a class="el" href="group__list.html#ga17">list.h</a><li>stp_list_get_item_by_index()
+: <a class="el" href="group__list.html#ga12">list.h</a><li>stp_list_get_item_by_long_name()
+: <a class="el" href="group__list.html#ga14">list.h</a><li>stp_list_get_item_by_name()
+: <a class="el" href="group__list.html#ga13">list.h</a><li>stp_list_get_length()
+: <a class="el" href="group__list.html#ga15">list.h</a><li>stp_list_get_long_namefunc()
+: <a class="el" href="group__list.html#ga23">list.h</a><li>stp_list_get_namefunc()
+: <a class="el" href="group__list.html#ga21">list.h</a><li>stp_list_get_sortfunc()
+: <a class="el" href="group__list.html#ga25">list.h</a><li>stp_list_get_start()
+: <a class="el" href="group__list.html#ga10">list.h</a><li>stp_list_item_create()
+: <a class="el" href="group__list.html#ga26">list.h</a><li>stp_list_item_destroy()
+: <a class="el" href="group__list.html#ga27">list.h</a><li>stp_list_item_get_data()
+: <a class="el" href="group__list.html#ga30">list.h</a><li>stp_list_item_next()
+: <a class="el" href="group__list.html#ga29">list.h</a><li>stp_list_item_prev()
+: <a class="el" href="group__list.html#ga28">list.h</a><li>stp_list_item_set_data()
+: <a class="el" href="group__list.html#ga31">list.h</a><li>stp_list_node_free_data()
+: <a class="el" href="group__list.html#ga6">list.h</a><li>stp_list_set_copyfunc()
+: <a class="el" href="group__list.html#ga18">list.h</a><li>stp_list_set_freefunc()
+: <a class="el" href="group__list.html#ga16">list.h</a><li>stp_list_set_long_namefunc()
+: <a class="el" href="group__list.html#ga22">list.h</a><li>stp_list_set_namefunc()
+: <a class="el" href="group__list.html#ga20">list.h</a><li>stp_list_set_sortfunc()
+: <a class="el" href="group__list.html#ga24">list.h</a><li>stp_malloc()
+: <a class="el" href="group__util.html#ga24">util.h</a><li>stp_merge_printvars()
+: <a class="el" href="group__vars.html#ga37">vars.h</a><li>stp_module_close()
+: <a class="el" href="module_8h.html#a11">module.h</a><li>stp_module_exit()
+: <a class="el" href="module_8h.html#a8">module.h</a><li>stp_module_get_class()
+: <a class="el" href="module_8h.html#a12">module.h</a><li>stp_module_init()
+: <a class="el" href="module_8h.html#a10">module.h</a><li>stp_module_load()
+: <a class="el" href="module_8h.html#a7">module.h</a><li>stp_module_open()
+: <a class="el" href="module_8h.html#a9">module.h</a><li>stp_mxmlAdd()
+: <a class="el" href="mxml_8h.html#a25">mxml.h</a><li>stp_mxmlDelete()
+: <a class="el" href="mxml_8h.html#a26">mxml.h</a><li>stp_mxmlElementGetAttr()
+: <a class="el" href="mxml_8h.html#a27">mxml.h</a><li>stp_mxmlElementSetAttr()
+: <a class="el" href="mxml_8h.html#a28">mxml.h</a><li>stp_mxmlFindElement()
+: <a class="el" href="mxml_8h.html#a29">mxml.h</a><li>stp_mxmlLoadFile()
+: <a class="el" href="mxml_8h.html#a30">mxml.h</a><li>stp_mxmlLoadString()
+: <a class="el" href="mxml_8h.html#a31">mxml.h</a><li>stp_mxmlNewElement()
+: <a class="el" href="mxml_8h.html#a32">mxml.h</a><li>stp_mxmlNewInteger()
+: <a class="el" href="mxml_8h.html#a33">mxml.h</a><li>stp_mxmlNewOpaque()
+: <a class="el" href="mxml_8h.html#a34">mxml.h</a><li>stp_mxmlNewReal()
+: <a class="el" href="mxml_8h.html#a35">mxml.h</a><li>stp_mxmlNewText()
+: <a class="el" href="mxml_8h.html#a36">mxml.h</a><li>stp_mxmlRemove()
+: <a class="el" href="mxml_8h.html#a37">mxml.h</a><li>stp_mxmlSaveAllocString()
+: <a class="el" href="mxml_8h.html#a38">mxml.h</a><li>stp_mxmlSaveFile()
+: <a class="el" href="mxml_8h.html#a39">mxml.h</a><li>stp_mxmlSaveString()
+: <a class="el" href="mxml_8h.html#a40">mxml.h</a><li>stp_mxmlWalkNext()
+: <a class="el" href="mxml_8h.html#a41">mxml.h</a><li>stp_mxmlWalkPrev()
+: <a class="el" href="mxml_8h.html#a42">mxml.h</a><li>stp_parameter_description_destroy()
+: <a class="el" href="group__vars.html#ga48">vars.h</a><li>stp_parameter_find()
+: <a class="el" href="group__vars.html#ga40">vars.h</a><li>stp_parameter_find_in_settings()
+: <a class="el" href="group__vars.html#ga49">vars.h</a><li>stp_parameter_list_add_param()
+: <a class="el" href="group__vars.html#ga44">vars.h</a><li>stp_parameter_list_append()
+: <a class="el" href="group__vars.html#ga46">vars.h</a><li>stp_parameter_list_copy()
+: <a class="el" href="group__vars.html#ga45">vars.h</a><li>stp_parameter_list_count()
+: <a class="el" href="group__vars.html#ga39">vars.h</a><li>stp_parameter_list_create()
+: <a class="el" href="group__vars.html#ga43">vars.h</a><li>stp_parameter_list_destroy()
+: <a class="el" href="group__vars.html#ga42">vars.h</a><li>stp_parameter_list_param()
+: <a class="el" href="group__vars.html#ga41">vars.h</a><li>stp_path_search()
+: <a class="el" href="path_8h.html#a0">path.h</a><li>stp_path_split()
+: <a class="el" href="path_8h.html#a1">path.h</a><li>stp_print()
+: <a class="el" href="group__printer.html#ga15">printers.h</a><li>stp_printer_describe_parameter()
+: <a class="el" href="group__printer.html#ga24">printers.h</a><li>stp_printer_get_defaults()
+: <a class="el" href="group__printer.html#ga13">printers.h</a><li>stp_printer_get_driver()
+: <a class="el" href="group__printer.html#ga9">printers.h</a><li>stp_printer_get_family()
+: <a class="el" href="group__printer.html#ga10">printers.h</a><li>stp_printer_get_long_name()
+: <a class="el" href="group__printer.html#ga8">printers.h</a><li>stp_printer_get_manufacturer()
+: <a class="el" href="group__printer.html#ga11">printers.h</a><li>stp_printer_get_model()
+: <a class="el" href="group__printer.html#ga12">printers.h</a><li>stp_printer_list_parameters()
+: <a class="el" href="group__printer.html#ga23">printers.h</a><li>stp_printer_model_count()
+: <a class="el" href="group__printer.html#ga2">printers.h</a><li>stp_prune_inactive_options()
+: <a class="el" href="group__util.html#ga4">util.h</a><li>stp_put16_be()
+: <a class="el" href="group__util.html#ga9">util.h</a><li>stp_put16_le()
+: <a class="el" href="group__util.html#ga8">util.h</a><li>stp_put32_be()
+: <a class="el" href="group__util.html#ga11">util.h</a><li>stp_put32_le()
+: <a class="el" href="group__util.html#ga10">util.h</a><li>stp_putc()
+: <a class="el" href="group__util.html#ga7">util.h</a><li>stp_puts()
+: <a class="el" href="group__util.html#ga12">util.h</a><li>stp_read_and_compose_curves()
+: <a class="el" href="group__util.html#ga2">util.h</a><li>stp_realloc()
+: <a class="el" href="group__util.html#ga26">util.h</a><li>stp_register_xml_parser()
+: <a class="el" href="xml_8h.html#a1">xml.h</a><li>stp_register_xml_preload()
+: <a class="el" href="xml_8h.html#a3">xml.h</a><li>stp_scale_float_parameter()
+: <a class="el" href="group__vars.html#ga61">vars.h</a><li>stp_send_command()
+: <a class="el" href="group__util.html#ga13">util.h</a><li>stp_sequence_copy()
+: <a class="el" href="group__sequence.html#ga3">sequence.h</a><li>stp_sequence_create()
+: <a class="el" href="group__sequence.html#ga1">sequence.h</a><li>stp_sequence_create_copy()
+: <a class="el" href="group__sequence.html#ga4">sequence.h</a><li>stp_sequence_create_from_xmltree()
+: <a class="el" href="xml_8h.html#a15">xml.h</a><li>stp_sequence_destroy()
+: <a class="el" href="group__sequence.html#ga2">sequence.h</a><li>stp_sequence_get_bounds()
+: <a class="el" href="group__sequence.html#ga6">sequence.h</a><li>stp_sequence_get_data()
+: <a class="el" href="group__sequence.html#ga12">sequence.h</a><li>stp_sequence_get_float_data()
+: <a class="el" href="group__sequence.html#ga22">sequence.h</a><li>stp_sequence_get_int_data()
+: <a class="el" href="group__sequence.html#ga25">sequence.h</a><li>stp_sequence_get_long_data()
+: <a class="el" href="group__sequence.html#ga23">sequence.h</a><li>stp_sequence_get_point()
+: <a class="el" href="group__sequence.html#ga14">sequence.h</a><li>stp_sequence_get_range()
+: <a class="el" href="group__sequence.html#ga7">sequence.h</a><li>stp_sequence_get_short_data()
+: <a class="el" href="group__sequence.html#ga27">sequence.h</a><li>stp_sequence_get_size()
+: <a class="el" href="group__sequence.html#ga9">sequence.h</a><li>stp_sequence_get_uint_data()
+: <a class="el" href="group__sequence.html#ga26">sequence.h</a><li>stp_sequence_get_ulong_data()
+: <a class="el" href="group__sequence.html#ga24">sequence.h</a><li>stp_sequence_get_ushort_data()
+: <a class="el" href="group__sequence.html#ga28">sequence.h</a><li>stp_sequence_set_bounds()
+: <a class="el" href="group__sequence.html#ga5">sequence.h</a><li>stp_sequence_set_data()
+: <a class="el" href="group__sequence.html#ga10">sequence.h</a><li>stp_sequence_set_float_data()
+: <a class="el" href="group__sequence.html#ga15">sequence.h</a><li>stp_sequence_set_int_data()
+: <a class="el" href="group__sequence.html#ga18">sequence.h</a><li>stp_sequence_set_long_data()
+: <a class="el" href="group__sequence.html#ga16">sequence.h</a><li>stp_sequence_set_point()
+: <a class="el" href="group__sequence.html#ga13">sequence.h</a><li>stp_sequence_set_short_data()
+: <a class="el" href="group__sequence.html#ga20">sequence.h</a><li>stp_sequence_set_size()
+: <a class="el" href="group__sequence.html#ga8">sequence.h</a><li>stp_sequence_set_subrange()
+: <a class="el" href="group__sequence.html#ga11">sequence.h</a><li>stp_sequence_set_uint_data()
+: <a class="el" href="group__sequence.html#ga19">sequence.h</a><li>stp_sequence_set_ulong_data()
+: <a class="el" href="group__sequence.html#ga17">sequence.h</a><li>stp_sequence_set_ushort_data()
+: <a class="el" href="group__sequence.html#ga21">sequence.h</a><li>stp_set_array_parameter()
+: <a class="el" href="group__vars.html#ga59">vars.h</a><li>stp_set_array_parameter_active()
+: <a class="el" href="group__vars.html#ga98">vars.h</a><li>stp_set_boolean_parameter()
+: <a class="el" href="group__vars.html#ga57">vars.h</a><li>stp_set_boolean_parameter_active()
+: <a class="el" href="group__vars.html#ga96">vars.h</a><li>stp_set_color_conversion()
+: <a class="el" href="group__vars.html#ga14">vars.h</a><li>stp_set_color_conversion_n()
+: <a class="el" href="group__vars.html#ga15">vars.h</a><li>stp_set_curve_parameter()
+: <a class="el" href="group__vars.html#ga58">vars.h</a><li>stp_set_curve_parameter_active()
+: <a class="el" href="group__vars.html#ga97">vars.h</a><li>stp_set_default_array_parameter()
+: <a class="el" href="group__vars.html#ga71">vars.h</a><li>stp_set_default_boolean_parameter()
+: <a class="el" href="group__vars.html#ga69">vars.h</a><li>stp_set_default_curve_parameter()
+: <a class="el" href="group__vars.html#ga70">vars.h</a><li>stp_set_default_dimension_parameter()
+: <a class="el" href="group__vars.html#ga68">vars.h</a><li>stp_set_default_file_parameter()
+: <a class="el" href="group__vars.html#ga64">vars.h</a><li>stp_set_default_file_parameter_n()
+: <a class="el" href="group__vars.html#ga65">vars.h</a><li>stp_set_default_float_parameter()
+: <a class="el" href="group__vars.html#ga66">vars.h</a><li>stp_set_default_int_parameter()
+: <a class="el" href="group__vars.html#ga67">vars.h</a><li>stp_set_default_raw_parameter()
+: <a class="el" href="group__vars.html#ga72">vars.h</a><li>stp_set_default_string_parameter()
+: <a class="el" href="group__vars.html#ga62">vars.h</a><li>stp_set_default_string_parameter_n()
+: <a class="el" href="group__vars.html#ga63">vars.h</a><li>stp_set_dimension_parameter()
+: <a class="el" href="group__vars.html#ga56">vars.h</a><li>stp_set_dimension_parameter_active()
+: <a class="el" href="group__vars.html#ga95">vars.h</a><li>stp_set_driver()
+: <a class="el" href="group__vars.html#ga11">vars.h</a><li>stp_set_driver_n()
+: <a class="el" href="group__vars.html#ga12">vars.h</a><li>stp_set_errdata()
+: <a class="el" href="group__vars.html#ga35">vars.h</a><li>stp_set_errfunc()
+: <a class="el" href="group__vars.html#ga31">vars.h</a><li>stp_set_file_parameter()
+: <a class="el" href="group__vars.html#ga52">vars.h</a><li>stp_set_file_parameter_active()
+: <a class="el" href="group__vars.html#ga92">vars.h</a><li>stp_set_file_parameter_n()
+: <a class="el" href="group__vars.html#ga53">vars.h</a><li>stp_set_float_parameter()
+: <a class="el" href="group__vars.html#ga54">vars.h</a><li>stp_set_float_parameter_active()
+: <a class="el" href="group__vars.html#ga93">vars.h</a><li>stp_set_height()
+: <a class="el" href="group__vars.html#ga23">vars.h</a><li>stp_set_int_parameter()
+: <a class="el" href="group__vars.html#ga55">vars.h</a><li>stp_set_int_parameter_active()
+: <a class="el" href="group__vars.html#ga94">vars.h</a><li>stp_set_left()
+: <a class="el" href="group__vars.html#ga17">vars.h</a><li>stp_set_outdata()
+: <a class="el" href="group__vars.html#ga33">vars.h</a><li>stp_set_outfunc()
+: <a class="el" href="group__vars.html#ga29">vars.h</a><li>stp_set_output_codeset()
+: <a class="el" href="group__util.html#ga1">util.h</a><li>stp_set_page_height()
+: <a class="el" href="group__vars.html#ga27">vars.h</a><li>stp_set_page_width()
+: <a class="el" href="group__vars.html#ga25">vars.h</a><li>stp_set_printer_defaults()
+: <a class="el" href="group__printer.html#ga14">printers.h</a><li>stp_set_raw_parameter()
+: <a class="el" href="group__vars.html#ga60">vars.h</a><li>stp_set_raw_parameter_active()
+: <a class="el" href="group__vars.html#ga99">vars.h</a><li>stp_set_string_parameter()
+: <a class="el" href="group__vars.html#ga50">vars.h</a><li>stp_set_string_parameter_active()
+: <a class="el" href="group__vars.html#ga91">vars.h</a><li>stp_set_string_parameter_n()
+: <a class="el" href="group__vars.html#ga51">vars.h</a><li>stp_set_top()
+: <a class="el" href="group__vars.html#ga19">vars.h</a><li>stp_set_verified()
+: <a class="el" href="group__vars.html#ga129">vars.h</a><li>stp_set_width()
+: <a class="el" href="group__vars.html#ga21">vars.h</a><li>stp_split_2()
+: <a class="el" href="bit-ops_8h.html#a1">bit-ops.h</a><li>stp_split_4()
+: <a class="el" href="bit-ops_8h.html#a2">bit-ops.h</a><li>stp_start_job()
+: <a class="el" href="group__printer.html#ga16">printers.h</a><li>stp_strdup()
+: <a class="el" href="group__util.html#ga30">util.h</a><li>stp_string_list_add_string()
+: <a class="el" href="string-list_8h.html#a7">string-list.h</a><li>stp_string_list_count()
+: <a class="el" href="string-list_8h.html#a5">string-list.h</a><li>stp_string_list_create()
+: <a class="el" href="string-list_8h.html#a1">string-list.h</a><li>stp_string_list_create_copy()
+: <a class="el" href="string-list_8h.html#a6">string-list.h</a><li>stp_string_list_create_from_params()
+: <a class="el" href="string-list_8h.html#a9">string-list.h</a><li>stp_string_list_destroy()
+: <a class="el" href="string-list_8h.html#a2">string-list.h</a><li>stp_string_list_find()
+: <a class="el" href="string-list_8h.html#a4">string-list.h</a><li>stp_string_list_is_present()
+: <a class="el" href="string-list_8h.html#a10">string-list.h</a><li>stp_string_list_param()
+: <a class="el" href="string-list_8h.html#a3">string-list.h</a><li>stp_string_list_remove_string()
+: <a class="el" href="string-list_8h.html#a8">string-list.h</a><li>stp_strlen()
+: <a class="el" href="group__util.html#ga28">util.h</a><li>stp_strndup()
+: <a class="el" href="group__util.html#ga29">util.h</a><li>stp_unpack_16()
+: <a class="el" href="bit-ops_8h.html#a6">bit-ops.h</a><li>stp_unpack_2()
+: <a class="el" href="bit-ops_8h.html#a3">bit-ops.h</a><li>stp_unpack_4()
+: <a class="el" href="bit-ops_8h.html#a4">bit-ops.h</a><li>stp_unpack_8()
+: <a class="el" href="bit-ops_8h.html#a5">bit-ops.h</a><li>stp_unregister_xml_parser()
+: <a class="el" href="xml_8h.html#a2">xml.h</a><li>stp_unregister_xml_preload()
+: <a class="el" href="xml_8h.html#a4">xml.h</a><li>stp_vars_copy()
+: <a class="el" href="group__vars.html#ga8">vars.h</a><li>stp_vars_create()
+: <a class="el" href="group__vars.html#ga7">vars.h</a><li>stp_vars_create_copy()
+: <a class="el" href="group__vars.html#ga9">vars.h</a><li>stp_vars_destroy()
+: <a class="el" href="group__vars.html#ga10">vars.h</a><li>stp_verify()
+: <a class="el" href="group__vars.html#ga122">vars.h</a><li>stp_verify_parameter()
+: <a class="el" href="group__vars.html#ga127">vars.h</a><li>stp_verify_printer_params()
+: <a class="el" href="group__printer.html#ga19">printers.h</a><li>stp_weave_parameters_by_row()
+: <a class="el" href="weave_8h.html#a25">weave.h</a><li>stp_write_weave()
+: <a class="el" href="weave_8h.html#a19">weave.h</a><li>stp_xml_exit()
+: <a class="el" href="xml_8h.html#a11">xml.h</a><li>stp_xml_get_node()
+: <a class="el" href="xml_8h.html#a12">xml.h</a><li>stp_xml_init()
+: <a class="el" href="xml_8h.html#a10">xml.h</a><li>stp_xml_init_defaults()
+: <a class="el" href="xml_8h.html#a5">xml.h</a><li>stp_xml_parse_file()
+: <a class="el" href="xml_8h.html#a6">xml.h</a><li>stp_xml_parse_file_named()
+: <a class="el" href="xml_8h.html#a21">xml.h</a><li>stp_xml_preinit()
+: <a class="el" href="xml_8h.html#a14">xml.h</a><li>stp_xmldoc_create_generic()
+: <a class="el" href="xml_8h.html#a13">xml.h</a><li>stp_xmlstrtod()
+: <a class="el" href="xml_8h.html#a9">xml.h</a><li>stp_xmlstrtol()
+: <a class="el" href="xml_8h.html#a7">xml.h</a><li>stp_xmlstrtoul()
+: <a class="el" href="xml_8h.html#a8">xml.h</a><li>stp_xmltree_create_from_array()
+: <a class="el" href="xml_8h.html#a20">xml.h</a><li>stp_xmltree_create_from_curve()
+: <a class="el" href="xml_8h.html#a18">xml.h</a><li>stp_xmltree_create_from_sequence()
+: <a class="el" href="xml_8h.html#a16">xml.h</a><li>stp_zalloc()
+: <a class="el" href="group__util.html#ga25">util.h</a><li>stp_zfwrite()
+: <a class="el" href="group__util.html#ga6">util.h</a><li>stp_zprintf()
+: <a class="el" href="group__util.html#ga5">util.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/globals_type.html b/doc/gutenprint/html/globals_type.html
new file mode 100644
index 0000000..9afd5bc
--- /dev/null
+++ b/doc/gutenprint/html/globals_type.html
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindexHL" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_s">s</a></div>
+
+<p>
+
+<p>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>compdata_t
+: <a class="el" href="group__vars.html#ga6">vars.h</a></ul>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>stp_array_t
+: <a class="el" href="group__array.html#ga0">array.h</a><li>stp_color_t
+: <a class="el" href="group__color.html#ga0">color.h</a><li>stp_compute_linewidth_func
+: <a class="el" href="weave_8h.html#a4">weave.h</a><li>stp_const_parameter_list_t
+: <a class="el" href="group__vars.html#ga2">vars.h</a><li>stp_copy_data_func_t
+: <a class="el" href="group__vars.html#ga4">vars.h</a><li>stp_curve_t
+: <a class="el" href="group__curve.html#ga0">curve.h</a><li>stp_dither_matrix_generic_t
+: <a class="el" href="dither_8h.html#a7">dither.h</a><li>stp_dither_matrix_impl_t
+: <a class="el" href="dither_8h.html#a8">dither.h</a><li>stp_dither_matrix_normal_t
+: <a class="el" href="dither_8h.html#a6">dither.h</a><li>stp_dither_matrix_short_t
+: <a class="el" href="dither_8h.html#a5">dither.h</a><li>stp_dotsize_t
+: <a class="el" href="dither_8h.html#a9">dither.h</a><li>stp_family_t
+: <a class="el" href="group__printer.html#ga1">printers.h</a><li>stp_fillfunc
+: <a class="el" href="weave_8h.html#a2">weave.h</a><li>stp_flushfunc
+: <a class="el" href="weave_8h.html#a3">weave.h</a><li>stp_free_data_func_t
+: <a class="el" href="group__vars.html#ga5">vars.h</a><li>stp_image_t
+: <a class="el" href="group__image.html#ga0">image.h</a><li>stp_list_item_t
+: <a class="el" href="group__list.html#ga0">list.h</a><li>stp_list_t
+: <a class="el" href="group__list.html#ga1">list.h</a><li>stp_module_t
+: <a class="el" href="module_8h.html#a1">module.h</a><li>stp_module_version_t
+: <a class="el" href="module_8h.html#a0">module.h</a><li>stp_mxml_attr_t
+: <a class="el" href="mxml_8h.html#a15">mxml.h</a><li>stp_mxml_element_t
+: <a class="el" href="mxml_8h.html#a16">mxml.h</a><li>stp_mxml_node_t
+: <a class="el" href="mxml_8h.html#a19">mxml.h</a><li>stp_mxml_text_t
+: <a class="el" href="mxml_8h.html#a17">mxml.h</a><li>stp_mxml_type_t
+: <a class="el" href="mxml_8h.html#a14">mxml.h</a><li>stp_mxml_value_t
+: <a class="el" href="mxml_8h.html#a18">mxml.h</a><li>stp_node_copyfunc
+: <a class="el" href="group__list.html#ga3">list.h</a><li>stp_node_freefunc
+: <a class="el" href="group__list.html#ga2">list.h</a><li>stp_node_namefunc
+: <a class="el" href="group__list.html#ga4">list.h</a><li>stp_node_sortfunc
+: <a class="el" href="group__list.html#ga5">list.h</a><li>stp_outfunc_t
+: <a class="el" href="group__vars.html#ga3">vars.h</a><li>stp_packfunc
+: <a class="el" href="weave_8h.html#a1">weave.h</a><li>stp_parameter_list_t
+: <a class="el" href="group__vars.html#ga1">vars.h</a><li>stp_printer_t
+: <a class="el" href="group__printer.html#ga0">printers.h</a><li>stp_sequence_t
+: <a class="el" href="group__sequence.html#ga0">sequence.h</a><li>stp_shade_t
+: <a class="el" href="dither_8h.html#a10">dither.h</a><li>stp_string_list_t
+: <a class="el" href="string-list_8h.html#a0">string-list.h</a><li>stp_vars_t
+: <a class="el" href="group__vars.html#ga0">vars.h</a><li>stp_xml_parse_func
+: <a class="el" href="xml_8h.html#a0">xml.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/globals_vars.html b/doc/gutenprint/html/globals_vars.html
new file mode 100644
index 0000000..b32f0c1
--- /dev/null
+++ b/doc/gutenprint/html/globals_vars.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindexHL" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+
+<p>
+<ul>
+<li>stp_binary_age
+: <a class="el" href="group__version.html#ga4">gutenprint-version.h</a><li>stp_compute_tiff_linewidth
+: <a class="el" href="weave_8h.html#a9">weave.h</a><li>stp_compute_uncompressed_linewidth
+: <a class="el" href="weave_8h.html#a10">weave.h</a><li>stp_current_interface
+: <a class="el" href="group__version.html#ga3">gutenprint-version.h</a><li>stp_fill_tiff
+: <a class="el" href="weave_8h.html#a7">weave.h</a><li>stp_fill_uncompressed
+: <a class="el" href="weave_8h.html#a8">weave.h</a><li>stp_interface_age
+: <a class="el" href="group__version.html#ga5">gutenprint-version.h</a><li>stp_major_version
+: <a class="el" href="group__version.html#ga0">gutenprint-version.h</a><li>stp_micro_version
+: <a class="el" href="group__version.html#ga2">gutenprint-version.h</a><li>stp_minor_version
+: <a class="el" href="group__version.html#ga1">gutenprint-version.h</a><li>stp_pack_tiff
+: <a class="el" href="weave_8h.html#a5">weave.h</a><li>stp_pack_uncompressed
+: <a class="el" href="weave_8h.html#a6">weave.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/group__array.html b/doc/gutenprint/html/group__array.html
new file mode 100644
index 0000000..f2c66ff
--- /dev/null
+++ b/doc/gutenprint/html/group__array.html
@@ -0,0 +1,607 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: array</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>array</h1>The array is a simple "two-dimensional array of numbers" data structure.
+<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_array&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga0">stp_array_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The array opaque data type. <a href="#ga0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga1">stp_array_create</a> (int x_size, int y_size)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new array. <a href="#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga2">stp_array_destroy</a> (<a class="el" href="group__array.html#ga0">stp_array_t</a> *array)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy an array. <a href="#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga3">stp_array_copy</a> (<a class="el" href="group__array.html#ga0">stp_array_t</a> *dest, const <a class="el" href="group__array.html#ga0">stp_array_t</a> *source)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy an array. <a href="#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga4">stp_array_create_copy</a> (const <a class="el" href="group__array.html#ga0">stp_array_t</a> *array)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy and allocate an array. <a href="#ga4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga5">stp_array_set_size</a> (<a class="el" href="group__array.html#ga0">stp_array_t</a> *array, int x_size, int y_size)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Resize an array. <a href="#ga5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga6">stp_array_get_size</a> (const <a class="el" href="group__array.html#ga0">stp_array_t</a> *array, int *x_size, int *y_size)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the size of an array. <a href="#ga6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga7">stp_array_set_data</a> (<a class="el" href="group__array.html#ga0">stp_array_t</a> *array, const double *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in an array. <a href="#ga7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga8">stp_array_get_data</a> (const <a class="el" href="group__array.html#ga0">stp_array_t</a> *array, size_t *size, const double **data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in an array. <a href="#ga8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga9">stp_array_set_point</a> (<a class="el" href="group__array.html#ga0">stp_array_t</a> *array, int x, int y, double data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data at a single point in the array. <a href="#ga9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga10">stp_array_get_point</a> (const <a class="el" href="group__array.html#ga0">stp_array_t</a> *array, int x, int y, double *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data at a single point in the array. <a href="#ga10"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga11">stp_array_get_sequence</a> (const <a class="el" href="group__array.html#ga0">stp_array_t</a> *array)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the underlying stp_sequence_t. <a href="#ga11"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The array is a simple "two-dimensional array of numbers" data structure.
+<p>
+array "inherits" from the sequence data structure (implemented via containment).<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="ga0"></a><!-- doxytag: member="array.h::stp_array_t" ref="ga0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct stp_array <a class="el" href="group__array.html#ga0">stp_array_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The array opaque data type.
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="ga3"></a><!-- doxytag: member="array.h::stp_array_copy" ref="ga3" args="(stp_array_t *dest, const stp_array_t *source)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_array_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dest</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>source</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Copy an array.
+<p>
+Both dest and source must be valid arrays previously created with <a class="el" href="group__array.html#ga1">stp_array_create()</a>. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>the destination array. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>the source array.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga1"></a><!-- doxytag: member="array.h::stp_array_create" ref="ga1" args="(int x_size, int y_size)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a>* stp_array_create </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname" nowrap> <em>x_size</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>y_size</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Create a new array.
+<p>
+The total size of the array will be (x_size * y_size). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>x_size</em>&nbsp;</td><td>the number of "columns". </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>y_size</em>&nbsp;</td><td>the number of "rows". </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the newly created array.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga4"></a><!-- doxytag: member="array.h::stp_array_create_copy" ref="ga4" args="(const stp_array_t *array)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a>* stp_array_create_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>array</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Copy and allocate an array.
+<p>
+dest will be created, and then the contents of source will be copied into it. dest must not have been previously allocated with <a class="el" href="group__array.html#ga1">stp_array_create()</a>. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>array</em>&nbsp;</td><td>the source array. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the new copy of the array.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga2"></a><!-- doxytag: member="array.h::stp_array_destroy" ref="ga2" args="(stp_array_t *array)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_array_destroy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>array</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Destroy an array.
+<p>
+It is an error to destroy the array more than once. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>array</em>&nbsp;</td><td>the array to destroy.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga8"></a><!-- doxytag: member="array.h::stp_array_get_data" ref="ga8" args="(const stp_array_t *array, size_t *size, const double **data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_array_get_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>array</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const double **&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the data in an array.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>array</em>&nbsp;</td><td>the array to get the data from. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>the number of elements in the array (x_size * y_size) are stored in the size_t pointed to. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to the first element of an array of doubles is stored in a pointer to double*. <div class="fragment"><pre class="fragment"> <a class="code" href="group__array.html#ga0">stp_array_t</a> *array;
+ size_t size;
+ <span class="keywordtype">double</span> *data;
+ <a class="code" href="group__array.html#ga8">stp_array_get_data</a>(array, &amp;size, &amp;data);
+</pre></div></td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga10"></a><!-- doxytag: member="array.h::stp_array_get_point" ref="ga10" args="(const stp_array_t *array, int x, int y, double *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_array_get_point </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>array</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the data at a single point in the array.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>array</em>&nbsp;</td><td>the array to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>the x location. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>y</em>&nbsp;</td><td>the y location. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the datum is stored in the double pointed to. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga11"></a><!-- doxytag: member="array.h::stp_array_get_sequence" ref="ga11" args="(const stp_array_t *array)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a>* stp_array_get_sequence </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>array</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the underlying stp_sequence_t.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>array</em>&nbsp;</td><td>the array to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the (constant) stp_sequence_t.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga6"></a><!-- doxytag: member="array.h::stp_array_get_size" ref="ga6" args="(const stp_array_t *array, int *x_size, int *y_size)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_array_get_size </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>array</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>x_size</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>y_size</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the size of an array.
+<p>
+The current x and y sizes are stored in the integers pointed to by x_size and y_size. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>array</em>&nbsp;</td><td>the array to get the size of. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>x_size</em>&nbsp;</td><td>a pointer to an integer to store the x size in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>y_size</em>&nbsp;</td><td>a pointer to an integer to store the y size in.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga7"></a><!-- doxytag: member="array.h::stp_array_set_data" ref="ga7" args="(stp_array_t *array, const double *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_array_set_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>array</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data in an array.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>array</em>&nbsp;</td><td>the array to set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to the first member of an array containing the data to set. This array must be at least as long as (x_size * y_size).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga9"></a><!-- doxytag: member="array.h::stp_array_set_point" ref="ga9" args="(stp_array_t *array, int x, int y, double data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_array_set_point </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>array</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data at a single point in the array.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>array</em>&nbsp;</td><td>the array to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>the x location. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>y</em>&nbsp;</td><td>the y location. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the datum to set. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga5"></a><!-- doxytag: member="array.h::stp_array_set_size" ref="ga5" args="(stp_array_t *array, int x_size, int y_size)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_array_set_size </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>array</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>x_size</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>y_size</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Resize an array.
+<p>
+Resizing an array will destroy all data stored in the array. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>array</em>&nbsp;</td><td>the array to resize. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>x_size</em>&nbsp;</td><td>the new number of "columns". </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>y_size</em>&nbsp;</td><td>the new number of "rows".</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/group__color.html b/doc/gutenprint/html/group__color.html
new file mode 100644
index 0000000..5317f9d
--- /dev/null
+++ b/doc/gutenprint/html/group__color.html
@@ -0,0 +1,504 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: color</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>color</h1>The color data type is responsible for providing colour conversion features.
+<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__colorfuncs__t.html">stp_colorfuncs_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__color.html">stp_color</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__color.html">stp_color</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga0">stp_color_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga1">stp_color_init</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image, size_t steps)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga2">stp_color_get_row</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image, int row, unsigned *zero_mask)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga3">stp_color_list_parameters</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga4">stp_color_describe_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name, <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *description)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga5">stp_color_register</a> (const <a class="el" href="structstp__color.html">stp_color_t</a> *color)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga6">stp_color_unregister</a> (const <a class="el" href="structstp__color.html">stp_color_t</a> *color)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga7">stp_color_count</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of available color modules. <a href="#ga7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__color.html">stp_color_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga8">stp_get_color_by_name</a> (const char *name)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a color module by its name. <a href="#ga8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__color.html">stp_color_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga9">stp_get_color_by_index</a> (int idx)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a color module by its index number. <a href="#ga9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__color.html">stp_color_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga10">stp_get_color_by_colorfuncs</a> (<a class="el" href="structstp__colorfuncs__t.html">stp_colorfuncs_t</a> *colorfuncs)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga11">stp_color_get_name</a> (const <a class="el" href="structstp__color.html">stp_color_t</a> *c)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the short (untranslated) name of a color module. <a href="#ga11"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga12">stp_color_get_long_name</a> (const <a class="el" href="structstp__color.html">stp_color_t</a> *c)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the long (translated) name of a color module. <a href="#ga12"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The color data type is responsible for providing colour conversion features.
+<p>
+Color modules provide the actual functionality, so different colour management modules may provide the application with different services (for example, colour profiles).<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="ga0"></a><!-- doxytag: member="color.h::stp_color_t" ref="ga0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="structstp__color.html">stp_color</a> <a class="el" href="structstp__color.html">stp_color_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="ga7"></a><!-- doxytag: member="color.h::stp_color_count" ref="ga7" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_color_count </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the number of available color modules.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the number of color modules.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga4"></a><!-- doxytag: member="color.h::stp_color_describe_parameter" ref="ga4" args="(const stp_vars_t *v, const char *name, stp_parameter_t *description)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_color_describe_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>description</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga12"></a><!-- doxytag: member="color.h::stp_color_get_long_name" ref="ga12" args="(const stp_color_t *c)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_color_get_long_name </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__color.html">stp_color_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>c</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the long (translated) name of a color module.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>the color module to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the long name.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga11"></a><!-- doxytag: member="color.h::stp_color_get_name" ref="ga11" args="(const stp_color_t *c)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_color_get_name </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__color.html">stp_color_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>c</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the short (untranslated) name of a color module.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>the color module to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the short name.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga2"></a><!-- doxytag: member="color.h::stp_color_get_row" ref="ga2" args="(stp_vars_t *v, stp_image_t *image, int row, unsigned *zero_mask)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_color_get_row </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__image.html">stp_image_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>image</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>row</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned *&nbsp;</td>
+ <td class="mdname" nowrap> <em>zero_mask</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga1"></a><!-- doxytag: member="color.h::stp_color_init" ref="ga1" args="(stp_vars_t *v, stp_image_t *image, size_t steps)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_color_init </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__image.html">stp_image_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>image</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>steps</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga3"></a><!-- doxytag: member="color.h::stp_color_list_parameters" ref="ga3" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a> stp_color_list_parameters </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga5"></a><!-- doxytag: member="color.h::stp_color_register" ref="ga5" args="(const stp_color_t *color)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_color_register </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__color.html">stp_color_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>color</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga6"></a><!-- doxytag: member="color.h::stp_color_unregister" ref="ga6" args="(const stp_color_t *color)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_color_unregister </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__color.html">stp_color_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>color</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga10"></a><!-- doxytag: member="color.h::stp_get_color_by_colorfuncs" ref="ga10" args="(stp_colorfuncs_t *colorfuncs)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__color.html">stp_color_t</a>* stp_get_color_by_colorfuncs </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__colorfuncs__t.html">stp_colorfuncs_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>colorfuncs</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga9"></a><!-- doxytag: member="color.h::stp_get_color_by_index" ref="ga9" args="(int idx)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__color.html">stp_color_t</a>* stp_get_color_by_index </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>idx</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a color module by its index number.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>idx</em>&nbsp;</td><td>the index number. This must not be greater than (total number of papers - 1). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the color module, or NULL on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga8"></a><!-- doxytag: member="color.h::stp_get_color_by_name" ref="ga8" args="(const char *name)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__color.html">stp_color_t</a>* stp_get_color_by_name </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>name</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a color module by its name.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>the short unique name. number of papers - 1). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the color module, or NULL on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/group__curve.html b/doc/gutenprint/html/group__curve.html
new file mode 100644
index 0000000..25b60cc
--- /dev/null
+++ b/doc/gutenprint/html/group__curve.html
@@ -0,0 +1,2470 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: curve</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>curve</h1>The curve type models a linear, spline or gamma curve.
+<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Point (x,y) for piecewise curve. <a href="structstp__curve__point__t.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_curve&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga0">stp_curve_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The curve opaque data type. <a href="#ga0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga47">stp_curve_type_t</a> { <a class="el" href="group__curve.html#gga47a1">STP_CURVE_TYPE_LINEAR</a>,
+<a class="el" href="group__curve.html#gga47a2">STP_CURVE_TYPE_SPLINE</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Curve types. <a href="group__curve.html#ga47">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga48">stp_curve_wrap_mode_t</a> { <a class="el" href="group__curve.html#gga48a3">STP_CURVE_WRAP_NONE</a>,
+<a class="el" href="group__curve.html#gga48a4">STP_CURVE_WRAP_AROUND</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapping mode. <a href="group__curve.html#ga48">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a> { <a class="el" href="group__curve.html#gga49a5">STP_CURVE_COMPOSE_ADD</a>,
+<a class="el" href="group__curve.html#gga49a6">STP_CURVE_COMPOSE_MULTIPLY</a>,
+<a class="el" href="group__curve.html#gga49a7">STP_CURVE_COMPOSE_EXPONENTIATE</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Composition types. <a href="group__curve.html#ga49">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga50">stp_curve_bounds_t</a> { <a class="el" href="group__curve.html#gga50a8">STP_CURVE_BOUNDS_RESCALE</a>,
+<a class="el" href="group__curve.html#gga50a9">STP_CURVE_BOUNDS_CLIP</a>,
+<a class="el" href="group__curve.html#gga50a10">STP_CURVE_BOUNDS_ERROR</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Behaviour when curve exceeds bounds. <a href="group__curve.html#ga50">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga1">stp_curve_create</a> (<a class="el" href="group__curve.html#ga48">stp_curve_wrap_mode_t</a> wrap)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new curve. <a href="#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga2">stp_curve_create_copy</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy and allocate an curve. <a href="#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga3">stp_curve_copy</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *dest, const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *source)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy an curve. <a href="#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga4">stp_curve_destroy</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy an curve. <a href="#ga4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga5">stp_curve_set_bounds</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double low, double high)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the lower and upper bounds on a curve. <a href="#ga5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga6">stp_curve_get_bounds</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double *low, double *high)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the lower and upper bounds on a curve. <a href="#ga6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga48">stp_curve_wrap_mode_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga7">stp_curve_get_wrap</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the wrapping mode. <a href="#ga7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga8">stp_curve_is_piecewise</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determine whether the curve is piecewise. <a href="#ga8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga9">stp_curve_get_range</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double *low, double *high)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga10">stp_curve_count_points</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of allocated points in the curve. <a href="#ga10"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga11">stp_curve_set_interpolation_type</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, <a class="el" href="group__curve.html#ga47">stp_curve_type_t</a> itype)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the curve interpolation type. <a href="#ga11"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga47">stp_curve_type_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga12">stp_curve_get_interpolation_type</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the curve interpolation type. <a href="#ga12"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga13">stp_curve_set_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const double *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set all data points of the curve. <a href="#ga13"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga14">stp_curve_set_data_points</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const <a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a> *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set all data points of the curve. <a href="#ga14"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga15">stp_curve_set_float_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const float *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from float values. <a href="#ga15"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga16">stp_curve_set_long_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const long *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from long values. <a href="#ga16"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga17">stp_curve_set_ulong_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const unsigned long *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from unsigned long values. <a href="#ga17"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga18">stp_curve_set_int_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const int *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from integer values. <a href="#ga18"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga19">stp_curve_set_uint_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const unsigned int *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from unsigned integer values. <a href="#ga19"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga20">stp_curve_set_short_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const short *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from short values. <a href="#ga20"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga21">stp_curve_set_ushort_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const unsigned short *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from unsigned short values. <a href="#ga21"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga22">stp_curve_get_subrange</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t start, size_t count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a curve containing a subrange of data. <a href="#ga22"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga23">stp_curve_set_subrange</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *range, size_t start)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const double *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga24">stp_curve_get_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a pointer to the curve's raw data. <a href="#ga24"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga25">stp_curve_get_data_points</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a pointer to the curve's raw data as points. <a href="#ga25"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const float *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga26">stp_curve_get_float_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as floats. <a href="#ga26"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const long *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga27">stp_curve_get_long_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as longs. <a href="#ga27"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned long *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga28">stp_curve_get_ulong_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as unsigned longs. <a href="#ga28"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga29">stp_curve_get_int_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as integers. <a href="#ga29"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga30">stp_curve_get_uint_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as unsigned integers. <a href="#ga30"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const short *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga31">stp_curve_get_short_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as shorts. <a href="#ga31"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned short *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga32">stp_curve_get_ushort_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as unsigned shorts. <a href="#ga32"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga33">stp_curve_get_sequence</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the underlying stp_sequence_t data structure which stp_curve_t is derived from. <a href="#ga33"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga34">stp_curve_set_gamma</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double f_gamma)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the gamma of a curve. <a href="#ga34"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga35">stp_curve_get_gamma</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the gamma value of the curve. <a href="#ga35"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga36">stp_curve_set_point</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t where, double data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a point along the curve. <a href="#ga36"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga37">stp_curve_get_point</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t where, double *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a point along the curve. <a href="#ga37"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga38">stp_curve_interpolate_value</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double where, double *result)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Interpolate a point along the curve. <a href="#ga38"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga39">stp_curve_resample</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t points)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Resample a curve (change the number of points). <a href="#ga39"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga40">stp_curve_rescale</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double scale, <a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a> mode, <a class="el" href="group__curve.html#ga50">stp_curve_bounds_t</a> bounds_mode)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rescale a curve (multiply all points by a scaling constant). <a href="#ga40"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga41">stp_curve_write</a> (FILE *file, const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write a curve to a file. <a href="#ga41"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga42">stp_curve_write_string</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write a curve to a string. <a href="#ga42"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga43">stp_curve_create_from_stream</a> (FILE *fp)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a curve from a stream. <a href="#ga43"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga44">stp_curve_create_from_file</a> (const char *file)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a curve from a stream. <a href="#ga44"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga45">stp_curve_create_from_string</a> (const char *string)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a curve from a string. <a href="#ga45"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga46">stp_curve_compose</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> **retval, <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *a, <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *b, <a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a> mode, int points)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compose two curves, creating a third curve. <a href="#ga46"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The curve type models a linear, spline or gamma curve.
+<p>
+curve "inherits" from the sequence data structure (implemented via containment), since the curve data is represented internally as a sequence of numbers, for linear and spline curves. Linear Piecewise Curves (LPCs) should be implemented in the future which represent a curve in a more compact format.<p>
+Various operations are supported, including interpolation and composition.<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="ga0"></a><!-- doxytag: member="curve.h::stp_curve_t" ref="ga0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct stp_curve <a class="el" href="group__curve.html#ga0">stp_curve_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The curve opaque data type.
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Enumeration Type Documentation</h2>
+<a class="anchor" name="ga50"></a><!-- doxytag: member="curve.h::stp_curve_bounds_t" ref="ga50" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="group__curve.html#ga50">stp_curve_bounds_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Behaviour when curve exceeds bounds.
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="gga50a8"></a><!-- doxytag: member="STP_CURVE_BOUNDS_RESCALE" ref="gga50a8" args="" -->STP_CURVE_BOUNDS_RESCALE</em>&nbsp;</td><td>
+Rescale the bounds. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga50a9"></a><!-- doxytag: member="STP_CURVE_BOUNDS_CLIP" ref="gga50a9" args="" -->STP_CURVE_BOUNDS_CLIP</em>&nbsp;</td><td>
+Clip the curve to the existing bounds. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga50a10"></a><!-- doxytag: member="STP_CURVE_BOUNDS_ERROR" ref="gga50a10" args="" -->STP_CURVE_BOUNDS_ERROR</em>&nbsp;</td><td>
+Error if bounds are violated. </td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga49"></a><!-- doxytag: member="curve.h::stp_curve_compose_t" ref="ga49" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Composition types.
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="gga49a5"></a><!-- doxytag: member="STP_CURVE_COMPOSE_ADD" ref="gga49a5" args="" -->STP_CURVE_COMPOSE_ADD</em>&nbsp;</td><td>
+Add composition. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga49a6"></a><!-- doxytag: member="STP_CURVE_COMPOSE_MULTIPLY" ref="gga49a6" args="" -->STP_CURVE_COMPOSE_MULTIPLY</em>&nbsp;</td><td>
+Multiply composition. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga49a7"></a><!-- doxytag: member="STP_CURVE_COMPOSE_EXPONENTIATE" ref="gga49a7" args="" -->STP_CURVE_COMPOSE_EXPONENTIATE</em>&nbsp;</td><td>
+Exponentiate composition. </td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga47"></a><!-- doxytag: member="curve.h::stp_curve_type_t" ref="ga47" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="group__curve.html#ga47">stp_curve_type_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Curve types.
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="gga47a1"></a><!-- doxytag: member="STP_CURVE_TYPE_LINEAR" ref="gga47a1" args="" -->STP_CURVE_TYPE_LINEAR</em>&nbsp;</td><td>
+Linear interpolation. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga47a2"></a><!-- doxytag: member="STP_CURVE_TYPE_SPLINE" ref="gga47a2" args="" -->STP_CURVE_TYPE_SPLINE</em>&nbsp;</td><td>
+Spline interpolation. </td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga48"></a><!-- doxytag: member="curve.h::stp_curve_wrap_mode_t" ref="ga48" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="group__curve.html#ga48">stp_curve_wrap_mode_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Wrapping mode.
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="gga48a3"></a><!-- doxytag: member="STP_CURVE_WRAP_NONE" ref="gga48a3" args="" -->STP_CURVE_WRAP_NONE</em>&nbsp;</td><td>
+The curve does not wrap. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga48a4"></a><!-- doxytag: member="STP_CURVE_WRAP_AROUND" ref="gga48a4" args="" -->STP_CURVE_WRAP_AROUND</em>&nbsp;</td><td>
+The curve wraps to its starting point. </td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="ga46"></a><!-- doxytag: member="curve.h::stp_curve_compose" ref="ga46" args="(stp_curve_t **retval, stp_curve_t *a, stp_curve_t *b, stp_curve_compose_t mode, int points)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_compose </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> **&nbsp;</td>
+ <td class="mdname" nowrap> <em>retval</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>mode</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>points</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Compose two curves, creating a third curve.
+<p>
+Only add and multiply composition is currently supported. If both curves are gamma curves with the same sign, and the operation is multiplication or division, the returned curve is a gamma curve with the appropriate number of points. Both a and b must have the same wraparound type. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>retval</em>&nbsp;</td><td>a pointer to store the location of the newly-created output curve in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>a</em>&nbsp;</td><td>the first source curve. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>b</em>&nbsp;</td><td>the second source curve. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>the composition mode. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>points</em>&nbsp;</td><td>the number of points in the output curve (must not exceed 1048576). It must be at least two, unless the curve is a gamma curve and the operation chosen is multiplication or division. If -1, the resulting number of points will be the least common multiplier of the number of points in the input and output curves (but will not exceed 1048576). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>FALSE if element-wise composition fails.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga3"></a><!-- doxytag: member="curve.h::stp_curve_copy" ref="ga3" args="(stp_curve_t *dest, const stp_curve_t *source)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_curve_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dest</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>source</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Copy an curve.
+<p>
+Both dest and source must be valid curves previously created with <a class="el" href="group__curve.html#ga1">stp_curve_create()</a>. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>the destination curve. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>the source curve.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga10"></a><!-- doxytag: member="curve.h::stp_curve_count_points" ref="ga10" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">size_t stp_curve_count_points </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the number of allocated points in the curve.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the number of points.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga1"></a><!-- doxytag: member="curve.h::stp_curve_create" ref="ga1" args="(stp_curve_wrap_mode_t wrap)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_curve_create </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga48">stp_curve_wrap_mode_t</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>wrap</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Create a new curve.
+<p>
+Curves have y=lower..upper. The default bounds are 0..1. The default interpolation type is linear. There are no points allocated, and the gamma is defaulted to 1. The curve is a dense (equally-spaced) curve.<p>
+A wrapped curve has the same value at x=0 and x=1. The wrap mode of a curve cannot be changed except by routines that destroy the old curve entirely (e. g. stp_curve_copy, stp_curve_read). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>wrap</em>&nbsp;</td><td>the wrap mode of the curve. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the newly created curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga2"></a><!-- doxytag: member="curve.h::stp_curve_create_copy" ref="ga2" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_curve_create_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Copy and allocate an curve.
+<p>
+dest will be created, and then the contents of source will be copied into it. dest must not have been previously allocated with <a class="el" href="group__curve.html#ga1">stp_curve_create()</a>. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the source curve. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the new copy of the curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga44"></a><!-- doxytag: member="curve.h::stp_curve_create_from_file" ref="ga44" args="(const char *file)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_curve_create_from_file </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>file</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Create a curve from a stream.
+<p>
+<dl compact><dt><b>Warning:</b></dt><dd>NOTE that these calls are not thread-safe! These routines may manipulate the locale to achieve a safe representation. </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>file</em>&nbsp;</td><td>the file to read. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the newly created curve, or NULL if an error occured.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga43"></a><!-- doxytag: member="curve.h::stp_curve_create_from_stream" ref="ga43" args="(FILE *fp)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_curve_create_from_stream </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">FILE *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>fp</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Create a curve from a stream.
+<p>
+<dl compact><dt><b>Warning:</b></dt><dd>NOTE that these calls are not thread-safe! These routines may manipulate the locale to achieve a safe representation. </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>fp</em>&nbsp;</td><td>the stream to read. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the newly created curve, or NULL if an error occured.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga45"></a><!-- doxytag: member="curve.h::stp_curve_create_from_string" ref="ga45" args="(const char *string)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_curve_create_from_string </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>string</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Create a curve from a string.
+<p>
+<dl compact><dt><b>Warning:</b></dt><dd>NOTE that these calls are not thread-safe! These routines may manipulate the locale to achieve a safe representation. </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>string</em>&nbsp;</td><td>the string to read. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the newly created curve, or NULL if an error occured.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga4"></a><!-- doxytag: member="curve.h::stp_curve_destroy" ref="ga4" args="(stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_curve_destroy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Destroy an curve.
+<p>
+It is an error to destroy the curve more than once. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to destroy.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga6"></a><!-- doxytag: member="curve.h::stp_curve_get_bounds" ref="ga6" args="(const stp_curve_t *curve, double *low, double *high)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_curve_get_bounds </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>low</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>high</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the lower and upper bounds on a curve.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>low</em>&nbsp;</td><td>a pointer to a double to store the lower bound in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>high</em>&nbsp;</td><td>a pointer to a double to store the upper bound in.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga24"></a><!-- doxytag: member="curve.h::stp_curve_get_data" ref="ga24" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const double* stp_curve_get_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a pointer to the curve's raw data.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This call also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga25"></a><!-- doxytag: member="curve.h::stp_curve_get_data_points" ref="ga25" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a>* stp_curve_get_data_points </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a pointer to the curve's raw data as points.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This call also returns NULL if the curve is a dense (equally-spaced) curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga26"></a><!-- doxytag: member="curve.h::stp_curve_get_float_data" ref="ga26" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const float* stp_curve_get_float_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get pointer to the curve's raw data as floats.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga35"></a><!-- doxytag: member="curve.h::stp_curve_get_gamma" ref="ga35" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double stp_curve_get_gamma </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the gamma value of the curve.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the gamma value. A value of 0 indicates that the curve does not have a valid gamma value.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga29"></a><!-- doxytag: member="curve.h::stp_curve_get_int_data" ref="ga29" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const int* stp_curve_get_int_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get pointer to the curve's raw data as integers.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga12"></a><!-- doxytag: member="curve.h::stp_curve_get_interpolation_type" ref="ga12" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga47">stp_curve_type_t</a> stp_curve_get_interpolation_type </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the curve interpolation type.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the interpolation type.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga27"></a><!-- doxytag: member="curve.h::stp_curve_get_long_data" ref="ga27" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const long* stp_curve_get_long_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get pointer to the curve's raw data as longs.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga37"></a><!-- doxytag: member="curve.h::stp_curve_get_point" ref="ga37" args="(const stp_curve_t *curve, size_t where, double *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_get_point </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>where</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a point along the curve.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>where</em>&nbsp;</td><td>the point to get. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to a double to store the value of where in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>FALSE if where is outside of the number of valid points. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga9"></a><!-- doxytag: member="curve.h::stp_curve_get_range" ref="ga9" args="(const stp_curve_t *curve, double *low, double *high)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_curve_get_range </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>low</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>high</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga33"></a><!-- doxytag: member="curve.h::stp_curve_get_sequence" ref="ga33" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a>* stp_curve_get_sequence </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the underlying stp_sequence_t data structure which stp_curve_t is derived from.
+<p>
+This can be used for fast access to the raw data. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the stp_sequence_t. If the curve is a piecewise curve, the sequence returned is NULL;</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga31"></a><!-- doxytag: member="curve.h::stp_curve_get_short_data" ref="ga31" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const short* stp_curve_get_short_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get pointer to the curve's raw data as shorts.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga22"></a><!-- doxytag: member="curve.h::stp_curve_get_subrange" ref="ga22" args="(const stp_curve_t *curve, size_t start, size_t count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_curve_get_subrange </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>start</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a curve containing a subrange of data.
+<p>
+If the start or count is invalid, the returned curve will compare equal to NULL (i. e. it will be a null pointer). start and count must not exceed the number of points in the curve, and count must be at least 2. The curve must be a dense (equally-spaced) curve <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>start</em>&nbsp;</td><td>the start of the subrange. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of point starting at start. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a curve containing the subrange. The returned curve is non-wrapping.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga30"></a><!-- doxytag: member="curve.h::stp_curve_get_uint_data" ref="ga30" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned int* stp_curve_get_uint_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get pointer to the curve's raw data as unsigned integers.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga28"></a><!-- doxytag: member="curve.h::stp_curve_get_ulong_data" ref="ga28" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned long* stp_curve_get_ulong_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get pointer to the curve's raw data as unsigned longs.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga32"></a><!-- doxytag: member="curve.h::stp_curve_get_ushort_data" ref="ga32" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned short* stp_curve_get_ushort_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get pointer to the curve's raw data as unsigned shorts.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga7"></a><!-- doxytag: member="curve.h::stp_curve_get_wrap" ref="ga7" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga48">stp_curve_wrap_mode_t</a> stp_curve_get_wrap </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the wrapping mode.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the wrapping mode.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga38"></a><!-- doxytag: member="curve.h::stp_curve_interpolate_value" ref="ga38" args="(const stp_curve_t *curve, double where, double *result)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_interpolate_value </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>where</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>result</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Interpolate a point along the curve.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>where</em>&nbsp;</td><td>the point to interpolate. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>a pointer to double to store the value of where in. If interpolation would produce a value outside of the allowed range (as could happen with spline interpolation), the value is clipped to the range. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>FALSE if 'where' is less than 0 or greater than the number of points, an error is returned. Also returns FALSE if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga8"></a><!-- doxytag: member="curve.h::stp_curve_is_piecewise" ref="ga8" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_is_piecewise </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Determine whether the curve is piecewise.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>whether the curve is piecewise</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga39"></a><!-- doxytag: member="curve.h::stp_curve_resample" ref="ga39" args="(stp_curve_t *curve, size_t points)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_resample </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>points</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Resample a curve (change the number of points).
+<p>
+This does not destroy the gamma value of a curve. Points are interpolated as required; any interpolation that would place points outside of the bounds of the curve will be clipped to the bounds. The resulting curve is always dense (equally-spaced). This is the correct way to convert a piecewise curve to an equally-spaced curve. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use (must not exceed 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>points</em>&nbsp;</td><td>the number of points. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>FALSE if the number of points is invalid (less than two, except that zero points is permitted for a gamma curve).</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga40"></a><!-- doxytag: member="curve.h::stp_curve_rescale" ref="ga40" args="(stp_curve_t *curve, double scale, stp_curve_compose_t mode, stp_curve_bounds_t bounds_mode)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_rescale </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>scale</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>mode</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__curve.html#ga50">stp_curve_bounds_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>bounds_mode</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Rescale a curve (multiply all points by a scaling constant).
+<p>
+This also rescales the bounds. Note that this currently destroys the gamma property of the curve. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>scale</em>&nbsp;</td><td>the scaling factor. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>the composition mode. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>bounds_mode</em>&nbsp;</td><td>the bounds exceeding mode. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>FALSE if this would exceed floating point limits</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga5"></a><!-- doxytag: member="curve.h::stp_curve_set_bounds" ref="ga5" args="(stp_curve_t *curve, double low, double high)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_bounds </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>low</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>high</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the lower and upper bounds on a curve.
+<p>
+To change the bounds adjusting data as required, use stp_curve_rescale instead. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>low</em>&nbsp;</td><td>the lower bound. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>high</em>&nbsp;</td><td>the upper bound. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>FALSE if any existing points on the curve are outside the bounds.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga13"></a><!-- doxytag: member="curve.h::stp_curve_set_data" ref="ga13" args="(stp_curve_t *curve, size_t count, const double *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set all data points of the curve.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a curve with equally-spaced points. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of doubles (must be at least count in size). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga14"></a><!-- doxytag: member="curve.h::stp_curve_set_data_points" ref="ga14" args="(stp_curve_t *curve, size_t count, const stp_curve_point_t *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_data_points </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set all data points of the curve.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a piecewise curve. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of points (must be at least count in size). The first point must have X=0, and each point must have an X value at least .000001 greater than the previous point. If the curve is not a wraparound curve, the last point must have X=1. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga15"></a><!-- doxytag: member="curve.h::stp_curve_set_float_data" ref="ga15" args="(stp_curve_t *curve, size_t count, const float *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_float_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const float *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data points in a curve from float values.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a curve with equally-spaced points. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of floats (must be at least count in size). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga34"></a><!-- doxytag: member="curve.h::stp_curve_set_gamma" ref="ga34" args="(stp_curve_t *curve, double f_gamma)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_gamma </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>f_gamma</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the gamma of a curve.
+<p>
+This replaces all existing points along the curve. The bounds are set to 0..1. If the gamma value is positive, the function is increasing; if negative, the function is decreasing. Count must be either 0 or at least 2. If the count is zero, the gamma of the curve is set for interpolation purposes, but points cannot be assigned to. It is illegal to set gamma on a wrap-mode curve. The resulting curve is treated as a dense (equally-spaced) curve. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>f_gamma</em>&nbsp;</td><td>the gamma value to set. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>FALSE if the gamma value is illegal (0, infinity, or NaN), or if the curve wraps around.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga18"></a><!-- doxytag: member="curve.h::stp_curve_set_int_data" ref="ga18" args="(stp_curve_t *curve, size_t count, const int *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_int_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data points in a curve from integer values.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a curve with equally-spaced points. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of integers (must be at least count in size). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga11"></a><!-- doxytag: member="curve.h::stp_curve_set_interpolation_type" ref="ga11" args="(stp_curve_t *curve, stp_curve_type_t itype)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_interpolation_type </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__curve.html#ga47">stp_curve_type_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>itype</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the curve interpolation type.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>itype</em>&nbsp;</td><td>the interpolation type. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, or 0 if itype is invalid.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga16"></a><!-- doxytag: member="curve.h::stp_curve_set_long_data" ref="ga16" args="(stp_curve_t *curve, size_t count, const long *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_long_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const long *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data points in a curve from long values.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a curve with equally-spaced points. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of longs (must be at least count in size). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga36"></a><!-- doxytag: member="curve.h::stp_curve_set_point" ref="ga36" args="(stp_curve_t *curve, size_t where, double data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_point </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>where</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a point along the curve.
+<p>
+This call destroys any gamma value assigned to the curve. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>where</em>&nbsp;</td><td>the point to set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the value to set where to. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>FALSE if data is outside the valid bounds or if where is outside the number of valid points. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga20"></a><!-- doxytag: member="curve.h::stp_curve_set_short_data" ref="ga20" args="(stp_curve_t *curve, size_t count, const short *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_short_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const short *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data points in a curve from short values.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a curve with equally-spaced points. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of shorts (must be at least count in size). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga23"></a><!-- doxytag: member="curve.h::stp_curve_set_subrange" ref="ga23" args="(stp_curve_t *curve, const stp_curve_t *range, size_t start)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_subrange </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>range</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>start</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga19"></a><!-- doxytag: member="curve.h::stp_curve_set_uint_data" ref="ga19" args="(stp_curve_t *curve, size_t count, const unsigned int *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_uint_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data points in a curve from unsigned integer values.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a curve with equally-spaced points. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of unsigned integers (must be at least count in size). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga17"></a><!-- doxytag: member="curve.h::stp_curve_set_ulong_data" ref="ga17" args="(stp_curve_t *curve, size_t count, const unsigned long *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_ulong_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned long *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data points in a curve from unsigned long values.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a curve with equally-spaced points. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of unsigned longs (must be at least count in size). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga21"></a><!-- doxytag: member="curve.h::stp_curve_set_ushort_data" ref="ga21" args="(stp_curve_t *curve, size_t count, const unsigned short *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_ushort_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned short *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data points in a curve from unsigned short values.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a curve with equally-spaced points. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of unsigned shorts (must be at least count in size). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga41"></a><!-- doxytag: member="curve.h::stp_curve_write" ref="ga41" args="(FILE *file, const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_write </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">FILE *&nbsp;</td>
+ <td class="mdname" nowrap> <em>file</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Write a curve to a file.
+<p>
+The printable representation is guaranteed to contain only 7-bit printable ASCII characters, and is null-terminated. The curve will not contain any space, newline, single quote, or comma characters. Furthermore, a printed curve will be read back correctly in all locales. These calls are not guaranteed to provide more than 6 decimal places of precision or +/-0.5e-6 accuracy, whichever is less. <dl compact><dt><b>Warning:</b></dt><dd>NOTE that these calls are not thread-safe! These routines may manipulate the locale to achieve a safe representation. </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>file</em>&nbsp;</td><td>the file to write. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga42"></a><!-- doxytag: member="curve.h::stp_curve_write_string" ref="ga42" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* stp_curve_write_string </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Write a curve to a string.
+<p>
+The printable representation is guaranteed to contain only 7-bit printable ASCII characters, and is null-terminated. The curve will not contain any space, newline, or comma characters. Furthermore, a printed curve will be read back correctly in all locales. These calls are not guaranteed to provide more than 6 decimal places of precision or +/-0.5e-6 accuracy, whichever is less. <dl compact><dt><b>Warning:</b></dt><dd>NOTE that these calls are not thread-safe! These routines may manipulate the locale to achieve a safe representation. </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to a string. This is allocated on the heap, and it is the caller's responsibility to free it.</dd></dl>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/group__image.html b/doc/gutenprint/html/group__image.html
new file mode 100644
index 0000000..99cb917
--- /dev/null
+++ b/doc/gutenprint/html/group__image.html
@@ -0,0 +1,353 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: image</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>image</h1>The image type is an abstract data type for interfacing with the image creation program.
+<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__image.html">stp_image</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The image type is an abstract data type for interfacing with the image creation program. <a href="structstp__image.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga8">STP_CHANNEL_LIMIT</a>&nbsp;&nbsp;&nbsp;(32)</td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__image.html">stp_image</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga0">stp_image_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The image type is an abstract data type for interfacing with the image creation program. <a href="#ga0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga9">stp_image_status_t</a> { <a class="el" href="group__image.html#gga9a2">STP_IMAGE_STATUS_OK</a>,
+<a class="el" href="group__image.html#gga9a3">STP_IMAGE_STATUS_ABORT</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Image status. <a href="group__image.html#ga9">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga1">stp_image_init</a> (<a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga2">stp_image_reset</a> (<a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga3">stp_image_width</a> (<a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga4">stp_image_height</a> (<a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__image.html#ga9">stp_image_status_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga5">stp_image_get_row</a> (<a class="el" href="structstp__image.html">stp_image_t</a> *image, unsigned char *data, size_t limit, int row)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga6">stp_image_get_appname</a> (<a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga7">stp_image_conclude</a> (<a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The image type is an abstract data type for interfacing with the image creation program.
+<p>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="ga8"></a><!-- doxytag: member="image.h::STP_CHANNEL_LIMIT" ref="ga8" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_CHANNEL_LIMIT&nbsp;&nbsp;&nbsp;(32) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The maximum number of channels. </td>
+ </tr>
+</table>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="ga0"></a><!-- doxytag: member="image.h::stp_image_t" ref="ga0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="structstp__image.html">stp_image</a> <a class="el" href="structstp__image.html">stp_image_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The image type is an abstract data type for interfacing with the image creation program.
+<p>
+It provides callbacks to functions defined within the client application which are called while printing the image. </td>
+ </tr>
+</table>
+<hr><h2>Enumeration Type Documentation</h2>
+<a class="anchor" name="ga9"></a><!-- doxytag: member="image.h::stp_image_status_t" ref="ga9" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="group__image.html#ga9">stp_image_status_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Image status.
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="gga9a2"></a><!-- doxytag: member="STP_IMAGE_STATUS_OK" ref="gga9a2" args="" -->STP_IMAGE_STATUS_OK</em>&nbsp;</td><td>
+Everything is OK. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga9a3"></a><!-- doxytag: member="STP_IMAGE_STATUS_ABORT" ref="gga9a3" args="" -->STP_IMAGE_STATUS_ABORT</em>&nbsp;</td><td>
+An error occured, or the job was aborted. </td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="ga7"></a><!-- doxytag: member="image.h::stp_image_conclude" ref="ga7" args="(stp_image_t *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_image_conclude </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__image.html">stp_image_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>image</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga6"></a><!-- doxytag: member="image.h::stp_image_get_appname" ref="ga6" args="(stp_image_t *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_image_get_appname </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__image.html">stp_image_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>image</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga5"></a><!-- doxytag: member="image.h::stp_image_get_row" ref="ga5" args="(stp_image_t *image, unsigned char *data, size_t limit, int row)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__image.html#ga9">stp_image_status_t</a> stp_image_get_row </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__image.html">stp_image_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>image</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>limit</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>row</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga4"></a><!-- doxytag: member="image.h::stp_image_height" ref="ga4" args="(stp_image_t *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_image_height </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__image.html">stp_image_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>image</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga1"></a><!-- doxytag: member="image.h::stp_image_init" ref="ga1" args="(stp_image_t *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_image_init </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__image.html">stp_image_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>image</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga2"></a><!-- doxytag: member="image.h::stp_image_reset" ref="ga2" args="(stp_image_t *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_image_reset </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__image.html">stp_image_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>image</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga3"></a><!-- doxytag: member="image.h::stp_image_width" ref="ga3" args="(stp_image_t *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_image_width </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__image.html">stp_image_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>image</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/group__intl.html b/doc/gutenprint/html/group__intl.html
new file mode 100644
index 0000000..f650ade
--- /dev/null
+++ b/doc/gutenprint/html/group__intl.html
@@ -0,0 +1,243 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: intl</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>intl</h1>Internationalisation functions are used to localise Gimp-Print by translating strings into the user's native language.
+<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl.html#ga0">textdomain</a>(String)&nbsp;&nbsp;&nbsp;(String)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl.html#ga1">gettext</a>(String)&nbsp;&nbsp;&nbsp;(String)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl.html#ga2">dgettext</a>(Domain, Message)&nbsp;&nbsp;&nbsp;(Message)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl.html#ga3">dcgettext</a>(Domain, Message, Type)&nbsp;&nbsp;&nbsp;(Message)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl.html#ga4">bindtextdomain</a>(Domain, Directory)&nbsp;&nbsp;&nbsp;(Domain)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl.html#ga5">_</a>(String)&nbsp;&nbsp;&nbsp;(String)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl.html#ga6">N_</a>(String)&nbsp;&nbsp;&nbsp;(String)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Internationalisation functions are used to localise Gimp-Print by translating strings into the user's native language.
+<p>
+The macros defined in this header are convenience wrappers around the gettext functions provided by libintl library (or directly by libc on GNU systems).<hr><h2>Define Documentation</h2>
+<a class="anchor" name="ga5"></a><!-- doxytag: member="gutenprint-intl.h::_" ref="ga5" args="(String)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define _ </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">String&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(String)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga4"></a><!-- doxytag: member="gutenprint-intl.h::bindtextdomain" ref="ga4" args="(Domain, Directory)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define bindtextdomain </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">Domain, <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>Directory&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(Domain)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga3"></a><!-- doxytag: member="gutenprint-intl.h::dcgettext" ref="ga3" args="(Domain, Message, Type)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define dcgettext </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">Domain, <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>Message, <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>Type&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(Message)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga2"></a><!-- doxytag: member="gutenprint-intl.h::dgettext" ref="ga2" args="(Domain, Message)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define dgettext </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">Domain, <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>Message&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(Message)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga1"></a><!-- doxytag: member="gutenprint-intl.h::gettext" ref="ga1" args="(String)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define gettext </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">String&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(String)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga6"></a><!-- doxytag: member="gutenprint-intl.h::N_" ref="ga6" args="(String)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define N_ </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">String&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(String)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga0"></a><!-- doxytag: member="gutenprint-intl.h::textdomain" ref="ga0" args="(String)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define textdomain </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">String&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(String)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/group__intl__internal.html b/doc/gutenprint/html/group__intl__internal.html
new file mode 100644
index 0000000..44e56ad
--- /dev/null
+++ b/doc/gutenprint/html/group__intl__internal.html
@@ -0,0 +1,243 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: intl-internal</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>intl-internal</h1>Internationalisation functions are used to localise Gimp-Print by translating strings into the user's native language.
+<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl__internal.html#ga0">textdomain</a>(String)&nbsp;&nbsp;&nbsp;(String)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl__internal.html#ga1">gettext</a>(String)&nbsp;&nbsp;&nbsp;(String)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl__internal.html#ga2">dgettext</a>(Domain, Message)&nbsp;&nbsp;&nbsp;(Message)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl__internal.html#ga3">dcgettext</a>(Domain, Message, Type)&nbsp;&nbsp;&nbsp;(Message)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl__internal.html#ga4">bindtextdomain</a>(Domain, Directory)&nbsp;&nbsp;&nbsp;(Domain)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl__internal.html#ga5">_</a>(String)&nbsp;&nbsp;&nbsp;(String)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl__internal.html#ga6">N_</a>(String)&nbsp;&nbsp;&nbsp;(String)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Internationalisation functions are used to localise Gimp-Print by translating strings into the user's native language.
+<p>
+The macros defined in this header are convenience wrappers around the gettext functions provided by libintl library (or directly by libc on GNU systems). They differ from the normal intl functions in that the textdomain is fixed, for use by functions internal to Gimp-Print. This header should not be included by source files outside the gimp-print source tree.<hr><h2>Define Documentation</h2>
+<a class="anchor" name="ga5"></a><!-- doxytag: member="gutenprint-intl-internal.h::_" ref="ga5" args="(String)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define _ </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">String&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(String)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga4"></a><!-- doxytag: member="gutenprint-intl-internal.h::bindtextdomain" ref="ga4" args="(Domain, Directory)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define bindtextdomain </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">Domain, <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>Directory&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(Domain)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga3"></a><!-- doxytag: member="gutenprint-intl-internal.h::dcgettext" ref="ga3" args="(Domain, Message, Type)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define dcgettext </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">Domain, <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>Message, <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>Type&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(Message)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga2"></a><!-- doxytag: member="gutenprint-intl-internal.h::dgettext" ref="ga2" args="(Domain, Message)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define dgettext </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">Domain, <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>Message&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(Message)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga1"></a><!-- doxytag: member="gutenprint-intl-internal.h::gettext" ref="ga1" args="(String)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define gettext </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">String&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(String)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga6"></a><!-- doxytag: member="gutenprint-intl-internal.h::N_" ref="ga6" args="(String)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define N_ </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">String&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(String)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga0"></a><!-- doxytag: member="gutenprint-intl-internal.h::textdomain" ref="ga0" args="(String)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define textdomain </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">String&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(String)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/group__list.html b/doc/gutenprint/html/group__list.html
new file mode 100644
index 0000000..7571931
--- /dev/null
+++ b/doc/gutenprint/html/group__list.html
@@ -0,0 +1,1312 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: list</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>list</h1>The list data type implements a fast generic doubly-linked list.
+<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_list_item&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga0">stp_list_item_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The list item opaque data type. <a href="#ga0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_list&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga1">stp_list_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The list opaque data type. <a href="#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga2">stp_node_freefunc</a> )(void *)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A callback function to free the data a node contains. <a href="#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga3">stp_node_copyfunc</a> )(const void *)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A callback function to copy the data a node contains. <a href="#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef const char *(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga4">stp_node_namefunc</a> )(const void *)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A callback function to get the name of a node. <a href="#ga4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga5">stp_node_sortfunc</a> )(const void *, const void *)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A callback function to compare two nodes. <a href="#ga5"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga6">stp_list_node_free_data</a> (void *item)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free node data allocated with stp_malloc. <a href="#ga6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga7">stp_list_create</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new list object. <a href="#ga7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga8">stp_list_copy</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy and allocate a list object. <a href="#ga8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga9">stp_list_destroy</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a list object. <a href="#ga9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga10">stp_list_get_start</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find the first item in a list. <a href="#ga10"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga11">stp_list_get_end</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find the last item in a list. <a href="#ga11"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga12">stp_list_get_item_by_index</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list, int idx)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find an item in a list by its index. <a href="#ga12"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga13">stp_list_get_item_by_name</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list, const char *name)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find an item in a list by its name. <a href="#ga13"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga14">stp_list_get_item_by_long_name</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list, const char *long_name)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find an item in a list by its long name. <a href="#ga14"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga15">stp_list_get_length</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the length of a list. <a href="#ga15"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga16">stp_list_set_freefunc</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list, <a class="el" href="group__list.html#ga2">stp_node_freefunc</a> freefunc)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a list node free function. <a href="#ga16"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga2">stp_node_freefunc</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga17">stp_list_get_freefunc</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a list node free function. <a href="#ga17"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga18">stp_list_set_copyfunc</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list, <a class="el" href="group__list.html#ga3">stp_node_copyfunc</a> copyfunc)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a list node copy function. <a href="#ga18"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga3">stp_node_copyfunc</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga19">stp_list_get_copyfunc</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a list node copy function. <a href="#ga19"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga20">stp_list_set_namefunc</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list, <a class="el" href="group__list.html#ga4">stp_node_namefunc</a> namefunc)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a list node name function. <a href="#ga20"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga4">stp_node_namefunc</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga21">stp_list_get_namefunc</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a list node name function. <a href="#ga21"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga22">stp_list_set_long_namefunc</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list, <a class="el" href="group__list.html#ga4">stp_node_namefunc</a> long_namefunc)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a list node long name function. <a href="#ga22"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga4">stp_node_namefunc</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga23">stp_list_get_long_namefunc</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a list node long name function. <a href="#ga23"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga24">stp_list_set_sortfunc</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list, <a class="el" href="group__list.html#ga5">stp_node_sortfunc</a> sortfunc)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a list node sort function. <a href="#ga24"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga5">stp_node_sortfunc</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga25">stp_list_get_sortfunc</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a list node sort function. <a href="#ga25"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga26">stp_list_item_create</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list, <a class="el" href="group__list.html#ga0">stp_list_item_t</a> *next, const void *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new list item. <a href="#ga26"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga27">stp_list_item_destroy</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list, <a class="el" href="group__list.html#ga0">stp_list_item_t</a> *item)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a list item. <a href="#ga27"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga28">stp_list_item_prev</a> (const <a class="el" href="group__list.html#ga0">stp_list_item_t</a> *item)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the previous item in the list. <a href="#ga28"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga29">stp_list_item_next</a> (const <a class="el" href="group__list.html#ga0">stp_list_item_t</a> *item)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the next item in the list. <a href="#ga29"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga30">stp_list_item_get_data</a> (const <a class="el" href="group__list.html#ga0">stp_list_item_t</a> *item)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data associated with a list item. <a href="#ga30"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga31">stp_list_item_set_data</a> (<a class="el" href="group__list.html#ga0">stp_list_item_t</a> *item, void *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data associated with a list item. <a href="#ga31"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The list data type implements a fast generic doubly-linked list.
+<p>
+It supports all of the operations you might want in a list (insert, remove, iterate over the list, copy whole lists), plus some (optional) less common features: finding items by index, name or long name, and sorting. These should also be fairly fast, due to caching in the list head.<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="ga0"></a><!-- doxytag: member="list.h::stp_list_item_t" ref="ga0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct stp_list_item <a class="el" href="group__list.html#ga0">stp_list_item_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The list item opaque data type.
+<p>
+This object is a node in the list. </td>
+ </tr>
+</table>
+<a class="anchor" name="ga1"></a><!-- doxytag: member="list.h::stp_list_t" ref="ga1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct stp_list <a class="el" href="group__list.html#ga1">stp_list_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The list opaque data type.
+<p>
+This object represents the list as a whole. </td>
+ </tr>
+</table>
+<a class="anchor" name="ga3"></a><!-- doxytag: member="list.h::stp_node_copyfunc" ref="ga3" args=")(const void *)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef void*(* <a class="el" href="group__list.html#ga3">stp_node_copyfunc</a>)(const void *) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+A callback function to copy the data a node contains.
+<p>
+The parameter is a pointer to the node data. The return value is a pointer to the new copy of the data. </td>
+ </tr>
+</table>
+<a class="anchor" name="ga2"></a><!-- doxytag: member="list.h::stp_node_freefunc" ref="ga2" args=")(void *)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef void(* <a class="el" href="group__list.html#ga2">stp_node_freefunc</a>)(void *) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+A callback function to free the data a node contains.
+<p>
+The parameter is a pointer to the node data. </td>
+ </tr>
+</table>
+<a class="anchor" name="ga4"></a><!-- doxytag: member="list.h::stp_node_namefunc" ref="ga4" args=")(const void *)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef const char*(* <a class="el" href="group__list.html#ga4">stp_node_namefunc</a>)(const void *) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+A callback function to get the name of a node.
+<p>
+The parameter is a pointer to the node data. The return value is a pointer to the name of the node, or NULL if there is no name. </td>
+ </tr>
+</table>
+<a class="anchor" name="ga5"></a><!-- doxytag: member="list.h::stp_node_sortfunc" ref="ga5" args=")(const void *, const void *)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef int(* <a class="el" href="group__list.html#ga5">stp_node_sortfunc</a>)(const void *, const void *) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+A callback function to compare two nodes.
+<p>
+The two parameters are pointers to node data. The return value is &lt;0 if the first sorts before the second, 0 if they sort identically, and &gt;0 if the first sorts after the second. </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="ga8"></a><!-- doxytag: member="list.h::stp_list_copy" ref="ga8" args="(const stp_list_t *list)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a>* stp_list_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>list</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Copy and allocate a list object.
+<p>
+list must be a valid list object previously created with <a class="el" href="group__list.html#ga7">stp_list_create()</a>. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to copy. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the new copy of the list.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga7"></a><!-- doxytag: member="list.h::stp_list_create" ref="ga7" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a>* stp_list_create </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Create a new list object.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the newly created list object.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga9"></a><!-- doxytag: member="list.h::stp_list_destroy" ref="ga9" args="(stp_list_t *list)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_list_destroy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>list</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Destroy a list object.
+<p>
+It is an error to destroy the list more than once. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to destroy. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>0 on success, 1 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga19"></a><!-- doxytag: member="list.h::stp_list_get_copyfunc" ref="ga19" args="(const stp_list_t *list)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga3">stp_node_copyfunc</a> stp_list_get_copyfunc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>list</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a list node copy function.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the function previously set with stp_list_set_copyfunc, or NULL if no function has been set.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga11"></a><!-- doxytag: member="list.h::stp_list_get_end" ref="ga11" args="(const stp_list_t *list)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a>* stp_list_get_end </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>list</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Find the last item in a list.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the last list item, or NULL if the list is empty.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga17"></a><!-- doxytag: member="list.h::stp_list_get_freefunc" ref="ga17" args="(const stp_list_t *list)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga2">stp_node_freefunc</a> stp_list_get_freefunc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>list</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a list node free function.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the function previously set with stp_list_set_freefunc, or NULL if no function has been set.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga12"></a><!-- doxytag: member="list.h::stp_list_get_item_by_index" ref="ga12" args="(const stp_list_t *list, int idx)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a>* stp_list_get_item_by_index </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>idx</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Find an item in a list by its index.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>idx</em>&nbsp;</td><td>the index to find. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the list item, or NULL if the index is invalid or the list is empty.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga14"></a><!-- doxytag: member="list.h::stp_list_get_item_by_long_name" ref="ga14" args="(const stp_list_t *list, const char *long_name)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a>* stp_list_get_item_by_long_name </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>long_name</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Find an item in a list by its long name.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>long_name</em>&nbsp;</td><td>the long name to find. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the list item, or NULL if the long name is invalid or the list is empty.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga13"></a><!-- doxytag: member="list.h::stp_list_get_item_by_name" ref="ga13" args="(const stp_list_t *list, const char *name)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a>* stp_list_get_item_by_name </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Find an item in a list by its name.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>the name to find. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the list item, or NULL if the name is invalid or the list is empty.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga15"></a><!-- doxytag: member="list.h::stp_list_get_length" ref="ga15" args="(const stp_list_t *list)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_list_get_length </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>list</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the length of a list.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the list length (number of list items).</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga23"></a><!-- doxytag: member="list.h::stp_list_get_long_namefunc" ref="ga23" args="(const stp_list_t *list)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga4">stp_node_namefunc</a> stp_list_get_long_namefunc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>list</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a list node long name function.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the function previously set with stp_list_set_long_namefunc, or NULL if no function has been set.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga21"></a><!-- doxytag: member="list.h::stp_list_get_namefunc" ref="ga21" args="(const stp_list_t *list)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga4">stp_node_namefunc</a> stp_list_get_namefunc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>list</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a list node name function.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the function previously set with stp_list_set_namefunc, or NULL if no function has been set.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga25"></a><!-- doxytag: member="list.h::stp_list_get_sortfunc" ref="ga25" args="(const stp_list_t *list)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga5">stp_node_sortfunc</a> stp_list_get_sortfunc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>list</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a list node sort function.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the function previously set with stp_list_set_sortfunc, or NULL if no function has been set.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga10"></a><!-- doxytag: member="list.h::stp_list_get_start" ref="ga10" args="(const stp_list_t *list)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a>* stp_list_get_start </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>list</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Find the first item in a list.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the first list item, or NULL if the list is empty.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga26"></a><!-- doxytag: member="list.h::stp_list_item_create" ref="ga26" args="(stp_list_t *list, stp_list_item_t *next, const void *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_list_item_create </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>next</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Create a new list item.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>next</em>&nbsp;</td><td>the next item in the list, or NULL to insert at the end of the list. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the data the list item will contain. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>0 on success, 1 on failure (if data is NULL, for example).</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga27"></a><!-- doxytag: member="list.h::stp_list_item_destroy" ref="ga27" args="(stp_list_t *list, stp_list_item_t *item)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_list_item_destroy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>item</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Destroy a list item.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>item</em>&nbsp;</td><td>the item to destroy. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>0 on success, 1 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga30"></a><!-- doxytag: member="list.h::stp_list_item_get_data" ref="ga30" args="(const stp_list_item_t *item)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void* stp_list_item_get_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>item</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the data associated with a list item.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>item</em>&nbsp;</td><td>the list item to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the data associated with item.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga29"></a><!-- doxytag: member="list.h::stp_list_item_next" ref="ga29" args="(const stp_list_item_t *item)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a>* stp_list_item_next </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>item</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the next item in the list.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>item</em>&nbsp;</td><td>the item to start from. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the list item following from item, or NULL if item is the end of the list.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga28"></a><!-- doxytag: member="list.h::stp_list_item_prev" ref="ga28" args="(const stp_list_item_t *item)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a>* stp_list_item_prev </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>item</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the previous item in the list.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>item</em>&nbsp;</td><td>the item to start from. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the list item prior to item, or NULL if item is the start of the list.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga31"></a><!-- doxytag: member="list.h::stp_list_item_set_data" ref="ga31" args="(stp_list_item_t *item, void *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_list_item_set_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>item</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data associated with a list item.
+<p>
+<dl compact><dt><b>Warning:</b></dt><dd>Note that if a sortfunc is in use, changing the data will NOT re-sort the list! </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>item</em>&nbsp;</td><td>the list item to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the data to set. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>0 on success, 1 on failure (if data is NULL).</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga6"></a><!-- doxytag: member="list.h::stp_list_node_free_data" ref="ga6" args="(void *item)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_list_node_free_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>item</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Free node data allocated with stp_malloc.
+<p>
+This function is indended for use as an stp_node_freefunc, which uses stp_free to free the node data. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>item</em>&nbsp;</td><td>the node data to free</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga18"></a><!-- doxytag: member="list.h::stp_list_set_copyfunc" ref="ga18" args="(stp_list_t *list, stp_node_copyfunc copyfunc)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_list_set_copyfunc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__list.html#ga3">stp_node_copyfunc</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>copyfunc</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a list node copy function.
+<p>
+This callback function will be called whenever a list item is copied. Its intended use is for automatic object copying (since C lacks a copy constructor). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>copyfunc</em>&nbsp;</td><td>the function to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga16"></a><!-- doxytag: member="list.h::stp_list_set_freefunc" ref="ga16" args="(stp_list_t *list, stp_node_freefunc freefunc)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_list_set_freefunc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__list.html#ga2">stp_node_freefunc</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>freefunc</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a list node free function.
+<p>
+This callback function will be called whenever a list item is destroyed. Its intended use is for automatic object destruction and any other cleanup required. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>freefunc</em>&nbsp;</td><td>the function to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga22"></a><!-- doxytag: member="list.h::stp_list_set_long_namefunc" ref="ga22" args="(stp_list_t *list, stp_node_namefunc long_namefunc)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_list_set_long_namefunc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__list.html#ga4">stp_node_namefunc</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>long_namefunc</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a list node long name function.
+<p>
+This callback function will be called whenever the long name of a list item needs to be determined. This is used to find list items by long name. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>long_namefunc</em>&nbsp;</td><td>the function to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga20"></a><!-- doxytag: member="list.h::stp_list_set_namefunc" ref="ga20" args="(stp_list_t *list, stp_node_namefunc namefunc)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_list_set_namefunc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__list.html#ga4">stp_node_namefunc</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>namefunc</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a list node name function.
+<p>
+This callback function will be called whenever the name of a list item needs to be determined. This is used to find list items by name. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>namefunc</em>&nbsp;</td><td>the function to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga24"></a><!-- doxytag: member="list.h::stp_list_set_sortfunc" ref="ga24" args="(stp_list_t *list, stp_node_sortfunc sortfunc)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_list_set_sortfunc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__list.html#ga5">stp_node_sortfunc</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>sortfunc</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a list node sort function.
+<p>
+This callback function will be called to determine the sort order for list items in sorted lists. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the list to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sortfunc</em>&nbsp;</td><td>the function to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/group__papersize.html b/doc/gutenprint/html/group__papersize.html
new file mode 100644
index 0000000..f8c424f
--- /dev/null
+++ b/doc/gutenprint/html/group__papersize.html
@@ -0,0 +1,277 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: papersize</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>papersize</h1>The papersize describes the dimensions of a paper.
+<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__papersize__t.html">stp_papersize_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The papersize data type. <a href="structstp__papersize__t.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__papersize.html#ga5">stp_papersize_unit_t</a> { <a class="el" href="group__papersize.html#gga5a0">PAPERSIZE_ENGLISH_STANDARD</a>,
+<a class="el" href="group__papersize.html#gga5a1">PAPERSIZE_METRIC_STANDARD</a>,
+<a class="el" href="group__papersize.html#gga5a2">PAPERSIZE_ENGLISH_EXTENDED</a>,
+<a class="el" href="group__papersize.html#gga5a3">PAPERSIZE_METRIC_EXTENDED</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Units of measurement. <a href="group__papersize.html#ga5">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__papersize.html#ga0">stp_known_papersizes</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of available papersizes. <a href="#ga0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__papersize__t.html">stp_papersize_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__papersize.html#ga1">stp_get_papersize_by_name</a> (const char *name)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a papersize by name. <a href="#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__papersize__t.html">stp_papersize_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__papersize.html#ga2">stp_get_papersize_by_size</a> (int length, int width)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a papersize by size. <a href="#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__papersize__t.html">stp_papersize_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__papersize.html#ga3">stp_get_papersize_by_index</a> (int idx)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a papersize by its index number. <a href="#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__papersize.html#ga4">stp_default_media_size</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *width, int *height)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The papersize describes the dimensions of a paper.
+<p>
+<hr><h2>Enumeration Type Documentation</h2>
+<a class="anchor" name="ga5"></a><!-- doxytag: member="paper.h::stp_papersize_unit_t" ref="ga5" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="group__papersize.html#ga5">stp_papersize_unit_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Units of measurement.
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="gga5a0"></a><!-- doxytag: member="PAPERSIZE_ENGLISH_STANDARD" ref="gga5a0" args="" -->PAPERSIZE_ENGLISH_STANDARD</em>&nbsp;</td><td>
+English/Imperial units. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga5a1"></a><!-- doxytag: member="PAPERSIZE_METRIC_STANDARD" ref="gga5a1" args="" -->PAPERSIZE_METRIC_STANDARD</em>&nbsp;</td><td>
+Metric units. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga5a2"></a><!-- doxytag: member="PAPERSIZE_ENGLISH_EXTENDED" ref="gga5a2" args="" -->PAPERSIZE_ENGLISH_EXTENDED</em>&nbsp;</td><td>
+English/Imperial units (optional paper, not displayed by default). </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga5a3"></a><!-- doxytag: member="PAPERSIZE_METRIC_EXTENDED" ref="gga5a3" args="" -->PAPERSIZE_METRIC_EXTENDED</em>&nbsp;</td><td>
+Metric units (optional paper, not displayed by default). </td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="ga4"></a><!-- doxytag: member="paper.h::stp_default_media_size" ref="ga4" args="(const stp_vars_t *v, int *width, int *height)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_default_media_size </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>height</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga3"></a><!-- doxytag: member="paper.h::stp_get_papersize_by_index" ref="ga3" args="(int idx)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__papersize__t.html">stp_papersize_t</a>* stp_get_papersize_by_index </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>idx</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a papersize by its index number.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>idx</em>&nbsp;</td><td>the index number. This must not be greater than (total number of papers - 1). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the papersize, or NULL on failure. The pointer should not be freed.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga1"></a><!-- doxytag: member="paper.h::stp_get_papersize_by_name" ref="ga1" args="(const char *name)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__papersize__t.html">stp_papersize_t</a>* stp_get_papersize_by_name </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>name</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a papersize by name.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>the short unique name of the paper. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the papersize, or NULL on failure. The pointer should not be freed.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga2"></a><!-- doxytag: member="paper.h::stp_get_papersize_by_size" ref="ga2" args="(int length, int width)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__papersize__t.html">stp_papersize_t</a>* stp_get_papersize_by_size </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname" nowrap> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>width</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a papersize by size.
+<p>
+The nearest available size to the size requested will be found. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>the length of the paper. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>width</em>&nbsp;</td><td>the width of the paper </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the papersize, or NULL on failure. The pointer should not be freed.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga0"></a><!-- doxytag: member="paper.h::stp_known_papersizes" ref="ga0" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_known_papersizes </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the number of available papersizes.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the number of papersizes.</dd></dl>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/group__printer.html b/doc/gutenprint/html/group__printer.html
new file mode 100644
index 0000000..4337c79
--- /dev/null
+++ b/doc/gutenprint/html/group__printer.html
@@ -0,0 +1,997 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: printer</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>printer</h1>The printer type represents a printer model.
+<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__printfuncs__t.html">stp_printfuncs_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__family.html">stp_family</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_printer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga0">stp_printer_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The printer opaque data type (representation of printer model). <a href="#ga0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__family.html">stp_family</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga1">stp_family_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga2">stp_printer_model_count</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of available printer models. <a href="#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga3">stp_get_printer_by_index</a> (int idx)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a printer model by its index number. <a href="#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga4">stp_get_printer_by_long_name</a> (const char *long_name)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a printer model by its long (translated) name. <a href="#ga4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga5">stp_get_printer_by_driver</a> (const char *driver)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a printer model by its short name. <a href="#ga5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga6">stp_get_printer</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the printer model from a vars object. <a href="#ga6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga7">stp_get_printer_index_by_driver</a> (const char *driver)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the printer index number from the printer model short (driver) name. <a href="#ga7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga8">stp_printer_get_long_name</a> (const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *p)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a printer model's long (translated) name. <a href="#ga8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga9">stp_printer_get_driver</a> (const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *p)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a printer model's short (driver) name. <a href="#ga9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga10">stp_printer_get_family</a> (const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *p)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a printer model's family name. <a href="#ga10"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga11">stp_printer_get_manufacturer</a> (const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *p)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a printer model's manufacturer's name. <a href="#ga11"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga12">stp_printer_get_model</a> (const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *p)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a printer model's model number. <a href="#ga12"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga13">stp_printer_get_defaults</a> (const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *p)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the default vars for a particular printer model. <a href="#ga13"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga14">stp_set_printer_defaults</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *p)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a vars object to use a particular driver, and set the parameter to its defaults. <a href="#ga14"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga15">stp_print</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Print the image. <a href="#ga15"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga16">stp_start_job</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start a print job. <a href="#ga16"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga17">stp_end_job</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">End a print job. <a href="#ga17"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga18">stp_get_model_id</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga19">stp_verify_printer_params</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga20">stp_family_register</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *family)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga21">stp_family_unregister</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *family)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga22">stp_initialize_printer_defaults</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga23">stp_printer_list_parameters</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga24">stp_printer_describe_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name, <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *description)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga25">stp_describe_output</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The printer type represents a printer model.
+<p>
+A particular printer model must selected in order to be able to print. Each printer model provides default print options through a default vars object.<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="ga1"></a><!-- doxytag: member="printers.h::stp_family_t" ref="ga1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="structstp__family.html">stp_family</a> <a class="el" href="structstp__family.html">stp_family_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga0"></a><!-- doxytag: member="printers.h::stp_printer_t" ref="ga0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct stp_printer <a class="el" href="group__printer.html#ga0">stp_printer_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The printer opaque data type (representation of printer model).
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="ga25"></a><!-- doxytag: member="printers.h::stp_describe_output" ref="ga25" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_describe_output </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga17"></a><!-- doxytag: member="printers.h::stp_end_job" ref="ga17" args="(const stp_vars_t *v, stp_image_t *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_end_job </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__image.html">stp_image_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>image</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+End a print job.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>image</em>&nbsp;</td><td>the image to print. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga20"></a><!-- doxytag: member="printers.h::stp_family_register" ref="ga20" args="(stp_list_t *family)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_family_register </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>family</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga21"></a><!-- doxytag: member="printers.h::stp_family_unregister" ref="ga21" args="(stp_list_t *family)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_family_unregister </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>family</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga18"></a><!-- doxytag: member="printers.h::stp_get_model_id" ref="ga18" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_get_model_id </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga6"></a><!-- doxytag: member="printers.h::stp_get_printer" ref="ga6" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a>* stp_get_printer </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the printer model from a vars object.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the printer model, or NULL on failure. The pointer should not be freed.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga5"></a><!-- doxytag: member="printers.h::stp_get_printer_by_driver" ref="ga5" args="(const char *driver)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a>* stp_get_printer_by_driver </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>driver</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a printer model by its short name.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>the printer model's short (driver) name. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the printer model, or NULL on failure. The pointer should not be freed.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga3"></a><!-- doxytag: member="printers.h::stp_get_printer_by_index" ref="ga3" args="(int idx)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a>* stp_get_printer_by_index </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>idx</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a printer model by its index number.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>idx</em>&nbsp;</td><td>the index number. This must not be greater than (total number of printers - 1). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the printer model, or NULL on failure. The pointer should not be freed.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga4"></a><!-- doxytag: member="printers.h::stp_get_printer_by_long_name" ref="ga4" args="(const char *long_name)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a>* stp_get_printer_by_long_name </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>long_name</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a printer model by its long (translated) name.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>long_name</em>&nbsp;</td><td>the printer model's long (translated) name. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the printer model, or NULL on failure. The pointer should not be freed.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga7"></a><!-- doxytag: member="printers.h::stp_get_printer_index_by_driver" ref="ga7" args="(const char *driver)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_get_printer_index_by_driver </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>driver</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the printer index number from the printer model short (driver) name.
+<p>
+<dl compact><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>There should never be any need to use this function.</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>the printer model's short (driver) name. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the index number, or -1 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga22"></a><!-- doxytag: member="printers.h::stp_initialize_printer_defaults" ref="ga22" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_initialize_printer_defaults </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga15"></a><!-- doxytag: member="printers.h::stp_print" ref="ga15" args="(const stp_vars_t *v, stp_image_t *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_print </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__image.html">stp_image_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>image</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Print the image.
+<p>
+<dl compact><dt><b>Warning:</b></dt><dd>stp_job_start() must be called prior to the first call to this function. </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>image</em>&nbsp;</td><td>the image to print. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>0 on failure, 1 on success, 2 on abort requested by the driver.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga24"></a><!-- doxytag: member="printers.h::stp_printer_describe_parameter" ref="ga24" args="(const stp_vars_t *v, const char *name, stp_parameter_t *description)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_printer_describe_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>description</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga13"></a><!-- doxytag: member="printers.h::stp_printer_get_defaults" ref="ga13" args="(const stp_printer_t *p)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a>* stp_printer_get_defaults </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the default vars for a particular printer model.
+<p>
+The default vars should be copied to a new vars object and customised prior to printing. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>the printer model to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the printer model's default vars.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga9"></a><!-- doxytag: member="printers.h::stp_printer_get_driver" ref="ga9" args="(const stp_printer_t *p)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_printer_get_driver </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a printer model's short (driver) name.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>the printer model to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the short name (should never be freed).</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga10"></a><!-- doxytag: member="printers.h::stp_printer_get_family" ref="ga10" args="(const stp_printer_t *p)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_printer_get_family </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a printer model's family name.
+<p>
+The family name is the name of the modular "family" driver this model uses. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>the printer model to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the family name (should never be freed).</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga8"></a><!-- doxytag: member="printers.h::stp_printer_get_long_name" ref="ga8" args="(const stp_printer_t *p)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_printer_get_long_name </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a printer model's long (translated) name.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>the printer model to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the long name (should never be freed).</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga11"></a><!-- doxytag: member="printers.h::stp_printer_get_manufacturer" ref="ga11" args="(const stp_printer_t *p)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_printer_get_manufacturer </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a printer model's manufacturer's name.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>the printer model to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the manufacturer's name (should never be freed).</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga12"></a><!-- doxytag: member="printers.h::stp_printer_get_model" ref="ga12" args="(const stp_printer_t *p)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_printer_get_model </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a printer model's model number.
+<p>
+The model number is used internally by the "family" driver module, and has no meaning out of that context. It bears no relation to the model name/number actually found on the printer itself. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>the printer model to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the model number.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga23"></a><!-- doxytag: member="printers.h::stp_printer_list_parameters" ref="ga23" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a> stp_printer_list_parameters </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga2"></a><!-- doxytag: member="printers.h::stp_printer_model_count" ref="ga2" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_printer_model_count </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the number of available printer models.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the number of printer models.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga14"></a><!-- doxytag: member="printers.h::stp_set_printer_defaults" ref="ga14" args="(stp_vars_t *v, const stp_printer_t *p)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_printer_defaults </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>p</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a vars object to use a particular driver, and set the parameter to its defaults.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>the printer model to use.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga16"></a><!-- doxytag: member="printers.h::stp_start_job" ref="ga16" args="(const stp_vars_t *v, stp_image_t *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_start_job </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__image.html">stp_image_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>image</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Start a print job.
+<p>
+<dl compact><dt><b>Warning:</b></dt><dd>This function must be called prior to the first call to <a class="el" href="group__printer.html#ga15">stp_print()</a>. </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>image</em>&nbsp;</td><td>the image to print. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga19"></a><!-- doxytag: member="printers.h::stp_verify_printer_params" ref="ga19" args="(stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_verify_printer_params </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/group__sequence.html b/doc/gutenprint/html/group__sequence.html
new file mode 100644
index 0000000..be7fade
--- /dev/null
+++ b/doc/gutenprint/html/group__sequence.html
@@ -0,0 +1,1484 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: sequence</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>sequence</h1>The sequence is a simple "vector of numbers" data structure.
+<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_sequence&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The sequence opaque data type. <a href="#ga0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga1">stp_sequence_create</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new sequence. <a href="#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga2">stp_sequence_destroy</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a sequence. <a href="#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga3">stp_sequence_copy</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *dest, const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *source)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy an sequence. <a href="#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga4">stp_sequence_create_copy</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy and allocate an sequence. <a href="#ga4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga5">stp_sequence_set_bounds</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, double low, double high)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the lower and upper bounds. <a href="#ga5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga6">stp_sequence_get_bounds</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, double *low, double *high)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the lower and upper bounds. <a href="#ga6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga7">stp_sequence_get_range</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, double *low, double *high)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get range of values stored in the sequence. <a href="#ga7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga8">stp_sequence_set_size</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t size)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the sequence size. <a href="#ga8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga9">stp_sequence_get_size</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the sequence size. <a href="#ga9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga10">stp_sequence_set_data</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t count, const double *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a sequence. <a href="#ga10"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga11">stp_sequence_set_subrange</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t where, size_t size, const double *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a subrange of a sequence. <a href="#ga11"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga12">stp_sequence_get_data</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t *size, const double **data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in a sequence. <a href="#ga12"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga13">stp_sequence_set_point</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t where, double data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data at a single point in a sequence. <a href="#ga13"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga14">stp_sequence_get_point</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t where, double *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data at a single point in a sequence. <a href="#ga14"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga15">stp_sequence_set_float_data</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t count, const float *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a sequence from float values. <a href="#ga15"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga16">stp_sequence_set_long_data</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t count, const long *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a sequence from long values. <a href="#ga16"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga17">stp_sequence_set_ulong_data</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t count, const unsigned long *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a sequence from unsigned long values. <a href="#ga17"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga18">stp_sequence_set_int_data</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t count, const int *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a sequence from int values. <a href="#ga18"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga19">stp_sequence_set_uint_data</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t count, const unsigned int *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a sequence from unsigned int values. <a href="#ga19"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga20">stp_sequence_set_short_data</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t count, const short *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a sequence from short values. <a href="#ga20"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga21">stp_sequence_set_ushort_data</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t count, const unsigned short *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a sequence from unsigned short values. <a href="#ga21"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const float *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga22">stp_sequence_get_float_data</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in a sequence as float data. <a href="#ga22"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const long *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga23">stp_sequence_get_long_data</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in a sequence as long data. <a href="#ga23"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned long *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga24">stp_sequence_get_ulong_data</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in a sequence as unsigned long data. <a href="#ga24"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga25">stp_sequence_get_int_data</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in a sequence as int data. <a href="#ga25"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga26">stp_sequence_get_uint_data</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in a sequence as unsigned int data. <a href="#ga26"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const short *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga27">stp_sequence_get_short_data</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in a sequence as short data. <a href="#ga27"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned short *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga28">stp_sequence_get_ushort_data</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in a sequence as unsigned short data. <a href="#ga28"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The sequence is a simple "vector of numbers" data structure.
+<p>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="ga0"></a><!-- doxytag: member="sequence.h::stp_sequence_t" ref="ga0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct stp_sequence <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The sequence opaque data type.
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="ga3"></a><!-- doxytag: member="sequence.h::stp_sequence_copy" ref="ga3" args="(stp_sequence_t *dest, const stp_sequence_t *source)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_sequence_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dest</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>source</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Copy an sequence.
+<p>
+Both dest and source must be valid sequences previously created with <a class="el" href="group__sequence.html#ga1">stp_sequence_create()</a>. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>the destination sequence. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>the source sequence.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga1"></a><!-- doxytag: member="sequence.h::stp_sequence_create" ref="ga1" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a>* stp_sequence_create </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Create a new sequence.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the newly created sequence.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga4"></a><!-- doxytag: member="sequence.h::stp_sequence_create_copy" ref="ga4" args="(const stp_sequence_t *sequence)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a>* stp_sequence_create_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>sequence</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Copy and allocate an sequence.
+<p>
+A new sequence will be created, and then the contents of source will be copied into it. The destination must not have been previously allocated with <a class="el" href="group__sequence.html#ga1">stp_sequence_create()</a>. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the source sequence. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the new copy of the sequence.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga2"></a><!-- doxytag: member="sequence.h::stp_sequence_destroy" ref="ga2" args="(stp_sequence_t *sequence)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_sequence_destroy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>sequence</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Destroy a sequence.
+<p>
+It is an error to destroy the sequence more than once. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to destroy.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga6"></a><!-- doxytag: member="sequence.h::stp_sequence_get_bounds" ref="ga6" args="(const stp_sequence_t *sequence, double *low, double *high)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_sequence_get_bounds </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>low</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>high</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the lower and upper bounds.
+<p>
+The values are stored in the variables pointed to by low and high. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to work on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>low</em>&nbsp;</td><td>a pointer to a double to store the low bound in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>high</em>&nbsp;</td><td>a pointer to a double to store the high bound in.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga12"></a><!-- doxytag: member="sequence.h::stp_sequence_get_data" ref="ga12" args="(const stp_sequence_t *sequence, size_t *size, const double **data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_sequence_get_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const double **&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the data in a sequence.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to get the data from. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>the number of elements in the sequence are stored in the size_t pointed to. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to the first element of an sequence of doubles is stored in a pointer to double*. <div class="fragment"><pre class="fragment"> <a class="code" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence;
+ size_t size;
+ <span class="keywordtype">double</span> *data;
+ <a class="code" href="group__sequence.html#ga12">stp_sequence_get_data</a>(sequence, &amp;size, &amp;data);
+</pre></div></td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga22"></a><!-- doxytag: member="sequence.h::stp_sequence_get_float_data" ref="ga22" args="(const stp_sequence_t *sequence, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const float* stp_sequence_get_float_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the data in a sequence as float data.
+<p>
+The pointer returned is owned by the curve, and is not guaranteed to be valid beyond the next non-const curve call; If the bounds of the curve exceed the limits of the data type, NULL is returned. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to get the data from. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of elements in the sequence are stored in the size_t pointed to. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the first element of an sequence of floats is stored in a pointer to float*.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga25"></a><!-- doxytag: member="sequence.h::stp_sequence_get_int_data" ref="ga25" args="(const stp_sequence_t *sequence, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const int* stp_sequence_get_int_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the data in a sequence as int data.
+<p>
+The pointer returned is owned by the curve, and is not guaranteed to be valid beyond the next non-const curve call; If the bounds of the curve exceed the limits of the data type, NULL is returned. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to get the data from. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of elements in the sequence are stored in the size_t pointed to. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the first element of an sequence of ints is stored in a pointer to int*.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga23"></a><!-- doxytag: member="sequence.h::stp_sequence_get_long_data" ref="ga23" args="(const stp_sequence_t *sequence, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const long* stp_sequence_get_long_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the data in a sequence as long data.
+<p>
+The pointer returned is owned by the curve, and is not guaranteed to be valid beyond the next non-const curve call; If the bounds of the curve exceed the limits of the data type, NULL is returned. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to get the data from. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of elements in the sequence are stored in the size_t pointed to. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the first element of an sequence of longs is stored in a pointer to long*.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga14"></a><!-- doxytag: member="sequence.h::stp_sequence_get_point" ref="ga14" args="(const stp_sequence_t *sequence, size_t where, double *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_sequence_get_point </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>where</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the data at a single point in a sequence.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>where</em>&nbsp;</td><td>the location (indexed from zero). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the datum is stored in the double pointed to. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga7"></a><!-- doxytag: member="sequence.h::stp_sequence_get_range" ref="ga7" args="(const stp_sequence_t *sequence, double *low, double *high)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_sequence_get_range </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>low</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>high</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get range of values stored in the sequence.
+<p>
+The values are stored in the variables pointed to by low and high. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to work on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>low</em>&nbsp;</td><td>a pointer to a double to store the low bound in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>high</em>&nbsp;</td><td>a pointer to a double to store the high bound in.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga27"></a><!-- doxytag: member="sequence.h::stp_sequence_get_short_data" ref="ga27" args="(const stp_sequence_t *sequence, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const short* stp_sequence_get_short_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the data in a sequence as short data.
+<p>
+The pointer returned is owned by the curve, and is not guaranteed to be valid beyond the next non-const curve call; If the bounds of the curve exceed the limits of the data type, NULL is returned. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to get the data from. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of elements in the sequence are stored in the size_t pointed to. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the first element of an sequence of shorts is stored in a pointer to short*.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga9"></a><!-- doxytag: member="sequence.h::stp_sequence_get_size" ref="ga9" args="(const stp_sequence_t *sequence)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">size_t stp_sequence_get_size </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>sequence</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the sequence size.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the sequence size.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga26"></a><!-- doxytag: member="sequence.h::stp_sequence_get_uint_data" ref="ga26" args="(const stp_sequence_t *sequence, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned int* stp_sequence_get_uint_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the data in a sequence as unsigned int data.
+<p>
+The pointer returned is owned by the curve, and is not guaranteed to be valid beyond the next non-const curve call; If the bounds of the curve exceed the limits of the data type, NULL is returned. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to get the data from. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of elements in the sequence are stored in the size_t pointed to. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the first element of an sequence of unsigned ints is stored in a pointer to unsigned int*.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga24"></a><!-- doxytag: member="sequence.h::stp_sequence_get_ulong_data" ref="ga24" args="(const stp_sequence_t *sequence, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned long* stp_sequence_get_ulong_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the data in a sequence as unsigned long data.
+<p>
+The pointer returned is owned by the curve, and is not guaranteed to be valid beyond the next non-const curve call; If the bounds of the curve exceed the limits of the data type, NULL is returned. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to get the data from. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of elements in the sequence are stored in the size_t pointed to. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the first element of an sequence of unsigned longs is stored in a pointer to unsigned long*.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga28"></a><!-- doxytag: member="sequence.h::stp_sequence_get_ushort_data" ref="ga28" args="(const stp_sequence_t *sequence, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned short* stp_sequence_get_ushort_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the data in a sequence as unsigned short data.
+<p>
+The pointer returned is owned by the curve, and is not guaranteed to be valid beyond the next non-const curve call; If the bounds of the curve exceed the limits of the data type, NULL is returned. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to get the data from. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of elements in the sequence are stored in the size_t pointed to. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the first element of an sequence of unsigned shorts is stored in a pointer to unsigned short*.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga5"></a><!-- doxytag: member="sequence.h::stp_sequence_set_bounds" ref="ga5" args="(stp_sequence_t *sequence, double low, double high)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_sequence_set_bounds </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>low</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>high</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the lower and upper bounds.
+<p>
+The lower and upper bounds set the minimum and maximum values that a point in the sequence may hold. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to work on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>low</em>&nbsp;</td><td>the lower bound. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>high</em>&nbsp;</td><td>the upper bound. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, or 0 if the lower bound is greater than the upper bound.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga10"></a><!-- doxytag: member="sequence.h::stp_sequence_set_data" ref="ga10" args="(stp_sequence_t *sequence, size_t count, const double *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_sequence_set_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data in a sequence.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of elements in the data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to the first member of a sequence containing the data to set. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga15"></a><!-- doxytag: member="sequence.h::stp_sequence_set_float_data" ref="ga15" args="(stp_sequence_t *sequence, size_t count, const float *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_sequence_set_float_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const float *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data in a sequence from float values.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of elements in the data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to the first member of a sequence containing the data to set. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga18"></a><!-- doxytag: member="sequence.h::stp_sequence_set_int_data" ref="ga18" args="(stp_sequence_t *sequence, size_t count, const int *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_sequence_set_int_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data in a sequence from int values.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of elements in the data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to the first member of a sequence containing the data to set. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga16"></a><!-- doxytag: member="sequence.h::stp_sequence_set_long_data" ref="ga16" args="(stp_sequence_t *sequence, size_t count, const long *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_sequence_set_long_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const long *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data in a sequence from long values.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of elements in the data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to the first member of a sequence containing the data to set. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga13"></a><!-- doxytag: member="sequence.h::stp_sequence_set_point" ref="ga13" args="(stp_sequence_t *sequence, size_t where, double data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_sequence_set_point </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>where</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data at a single point in a sequence.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>where</em>&nbsp;</td><td>the location (indexed from zero). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the datum to set. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga20"></a><!-- doxytag: member="sequence.h::stp_sequence_set_short_data" ref="ga20" args="(stp_sequence_t *sequence, size_t count, const short *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_sequence_set_short_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const short *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data in a sequence from short values.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of elements in the data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to the first member of a sequence containing the data to set. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga8"></a><!-- doxytag: member="sequence.h::stp_sequence_set_size" ref="ga8" args="(stp_sequence_t *sequence, size_t size)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_sequence_set_size </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>size</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the sequence size.
+<p>
+The size is the number of elements the sequence contains. Note that resizing will destroy all data contained in the sequence. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to work on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>the size to set the sequence to. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga11"></a><!-- doxytag: member="sequence.h::stp_sequence_set_subrange" ref="ga11" args="(stp_sequence_t *sequence, size_t where, size_t size, const double *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_sequence_set_subrange </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>where</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data in a subrange of a sequence.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>where</em>&nbsp;</td><td>the starting element in the sequence (indexed from 0). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>the number of elements in the data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to the first member of a sequence containing the data to set. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga19"></a><!-- doxytag: member="sequence.h::stp_sequence_set_uint_data" ref="ga19" args="(stp_sequence_t *sequence, size_t count, const unsigned int *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_sequence_set_uint_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data in a sequence from unsigned int values.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of elements in the data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to the first member of a sequence containing the data to set. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga17"></a><!-- doxytag: member="sequence.h::stp_sequence_set_ulong_data" ref="ga17" args="(stp_sequence_t *sequence, size_t count, const unsigned long *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_sequence_set_ulong_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned long *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data in a sequence from unsigned long values.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of elements in the data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to the first member of a sequence containing the data to set. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga21"></a><!-- doxytag: member="sequence.h::stp_sequence_set_ushort_data" ref="ga21" args="(stp_sequence_t *sequence, size_t count, const unsigned short *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_sequence_set_ushort_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sequence</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned short *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data in a sequence from unsigned short values.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td>the sequence to set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of elements in the data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to the first member of a sequence containing the data to set. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/group__util.html b/doc/gutenprint/html/group__util.html
new file mode 100644
index 0000000..6f80d0a
--- /dev/null
+++ b/doc/gutenprint/html/group__util.html
@@ -0,0 +1,1835 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: util</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>util</h1>Utility functions.
+<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga33">STP_DBG_LUT</a>&nbsp;&nbsp;&nbsp;0x1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga34">STP_DBG_COLORFUNC</a>&nbsp;&nbsp;&nbsp;0x2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga35">STP_DBG_INK</a>&nbsp;&nbsp;&nbsp;0x4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga36">STP_DBG_PS</a>&nbsp;&nbsp;&nbsp;0x8</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga37">STP_DBG_PCL</a>&nbsp;&nbsp;&nbsp;0x10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga38">STP_DBG_ESCP2</a>&nbsp;&nbsp;&nbsp;0x20</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga39">STP_DBG_CANON</a>&nbsp;&nbsp;&nbsp;0x40</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga40">STP_DBG_LEXMARK</a>&nbsp;&nbsp;&nbsp;0x80</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga41">STP_DBG_WEAVE_PARAMS</a>&nbsp;&nbsp;&nbsp;0x100</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga42">STP_DBG_ROWS</a>&nbsp;&nbsp;&nbsp;0x200</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga43">STP_DBG_MARK_FILE</a>&nbsp;&nbsp;&nbsp;0x400</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga44">STP_DBG_LIST</a>&nbsp;&nbsp;&nbsp;0x800</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga45">STP_DBG_MODULE</a>&nbsp;&nbsp;&nbsp;0x1000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga46">STP_DBG_PATH</a>&nbsp;&nbsp;&nbsp;0x2000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga47">STP_DBG_PAPER</a>&nbsp;&nbsp;&nbsp;0x4000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga48">STP_DBG_PRINTERS</a>&nbsp;&nbsp;&nbsp;0x8000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga49">STP_DBG_XML</a>&nbsp;&nbsp;&nbsp;0x10000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga50">STP_DBG_VARS</a>&nbsp;&nbsp;&nbsp;0x20000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga51">STP_DBG_OLYMPUS</a>&nbsp;&nbsp;&nbsp;0x40000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga52">STP_DBG_CURVE</a>&nbsp;&nbsp;&nbsp;0x80000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga53">STP_DBG_CURVE_ERRORS</a>&nbsp;&nbsp;&nbsp;0x100000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga54">STP_SAFE_FREE</a>(x)</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga0">stp_init</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialise libgimpprint. <a href="#ga0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga1">stp_set_output_codeset</a> (const char *codeset)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the output encoding. <a href="#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga2">stp_read_and_compose_curves</a> (const char *s1, const char *s2, <a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a> comp, size_t piecewise_point_count)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga3">stp_abort</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga4">stp_prune_inactive_options</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga5">stp_zprintf</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *format,...) __attribute__((format(__printf__</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga6">stp_zfwrite</a> (const char *buf, size_t bytes, size_t nitems, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga7">stp_putc</a> (int ch, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga8">stp_put16_le</a> (unsigned short sh, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga9">stp_put16_be</a> (unsigned short sh, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga10">stp_put32_le</a> (unsigned int sh, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga11">stp_put32_be</a> (unsigned int sh, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga12">stp_puts</a> (const char *s, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga13">stp_send_command</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *command, const char *format,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga14">stp_erputc</a> (int ch)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga15">stp_eprintf</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *format,...) __attribute__((format(__printf__</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga16">stp_erprintf</a> (const char *format,...) __attribute__((format(__printf__</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void void void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga17">stp_asprintf</a> (char **strp, const char *format,...) __attribute__((format(__printf__</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void void void void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga18">stp_catprintf</a> (char **strp, const char *format,...) __attribute__((format(__printf__</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga19">stp_get_debug_level</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga20">stp_dprintf</a> (unsigned long level, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *format,...) __attribute__((format(__printf__</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga21">stp_deprintf</a> (unsigned long level, const char *format,...) __attribute__((format(__printf__</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void void void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga22">stp_init_debug_messages</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga23">stp_flush_debug_messages</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga24">stp_malloc</a> (size_t)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga25">stp_zalloc</a> (size_t)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga26">stp_realloc</a> (void *ptr, size_t)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga27">stp_free</a> (void *ptr)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga28">stp_strlen</a> (const char *s)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga29">stp_strndup</a> (const char *s, int n)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga30">stp_strdup</a> (const char *s)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga31">stp_get_version</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the library version string (x.y.z). <a href="#ga31"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga32">stp_get_release_version</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the library release version string (x.y). <a href="#ga32"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Utility functions.
+<p>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="ga39"></a><!-- doxytag: member="util.h::STP_DBG_CANON" ref="ga39" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_CANON&nbsp;&nbsp;&nbsp;0x40 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga34"></a><!-- doxytag: member="util.h::STP_DBG_COLORFUNC" ref="ga34" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_COLORFUNC&nbsp;&nbsp;&nbsp;0x2 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga52"></a><!-- doxytag: member="util.h::STP_DBG_CURVE" ref="ga52" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_CURVE&nbsp;&nbsp;&nbsp;0x80000 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga53"></a><!-- doxytag: member="util.h::STP_DBG_CURVE_ERRORS" ref="ga53" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_CURVE_ERRORS&nbsp;&nbsp;&nbsp;0x100000 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga38"></a><!-- doxytag: member="util.h::STP_DBG_ESCP2" ref="ga38" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_ESCP2&nbsp;&nbsp;&nbsp;0x20 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga35"></a><!-- doxytag: member="util.h::STP_DBG_INK" ref="ga35" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_INK&nbsp;&nbsp;&nbsp;0x4 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga40"></a><!-- doxytag: member="util.h::STP_DBG_LEXMARK" ref="ga40" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_LEXMARK&nbsp;&nbsp;&nbsp;0x80 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga44"></a><!-- doxytag: member="util.h::STP_DBG_LIST" ref="ga44" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_LIST&nbsp;&nbsp;&nbsp;0x800 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga33"></a><!-- doxytag: member="util.h::STP_DBG_LUT" ref="ga33" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_LUT&nbsp;&nbsp;&nbsp;0x1 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga43"></a><!-- doxytag: member="util.h::STP_DBG_MARK_FILE" ref="ga43" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_MARK_FILE&nbsp;&nbsp;&nbsp;0x400 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga45"></a><!-- doxytag: member="util.h::STP_DBG_MODULE" ref="ga45" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_MODULE&nbsp;&nbsp;&nbsp;0x1000 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga51"></a><!-- doxytag: member="util.h::STP_DBG_OLYMPUS" ref="ga51" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_OLYMPUS&nbsp;&nbsp;&nbsp;0x40000 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga47"></a><!-- doxytag: member="util.h::STP_DBG_PAPER" ref="ga47" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_PAPER&nbsp;&nbsp;&nbsp;0x4000 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga46"></a><!-- doxytag: member="util.h::STP_DBG_PATH" ref="ga46" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_PATH&nbsp;&nbsp;&nbsp;0x2000 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga37"></a><!-- doxytag: member="util.h::STP_DBG_PCL" ref="ga37" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_PCL&nbsp;&nbsp;&nbsp;0x10 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga48"></a><!-- doxytag: member="util.h::STP_DBG_PRINTERS" ref="ga48" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_PRINTERS&nbsp;&nbsp;&nbsp;0x8000 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga36"></a><!-- doxytag: member="util.h::STP_DBG_PS" ref="ga36" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_PS&nbsp;&nbsp;&nbsp;0x8 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga42"></a><!-- doxytag: member="util.h::STP_DBG_ROWS" ref="ga42" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_ROWS&nbsp;&nbsp;&nbsp;0x200 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga50"></a><!-- doxytag: member="util.h::STP_DBG_VARS" ref="ga50" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_VARS&nbsp;&nbsp;&nbsp;0x20000 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga41"></a><!-- doxytag: member="util.h::STP_DBG_WEAVE_PARAMS" ref="ga41" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_WEAVE_PARAMS&nbsp;&nbsp;&nbsp;0x100 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga49"></a><!-- doxytag: member="util.h::STP_DBG_XML" ref="ga49" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_DBG_XML&nbsp;&nbsp;&nbsp;0x10000 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga54"></a><!-- doxytag: member="util.h::STP_SAFE_FREE" ref="ga54" args="(x)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_SAFE_FREE </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">x&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> \
+{ \
+ <span class="keywordflow">if</span> ((x)) \
+ <a class="code" href="group__util.html#ga27">stp_free</a>((<span class="keywordtype">char</span> *)(x)); \
+ ((x)) = NULL; \
+} <span class="keywordflow">while</span> (0)
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="ga3"></a><!-- doxytag: member="util.h::stp_abort" ref="ga3" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_abort </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga17"></a><!-- doxytag: member="util.h::stp_asprintf" ref="ga17" args="(char **strp, const char *format,...) __attribute__((format(__printf__" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void void void stp_asprintf </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char **&nbsp;</td>
+ <td class="mdname" nowrap> <em>strp</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>&nbsp;</td>
+ <td class="mdname" nowrap> <em>...</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga18"></a><!-- doxytag: member="util.h::stp_catprintf" ref="ga18" args="(char **strp, const char *format,...) __attribute__((format(__printf__" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void void void void stp_catprintf </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char **&nbsp;</td>
+ <td class="mdname" nowrap> <em>strp</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>&nbsp;</td>
+ <td class="mdname" nowrap> <em>...</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga21"></a><!-- doxytag: member="util.h::stp_deprintf" ref="ga21" args="(unsigned long level, const char *format,...) __attribute__((format(__printf__" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void void stp_deprintf </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">unsigned long&nbsp;</td>
+ <td class="mdname" nowrap> <em>level</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>&nbsp;</td>
+ <td class="mdname" nowrap> <em>...</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga20"></a><!-- doxytag: member="util.h::stp_dprintf" ref="ga20" args="(unsigned long level, const stp_vars_t *v, const char *format,...) __attribute__((format(__printf__" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_dprintf </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">unsigned long&nbsp;</td>
+ <td class="mdname" nowrap> <em>level</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>&nbsp;</td>
+ <td class="mdname" nowrap> <em>...</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga15"></a><!-- doxytag: member="util.h::stp_eprintf" ref="ga15" args="(const stp_vars_t *v, const char *format,...) __attribute__((format(__printf__" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_eprintf </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>&nbsp;</td>
+ <td class="mdname" nowrap> <em>...</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga16"></a><!-- doxytag: member="util.h::stp_erprintf" ref="ga16" args="(const char *format,...) __attribute__((format(__printf__" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void void stp_erprintf </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>&nbsp;</td>
+ <td class="mdname" nowrap> <em>...</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga14"></a><!-- doxytag: member="util.h::stp_erputc" ref="ga14" args="(int ch)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_erputc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>ch</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga23"></a><!-- doxytag: member="util.h::stp_flush_debug_messages" ref="ga23" args="(stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_flush_debug_messages </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga27"></a><!-- doxytag: member="util.h::stp_free" ref="ga27" args="(void *ptr)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_free </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>ptr</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga19"></a><!-- doxytag: member="util.h::stp_get_debug_level" ref="ga19" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned long stp_get_debug_level </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga32"></a><!-- doxytag: member="util.h::stp_get_release_version" ref="ga32" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_get_release_version </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the library release version string (x.y).
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the release name of the package, which must not be modified or freed.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga31"></a><!-- doxytag: member="util.h::stp_get_version" ref="ga31" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_get_version </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the library version string (x.y.z).
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the version name of the package, which must not be modified or freed.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga0"></a><!-- doxytag: member="util.h::stp_init" ref="ga0" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_init </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Initialise libgimpprint.
+<p>
+This function must be called prior to any other use of the library. It is responsible for loading modules and XML data and initialising internal data structures. <dl compact><dt><b>Returns:</b></dt><dd>0 on success, 1 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga22"></a><!-- doxytag: member="util.h::stp_init_debug_messages" ref="ga22" args="(stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void void void stp_init_debug_messages </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga24"></a><!-- doxytag: member="util.h::stp_malloc" ref="ga24" args="(size_t)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void* stp_malloc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">size_t&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga4"></a><!-- doxytag: member="util.h::stp_prune_inactive_options" ref="ga4" args="(stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_prune_inactive_options </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga9"></a><!-- doxytag: member="util.h::stp_put16_be" ref="ga9" args="(unsigned short sh, const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_put16_be </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">unsigned short&nbsp;</td>
+ <td class="mdname" nowrap> <em>sh</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga8"></a><!-- doxytag: member="util.h::stp_put16_le" ref="ga8" args="(unsigned short sh, const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_put16_le </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">unsigned short&nbsp;</td>
+ <td class="mdname" nowrap> <em>sh</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga11"></a><!-- doxytag: member="util.h::stp_put32_be" ref="ga11" args="(unsigned int sh, const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_put32_be </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">unsigned int&nbsp;</td>
+ <td class="mdname" nowrap> <em>sh</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga10"></a><!-- doxytag: member="util.h::stp_put32_le" ref="ga10" args="(unsigned int sh, const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_put32_le </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">unsigned int&nbsp;</td>
+ <td class="mdname" nowrap> <em>sh</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga7"></a><!-- doxytag: member="util.h::stp_putc" ref="ga7" args="(int ch, const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_putc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname" nowrap> <em>ch</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga12"></a><!-- doxytag: member="util.h::stp_puts" ref="ga12" args="(const char *s, const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_puts </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>s</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga2"></a><!-- doxytag: member="util.h::stp_read_and_compose_curves" ref="ga2" args="(const char *s1, const char *s2, stp_curve_compose_t comp, size_t piecewise_point_count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_read_and_compose_curves </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>s1</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>s2</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>comp</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>piecewise_point_count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga26"></a><!-- doxytag: member="util.h::stp_realloc" ref="ga26" args="(void *ptr, size_t)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void* stp_realloc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptr</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga13"></a><!-- doxytag: member="util.h::stp_send_command" ref="ga13" args="(const stp_vars_t *v, const char *command, const char *format,...)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_send_command </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>command</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>&nbsp;</td>
+ <td class="mdname" nowrap> <em>...</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga1"></a><!-- doxytag: member="util.h::stp_set_output_codeset" ref="ga1" args="(const char *codeset)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_set_output_codeset </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>codeset</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the output encoding.
+<p>
+This function sets the encoding that all strings translated by gettext are output in. It is a wrapper around the gettext bind_textdomain_codeset() function. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>codeset</em>&nbsp;</td><td>the standard name of the encoding, which must be usable with iconv_open(). For example, "US-ASCII" or "UTF-8". If NULL, the currently-selected codeset will be returned (or NULL if no codeset has been selected yet). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a string containing the selected codeset, or NULL on failure (errno is set accordingly).</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga30"></a><!-- doxytag: member="util.h::stp_strdup" ref="ga30" args="(const char *s)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* stp_strdup </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>s</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga28"></a><!-- doxytag: member="util.h::stp_strlen" ref="ga28" args="(const char *s)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">size_t stp_strlen </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>s</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga29"></a><!-- doxytag: member="util.h::stp_strndup" ref="ga29" args="(const char *s, int n)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* stp_strndup </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>s</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>n</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga25"></a><!-- doxytag: member="util.h::stp_zalloc" ref="ga25" args="(size_t)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void* stp_zalloc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">size_t&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga6"></a><!-- doxytag: member="util.h::stp_zfwrite" ref="ga6" args="(const char *buf, size_t bytes, size_t nitems, const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void void stp_zfwrite </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>bytes</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>nitems</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga5"></a><!-- doxytag: member="util.h::stp_zprintf" ref="ga5" args="(const stp_vars_t *v, const char *format,...) __attribute__((format(__printf__" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_zprintf </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>&nbsp;</td>
+ <td class="mdname" nowrap> <em>...</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/group__vars.html b/doc/gutenprint/html/group__vars.html
new file mode 100644
index 0000000..468533e
--- /dev/null
+++ b/doc/gutenprint/html/group__vars.html
@@ -0,0 +1,6594 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: vars</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>vars</h1>The vars data type contains all the information about a print job, this includes information such as the printer model, paper size, print resolution etc.
+<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__raw__t.html">stp_raw_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Raw parameter. <a href="structstp__raw__t.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__double__bound__t.html">stp_double_bound_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">double_bound (range) parameter. <a href="structstp__double__bound__t.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__int__bound__t.html">stp_int_bound_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">int_bound (range) parameter. <a href="structstp__int__bound__t.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__parameter__t.html">stp_parameter_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parameter description. <a href="structstp__parameter__t.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_vars&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga0">stp_vars_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The vars opaque data type. <a href="#ga0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The parameter_list opaque data type. <a href="#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef const void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The constant parameter_list opaque data type. <a href="#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga3">stp_outfunc_t</a> )(void *data, const char *buffer, size_t bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Output function supplied by the calling application. <a href="#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga4">stp_copy_data_func_t</a> )(void *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga5">stp_free_data_func_t</a> )(void *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_compdata&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga6">compdata_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga132">stp_parameter_type_t</a> { <br>
+&nbsp;&nbsp;<a class="el" href="group__vars.html#gga132a7">STP_PARAMETER_TYPE_STRING_LIST</a>,
+<a class="el" href="group__vars.html#gga132a8">STP_PARAMETER_TYPE_INT</a>,
+<a class="el" href="group__vars.html#gga132a9">STP_PARAMETER_TYPE_BOOLEAN</a>,
+<a class="el" href="group__vars.html#gga132a10">STP_PARAMETER_TYPE_DOUBLE</a>,
+<br>
+&nbsp;&nbsp;<a class="el" href="group__vars.html#gga132a11">STP_PARAMETER_TYPE_CURVE</a>,
+<a class="el" href="group__vars.html#gga132a12">STP_PARAMETER_TYPE_FILE</a>,
+<a class="el" href="group__vars.html#gga132a13">STP_PARAMETER_TYPE_RAW</a>,
+<a class="el" href="group__vars.html#gga132a14">STP_PARAMETER_TYPE_ARRAY</a>,
+<br>
+&nbsp;&nbsp;<a class="el" href="group__vars.html#gga132a15">STP_PARAMETER_TYPE_DIMENSION</a>,
+<a class="el" href="group__vars.html#gga132a16">STP_PARAMETER_TYPE_INVALID</a>
+<br>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parameter types. <a href="group__vars.html#ga132">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga133">stp_parameter_class_t</a> { <a class="el" href="group__vars.html#gga133a17">STP_PARAMETER_CLASS_FEATURE</a>,
+<a class="el" href="group__vars.html#gga133a18">STP_PARAMETER_CLASS_OUTPUT</a>,
+<a class="el" href="group__vars.html#gga133a19">STP_PARAMETER_CLASS_CORE</a>,
+<a class="el" href="group__vars.html#gga133a20">STP_PARAMETER_CLASS_INVALID</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parameter class. <a href="group__vars.html#ga133">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga134">stp_parameter_level_t</a> { <br>
+&nbsp;&nbsp;<a class="el" href="group__vars.html#gga134a21">STP_PARAMETER_LEVEL_BASIC</a>,
+<a class="el" href="group__vars.html#gga134a22">STP_PARAMETER_LEVEL_ADVANCED</a>,
+<a class="el" href="group__vars.html#gga134a23">STP_PARAMETER_LEVEL_ADVANCED1</a>,
+<a class="el" href="group__vars.html#gga134a24">STP_PARAMETER_LEVEL_ADVANCED2</a>,
+<br>
+&nbsp;&nbsp;<a class="el" href="group__vars.html#gga134a25">STP_PARAMETER_LEVEL_ADVANCED3</a>,
+<a class="el" href="group__vars.html#gga134a26">STP_PARAMETER_LEVEL_ADVANCED4</a>,
+<a class="el" href="group__vars.html#gga134a27">STP_PARAMETER_LEVEL_INTERNAL</a>,
+<a class="el" href="group__vars.html#gga134a28">STP_PARAMETER_LEVEL_EXTERNAL</a>,
+<br>
+&nbsp;&nbsp;<a class="el" href="group__vars.html#gga134a29">STP_PARAMETER_LEVEL_INVALID</a>
+<br>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parameter level. <a href="group__vars.html#ga134">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> { <a class="el" href="group__vars.html#gga135a30">STP_PARAMETER_INACTIVE</a>,
+<a class="el" href="group__vars.html#gga135a31">STP_PARAMETER_DEFAULTED</a>,
+<a class="el" href="group__vars.html#gga135a32">STP_PARAMETER_ACTIVE</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parameter activity. <a href="group__vars.html#ga135">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga136">stp_parameter_verify_t</a> { <a class="el" href="group__vars.html#gga136a33">PARAMETER_BAD</a>,
+<a class="el" href="group__vars.html#gga136a34">PARAMETER_OK</a>,
+<a class="el" href="group__vars.html#gga136a35">PARAMETER_INACTIVE</a>
+ }</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga7">stp_vars_create</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new vars object. <a href="#ga7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga8">stp_vars_copy</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *dest, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *source)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy a vars object. <a href="#ga8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga9">stp_vars_create_copy</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *source)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy and allocate a vars object. <a href="#ga9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga10">stp_vars_destroy</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a vars object. <a href="#ga10"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga11">stp_set_driver</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the name of the printer driver. <a href="#ga11"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga12">stp_set_driver_n</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *val, int bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the name of the printer driver. <a href="#ga12"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga13">stp_get_driver</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the name of the printer driver. <a href="#ga13"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga14">stp_set_color_conversion</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the name of the color conversion routine, if not the default. <a href="#ga14"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga15">stp_set_color_conversion_n</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *val, int bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the name of the color conversion routine, if not the default. <a href="#ga15"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga16">stp_get_color_conversion</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the name of the color conversion routine. <a href="#ga16"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga17">stp_set_left</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the left edge of the image. <a href="#ga17"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga18">stp_get_left</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the left edge of the image. <a href="#ga18"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga19">stp_set_top</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the top edge of the image. <a href="#ga19"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga20">stp_get_top</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the top edge of the image. <a href="#ga20"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga21">stp_set_width</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the width of the image. <a href="#ga21"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga22">stp_get_width</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the width edge of the image. <a href="#ga22"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga23">stp_set_height</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the height of the image. <a href="#ga23"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga24">stp_get_height</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the height of the image. <a href="#ga24"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga25">stp_set_page_width</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the page width. <a href="#ga25"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga26">stp_get_page_width</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the page width. <a href="#ga26"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga27">stp_set_page_height</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the page height. <a href="#ga27"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga28">stp_get_page_height</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the page height. <a href="#ga28"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga29">stp_set_outfunc</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="group__vars.html#ga3">stp_outfunc_t</a> val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the function used to print output information. <a href="#ga29"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga3">stp_outfunc_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga30">stp_get_outfunc</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the function used to print output information. <a href="#ga30"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga31">stp_set_errfunc</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="group__vars.html#ga3">stp_outfunc_t</a> val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the function used to print error and diagnostic information. <a href="#ga31"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga3">stp_outfunc_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga32">stp_get_errfunc</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the function used to print output information. <a href="#ga32"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga33">stp_set_outdata</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, void *val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the output data. <a href="#ga33"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga34">stp_get_outdata</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the output data. <a href="#ga34"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga35">stp_set_errdata</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, void *val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the error data. <a href="#ga35"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga36">stp_get_errdata</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the error data. <a href="#ga36"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga37">stp_merge_printvars</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *user, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *print)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Merge defaults for a printer with user-chosen settings. <a href="#ga37"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga38">stp_get_parameter_list</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">List the available parameters for the currently chosen settings. <a href="#ga38"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga39">stp_parameter_list_count</a> (<a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a> list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">List the number of available parameters for the currently chosen settings. <a href="#ga39"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga40">stp_parameter_find</a> (<a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a> list, const char *name)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find a parameter by its name. <a href="#ga40"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga41">stp_parameter_list_param</a> (<a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a> list, size_t item)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find a parameter by its index number. <a href="#ga41"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga42">stp_parameter_list_destroy</a> (<a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a> list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a parameter_list. <a href="#ga42"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga43">stp_parameter_list_create</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a parameter_list. <a href="#ga43"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga44">stp_parameter_list_add_param</a> (<a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a> list, const <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *item)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a parameter to a parameter_list. <a href="#ga44"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga45">stp_parameter_list_copy</a> (<a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a> list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy and allocate a parameter_list. <a href="#ga45"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga46">stp_parameter_list_append</a> (<a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a> list, <a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a> append)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Append one parameter_list to another. <a href="#ga46"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga47">stp_describe_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name, <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *description)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Describe a parameter in detail. <a href="#ga47"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga48">stp_parameter_description_destroy</a> (<a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *description)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a parameter description. <a href="#ga48"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga49">stp_parameter_find_in_settings</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find a parameter by its name from a vars object. <a href="#ga49"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga50">stp_set_string_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const char *value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a string parameter. <a href="#ga50"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga51">stp_set_string_parameter_n</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const char *value, size_t bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a string parameter. <a href="#ga51"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga52">stp_set_file_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const char *value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a file parameter. <a href="#ga52"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga53">stp_set_file_parameter_n</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const char *value, size_t bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a file parameter. <a href="#ga53"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga54">stp_set_float_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, double value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a float parameter. <a href="#ga54"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga55">stp_set_int_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, int value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set an integer parameter. <a href="#ga55"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga56">stp_set_dimension_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, int value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a dimension parameter. <a href="#ga56"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga57">stp_set_boolean_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, int value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a boolean parameter. <a href="#ga57"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga58">stp_set_curve_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a curve parameter. <a href="#ga58"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga59">stp_set_array_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const <a class="el" href="group__array.html#ga0">stp_array_t</a> *value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set an array parameter. <a href="#ga59"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga60">stp_set_raw_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const void *value, size_t bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a raw parameter. <a href="#ga60"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga61">stp_scale_float_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, double scale)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Multiply the value of a float parameter by a scaling factor. <a href="#ga61"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga62">stp_set_default_string_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const char *value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default string parameter. <a href="#ga62"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga63">stp_set_default_string_parameter_n</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const char *value, size_t bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default string parameter. <a href="#ga63"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga64">stp_set_default_file_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const char *value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default file parameter. <a href="#ga64"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga65">stp_set_default_file_parameter_n</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const char *value, size_t bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default file parameter. <a href="#ga65"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga66">stp_set_default_float_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, double value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default float parameter. <a href="#ga66"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga67">stp_set_default_int_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, int value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default integer parameter. <a href="#ga67"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga68">stp_set_default_dimension_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, int value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default dimension parameter. <a href="#ga68"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga69">stp_set_default_boolean_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, int value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default boolean parameter. <a href="#ga69"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga70">stp_set_default_curve_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default curve parameter. <a href="#ga70"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga71">stp_set_default_array_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const <a class="el" href="group__array.html#ga0">stp_array_t</a> *value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default array parameter. <a href="#ga71"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga72">stp_set_default_raw_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const void *value, size_t bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default raw parameter. <a href="#ga72"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga73">stp_get_string_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a string parameter. <a href="#ga73"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga74">stp_get_file_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a file parameter. <a href="#ga74"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga75">stp_get_float_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a float parameter. <a href="#ga75"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga76">stp_get_int_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get an integer parameter. <a href="#ga76"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga77">stp_get_dimension_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a dimension parameter. <a href="#ga77"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga78">stp_get_boolean_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a boolean parameter. <a href="#ga78"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga79">stp_get_curve_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a curve parameter. <a href="#ga79"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga80">stp_get_array_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get an array parameter. <a href="#ga80"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__raw__t.html">stp_raw_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga81">stp_get_raw_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a raw parameter. <a href="#ga81"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga82">stp_clear_string_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a string parameter. <a href="#ga82"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga83">stp_clear_file_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a file parameter. <a href="#ga83"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga84">stp_clear_float_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear (remove) a float parameter. <a href="#ga84"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga85">stp_clear_int_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear (remove) an integer parameter. <a href="#ga85"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga86">stp_clear_dimension_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear (remove) a dimension parameter. <a href="#ga86"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga87">stp_clear_boolean_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear (remove) a boolean parameter. <a href="#ga87"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga88">stp_clear_curve_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a curve parameter. <a href="#ga88"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga89">stp_clear_array_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear an array parameter. <a href="#ga89"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga90">stp_clear_raw_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a raw parameter. <a href="#ga90"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga91">stp_set_string_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of a string parameter. <a href="#ga91"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga92">stp_set_file_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of a file parameter. <a href="#ga92"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga93">stp_set_float_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of a float parameter. <a href="#ga93"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga94">stp_set_int_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of an integer parameter. <a href="#ga94"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga95">stp_set_dimension_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of a dimension parameter. <a href="#ga95"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga96">stp_set_boolean_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of a boolean parameter. <a href="#ga96"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga97">stp_set_curve_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of a curveparameter. <a href="#ga97"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga98">stp_set_array_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of an array parameter. <a href="#ga98"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga99">stp_set_raw_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of a raw parameter. <a href="#ga99"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga100">stp_check_string_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a string parameter is set. <a href="#ga100"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga101">stp_check_file_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a file parameter is set. <a href="#ga101"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga102">stp_check_float_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a float parameter is set. <a href="#ga102"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga103">stp_check_int_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if an integer parameter is set. <a href="#ga103"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga104">stp_check_dimension_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a dimension parameter is set. <a href="#ga104"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga105">stp_check_boolean_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a boolean parameter is set. <a href="#ga105"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga106">stp_check_curve_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a curve parameter is set. <a href="#ga106"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga107">stp_check_array_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if an array parameter is set. <a href="#ga107"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga108">stp_check_raw_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a raw parameter is set. <a href="#ga108"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga109">stp_get_string_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of a string parameter. <a href="#ga109"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga110">stp_get_file_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of a file parameter. <a href="#ga110"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga111">stp_get_float_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of a float parameter. <a href="#ga111"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga112">stp_get_int_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of an integer parameter. <a href="#ga112"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga113">stp_get_dimension_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of a dimension parameter. <a href="#ga113"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga114">stp_get_boolean_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of a boolean parameter. <a href="#ga114"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga115">stp_get_curve_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of a curve parameter. <a href="#ga115"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga116">stp_get_array_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of an array parameter. <a href="#ga116"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga117">stp_get_raw_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of a raw parameter. <a href="#ga117"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga118">stp_get_media_size</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *width, int *height)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the media (paper) size. <a href="#ga118"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga119">stp_get_imageable_area</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *left, int *right, int *bottom, int *top)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the imagable area of the page. <a href="#ga119"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga120">stp_get_size_limit</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *max_width, int *max_height, int *min_width, int *min_height)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the media size limits. <a href="#ga120"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga121">stp_describe_resolution</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *x, int *y)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the printing resolution of the selected resolution. <a href="#ga121"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga122">stp_verify</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Verify parameters. <a href="#ga122"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga123">stp_default_settings</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get default global settings. <a href="#ga123"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga124">stp_allocate_component_data</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name, <a class="el" href="group__vars.html#ga4">stp_copy_data_func_t</a> copyfunc, <a class="el" href="group__vars.html#ga5">stp_free_data_func_t</a> freefunc, void *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga125">stp_destroy_component_data</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga126">stp_get_component_data</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga136">stp_parameter_verify_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga127">stp_verify_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, int quiet)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga128">stp_get_verified</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga129">stp_set_verified</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga130">stp_copy_options</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *vd, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *vs)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga131">stp_fill_parameter_settings</a> (<a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *desc, const <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *param)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The vars data type contains all the information about a print job, this includes information such as the printer model, paper size, print resolution etc.
+<p>
+Most of these job options are expressed as parameters which vary according to the model and other options selected.<p>
+The representation of printer settings has changed dramatically from 4.2. All (well most, anyway) settings outside of basics such as the printer model and sizing settings are now typed parameters.<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="ga6"></a><!-- doxytag: member="vars.h::compdata_t" ref="ga6" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct stp_compdata <a class="el" href="group__vars.html#ga6">compdata_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga2"></a><!-- doxytag: member="vars.h::stp_const_parameter_list_t" ref="ga2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef const void* <a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The constant parameter_list opaque data type.
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga4"></a><!-- doxytag: member="vars.h::stp_copy_data_func_t" ref="ga4" args=")(void *)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef void*(* <a class="el" href="group__vars.html#ga4">stp_copy_data_func_t</a>)(void *) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga5"></a><!-- doxytag: member="vars.h::stp_free_data_func_t" ref="ga5" args=")(void *)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef void(* <a class="el" href="group__vars.html#ga5">stp_free_data_func_t</a>)(void *) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga3"></a><!-- doxytag: member="vars.h::stp_outfunc_t" ref="ga3" args=")(void *data, const char *buffer, size_t bytes)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef void(* <a class="el" href="group__vars.html#ga3">stp_outfunc_t</a>)(void *data, const char *buffer, size_t bytes) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Output function supplied by the calling application.
+<p>
+There are two output functions supplied by the caller, one to send output data and one to report errors. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an opaque object owned by the calling application. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>the data to output. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>bytes</em>&nbsp;</td><td>the size of buffer (in bytes).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga1"></a><!-- doxytag: member="vars.h::stp_parameter_list_t" ref="ga1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef void* <a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The parameter_list opaque data type.
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga0"></a><!-- doxytag: member="vars.h::stp_vars_t" ref="ga0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct stp_vars <a class="el" href="group__vars.html#ga0">stp_vars_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The vars opaque data type.
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Enumeration Type Documentation</h2>
+<a class="anchor" name="ga135"></a><!-- doxytag: member="vars.h::stp_parameter_activity_t" ref="ga135" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Parameter activity.
+<p>
+Whether a parameter is currently active (i. e. whether its value should be used by the driver or not). All parameters default to being active unless explicitly "turned off".<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="gga135a30"></a><!-- doxytag: member="STP_PARAMETER_INACTIVE" ref="gga135a30" args="" -->STP_PARAMETER_INACTIVE</em>&nbsp;</td><td>
+Parameter is inactive (unused). </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga135a31"></a><!-- doxytag: member="STP_PARAMETER_DEFAULTED" ref="gga135a31" args="" -->STP_PARAMETER_DEFAULTED</em>&nbsp;</td><td>
+Parameter is set to its default value. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga135a32"></a><!-- doxytag: member="STP_PARAMETER_ACTIVE" ref="gga135a32" args="" -->STP_PARAMETER_ACTIVE</em>&nbsp;</td><td>
+Parameter is active (used). </td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga133"></a><!-- doxytag: member="vars.h::stp_parameter_class_t" ref="ga133" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="group__vars.html#ga133">stp_parameter_class_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Parameter class.
+<p>
+What kind of setting this is, for the purpose of user interface representation.<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="gga133a17"></a><!-- doxytag: member="STP_PARAMETER_CLASS_FEATURE" ref="gga133a17" args="" -->STP_PARAMETER_CLASS_FEATURE</em>&nbsp;</td><td>
+Printer feature. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga133a18"></a><!-- doxytag: member="STP_PARAMETER_CLASS_OUTPUT" ref="gga133a18" args="" -->STP_PARAMETER_CLASS_OUTPUT</em>&nbsp;</td><td>
+Output control. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga133a19"></a><!-- doxytag: member="STP_PARAMETER_CLASS_CORE" ref="gga133a19" args="" -->STP_PARAMETER_CLASS_CORE</em>&nbsp;</td><td>
+Core Gimp-Print parameter. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga133a20"></a><!-- doxytag: member="STP_PARAMETER_CLASS_INVALID" ref="gga133a20" args="" -->STP_PARAMETER_CLASS_INVALID</em>&nbsp;</td><td>
+Invalid class (should never be used). </td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga134"></a><!-- doxytag: member="vars.h::stp_parameter_level_t" ref="ga134" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="group__vars.html#ga134">stp_parameter_level_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Parameter level.
+<p>
+What "level" a setting is at, for UI design.<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="gga134a21"></a><!-- doxytag: member="STP_PARAMETER_LEVEL_BASIC" ref="gga134a21" args="" -->STP_PARAMETER_LEVEL_BASIC</em>&nbsp;</td><td>
+Basic parameter, shown by all UIs. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga134a22"></a><!-- doxytag: member="STP_PARAMETER_LEVEL_ADVANCED" ref="gga134a22" args="" -->STP_PARAMETER_LEVEL_ADVANCED</em>&nbsp;</td><td>
+Advanced parameter, shown by advanced UIs. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga134a23"></a><!-- doxytag: member="STP_PARAMETER_LEVEL_ADVANCED1" ref="gga134a23" args="" -->STP_PARAMETER_LEVEL_ADVANCED1</em>&nbsp;</td><td>
+Advanced1 parameter, shown by advanced UIs. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga134a24"></a><!-- doxytag: member="STP_PARAMETER_LEVEL_ADVANCED2" ref="gga134a24" args="" -->STP_PARAMETER_LEVEL_ADVANCED2</em>&nbsp;</td><td>
+Advanced2 parameter, shown by advanced UIs. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga134a25"></a><!-- doxytag: member="STP_PARAMETER_LEVEL_ADVANCED3" ref="gga134a25" args="" -->STP_PARAMETER_LEVEL_ADVANCED3</em>&nbsp;</td><td>
+Advanced3 parameter, shown by advanced UIs. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga134a26"></a><!-- doxytag: member="STP_PARAMETER_LEVEL_ADVANCED4" ref="gga134a26" args="" -->STP_PARAMETER_LEVEL_ADVANCED4</em>&nbsp;</td><td>
+Advanced4 parameter, shown by advanced UIs. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga134a27"></a><!-- doxytag: member="STP_PARAMETER_LEVEL_INTERNAL" ref="gga134a27" args="" -->STP_PARAMETER_LEVEL_INTERNAL</em>&nbsp;</td><td>
+Parameters used only within Gimp-Print. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga134a28"></a><!-- doxytag: member="STP_PARAMETER_LEVEL_EXTERNAL" ref="gga134a28" args="" -->STP_PARAMETER_LEVEL_EXTERNAL</em>&nbsp;</td><td>
+Parameters used only outside Gimp-Print. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga134a29"></a><!-- doxytag: member="STP_PARAMETER_LEVEL_INVALID" ref="gga134a29" args="" -->STP_PARAMETER_LEVEL_INVALID</em>&nbsp;</td><td>
+Invalid level (should never be used). </td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga132"></a><!-- doxytag: member="vars.h::stp_parameter_type_t" ref="ga132" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="group__vars.html#ga132">stp_parameter_type_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Parameter types.
+<p>
+The following types are permitted for a printer setting. Not all are currently implemented.<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="gga132a7"></a><!-- doxytag: member="STP_PARAMETER_TYPE_STRING_LIST" ref="gga132a7" args="" -->STP_PARAMETER_TYPE_STRING_LIST</em>&nbsp;</td><td>
+Single string choice from a list. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga132a8"></a><!-- doxytag: member="STP_PARAMETER_TYPE_INT" ref="gga132a8" args="" -->STP_PARAMETER_TYPE_INT</em>&nbsp;</td><td>
+Integer. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga132a9"></a><!-- doxytag: member="STP_PARAMETER_TYPE_BOOLEAN" ref="gga132a9" args="" -->STP_PARAMETER_TYPE_BOOLEAN</em>&nbsp;</td><td>
+Boolean. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga132a10"></a><!-- doxytag: member="STP_PARAMETER_TYPE_DOUBLE" ref="gga132a10" args="" -->STP_PARAMETER_TYPE_DOUBLE</em>&nbsp;</td><td>
+Floating point number. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga132a11"></a><!-- doxytag: member="STP_PARAMETER_TYPE_CURVE" ref="gga132a11" args="" -->STP_PARAMETER_TYPE_CURVE</em>&nbsp;</td><td>
+Curve. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga132a12"></a><!-- doxytag: member="STP_PARAMETER_TYPE_FILE" ref="gga132a12" args="" -->STP_PARAMETER_TYPE_FILE</em>&nbsp;</td><td>
+Filename (NYI, need to consider security). </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga132a13"></a><!-- doxytag: member="STP_PARAMETER_TYPE_RAW" ref="gga132a13" args="" -->STP_PARAMETER_TYPE_RAW</em>&nbsp;</td><td>
+Raw, opaque data. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga132a14"></a><!-- doxytag: member="STP_PARAMETER_TYPE_ARRAY" ref="gga132a14" args="" -->STP_PARAMETER_TYPE_ARRAY</em>&nbsp;</td><td>
+Array. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga132a15"></a><!-- doxytag: member="STP_PARAMETER_TYPE_DIMENSION" ref="gga132a15" args="" -->STP_PARAMETER_TYPE_DIMENSION</em>&nbsp;</td><td>
+Linear dimension. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga132a16"></a><!-- doxytag: member="STP_PARAMETER_TYPE_INVALID" ref="gga132a16" args="" -->STP_PARAMETER_TYPE_INVALID</em>&nbsp;</td><td>
+Invalid type (should never be used). </td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga136"></a><!-- doxytag: member="vars.h::stp_parameter_verify_t" ref="ga136" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="group__vars.html#ga136">stp_parameter_verify_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="gga136a33"></a><!-- doxytag: member="PARAMETER_BAD" ref="gga136a33" args="" -->PARAMETER_BAD</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga136a34"></a><!-- doxytag: member="PARAMETER_OK" ref="gga136a34" args="" -->PARAMETER_OK</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga136a35"></a><!-- doxytag: member="PARAMETER_INACTIVE" ref="gga136a35" args="" -->PARAMETER_INACTIVE</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="ga124"></a><!-- doxytag: member="vars.h::stp_allocate_component_data" ref="ga124" args="(stp_vars_t *v, const char *name, stp_copy_data_func_t copyfunc, stp_free_data_func_t freefunc, void *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_allocate_component_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga4">stp_copy_data_func_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>copyfunc</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga5">stp_free_data_func_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>freefunc</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga107"></a><!-- doxytag: member="vars.h::stp_check_array_parameter" ref="ga107" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_check_array_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Check if an array parameter is set.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the minimum activity status.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga105"></a><!-- doxytag: member="vars.h::stp_check_boolean_parameter" ref="ga105" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_check_boolean_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Check if a boolean parameter is set.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the minimum activity status.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga106"></a><!-- doxytag: member="vars.h::stp_check_curve_parameter" ref="ga106" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_check_curve_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Check if a curve parameter is set.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the minimum activity status.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga104"></a><!-- doxytag: member="vars.h::stp_check_dimension_parameter" ref="ga104" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_check_dimension_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Check if a dimension parameter is set.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the minimum activity status.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga101"></a><!-- doxytag: member="vars.h::stp_check_file_parameter" ref="ga101" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_check_file_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Check if a file parameter is set.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the minimum activity status.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga102"></a><!-- doxytag: member="vars.h::stp_check_float_parameter" ref="ga102" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_check_float_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Check if a float parameter is set.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the minimum activity status.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga103"></a><!-- doxytag: member="vars.h::stp_check_int_parameter" ref="ga103" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_check_int_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Check if an integer parameter is set.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the minimum activity status.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga108"></a><!-- doxytag: member="vars.h::stp_check_raw_parameter" ref="ga108" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_check_raw_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Check if a raw parameter is set.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the minimum activity status.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga100"></a><!-- doxytag: member="vars.h::stp_check_string_parameter" ref="ga100" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_check_string_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Check if a string parameter is set.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the minimum activity status.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga89"></a><!-- doxytag: member="vars.h::stp_clear_array_parameter" ref="ga89" args="(stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_clear_array_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Clear an array parameter.
+<p>
+The parameter is set to NULL. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga87"></a><!-- doxytag: member="vars.h::stp_clear_boolean_parameter" ref="ga87" args="(stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_clear_boolean_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Clear (remove) a boolean parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga88"></a><!-- doxytag: member="vars.h::stp_clear_curve_parameter" ref="ga88" args="(stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_clear_curve_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Clear a curve parameter.
+<p>
+The parameter is set to NULL. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga86"></a><!-- doxytag: member="vars.h::stp_clear_dimension_parameter" ref="ga86" args="(stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_clear_dimension_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Clear (remove) a dimension parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga83"></a><!-- doxytag: member="vars.h::stp_clear_file_parameter" ref="ga83" args="(stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_clear_file_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Clear a file parameter.
+<p>
+The parameter is set to NULL. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga84"></a><!-- doxytag: member="vars.h::stp_clear_float_parameter" ref="ga84" args="(stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_clear_float_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Clear (remove) a float parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga85"></a><!-- doxytag: member="vars.h::stp_clear_int_parameter" ref="ga85" args="(stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_clear_int_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Clear (remove) an integer parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga90"></a><!-- doxytag: member="vars.h::stp_clear_raw_parameter" ref="ga90" args="(stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_clear_raw_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Clear a raw parameter.
+<p>
+The parameter is set to NULL. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga82"></a><!-- doxytag: member="vars.h::stp_clear_string_parameter" ref="ga82" args="(stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_clear_string_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Clear a string parameter.
+<p>
+The parameter is set to NULL. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga130"></a><!-- doxytag: member="vars.h::stp_copy_options" ref="ga130" args="(stp_vars_t *vd, const stp_vars_t *vs)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_copy_options </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>vd</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>vs</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga123"></a><!-- doxytag: member="vars.h::stp_default_settings" ref="ga123" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a>* stp_default_settings </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get default global settings.
+<p>
+The main use of this is to provide a usable stp_vars_t for purposes of parameter inquiry in the absence of a specific printer. This is currently used in a variety of places to get information on the standard color parameters without querying a particular printer. <dl compact><dt><b>Returns:</b></dt><dd>the default settings.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga47"></a><!-- doxytag: member="vars.h::stp_describe_parameter" ref="ga47" args="(const stp_vars_t *v, const char *name, stp_parameter_t *description)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_describe_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>description</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Describe a parameter in detail.
+<p>
+All of the parameter fields will be populated. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>description</em>&nbsp;</td><td>a pointer to an <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> to store the parameter description in.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga121"></a><!-- doxytag: member="vars.h::stp_describe_resolution" ref="ga121" args="(const stp_vars_t *v, int *x, int *y)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_describe_resolution </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>y</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Retrieve the printing resolution of the selected resolution.
+<p>
+If the resolution is invalid, -1 will be returned in both x and y. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>a pointer to a int to store the horizontal resolution in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>y</em>&nbsp;</td><td>a pointer to a int to store the vertical resolution in.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga125"></a><!-- doxytag: member="vars.h::stp_destroy_component_data" ref="ga125" args="(stp_vars_t *v, const char *name)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_destroy_component_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga131"></a><!-- doxytag: member="vars.h::stp_fill_parameter_settings" ref="ga131" args="(stp_parameter_t *desc, const stp_parameter_t *param)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_fill_parameter_settings </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>desc</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>param</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga80"></a><!-- doxytag: member="vars.h::stp_get_array_parameter" ref="ga80" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__array.html#ga0">stp_array_t</a>* stp_get_array_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get an array parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the array, or NULL if no parameter was found.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga116"></a><!-- doxytag: member="vars.h::stp_get_array_parameter_active" ref="ga116" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> stp_get_array_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the activity status of an array parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the activity status.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga78"></a><!-- doxytag: member="vars.h::stp_get_boolean_parameter" ref="ga78" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_get_boolean_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a boolean parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the boolean value.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga114"></a><!-- doxytag: member="vars.h::stp_get_boolean_parameter_active" ref="ga114" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> stp_get_boolean_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the activity status of a boolean parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the activity status.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga16"></a><!-- doxytag: member="vars.h::stp_get_color_conversion" ref="ga16" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_get_color_conversion </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the name of the color conversion routine.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the name of the color conversion routine (must not be freed).</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga126"></a><!-- doxytag: member="vars.h::stp_get_component_data" ref="ga126" args="(const stp_vars_t *v, const char *name)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void* stp_get_component_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga79"></a><!-- doxytag: member="vars.h::stp_get_curve_parameter" ref="ga79" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_get_curve_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a curve parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the curve, or NULL if no parameter was found.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga115"></a><!-- doxytag: member="vars.h::stp_get_curve_parameter_active" ref="ga115" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> stp_get_curve_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the activity status of a curve parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the activity status.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga77"></a><!-- doxytag: member="vars.h::stp_get_dimension_parameter" ref="ga77" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_get_dimension_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a dimension parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the dimension (integer) value.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga113"></a><!-- doxytag: member="vars.h::stp_get_dimension_parameter_active" ref="ga113" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> stp_get_dimension_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the activity status of a dimension parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the activity status.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga13"></a><!-- doxytag: member="vars.h::stp_get_driver" ref="ga13" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_get_driver </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the name of the printer driver.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the name of the printer driver (must not be freed).</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga36"></a><!-- doxytag: member="vars.h::stp_get_errdata" ref="ga36" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void* stp_get_errdata </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the error data.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the output data.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga32"></a><!-- doxytag: member="vars.h::stp_get_errfunc" ref="ga32" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga3">stp_outfunc_t</a> stp_get_errfunc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the function used to print output information.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the outfunc.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga74"></a><!-- doxytag: member="vars.h::stp_get_file_parameter" ref="ga74" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_get_file_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a file parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the filename, or NULL if no parameter was found.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga110"></a><!-- doxytag: member="vars.h::stp_get_file_parameter_active" ref="ga110" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> stp_get_file_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the activity status of a file parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the activity status.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga75"></a><!-- doxytag: member="vars.h::stp_get_float_parameter" ref="ga75" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double stp_get_float_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a float parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the float value.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga111"></a><!-- doxytag: member="vars.h::stp_get_float_parameter_active" ref="ga111" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> stp_get_float_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the activity status of a float parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the activity status.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga24"></a><!-- doxytag: member="vars.h::stp_get_height" ref="ga24" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_get_height </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the height of the image.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the left edge.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga119"></a><!-- doxytag: member="vars.h::stp_get_imageable_area" ref="ga119" args="(const stp_vars_t *v, int *left, int *right, int *bottom, int *top)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_get_imageable_area </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>left</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>right</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>bottom</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>top</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the imagable area of the page.
+<p>
+Retrieve the boundaries of the printable area of the page. In combination with the media size, this can be used to determine the actual printable region, which callers can use to place the image precisely. The dimensions are relative to the top left of the physical page.<p>
+If a customizable page size is used (see stp_printer_get_media_size), the actual desired width and/or height must be filled in using stp_set_page_width and/or stp_set_page_height. If these are not filled in, the margins will be returned.<p>
+Returned values may be negative if a printer is capable of full bleed by printing beyond the physical boundaries of the page.<p>
+If the media size stored in V is invalid, the return values will be indeterminate. It is up to the user to specify legal values. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>left</em>&nbsp;</td><td>a pointer to a int to store the left edge in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>right</em>&nbsp;</td><td>a pointer to a int to store the right edge in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>bottom</em>&nbsp;</td><td>a pointer to a int to store the bottom edge in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>top</em>&nbsp;</td><td>a pointer to a int to store the top edge in.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga76"></a><!-- doxytag: member="vars.h::stp_get_int_parameter" ref="ga76" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_get_int_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get an integer parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the integer value.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga112"></a><!-- doxytag: member="vars.h::stp_get_int_parameter_active" ref="ga112" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> stp_get_int_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the activity status of an integer parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the activity status.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga18"></a><!-- doxytag: member="vars.h::stp_get_left" ref="ga18" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_get_left </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the left edge of the image.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the left edge.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga118"></a><!-- doxytag: member="vars.h::stp_get_media_size" ref="ga118" args="(const stp_vars_t *v, int *width, int *height)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_get_media_size </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>height</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the media (paper) size.
+<p>
+Retrieve the media size of the media type set in V, expressed in units of 1/72". If the media size is invalid, width and height will be set to -1. Values of 0 for width or height indicate that the dimension is variable, so that custom page sizes or roll paper can be used. In this case, the size limit should be used to determine maximum and minimum values permitted. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>width</em>&nbsp;</td><td>a pointer to an int to store the media width in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>height</em>&nbsp;</td><td>a pointer to an int to store the media height in.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga34"></a><!-- doxytag: member="vars.h::stp_get_outdata" ref="ga34" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void* stp_get_outdata </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the output data.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the output data.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga30"></a><!-- doxytag: member="vars.h::stp_get_outfunc" ref="ga30" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga3">stp_outfunc_t</a> stp_get_outfunc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the function used to print output information.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the outfunc.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga28"></a><!-- doxytag: member="vars.h::stp_get_page_height" ref="ga28" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_get_page_height </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the page height.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the page height.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga26"></a><!-- doxytag: member="vars.h::stp_get_page_width" ref="ga26" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_get_page_width </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the page width.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the page width.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga38"></a><!-- doxytag: member="vars.h::stp_get_parameter_list" ref="ga38" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a> stp_get_parameter_list </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+List the available parameters for the currently chosen settings.
+<p>
+This does not fill in the bounds and defaults; it merely provides a list of settings. To fill in detailed information for a setting, use stp_describe_parameter. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a list of available parameters (must be freed with <a class="el" href="group__vars.html#ga42">stp_parameter_list_destroy()</a>).</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga81"></a><!-- doxytag: member="vars.h::stp_get_raw_parameter" ref="ga81" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__raw__t.html">stp_raw_t</a>* stp_get_raw_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a raw parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the raw data, or NULL if no parameter was found.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga117"></a><!-- doxytag: member="vars.h::stp_get_raw_parameter_active" ref="ga117" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> stp_get_raw_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the activity status of a raw parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the activity status.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga120"></a><!-- doxytag: member="vars.h::stp_get_size_limit" ref="ga120" args="(const stp_vars_t *v, int *max_width, int *max_height, int *min_width, int *min_height)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_get_size_limit </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>max_width</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>max_height</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>min_width</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>min_height</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the media size limits.
+<p>
+Retrieve the minimum and maximum size limits for custom media sizes with the current printer settings. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>max_width</em>&nbsp;</td><td>a pointer to a int to store the maximum width in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>max_height</em>&nbsp;</td><td>a pointer to a int to store the maximum height in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>min_width</em>&nbsp;</td><td>a pointer to a int to store the minimum width in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>min_height</em>&nbsp;</td><td>a pointer to a int to store the minimum height in.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga73"></a><!-- doxytag: member="vars.h::stp_get_string_parameter" ref="ga73" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_get_string_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a string parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the string, or NULL if no parameter was found.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga109"></a><!-- doxytag: member="vars.h::stp_get_string_parameter_active" ref="ga109" args="(const stp_vars_t *v, const char *parameter)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> stp_get_string_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the activity status of a string parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the activity status.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga20"></a><!-- doxytag: member="vars.h::stp_get_top" ref="ga20" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_get_top </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the top edge of the image.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the left edge.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga128"></a><!-- doxytag: member="vars.h::stp_get_verified" ref="ga128" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_get_verified </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga22"></a><!-- doxytag: member="vars.h::stp_get_width" ref="ga22" args="(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_get_width </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the width edge of the image.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the left edge.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga37"></a><!-- doxytag: member="vars.h::stp_merge_printvars" ref="ga37" args="(stp_vars_t *user, const stp_vars_t *print)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_merge_printvars </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>print</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Merge defaults for a printer with user-chosen settings.
+<p>
+<dl compact><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated:</a></b></dt><dd>This is likely to go away.</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>user</em>&nbsp;</td><td>the destination vars. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>print</em>&nbsp;</td><td>the vars to merge into user.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga48"></a><!-- doxytag: member="vars.h::stp_parameter_description_destroy" ref="ga48" args="(stp_parameter_t *description)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_parameter_description_destroy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>description</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Destroy a parameter description.
+<p>
+This must be called even if the <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> was not allocated with malloc, since some members are dynamically allocated. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>description</em>&nbsp;</td><td>the parameter description to destroy.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga40"></a><!-- doxytag: member="vars.h::stp_parameter_find" ref="ga40" args="(stp_const_parameter_list_t list, const char *name)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a>* stp_parameter_find </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Find a parameter by its name.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the parameter_list to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the parameter (must not be freed), or NULL if no parameter was found.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga49"></a><!-- doxytag: member="vars.h::stp_parameter_find_in_settings" ref="ga49" args="(const stp_vars_t *v, const char *name)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a>* stp_parameter_find_in_settings </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Find a parameter by its name from a vars object.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the parameter (must not be freed), or NULL if no parameter was found.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga44"></a><!-- doxytag: member="vars.h::stp_parameter_list_add_param" ref="ga44" args="(stp_parameter_list_t list, const stp_parameter_t *item)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_parameter_list_add_param </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>item</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Add a parameter to a parameter_list.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the parameter_list to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>item</em>&nbsp;</td><td>the parameter to add.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga46"></a><!-- doxytag: member="vars.h::stp_parameter_list_append" ref="ga46" args="(stp_parameter_list_t list, stp_const_parameter_list_t append)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_parameter_list_append </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>append</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Append one parameter_list to another.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the destination list (to append to). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>append</em>&nbsp;</td><td>the list of paramters to append. Each item that does not already exist in list will be appended.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga45"></a><!-- doxytag: member="vars.h::stp_parameter_list_copy" ref="ga45" args="(stp_const_parameter_list_t list)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a> stp_parameter_list_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>list</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Copy and allocate a parameter_list.
+<p>
+A new parameter_list will be created, and then the contents of source will be copied into it. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the source parameter_list. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the new copy of the parameter_list.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga39"></a><!-- doxytag: member="vars.h::stp_parameter_list_count" ref="ga39" args="(stp_const_parameter_list_t list)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">size_t stp_parameter_list_count </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>list</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+List the number of available parameters for the currently chosen settings.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the parameter_list to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the number of parameters.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga43"></a><!-- doxytag: member="vars.h::stp_parameter_list_create" ref="ga43" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a> stp_parameter_list_create </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Create a parameter_list.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the newly created parameter_list.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga42"></a><!-- doxytag: member="vars.h::stp_parameter_list_destroy" ref="ga42" args="(stp_parameter_list_t list)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_parameter_list_destroy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>list</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Destroy a parameter_list.
+<p>
+It is an error to destroy the parameter_list more than once. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the parameter_list to destroy.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga41"></a><!-- doxytag: member="vars.h::stp_parameter_list_param" ref="ga41" args="(stp_const_parameter_list_t list, size_t item)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a>* stp_parameter_list_param </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>item</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Find a parameter by its index number.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>the parameter_list to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>item</em>&nbsp;</td><td>the index number of the parameter (must not be greater than stp_parameter_list_count - 1). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the parameter (must not be freed), or NULL if no parameter was found.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga61"></a><!-- doxytag: member="vars.h::stp_scale_float_parameter" ref="ga61" args="(stp_vars_t *v, const char *parameter, double scale)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_scale_float_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>scale</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Multiply the value of a float parameter by a scaling factor.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>scale</em>&nbsp;</td><td>the factor to multiply the value by.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga59"></a><!-- doxytag: member="vars.h::stp_set_array_parameter" ref="ga59" args="(stp_vars_t *v, const char *parameter, const stp_array_t *value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_array_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set an array parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga98"></a><!-- doxytag: member="vars.h::stp_set_array_parameter_active" ref="ga98" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_array_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the activity of an array parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the activity status to set (should be set to STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga57"></a><!-- doxytag: member="vars.h::stp_set_boolean_parameter" ref="ga57" args="(stp_vars_t *v, const char *parameter, int value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_boolean_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a boolean parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga96"></a><!-- doxytag: member="vars.h::stp_set_boolean_parameter_active" ref="ga96" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_boolean_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the activity of a boolean parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the activity status to set (should be set to STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga14"></a><!-- doxytag: member="vars.h::stp_set_color_conversion" ref="ga14" args="(stp_vars_t *v, const char *val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_color_conversion </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the name of the color conversion routine, if not the default.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the name to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga15"></a><!-- doxytag: member="vars.h::stp_set_color_conversion_n" ref="ga15" args="(stp_vars_t *v, const char *val, int bytes)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_color_conversion_n </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>bytes</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the name of the color conversion routine, if not the default.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the name to set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>bytes</em>&nbsp;</td><td>the length of val (in bytes).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga58"></a><!-- doxytag: member="vars.h::stp_set_curve_parameter" ref="ga58" args="(stp_vars_t *v, const char *parameter, const stp_curve_t *value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_curve_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a curve parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga97"></a><!-- doxytag: member="vars.h::stp_set_curve_parameter_active" ref="ga97" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_curve_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the activity of a curveparameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the activity status to set (should be set to STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga71"></a><!-- doxytag: member="vars.h::stp_set_default_array_parameter" ref="ga71" args="(stp_vars_t *v, const char *parameter, const stp_array_t *value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_default_array_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a default array parameter.
+<p>
+The value is set if the parameter is not already set. This avoids having to check if the parameter is set prior to setting it, if you do not want to override the existing value. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga69"></a><!-- doxytag: member="vars.h::stp_set_default_boolean_parameter" ref="ga69" args="(stp_vars_t *v, const char *parameter, int value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_default_boolean_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a default boolean parameter.
+<p>
+The value is set if the parameter is not already set. This avoids having to check if the parameter is set prior to setting it, if you do not want to override the existing value. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga70"></a><!-- doxytag: member="vars.h::stp_set_default_curve_parameter" ref="ga70" args="(stp_vars_t *v, const char *parameter, const stp_curve_t *value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_default_curve_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a default curve parameter.
+<p>
+The value is set if the parameter is not already set. This avoids having to check if the parameter is set prior to setting it, if you do not want to override the existing value. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga68"></a><!-- doxytag: member="vars.h::stp_set_default_dimension_parameter" ref="ga68" args="(stp_vars_t *v, const char *parameter, int value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_default_dimension_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a default dimension parameter.
+<p>
+The value is set if the parameter is not already set. This avoids having to check if the parameter is set prior to setting it, if you do not want to override the existing value. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga64"></a><!-- doxytag: member="vars.h::stp_set_default_file_parameter" ref="ga64" args="(stp_vars_t *v, const char *parameter, const char *value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_default_file_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a default file parameter.
+<p>
+The value is set if the parameter is not already set. This avoids having to check if the parameter is set prior to setting it, if you do not want to override the existing value. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga65"></a><!-- doxytag: member="vars.h::stp_set_default_file_parameter_n" ref="ga65" args="(stp_vars_t *v, const char *parameter, const char *value, size_t bytes)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_default_file_parameter_n </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>bytes</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a default file parameter.
+<p>
+The value is set if the parameter is not already set. This avoids having to check if the parameter is set prior to setting it, if you do not want to override the existing value. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set (must not contain NUL). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>bytes</em>&nbsp;</td><td>the length of value (in bytes).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga66"></a><!-- doxytag: member="vars.h::stp_set_default_float_parameter" ref="ga66" args="(stp_vars_t *v, const char *parameter, double value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_default_float_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a default float parameter.
+<p>
+The value is set if the parameter is not already set. This avoids having to check if the parameter is set prior to setting it, if you do not want to override the existing value. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga67"></a><!-- doxytag: member="vars.h::stp_set_default_int_parameter" ref="ga67" args="(stp_vars_t *v, const char *parameter, int value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_default_int_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a default integer parameter.
+<p>
+The value is set if the parameter is not already set. This avoids having to check if the parameter is set prior to setting it, if you do not want to override the existing value. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga72"></a><!-- doxytag: member="vars.h::stp_set_default_raw_parameter" ref="ga72" args="(stp_vars_t *v, const char *parameter, const void *value, size_t bytes)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_default_raw_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>bytes</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a default raw parameter.
+<p>
+The value is set if the parameter is not already set. This avoids having to check if the parameter is set prior to setting it, if you do not want to override the existing value. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>bytes</em>&nbsp;</td><td>the length of value (in bytes).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga62"></a><!-- doxytag: member="vars.h::stp_set_default_string_parameter" ref="ga62" args="(stp_vars_t *v, const char *parameter, const char *value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_default_string_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a default string parameter.
+<p>
+The value is set if the parameter is not already set. This avoids having to check if the parameter is set prior to setting it, if you do not want to override the existing value. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga63"></a><!-- doxytag: member="vars.h::stp_set_default_string_parameter_n" ref="ga63" args="(stp_vars_t *v, const char *parameter, const char *value, size_t bytes)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_default_string_parameter_n </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>bytes</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a default string parameter.
+<p>
+The value is set if the parameter is not already set. This avoids having to check if the parameter is set prior to setting it, if you do not want to override the existing value. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set (must not contain NUL). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>bytes</em>&nbsp;</td><td>the length of value (in bytes).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga56"></a><!-- doxytag: member="vars.h::stp_set_dimension_parameter" ref="ga56" args="(stp_vars_t *v, const char *parameter, int value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_dimension_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a dimension parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga95"></a><!-- doxytag: member="vars.h::stp_set_dimension_parameter_active" ref="ga95" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_dimension_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the activity of a dimension parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the activity status to set (should be set to STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga11"></a><!-- doxytag: member="vars.h::stp_set_driver" ref="ga11" args="(stp_vars_t *v, const char *val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_driver </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the name of the printer driver.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the name to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga12"></a><!-- doxytag: member="vars.h::stp_set_driver_n" ref="ga12" args="(stp_vars_t *v, const char *val, int bytes)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_driver_n </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>bytes</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the name of the printer driver.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the name to set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>bytes</em>&nbsp;</td><td>the length of val (in bytes).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga35"></a><!-- doxytag: member="vars.h::stp_set_errdata" ref="ga35" args="(stp_vars_t *v, void *val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_errdata </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the error data.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the error data. This will typically be a file descriptor, but it is entirely up to the caller exactly what type this might be.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga31"></a><!-- doxytag: member="vars.h::stp_set_errfunc" ref="ga31" args="(stp_vars_t *v, stp_outfunc_t val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_errfunc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga3">stp_outfunc_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the function used to print error and diagnostic information.
+<p>
+These must be supplied by the caller. errdata is passed as an arguments to errfunc; typically it will be a file descriptor. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga52"></a><!-- doxytag: member="vars.h::stp_set_file_parameter" ref="ga52" args="(stp_vars_t *v, const char *parameter, const char *value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_file_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a file parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga92"></a><!-- doxytag: member="vars.h::stp_set_file_parameter_active" ref="ga92" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_file_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the activity of a file parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the activity status to set (should be set to STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga53"></a><!-- doxytag: member="vars.h::stp_set_file_parameter_n" ref="ga53" args="(stp_vars_t *v, const char *parameter, const char *value, size_t bytes)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_file_parameter_n </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>bytes</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a file parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set (must not contain NUL). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>bytes</em>&nbsp;</td><td>the length of value (in bytes).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga54"></a><!-- doxytag: member="vars.h::stp_set_float_parameter" ref="ga54" args="(stp_vars_t *v, const char *parameter, double value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_float_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a float parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga93"></a><!-- doxytag: member="vars.h::stp_set_float_parameter_active" ref="ga93" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_float_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the activity of a float parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the activity status to set (should be set to STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga23"></a><!-- doxytag: member="vars.h::stp_set_height" ref="ga23" args="(stp_vars_t *v, int val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_height </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the height of the image.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga55"></a><!-- doxytag: member="vars.h::stp_set_int_parameter" ref="ga55" args="(stp_vars_t *v, const char *parameter, int value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_int_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set an integer parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga94"></a><!-- doxytag: member="vars.h::stp_set_int_parameter_active" ref="ga94" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_int_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the activity of an integer parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the activity status to set (should be set to STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga17"></a><!-- doxytag: member="vars.h::stp_set_left" ref="ga17" args="(stp_vars_t *v, int val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_left </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the left edge of the image.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga33"></a><!-- doxytag: member="vars.h::stp_set_outdata" ref="ga33" args="(stp_vars_t *v, void *val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_outdata </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the output data.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the output data. This will typically be a file descriptor, but it is entirely up to the caller exactly what type this might be.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga29"></a><!-- doxytag: member="vars.h::stp_set_outfunc" ref="ga29" args="(stp_vars_t *v, stp_outfunc_t val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_outfunc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga3">stp_outfunc_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the function used to print output information.
+<p>
+These must be supplied by the caller. outdata is passed as an arguments to outfunc; typically it will be a file descriptor. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga27"></a><!-- doxytag: member="vars.h::stp_set_page_height" ref="ga27" args="(stp_vars_t *v, int val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_page_height </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the page height.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga25"></a><!-- doxytag: member="vars.h::stp_set_page_width" ref="ga25" args="(stp_vars_t *v, int val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_page_width </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the page width.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga60"></a><!-- doxytag: member="vars.h::stp_set_raw_parameter" ref="ga60" args="(stp_vars_t *v, const char *parameter, const void *value, size_t bytes)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_raw_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>bytes</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a raw parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>bytes</em>&nbsp;</td><td>the length of value (in bytes).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga99"></a><!-- doxytag: member="vars.h::stp_set_raw_parameter_active" ref="ga99" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_raw_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the activity of a raw parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the activity status to set (should be set to STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga50"></a><!-- doxytag: member="vars.h::stp_set_string_parameter" ref="ga50" args="(stp_vars_t *v, const char *parameter, const char *value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_string_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a string parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga91"></a><!-- doxytag: member="vars.h::stp_set_string_parameter_active" ref="ga91" args="(const stp_vars_t *v, const char *parameter, stp_parameter_activity_t active)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_string_parameter_active </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>active</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the activity of a string parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>active</em>&nbsp;</td><td>the activity status to set (should be set to STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga51"></a><!-- doxytag: member="vars.h::stp_set_string_parameter_n" ref="ga51" args="(stp_vars_t *v, const char *parameter, const char *value, size_t bytes)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_string_parameter_n </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>bytes</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a string parameter.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parameter</em>&nbsp;</td><td>the name of the parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set (must not contain NUL). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>bytes</em>&nbsp;</td><td>the length of value (in bytes).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga19"></a><!-- doxytag: member="vars.h::stp_set_top" ref="ga19" args="(stp_vars_t *v, int val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_top </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the top edge of the image.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga129"></a><!-- doxytag: member="vars.h::stp_set_verified" ref="ga129" args="(stp_vars_t *v, int value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_verified </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga21"></a><!-- doxytag: member="vars.h::stp_set_width" ref="ga21" args="(stp_vars_t *v, int val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_set_width </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the width of the image.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>the value to set.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga8"></a><!-- doxytag: member="vars.h::stp_vars_copy" ref="ga8" args="(stp_vars_t *dest, const stp_vars_t *source)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_vars_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dest</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>source</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Copy a vars object.
+<p>
+Both dest and source must be valid vars objects previously created with <a class="el" href="group__vars.html#ga7">stp_vars_create()</a>. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>the destination vars. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>the source vars.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga7"></a><!-- doxytag: member="vars.h::stp_vars_create" ref="ga7" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a>* stp_vars_create </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Create a new vars object.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the newly created vars object.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga9"></a><!-- doxytag: member="vars.h::stp_vars_create_copy" ref="ga9" args="(const stp_vars_t *source)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a>* stp_vars_create_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>source</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Copy and allocate a vars object.
+<p>
+source must be a valid vars object previously created with <a class="el" href="group__vars.html#ga7">stp_vars_create()</a>. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>the source vars. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the new copy of the vars.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga10"></a><!-- doxytag: member="vars.h::stp_vars_destroy" ref="ga10" args="(stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_vars_destroy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Destroy a vars object.
+<p>
+It is an error to destroy the vars more than once. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to destroy.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga122"></a><!-- doxytag: member="vars.h::stp_verify" ref="ga122" args="(stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_verify </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Verify parameters.
+<p>
+Verify that the parameters selected are consistent with those allowed by the driver. This must be called prior to printing; failure to do so will result in printing failing. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vars to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>0 on failure, 1 on success; other status values are reserved.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga127"></a><!-- doxytag: member="vars.h::stp_verify_parameter" ref="ga127" args="(const stp_vars_t *v, const char *parameter, int quiet)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga136">stp_parameter_verify_t</a> stp_verify_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>quiet</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/group__version.html b/doc/gutenprint/html/group__version.html
new file mode 100644
index 0000000..b513448
--- /dev/null
+++ b/doc/gutenprint/html/group__version.html
@@ -0,0 +1,441 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: version</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>version</h1>Version information.
+<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga7">STP_MAJOR_VERSION</a>&nbsp;&nbsp;&nbsp;(5)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga8">STP_MINOR_VERSION</a>&nbsp;&nbsp;&nbsp;(0)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga9">STP_MICRO_VERSION</a>&nbsp;&nbsp;&nbsp;(0)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga10">STP_CURRENT_INTERFACE</a>&nbsp;&nbsp;&nbsp;(2)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga11">STP_BINARY_AGE</a>&nbsp;&nbsp;&nbsp;(0)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga12">STP_INTERFACE_AGE</a>&nbsp;&nbsp;&nbsp;(0)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga13">STP_CHECK_VERSION</a>(major, minor, micro)</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga6">stp_check_version</a> (unsigned int required_major, unsigned int required_minor, unsigned int required_micro)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check whether the library provides the requested version. <a href="#ga6"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga0">stp_major_version</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The library major version number. <a href="#ga0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga1">stp_minor_version</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The library minor version number. <a href="#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga2">stp_micro_version</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The library micro version number. <a href="#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga3">stp_current_interface</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The library ABI revision number (number of incompatible revisions). <a href="#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga4">stp_binary_age</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The library ABI binary age number (number of forward-compatible revisions). <a href="#ga4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga5">stp_interface_age</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The library ABI interface age number (number of revisions of this ABI). <a href="#ga5"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Version information.
+<p>
+Version information may be used to check the library version at compile-time, using macros, or at run-time, using constants.<hr><h2>Define Documentation</h2>
+<a class="anchor" name="ga11"></a><!-- doxytag: member="gutenprint-version.h::STP_BINARY_AGE" ref="ga11" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_BINARY_AGE&nbsp;&nbsp;&nbsp;(0) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga13"></a><!-- doxytag: member="gutenprint-version.h::STP_CHECK_VERSION" ref="ga13" args="(major, minor, micro)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_CHECK_VERSION </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">major, <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>minor, <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>micro&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<b>Value:</b><div class="fragment"><pre class="fragment">(<a class="code" href="group__version.html#ga7">STP_MAJOR_VERSION</a> &gt; (major) || \
+ (<a class="code" href="group__version.html#ga7">STP_MAJOR_VERSION</a> == (major) &amp;&amp; \
+ <a class="code" href="group__version.html#ga8">STP_MINOR_VERSION</a> &gt; (minor)) || \
+ (<a class="code" href="group__version.html#ga7">STP_MAJOR_VERSION</a> == (major) &amp;&amp; \
+ <a class="code" href="group__version.html#ga8">STP_MINOR_VERSION</a> == (minor) &amp;&amp; \
+ <a class="code" href="group__version.html#ga9">STP_MICRO_VERSION</a> &gt;= (micro)))
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="ga10"></a><!-- doxytag: member="gutenprint-version.h::STP_CURRENT_INTERFACE" ref="ga10" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_CURRENT_INTERFACE&nbsp;&nbsp;&nbsp;(2) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga12"></a><!-- doxytag: member="gutenprint-version.h::STP_INTERFACE_AGE" ref="ga12" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_INTERFACE_AGE&nbsp;&nbsp;&nbsp;(0) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga7"></a><!-- doxytag: member="gutenprint-version.h::STP_MAJOR_VERSION" ref="ga7" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MAJOR_VERSION&nbsp;&nbsp;&nbsp;(5) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga9"></a><!-- doxytag: member="gutenprint-version.h::STP_MICRO_VERSION" ref="ga9" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MICRO_VERSION&nbsp;&nbsp;&nbsp;(0) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga8"></a><!-- doxytag: member="gutenprint-version.h::STP_MINOR_VERSION" ref="ga8" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MINOR_VERSION&nbsp;&nbsp;&nbsp;(0) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="ga6"></a><!-- doxytag: member="gutenprint-version.h::stp_check_version" ref="ga6" args="(unsigned int required_major, unsigned int required_minor, unsigned int required_micro)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_check_version </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">unsigned int&nbsp;</td>
+ <td class="mdname" nowrap> <em>required_major</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned int&nbsp;</td>
+ <td class="mdname" nowrap> <em>required_minor</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned int&nbsp;</td>
+ <td class="mdname" nowrap> <em>required_micro</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Check whether the library provides the requested version.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>required_major</em>&nbsp;</td><td>the minimum major revision. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>required_minor</em>&nbsp;</td><td>the minimum minor revision. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>required_micro</em>&nbsp;</td><td>the minimum micro revision. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>NULL if the version matches, or else a description of the error if the library is too old or too new.</dd></dl>
+ </td>
+ </tr>
+</table>
+<hr><h2>Variable Documentation</h2>
+<a class="anchor" name="ga4"></a><!-- doxytag: member="gutenprint-version.h::stp_binary_age" ref="ga4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned int <a class="el" href="group__version.html#ga4">stp_binary_age</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The library ABI binary age number (number of forward-compatible revisions).
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga3"></a><!-- doxytag: member="gutenprint-version.h::stp_current_interface" ref="ga3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned int <a class="el" href="group__version.html#ga3">stp_current_interface</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The library ABI revision number (number of incompatible revisions).
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga5"></a><!-- doxytag: member="gutenprint-version.h::stp_interface_age" ref="ga5" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned int <a class="el" href="group__version.html#ga5">stp_interface_age</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The library ABI interface age number (number of revisions of this ABI).
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga0"></a><!-- doxytag: member="gutenprint-version.h::stp_major_version" ref="ga0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned int <a class="el" href="group__version.html#ga0">stp_major_version</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The library major version number.
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga2"></a><!-- doxytag: member="gutenprint-version.h::stp_micro_version" ref="ga2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned int <a class="el" href="group__version.html#ga2">stp_micro_version</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The library micro version number.
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga1"></a><!-- doxytag: member="gutenprint-version.h::stp_minor_version" ref="ga1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned int <a class="el" href="group__version.html#ga1">stp_minor_version</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The library minor version number.
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/gutenprint-intl-internal_8h.html b/doc/gutenprint/html/gutenprint-intl-internal_8h.html
new file mode 100644
index 0000000..7ec4b32
--- /dev/null
+++ b/doc/gutenprint/html/gutenprint-intl-internal_8h.html
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/gutenprint-intl-internal.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>gutenprint-intl-internal.h File Reference</h1>Internationalisation functions. <a href="#_details">More...</a>
+<p>
+<code>#include &lt;locale.h&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl__internal.html#ga0">textdomain</a>(String)&nbsp;&nbsp;&nbsp;(String)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl__internal.html#ga1">gettext</a>(String)&nbsp;&nbsp;&nbsp;(String)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl__internal.html#ga2">dgettext</a>(Domain, Message)&nbsp;&nbsp;&nbsp;(Message)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl__internal.html#ga3">dcgettext</a>(Domain, Message, Type)&nbsp;&nbsp;&nbsp;(Message)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl__internal.html#ga4">bindtextdomain</a>(Domain, Directory)&nbsp;&nbsp;&nbsp;(Domain)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl__internal.html#ga5">_</a>(String)&nbsp;&nbsp;&nbsp;(String)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl__internal.html#ga6">N_</a>(String)&nbsp;&nbsp;&nbsp;(String)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Internationalisation functions.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/gutenprint-intl_8h.html b/doc/gutenprint/html/gutenprint-intl_8h.html
new file mode 100644
index 0000000..5a40d1e
--- /dev/null
+++ b/doc/gutenprint/html/gutenprint-intl_8h.html
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/gutenprint-intl.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>gutenprint-intl.h File Reference</h1>Internationalisation functions. <a href="#_details">More...</a>
+<p>
+<code>#include &lt;locale.h&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl.html#ga0">textdomain</a>(String)&nbsp;&nbsp;&nbsp;(String)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl.html#ga1">gettext</a>(String)&nbsp;&nbsp;&nbsp;(String)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl.html#ga2">dgettext</a>(Domain, Message)&nbsp;&nbsp;&nbsp;(Message)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl.html#ga3">dcgettext</a>(Domain, Message, Type)&nbsp;&nbsp;&nbsp;(Message)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl.html#ga4">bindtextdomain</a>(Domain, Directory)&nbsp;&nbsp;&nbsp;(Domain)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl.html#ga5">_</a>(String)&nbsp;&nbsp;&nbsp;(String)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__intl.html#ga6">N_</a>(String)&nbsp;&nbsp;&nbsp;(String)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Internationalisation functions.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/gutenprint-module_8h.html b/doc/gutenprint/html/gutenprint-module_8h.html
new file mode 100644
index 0000000..1fa63c9
--- /dev/null
+++ b/doc/gutenprint/html/gutenprint-module_8h.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/gutenprint-module.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>gutenprint-module.h File Reference</h1>Gutenprint module header. <a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="gutenprint_8h.html">gutenprint/gutenprint.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="bit-ops_8h.html">gutenprint/bit-ops.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="channel_8h.html">gutenprint/channel.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="color_8h.html">gutenprint/color.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="dither_8h.html">gutenprint/dither.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="list_8h.html">gutenprint/list.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="module_8h.html">gutenprint/module.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="path_8h.html">gutenprint/path.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="weave_8h.html">gutenprint/weave.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="xml_8h.html">gutenprint/xml.h</a>&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprint-module_8h.html#a0">STP_MODULE</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Gutenprint module header.
+<p>
+This header includes all of the public headers used by modules.<hr><h2>Define Documentation</h2>
+<a class="anchor" name="a0"></a><!-- doxytag: member="gutenprint-module.h::STP_MODULE" ref="a0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MODULE&nbsp;&nbsp;&nbsp;1 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/gutenprint-version_8h.html b/doc/gutenprint/html/gutenprint-version_8h.html
new file mode 100644
index 0000000..5c9c1ec
--- /dev/null
+++ b/doc/gutenprint/html/gutenprint-version_8h.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/gutenprint-version.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>gutenprint-version.h File Reference</h1>Version functions. <a href="#_details">More...</a>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga7">STP_MAJOR_VERSION</a>&nbsp;&nbsp;&nbsp;(5)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga8">STP_MINOR_VERSION</a>&nbsp;&nbsp;&nbsp;(0)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga9">STP_MICRO_VERSION</a>&nbsp;&nbsp;&nbsp;(0)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga10">STP_CURRENT_INTERFACE</a>&nbsp;&nbsp;&nbsp;(2)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga11">STP_BINARY_AGE</a>&nbsp;&nbsp;&nbsp;(0)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga12">STP_INTERFACE_AGE</a>&nbsp;&nbsp;&nbsp;(0)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga13">STP_CHECK_VERSION</a>(major, minor, micro)</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga6">stp_check_version</a> (unsigned int required_major, unsigned int required_minor, unsigned int required_micro)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check whether the library provides the requested version. <a href="group__version.html#ga6"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga0">stp_major_version</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The library major version number. <a href="group__version.html#ga0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga1">stp_minor_version</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The library minor version number. <a href="group__version.html#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga2">stp_micro_version</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The library micro version number. <a href="group__version.html#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga3">stp_current_interface</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The library ABI revision number (number of incompatible revisions). <a href="group__version.html#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga4">stp_binary_age</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The library ABI binary age number (number of forward-compatible revisions). <a href="group__version.html#ga4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#ga5">stp_interface_age</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The library ABI interface age number (number of revisions of this ABI). <a href="group__version.html#ga5"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Version functions.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/gutenprint_8h.html b/doc/gutenprint/html/gutenprint_8h.html
new file mode 100644
index 0000000..c126757
--- /dev/null
+++ b/doc/gutenprint/html/gutenprint_8h.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/gutenprint.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>gutenprint.h File Reference</h1>Gutenprint master header. <a href="#_details">More...</a>
+<p>
+<code>#include &lt;stddef.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</code><br>
+<code>#include &lt;<a class="el" href="array_8h.html">gutenprint/array.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="curve_8h.html">gutenprint/curve.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="gutenprint-version_8h.html">gutenprint/gutenprint-version.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="image_8h.html">gutenprint/image.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="paper_8h.html">gutenprint/paper.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="printers_8h.html">gutenprint/printers.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="sequence_8h.html">gutenprint/sequence.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="string-list_8h.html">gutenprint/string-list.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="util_8h.html">gutenprint/util.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="vars_8h.html">gutenprint/vars.h</a>&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Gutenprint master header.
+<p>
+This header includes all of the public headers.<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/image_8h.html b/doc/gutenprint/html/image_8h.html
new file mode 100644
index 0000000..95b6b6b
--- /dev/null
+++ b/doc/gutenprint/html/image_8h.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/image.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>image.h File Reference</h1>Image functions. <a href="#_details">More...</a>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__image.html">stp_image</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The image type is an abstract data type for interfacing with the image creation program. <a href="structstp__image.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga8">STP_CHANNEL_LIMIT</a>&nbsp;&nbsp;&nbsp;(32)</td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__image.html">stp_image</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga0">stp_image_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The image type is an abstract data type for interfacing with the image creation program. <a href="group__image.html#ga0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga9">stp_image_status_t</a> { <a class="el" href="group__image.html#gga9a2">STP_IMAGE_STATUS_OK</a>,
+<a class="el" href="group__image.html#gga9a3">STP_IMAGE_STATUS_ABORT</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Image status. <a href="group__image.html#ga9">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga1">stp_image_init</a> (<a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga2">stp_image_reset</a> (<a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga3">stp_image_width</a> (<a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga4">stp_image_height</a> (<a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__image.html#ga9">stp_image_status_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga5">stp_image_get_row</a> (<a class="el" href="structstp__image.html">stp_image_t</a> *image, unsigned char *data, size_t limit, int row)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga6">stp_image_get_appname</a> (<a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__image.html#ga7">stp_image_conclude</a> (<a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Image functions.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/index.html b/doc/gutenprint/html/index.html
new file mode 100644
index 0000000..3ba1939
--- /dev/null
+++ b/doc/gutenprint/html/index.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindexHL" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>libgutenprint API Reference Documentation</h1>
+<p>
+<h3 align="center">5.0.0-rc1 </h3><hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/list_8h.html b/doc/gutenprint/html/list_8h.html
new file mode 100644
index 0000000..26e7fc5
--- /dev/null
+++ b/doc/gutenprint/html/list_8h.html
@@ -0,0 +1,120 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/list.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>list.h File Reference</h1>Generic list functions. <a href="#_details">More...</a>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_list_item&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga0">stp_list_item_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The list item opaque data type. <a href="group__list.html#ga0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_list&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga1">stp_list_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The list opaque data type. <a href="group__list.html#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga2">stp_node_freefunc</a> )(void *)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A callback function to free the data a node contains. <a href="group__list.html#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga3">stp_node_copyfunc</a> )(const void *)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A callback function to copy the data a node contains. <a href="group__list.html#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef const char *(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga4">stp_node_namefunc</a> )(const void *)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A callback function to get the name of a node. <a href="group__list.html#ga4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga5">stp_node_sortfunc</a> )(const void *, const void *)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A callback function to compare two nodes. <a href="group__list.html#ga5"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga6">stp_list_node_free_data</a> (void *item)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free node data allocated with stp_malloc. <a href="group__list.html#ga6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga7">stp_list_create</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new list object. <a href="group__list.html#ga7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga8">stp_list_copy</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy and allocate a list object. <a href="group__list.html#ga8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga9">stp_list_destroy</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a list object. <a href="group__list.html#ga9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga10">stp_list_get_start</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find the first item in a list. <a href="group__list.html#ga10"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga11">stp_list_get_end</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find the last item in a list. <a href="group__list.html#ga11"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga12">stp_list_get_item_by_index</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list, int idx)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find an item in a list by its index. <a href="group__list.html#ga12"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga13">stp_list_get_item_by_name</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list, const char *name)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find an item in a list by its name. <a href="group__list.html#ga13"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga14">stp_list_get_item_by_long_name</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list, const char *long_name)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find an item in a list by its long name. <a href="group__list.html#ga14"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga15">stp_list_get_length</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the length of a list. <a href="group__list.html#ga15"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga16">stp_list_set_freefunc</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list, <a class="el" href="group__list.html#ga2">stp_node_freefunc</a> freefunc)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a list node free function. <a href="group__list.html#ga16"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga2">stp_node_freefunc</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga17">stp_list_get_freefunc</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a list node free function. <a href="group__list.html#ga17"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga18">stp_list_set_copyfunc</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list, <a class="el" href="group__list.html#ga3">stp_node_copyfunc</a> copyfunc)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a list node copy function. <a href="group__list.html#ga18"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga3">stp_node_copyfunc</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga19">stp_list_get_copyfunc</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a list node copy function. <a href="group__list.html#ga19"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga20">stp_list_set_namefunc</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list, <a class="el" href="group__list.html#ga4">stp_node_namefunc</a> namefunc)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a list node name function. <a href="group__list.html#ga20"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga4">stp_node_namefunc</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga21">stp_list_get_namefunc</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a list node name function. <a href="group__list.html#ga21"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga22">stp_list_set_long_namefunc</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list, <a class="el" href="group__list.html#ga4">stp_node_namefunc</a> long_namefunc)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a list node long name function. <a href="group__list.html#ga22"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga4">stp_node_namefunc</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga23">stp_list_get_long_namefunc</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a list node long name function. <a href="group__list.html#ga23"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga24">stp_list_set_sortfunc</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list, <a class="el" href="group__list.html#ga5">stp_node_sortfunc</a> sortfunc)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a list node sort function. <a href="group__list.html#ga24"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga5">stp_node_sortfunc</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga25">stp_list_get_sortfunc</a> (const <a class="el" href="group__list.html#ga1">stp_list_t</a> *list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a list node sort function. <a href="group__list.html#ga25"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga26">stp_list_item_create</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list, <a class="el" href="group__list.html#ga0">stp_list_item_t</a> *next, const void *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new list item. <a href="group__list.html#ga26"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga27">stp_list_item_destroy</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list, <a class="el" href="group__list.html#ga0">stp_list_item_t</a> *item)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a list item. <a href="group__list.html#ga27"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga28">stp_list_item_prev</a> (const <a class="el" href="group__list.html#ga0">stp_list_item_t</a> *item)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the previous item in the list. <a href="group__list.html#ga28"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga29">stp_list_item_next</a> (const <a class="el" href="group__list.html#ga0">stp_list_item_t</a> *item)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the next item in the list. <a href="group__list.html#ga29"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga30">stp_list_item_get_data</a> (const <a class="el" href="group__list.html#ga0">stp_list_item_t</a> *item)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data associated with a list item. <a href="group__list.html#ga30"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__list.html#ga31">stp_list_item_set_data</a> (<a class="el" href="group__list.html#ga0">stp_list_item_t</a> *item, void *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data associated with a list item. <a href="group__list.html#ga31"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Generic list functions.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/module_8h.html b/doc/gutenprint/html/module_8h.html
new file mode 100644
index 0000000..2d1ce3d
--- /dev/null
+++ b/doc/gutenprint/html/module_8h.html
@@ -0,0 +1,311 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/module.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>module.h File Reference</h1>Module functions. <a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="list_8h.html">gutenprint/list.h</a>&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__module__version.html">stp_module_version</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__module.html">stp_module</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__module__version.html">stp_module_version</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="module_8h.html#a0">stp_module_version_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__module.html">stp_module</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="module_8h.html#a1">stp_module_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="module_8h.html#a13">stp_module_class_t</a> { <br>
+&nbsp;&nbsp;<a class="el" href="module_8h.html#a13a2">STP_MODULE_CLASS_INVALID</a>,
+<a class="el" href="module_8h.html#a13a3">STP_MODULE_CLASS_MISC</a>,
+<a class="el" href="module_8h.html#a13a4">STP_MODULE_CLASS_FAMILY</a>,
+<a class="el" href="module_8h.html#a13a5">STP_MODULE_CLASS_COLOR</a>,
+<br>
+&nbsp;&nbsp;<a class="el" href="module_8h.html#a13a6">STP_MODULE_CLASS_DITHER</a>
+<br>
+ }</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="module_8h.html#a7">stp_module_load</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="module_8h.html#a8">stp_module_exit</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="module_8h.html#a9">stp_module_open</a> (const char *modulename)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="module_8h.html#a10">stp_module_init</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="module_8h.html#a11">stp_module_close</a> (<a class="el" href="group__list.html#ga0">stp_list_item_t</a> *module)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="module_8h.html#a12">stp_module_get_class</a> (<a class="el" href="module_8h.html#a13">stp_module_class_t</a> class)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Module functions.
+<p>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="a1"></a><!-- doxytag: member="module.h::stp_module_t" ref="a1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="structstp__module.html">stp_module</a> <a class="el" href="structstp__module.html">stp_module_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a0"></a><!-- doxytag: member="module.h::stp_module_version_t" ref="a0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="structstp__module__version.html">stp_module_version</a> <a class="el" href="structstp__module__version.html">stp_module_version_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Enumeration Type Documentation</h2>
+<a class="anchor" name="a13"></a><!-- doxytag: member="module.h::stp_module_class_t" ref="a13" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="module_8h.html#a13">stp_module_class_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="a13a2"></a><!-- doxytag: member="STP_MODULE_CLASS_INVALID" ref="a13a2" args="" -->STP_MODULE_CLASS_INVALID</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a13a3"></a><!-- doxytag: member="STP_MODULE_CLASS_MISC" ref="a13a3" args="" -->STP_MODULE_CLASS_MISC</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a13a4"></a><!-- doxytag: member="STP_MODULE_CLASS_FAMILY" ref="a13a4" args="" -->STP_MODULE_CLASS_FAMILY</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a13a5"></a><!-- doxytag: member="STP_MODULE_CLASS_COLOR" ref="a13a5" args="" -->STP_MODULE_CLASS_COLOR</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a13a6"></a><!-- doxytag: member="STP_MODULE_CLASS_DITHER" ref="a13a6" args="" -->STP_MODULE_CLASS_DITHER</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a11"></a><!-- doxytag: member="module.h::stp_module_close" ref="a11" args="(stp_list_item_t *module)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_module_close </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga0">stp_list_item_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>module</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a8"></a><!-- doxytag: member="module.h::stp_module_exit" ref="a8" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_module_exit </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a12"></a><!-- doxytag: member="module.h::stp_module_get_class" ref="a12" args="(stp_module_class_t class)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a>* stp_module_get_class </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="module_8h.html#a13">stp_module_class_t</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>class</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a10"></a><!-- doxytag: member="module.h::stp_module_init" ref="a10" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_module_init </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a7"></a><!-- doxytag: member="module.h::stp_module_load" ref="a7" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_module_load </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a9"></a><!-- doxytag: member="module.h::stp_module_open" ref="a9" args="(const char *modulename)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_module_open </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>modulename</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/modules.html b/doc/gutenprint/html/modules.html
new file mode 100644
index 0000000..3fc2a6e
--- /dev/null
+++ b/doc/gutenprint/html/modules.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Module Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindexHL" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>libgutenprint API Reference Modules</h1>Here is a list of all modules:<ul>
+<li><a class="el" href="group__array.html">array</a>
+<li><a class="el" href="group__color.html">color</a>
+<li><a class="el" href="group__curve.html">curve</a>
+<li><a class="el" href="group__intl__internal.html">intl-internal</a>
+<li><a class="el" href="group__intl.html">intl</a>
+<li><a class="el" href="group__version.html">version</a>
+<li><a class="el" href="group__image.html">image</a>
+<li><a class="el" href="group__list.html">list</a>
+<li><a class="el" href="group__papersize.html">papersize</a>
+<li><a class="el" href="group__printer.html">printer</a>
+<li><a class="el" href="group__sequence.html">sequence</a>
+<li><a class="el" href="group__util.html">util</a>
+<li><a class="el" href="group__vars.html">vars</a>
+</ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/mxml_8h.html b/doc/gutenprint/html/mxml_8h.html
new file mode 100644
index 0000000..d6c9f09
--- /dev/null
+++ b/doc/gutenprint/html/mxml_8h.html
@@ -0,0 +1,1367 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/mxml.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>mxml.h File Reference</h1>Mini-XML XML parsing functions. <a href="#_details">More...</a>
+<p>
+<code>#include &lt;stdio.h&gt;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;string.h&gt;</code><br>
+<code>#include &lt;ctype.h&gt;</code><br>
+<code>#include &lt;errno.h&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__attr__s.html">stp_mxml_attr_s</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__value__s.html">stp_mxml_value_s</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__text__s.html">stp_mxml_text_s</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">union &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionstp__mxml__value__u.html">stp_mxml_value_u</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_s</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a0">STP_MXML_WRAP</a>&nbsp;&nbsp;&nbsp;70</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a1">STP_MXML_TAB</a>&nbsp;&nbsp;&nbsp;8</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a2">STP_MXML_NO_CALLBACK</a>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a3">STP_MXML_NO_PARENT</a>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a4">STP_MXML_DESCEND</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a5">STP_MXML_NO_DESCEND</a>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a6">STP_MXML_DESCEND_FIRST</a>&nbsp;&nbsp;&nbsp;-1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a7">STP_MXML_WS_BEFORE_OPEN</a>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a8">STP_MXML_WS_AFTER_OPEN</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a9">STP_MXML_WS_BEFORE_CLOSE</a>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a10">STP_MXML_WS_AFTER_CLOSE</a>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a11">STP_MXML_ADD_BEFORE</a>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a12">STP_MXML_ADD_AFTER</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a13">STP_MXML_ADD_TO_PARENT</a>&nbsp;&nbsp;&nbsp;NULL</td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="mxml_8h.html#a43">stp_mxml_type_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a14">stp_mxml_type_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__mxml__attr__s.html">stp_mxml_attr_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a15">stp_mxml_attr_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__mxml__value__s.html">stp_mxml_value_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a16">stp_mxml_element_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__mxml__text__s.html">stp_mxml_text_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a17">stp_mxml_text_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="unionstp__mxml__value__u.html">stp_mxml_value_u</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a18">stp_mxml_value_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a19">stp_mxml_node_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a43">stp_mxml_type_e</a> { <br>
+&nbsp;&nbsp;<a class="el" href="mxml_8h.html#a43a20">STP_MXML_ELEMENT</a>,
+<a class="el" href="mxml_8h.html#a43a21">STP_MXML_INTEGER</a>,
+<a class="el" href="mxml_8h.html#a43a22">STP_MXML_OPAQUE</a>,
+<a class="el" href="mxml_8h.html#a43a23">STP_MXML_REAL</a>,
+<br>
+&nbsp;&nbsp;<a class="el" href="mxml_8h.html#a43a24">STP_MXML_TEXT</a>
+<br>
+ }</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a25">stp_mxmlAdd</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *parent, int where, <a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *child, <a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *node)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a26">stp_mxmlDelete</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *node)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a27">stp_mxmlElementGetAttr</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *node, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a28">stp_mxmlElementSetAttr</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *node, const char *name, const char *value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a29">stp_mxmlFindElement</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *node, <a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *top, const char *name, const char *attr, const char *value, int descend)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a30">stp_mxmlLoadFile</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *top, FILE *fp, <a class="el" href="mxml_8h.html#a14">stp_mxml_type_t</a>(*cb)(<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a31">stp_mxmlLoadString</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *top, const char *s, <a class="el" href="mxml_8h.html#a14">stp_mxml_type_t</a>(*cb)(<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a32">stp_mxmlNewElement</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *parent, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a33">stp_mxmlNewInteger</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *parent, int integer)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a34">stp_mxmlNewOpaque</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *parent, const char *opaque)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a35">stp_mxmlNewReal</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *parent, double real)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a36">stp_mxmlNewText</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *parent, int whitespace, const char *string)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a37">stp_mxmlRemove</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *node)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a38">stp_mxmlSaveAllocString</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *node, int(*cb)(<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *, int))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a39">stp_mxmlSaveFile</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *node, FILE *fp, int(*cb)(<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *, int))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a40">stp_mxmlSaveString</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *node, char *buffer, int bufsize, int(*cb)(<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *, int))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a41">stp_mxmlWalkNext</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *node, <a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *top, int descend)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mxml_8h.html#a42">stp_mxmlWalkPrev</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *node, <a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *top, int descend)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Mini-XML XML parsing functions.
+<p>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="a12"></a><!-- doxytag: member="mxml.h::STP_MXML_ADD_AFTER" ref="a12" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MXML_ADD_AFTER&nbsp;&nbsp;&nbsp;1 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a11"></a><!-- doxytag: member="mxml.h::STP_MXML_ADD_BEFORE" ref="a11" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MXML_ADD_BEFORE&nbsp;&nbsp;&nbsp;0 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a13"></a><!-- doxytag: member="mxml.h::STP_MXML_ADD_TO_PARENT" ref="a13" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MXML_ADD_TO_PARENT&nbsp;&nbsp;&nbsp;NULL </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a4"></a><!-- doxytag: member="mxml.h::STP_MXML_DESCEND" ref="a4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MXML_DESCEND&nbsp;&nbsp;&nbsp;1 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a6"></a><!-- doxytag: member="mxml.h::STP_MXML_DESCEND_FIRST" ref="a6" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MXML_DESCEND_FIRST&nbsp;&nbsp;&nbsp;-1 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a2"></a><!-- doxytag: member="mxml.h::STP_MXML_NO_CALLBACK" ref="a2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MXML_NO_CALLBACK&nbsp;&nbsp;&nbsp;0 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a5"></a><!-- doxytag: member="mxml.h::STP_MXML_NO_DESCEND" ref="a5" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MXML_NO_DESCEND&nbsp;&nbsp;&nbsp;0 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a3"></a><!-- doxytag: member="mxml.h::STP_MXML_NO_PARENT" ref="a3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MXML_NO_PARENT&nbsp;&nbsp;&nbsp;0 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a1"></a><!-- doxytag: member="mxml.h::STP_MXML_TAB" ref="a1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MXML_TAB&nbsp;&nbsp;&nbsp;8 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a0"></a><!-- doxytag: member="mxml.h::STP_MXML_WRAP" ref="a0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MXML_WRAP&nbsp;&nbsp;&nbsp;70 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a10"></a><!-- doxytag: member="mxml.h::STP_MXML_WS_AFTER_CLOSE" ref="a10" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MXML_WS_AFTER_CLOSE&nbsp;&nbsp;&nbsp;3 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a8"></a><!-- doxytag: member="mxml.h::STP_MXML_WS_AFTER_OPEN" ref="a8" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MXML_WS_AFTER_OPEN&nbsp;&nbsp;&nbsp;1 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a9"></a><!-- doxytag: member="mxml.h::STP_MXML_WS_BEFORE_CLOSE" ref="a9" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MXML_WS_BEFORE_CLOSE&nbsp;&nbsp;&nbsp;2 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a7"></a><!-- doxytag: member="mxml.h::STP_MXML_WS_BEFORE_OPEN" ref="a7" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MXML_WS_BEFORE_OPEN&nbsp;&nbsp;&nbsp;0 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="a15"></a><!-- doxytag: member="mxml.h::stp_mxml_attr_t" ref="a15" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="structstp__mxml__attr__s.html">stp_mxml_attr_s</a> <a class="el" href="structstp__mxml__attr__s.html">stp_mxml_attr_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a16"></a><!-- doxytag: member="mxml.h::stp_mxml_element_t" ref="a16" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="structstp__mxml__value__s.html">stp_mxml_value_s</a> <a class="el" href="structstp__mxml__value__s.html">stp_mxml_element_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a19"></a><!-- doxytag: member="mxml.h::stp_mxml_node_t" ref="a19" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_s</a> <a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a17"></a><!-- doxytag: member="mxml.h::stp_mxml_text_t" ref="a17" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="structstp__mxml__text__s.html">stp_mxml_text_s</a> <a class="el" href="structstp__mxml__text__s.html">stp_mxml_text_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a14"></a><!-- doxytag: member="mxml.h::stp_mxml_type_t" ref="a14" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef enum <a class="el" href="mxml_8h.html#a43">stp_mxml_type_e</a> <a class="el" href="mxml_8h.html#a14">stp_mxml_type_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a18"></a><!-- doxytag: member="mxml.h::stp_mxml_value_t" ref="a18" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef union <a class="el" href="unionstp__mxml__value__u.html">stp_mxml_value_u</a> <a class="el" href="unionstp__mxml__value__u.html">stp_mxml_value_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Enumeration Type Documentation</h2>
+<a class="anchor" name="a43"></a><!-- doxytag: member="mxml.h::stp_mxml_type_e" ref="a43" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="mxml_8h.html#a43">stp_mxml_type_e</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="a43a20"></a><!-- doxytag: member="STP_MXML_ELEMENT" ref="a43a20" args="" -->STP_MXML_ELEMENT</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a43a21"></a><!-- doxytag: member="STP_MXML_INTEGER" ref="a43a21" args="" -->STP_MXML_INTEGER</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a43a22"></a><!-- doxytag: member="STP_MXML_OPAQUE" ref="a43a22" args="" -->STP_MXML_OPAQUE</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a43a23"></a><!-- doxytag: member="STP_MXML_REAL" ref="a43a23" args="" -->STP_MXML_REAL</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a43a24"></a><!-- doxytag: member="STP_MXML_TEXT" ref="a43a24" args="" -->STP_MXML_TEXT</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a25"></a><!-- doxytag: member="mxml.h::stp_mxmlAdd" ref="a25" args="(stp_mxml_node_t *parent, int where, stp_mxml_node_t *child, stp_mxml_node_t *node)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_mxmlAdd </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parent</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>where</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>child</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>node</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a26"></a><!-- doxytag: member="mxml.h::stp_mxmlDelete" ref="a26" args="(stp_mxml_node_t *node)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_mxmlDelete </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>node</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a27"></a><!-- doxytag: member="mxml.h::stp_mxmlElementGetAttr" ref="a27" args="(stp_mxml_node_t *node, const char *name)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stp_mxmlElementGetAttr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>node</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a28"></a><!-- doxytag: member="mxml.h::stp_mxmlElementSetAttr" ref="a28" args="(stp_mxml_node_t *node, const char *name, const char *value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_mxmlElementSetAttr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>node</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a29"></a><!-- doxytag: member="mxml.h::stp_mxmlFindElement" ref="a29" args="(stp_mxml_node_t *node, stp_mxml_node_t *top, const char *name, const char *attr, const char *value, int descend)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* stp_mxmlFindElement </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>node</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>top</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>attr</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>descend</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a30"></a><!-- doxytag: member="mxml.h::stp_mxmlLoadFile" ref="a30" args="(stp_mxml_node_t *top, FILE *fp, stp_mxml_type_t(*cb)(stp_mxml_node_t *))" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* stp_mxmlLoadFile </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>top</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>FILE *&nbsp;</td>
+ <td class="mdname" nowrap> <em>fp</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="mxml_8h.html#a14">stp_mxml_type_t</a>(*)(<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *)&nbsp;</td>
+ <td class="mdname" nowrap> <em>cb</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a31"></a><!-- doxytag: member="mxml.h::stp_mxmlLoadString" ref="a31" args="(stp_mxml_node_t *top, const char *s, stp_mxml_type_t(*cb)(stp_mxml_node_t *))" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* stp_mxmlLoadString </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>top</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>s</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="mxml_8h.html#a14">stp_mxml_type_t</a>(*)(<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *)&nbsp;</td>
+ <td class="mdname" nowrap> <em>cb</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a32"></a><!-- doxytag: member="mxml.h::stp_mxmlNewElement" ref="a32" args="(stp_mxml_node_t *parent, const char *name)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* stp_mxmlNewElement </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parent</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a33"></a><!-- doxytag: member="mxml.h::stp_mxmlNewInteger" ref="a33" args="(stp_mxml_node_t *parent, int integer)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* stp_mxmlNewInteger </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parent</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>integer</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a34"></a><!-- doxytag: member="mxml.h::stp_mxmlNewOpaque" ref="a34" args="(stp_mxml_node_t *parent, const char *opaque)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* stp_mxmlNewOpaque </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parent</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>opaque</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a35"></a><!-- doxytag: member="mxml.h::stp_mxmlNewReal" ref="a35" args="(stp_mxml_node_t *parent, double real)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* stp_mxmlNewReal </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parent</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>real</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a36"></a><!-- doxytag: member="mxml.h::stp_mxmlNewText" ref="a36" args="(stp_mxml_node_t *parent, int whitespace, const char *string)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* stp_mxmlNewText </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>parent</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>whitespace</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>string</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a37"></a><!-- doxytag: member="mxml.h::stp_mxmlRemove" ref="a37" args="(stp_mxml_node_t *node)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_mxmlRemove </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>node</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a38"></a><!-- doxytag: member="mxml.h::stp_mxmlSaveAllocString" ref="a38" args="(stp_mxml_node_t *node, int(*cb)(stp_mxml_node_t *, int))" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* stp_mxmlSaveAllocString </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>node</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int(*)(<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *, int)&nbsp;</td>
+ <td class="mdname" nowrap> <em>cb</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a39"></a><!-- doxytag: member="mxml.h::stp_mxmlSaveFile" ref="a39" args="(stp_mxml_node_t *node, FILE *fp, int(*cb)(stp_mxml_node_t *, int))" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_mxmlSaveFile </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>node</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>FILE *&nbsp;</td>
+ <td class="mdname" nowrap> <em>fp</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int(*)(<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *, int)&nbsp;</td>
+ <td class="mdname" nowrap> <em>cb</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a40"></a><!-- doxytag: member="mxml.h::stp_mxmlSaveString" ref="a40" args="(stp_mxml_node_t *node, char *buffer, int bufsize, int(*cb)(stp_mxml_node_t *, int))" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_mxmlSaveString </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>node</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>buffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>bufsize</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int(*)(<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *, int)&nbsp;</td>
+ <td class="mdname" nowrap> <em>cb</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a41"></a><!-- doxytag: member="mxml.h::stp_mxmlWalkNext" ref="a41" args="(stp_mxml_node_t *node, stp_mxml_node_t *top, int descend)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* stp_mxmlWalkNext </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>node</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>top</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>descend</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a42"></a><!-- doxytag: member="mxml.h::stp_mxmlWalkPrev" ref="a42" args="(stp_mxml_node_t *node, stp_mxml_node_t *top, int descend)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* stp_mxmlWalkPrev </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>node</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>top</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>descend</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:08 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/pages.html b/doc/gutenprint/html/pages.html
new file mode 100644
index 0000000..a139373
--- /dev/null
+++ b/doc/gutenprint/html/pages.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: Page Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindexHL" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>libgutenprint API Reference Related Pages</h1>Here is a list of all related documentation pages:<ul>
+<li><a class="el" href="deprecated.html">Deprecated List</a>
+
+</ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/paper_8h.html b/doc/gutenprint/html/paper_8h.html
new file mode 100644
index 0000000..6dd7bcb
--- /dev/null
+++ b/doc/gutenprint/html/paper_8h.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/paper.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>paper.h File Reference</h1>Paper size functions. <a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="vars_8h.html">gutenprint/vars.h</a>&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__papersize__t.html">stp_papersize_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The papersize data type. <a href="structstp__papersize__t.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__papersize.html#ga5">stp_papersize_unit_t</a> { <a class="el" href="group__papersize.html#gga5a0">PAPERSIZE_ENGLISH_STANDARD</a>,
+<a class="el" href="group__papersize.html#gga5a1">PAPERSIZE_METRIC_STANDARD</a>,
+<a class="el" href="group__papersize.html#gga5a2">PAPERSIZE_ENGLISH_EXTENDED</a>,
+<a class="el" href="group__papersize.html#gga5a3">PAPERSIZE_METRIC_EXTENDED</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Units of measurement. <a href="group__papersize.html#ga5">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__papersize.html#ga0">stp_known_papersizes</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of available papersizes. <a href="group__papersize.html#ga0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__papersize__t.html">stp_papersize_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__papersize.html#ga1">stp_get_papersize_by_name</a> (const char *name)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a papersize by name. <a href="group__papersize.html#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__papersize__t.html">stp_papersize_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__papersize.html#ga2">stp_get_papersize_by_size</a> (int length, int width)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a papersize by size. <a href="group__papersize.html#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__papersize__t.html">stp_papersize_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__papersize.html#ga3">stp_get_papersize_by_index</a> (int idx)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a papersize by its index number. <a href="group__papersize.html#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__papersize.html#ga4">stp_default_media_size</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *width, int *height)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Paper size functions.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/path_8h.html b/doc/gutenprint/html/path_8h.html
new file mode 100644
index 0000000..eda875f
--- /dev/null
+++ b/doc/gutenprint/html/path_8h.html
@@ -0,0 +1,102 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/path.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>path.h File Reference</h1>Simple directory path functions. <a href="#_details">More...</a>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="path_8h.html#a0">stp_path_search</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *dirlist, const char *suffix)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="path_8h.html#a1">stp_path_split</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *list, const char *path)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Simple directory path functions.
+<p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a0"></a><!-- doxytag: member="path.h::stp_path_search" ref="a0" args="(stp_list_t *dirlist, const char *suffix)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a>* stp_path_search </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dirlist</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>suffix</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a1"></a><!-- doxytag: member="path.h::stp_path_split" ref="a1" args="(stp_list_t *list, const char *path)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_path_split </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>path</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/printers_8h.html b/doc/gutenprint/html/printers_8h.html
new file mode 100644
index 0000000..7091a99
--- /dev/null
+++ b/doc/gutenprint/html/printers_8h.html
@@ -0,0 +1,100 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/printers.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>printers.h File Reference</h1>Printer functions. <a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="list_8h.html">gutenprint/list.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="vars_8h.html">gutenprint/vars.h</a>&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__printfuncs__t.html">stp_printfuncs_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__family.html">stp_family</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_printer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga0">stp_printer_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The printer opaque data type (representation of printer model). <a href="group__printer.html#ga0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstp__family.html">stp_family</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga1">stp_family_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga2">stp_printer_model_count</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of available printer models. <a href="group__printer.html#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga3">stp_get_printer_by_index</a> (int idx)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a printer model by its index number. <a href="group__printer.html#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga4">stp_get_printer_by_long_name</a> (const char *long_name)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a printer model by its long (translated) name. <a href="group__printer.html#ga4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga5">stp_get_printer_by_driver</a> (const char *driver)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a printer model by its short name. <a href="group__printer.html#ga5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga6">stp_get_printer</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the printer model from a vars object. <a href="group__printer.html#ga6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga7">stp_get_printer_index_by_driver</a> (const char *driver)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the printer index number from the printer model short (driver) name. <a href="group__printer.html#ga7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga8">stp_printer_get_long_name</a> (const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *p)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a printer model's long (translated) name. <a href="group__printer.html#ga8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga9">stp_printer_get_driver</a> (const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *p)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a printer model's short (driver) name. <a href="group__printer.html#ga9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga10">stp_printer_get_family</a> (const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *p)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a printer model's family name. <a href="group__printer.html#ga10"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga11">stp_printer_get_manufacturer</a> (const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *p)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a printer model's manufacturer's name. <a href="group__printer.html#ga11"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga12">stp_printer_get_model</a> (const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *p)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a printer model's model number. <a href="group__printer.html#ga12"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga13">stp_printer_get_defaults</a> (const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *p)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the default vars for a particular printer model. <a href="group__printer.html#ga13"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga14">stp_set_printer_defaults</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const <a class="el" href="group__printer.html#ga0">stp_printer_t</a> *p)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a vars object to use a particular driver, and set the parameter to its defaults. <a href="group__printer.html#ga14"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga15">stp_print</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Print the image. <a href="group__printer.html#ga15"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga16">stp_start_job</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start a print job. <a href="group__printer.html#ga16"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga17">stp_end_job</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">End a print job. <a href="group__printer.html#ga17"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga18">stp_get_model_id</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga19">stp_verify_printer_params</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga20">stp_family_register</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *family)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga21">stp_family_unregister</a> (<a class="el" href="group__list.html#ga1">stp_list_t</a> *family)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga22">stp_initialize_printer_defaults</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga23">stp_printer_list_parameters</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga24">stp_printer_describe_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name, <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *description)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__printer.html#ga25">stp_describe_output</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Printer functions.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/sequence_8h.html b/doc/gutenprint/html/sequence_8h.html
new file mode 100644
index 0000000..810e717
--- /dev/null
+++ b/doc/gutenprint/html/sequence_8h.html
@@ -0,0 +1,111 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/sequence.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>sequence.h File Reference</h1>Sequence functions. <a href="#_details">More...</a>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_sequence&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The sequence opaque data type. <a href="group__sequence.html#ga0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga1">stp_sequence_create</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new sequence. <a href="group__sequence.html#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga2">stp_sequence_destroy</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a sequence. <a href="group__sequence.html#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga3">stp_sequence_copy</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *dest, const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *source)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy an sequence. <a href="group__sequence.html#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga4">stp_sequence_create_copy</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy and allocate an sequence. <a href="group__sequence.html#ga4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga5">stp_sequence_set_bounds</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, double low, double high)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the lower and upper bounds. <a href="group__sequence.html#ga5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga6">stp_sequence_get_bounds</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, double *low, double *high)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the lower and upper bounds. <a href="group__sequence.html#ga6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga7">stp_sequence_get_range</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, double *low, double *high)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get range of values stored in the sequence. <a href="group__sequence.html#ga7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga8">stp_sequence_set_size</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t size)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the sequence size. <a href="group__sequence.html#ga8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga9">stp_sequence_get_size</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the sequence size. <a href="group__sequence.html#ga9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga10">stp_sequence_set_data</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t count, const double *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a sequence. <a href="group__sequence.html#ga10"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga11">stp_sequence_set_subrange</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t where, size_t size, const double *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a subrange of a sequence. <a href="group__sequence.html#ga11"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga12">stp_sequence_get_data</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t *size, const double **data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in a sequence. <a href="group__sequence.html#ga12"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga13">stp_sequence_set_point</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t where, double data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data at a single point in a sequence. <a href="group__sequence.html#ga13"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga14">stp_sequence_get_point</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t where, double *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data at a single point in a sequence. <a href="group__sequence.html#ga14"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga15">stp_sequence_set_float_data</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t count, const float *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a sequence from float values. <a href="group__sequence.html#ga15"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga16">stp_sequence_set_long_data</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t count, const long *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a sequence from long values. <a href="group__sequence.html#ga16"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga17">stp_sequence_set_ulong_data</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t count, const unsigned long *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a sequence from unsigned long values. <a href="group__sequence.html#ga17"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga18">stp_sequence_set_int_data</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t count, const int *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a sequence from int values. <a href="group__sequence.html#ga18"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga19">stp_sequence_set_uint_data</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t count, const unsigned int *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a sequence from unsigned int values. <a href="group__sequence.html#ga19"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga20">stp_sequence_set_short_data</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t count, const short *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a sequence from short values. <a href="group__sequence.html#ga20"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga21">stp_sequence_set_ushort_data</a> (<a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t count, const unsigned short *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data in a sequence from unsigned short values. <a href="group__sequence.html#ga21"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const float *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga22">stp_sequence_get_float_data</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in a sequence as float data. <a href="group__sequence.html#ga22"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const long *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga23">stp_sequence_get_long_data</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in a sequence as long data. <a href="group__sequence.html#ga23"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned long *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga24">stp_sequence_get_ulong_data</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in a sequence as unsigned long data. <a href="group__sequence.html#ga24"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga25">stp_sequence_get_int_data</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in a sequence as int data. <a href="group__sequence.html#ga25"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga26">stp_sequence_get_uint_data</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in a sequence as unsigned int data. <a href="group__sequence.html#ga26"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const short *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga27">stp_sequence_get_short_data</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in a sequence as short data. <a href="group__sequence.html#ga27"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned short *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sequence.html#ga28">stp_sequence_get_ushort_data</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *sequence, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the data in a sequence as unsigned short data. <a href="group__sequence.html#ga28"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Sequence functions.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/string-list_8h.html b/doc/gutenprint/html/string-list_8h.html
new file mode 100644
index 0000000..c315fcf
--- /dev/null
+++ b/doc/gutenprint/html/string-list_8h.html
@@ -0,0 +1,418 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/string-list.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>string-list.h File Reference</h1>String list functions. <a href="#_details">More...</a>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__param__string__t.html">stp_param_string_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">String parameter. <a href="structstp__param__string__t.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_string_list&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="string-list_8h.html#a0">stp_string_list_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The string_list opaque data type. <a href="#a0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="string-list_8h.html#a1">stp_string_list_create</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="string-list_8h.html#a2">stp_string_list_destroy</a> (<a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *list)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__param__string__t.html">stp_param_string_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="string-list_8h.html#a3">stp_string_list_param</a> (const <a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *list, size_t element)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__param__string__t.html">stp_param_string_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="string-list_8h.html#a4">stp_string_list_find</a> (const <a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *list, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="string-list_8h.html#a5">stp_string_list_count</a> (const <a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *list)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="string-list_8h.html#a6">stp_string_list_create_copy</a> (const <a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *list)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="string-list_8h.html#a7">stp_string_list_add_string</a> (<a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *list, const char *name, const char *text)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="string-list_8h.html#a8">stp_string_list_remove_string</a> (<a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *list, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="string-list_8h.html#a9">stp_string_list_create_from_params</a> (const <a class="el" href="structstp__param__string__t.html">stp_param_string_t</a> *list, size_t count)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="string-list_8h.html#a10">stp_string_list_is_present</a> (const <a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *list, const char *value)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+String list functions.
+<p>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="a0"></a><!-- doxytag: member="string-list.h::stp_string_list_t" ref="a0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct stp_string_list <a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The string_list opaque data type.
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a7"></a><!-- doxytag: member="string-list.h::stp_string_list_add_string" ref="a7" args="(stp_string_list_t *list, const char *name, const char *text)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_string_list_add_string </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>text</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a5"></a><!-- doxytag: member="string-list.h::stp_string_list_count" ref="a5" args="(const stp_string_list_t *list)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">size_t stp_string_list_count </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>list</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a1"></a><!-- doxytag: member="string-list.h::stp_string_list_create" ref="a1" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="string-list_8h.html#a0">stp_string_list_t</a>* stp_string_list_create </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a6"></a><!-- doxytag: member="string-list.h::stp_string_list_create_copy" ref="a6" args="(const stp_string_list_t *list)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="string-list_8h.html#a0">stp_string_list_t</a>* stp_string_list_create_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>list</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a9"></a><!-- doxytag: member="string-list.h::stp_string_list_create_from_params" ref="a9" args="(const stp_param_string_t *list, size_t count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="string-list_8h.html#a0">stp_string_list_t</a>* stp_string_list_create_from_params </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__param__string__t.html">stp_param_string_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a2"></a><!-- doxytag: member="string-list.h::stp_string_list_destroy" ref="a2" args="(stp_string_list_t *list)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_string_list_destroy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>list</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a4"></a><!-- doxytag: member="string-list.h::stp_string_list_find" ref="a4" args="(const stp_string_list_t *list, const char *name)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__param__string__t.html">stp_param_string_t</a>* stp_string_list_find </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a10"></a><!-- doxytag: member="string-list.h::stp_string_list_is_present" ref="a10" args="(const stp_string_list_t *list, const char *value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_string_list_is_present </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a3"></a><!-- doxytag: member="string-list.h::stp_string_list_param" ref="a3" args="(const stp_string_list_t *list, size_t element)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__param__string__t.html">stp_param_string_t</a>* stp_string_list_param </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>element</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a8"></a><!-- doxytag: member="string-list.h::stp_string_list_remove_string" ref="a8" args="(stp_string_list_t *list, const char *name)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_string_list_remove_string </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>list</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structdither__matrix__impl.html b/doc/gutenprint/html/structdither__matrix__impl.html
new file mode 100644
index 0000000..6c10703
--- /dev/null
+++ b/doc/gutenprint/html/structdither__matrix__impl.html
@@ -0,0 +1,396 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: dither_matrix_impl Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>dither_matrix_impl Struct Reference</h1><!-- doxytag: class="dither_matrix_impl" --><code>#include &lt;dither.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdither__matrix__impl.html#o0">base</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdither__matrix__impl.html#o1">exp</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdither__matrix__impl.html#o2">x_size</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdither__matrix__impl.html#o3">y_size</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdither__matrix__impl.html#o4">total_size</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdither__matrix__impl.html#o5">last_x</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdither__matrix__impl.html#o6">last_x_mod</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdither__matrix__impl.html#o7">last_y</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdither__matrix__impl.html#o8">last_y_mod</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdither__matrix__impl.html#o9">index</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdither__matrix__impl.html#o10">i_own</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdither__matrix__impl.html#o11">x_offset</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdither__matrix__impl.html#o12">y_offset</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdither__matrix__impl.html#o13">fast_mask</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdither__matrix__impl.html#o14">matrix</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o0"></a><!-- doxytag: member="dither_matrix_impl::base" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structdither__matrix__impl.html#o0">dither_matrix_impl::base</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="dither_matrix_impl::exp" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structdither__matrix__impl.html#o1">dither_matrix_impl::exp</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o13"></a><!-- doxytag: member="dither_matrix_impl::fast_mask" ref="o13" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned <a class="el" href="structdither__matrix__impl.html#o13">dither_matrix_impl::fast_mask</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o10"></a><!-- doxytag: member="dither_matrix_impl::i_own" ref="o10" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structdither__matrix__impl.html#o10">dither_matrix_impl::i_own</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o9"></a><!-- doxytag: member="dither_matrix_impl::index" ref="o9" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structdither__matrix__impl.html#o9">dither_matrix_impl::index</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o5"></a><!-- doxytag: member="dither_matrix_impl::last_x" ref="o5" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structdither__matrix__impl.html#o5">dither_matrix_impl::last_x</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o6"></a><!-- doxytag: member="dither_matrix_impl::last_x_mod" ref="o6" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structdither__matrix__impl.html#o6">dither_matrix_impl::last_x_mod</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o7"></a><!-- doxytag: member="dither_matrix_impl::last_y" ref="o7" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structdither__matrix__impl.html#o7">dither_matrix_impl::last_y</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o8"></a><!-- doxytag: member="dither_matrix_impl::last_y_mod" ref="o8" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structdither__matrix__impl.html#o8">dither_matrix_impl::last_y_mod</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o14"></a><!-- doxytag: member="dither_matrix_impl::matrix" ref="o14" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned* <a class="el" href="structdither__matrix__impl.html#o14">dither_matrix_impl::matrix</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="dither_matrix_impl::total_size" ref="o4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structdither__matrix__impl.html#o4">dither_matrix_impl::total_size</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o11"></a><!-- doxytag: member="dither_matrix_impl::x_offset" ref="o11" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structdither__matrix__impl.html#o11">dither_matrix_impl::x_offset</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o2"></a><!-- doxytag: member="dither_matrix_impl::x_size" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structdither__matrix__impl.html#o2">dither_matrix_impl::x_size</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o12"></a><!-- doxytag: member="dither_matrix_impl::y_offset" ref="o12" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structdither__matrix__impl.html#o12">dither_matrix_impl::y_offset</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="dither_matrix_impl::y_size" ref="o3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structdither__matrix__impl.html#o3">dither_matrix_impl::y_size</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="dither_8h.html">dither.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__cached__curve__t.html b/doc/gutenprint/html/structstp__cached__curve__t.html
new file mode 100644
index 0000000..a3a105e
--- /dev/null
+++ b/doc/gutenprint/html/structstp__cached__curve__t.html
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_cached_curve_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_cached_curve_t Struct Reference</h1><!-- doxytag: class="stp_cached_curve_t" --><code>#include &lt;curve-cache.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__cached__curve__t.html#o0">curve</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const double *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__cached__curve__t.html#o1">d_cache</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned short *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__cached__curve__t.html#o2">s_cache</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__cached__curve__t.html#o3">count</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o3"></a><!-- doxytag: member="stp_cached_curve_t::count" ref="o3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">size_t <a class="el" href="structstp__cached__curve__t.html#o3">stp_cached_curve_t::count</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_cached_curve_t::curve" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* <a class="el" href="structstp__cached__curve__t.html#o0">stp_cached_curve_t::curve</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_cached_curve_t::d_cache" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const double* <a class="el" href="structstp__cached__curve__t.html#o1">stp_cached_curve_t::d_cache</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_cached_curve_t::s_cache" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned short* <a class="el" href="structstp__cached__curve__t.html#o2">stp_cached_curve_t::s_cache</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="curve-cache_8h.html">curve-cache.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__color.html b/doc/gutenprint/html/structstp__color.html
new file mode 100644
index 0000000..74f0694
--- /dev/null
+++ b/doc/gutenprint/html/structstp__color.html
@@ -0,0 +1,99 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_color Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_color Struct Reference<br>
+<small>
+[<a class="el" href="group__color.html">color</a>]</small>
+</h1><!-- doxytag: class="stp_color" --><code>#include &lt;color.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__color.html#o0">short_name</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__color.html#o1">long_name</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__colorfuncs__t.html">stp_colorfuncs_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__color.html#o2">colorfuncs</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_color::colorfuncs" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__colorfuncs__t.html">stp_colorfuncs_t</a>* <a class="el" href="structstp__color.html#o2">stp_color::colorfuncs</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_color::long_name" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* <a class="el" href="structstp__color.html#o1">stp_color::long_name</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_color::short_name" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* <a class="el" href="structstp__color.html#o0">stp_color::short_name</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="color_8h.html">color.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__colorfuncs__t.html b/doc/gutenprint/html/structstp__colorfuncs__t.html
new file mode 100644
index 0000000..4e61e2b
--- /dev/null
+++ b/doc/gutenprint/html/structstp__colorfuncs__t.html
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_colorfuncs_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_colorfuncs_t Struct Reference<br>
+<small>
+[<a class="el" href="group__color.html">color</a>]</small>
+</h1><!-- doxytag: class="stp_colorfuncs_t" --><code>#include &lt;color.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__colorfuncs__t.html#o0">init</a> )(<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image, size_t steps)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__colorfuncs__t.html#o1">get_row</a> )(<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image, int row, unsigned *zero_mask)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__colorfuncs__t.html#o2">list_parameters</a> )(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__colorfuncs__t.html#o3">describe_parameter</a> )(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name, <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *description)</td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o3"></a><!-- doxytag: member="stp_colorfuncs_t::describe_parameter" ref="o3" args=")(const stp_vars_t *v, const char *name, stp_parameter_t *description)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="structstp__colorfuncs__t.html#o3">stp_colorfuncs_t::describe_parameter</a>)(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name, <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *description) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_colorfuncs_t::get_row" ref="o1" args=")(stp_vars_t *v, stp_image_t *image, int row, unsigned *zero_mask)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int(* <a class="el" href="structstp__colorfuncs__t.html#o1">stp_colorfuncs_t::get_row</a>)(<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image, int row, unsigned *zero_mask) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_colorfuncs_t::init" ref="o0" args=")(stp_vars_t *v, stp_image_t *image, size_t steps)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int(* <a class="el" href="structstp__colorfuncs__t.html#o0">stp_colorfuncs_t::init</a>)(<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image, size_t steps) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_colorfuncs_t::list_parameters" ref="o2" args=")(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>(* <a class="el" href="structstp__colorfuncs__t.html#o2">stp_colorfuncs_t::list_parameters</a>)(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="color_8h.html">color.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__curve__point__t.html b/doc/gutenprint/html/structstp__curve__point__t.html
new file mode 100644
index 0000000..536e9af
--- /dev/null
+++ b/doc/gutenprint/html/structstp__curve__point__t.html
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_curve_point_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_curve_point_t Struct Reference<br>
+<small>
+[<a class="el" href="group__curve.html">curve</a>]</small>
+</h1><!-- doxytag: class="stp_curve_point_t" -->Point (x,y) for piecewise curve.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;curve.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__curve__point__t.html#o0">x</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Horizontal position. <a href="#o0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__curve__point__t.html#o1">y</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Vertical position. <a href="#o1"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Point (x,y) for piecewise curve.
+<p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_curve_point_t::x" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double <a class="el" href="structstp__curve__point__t.html#o0">stp_curve_point_t::x</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Horizontal position.
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_curve_point_t::y" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double <a class="el" href="structstp__curve__point__t.html#o1">stp_curve_point_t::y</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Vertical position.
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="curve_8h.html">curve.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__dither__matrix__generic.html b/doc/gutenprint/html/structstp__dither__matrix__generic.html
new file mode 100644
index 0000000..39b7adf
--- /dev/null
+++ b/doc/gutenprint/html/structstp__dither__matrix__generic.html
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_dither_matrix_generic Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_dither_matrix_generic Struct Reference</h1><!-- doxytag: class="stp_dither_matrix_generic" --><code>#include &lt;dither.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__generic.html#o0">x</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__generic.html#o1">y</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__generic.html#o2">bytes</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__generic.html#o3">prescaled</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__generic.html#o4">data</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_dither_matrix_generic::bytes" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__dither__matrix__generic.html#o2">stp_dither_matrix_generic::bytes</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="stp_dither_matrix_generic::data" ref="o4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const void* <a class="el" href="structstp__dither__matrix__generic.html#o4">stp_dither_matrix_generic::data</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="stp_dither_matrix_generic::prescaled" ref="o3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__dither__matrix__generic.html#o3">stp_dither_matrix_generic::prescaled</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_dither_matrix_generic::x" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__dither__matrix__generic.html#o0">stp_dither_matrix_generic::x</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_dither_matrix_generic::y" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__dither__matrix__generic.html#o1">stp_dither_matrix_generic::y</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="dither_8h.html">dither.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__dither__matrix__normal.html b/doc/gutenprint/html/structstp__dither__matrix__normal.html
new file mode 100644
index 0000000..6905646
--- /dev/null
+++ b/doc/gutenprint/html/structstp__dither__matrix__normal.html
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_dither_matrix_normal Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_dither_matrix_normal Struct Reference</h1><!-- doxytag: class="stp_dither_matrix_normal" --><code>#include &lt;dither.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__normal.html#o0">x</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__normal.html#o1">y</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__normal.html#o2">bytes</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__normal.html#o3">prescaled</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__normal.html#o4">data</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_dither_matrix_normal::bytes" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__dither__matrix__normal.html#o2">stp_dither_matrix_normal::bytes</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="stp_dither_matrix_normal::data" ref="o4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned* <a class="el" href="structstp__dither__matrix__normal.html#o4">stp_dither_matrix_normal::data</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="stp_dither_matrix_normal::prescaled" ref="o3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__dither__matrix__normal.html#o3">stp_dither_matrix_normal::prescaled</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_dither_matrix_normal::x" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__dither__matrix__normal.html#o0">stp_dither_matrix_normal::x</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_dither_matrix_normal::y" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__dither__matrix__normal.html#o1">stp_dither_matrix_normal::y</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="dither_8h.html">dither.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__dither__matrix__short.html b/doc/gutenprint/html/structstp__dither__matrix__short.html
new file mode 100644
index 0000000..f7bb824
--- /dev/null
+++ b/doc/gutenprint/html/structstp__dither__matrix__short.html
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_dither_matrix_short Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_dither_matrix_short Struct Reference</h1><!-- doxytag: class="stp_dither_matrix_short" --><code>#include &lt;dither.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__short.html#o0">x</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__short.html#o1">y</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__short.html#o2">bytes</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__short.html#o3">prescaled</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned short *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dither__matrix__short.html#o4">data</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_dither_matrix_short::bytes" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__dither__matrix__short.html#o2">stp_dither_matrix_short::bytes</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="stp_dither_matrix_short::data" ref="o4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned short* <a class="el" href="structstp__dither__matrix__short.html#o4">stp_dither_matrix_short::data</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="stp_dither_matrix_short::prescaled" ref="o3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__dither__matrix__short.html#o3">stp_dither_matrix_short::prescaled</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_dither_matrix_short::x" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__dither__matrix__short.html#o0">stp_dither_matrix_short::x</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_dither_matrix_short::y" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__dither__matrix__short.html#o1">stp_dither_matrix_short::y</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="dither_8h.html">dither.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__dotsize.html b/doc/gutenprint/html/structstp__dotsize.html
new file mode 100644
index 0000000..4630fbd
--- /dev/null
+++ b/doc/gutenprint/html/structstp__dotsize.html
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_dotsize Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_dotsize Struct Reference</h1><!-- doxytag: class="stp_dotsize" --><code>#include &lt;dither.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dotsize.html#o0">bit_pattern</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__dotsize.html#o1">value</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_dotsize::bit_pattern" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned <a class="el" href="structstp__dotsize.html#o0">stp_dotsize::bit_pattern</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_dotsize::value" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double <a class="el" href="structstp__dotsize.html#o1">stp_dotsize::value</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="dither_8h.html">dither.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__double__bound__t.html b/doc/gutenprint/html/structstp__double__bound__t.html
new file mode 100644
index 0000000..2480d35
--- /dev/null
+++ b/doc/gutenprint/html/structstp__double__bound__t.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_double_bound_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_double_bound_t Struct Reference<br>
+<small>
+[<a class="el" href="group__vars.html">vars</a>]</small>
+</h1><!-- doxytag: class="stp_double_bound_t" -->double_bound (range) parameter.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;vars.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__double__bound__t.html#o0">lower</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__double__bound__t.html#o1">upper</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+double_bound (range) parameter.
+<p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_double_bound_t::lower" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double <a class="el" href="structstp__double__bound__t.html#o0">stp_double_bound_t::lower</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Lower bound. </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_double_bound_t::upper" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double <a class="el" href="structstp__double__bound__t.html#o1">stp_double_bound_t::upper</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Upper bound. </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="vars_8h.html">vars.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__family.html b/doc/gutenprint/html/structstp__family.html
new file mode 100644
index 0000000..3b80780
--- /dev/null
+++ b/doc/gutenprint/html/structstp__family.html
@@ -0,0 +1,74 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_family Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_family Struct Reference<br>
+<small>
+[<a class="el" href="group__printer.html">printer</a>]</small>
+</h1><!-- doxytag: class="stp_family" --><code>#include &lt;printers.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__printfuncs__t.html">stp_printfuncs_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__family.html#o0">printfuncs</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__family.html#o1">printer_list</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_family::printer_list" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__list.html#ga1">stp_list_t</a>* <a class="el" href="structstp__family.html#o1">stp_family::printer_list</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_family::printfuncs" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__printfuncs__t.html">stp_printfuncs_t</a>* <a class="el" href="structstp__family.html#o0">stp_family::printfuncs</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="printers_8h.html">printers.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__image.html b/doc/gutenprint/html/structstp__image.html
new file mode 100644
index 0000000..e5b4644
--- /dev/null
+++ b/doc/gutenprint/html/structstp__image.html
@@ -0,0 +1,285 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_image Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_image Struct Reference<br>
+<small>
+[<a class="el" href="group__image.html">image</a>]</small>
+</h1><!-- doxytag: class="stp_image" -->The image type is an abstract data type for interfacing with the image creation program.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;image.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__image.html#o0">init</a> )(struct <a class="el" href="structstp__image.html">stp_image</a> *image)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This callback is used to perform any initialization required by the image layer for the image. <a href="#o0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__image.html#o1">reset</a> )(struct <a class="el" href="structstp__image.html">stp_image</a> *image)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This callback is called to reset the image to the beginning. <a href="#o1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__image.html#o2">width</a> )(struct <a class="el" href="structstp__image.html">stp_image</a> *image)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This callback returns the width of the image in pixels. <a href="#o2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__image.html#o3">height</a> )(struct <a class="el" href="structstp__image.html">stp_image</a> *image)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This callback returns the height of the image in pixels. <a href="#o3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__image.html#ga9">stp_image_status_t</a>(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__image.html#o4">get_row</a> )(struct <a class="el" href="structstp__image.html">stp_image</a> *image, unsigned char *data, size_t byte_limit, int row)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This callback transfers the data from the image to the gimp-print library. <a href="#o4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__image.html#o5">get_appname</a> )(struct <a class="el" href="structstp__image.html">stp_image</a> *image)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This callback returns the name of the application. <a href="#o5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__image.html#o6">conclude</a> )(struct <a class="el" href="structstp__image.html">stp_image</a> *image)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This callback is called at the end of each page. <a href="#o6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__image.html#o7">rep</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A pointer to an application-specific state information that might need to be associated with the image object. <a href="#o7"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The image type is an abstract data type for interfacing with the image creation program.
+<p>
+It provides callbacks to functions defined within the client application which are called while printing the image.
+<p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o6"></a><!-- doxytag: member="stp_image::conclude" ref="o6" args=")(struct stp_image *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="structstp__image.html#o6">stp_image::conclude</a>)(struct <a class="el" href="structstp__image.html">stp_image</a> *image) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This callback is called at the end of each page.
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o5"></a><!-- doxytag: member="stp_image::get_appname" ref="o5" args=")(struct stp_image *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char*(* <a class="el" href="structstp__image.html#o5">stp_image::get_appname</a>)(struct <a class="el" href="structstp__image.html">stp_image</a> *image) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This callback returns the name of the application.
+<p>
+This is embedded in the output by some drivers. </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="stp_image::get_row" ref="o4" args=")(struct stp_image *image, unsigned char *data, size_t byte_limit, int row)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__image.html#ga9">stp_image_status_t</a>(* <a class="el" href="structstp__image.html#o4">stp_image::get_row</a>)(struct <a class="el" href="structstp__image.html">stp_image</a> *image, unsigned char *data, size_t byte_limit, int row) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This callback transfers the data from the image to the gimp-print library.
+<p>
+It is called from the driver layer. It should copy WIDTH (as returned by the <a class="el" href="structstp__image.html#o2">width()</a> member) pixels of data into the data buffer. It normally returns STP_IMAGE_STATUS_OK; if something goes wrong, or the application wishes to stop producing any further output (e. g. because the user cancelled the print job), it should return STP_IMAGE_STATUS_ABORT. This will cause the driver to flush any remaining data to the output. It will always request rows in monotonically ascending order, but it may skip rows (if, for example, the resolution of the input is higher than the resolution of the output). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>image</em>&nbsp;</td><td>the image in use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to <a class="el" href="structstp__image.html#o2">width()</a> bytes of pixel data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>byte_limit</em>&nbsp;</td><td>(image width * number of channels). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>row</em>&nbsp;</td><td>(unused).</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="stp_image::height" ref="o3" args=")(struct stp_image *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int(* <a class="el" href="structstp__image.html#o3">stp_image::height</a>)(struct <a class="el" href="structstp__image.html">stp_image</a> *image) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This callback returns the height of the image in pixels.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>image</em>&nbsp;</td><td>the image in use.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_image::init" ref="o0" args=")(struct stp_image *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="structstp__image.html#o0">stp_image::init</a>)(struct <a class="el" href="structstp__image.html">stp_image</a> *image) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This callback is used to perform any initialization required by the image layer for the image.
+<p>
+It will be called once per image. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>image</em>&nbsp;</td><td>the image in use.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o7"></a><!-- doxytag: member="stp_image::rep" ref="o7" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void* <a class="el" href="structstp__image.html#o7">stp_image::rep</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+A pointer to an application-specific state information that might need to be associated with the image object.
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_image::reset" ref="o1" args=")(struct stp_image *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="structstp__image.html#o1">stp_image::reset</a>)(struct <a class="el" href="structstp__image.html">stp_image</a> *image) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This callback is called to reset the image to the beginning.
+<p>
+It may (in principle) be called multiple times if a page is being printed more than once. <dl compact><dt><b>Warning:</b></dt><dd>The <a class="el" href="structstp__image.html#o1">reset()</a> call may be removed in the future. </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>image</em>&nbsp;</td><td>the image in use.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_image::width" ref="o2" args=")(struct stp_image *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int(* <a class="el" href="structstp__image.html#o2">stp_image::width</a>)(struct <a class="el" href="structstp__image.html">stp_image</a> *image) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This callback returns the width of the image in pixels.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>image</em>&nbsp;</td><td>the image in use.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="image_8h.html">image.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__int__bound__t.html b/doc/gutenprint/html/structstp__int__bound__t.html
new file mode 100644
index 0000000..ca86f47
--- /dev/null
+++ b/doc/gutenprint/html/structstp__int__bound__t.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_int_bound_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_int_bound_t Struct Reference<br>
+<small>
+[<a class="el" href="group__vars.html">vars</a>]</small>
+</h1><!-- doxytag: class="stp_int_bound_t" -->int_bound (range) parameter.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;vars.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__int__bound__t.html#o0">lower</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__int__bound__t.html#o1">upper</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+int_bound (range) parameter.
+<p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_int_bound_t::lower" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__int__bound__t.html#o0">stp_int_bound_t::lower</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Lower bound. </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_int_bound_t::upper" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__int__bound__t.html#o1">stp_int_bound_t::upper</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Upper bound. </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="vars_8h.html">vars.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__lineactive__t.html b/doc/gutenprint/html/structstp__lineactive__t.html
new file mode 100644
index 0000000..62ce653
--- /dev/null
+++ b/doc/gutenprint/html/structstp__lineactive__t.html
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_lineactive_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_lineactive_t Struct Reference</h1><!-- doxytag: class="stp_lineactive_t" --><code>#include &lt;weave.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__lineactive__t.html#o0">ncolors</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__lineactive__t.html#o1">v</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_lineactive_t::ncolors" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__lineactive__t.html#o0">stp_lineactive_t::ncolors</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_lineactive_t::v" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* <a class="el" href="structstp__lineactive__t.html#o1">stp_lineactive_t::v</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="weave_8h.html">weave.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__linebounds__t.html b/doc/gutenprint/html/structstp__linebounds__t.html
new file mode 100644
index 0000000..90b0eb8
--- /dev/null
+++ b/doc/gutenprint/html/structstp__linebounds__t.html
@@ -0,0 +1,96 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_linebounds_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_linebounds_t Struct Reference</h1><!-- doxytag: class="stp_linebounds_t" --><code>#include &lt;weave.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__linebounds__t.html#o0">ncolors</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__linebounds__t.html#o1">start_pos</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__linebounds__t.html#o2">end_pos</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_linebounds_t::end_pos" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int* <a class="el" href="structstp__linebounds__t.html#o2">stp_linebounds_t::end_pos</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_linebounds_t::ncolors" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__linebounds__t.html#o0">stp_linebounds_t::ncolors</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_linebounds_t::start_pos" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int* <a class="el" href="structstp__linebounds__t.html#o1">stp_linebounds_t::start_pos</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="weave_8h.html">weave.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__linebufs__t.html b/doc/gutenprint/html/structstp__linebufs__t.html
new file mode 100644
index 0000000..00ebfd8
--- /dev/null
+++ b/doc/gutenprint/html/structstp__linebufs__t.html
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_linebufs_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_linebufs_t Struct Reference</h1><!-- doxytag: class="stp_linebufs_t" --><code>#include &lt;weave.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__linebufs__t.html#o0">ncolors</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char **&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__linebufs__t.html#o1">v</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_linebufs_t::ncolors" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__linebufs__t.html#o0">stp_linebufs_t::ncolors</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_linebufs_t::v" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned char** <a class="el" href="structstp__linebufs__t.html#o1">stp_linebufs_t::v</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="weave_8h.html">weave.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__linecount__t.html b/doc/gutenprint/html/structstp__linecount__t.html
new file mode 100644
index 0000000..082d291
--- /dev/null
+++ b/doc/gutenprint/html/structstp__linecount__t.html
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_linecount_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_linecount_t Struct Reference</h1><!-- doxytag: class="stp_linecount_t" --><code>#include &lt;weave.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__linecount__t.html#o0">ncolors</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__linecount__t.html#o1">v</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_linecount_t::ncolors" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__linecount__t.html#o0">stp_linecount_t::ncolors</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_linecount_t::v" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int* <a class="el" href="structstp__linecount__t.html#o1">stp_linecount_t::v</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="weave_8h.html">weave.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__lineoff__t.html b/doc/gutenprint/html/structstp__lineoff__t.html
new file mode 100644
index 0000000..9366ead
--- /dev/null
+++ b/doc/gutenprint/html/structstp__lineoff__t.html
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_lineoff_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_lineoff_t Struct Reference</h1><!-- doxytag: class="stp_lineoff_t" --><code>#include &lt;weave.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__lineoff__t.html#o0">ncolors</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__lineoff__t.html#o1">v</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_lineoff_t::ncolors" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__lineoff__t.html#o0">stp_lineoff_t::ncolors</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_lineoff_t::v" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned long* <a class="el" href="structstp__lineoff__t.html#o1">stp_lineoff_t::v</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="weave_8h.html">weave.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__module.html b/doc/gutenprint/html/structstp__module.html
new file mode 100644
index 0000000..47ec90d
--- /dev/null
+++ b/doc/gutenprint/html/structstp__module.html
@@ -0,0 +1,221 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_module Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_module Struct Reference</h1><!-- doxytag: class="stp_module" --><code>#include &lt;module.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__module.html#o0">name</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__module.html#o1">version</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__module.html#o2">comment</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="module_8h.html#a13">stp_module_class_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__module.html#o3">class</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__module.html#o4">handle</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__module.html#o5">init</a> )(void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__module.html#o6">fini</a> )(void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__module.html#o7">syms</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o3"></a><!-- doxytag: member="stp_module::class" ref="o3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="module_8h.html#a13">stp_module_class_t</a> <a class="el" href="structstp__module.html#o3">stp_module::class</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_module::comment" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* <a class="el" href="structstp__module.html#o2">stp_module::comment</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o6"></a><!-- doxytag: member="stp_module::fini" ref="o6" args=")(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int(* <a class="el" href="structstp__module.html#o6">stp_module::fini</a>)(void) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="stp_module::handle" ref="o4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void* <a class="el" href="structstp__module.html#o4">stp_module::handle</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o5"></a><!-- doxytag: member="stp_module::init" ref="o5" args=")(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int(* <a class="el" href="structstp__module.html#o5">stp_module::init</a>)(void) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_module::name" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* <a class="el" href="structstp__module.html#o0">stp_module::name</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o7"></a><!-- doxytag: member="stp_module::syms" ref="o7" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void* <a class="el" href="structstp__module.html#o7">stp_module::syms</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_module::version" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* <a class="el" href="structstp__module.html#o1">stp_module::version</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="module_8h.html">module.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__module__version.html b/doc/gutenprint/html/structstp__module__version.html
new file mode 100644
index 0000000..57c1836
--- /dev/null
+++ b/doc/gutenprint/html/structstp__module__version.html
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_module_version Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_module_version Struct Reference</h1><!-- doxytag: class="stp_module_version" --><code>#include &lt;module.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__module__version.html#o0">major</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__module__version.html#o1">minor</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_module_version::major" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__module__version.html#o0">stp_module_version::major</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_module_version::minor" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__module__version.html#o1">stp_module_version::minor</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="module_8h.html">module.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__mxml__attr__s.html b/doc/gutenprint/html/structstp__mxml__attr__s.html
new file mode 100644
index 0000000..37c5b69
--- /dev/null
+++ b/doc/gutenprint/html/structstp__mxml__attr__s.html
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_mxml_attr_s Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_mxml_attr_s Struct Reference</h1><!-- doxytag: class="stp_mxml_attr_s" --><code>#include &lt;mxml.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__attr__s.html#o0">name</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__attr__s.html#o1">value</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_mxml_attr_s::name" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* <a class="el" href="structstp__mxml__attr__s.html#o0">stp_mxml_attr_s::name</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_mxml_attr_s::value" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* <a class="el" href="structstp__mxml__attr__s.html#o1">stp_mxml_attr_s::value</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="mxml_8h.html">mxml.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__mxml__node__s.html b/doc/gutenprint/html/structstp__mxml__node__s.html
new file mode 100644
index 0000000..efb3129
--- /dev/null
+++ b/doc/gutenprint/html/structstp__mxml__node__s.html
@@ -0,0 +1,196 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_mxml_node_s Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_mxml_node_s Struct Reference</h1><!-- doxytag: class="stp_mxml_node_s" --><code>#include &lt;mxml.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="mxml_8h.html#a14">stp_mxml_type_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__node__s.html#o0">type</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__node__s.html#o1">next</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__node__s.html#o2">prev</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__node__s.html#o3">parent</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__node__s.html#o4">child</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__node__s.html#o5">last_child</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="unionstp__mxml__value__u.html">stp_mxml_value_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__node__s.html#o6">value</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o4"></a><!-- doxytag: member="stp_mxml_node_s::child" ref="o4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* <a class="el" href="structstp__mxml__node__s.html#o4">stp_mxml_node_s::child</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o5"></a><!-- doxytag: member="stp_mxml_node_s::last_child" ref="o5" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* <a class="el" href="structstp__mxml__node__s.html#o5">stp_mxml_node_s::last_child</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_mxml_node_s::next" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* <a class="el" href="structstp__mxml__node__s.html#o1">stp_mxml_node_s::next</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="stp_mxml_node_s::parent" ref="o3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* <a class="el" href="structstp__mxml__node__s.html#o3">stp_mxml_node_s::parent</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_mxml_node_s::prev" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* <a class="el" href="structstp__mxml__node__s.html#o2">stp_mxml_node_s::prev</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_mxml_node_s::type" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="mxml_8h.html#a14">stp_mxml_type_t</a> <a class="el" href="structstp__mxml__node__s.html#o0">stp_mxml_node_s::type</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o6"></a><!-- doxytag: member="stp_mxml_node_s::value" ref="o6" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="unionstp__mxml__value__u.html">stp_mxml_value_t</a> <a class="el" href="structstp__mxml__node__s.html#o6">stp_mxml_node_s::value</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="mxml_8h.html">mxml.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__mxml__text__s.html b/doc/gutenprint/html/structstp__mxml__text__s.html
new file mode 100644
index 0000000..785445a
--- /dev/null
+++ b/doc/gutenprint/html/structstp__mxml__text__s.html
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_mxml_text_s Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_mxml_text_s Struct Reference</h1><!-- doxytag: class="stp_mxml_text_s" --><code>#include &lt;mxml.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__text__s.html#o0">whitespace</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__text__s.html#o1">string</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_mxml_text_s::string" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* <a class="el" href="structstp__mxml__text__s.html#o1">stp_mxml_text_s::string</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_mxml_text_s::whitespace" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__mxml__text__s.html#o0">stp_mxml_text_s::whitespace</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="mxml_8h.html">mxml.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__mxml__value__s.html b/doc/gutenprint/html/structstp__mxml__value__s.html
new file mode 100644
index 0000000..c4c8848
--- /dev/null
+++ b/doc/gutenprint/html/structstp__mxml__value__s.html
@@ -0,0 +1,96 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_mxml_value_s Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_mxml_value_s Struct Reference</h1><!-- doxytag: class="stp_mxml_value_s" --><code>#include &lt;mxml.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__value__s.html#o0">name</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__value__s.html#o1">num_attrs</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__attr__s.html">stp_mxml_attr_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__mxml__value__s.html#o2">attrs</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_mxml_value_s::attrs" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__attr__s.html">stp_mxml_attr_t</a>* <a class="el" href="structstp__mxml__value__s.html#o2">stp_mxml_value_s::attrs</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_mxml_value_s::name" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* <a class="el" href="structstp__mxml__value__s.html#o0">stp_mxml_value_s::name</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_mxml_value_s::num_attrs" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__mxml__value__s.html#o1">stp_mxml_value_s::num_attrs</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="mxml_8h.html">mxml.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__papersize__t.html b/doc/gutenprint/html/structstp__papersize__t.html
new file mode 100644
index 0000000..756152a
--- /dev/null
+++ b/doc/gutenprint/html/structstp__papersize__t.html
@@ -0,0 +1,310 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_papersize_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_papersize_t Struct Reference<br>
+<small>
+[<a class="el" href="group__papersize.html">papersize</a>]</small>
+</h1><!-- doxytag: class="stp_papersize_t" -->The papersize data type.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;paper.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__papersize__t.html#o0">name</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Short unique name (not translated). <a href="#o0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__papersize__t.html#o1">text</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Long descriptive name (translated). <a href="#o1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__papersize__t.html#o2">comment</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comment. <a href="#o2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__papersize__t.html#o3">width</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Paper width. <a href="#o3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__papersize__t.html#o4">height</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Paper height. <a href="#o4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__papersize__t.html#o5">top</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Top margin. <a href="#o5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__papersize__t.html#o6">left</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Left margin. <a href="#o6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__papersize__t.html#o7">bottom</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bottom margin. <a href="#o7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__papersize__t.html#o8">right</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Right margin. <a href="#o8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__papersize.html#ga5">stp_papersize_unit_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__papersize__t.html#o9">paper_unit</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Units of measurement. <a href="#o9"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The papersize data type.
+<p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o7"></a><!-- doxytag: member="stp_papersize_t::bottom" ref="o7" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned <a class="el" href="structstp__papersize__t.html#o7">stp_papersize_t::bottom</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Bottom margin.
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_papersize_t::comment" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* <a class="el" href="structstp__papersize__t.html#o2">stp_papersize_t::comment</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Comment.
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="stp_papersize_t::height" ref="o4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned <a class="el" href="structstp__papersize__t.html#o4">stp_papersize_t::height</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Paper height.
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o6"></a><!-- doxytag: member="stp_papersize_t::left" ref="o6" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned <a class="el" href="structstp__papersize__t.html#o6">stp_papersize_t::left</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Left margin.
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_papersize_t::name" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* <a class="el" href="structstp__papersize__t.html#o0">stp_papersize_t::name</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Short unique name (not translated).
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o9"></a><!-- doxytag: member="stp_papersize_t::paper_unit" ref="o9" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__papersize.html#ga5">stp_papersize_unit_t</a> <a class="el" href="structstp__papersize__t.html#o9">stp_papersize_t::paper_unit</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Units of measurement.
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o8"></a><!-- doxytag: member="stp_papersize_t::right" ref="o8" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned <a class="el" href="structstp__papersize__t.html#o8">stp_papersize_t::right</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Right margin.
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_papersize_t::text" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* <a class="el" href="structstp__papersize__t.html#o1">stp_papersize_t::text</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Long descriptive name (translated).
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o5"></a><!-- doxytag: member="stp_papersize_t::top" ref="o5" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned <a class="el" href="structstp__papersize__t.html#o5">stp_papersize_t::top</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Top margin.
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="stp_papersize_t::width" ref="o3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned <a class="el" href="structstp__papersize__t.html#o3">stp_papersize_t::width</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Paper width.
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="paper_8h.html">paper.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__param__string__t.html b/doc/gutenprint/html/structstp__param__string__t.html
new file mode 100644
index 0000000..917e17b
--- /dev/null
+++ b/doc/gutenprint/html/structstp__param__string__t.html
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_param_string_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_param_string_t Struct Reference</h1><!-- doxytag: class="stp_param_string_t" -->String parameter.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;string-list.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__param__string__t.html#o0">name</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__param__string__t.html#o1">text</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+String parameter.
+<p>
+Representation of a choice list of strings. The choices themselves consist of a key and a human-readable name. The list object is opaque.
+<p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_param_string_t::name" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* <a class="el" href="structstp__param__string__t.html#o0">stp_param_string_t::name</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Option name (key, untranslated). </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_param_string_t::text" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char * <a class="el" href="structstp__param__string__t.html#o1">stp_param_string_t::text</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Option name (key, untranslated). Human-readable (translated) text. </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="string-list_8h.html">string-list.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__parameter__t.html b/doc/gutenprint/html/structstp__parameter__t.html
new file mode 100644
index 0000000..885519d
--- /dev/null
+++ b/doc/gutenprint/html/structstp__parameter__t.html
@@ -0,0 +1,709 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_parameter_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_parameter_t Struct Reference<br>
+<small>
+[<a class="el" href="group__vars.html">vars</a>]</small>
+</h1><!-- doxytag: class="stp_parameter_t" -->Parameter description.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;vars.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__parameter__t.html#o0">name</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__parameter__t.html#o1">text</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__parameter__t.html#o2">category</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__parameter__t.html#o3">help</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga132">stp_parameter_type_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__parameter__t.html#o4">p_type</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga133">stp_parameter_class_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__parameter__t.html#o5">p_class</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga134">stp_parameter_level_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__parameter__t.html#o6">p_level</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__parameter__t.html#o7">is_mandatory</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__parameter__t.html#o8">is_active</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__parameter__t.html#o9">channel</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__parameter__t.html#o10">verify_this_parameter</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__parameter__t.html#o11">read_only</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap>union {</td></tr>
+
+<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structstp__parameter__t.html#o12">curve</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structstp__double__bound__t.html">stp_double_bound_t</a>&nbsp;&nbsp;&nbsp;<a class="el" href="structstp__parameter__t.html#o13">dbl</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structstp__int__bound__t.html">stp_int_bound_t</a>&nbsp;&nbsp;&nbsp;<a class="el" href="structstp__parameter__t.html#o14">integer</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structstp__int__bound__t.html">stp_int_bound_t</a>&nbsp;&nbsp;&nbsp;<a class="el" href="structstp__parameter__t.html#o15">dimension</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="string-list_8h.html#a0">stp_string_list_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structstp__parameter__t.html#o16">str</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structstp__parameter__t.html#o17">array</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__parameter__t.html#o18">bounds</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap>union {</td></tr>
+
+<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structstp__parameter__t.html#o19">curve</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;double&nbsp;&nbsp;&nbsp;<a class="el" href="structstp__parameter__t.html#o20">dbl</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structstp__parameter__t.html#o21">dimension</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structstp__parameter__t.html#o22">integer</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structstp__parameter__t.html#o23">boolean</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;const char *&nbsp;&nbsp;&nbsp;<a class="el" href="structstp__parameter__t.html#o24">str</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structstp__parameter__t.html#o25">array</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__parameter__t.html#o26">deflt</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Parameter description.
+<p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o25"></a><!-- doxytag: member="stp_parameter_t::array" ref="o25" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a>* <a class="el" href="structstp__parameter__t.html#o17">stp_parameter_t::array</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Default array parameter value. </td>
+ </tr>
+</table>
+<a class="anchor" name="o17"></a><!-- doxytag: member="stp_parameter_t::array" ref="o17" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a>* <a class="el" href="structstp__parameter__t.html#o17">stp_parameter_t::array</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+array parameter value. </td>
+ </tr>
+</table>
+<a class="anchor" name="o23"></a><!-- doxytag: member="stp_parameter_t::boolean" ref="o23" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__parameter__t.html#o23">stp_parameter_t::boolean</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Default boolean parameter value. </td>
+ </tr>
+</table>
+<a class="anchor" name="o18"></a><!-- doxytag: member="stp_parameter_t::bounds" ref="o18" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">union { ... } <a class="el" href="structstp__parameter__t.html#o18">stp_parameter_t::bounds</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Limits on the values the parameter may take. </td>
+ </tr>
+</table>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_parameter_t::category" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* <a class="el" href="structstp__parameter__t.html#o2">stp_parameter_t::category</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+User-visible category name. </td>
+ </tr>
+</table>
+<a class="anchor" name="o9"></a><!-- doxytag: member="stp_parameter_t::channel" ref="o9" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned char <a class="el" href="structstp__parameter__t.html#o9">stp_parameter_t::channel</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The channel to which this parameter applies </td>
+ </tr>
+</table>
+<a class="anchor" name="o19"></a><!-- doxytag: member="stp_parameter_t::curve" ref="o19" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* <a class="el" href="structstp__parameter__t.html#o12">stp_parameter_t::curve</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Default curve parameter value. </td>
+ </tr>
+</table>
+<a class="anchor" name="o12"></a><!-- doxytag: member="stp_parameter_t::curve" ref="o12" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* <a class="el" href="structstp__parameter__t.html#o12">stp_parameter_t::curve</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+curve parameter value. </td>
+ </tr>
+</table>
+<a class="anchor" name="o20"></a><!-- doxytag: member="stp_parameter_t::dbl" ref="o20" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double <a class="el" href="structstp__parameter__t.html#o13">stp_parameter_t::dbl</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Default double parameter value. </td>
+ </tr>
+</table>
+<a class="anchor" name="o13"></a><!-- doxytag: member="stp_parameter_t::dbl" ref="o13" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__double__bound__t.html">stp_double_bound_t</a> <a class="el" href="structstp__parameter__t.html#o13">stp_parameter_t::dbl</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+double_bound parameter value. </td>
+ </tr>
+</table>
+<a class="anchor" name="o26"></a><!-- doxytag: member="stp_parameter_t::deflt" ref="o26" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">union { ... } <a class="el" href="structstp__parameter__t.html#o26">stp_parameter_t::deflt</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Default value of the parameter. </td>
+ </tr>
+</table>
+<a class="anchor" name="o21"></a><!-- doxytag: member="stp_parameter_t::dimension" ref="o21" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__parameter__t.html#o15">stp_parameter_t::dimension</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Default dimension parameter value. </td>
+ </tr>
+</table>
+<a class="anchor" name="o15"></a><!-- doxytag: member="stp_parameter_t::dimension" ref="o15" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__int__bound__t.html">stp_int_bound_t</a> <a class="el" href="structstp__parameter__t.html#o15">stp_parameter_t::dimension</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+int_bound parameter value. </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="stp_parameter_t::help" ref="o3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* <a class="el" href="structstp__parameter__t.html#o3">stp_parameter_t::help</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Help string. </td>
+ </tr>
+</table>
+<a class="anchor" name="o22"></a><!-- doxytag: member="stp_parameter_t::integer" ref="o22" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__parameter__t.html#o14">stp_parameter_t::integer</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Default int parameter value. </td>
+ </tr>
+</table>
+<a class="anchor" name="o14"></a><!-- doxytag: member="stp_parameter_t::integer" ref="o14" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__int__bound__t.html">stp_int_bound_t</a> <a class="el" href="structstp__parameter__t.html#o14">stp_parameter_t::integer</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+int_bound parameter value. </td>
+ </tr>
+</table>
+<a class="anchor" name="o8"></a><!-- doxytag: member="stp_parameter_t::is_active" ref="o8" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned char <a class="el" href="structstp__parameter__t.html#o8">stp_parameter_t::is_active</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Is the parameter active? </td>
+ </tr>
+</table>
+<a class="anchor" name="o7"></a><!-- doxytag: member="stp_parameter_t::is_mandatory" ref="o7" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned char <a class="el" href="structstp__parameter__t.html#o7">stp_parameter_t::is_mandatory</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The parameter is required, even when set inactive. </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_parameter_t::name" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* <a class="el" href="structstp__parameter__t.html#o0">stp_parameter_t::name</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Internal name (key). </td>
+ </tr>
+</table>
+<a class="anchor" name="o5"></a><!-- doxytag: member="stp_parameter_t::p_class" ref="o5" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga133">stp_parameter_class_t</a> <a class="el" href="structstp__parameter__t.html#o5">stp_parameter_t::p_class</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Parameter class. </td>
+ </tr>
+</table>
+<a class="anchor" name="o6"></a><!-- doxytag: member="stp_parameter_t::p_level" ref="o6" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga134">stp_parameter_level_t</a> <a class="el" href="structstp__parameter__t.html#o6">stp_parameter_t::p_level</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Parameter level. </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="stp_parameter_t::p_type" ref="o4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga132">stp_parameter_type_t</a> <a class="el" href="structstp__parameter__t.html#o4">stp_parameter_t::p_type</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Parameter type. </td>
+ </tr>
+</table>
+<a class="anchor" name="o11"></a><!-- doxytag: member="stp_parameter_t::read_only" ref="o11" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned char <a class="el" href="structstp__parameter__t.html#o11">stp_parameter_t::read_only</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o24"></a><!-- doxytag: member="stp_parameter_t::str" ref="o24" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* <a class="el" href="structstp__parameter__t.html#o16">stp_parameter_t::str</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Default string parameter value. </td>
+ </tr>
+</table>
+<a class="anchor" name="o16"></a><!-- doxytag: member="stp_parameter_t::str" ref="o16" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="string-list_8h.html#a0">stp_string_list_t</a>* <a class="el" href="structstp__parameter__t.html#o16">stp_parameter_t::str</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+string_list parameter value. </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_parameter_t::text" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* <a class="el" href="structstp__parameter__t.html#o1">stp_parameter_t::text</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+User-visible name. </td>
+ </tr>
+</table>
+<a class="anchor" name="o10"></a><!-- doxytag: member="stp_parameter_t::verify_this_parameter" ref="o10" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned char <a class="el" href="structstp__parameter__t.html#o10">stp_parameter_t::verify_this_parameter</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Should the verify system check this parameter? </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="vars_8h.html">vars.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__pass__t.html b/doc/gutenprint/html/structstp__pass__t.html
new file mode 100644
index 0000000..3147848
--- /dev/null
+++ b/doc/gutenprint/html/structstp__pass__t.html
@@ -0,0 +1,171 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_pass_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_pass_t Struct Reference</h1><!-- doxytag: class="stp_pass_t" --><code>#include &lt;weave.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__pass__t.html#o0">pass</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__pass__t.html#o1">missingstartrows</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__pass__t.html#o2">logicalpassstart</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__pass__t.html#o3">physpassstart</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__pass__t.html#o4">physpassend</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__pass__t.html#o5">subpass</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_pass_t::logicalpassstart" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__pass__t.html#o2">stp_pass_t::logicalpassstart</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_pass_t::missingstartrows" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__pass__t.html#o1">stp_pass_t::missingstartrows</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_pass_t::pass" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__pass__t.html#o0">stp_pass_t::pass</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="stp_pass_t::physpassend" ref="o4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__pass__t.html#o4">stp_pass_t::physpassend</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="stp_pass_t::physpassstart" ref="o3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__pass__t.html#o3">stp_pass_t::physpassstart</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o5"></a><!-- doxytag: member="stp_pass_t::subpass" ref="o5" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__pass__t.html#o5">stp_pass_t::subpass</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="weave_8h.html">weave.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__printfuncs__t.html b/doc/gutenprint/html/structstp__printfuncs__t.html
new file mode 100644
index 0000000..ad1c517
--- /dev/null
+++ b/doc/gutenprint/html/structstp__printfuncs__t.html
@@ -0,0 +1,299 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_printfuncs_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_printfuncs_t Struct Reference<br>
+<small>
+[<a class="el" href="group__printer.html">printer</a>]</small>
+</h1><!-- doxytag: class="stp_printfuncs_t" --><code>#include &lt;printers.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__printfuncs__t.html#o0">list_parameters</a> )(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__printfuncs__t.html#o1">parameters</a> )(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name, <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__printfuncs__t.html#o2">media_size</a> )(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *width, int *height)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__printfuncs__t.html#o3">imageable_area</a> )(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *left, int *right, int *bottom, int *top)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__printfuncs__t.html#o4">limit</a> )(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *max_width, int *max_height, int *min_width, int *min_height)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__printfuncs__t.html#o5">print</a> )(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__printfuncs__t.html#o6">describe_resolution</a> )(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *x, int *y)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__printfuncs__t.html#o7">describe_output</a> )(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__printfuncs__t.html#o8">verify</a> )(<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__printfuncs__t.html#o9">start_job</a> )(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__printfuncs__t.html#o10">end_job</a> )(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image)</td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o7"></a><!-- doxytag: member="stp_printfuncs_t::describe_output" ref="o7" args=")(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char*(* <a class="el" href="structstp__printfuncs__t.html#o7">stp_printfuncs_t::describe_output</a>)(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o6"></a><!-- doxytag: member="stp_printfuncs_t::describe_resolution" ref="o6" args=")(const stp_vars_t *v, int *x, int *y)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="structstp__printfuncs__t.html#o6">stp_printfuncs_t::describe_resolution</a>)(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *x, int *y) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o10"></a><!-- doxytag: member="stp_printfuncs_t::end_job" ref="o10" args=")(const stp_vars_t *v, stp_image_t *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int(* <a class="el" href="structstp__printfuncs__t.html#o10">stp_printfuncs_t::end_job</a>)(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="stp_printfuncs_t::imageable_area" ref="o3" args=")(const stp_vars_t *v, int *left, int *right, int *bottom, int *top)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="structstp__printfuncs__t.html#o3">stp_printfuncs_t::imageable_area</a>)(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *left, int *right, int *bottom, int *top) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="stp_printfuncs_t::limit" ref="o4" args=")(const stp_vars_t *v, int *max_width, int *max_height, int *min_width, int *min_height)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="structstp__printfuncs__t.html#o4">stp_printfuncs_t::limit</a>)(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *max_width, int *max_height, int *min_width, int *min_height) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_printfuncs_t::list_parameters" ref="o0" args=")(const stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>(* <a class="el" href="structstp__printfuncs__t.html#o0">stp_printfuncs_t::list_parameters</a>)(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_printfuncs_t::media_size" ref="o2" args=")(const stp_vars_t *v, int *width, int *height)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="structstp__printfuncs__t.html#o2">stp_printfuncs_t::media_size</a>)(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *width, int *height) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_printfuncs_t::parameters" ref="o1" args=")(const stp_vars_t *v, const char *name, stp_parameter_t *)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="structstp__printfuncs__t.html#o1">stp_printfuncs_t::parameters</a>)(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name, <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o5"></a><!-- doxytag: member="stp_printfuncs_t::print" ref="o5" args=")(const stp_vars_t *v, stp_image_t *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int(* <a class="el" href="structstp__printfuncs__t.html#o5">stp_printfuncs_t::print</a>)(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o9"></a><!-- doxytag: member="stp_printfuncs_t::start_job" ref="o9" args=")(const stp_vars_t *v, stp_image_t *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int(* <a class="el" href="structstp__printfuncs__t.html#o9">stp_printfuncs_t::start_job</a>)(const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o8"></a><!-- doxytag: member="stp_printfuncs_t::verify" ref="o8" args=")(stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int(* <a class="el" href="structstp__printfuncs__t.html#o8">stp_printfuncs_t::verify</a>)(<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="printers_8h.html">printers.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__raw__t.html b/doc/gutenprint/html/structstp__raw__t.html
new file mode 100644
index 0000000..d07efa4
--- /dev/null
+++ b/doc/gutenprint/html/structstp__raw__t.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_raw_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_raw_t Struct Reference<br>
+<small>
+[<a class="el" href="group__vars.html">vars</a>]</small>
+</h1><!-- doxytag: class="stp_raw_t" -->Raw parameter.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;vars.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__raw__t.html#o0">bytes</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__raw__t.html#o1">data</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Raw parameter.
+<p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_raw_t::bytes" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">size_t <a class="el" href="structstp__raw__t.html#o0">stp_raw_t::bytes</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Size of data. </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_raw_t::data" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const void* <a class="el" href="structstp__raw__t.html#o1">stp_raw_t::data</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Raw data. </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="vars_8h.html">vars.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__shade.html b/doc/gutenprint/html/structstp__shade.html
new file mode 100644
index 0000000..13501e8
--- /dev/null
+++ b/doc/gutenprint/html/structstp__shade.html
@@ -0,0 +1,96 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_shade Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_shade Struct Reference</h1><!-- doxytag: class="stp_shade" --><code>#include &lt;dither.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__shade.html#o0">value</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__shade.html#o1">numsizes</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__dotsize.html">stp_dotsize_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__shade.html#o2">dot_sizes</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_shade::dot_sizes" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__dotsize.html">stp_dotsize_t</a>* <a class="el" href="structstp__shade.html#o2">stp_shade::dot_sizes</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_shade::numsizes" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__shade.html#o1">stp_shade::numsizes</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_shade::value" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double <a class="el" href="structstp__shade.html#o0">stp_shade::value</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="dither_8h.html">dither.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/structstp__weave__t.html b/doc/gutenprint/html/structstp__weave__t.html
new file mode 100644
index 0000000..a9bd84c
--- /dev/null
+++ b/doc/gutenprint/html/structstp__weave__t.html
@@ -0,0 +1,196 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_weave_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_weave_t Struct Reference</h1><!-- doxytag: class="stp_weave_t" --><code>#include &lt;weave.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__weave__t.html#o0">row</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__weave__t.html#o1">pass</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__weave__t.html#o2">jet</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__weave__t.html#o3">missingstartrows</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__weave__t.html#o4">logicalpassstart</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__weave__t.html#o5">physpassstart</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__weave__t.html#o6">physpassend</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_weave_t::jet" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__weave__t.html#o2">stp_weave_t::jet</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="stp_weave_t::logicalpassstart" ref="o4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__weave__t.html#o4">stp_weave_t::logicalpassstart</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="stp_weave_t::missingstartrows" ref="o3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__weave__t.html#o3">stp_weave_t::missingstartrows</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_weave_t::pass" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__weave__t.html#o1">stp_weave_t::pass</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o6"></a><!-- doxytag: member="stp_weave_t::physpassend" ref="o6" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__weave__t.html#o6">stp_weave_t::physpassend</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o5"></a><!-- doxytag: member="stp_weave_t::physpassstart" ref="o5" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__weave__t.html#o5">stp_weave_t::physpassstart</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_weave_t::row" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstp__weave__t.html#o0">stp_weave_t::row</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="weave_8h.html">weave.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/unionstp__mxml__value__u.html b/doc/gutenprint/html/unionstp__mxml__value__u.html
new file mode 100644
index 0000000..7c2cb48
--- /dev/null
+++ b/doc/gutenprint/html/unionstp__mxml__value__u.html
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: stp_mxml_value_u Union Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>stp_mxml_value_u Union Reference</h1><!-- doxytag: class="stp_mxml_value_u" --><code>#include &lt;mxml.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__value__s.html">stp_mxml_element_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionstp__mxml__value__u.html#o0">element</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionstp__mxml__value__u.html#o1">integer</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionstp__mxml__value__u.html#o2">opaque</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionstp__mxml__value__u.html#o3">real</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__text__s.html">stp_mxml_text_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionstp__mxml__value__u.html#o4">text</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stp_mxml_value_u::element" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__value__s.html">stp_mxml_element_t</a> <a class="el" href="unionstp__mxml__value__u.html#o0">stp_mxml_value_u::element</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stp_mxml_value_u::integer" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="unionstp__mxml__value__u.html#o1">stp_mxml_value_u::integer</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stp_mxml_value_u::opaque" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* <a class="el" href="unionstp__mxml__value__u.html#o2">stp_mxml_value_u::opaque</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="stp_mxml_value_u::real" ref="o3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double <a class="el" href="unionstp__mxml__value__u.html#o3">stp_mxml_value_u::real</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="stp_mxml_value_u::text" ref="o4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__text__s.html">stp_mxml_text_t</a> <a class="el" href="unionstp__mxml__value__u.html#o4">stp_mxml_value_u::text</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this union was generated from the following file:<ul>
+<li>include/gutenprint/<a class="el" href="mxml_8h.html">mxml.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/util_8h.html b/doc/gutenprint/html/util_8h.html
new file mode 100644
index 0000000..655f5ef
--- /dev/null
+++ b/doc/gutenprint/html/util_8h.html
@@ -0,0 +1,140 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/util.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>util.h File Reference</h1>Utility functions. <a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="curve_8h.html">gutenprint/curve.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="vars_8h.html">gutenprint/vars.h</a>&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga33">STP_DBG_LUT</a>&nbsp;&nbsp;&nbsp;0x1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga34">STP_DBG_COLORFUNC</a>&nbsp;&nbsp;&nbsp;0x2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga35">STP_DBG_INK</a>&nbsp;&nbsp;&nbsp;0x4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga36">STP_DBG_PS</a>&nbsp;&nbsp;&nbsp;0x8</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga37">STP_DBG_PCL</a>&nbsp;&nbsp;&nbsp;0x10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga38">STP_DBG_ESCP2</a>&nbsp;&nbsp;&nbsp;0x20</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga39">STP_DBG_CANON</a>&nbsp;&nbsp;&nbsp;0x40</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga40">STP_DBG_LEXMARK</a>&nbsp;&nbsp;&nbsp;0x80</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga41">STP_DBG_WEAVE_PARAMS</a>&nbsp;&nbsp;&nbsp;0x100</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga42">STP_DBG_ROWS</a>&nbsp;&nbsp;&nbsp;0x200</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga43">STP_DBG_MARK_FILE</a>&nbsp;&nbsp;&nbsp;0x400</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga44">STP_DBG_LIST</a>&nbsp;&nbsp;&nbsp;0x800</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga45">STP_DBG_MODULE</a>&nbsp;&nbsp;&nbsp;0x1000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga46">STP_DBG_PATH</a>&nbsp;&nbsp;&nbsp;0x2000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga47">STP_DBG_PAPER</a>&nbsp;&nbsp;&nbsp;0x4000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga48">STP_DBG_PRINTERS</a>&nbsp;&nbsp;&nbsp;0x8000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga49">STP_DBG_XML</a>&nbsp;&nbsp;&nbsp;0x10000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga50">STP_DBG_VARS</a>&nbsp;&nbsp;&nbsp;0x20000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga51">STP_DBG_OLYMPUS</a>&nbsp;&nbsp;&nbsp;0x40000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga52">STP_DBG_CURVE</a>&nbsp;&nbsp;&nbsp;0x80000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga53">STP_DBG_CURVE_ERRORS</a>&nbsp;&nbsp;&nbsp;0x100000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga54">STP_SAFE_FREE</a>(x)</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga0">stp_init</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialise libgimpprint. <a href="group__util.html#ga0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga1">stp_set_output_codeset</a> (const char *codeset)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the output encoding. <a href="group__util.html#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga2">stp_read_and_compose_curves</a> (const char *s1, const char *s2, <a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a> comp, size_t piecewise_point_count)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga3">stp_abort</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga4">stp_prune_inactive_options</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga5">stp_zprintf</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *format,...) __attribute__((format(__printf__</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga6">stp_zfwrite</a> (const char *buf, size_t bytes, size_t nitems, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga7">stp_putc</a> (int ch, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga8">stp_put16_le</a> (unsigned short sh, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga9">stp_put16_be</a> (unsigned short sh, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga10">stp_put32_le</a> (unsigned int sh, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga11">stp_put32_be</a> (unsigned int sh, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga12">stp_puts</a> (const char *s, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga13">stp_send_command</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *command, const char *format,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga14">stp_erputc</a> (int ch)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga15">stp_eprintf</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *format,...) __attribute__((format(__printf__</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga16">stp_erprintf</a> (const char *format,...) __attribute__((format(__printf__</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void void void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga17">stp_asprintf</a> (char **strp, const char *format,...) __attribute__((format(__printf__</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void void void void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga18">stp_catprintf</a> (char **strp, const char *format,...) __attribute__((format(__printf__</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga19">stp_get_debug_level</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga20">stp_dprintf</a> (unsigned long level, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *format,...) __attribute__((format(__printf__</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga21">stp_deprintf</a> (unsigned long level, const char *format,...) __attribute__((format(__printf__</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void void void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga22">stp_init_debug_messages</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga23">stp_flush_debug_messages</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga24">stp_malloc</a> (size_t)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga25">stp_zalloc</a> (size_t)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga26">stp_realloc</a> (void *ptr, size_t)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga27">stp_free</a> (void *ptr)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga28">stp_strlen</a> (const char *s)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga29">stp_strndup</a> (const char *s, int n)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga30">stp_strdup</a> (const char *s)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga31">stp_get_version</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the library version string (x.y.z). <a href="group__util.html#ga31"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga32">stp_get_release_version</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the library release version string (x.y). <a href="group__util.html#ga32"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Utility functions.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/vars_8h.html b/doc/gutenprint/html/vars_8h.html
new file mode 100644
index 0000000..df4b4ab
--- /dev/null
+++ b/doc/gutenprint/html/vars_8h.html
@@ -0,0 +1,477 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/vars.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>vars.h File Reference</h1>Print job functions. <a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="array_8h.html">gutenprint/array.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="curve_8h.html">gutenprint/curve.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="string-list_8h.html">gutenprint/string-list.h</a>&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__raw__t.html">stp_raw_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Raw parameter. <a href="structstp__raw__t.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__double__bound__t.html">stp_double_bound_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">double_bound (range) parameter. <a href="structstp__double__bound__t.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__int__bound__t.html">stp_int_bound_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">int_bound (range) parameter. <a href="structstp__int__bound__t.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__parameter__t.html">stp_parameter_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parameter description. <a href="structstp__parameter__t.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_vars&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga0">stp_vars_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The vars opaque data type. <a href="group__vars.html#ga0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The parameter_list opaque data type. <a href="group__vars.html#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef const void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The constant parameter_list opaque data type. <a href="group__vars.html#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga3">stp_outfunc_t</a> )(void *data, const char *buffer, size_t bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Output function supplied by the calling application. <a href="group__vars.html#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga4">stp_copy_data_func_t</a> )(void *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga5">stp_free_data_func_t</a> )(void *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_compdata&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga6">compdata_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga132">stp_parameter_type_t</a> { <br>
+&nbsp;&nbsp;<a class="el" href="group__vars.html#gga132a7">STP_PARAMETER_TYPE_STRING_LIST</a>,
+<a class="el" href="group__vars.html#gga132a8">STP_PARAMETER_TYPE_INT</a>,
+<a class="el" href="group__vars.html#gga132a9">STP_PARAMETER_TYPE_BOOLEAN</a>,
+<a class="el" href="group__vars.html#gga132a10">STP_PARAMETER_TYPE_DOUBLE</a>,
+<br>
+&nbsp;&nbsp;<a class="el" href="group__vars.html#gga132a11">STP_PARAMETER_TYPE_CURVE</a>,
+<a class="el" href="group__vars.html#gga132a12">STP_PARAMETER_TYPE_FILE</a>,
+<a class="el" href="group__vars.html#gga132a13">STP_PARAMETER_TYPE_RAW</a>,
+<a class="el" href="group__vars.html#gga132a14">STP_PARAMETER_TYPE_ARRAY</a>,
+<br>
+&nbsp;&nbsp;<a class="el" href="group__vars.html#gga132a15">STP_PARAMETER_TYPE_DIMENSION</a>,
+<a class="el" href="group__vars.html#gga132a16">STP_PARAMETER_TYPE_INVALID</a>
+<br>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parameter types. <a href="group__vars.html#ga132">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga133">stp_parameter_class_t</a> { <a class="el" href="group__vars.html#gga133a17">STP_PARAMETER_CLASS_FEATURE</a>,
+<a class="el" href="group__vars.html#gga133a18">STP_PARAMETER_CLASS_OUTPUT</a>,
+<a class="el" href="group__vars.html#gga133a19">STP_PARAMETER_CLASS_CORE</a>,
+<a class="el" href="group__vars.html#gga133a20">STP_PARAMETER_CLASS_INVALID</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parameter class. <a href="group__vars.html#ga133">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga134">stp_parameter_level_t</a> { <br>
+&nbsp;&nbsp;<a class="el" href="group__vars.html#gga134a21">STP_PARAMETER_LEVEL_BASIC</a>,
+<a class="el" href="group__vars.html#gga134a22">STP_PARAMETER_LEVEL_ADVANCED</a>,
+<a class="el" href="group__vars.html#gga134a23">STP_PARAMETER_LEVEL_ADVANCED1</a>,
+<a class="el" href="group__vars.html#gga134a24">STP_PARAMETER_LEVEL_ADVANCED2</a>,
+<br>
+&nbsp;&nbsp;<a class="el" href="group__vars.html#gga134a25">STP_PARAMETER_LEVEL_ADVANCED3</a>,
+<a class="el" href="group__vars.html#gga134a26">STP_PARAMETER_LEVEL_ADVANCED4</a>,
+<a class="el" href="group__vars.html#gga134a27">STP_PARAMETER_LEVEL_INTERNAL</a>,
+<a class="el" href="group__vars.html#gga134a28">STP_PARAMETER_LEVEL_EXTERNAL</a>,
+<br>
+&nbsp;&nbsp;<a class="el" href="group__vars.html#gga134a29">STP_PARAMETER_LEVEL_INVALID</a>
+<br>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parameter level. <a href="group__vars.html#ga134">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> { <a class="el" href="group__vars.html#gga135a30">STP_PARAMETER_INACTIVE</a>,
+<a class="el" href="group__vars.html#gga135a31">STP_PARAMETER_DEFAULTED</a>,
+<a class="el" href="group__vars.html#gga135a32">STP_PARAMETER_ACTIVE</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parameter activity. <a href="group__vars.html#ga135">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga136">stp_parameter_verify_t</a> { <a class="el" href="group__vars.html#gga136a33">PARAMETER_BAD</a>,
+<a class="el" href="group__vars.html#gga136a34">PARAMETER_OK</a>,
+<a class="el" href="group__vars.html#gga136a35">PARAMETER_INACTIVE</a>
+ }</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga7">stp_vars_create</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new vars object. <a href="group__vars.html#ga7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga8">stp_vars_copy</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *dest, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *source)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy a vars object. <a href="group__vars.html#ga8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga9">stp_vars_create_copy</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *source)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy and allocate a vars object. <a href="group__vars.html#ga9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga10">stp_vars_destroy</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a vars object. <a href="group__vars.html#ga10"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga11">stp_set_driver</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the name of the printer driver. <a href="group__vars.html#ga11"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga12">stp_set_driver_n</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *val, int bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the name of the printer driver. <a href="group__vars.html#ga12"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga13">stp_get_driver</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the name of the printer driver. <a href="group__vars.html#ga13"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga14">stp_set_color_conversion</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the name of the color conversion routine, if not the default. <a href="group__vars.html#ga14"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga15">stp_set_color_conversion_n</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *val, int bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the name of the color conversion routine, if not the default. <a href="group__vars.html#ga15"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga16">stp_get_color_conversion</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the name of the color conversion routine. <a href="group__vars.html#ga16"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga17">stp_set_left</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the left edge of the image. <a href="group__vars.html#ga17"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga18">stp_get_left</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the left edge of the image. <a href="group__vars.html#ga18"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga19">stp_set_top</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the top edge of the image. <a href="group__vars.html#ga19"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga20">stp_get_top</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the top edge of the image. <a href="group__vars.html#ga20"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga21">stp_set_width</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the width of the image. <a href="group__vars.html#ga21"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga22">stp_get_width</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the width edge of the image. <a href="group__vars.html#ga22"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga23">stp_set_height</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the height of the image. <a href="group__vars.html#ga23"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga24">stp_get_height</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the height of the image. <a href="group__vars.html#ga24"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga25">stp_set_page_width</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the page width. <a href="group__vars.html#ga25"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga26">stp_get_page_width</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the page width. <a href="group__vars.html#ga26"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga27">stp_set_page_height</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the page height. <a href="group__vars.html#ga27"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga28">stp_get_page_height</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the page height. <a href="group__vars.html#ga28"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga29">stp_set_outfunc</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="group__vars.html#ga3">stp_outfunc_t</a> val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the function used to print output information. <a href="group__vars.html#ga29"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga3">stp_outfunc_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga30">stp_get_outfunc</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the function used to print output information. <a href="group__vars.html#ga30"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga31">stp_set_errfunc</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, <a class="el" href="group__vars.html#ga3">stp_outfunc_t</a> val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the function used to print error and diagnostic information. <a href="group__vars.html#ga31"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga3">stp_outfunc_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga32">stp_get_errfunc</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the function used to print output information. <a href="group__vars.html#ga32"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga33">stp_set_outdata</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, void *val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the output data. <a href="group__vars.html#ga33"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga34">stp_get_outdata</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the output data. <a href="group__vars.html#ga34"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga35">stp_set_errdata</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, void *val)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the error data. <a href="group__vars.html#ga35"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga36">stp_get_errdata</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the error data. <a href="group__vars.html#ga36"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga37">stp_merge_printvars</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *user, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *print)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Merge defaults for a printer with user-chosen settings. <a href="group__vars.html#ga37"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga38">stp_get_parameter_list</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">List the available parameters for the currently chosen settings. <a href="group__vars.html#ga38"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga39">stp_parameter_list_count</a> (<a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a> list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">List the number of available parameters for the currently chosen settings. <a href="group__vars.html#ga39"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga40">stp_parameter_find</a> (<a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a> list, const char *name)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find a parameter by its name. <a href="group__vars.html#ga40"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga41">stp_parameter_list_param</a> (<a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a> list, size_t item)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find a parameter by its index number. <a href="group__vars.html#ga41"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga42">stp_parameter_list_destroy</a> (<a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a> list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a parameter_list. <a href="group__vars.html#ga42"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga43">stp_parameter_list_create</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a parameter_list. <a href="group__vars.html#ga43"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga44">stp_parameter_list_add_param</a> (<a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a> list, const <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *item)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a parameter to a parameter_list. <a href="group__vars.html#ga44"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga45">stp_parameter_list_copy</a> (<a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a> list)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy and allocate a parameter_list. <a href="group__vars.html#ga45"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga46">stp_parameter_list_append</a> (<a class="el" href="group__vars.html#ga1">stp_parameter_list_t</a> list, <a class="el" href="group__vars.html#ga2">stp_const_parameter_list_t</a> append)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Append one parameter_list to another. <a href="group__vars.html#ga46"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga47">stp_describe_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name, <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *description)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Describe a parameter in detail. <a href="group__vars.html#ga47"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga48">stp_parameter_description_destroy</a> (<a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *description)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a parameter description. <a href="group__vars.html#ga48"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga49">stp_parameter_find_in_settings</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find a parameter by its name from a vars object. <a href="group__vars.html#ga49"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga50">stp_set_string_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const char *value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a string parameter. <a href="group__vars.html#ga50"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga51">stp_set_string_parameter_n</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const char *value, size_t bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a string parameter. <a href="group__vars.html#ga51"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga52">stp_set_file_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const char *value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a file parameter. <a href="group__vars.html#ga52"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga53">stp_set_file_parameter_n</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const char *value, size_t bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a file parameter. <a href="group__vars.html#ga53"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga54">stp_set_float_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, double value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a float parameter. <a href="group__vars.html#ga54"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga55">stp_set_int_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, int value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set an integer parameter. <a href="group__vars.html#ga55"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga56">stp_set_dimension_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, int value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a dimension parameter. <a href="group__vars.html#ga56"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga57">stp_set_boolean_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, int value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a boolean parameter. <a href="group__vars.html#ga57"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga58">stp_set_curve_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a curve parameter. <a href="group__vars.html#ga58"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga59">stp_set_array_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const <a class="el" href="group__array.html#ga0">stp_array_t</a> *value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set an array parameter. <a href="group__vars.html#ga59"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga60">stp_set_raw_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const void *value, size_t bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a raw parameter. <a href="group__vars.html#ga60"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga61">stp_scale_float_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, double scale)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Multiply the value of a float parameter by a scaling factor. <a href="group__vars.html#ga61"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga62">stp_set_default_string_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const char *value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default string parameter. <a href="group__vars.html#ga62"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga63">stp_set_default_string_parameter_n</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const char *value, size_t bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default string parameter. <a href="group__vars.html#ga63"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga64">stp_set_default_file_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const char *value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default file parameter. <a href="group__vars.html#ga64"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga65">stp_set_default_file_parameter_n</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const char *value, size_t bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default file parameter. <a href="group__vars.html#ga65"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga66">stp_set_default_float_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, double value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default float parameter. <a href="group__vars.html#ga66"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga67">stp_set_default_int_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, int value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default integer parameter. <a href="group__vars.html#ga67"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga68">stp_set_default_dimension_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, int value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default dimension parameter. <a href="group__vars.html#ga68"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga69">stp_set_default_boolean_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, int value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default boolean parameter. <a href="group__vars.html#ga69"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga70">stp_set_default_curve_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default curve parameter. <a href="group__vars.html#ga70"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga71">stp_set_default_array_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const <a class="el" href="group__array.html#ga0">stp_array_t</a> *value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default array parameter. <a href="group__vars.html#ga71"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga72">stp_set_default_raw_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, const void *value, size_t bytes)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a default raw parameter. <a href="group__vars.html#ga72"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga73">stp_get_string_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a string parameter. <a href="group__vars.html#ga73"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga74">stp_get_file_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a file parameter. <a href="group__vars.html#ga74"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga75">stp_get_float_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a float parameter. <a href="group__vars.html#ga75"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga76">stp_get_int_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get an integer parameter. <a href="group__vars.html#ga76"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga77">stp_get_dimension_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a dimension parameter. <a href="group__vars.html#ga77"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga78">stp_get_boolean_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a boolean parameter. <a href="group__vars.html#ga78"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga79">stp_get_curve_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a curve parameter. <a href="group__vars.html#ga79"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga80">stp_get_array_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get an array parameter. <a href="group__vars.html#ga80"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__raw__t.html">stp_raw_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga81">stp_get_raw_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a raw parameter. <a href="group__vars.html#ga81"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga82">stp_clear_string_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a string parameter. <a href="group__vars.html#ga82"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga83">stp_clear_file_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a file parameter. <a href="group__vars.html#ga83"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga84">stp_clear_float_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear (remove) a float parameter. <a href="group__vars.html#ga84"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga85">stp_clear_int_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear (remove) an integer parameter. <a href="group__vars.html#ga85"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga86">stp_clear_dimension_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear (remove) a dimension parameter. <a href="group__vars.html#ga86"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga87">stp_clear_boolean_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear (remove) a boolean parameter. <a href="group__vars.html#ga87"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga88">stp_clear_curve_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a curve parameter. <a href="group__vars.html#ga88"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga89">stp_clear_array_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear an array parameter. <a href="group__vars.html#ga89"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga90">stp_clear_raw_parameter</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a raw parameter. <a href="group__vars.html#ga90"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga91">stp_set_string_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of a string parameter. <a href="group__vars.html#ga91"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga92">stp_set_file_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of a file parameter. <a href="group__vars.html#ga92"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga93">stp_set_float_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of a float parameter. <a href="group__vars.html#ga93"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga94">stp_set_int_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of an integer parameter. <a href="group__vars.html#ga94"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga95">stp_set_dimension_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of a dimension parameter. <a href="group__vars.html#ga95"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga96">stp_set_boolean_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of a boolean parameter. <a href="group__vars.html#ga96"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga97">stp_set_curve_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of a curveparameter. <a href="group__vars.html#ga97"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga98">stp_set_array_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of an array parameter. <a href="group__vars.html#ga98"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga99">stp_set_raw_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the activity of a raw parameter. <a href="group__vars.html#ga99"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga100">stp_check_string_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a string parameter is set. <a href="group__vars.html#ga100"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga101">stp_check_file_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a file parameter is set. <a href="group__vars.html#ga101"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga102">stp_check_float_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a float parameter is set. <a href="group__vars.html#ga102"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga103">stp_check_int_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if an integer parameter is set. <a href="group__vars.html#ga103"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga104">stp_check_dimension_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a dimension parameter is set. <a href="group__vars.html#ga104"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga105">stp_check_boolean_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a boolean parameter is set. <a href="group__vars.html#ga105"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga106">stp_check_curve_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a curve parameter is set. <a href="group__vars.html#ga106"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga107">stp_check_array_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if an array parameter is set. <a href="group__vars.html#ga107"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga108">stp_check_raw_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, <a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a> active)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a raw parameter is set. <a href="group__vars.html#ga108"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga109">stp_get_string_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of a string parameter. <a href="group__vars.html#ga109"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga110">stp_get_file_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of a file parameter. <a href="group__vars.html#ga110"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga111">stp_get_float_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of a float parameter. <a href="group__vars.html#ga111"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga112">stp_get_int_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of an integer parameter. <a href="group__vars.html#ga112"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga113">stp_get_dimension_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of a dimension parameter. <a href="group__vars.html#ga113"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga114">stp_get_boolean_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of a boolean parameter. <a href="group__vars.html#ga114"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga115">stp_get_curve_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of a curve parameter. <a href="group__vars.html#ga115"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga116">stp_get_array_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of an array parameter. <a href="group__vars.html#ga116"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga135">stp_parameter_activity_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga117">stp_get_raw_parameter_active</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the activity status of a raw parameter. <a href="group__vars.html#ga117"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga118">stp_get_media_size</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *width, int *height)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the media (paper) size. <a href="group__vars.html#ga118"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga119">stp_get_imageable_area</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *left, int *right, int *bottom, int *top)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the imagable area of the page. <a href="group__vars.html#ga119"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga120">stp_get_size_limit</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *max_width, int *max_height, int *min_width, int *min_height)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the media size limits. <a href="group__vars.html#ga120"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga121">stp_describe_resolution</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int *x, int *y)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the printing resolution of the selected resolution. <a href="group__vars.html#ga121"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga122">stp_verify</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Verify parameters. <a href="group__vars.html#ga122"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga123">stp_default_settings</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get default global settings. <a href="group__vars.html#ga123"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga124">stp_allocate_component_data</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name, <a class="el" href="group__vars.html#ga4">stp_copy_data_func_t</a> copyfunc, <a class="el" href="group__vars.html#ga5">stp_free_data_func_t</a> freefunc, void *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga125">stp_destroy_component_data</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga126">stp_get_component_data</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__vars.html#ga136">stp_parameter_verify_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga127">stp_verify_parameter</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const char *parameter, int quiet)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga128">stp_get_verified</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga129">stp_set_verified</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga130">stp_copy_options</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *vd, const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *vs)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vars.html#ga131">stp_fill_parameter_settings</a> (<a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *desc, const <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *param)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Print job functions.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/weave_8h.html b/doc/gutenprint/html/weave_8h.html
new file mode 100644
index 0000000..1d5a0ec
--- /dev/null
+++ b/doc/gutenprint/html/weave_8h.html
@@ -0,0 +1,822 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/weave.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>weave.h File Reference</h1>Softweave functions. <a href="#_details">More...</a>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__weave__t.html">stp_weave_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__pass__t.html">stp_pass_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__lineoff__t.html">stp_lineoff_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__lineactive__t.html">stp_lineactive_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__linecount__t.html">stp_linecount_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__linebufs__t.html">stp_linebufs_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__linebounds__t.html">stp_linebounds_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a0">STP_MAX_WEAVE</a>&nbsp;&nbsp;&nbsp;(16)</td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a1">stp_packfunc</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const unsigned char *line, int height, unsigned char *comp_buf, unsigned char **comp_ptr, int *first, int *last)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a2">stp_fillfunc</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int row, int subpass, int width, int missingstartrows, int color)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a3">stp_flushfunc</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int passno, int vertical_subpass)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a4">stp_compute_linewidth_func</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int n)</td></tr>
+
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a26">stp_weave_strategy_t</a> { <br>
+&nbsp;&nbsp;<a class="el" href="weave_8h.html#a26a11">STP_WEAVE_ZIGZAG</a>,
+<a class="el" href="weave_8h.html#a26a12">STP_WEAVE_ASCENDING</a>,
+<a class="el" href="weave_8h.html#a26a13">STP_WEAVE_DESCENDING</a>,
+<a class="el" href="weave_8h.html#a26a14">STP_WEAVE_ASCENDING_2X</a>,
+<br>
+&nbsp;&nbsp;<a class="el" href="weave_8h.html#a26a15">STP_WEAVE_STAGGERED</a>,
+<a class="el" href="weave_8h.html#a26a16">STP_WEAVE_ASCENDING_3X</a>
+<br>
+ }</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a17">stp_initialize_weave</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int jets, int separation, int oversample, int horizontal, int vertical, int ncolors, int bitwidth, int linewidth, int line_count, int first_line, int page_height, const int *head_offset, <a class="el" href="weave_8h.html#a26">stp_weave_strategy_t</a>, <a class="el" href="weave_8h.html#a3">stp_flushfunc</a>, <a class="el" href="weave_8h.html#a2">stp_fillfunc</a>, <a class="el" href="weave_8h.html#a1">stp_packfunc</a>, <a class="el" href="weave_8h.html#a4">stp_compute_linewidth_func</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a18">stp_flush_all</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a19">stp_write_weave</a> (<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, unsigned char *const cols[])</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__lineoff__t.html">stp_lineoff_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a20">stp_get_lineoffsets_by_pass</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int pass)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__lineactive__t.html">stp_lineactive_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a21">stp_get_lineactive_by_pass</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int pass)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__linecount__t.html">stp_linecount_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a22">stp_get_linecount_by_pass</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int pass)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__linebufs__t.html">stp_linebufs_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a23">stp_get_linebases_by_pass</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int pass)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__pass__t.html">stp_pass_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a24">stp_get_pass_by_pass</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int pass)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a25">stp_weave_parameters_by_row</a> (const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int row, int vertical_subpass, <a class="el" href="structstp__weave__t.html">stp_weave_t</a> *w)</td></tr>
+
+<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="weave_8h.html#a1">stp_packfunc</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a5">stp_pack_tiff</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="weave_8h.html#a1">stp_packfunc</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a6">stp_pack_uncompressed</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="weave_8h.html#a2">stp_fillfunc</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a7">stp_fill_tiff</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="weave_8h.html#a2">stp_fillfunc</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a8">stp_fill_uncompressed</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="weave_8h.html#a4">stp_compute_linewidth_func</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a9">stp_compute_tiff_linewidth</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="weave_8h.html#a4">stp_compute_linewidth_func</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="weave_8h.html#a10">stp_compute_uncompressed_linewidth</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Softweave functions.
+<p>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="a0"></a><!-- doxytag: member="weave.h::STP_MAX_WEAVE" ref="a0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STP_MAX_WEAVE&nbsp;&nbsp;&nbsp;(16) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="a4"></a><!-- doxytag: member="weave.h::stp_compute_linewidth_func" ref="a4" args="(stp_vars_t *v, int n)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef int <a class="el" href="weave_8h.html#a4">stp_compute_linewidth_func</a>(<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int n) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a2"></a><!-- doxytag: member="weave.h::stp_fillfunc" ref="a2" args="(stp_vars_t *v, int row, int subpass, int width, int missingstartrows, int color)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef void <a class="el" href="weave_8h.html#a2">stp_fillfunc</a>(<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int row, int subpass, int width, int missingstartrows, int color) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a3"></a><!-- doxytag: member="weave.h::stp_flushfunc" ref="a3" args="(stp_vars_t *v, int passno, int vertical_subpass)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef void <a class="el" href="weave_8h.html#a3">stp_flushfunc</a>(<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, int passno, int vertical_subpass) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a1"></a><!-- doxytag: member="weave.h::stp_packfunc" ref="a1" args="(stp_vars_t *v, const unsigned char *line, int height, unsigned char *comp_buf, unsigned char **comp_ptr, int *first, int *last)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef int <a class="el" href="weave_8h.html#a1">stp_packfunc</a>(<a class="el" href="group__vars.html#ga0">stp_vars_t</a> *v, const unsigned char *line, int height, unsigned char *comp_buf, unsigned char **comp_ptr, int *first, int *last) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Enumeration Type Documentation</h2>
+<a class="anchor" name="a26"></a><!-- doxytag: member="weave.h::stp_weave_strategy_t" ref="a26" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="weave_8h.html#a26">stp_weave_strategy_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="a26a11"></a><!-- doxytag: member="STP_WEAVE_ZIGZAG" ref="a26a11" args="" -->STP_WEAVE_ZIGZAG</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a26a12"></a><!-- doxytag: member="STP_WEAVE_ASCENDING" ref="a26a12" args="" -->STP_WEAVE_ASCENDING</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a26a13"></a><!-- doxytag: member="STP_WEAVE_DESCENDING" ref="a26a13" args="" -->STP_WEAVE_DESCENDING</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a26a14"></a><!-- doxytag: member="STP_WEAVE_ASCENDING_2X" ref="a26a14" args="" -->STP_WEAVE_ASCENDING_2X</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a26a15"></a><!-- doxytag: member="STP_WEAVE_STAGGERED" ref="a26a15" args="" -->STP_WEAVE_STAGGERED</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a26a16"></a><!-- doxytag: member="STP_WEAVE_ASCENDING_3X" ref="a26a16" args="" -->STP_WEAVE_ASCENDING_3X</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a18"></a><!-- doxytag: member="weave.h::stp_flush_all" ref="a18" args="(stp_vars_t *v)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_flush_all </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a21"></a><!-- doxytag: member="weave.h::stp_get_lineactive_by_pass" ref="a21" args="(const stp_vars_t *v, int pass)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__lineactive__t.html">stp_lineactive_t</a>* stp_get_lineactive_by_pass </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>pass</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a23"></a><!-- doxytag: member="weave.h::stp_get_linebases_by_pass" ref="a23" args="(const stp_vars_t *v, int pass)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__linebufs__t.html">stp_linebufs_t</a>* stp_get_linebases_by_pass </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>pass</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a22"></a><!-- doxytag: member="weave.h::stp_get_linecount_by_pass" ref="a22" args="(const stp_vars_t *v, int pass)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__linecount__t.html">stp_linecount_t</a>* stp_get_linecount_by_pass </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>pass</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a20"></a><!-- doxytag: member="weave.h::stp_get_lineoffsets_by_pass" ref="a20" args="(const stp_vars_t *v, int pass)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__lineoff__t.html">stp_lineoff_t</a>* stp_get_lineoffsets_by_pass </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>pass</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a24"></a><!-- doxytag: member="weave.h::stp_get_pass_by_pass" ref="a24" args="(const stp_vars_t *v, int pass)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__pass__t.html">stp_pass_t</a>* stp_get_pass_by_pass </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>pass</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a17"></a><!-- doxytag: member="weave.h::stp_initialize_weave" ref="a17" args="(stp_vars_t *v, int jets, int separation, int oversample, int horizontal, int vertical, int ncolors, int bitwidth, int linewidth, int line_count, int first_line, int page_height, const int *head_offset, stp_weave_strategy_t, stp_flushfunc, stp_fillfunc, stp_packfunc, stp_compute_linewidth_func)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_initialize_weave </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>jets</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>separation</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>oversample</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>horizontal</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>vertical</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>ncolors</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>bitwidth</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>linewidth</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>line_count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>first_line</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>page_height</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>head_offset</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="weave_8h.html#a26">stp_weave_strategy_t</a>&nbsp;</td>
+ <td class="mdname" nowrap>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="weave_8h.html#a3">stp_flushfunc</a>&nbsp;</td>
+ <td class="mdname" nowrap>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="weave_8h.html#a2">stp_fillfunc</a>&nbsp;</td>
+ <td class="mdname" nowrap>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="weave_8h.html#a1">stp_packfunc</a>&nbsp;</td>
+ <td class="mdname" nowrap>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="weave_8h.html#a4">stp_compute_linewidth_func</a>&nbsp;</td>
+ <td class="mdname" nowrap></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a25"></a><!-- doxytag: member="weave.h::stp_weave_parameters_by_row" ref="a25" args="(const stp_vars_t *v, int row, int vertical_subpass, stp_weave_t *w)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_weave_parameters_by_row </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>row</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>vertical_subpass</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstp__weave__t.html">stp_weave_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>w</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a19"></a><!-- doxytag: member="weave.h::stp_write_weave" ref="a19" args="(stp_vars_t *v, unsigned char *const cols[])" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_write_weave </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__vars.html#ga0">stp_vars_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>unsigned char *const &nbsp;</td>
+ <td class="mdname" nowrap> <em>cols</em>[]</td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Variable Documentation</h2>
+<a class="anchor" name="a9"></a><!-- doxytag: member="weave.h::stp_compute_tiff_linewidth" ref="a9" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="weave_8h.html#a4">stp_compute_linewidth_func</a> <a class="el" href="weave_8h.html#a9">stp_compute_tiff_linewidth</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a10"></a><!-- doxytag: member="weave.h::stp_compute_uncompressed_linewidth" ref="a10" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="weave_8h.html#a4">stp_compute_linewidth_func</a> <a class="el" href="weave_8h.html#a10">stp_compute_uncompressed_linewidth</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a7"></a><!-- doxytag: member="weave.h::stp_fill_tiff" ref="a7" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="weave_8h.html#a2">stp_fillfunc</a> <a class="el" href="weave_8h.html#a7">stp_fill_tiff</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a8"></a><!-- doxytag: member="weave.h::stp_fill_uncompressed" ref="a8" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="weave_8h.html#a2">stp_fillfunc</a> <a class="el" href="weave_8h.html#a8">stp_fill_uncompressed</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a5"></a><!-- doxytag: member="weave.h::stp_pack_tiff" ref="a5" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="weave_8h.html#a1">stp_packfunc</a> <a class="el" href="weave_8h.html#a5">stp_pack_tiff</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a6"></a><!-- doxytag: member="weave.h::stp_pack_uncompressed" ref="a6" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="weave_8h.html#a1">stp_packfunc</a> <a class="el" href="weave_8h.html#a6">stp_pack_uncompressed</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprint/html/xml_8h.html b/doc/gutenprint/html/xml_8h.html
new file mode 100644
index 0000000..374e47b
--- /dev/null
+++ b/doc/gutenprint/html/xml_8h.html
@@ -0,0 +1,700 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: include/gutenprint/xml.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprint</a></div>
+<h1>xml.h File Reference</h1>XML tree functions. <a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="mxml_8h.html">gutenprint/mxml.h</a>&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a0">stp_xml_parse_func</a> )(<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *node, const char *file)</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a1">stp_register_xml_parser</a> (const char *name, <a class="el" href="xml_8h.html#a0">stp_xml_parse_func</a> parse_func)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a2">stp_unregister_xml_parser</a> (const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a3">stp_register_xml_preload</a> (const char *filename)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a4">stp_unregister_xml_preload</a> (const char *filename)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a5">stp_xml_init_defaults</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a6">stp_xml_parse_file</a> (const char *file)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a7">stp_xmlstrtol</a> (const char *value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a8">stp_xmlstrtoul</a> (const char *value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a9">stp_xmlstrtod</a> (const char *textval)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a10">stp_xml_init</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a11">stp_xml_exit</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a12">stp_xml_get_node</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *xmlroot,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a13">stp_xmldoc_create_generic</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a14">stp_xml_preinit</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a15">stp_sequence_create_from_xmltree</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *da)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a16">stp_xmltree_create_from_sequence</a> (const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *seq)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a17">stp_curve_create_from_xmltree</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *da)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a18">stp_xmltree_create_from_curve</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a19">stp_array_create_from_xmltree</a> (<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *array)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a20">stp_xmltree_create_from_array</a> (const <a class="el" href="group__array.html#ga0">stp_array_t</a> *array)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xml_8h.html#a21">stp_xml_parse_file_named</a> (const char *name)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+XML tree functions.
+<p>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="a0"></a><!-- doxytag: member="xml.h::stp_xml_parse_func" ref="a0" args=")(stp_mxml_node_t *node, const char *file)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef int(* <a class="el" href="xml_8h.html#a0">stp_xml_parse_func</a>)(<a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *node, const char *file) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a19"></a><!-- doxytag: member="xml.h::stp_array_create_from_xmltree" ref="a19" args="(stp_mxml_node_t *array)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__array.html#ga0">stp_array_t</a>* stp_array_create_from_xmltree </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>array</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a17"></a><!-- doxytag: member="xml.h::stp_curve_create_from_xmltree" ref="a17" args="(stp_mxml_node_t *da)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_curve_create_from_xmltree </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>da</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a1"></a><!-- doxytag: member="xml.h::stp_register_xml_parser" ref="a1" args="(const char *name, stp_xml_parse_func parse_func)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_register_xml_parser </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="xml_8h.html#a0">stp_xml_parse_func</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>parse_func</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a3"></a><!-- doxytag: member="xml.h::stp_register_xml_preload" ref="a3" args="(const char *filename)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_register_xml_preload </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>filename</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a15"></a><!-- doxytag: member="xml.h::stp_sequence_create_from_xmltree" ref="a15" args="(stp_mxml_node_t *da)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__sequence.html#ga0">stp_sequence_t</a>* stp_sequence_create_from_xmltree </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>da</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a2"></a><!-- doxytag: member="xml.h::stp_unregister_xml_parser" ref="a2" args="(const char *name)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_unregister_xml_parser </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>name</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a4"></a><!-- doxytag: member="xml.h::stp_unregister_xml_preload" ref="a4" args="(const char *filename)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_unregister_xml_preload </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>filename</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a11"></a><!-- doxytag: member="xml.h::stp_xml_exit" ref="a11" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_xml_exit </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a12"></a><!-- doxytag: member="xml.h::stp_xml_get_node" ref="a12" args="(stp_mxml_node_t *xmlroot,...)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* stp_xml_get_node </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>xmlroot</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>&nbsp;</td>
+ <td class="mdname" nowrap> <em>...</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a10"></a><!-- doxytag: member="xml.h::stp_xml_init" ref="a10" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_xml_init </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a5"></a><!-- doxytag: member="xml.h::stp_xml_init_defaults" ref="a5" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_xml_init_defaults </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a6"></a><!-- doxytag: member="xml.h::stp_xml_parse_file" ref="a6" args="(const char *file)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_xml_parse_file </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>file</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a21"></a><!-- doxytag: member="xml.h::stp_xml_parse_file_named" ref="a21" args="(const char *name)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_xml_parse_file_named </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>name</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a14"></a><!-- doxytag: member="xml.h::stp_xml_preinit" ref="a14" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_xml_preinit </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a13"></a><!-- doxytag: member="xml.h::stp_xmldoc_create_generic" ref="a13" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* stp_xmldoc_create_generic </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a9"></a><!-- doxytag: member="xml.h::stp_xmlstrtod" ref="a9" args="(const char *textval)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double stp_xmlstrtod </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>textval</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a7"></a><!-- doxytag: member="xml.h::stp_xmlstrtol" ref="a7" args="(const char *value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">long stp_xmlstrtol </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>value</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a8"></a><!-- doxytag: member="xml.h::stp_xmlstrtoul" ref="a8" args="(const char *value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">unsigned long stp_xmlstrtoul </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>value</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a20"></a><!-- doxytag: member="xml.h::stp_xmltree_create_from_array" ref="a20" args="(const stp_array_t *array)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* stp_xmltree_create_from_array </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__array.html#ga0">stp_array_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>array</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a18"></a><!-- doxytag: member="xml.h::stp_xmltree_create_from_curve" ref="a18" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* stp_xmltree_create_from_curve </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a16"></a><!-- doxytag: member="xml.h::stp_xmltree_create_from_sequence" ref="a16" args="(const stp_sequence_t *seq)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_t</a>* stp_xmltree_create_from_sequence </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>seq</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:09 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2-stamp b/doc/gutenprintui2-stamp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/doc/gutenprintui2-stamp
diff --git a/doc/gutenprintui2.dox.in b/doc/gutenprintui2.dox.in
new file mode 100644
index 0000000..5761bef
--- /dev/null
+++ b/doc/gutenprintui2.dox.in
@@ -0,0 +1,1078 @@
+# Doxyfile 1.3.4
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = "libgutenprintui2 API Reference"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = @VERSION@
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = ./gutenprintui2
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch,
+# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en
+# (Japanese with English messages), Korean, Norwegian, Polish, Portuguese,
+# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE = English
+
+# This tag can be used to specify the encoding used in the generated output.
+# The encoding is not always determined by the language that is chosen,
+# but also whether or not the output is meant for Windows or non-Windows users.
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
+# forces the Windows encoding (this is the default for the Windows binary),
+# whereas setting the tag to NO uses a Unix-style encoding (the default for
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited
+# members of a class in the documentation of that class as if those members were
+# ordinary class members. Constructors, destructors and assignment operators of
+# the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. It is allowed to use relative paths in the argument list.
+
+STRIP_FROM_PATH = ../
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like the Qt-style comments (thus requiring an
+# explict @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF = YES
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member
+# documentation.
+
+DETAILS_AT_TOP = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# reimplements.
+
+INHERIT_DOCS = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources
+# only. Doxygen will then generate output that is more tailored for Java.
+# For instance, namespaces will be presented as packages, qualified scopes
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = YES
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text.
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = @top_srcdir@/include/gutenprintui2
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp
+# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc
+
+FILE_PATTERNS =
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE = @top_srcdir@/src/main/xmli18n-tmp.h
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories
+# that are symbolic links (a Unix filesystem feature) are excluded from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+
+EXCLUDE_PATTERNS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+
+INPUT_FILTER =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default)
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default)
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = YES
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output dir.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = YES
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimised for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assigments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader. This is useful
+# if you want to understand what is going on. On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse the
+# parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE = ./gutenprintui2/gutenprintui2.tag
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = @PERL@
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or
+# super classes. Setting the tag to NO turns the diagrams off. Note that this
+# option is superceded by the HAVE_DOT option below. This is only a fallback. It is
+# recommended to install and use dot, since it yields more powerful graphs.
+
+CLASS_DIAGRAMS = NO
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = NO
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = NO
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = NO
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similiar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = NO
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a call dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = NO
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found on the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_WIDTH = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes that
+# lay further from the root node will be omitted. Note that setting this option to
+# 1 or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that a graph may be further truncated if the graph's image dimensions are
+# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT).
+# If 0 is used for the depth value (the default), the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
diff --git a/doc/gutenprintui2/gutenprintui2.tag b/doc/gutenprintui2/gutenprintui2.tag
new file mode 100644
index 0000000..77ca577
--- /dev/null
+++ b/doc/gutenprintui2/gutenprintui2.tag
@@ -0,0 +1,1121 @@
+<?xml version='1.0' encoding='ISO-8859-1' standalone='yes' ?>
+<tagfile>
+ <compound kind="file">
+ <name>curve.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprintui2/</path>
+ <filename>curve_8h</filename>
+ <class kind="struct">_StpuiCurve</class>
+ <class kind="struct">_StpuiCurveClass</class>
+ <member kind="define">
+ <type>#define</type>
+ <name>STPUI_TYPE_CURVE</name>
+ <anchorfile>curve_8h.html</anchorfile>
+ <anchor>a0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STPUI_CURVE</name>
+ <anchorfile>curve_8h.html</anchorfile>
+ <anchor>a1</anchor>
+ <arglist>(obj)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STPUI_CURVE_CLASS</name>
+ <anchorfile>curve_8h.html</anchorfile>
+ <anchor>a2</anchor>
+ <arglist>(klass)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STPUI_IS_CURVE</name>
+ <anchorfile>curve_8h.html</anchorfile>
+ <anchor>a3</anchor>
+ <arglist>(obj)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STPUI_IS_CURVE_CLASS</name>
+ <anchorfile>curve_8h.html</anchorfile>
+ <anchor>a4</anchor>
+ <arglist>(klass)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STPUI_CURVE_GET_CLASS</name>
+ <anchorfile>curve_8h.html</anchorfile>
+ <anchor>a5</anchor>
+ <arglist>(obj)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>_StpuiCurve</type>
+ <name>StpuiCurve</name>
+ <anchorfile>curve_8h.html</anchorfile>
+ <anchor>a6</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>_StpuiCurveClass</type>
+ <name>StpuiCurveClass</name>
+ <anchorfile>curve_8h.html</anchorfile>
+ <anchor>a7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>StpuiCurveType</name>
+ <anchor>a19</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STPUI_CURVE_TYPE_LINEAR</name>
+ <anchor>a19a8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STPUI_CURVE_TYPE_SPLINE</name>
+ <anchor>a19a9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>STPUI_CURVE_TYPE_FREE</name>
+ <anchor>a19a10</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>GType</type>
+ <name>stpui_curve_get_type</name>
+ <anchorfile>curve_8h.html</anchorfile>
+ <anchor>a11</anchor>
+ <arglist>(void) G_GNUC_CONST</arglist>
+ </member>
+ <member kind="function">
+ <type>GtkWidget *</type>
+ <name>stpui_curve_new</name>
+ <anchorfile>curve_8h.html</anchorfile>
+ <anchor>a12</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_curve_reset</name>
+ <anchorfile>curve_8h.html</anchorfile>
+ <anchor>a13</anchor>
+ <arglist>(StpuiCurve *curve)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_curve_set_gamma</name>
+ <anchorfile>curve_8h.html</anchorfile>
+ <anchor>a14</anchor>
+ <arglist>(StpuiCurve *curve, gfloat gamma_)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_curve_set_range</name>
+ <anchorfile>curve_8h.html</anchorfile>
+ <anchor>a15</anchor>
+ <arglist>(StpuiCurve *curve, gfloat min_x, gfloat max_x, gfloat min_y, gfloat max_y)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_curve_get_vector</name>
+ <anchorfile>curve_8h.html</anchorfile>
+ <anchor>a16</anchor>
+ <arglist>(StpuiCurve *curve, int veclen, gfloat vector[])</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_curve_set_vector</name>
+ <anchorfile>curve_8h.html</anchorfile>
+ <anchor>a17</anchor>
+ <arglist>(StpuiCurve *curve, int veclen, const gfloat vector[])</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_curve_set_curve_type</name>
+ <anchorfile>curve_8h.html</anchorfile>
+ <anchor>a18</anchor>
+ <arglist>(StpuiCurve *curve, StpuiCurveType type)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>gammacurve.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprintui2/</path>
+ <filename>gammacurve_8h</filename>
+ <class kind="struct">_StpuiGammaCurve</class>
+ <class kind="struct">_StpuiGammaCurveClass</class>
+ <member kind="define">
+ <type>#define</type>
+ <name>STPUI_TYPE_GAMMA_CURVE</name>
+ <anchorfile>gammacurve_8h.html</anchorfile>
+ <anchor>a0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STPUI_GAMMA_CURVE</name>
+ <anchorfile>gammacurve_8h.html</anchorfile>
+ <anchor>a1</anchor>
+ <arglist>(obj)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STPUI_GAMMA_CURVE_CLASS</name>
+ <anchorfile>gammacurve_8h.html</anchorfile>
+ <anchor>a2</anchor>
+ <arglist>(klass)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STPUI_IS_GAMMA_CURVE</name>
+ <anchorfile>gammacurve_8h.html</anchorfile>
+ <anchor>a3</anchor>
+ <arglist>(obj)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STPUI_IS_GAMMA_CURVE_CLASS</name>
+ <anchorfile>gammacurve_8h.html</anchorfile>
+ <anchor>a4</anchor>
+ <arglist>(klass)</arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STPUI_GAMMA_CURVE_GET_CLASS</name>
+ <anchorfile>gammacurve_8h.html</anchorfile>
+ <anchor>a5</anchor>
+ <arglist>(obj)</arglist>
+ </member>
+ <member kind="typedef">
+ <type>_StpuiGammaCurve</type>
+ <name>StpuiGammaCurve</name>
+ <anchorfile>gammacurve_8h.html</anchorfile>
+ <anchor>a6</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>_StpuiGammaCurveClass</type>
+ <name>StpuiGammaCurveClass</name>
+ <anchorfile>gammacurve_8h.html</anchorfile>
+ <anchor>a7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>GType</type>
+ <name>stpui_gamma_curve_get_type</name>
+ <anchorfile>gammacurve_8h.html</anchorfile>
+ <anchor>a8</anchor>
+ <arglist>(void) G_GNUC_CONST</arglist>
+ </member>
+ <member kind="function">
+ <type>GtkWidget *</type>
+ <name>stpui_gamma_curve_new</name>
+ <anchorfile>gammacurve_8h.html</anchorfile>
+ <anchor>a9</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>gutenprintui.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprintui2/</path>
+ <filename>gutenprintui_8h</filename>
+ <includes id="curve_8h" name="curve.h" local="no" imported="no">gutenprintui2/curve.h</includes>
+ <includes id="gammacurve_8h" name="gammacurve.h" local="no" imported="no">gutenprintui2/gammacurve.h</includes>
+ <includes id="typebuiltins_8h" name="typebuiltins.h" local="no" imported="no">gutenprintui2/typebuiltins.h</includes>
+ <class kind="struct">stpui_plist_t</class>
+ <class kind="struct">stpui_image</class>
+ <member kind="typedef">
+ <type>stpui_image</type>
+ <name>stpui_image_t</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="typedef">
+ <type>guchar *(*</type>
+ <name>get_thumbnail_func_t</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a1</anchor>
+ <arglist>)(void *data, gint *width, gint *height, gint *bpp, gint page)</arglist>
+ </member>
+ <member kind="enumeration">
+ <name>orient_t</name>
+ <anchor>a62</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>ORIENT_AUTO</name>
+ <anchor>a62a2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>ORIENT_PORTRAIT</name>
+ <anchor>a62a3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>ORIENT_LANDSCAPE</name>
+ <anchor>a62a4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>ORIENT_UPSIDEDOWN</name>
+ <anchor>a62a5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>ORIENT_SEASCAPE</name>
+ <anchor>a62a6</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumeration">
+ <name>command_t</name>
+ <anchor>a63</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>COMMAND_TYPE_DEFAULT</name>
+ <anchor>a63a7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>COMMAND_TYPE_CUSTOM</name>
+ <anchor>a63a8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <name>COMMAND_TYPE_FILE</name>
+ <anchor>a63a9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_plist_set_name</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a10</anchor>
+ <arglist>(stpui_plist_t *p, const char *val)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_plist_set_name_n</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a11</anchor>
+ <arglist>(stpui_plist_t *p, const char *val, int n)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stpui_plist_get_name</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a12</anchor>
+ <arglist>(const stpui_plist_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_plist_set_queue_name</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a13</anchor>
+ <arglist>(stpui_plist_t *p, const char *val)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_plist_set_queue_name_n</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a14</anchor>
+ <arglist>(stpui_plist_t *p, const char *val, int n)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stpui_plist_get_queue_name</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a15</anchor>
+ <arglist>(const stpui_plist_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_plist_set_output_filename</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a16</anchor>
+ <arglist>(stpui_plist_t *p, const char *val)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_plist_set_output_filename_n</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a17</anchor>
+ <arglist>(stpui_plist_t *p, const char *val, int n)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stpui_plist_get_output_filename</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a18</anchor>
+ <arglist>(const stpui_plist_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_plist_set_extra_printer_options</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a19</anchor>
+ <arglist>(stpui_plist_t *p, const char *val)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_plist_set_extra_printer_options_n</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a20</anchor>
+ <arglist>(stpui_plist_t *p, const char *val, int n)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stpui_plist_get_extra_printer_options</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a21</anchor>
+ <arglist>(const stpui_plist_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_plist_set_custom_command</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a22</anchor>
+ <arglist>(stpui_plist_t *p, const char *val)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_plist_set_custom_command_n</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a23</anchor>
+ <arglist>(stpui_plist_t *p, const char *val, int n)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stpui_plist_get_custom_command</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a24</anchor>
+ <arglist>(const stpui_plist_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_plist_set_copy_count</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a25</anchor>
+ <arglist>(stpui_plist_t *p, gint count)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stpui_plist_get_copy_count</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a26</anchor>
+ <arglist>(const stpui_plist_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_plist_set_current_standard_command</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a27</anchor>
+ <arglist>(stpui_plist_t *p, const char *val)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_plist_set_current_standard_command_n</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a28</anchor>
+ <arglist>(stpui_plist_t *p, const char *val, int n)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stpui_plist_get_current_standard_command</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a29</anchor>
+ <arglist>(const stpui_plist_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_plist_set_command_type</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a30</anchor>
+ <arglist>(stpui_plist_t *p, command_t val)</arglist>
+ </member>
+ <member kind="function">
+ <type>command_t</type>
+ <name>stpui_plist_get_command_type</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a31</anchor>
+ <arglist>(const stpui_plist_t *p)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_set_global_parameter</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a32</anchor>
+ <arglist>(const char *param, const char *value)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stpui_get_global_parameter</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a33</anchor>
+ <arglist>(const char *param)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_plist_copy</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a34</anchor>
+ <arglist>(stpui_plist_t *vd, const stpui_plist_t *vs)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stpui_plist_add</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a35</anchor>
+ <arglist>(const stpui_plist_t *key, int add_only)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_printer_initialize</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a36</anchor>
+ <arglist>(stpui_plist_t *printer)</arglist>
+ </member>
+ <member kind="function">
+ <type>const stpui_plist_t *</type>
+ <name>stpui_get_current_printer</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a37</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>char *</type>
+ <name>stpui_build_standard_print_command</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a38</anchor>
+ <arglist>(const stpui_plist_t *plist, const stp_printer_t *printer)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_set_printrc_file</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a39</anchor>
+ <arglist>(const char *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stpui_get_printrc_file</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a40</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_printrc_load</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a41</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_get_system_printers</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a42</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_printrc_save</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a43</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_set_image_filename</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a44</anchor>
+ <arglist>(const char *)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>stpui_get_image_filename</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a45</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_set_errfunc</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a46</anchor>
+ <arglist>(stp_outfunc_t wfunc)</arglist>
+ </member>
+ <member kind="function">
+ <type>stp_outfunc_t</type>
+ <name>stpui_get_errfunc</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a47</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_set_errdata</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a48</anchor>
+ <arglist>(void *errdata)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>stpui_get_errdata</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a49</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>gint</type>
+ <name>stpui_do_print_dialog</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a50</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>gint</type>
+ <name>stpui_compute_orientation</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a51</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_set_image_dimensions</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a52</anchor>
+ <arglist>(gint width, gint height)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_set_image_resolution</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a53</anchor>
+ <arglist>(gdouble xres, gdouble yres)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_set_image_type</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a54</anchor>
+ <arglist>(const char *image_type)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_set_image_raw_channels</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a55</anchor>
+ <arglist>(gint channels)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_set_image_channel_depth</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a56</anchor>
+ <arglist>(gint bit_depth)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_set_thumbnail_func</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a57</anchor>
+ <arglist>(get_thumbnail_func_t)</arglist>
+ </member>
+ <member kind="function">
+ <type>get_thumbnail_func_t</type>
+ <name>stpui_get_thumbnail_func</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a58</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>stpui_set_thumbnail_data</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a59</anchor>
+ <arglist>(void *)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>stpui_get_thumbnail_data</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a60</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>stpui_print</name>
+ <anchorfile>gutenprintui_8h.html</anchorfile>
+ <anchor>a61</anchor>
+ <arglist>(const stpui_plist_t *printer, stpui_image_t *im)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>typebuiltins.h</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprintui2/</path>
+ <filename>typebuiltins_8h</filename>
+ <member kind="define">
+ <type>#define</type>
+ <name>STPUI_TYPE_ORIENT_T</name>
+ <anchorfile>typebuiltins_8h.html</anchorfile>
+ <anchor>a0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STPUI_TYPE_COMMAND_T</name>
+ <anchorfile>typebuiltins_8h.html</anchorfile>
+ <anchor>a1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>STPUI_TYPE_CURVE_TYPE</name>
+ <anchorfile>typebuiltins_8h.html</anchorfile>
+ <anchor>a2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>G_BEGIN_DECLS GType</type>
+ <name>orient_t_orient_t_get_type</name>
+ <anchorfile>typebuiltins_8h.html</anchorfile>
+ <anchor>a3</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>GType</type>
+ <name>command_t_command_t_get_type</name>
+ <anchorfile>typebuiltins_8h.html</anchorfile>
+ <anchor>a4</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>GType</type>
+ <name>stpui_curve_type_get_type</name>
+ <anchorfile>typebuiltins_8h.html</anchorfile>
+ <anchor>a5</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>_StpuiCurve</name>
+ <filename>struct__StpuiCurve.html</filename>
+ <member kind="variable">
+ <type>GtkDrawingArea</type>
+ <name>graph</name>
+ <anchorfile>struct__StpuiCurve.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>gint</type>
+ <name>cursor_type</name>
+ <anchorfile>struct__StpuiCurve.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>gfloat</type>
+ <name>min_x</name>
+ <anchorfile>struct__StpuiCurve.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>gfloat</type>
+ <name>max_x</name>
+ <anchorfile>struct__StpuiCurve.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>gfloat</type>
+ <name>min_y</name>
+ <anchorfile>struct__StpuiCurve.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>gfloat</type>
+ <name>max_y</name>
+ <anchorfile>struct__StpuiCurve.html</anchorfile>
+ <anchor>o5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>GdkPixmap *</type>
+ <name>pixmap</name>
+ <anchorfile>struct__StpuiCurve.html</anchorfile>
+ <anchor>o6</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>StpuiCurveType</type>
+ <name>curve_type</name>
+ <anchorfile>struct__StpuiCurve.html</anchorfile>
+ <anchor>o7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>gint</type>
+ <name>height</name>
+ <anchorfile>struct__StpuiCurve.html</anchorfile>
+ <anchor>o8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>gint</type>
+ <name>grab_point</name>
+ <anchorfile>struct__StpuiCurve.html</anchorfile>
+ <anchor>o9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>gint</type>
+ <name>last</name>
+ <anchorfile>struct__StpuiCurve.html</anchorfile>
+ <anchor>o10</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>gint</type>
+ <name>num_points</name>
+ <anchorfile>struct__StpuiCurve.html</anchorfile>
+ <anchor>o11</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>GdkPoint *</type>
+ <name>point</name>
+ <anchorfile>struct__StpuiCurve.html</anchorfile>
+ <anchor>o12</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>gint</type>
+ <name>num_ctlpoints</name>
+ <anchorfile>struct__StpuiCurve.html</anchorfile>
+ <anchor>o13</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>gfloat(*</type>
+ <name>ctlpoint</name>
+ <anchorfile>struct__StpuiCurve.html</anchorfile>
+ <anchor>o14</anchor>
+ <arglist>)[2]</arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>_StpuiCurveClass</name>
+ <filename>struct__StpuiCurveClass.html</filename>
+ <member kind="variable">
+ <type>GtkDrawingAreaClass</type>
+ <name>parent_class</name>
+ <anchorfile>struct__StpuiCurveClass.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>curve_type_changed</name>
+ <anchorfile>struct__StpuiCurveClass.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist>)(StpuiCurve *curve)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>_gtk_reserved1</name>
+ <anchorfile>struct__StpuiCurveClass.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist>)(void)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>_gtk_reserved2</name>
+ <anchorfile>struct__StpuiCurveClass.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist>)(void)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>_gtk_reserved3</name>
+ <anchorfile>struct__StpuiCurveClass.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist>)(void)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>_gtk_reserved4</name>
+ <anchorfile>struct__StpuiCurveClass.html</anchorfile>
+ <anchor>o5</anchor>
+ <arglist>)(void)</arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>_StpuiGammaCurve</name>
+ <filename>struct__StpuiGammaCurve.html</filename>
+ <member kind="variable">
+ <type>GtkVBox</type>
+ <name>vbox</name>
+ <anchorfile>struct__StpuiGammaCurve.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>GtkWidget *</type>
+ <name>table</name>
+ <anchorfile>struct__StpuiGammaCurve.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>GtkWidget *</type>
+ <name>curve</name>
+ <anchorfile>struct__StpuiGammaCurve.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>GtkWidget *</type>
+ <name>button</name>
+ <anchorfile>struct__StpuiGammaCurve.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist>[5]</arglist>
+ </member>
+ <member kind="variable">
+ <type>gfloat</type>
+ <name>gamma</name>
+ <anchorfile>struct__StpuiGammaCurve.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>GtkWidget *</type>
+ <name>gamma_dialog</name>
+ <anchorfile>struct__StpuiGammaCurve.html</anchorfile>
+ <anchor>o5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>GtkWidget *</type>
+ <name>gamma_text</name>
+ <anchorfile>struct__StpuiGammaCurve.html</anchorfile>
+ <anchor>o6</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>_StpuiGammaCurveClass</name>
+ <filename>struct__StpuiGammaCurveClass.html</filename>
+ <member kind="variable">
+ <type>GtkVBoxClass</type>
+ <name>parent_class</name>
+ <anchorfile>struct__StpuiGammaCurveClass.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>_gtk_reserved1</name>
+ <anchorfile>struct__StpuiGammaCurveClass.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist>)(void)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>_gtk_reserved2</name>
+ <anchorfile>struct__StpuiGammaCurveClass.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist>)(void)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>_gtk_reserved3</name>
+ <anchorfile>struct__StpuiGammaCurveClass.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist>)(void)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>_gtk_reserved4</name>
+ <anchorfile>struct__StpuiGammaCurveClass.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist>)(void)</arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stpui_image</name>
+ <filename>structstpui__image.html</filename>
+ <member kind="variable">
+ <type>stp_image_t</type>
+ <name>im</name>
+ <anchorfile>structstpui__image.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>transpose</name>
+ <anchorfile>structstpui__image.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist>)(struct stpui_image *image)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>hflip</name>
+ <anchorfile>structstpui__image.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist>)(struct stpui_image *image)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>vflip</name>
+ <anchorfile>structstpui__image.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist>)(struct stpui_image *image)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>rotate_ccw</name>
+ <anchorfile>structstpui__image.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist>)(struct stpui_image *image)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>rotate_cw</name>
+ <anchorfile>structstpui__image.html</anchorfile>
+ <anchor>o5</anchor>
+ <arglist>)(struct stpui_image *image)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>rotate_180</name>
+ <anchorfile>structstpui__image.html</anchorfile>
+ <anchor>o6</anchor>
+ <arglist>)(struct stpui_image *image)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>crop</name>
+ <anchorfile>structstpui__image.html</anchorfile>
+ <anchor>o7</anchor>
+ <arglist>)(struct stpui_image *image, int left, int top, int right, int bottom)</arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>stpui_plist_t</name>
+ <filename>structstpui__plist__t.html</filename>
+ <member kind="variable">
+ <type>char *</type>
+ <name>name</name>
+ <anchorfile>structstpui__plist__t.html</anchorfile>
+ <anchor>o0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>command_t</type>
+ <name>command_type</name>
+ <anchorfile>structstpui__plist__t.html</anchorfile>
+ <anchor>o1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>char *</type>
+ <name>queue_name</name>
+ <anchorfile>structstpui__plist__t.html</anchorfile>
+ <anchor>o2</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>char *</type>
+ <name>extra_printer_options</name>
+ <anchorfile>structstpui__plist__t.html</anchorfile>
+ <anchor>o3</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>char *</type>
+ <name>custom_command</name>
+ <anchorfile>structstpui__plist__t.html</anchorfile>
+ <anchor>o4</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>char *</type>
+ <name>current_standard_command</name>
+ <anchorfile>structstpui__plist__t.html</anchorfile>
+ <anchor>o5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>char *</type>
+ <name>output_filename</name>
+ <anchorfile>structstpui__plist__t.html</anchorfile>
+ <anchor>o6</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>float</type>
+ <name>scaling</name>
+ <anchorfile>structstpui__plist__t.html</anchorfile>
+ <anchor>o7</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>orient_t</type>
+ <name>orientation</name>
+ <anchorfile>structstpui__plist__t.html</anchorfile>
+ <anchor>o8</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>unit</name>
+ <anchorfile>structstpui__plist__t.html</anchorfile>
+ <anchor>o9</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>auto_size_roll_feed_paper</name>
+ <anchorfile>structstpui__plist__t.html</anchorfile>
+ <anchor>o10</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>int</type>
+ <name>invalid_mask</name>
+ <anchorfile>structstpui__plist__t.html</anchorfile>
+ <anchor>o11</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>stp_vars_t *</type>
+ <name>v</name>
+ <anchorfile>structstpui__plist__t.html</anchorfile>
+ <anchor>o12</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="dir">
+ <name>include/gutenprintui2/</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/gutenprintui2/</path>
+ <filename>dir_000001.html</filename>
+ <file>curve.h</file>
+ <file>gammacurve.h</file>
+ <file>gutenprintui.h</file>
+ <file>typebuiltins.h</file>
+ </compound>
+ <compound kind="dir">
+ <name>include/</name>
+ <path>/home/rleigh/gutenprint-5.0.0-rc1/include/</path>
+ <filename>dir_000000.html</filename>
+ <dir>include/gutenprintui2/</dir>
+ </compound>
+</tagfile>
diff --git a/doc/gutenprintui2/html/annotated.html b/doc/gutenprintui2/html/annotated.html
new file mode 100644
index 0000000..7a75739
--- /dev/null
+++ b/doc/gutenprintui2/html/annotated.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: Data Structures</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindexHL" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libgutenprintui2 API Reference Data Structures</h1>Here are the data structures with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="struct__StpuiCurve.html">_StpuiCurve</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="struct__StpuiCurveClass.html">_StpuiCurveClass</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="struct__StpuiGammaCurve.html">_StpuiGammaCurve</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="struct__StpuiGammaCurveClass.html">_StpuiGammaCurveClass</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstpui__image.html">stpui_image</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a></td><td class="indexvalue"></td></tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/classes.html b/doc/gutenprintui2/html/classes.html
new file mode 100644
index 0000000..2ce1ae7
--- /dev/null
+++ b/doc/gutenprintui2/html/classes.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: Alphabetical List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindexHL" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libgutenprintui2 API Reference Data Structure Index</h1><p><div class="qindex"><a class="qindex" href="#letter__">_</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a></div><p>
+<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
+<tr><td><a name="letter__"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;_&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="struct__StpuiCurveClass.html">_StpuiCurveClass</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__StpuiGammaCurveClass.html">_StpuiGammaCurveClass</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstpui__image.html">stpui_image</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="struct__StpuiCurve.html">_StpuiCurve</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__StpuiGammaCurve.html">_StpuiGammaCurve</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;S&nbsp;&nbsp;</div></td></tr></table>
+</td></tr></table><p><div class="qindex"><a class="qindex" href="#letter__">_</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a></div><p>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/curve_8h.html b/doc/gutenprintui2/html/curve_8h.html
new file mode 100644
index 0000000..f9db692
--- /dev/null
+++ b/doc/gutenprintui2/html/curve_8h.html
@@ -0,0 +1,610 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: include/gutenprintui2/curve.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprintui2</a></div>
+<h1>curve.h File Reference</h1><code>#include &lt;gdk/gdk.h&gt;</code><br>
+<code>#include &lt;gtk/gtkdrawingarea.h&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurve.html">_StpuiCurve</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurveClass.html">_StpuiCurveClass</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a0">STPUI_TYPE_CURVE</a>&nbsp;&nbsp;&nbsp;(stpui_curve_get_type ())</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a1">STPUI_CURVE</a>(obj)&nbsp;&nbsp;&nbsp;(G_TYPE_CHECK_INSTANCE_CAST ((obj), STPUI_TYPE_CURVE, <a class="el" href="struct__StpuiCurve.html">StpuiCurve</a>))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a2">STPUI_CURVE_CLASS</a>(klass)&nbsp;&nbsp;&nbsp;(G_TYPE_CHECK_CLASS_CAST ((klass), STPUI_TYPE_CURVE, <a class="el" href="struct__StpuiCurveClass.html">StpuiCurveClass</a>))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a3">STPUI_IS_CURVE</a>(obj)&nbsp;&nbsp;&nbsp;(G_TYPE_CHECK_INSTANCE_TYPE ((obj), STPUI_TYPE_CURVE))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a4">STPUI_IS_CURVE_CLASS</a>(klass)&nbsp;&nbsp;&nbsp;(G_TYPE_CHECK_CLASS_TYPE ((klass), STPUI_TYPE_CURVE))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a5">STPUI_CURVE_GET_CLASS</a>(obj)&nbsp;&nbsp;&nbsp;(G_TYPE_INSTANCE_GET_CLASS ((obj), STPUI_TYPE_CURVE, <a class="el" href="struct__StpuiCurveClass.html">StpuiCurveClass</a>))</td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="struct__StpuiCurve.html">_StpuiCurve</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a6">StpuiCurve</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="struct__StpuiCurveClass.html">_StpuiCurveClass</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a7">StpuiCurveClass</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a19">StpuiCurveType</a> { <a class="el" href="curve_8h.html#a19a8">STPUI_CURVE_TYPE_LINEAR</a>,
+<a class="el" href="curve_8h.html#a19a9">STPUI_CURVE_TYPE_SPLINE</a>,
+<a class="el" href="curve_8h.html#a19a10">STPUI_CURVE_TYPE_FREE</a>
+ }</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GType&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a11">stpui_curve_get_type</a> (void) G_GNUC_CONST</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GtkWidget *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a12">stpui_curve_new</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a13">stpui_curve_reset</a> (<a class="el" href="struct__StpuiCurve.html">StpuiCurve</a> *curve)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a14">stpui_curve_set_gamma</a> (<a class="el" href="struct__StpuiCurve.html">StpuiCurve</a> *curve, gfloat gamma_)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a15">stpui_curve_set_range</a> (<a class="el" href="struct__StpuiCurve.html">StpuiCurve</a> *curve, gfloat min_x, gfloat max_x, gfloat min_y, gfloat max_y)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a16">stpui_curve_get_vector</a> (<a class="el" href="struct__StpuiCurve.html">StpuiCurve</a> *curve, int veclen, gfloat vector[])</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a17">stpui_curve_set_vector</a> (<a class="el" href="struct__StpuiCurve.html">StpuiCurve</a> *curve, int veclen, const gfloat vector[])</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html#a18">stpui_curve_set_curve_type</a> (<a class="el" href="struct__StpuiCurve.html">StpuiCurve</a> *curve, <a class="el" href="curve_8h.html#a19">StpuiCurveType</a> type)</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="a1"></a><!-- doxytag: member="curve.h::STPUI_CURVE" ref="a1" args="(obj)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STPUI_CURVE </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">obj&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(G_TYPE_CHECK_INSTANCE_CAST ((obj), STPUI_TYPE_CURVE, <a class="el" href="struct__StpuiCurve.html">StpuiCurve</a>))</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a2"></a><!-- doxytag: member="curve.h::STPUI_CURVE_CLASS" ref="a2" args="(klass)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STPUI_CURVE_CLASS </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">klass&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(G_TYPE_CHECK_CLASS_CAST ((klass), STPUI_TYPE_CURVE, <a class="el" href="struct__StpuiCurveClass.html">StpuiCurveClass</a>))</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a5"></a><!-- doxytag: member="curve.h::STPUI_CURVE_GET_CLASS" ref="a5" args="(obj)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STPUI_CURVE_GET_CLASS </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">obj&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(G_TYPE_INSTANCE_GET_CLASS ((obj), STPUI_TYPE_CURVE, <a class="el" href="struct__StpuiCurveClass.html">StpuiCurveClass</a>))</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a3"></a><!-- doxytag: member="curve.h::STPUI_IS_CURVE" ref="a3" args="(obj)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STPUI_IS_CURVE </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">obj&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(G_TYPE_CHECK_INSTANCE_TYPE ((obj), STPUI_TYPE_CURVE))</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a4"></a><!-- doxytag: member="curve.h::STPUI_IS_CURVE_CLASS" ref="a4" args="(klass)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STPUI_IS_CURVE_CLASS </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">klass&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(G_TYPE_CHECK_CLASS_TYPE ((klass), STPUI_TYPE_CURVE))</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a0"></a><!-- doxytag: member="curve.h::STPUI_TYPE_CURVE" ref="a0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STPUI_TYPE_CURVE&nbsp;&nbsp;&nbsp;(stpui_curve_get_type ()) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="a6"></a><!-- doxytag: member="curve.h::StpuiCurve" ref="a6" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="struct__StpuiCurve.html">_StpuiCurve</a> <a class="el" href="struct__StpuiCurve.html">StpuiCurve</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a7"></a><!-- doxytag: member="curve.h::StpuiCurveClass" ref="a7" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="struct__StpuiCurveClass.html">_StpuiCurveClass</a> <a class="el" href="struct__StpuiCurveClass.html">StpuiCurveClass</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Enumeration Type Documentation</h2>
+<a class="anchor" name="a19"></a><!-- doxytag: member="curve.h::StpuiCurveType" ref="a19" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="curve_8h.html#a19">StpuiCurveType</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="a19a8"></a><!-- doxytag: member="STPUI_CURVE_TYPE_LINEAR" ref="a19a8" args="" -->STPUI_CURVE_TYPE_LINEAR</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a19a9"></a><!-- doxytag: member="STPUI_CURVE_TYPE_SPLINE" ref="a19a9" args="" -->STPUI_CURVE_TYPE_SPLINE</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a19a10"></a><!-- doxytag: member="STPUI_CURVE_TYPE_FREE" ref="a19a10" args="" -->STPUI_CURVE_TYPE_FREE</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a11"></a><!-- doxytag: member="curve.h::stpui_curve_get_type" ref="a11" args="(void) G_GNUC_CONST" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GType stpui_curve_get_type </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a16"></a><!-- doxytag: member="curve.h::stpui_curve_get_vector" ref="a16" args="(StpuiCurve *curve, int veclen, gfloat vector[])" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_curve_get_vector </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="struct__StpuiCurve.html">StpuiCurve</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>veclen</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>gfloat&nbsp;</td>
+ <td class="mdname" nowrap> <em>vector</em>[]</td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a12"></a><!-- doxytag: member="curve.h::stpui_curve_new" ref="a12" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GtkWidget* stpui_curve_new </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a13"></a><!-- doxytag: member="curve.h::stpui_curve_reset" ref="a13" args="(StpuiCurve *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_curve_reset </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="struct__StpuiCurve.html">StpuiCurve</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a18"></a><!-- doxytag: member="curve.h::stpui_curve_set_curve_type" ref="a18" args="(StpuiCurve *curve, StpuiCurveType type)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_curve_set_curve_type </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="struct__StpuiCurve.html">StpuiCurve</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="curve_8h.html#a19">StpuiCurveType</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a14"></a><!-- doxytag: member="curve.h::stpui_curve_set_gamma" ref="a14" args="(StpuiCurve *curve, gfloat gamma_)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_curve_set_gamma </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="struct__StpuiCurve.html">StpuiCurve</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>gfloat&nbsp;</td>
+ <td class="mdname" nowrap> <em>gamma_</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a15"></a><!-- doxytag: member="curve.h::stpui_curve_set_range" ref="a15" args="(StpuiCurve *curve, gfloat min_x, gfloat max_x, gfloat min_y, gfloat max_y)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_curve_set_range </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="struct__StpuiCurve.html">StpuiCurve</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>gfloat&nbsp;</td>
+ <td class="mdname" nowrap> <em>min_x</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>gfloat&nbsp;</td>
+ <td class="mdname" nowrap> <em>max_x</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>gfloat&nbsp;</td>
+ <td class="mdname" nowrap> <em>min_y</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>gfloat&nbsp;</td>
+ <td class="mdname" nowrap> <em>max_y</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a17"></a><!-- doxytag: member="curve.h::stpui_curve_set_vector" ref="a17" args="(StpuiCurve *curve, int veclen, const gfloat vector[])" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_curve_set_vector </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="struct__StpuiCurve.html">StpuiCurve</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>veclen</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const gfloat&nbsp;</td>
+ <td class="mdname" nowrap> <em>vector</em>[]</td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/dir_000000.html b/doc/gutenprintui2/html/dir_000000.html
new file mode 100644
index 0000000..a363ef1
--- /dev/null
+++ b/doc/gutenprintui2/html/dir_000000.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: include/ Directory Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a></div>
+<h1>include Directory Reference</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Directories</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">directory &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_000001.html">gutenprintui2</a></td></tr>
+
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/dir_000001.html b/doc/gutenprintui2/html/dir_000001.html
new file mode 100644
index 0000000..3489cc8
--- /dev/null
+++ b/doc/gutenprintui2/html/dir_000001.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: include/gutenprintui2/ Directory Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprintui2</a></div>
+<h1>gutenprintui2 Directory Reference</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Files</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="curve_8h.html">curve.h</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gammacurve_8h.html">gammacurve.h</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html">gutenprintui.h</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="typebuiltins_8h.html">typebuiltins.h</a></td></tr>
+
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/dirs.html b/doc/gutenprintui2/html/dirs.html
new file mode 100644
index 0000000..eb2b34e
--- /dev/null
+++ b/doc/gutenprintui2/html/dirs.html
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: Directory Hierarchy</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindexHL" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libgutenprintui2 API Reference Directories</h1>This directory hierarchy is sorted roughly, but not completely, alphabetically:<ul>
+<li><a class="el" href="dir_000000.html">include</a>
+<ul>
+<li><a class="el" href="dir_000001.html">gutenprintui2</a>
+</ul>
+</ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/doxygen.css b/doc/gutenprintui2/html/doxygen.css
new file mode 100644
index 0000000..decae9e
--- /dev/null
+++ b/doc/gutenprintui2/html/doxygen.css
@@ -0,0 +1,309 @@
+BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+}
+BODY,TD {
+ font-size: 90%;
+}
+H1 {
+ text-align: center;
+ font-size: 160%;
+}
+H2 {
+ font-size: 120%;
+}
+H3 {
+ font-size: 100%;
+}
+CAPTION { font-weight: bold }
+DIV.qindex {
+ width: 100%;
+ background-color: #eeeeff;
+ border: 1px solid #b0b0b0;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.nav {
+ width: 100%;
+ background-color: #eeeeff;
+ border: 1px solid #b0b0b0;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navtab {
+ background-color: #eeeeff;
+ border: 1px solid #b0b0b0;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+TD.navtab {
+ font-size: 70%;
+}
+A.qindex {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D;
+}
+A.qindex:visited {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D
+}
+A.qindex:hover {
+ text-decoration: none;
+ background-color: #ddddff;
+}
+A.qindexHL {
+ text-decoration: none;
+ font-weight: bold;
+ background-color: #6666cc;
+ color: #ffffff;
+ border: 1px double #9295C2;
+}
+A.qindexHL:hover {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff;
+}
+A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
+A.el { text-decoration: none; font-weight: bold }
+A.elRef { font-weight: bold }
+A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
+A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
+A.codeRef:link { font-weight: normal; color: #0000FF}
+A.codeRef:visited { font-weight: normal; color: #0000FF}
+A:hover { text-decoration: none; background-color: #f2f2ff }
+DL.el { margin-left: -1cm }
+.fragment {
+ font-family: Fixed, monospace;
+ font-size: 95%;
+}
+PRE.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ margin-left: 2px;
+ margin-right: 8px;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
+TD.md { background-color: #F4F4FB; font-weight: bold; }
+TD.mdPrefix {
+ background-color: #F4F4FB;
+ color: #606060;
+ font-size: 80%;
+}
+TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }
+TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }
+DIV.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold;
+}
+DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
+BODY {
+ background: white;
+ color: black;
+ margin-right: 20px;
+ margin-left: 20px;
+}
+TD.indexkey {
+ background-color: #eeeeff;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+ background-color: #eeeeff;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TR.memlist {
+ background-color: #f0f0f0;
+}
+P.formulaDsp { text-align: center; }
+IMG.formulaDsp { }
+IMG.formulaInl { vertical-align: middle; }
+SPAN.keyword { color: #008000 }
+SPAN.keywordtype { color: #604020 }
+SPAN.keywordflow { color: #e08000 }
+SPAN.comment { color: #800000 }
+SPAN.preprocessor { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral { color: #008080 }
+.mdTable {
+ border: 1px solid #868686;
+ background-color: #F4F4FB;
+}
+.mdRow {
+ padding: 8px 10px;
+}
+.mdescLeft {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.mdescRight {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.memItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplParams {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ color: #606060;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.search { color: #003399;
+ font-weight: bold;
+}
+FORM.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+INPUT.search { font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #eeeeff;
+}
+TD.tiny { font-size: 75%;
+}
+a {
+ color: #252E78;
+}
+a:visited {
+ color: #3D2185;
+}
+.dirtab { padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #b0b0b0;
+}
+TH.dirtab { background: #eeeeff;
+ font-weight: bold;
+}
+HR { height: 1px;
+ border: none;
+ border-top: 1px solid black;
+}
diff --git a/doc/gutenprintui2/html/doxygen.png b/doc/gutenprintui2/html/doxygen.png
new file mode 100644
index 0000000..f0a274b
--- /dev/null
+++ b/doc/gutenprintui2/html/doxygen.png
Binary files differ
diff --git a/doc/gutenprintui2/html/files.html b/doc/gutenprintui2/html/files.html
new file mode 100644
index 0000000..86191e9
--- /dev/null
+++ b/doc/gutenprintui2/html/files.html
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: File Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindexHL" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libgutenprintui2 API Reference File List</h1>Here is a list of all files with brief descriptions:<table>
+ <tr><td class="indexkey">include/gutenprintui2/<a class="el" href="curve_8h.html">curve.h</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">include/gutenprintui2/<a class="el" href="gammacurve_8h.html">gammacurve.h</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">include/gutenprintui2/<a class="el" href="gutenprintui_8h.html">gutenprintui.h</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey">include/gutenprintui2/<a class="el" href="typebuiltins_8h.html">typebuiltins.h</a></td><td class="indexvalue"></td></tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/functions.html b/doc/gutenprintui2/html/functions.html
new file mode 100644
index 0000000..5e75be7
--- /dev/null
+++ b/doc/gutenprintui2/html/functions.html
@@ -0,0 +1,105 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindexHL" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<div class="qindex"><a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
+<div class="qindex"><a class="qindex" href="#index__">_</a> | <a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_b">b</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_g">g</a> | <a class="qindex" href="#index_h">h</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_l">l</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_n">n</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_p">p</a> | <a class="qindex" href="#index_q">q</a> | <a class="qindex" href="#index_r">r</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_t">t</a> | <a class="qindex" href="#index_u">u</a> | <a class="qindex" href="#index_v">v</a></div>
+
+<p>
+Here is a list of all struct and union fields with links to the structures/unions they belong to:
+<p>
+<h3><a class="anchor" name="index__">- _ -</a></h3><ul>
+<li>_gtk_reserved1
+: <a class="el" href="struct__StpuiGammaCurveClass.html#o1">_StpuiGammaCurveClass</a>, <a class="el" href="struct__StpuiCurveClass.html#o2">_StpuiCurveClass</a><li>_gtk_reserved2
+: <a class="el" href="struct__StpuiGammaCurveClass.html#o2">_StpuiGammaCurveClass</a>, <a class="el" href="struct__StpuiCurveClass.html#o3">_StpuiCurveClass</a><li>_gtk_reserved3
+: <a class="el" href="struct__StpuiGammaCurveClass.html#o3">_StpuiGammaCurveClass</a>, <a class="el" href="struct__StpuiCurveClass.html#o4">_StpuiCurveClass</a><li>_gtk_reserved4
+: <a class="el" href="struct__StpuiGammaCurveClass.html#o4">_StpuiGammaCurveClass</a>, <a class="el" href="struct__StpuiCurveClass.html#o5">_StpuiCurveClass</a></ul>
+<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+<li>auto_size_roll_feed_paper
+: <a class="el" href="structstpui__plist__t.html#o10">stpui_plist_t</a></ul>
+<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
+<li>button
+: <a class="el" href="struct__StpuiGammaCurve.html#o3">_StpuiGammaCurve</a></ul>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>command_type
+: <a class="el" href="structstpui__plist__t.html#o1">stpui_plist_t</a><li>crop
+: <a class="el" href="structstpui__image.html#o7">stpui_image</a><li>ctlpoint
+: <a class="el" href="struct__StpuiCurve.html#o14">_StpuiCurve</a><li>current_standard_command
+: <a class="el" href="structstpui__plist__t.html#o5">stpui_plist_t</a><li>cursor_type
+: <a class="el" href="struct__StpuiCurve.html#o1">_StpuiCurve</a><li>curve
+: <a class="el" href="struct__StpuiGammaCurve.html#o2">_StpuiGammaCurve</a><li>curve_type
+: <a class="el" href="struct__StpuiCurve.html#o7">_StpuiCurve</a><li>curve_type_changed
+: <a class="el" href="struct__StpuiCurveClass.html#o1">_StpuiCurveClass</a><li>custom_command
+: <a class="el" href="structstpui__plist__t.html#o4">stpui_plist_t</a></ul>
+<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
+<li>extra_printer_options
+: <a class="el" href="structstpui__plist__t.html#o3">stpui_plist_t</a></ul>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>gamma
+: <a class="el" href="struct__StpuiGammaCurve.html#o4">_StpuiGammaCurve</a><li>gamma_dialog
+: <a class="el" href="struct__StpuiGammaCurve.html#o5">_StpuiGammaCurve</a><li>gamma_text
+: <a class="el" href="struct__StpuiGammaCurve.html#o6">_StpuiGammaCurve</a><li>grab_point
+: <a class="el" href="struct__StpuiCurve.html#o9">_StpuiCurve</a><li>graph
+: <a class="el" href="struct__StpuiCurve.html#o0">_StpuiCurve</a></ul>
+<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
+<li>height
+: <a class="el" href="struct__StpuiCurve.html#o8">_StpuiCurve</a><li>hflip
+: <a class="el" href="structstpui__image.html#o2">stpui_image</a></ul>
+<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+<li>im
+: <a class="el" href="structstpui__image.html#o0">stpui_image</a><li>invalid_mask
+: <a class="el" href="structstpui__plist__t.html#o11">stpui_plist_t</a></ul>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>last
+: <a class="el" href="struct__StpuiCurve.html#o10">_StpuiCurve</a></ul>
+<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
+<li>max_x
+: <a class="el" href="struct__StpuiCurve.html#o3">_StpuiCurve</a><li>max_y
+: <a class="el" href="struct__StpuiCurve.html#o5">_StpuiCurve</a><li>min_x
+: <a class="el" href="struct__StpuiCurve.html#o2">_StpuiCurve</a><li>min_y
+: <a class="el" href="struct__StpuiCurve.html#o4">_StpuiCurve</a></ul>
+<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+<li>name
+: <a class="el" href="structstpui__plist__t.html#o0">stpui_plist_t</a><li>num_ctlpoints
+: <a class="el" href="struct__StpuiCurve.html#o13">_StpuiCurve</a><li>num_points
+: <a class="el" href="struct__StpuiCurve.html#o11">_StpuiCurve</a></ul>
+<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
+<li>orientation
+: <a class="el" href="structstpui__plist__t.html#o8">stpui_plist_t</a><li>output_filename
+: <a class="el" href="structstpui__plist__t.html#o6">stpui_plist_t</a></ul>
+<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+<li>parent_class
+: <a class="el" href="struct__StpuiGammaCurveClass.html#o0">_StpuiGammaCurveClass</a>, <a class="el" href="struct__StpuiCurveClass.html#o0">_StpuiCurveClass</a><li>pixmap
+: <a class="el" href="struct__StpuiCurve.html#o6">_StpuiCurve</a><li>point
+: <a class="el" href="struct__StpuiCurve.html#o12">_StpuiCurve</a></ul>
+<h3><a class="anchor" name="index_q">- q -</a></h3><ul>
+<li>queue_name
+: <a class="el" href="structstpui__plist__t.html#o2">stpui_plist_t</a></ul>
+<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
+<li>rotate_180
+: <a class="el" href="structstpui__image.html#o6">stpui_image</a><li>rotate_ccw
+: <a class="el" href="structstpui__image.html#o4">stpui_image</a><li>rotate_cw
+: <a class="el" href="structstpui__image.html#o5">stpui_image</a></ul>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>scaling
+: <a class="el" href="structstpui__plist__t.html#o7">stpui_plist_t</a></ul>
+<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
+<li>table
+: <a class="el" href="struct__StpuiGammaCurve.html#o1">_StpuiGammaCurve</a><li>transpose
+: <a class="el" href="structstpui__image.html#o1">stpui_image</a></ul>
+<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
+<li>unit
+: <a class="el" href="structstpui__plist__t.html#o9">stpui_plist_t</a></ul>
+<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
+<li>v
+: <a class="el" href="structstpui__plist__t.html#o12">stpui_plist_t</a><li>vbox
+: <a class="el" href="struct__StpuiGammaCurve.html#o0">_StpuiGammaCurve</a><li>vflip
+: <a class="el" href="structstpui__image.html#o3">stpui_image</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/functions_vars.html b/doc/gutenprintui2/html/functions_vars.html
new file mode 100644
index 0000000..f881c75
--- /dev/null
+++ b/doc/gutenprintui2/html/functions_vars.html
@@ -0,0 +1,105 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: Data Fields - Variables</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindexHL" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_vars.html">Variables</a></div>
+<div class="qindex"><a class="qindex" href="#index__">_</a> | <a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_b">b</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_g">g</a> | <a class="qindex" href="#index_h">h</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_l">l</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_n">n</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_p">p</a> | <a class="qindex" href="#index_q">q</a> | <a class="qindex" href="#index_r">r</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_t">t</a> | <a class="qindex" href="#index_u">u</a> | <a class="qindex" href="#index_v">v</a></div>
+
+<p>
+
+<p>
+<h3><a class="anchor" name="index__">- _ -</a></h3><ul>
+<li>_gtk_reserved1
+: <a class="el" href="struct__StpuiGammaCurveClass.html#o1">_StpuiGammaCurveClass</a>, <a class="el" href="struct__StpuiCurveClass.html#o2">_StpuiCurveClass</a><li>_gtk_reserved2
+: <a class="el" href="struct__StpuiGammaCurveClass.html#o2">_StpuiGammaCurveClass</a>, <a class="el" href="struct__StpuiCurveClass.html#o3">_StpuiCurveClass</a><li>_gtk_reserved3
+: <a class="el" href="struct__StpuiGammaCurveClass.html#o3">_StpuiGammaCurveClass</a>, <a class="el" href="struct__StpuiCurveClass.html#o4">_StpuiCurveClass</a><li>_gtk_reserved4
+: <a class="el" href="struct__StpuiGammaCurveClass.html#o4">_StpuiGammaCurveClass</a>, <a class="el" href="struct__StpuiCurveClass.html#o5">_StpuiCurveClass</a></ul>
+<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+<li>auto_size_roll_feed_paper
+: <a class="el" href="structstpui__plist__t.html#o10">stpui_plist_t</a></ul>
+<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
+<li>button
+: <a class="el" href="struct__StpuiGammaCurve.html#o3">_StpuiGammaCurve</a></ul>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>command_type
+: <a class="el" href="structstpui__plist__t.html#o1">stpui_plist_t</a><li>crop
+: <a class="el" href="structstpui__image.html#o7">stpui_image</a><li>ctlpoint
+: <a class="el" href="struct__StpuiCurve.html#o14">_StpuiCurve</a><li>current_standard_command
+: <a class="el" href="structstpui__plist__t.html#o5">stpui_plist_t</a><li>cursor_type
+: <a class="el" href="struct__StpuiCurve.html#o1">_StpuiCurve</a><li>curve
+: <a class="el" href="struct__StpuiGammaCurve.html#o2">_StpuiGammaCurve</a><li>curve_type
+: <a class="el" href="struct__StpuiCurve.html#o7">_StpuiCurve</a><li>curve_type_changed
+: <a class="el" href="struct__StpuiCurveClass.html#o1">_StpuiCurveClass</a><li>custom_command
+: <a class="el" href="structstpui__plist__t.html#o4">stpui_plist_t</a></ul>
+<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
+<li>extra_printer_options
+: <a class="el" href="structstpui__plist__t.html#o3">stpui_plist_t</a></ul>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>gamma
+: <a class="el" href="struct__StpuiGammaCurve.html#o4">_StpuiGammaCurve</a><li>gamma_dialog
+: <a class="el" href="struct__StpuiGammaCurve.html#o5">_StpuiGammaCurve</a><li>gamma_text
+: <a class="el" href="struct__StpuiGammaCurve.html#o6">_StpuiGammaCurve</a><li>grab_point
+: <a class="el" href="struct__StpuiCurve.html#o9">_StpuiCurve</a><li>graph
+: <a class="el" href="struct__StpuiCurve.html#o0">_StpuiCurve</a></ul>
+<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
+<li>height
+: <a class="el" href="struct__StpuiCurve.html#o8">_StpuiCurve</a><li>hflip
+: <a class="el" href="structstpui__image.html#o2">stpui_image</a></ul>
+<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+<li>im
+: <a class="el" href="structstpui__image.html#o0">stpui_image</a><li>invalid_mask
+: <a class="el" href="structstpui__plist__t.html#o11">stpui_plist_t</a></ul>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>last
+: <a class="el" href="struct__StpuiCurve.html#o10">_StpuiCurve</a></ul>
+<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
+<li>max_x
+: <a class="el" href="struct__StpuiCurve.html#o3">_StpuiCurve</a><li>max_y
+: <a class="el" href="struct__StpuiCurve.html#o5">_StpuiCurve</a><li>min_x
+: <a class="el" href="struct__StpuiCurve.html#o2">_StpuiCurve</a><li>min_y
+: <a class="el" href="struct__StpuiCurve.html#o4">_StpuiCurve</a></ul>
+<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+<li>name
+: <a class="el" href="structstpui__plist__t.html#o0">stpui_plist_t</a><li>num_ctlpoints
+: <a class="el" href="struct__StpuiCurve.html#o13">_StpuiCurve</a><li>num_points
+: <a class="el" href="struct__StpuiCurve.html#o11">_StpuiCurve</a></ul>
+<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
+<li>orientation
+: <a class="el" href="structstpui__plist__t.html#o8">stpui_plist_t</a><li>output_filename
+: <a class="el" href="structstpui__plist__t.html#o6">stpui_plist_t</a></ul>
+<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+<li>parent_class
+: <a class="el" href="struct__StpuiGammaCurveClass.html#o0">_StpuiGammaCurveClass</a>, <a class="el" href="struct__StpuiCurveClass.html#o0">_StpuiCurveClass</a><li>pixmap
+: <a class="el" href="struct__StpuiCurve.html#o6">_StpuiCurve</a><li>point
+: <a class="el" href="struct__StpuiCurve.html#o12">_StpuiCurve</a></ul>
+<h3><a class="anchor" name="index_q">- q -</a></h3><ul>
+<li>queue_name
+: <a class="el" href="structstpui__plist__t.html#o2">stpui_plist_t</a></ul>
+<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
+<li>rotate_180
+: <a class="el" href="structstpui__image.html#o6">stpui_image</a><li>rotate_ccw
+: <a class="el" href="structstpui__image.html#o4">stpui_image</a><li>rotate_cw
+: <a class="el" href="structstpui__image.html#o5">stpui_image</a></ul>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>scaling
+: <a class="el" href="structstpui__plist__t.html#o7">stpui_plist_t</a></ul>
+<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
+<li>table
+: <a class="el" href="struct__StpuiGammaCurve.html#o1">_StpuiGammaCurve</a><li>transpose
+: <a class="el" href="structstpui__image.html#o1">stpui_image</a></ul>
+<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
+<li>unit
+: <a class="el" href="structstpui__plist__t.html#o9">stpui_plist_t</a></ul>
+<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
+<li>v
+: <a class="el" href="structstpui__plist__t.html#o12">stpui_plist_t</a><li>vbox
+: <a class="el" href="struct__StpuiGammaCurve.html#o0">_StpuiGammaCurve</a><li>vflip
+: <a class="el" href="structstpui__image.html#o3">stpui_image</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/gammacurve_8h.html b/doc/gutenprintui2/html/gammacurve_8h.html
new file mode 100644
index 0000000..c3ba173
--- /dev/null
+++ b/doc/gutenprintui2/html/gammacurve_8h.html
@@ -0,0 +1,315 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: include/gutenprintui2/gammacurve.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprintui2</a></div>
+<h1>gammacurve.h File Reference</h1><code>#include &lt;gdk/gdk.h&gt;</code><br>
+<code>#include &lt;gtk/gtkvbox.h&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiGammaCurve.html">_StpuiGammaCurve</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiGammaCurveClass.html">_StpuiGammaCurveClass</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gammacurve_8h.html#a0">STPUI_TYPE_GAMMA_CURVE</a>&nbsp;&nbsp;&nbsp;(stpui_gamma_curve_get_type ())</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gammacurve_8h.html#a1">STPUI_GAMMA_CURVE</a>(obj)&nbsp;&nbsp;&nbsp;(G_TYPE_CHECK_INSTANCE_CAST ((obj), STPUI_TYPE_GAMMA_CURVE, <a class="el" href="struct__StpuiGammaCurve.html">StpuiGammaCurve</a>))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gammacurve_8h.html#a2">STPUI_GAMMA_CURVE_CLASS</a>(klass)&nbsp;&nbsp;&nbsp;(G_TYPE_CHECK_CLASS_CAST ((klass), STPUI_TYPE_GAMMA_CURVE, <a class="el" href="struct__StpuiGammaCurveClass.html">StpuiGammaCurveClass</a>))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gammacurve_8h.html#a3">STPUI_IS_GAMMA_CURVE</a>(obj)&nbsp;&nbsp;&nbsp;(G_TYPE_CHECK_INSTANCE_TYPE ((obj), STPUI_TYPE_GAMMA_CURVE))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gammacurve_8h.html#a4">STPUI_IS_GAMMA_CURVE_CLASS</a>(klass)&nbsp;&nbsp;&nbsp;(G_TYPE_CHECK_CLASS_TYPE ((klass), STPUI_TYPE_GAMMA_CURVE))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gammacurve_8h.html#a5">STPUI_GAMMA_CURVE_GET_CLASS</a>(obj)&nbsp;&nbsp;&nbsp;(G_TYPE_INSTANCE_GET_CLASS ((obj), STPUI_TYPE_GAMMA_CURVE, <a class="el" href="struct__StpuiGammaCurveClass.html">StpuiGammaCurveClass</a>))</td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="struct__StpuiGammaCurve.html">_StpuiGammaCurve</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gammacurve_8h.html#a6">StpuiGammaCurve</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="struct__StpuiGammaCurveClass.html">_StpuiGammaCurveClass</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gammacurve_8h.html#a7">StpuiGammaCurveClass</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GType&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gammacurve_8h.html#a8">stpui_gamma_curve_get_type</a> (void) G_GNUC_CONST</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GtkWidget *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gammacurve_8h.html#a9">stpui_gamma_curve_new</a> (void)</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="a1"></a><!-- doxytag: member="gammacurve.h::STPUI_GAMMA_CURVE" ref="a1" args="(obj)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STPUI_GAMMA_CURVE </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">obj&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(G_TYPE_CHECK_INSTANCE_CAST ((obj), STPUI_TYPE_GAMMA_CURVE, <a class="el" href="struct__StpuiGammaCurve.html">StpuiGammaCurve</a>))</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a2"></a><!-- doxytag: member="gammacurve.h::STPUI_GAMMA_CURVE_CLASS" ref="a2" args="(klass)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STPUI_GAMMA_CURVE_CLASS </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">klass&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(G_TYPE_CHECK_CLASS_CAST ((klass), STPUI_TYPE_GAMMA_CURVE, <a class="el" href="struct__StpuiGammaCurveClass.html">StpuiGammaCurveClass</a>))</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a5"></a><!-- doxytag: member="gammacurve.h::STPUI_GAMMA_CURVE_GET_CLASS" ref="a5" args="(obj)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STPUI_GAMMA_CURVE_GET_CLASS </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">obj&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(G_TYPE_INSTANCE_GET_CLASS ((obj), STPUI_TYPE_GAMMA_CURVE, <a class="el" href="struct__StpuiGammaCurveClass.html">StpuiGammaCurveClass</a>))</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a3"></a><!-- doxytag: member="gammacurve.h::STPUI_IS_GAMMA_CURVE" ref="a3" args="(obj)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STPUI_IS_GAMMA_CURVE </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">obj&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(G_TYPE_CHECK_INSTANCE_TYPE ((obj), STPUI_TYPE_GAMMA_CURVE))</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a4"></a><!-- doxytag: member="gammacurve.h::STPUI_IS_GAMMA_CURVE_CLASS" ref="a4" args="(klass)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STPUI_IS_GAMMA_CURVE_CLASS </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">klass&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(G_TYPE_CHECK_CLASS_TYPE ((klass), STPUI_TYPE_GAMMA_CURVE))</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a0"></a><!-- doxytag: member="gammacurve.h::STPUI_TYPE_GAMMA_CURVE" ref="a0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STPUI_TYPE_GAMMA_CURVE&nbsp;&nbsp;&nbsp;(stpui_gamma_curve_get_type ()) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="a6"></a><!-- doxytag: member="gammacurve.h::StpuiGammaCurve" ref="a6" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="struct__StpuiGammaCurve.html">_StpuiGammaCurve</a> <a class="el" href="struct__StpuiGammaCurve.html">StpuiGammaCurve</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a7"></a><!-- doxytag: member="gammacurve.h::StpuiGammaCurveClass" ref="a7" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="struct__StpuiGammaCurveClass.html">_StpuiGammaCurveClass</a> <a class="el" href="struct__StpuiGammaCurveClass.html">StpuiGammaCurveClass</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a8"></a><!-- doxytag: member="gammacurve.h::stpui_gamma_curve_get_type" ref="a8" args="(void) G_GNUC_CONST" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GType stpui_gamma_curve_get_type </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a9"></a><!-- doxytag: member="gammacurve.h::stpui_gamma_curve_new" ref="a9" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GtkWidget* stpui_gamma_curve_new </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/globals.html b/doc/gutenprintui2/html/globals.html
new file mode 100644
index 0000000..3017fac
--- /dev/null
+++ b/doc/gutenprintui2/html/globals.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a></div>
+<div class="qindex"><a class="qindexHL" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_g">g</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_s">s</a></div>
+
+<p>
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>command_t
+: <a class="el" href="gutenprintui_8h.html#a63">gutenprintui.h</a><li>command_t_command_t_get_type()
+: <a class="el" href="typebuiltins_8h.html#a4">typebuiltins.h</a><li>COMMAND_TYPE_CUSTOM
+: <a class="el" href="gutenprintui_8h.html#a63a8">gutenprintui.h</a><li>COMMAND_TYPE_DEFAULT
+: <a class="el" href="gutenprintui_8h.html#a63a7">gutenprintui.h</a><li>COMMAND_TYPE_FILE
+: <a class="el" href="gutenprintui_8h.html#a63a9">gutenprintui.h</a></ul>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>get_thumbnail_func_t
+: <a class="el" href="gutenprintui_8h.html#a1">gutenprintui.h</a></ul>
+<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
+<li>ORIENT_AUTO
+: <a class="el" href="gutenprintui_8h.html#a62a2">gutenprintui.h</a><li>ORIENT_LANDSCAPE
+: <a class="el" href="gutenprintui_8h.html#a62a4">gutenprintui.h</a><li>ORIENT_PORTRAIT
+: <a class="el" href="gutenprintui_8h.html#a62a3">gutenprintui.h</a><li>ORIENT_SEASCAPE
+: <a class="el" href="gutenprintui_8h.html#a62a6">gutenprintui.h</a><li>orient_t
+: <a class="el" href="gutenprintui_8h.html#a62">gutenprintui.h</a><li>orient_t_orient_t_get_type()
+: <a class="el" href="typebuiltins_8h.html#a3">typebuiltins.h</a><li>ORIENT_UPSIDEDOWN
+: <a class="el" href="gutenprintui_8h.html#a62a5">gutenprintui.h</a></ul>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>stpui_build_standard_print_command()
+: <a class="el" href="gutenprintui_8h.html#a38">gutenprintui.h</a><li>stpui_compute_orientation()
+: <a class="el" href="gutenprintui_8h.html#a51">gutenprintui.h</a><li>STPUI_CURVE
+: <a class="el" href="curve_8h.html#a1">curve.h</a><li>STPUI_CURVE_CLASS
+: <a class="el" href="curve_8h.html#a2">curve.h</a><li>STPUI_CURVE_GET_CLASS
+: <a class="el" href="curve_8h.html#a5">curve.h</a><li>stpui_curve_get_type()
+: <a class="el" href="curve_8h.html#a11">curve.h</a><li>stpui_curve_get_vector()
+: <a class="el" href="curve_8h.html#a16">curve.h</a><li>stpui_curve_new()
+: <a class="el" href="curve_8h.html#a12">curve.h</a><li>stpui_curve_reset()
+: <a class="el" href="curve_8h.html#a13">curve.h</a><li>stpui_curve_set_curve_type()
+: <a class="el" href="curve_8h.html#a18">curve.h</a><li>stpui_curve_set_gamma()
+: <a class="el" href="curve_8h.html#a14">curve.h</a><li>stpui_curve_set_range()
+: <a class="el" href="curve_8h.html#a15">curve.h</a><li>stpui_curve_set_vector()
+: <a class="el" href="curve_8h.html#a17">curve.h</a><li>STPUI_CURVE_TYPE_FREE
+: <a class="el" href="curve_8h.html#a19a10">curve.h</a><li>stpui_curve_type_get_type()
+: <a class="el" href="typebuiltins_8h.html#a5">typebuiltins.h</a><li>STPUI_CURVE_TYPE_LINEAR
+: <a class="el" href="curve_8h.html#a19a8">curve.h</a><li>STPUI_CURVE_TYPE_SPLINE
+: <a class="el" href="curve_8h.html#a19a9">curve.h</a><li>stpui_do_print_dialog()
+: <a class="el" href="gutenprintui_8h.html#a50">gutenprintui.h</a><li>STPUI_GAMMA_CURVE
+: <a class="el" href="gammacurve_8h.html#a1">gammacurve.h</a><li>STPUI_GAMMA_CURVE_CLASS
+: <a class="el" href="gammacurve_8h.html#a2">gammacurve.h</a><li>STPUI_GAMMA_CURVE_GET_CLASS
+: <a class="el" href="gammacurve_8h.html#a5">gammacurve.h</a><li>stpui_gamma_curve_get_type()
+: <a class="el" href="gammacurve_8h.html#a8">gammacurve.h</a><li>stpui_gamma_curve_new()
+: <a class="el" href="gammacurve_8h.html#a9">gammacurve.h</a><li>stpui_get_current_printer()
+: <a class="el" href="gutenprintui_8h.html#a37">gutenprintui.h</a><li>stpui_get_errdata()
+: <a class="el" href="gutenprintui_8h.html#a49">gutenprintui.h</a><li>stpui_get_errfunc()
+: <a class="el" href="gutenprintui_8h.html#a47">gutenprintui.h</a><li>stpui_get_global_parameter()
+: <a class="el" href="gutenprintui_8h.html#a33">gutenprintui.h</a><li>stpui_get_image_filename()
+: <a class="el" href="gutenprintui_8h.html#a45">gutenprintui.h</a><li>stpui_get_printrc_file()
+: <a class="el" href="gutenprintui_8h.html#a40">gutenprintui.h</a><li>stpui_get_system_printers()
+: <a class="el" href="gutenprintui_8h.html#a42">gutenprintui.h</a><li>stpui_get_thumbnail_data()
+: <a class="el" href="gutenprintui_8h.html#a60">gutenprintui.h</a><li>stpui_get_thumbnail_func()
+: <a class="el" href="gutenprintui_8h.html#a58">gutenprintui.h</a><li>stpui_image_t
+: <a class="el" href="gutenprintui_8h.html#a0">gutenprintui.h</a><li>STPUI_IS_CURVE
+: <a class="el" href="curve_8h.html#a3">curve.h</a><li>STPUI_IS_CURVE_CLASS
+: <a class="el" href="curve_8h.html#a4">curve.h</a><li>STPUI_IS_GAMMA_CURVE
+: <a class="el" href="gammacurve_8h.html#a3">gammacurve.h</a><li>STPUI_IS_GAMMA_CURVE_CLASS
+: <a class="el" href="gammacurve_8h.html#a4">gammacurve.h</a><li>stpui_plist_add()
+: <a class="el" href="gutenprintui_8h.html#a35">gutenprintui.h</a><li>stpui_plist_copy()
+: <a class="el" href="gutenprintui_8h.html#a34">gutenprintui.h</a><li>stpui_plist_get_command_type()
+: <a class="el" href="gutenprintui_8h.html#a31">gutenprintui.h</a><li>stpui_plist_get_copy_count()
+: <a class="el" href="gutenprintui_8h.html#a26">gutenprintui.h</a><li>stpui_plist_get_current_standard_command()
+: <a class="el" href="gutenprintui_8h.html#a29">gutenprintui.h</a><li>stpui_plist_get_custom_command()
+: <a class="el" href="gutenprintui_8h.html#a24">gutenprintui.h</a><li>stpui_plist_get_extra_printer_options()
+: <a class="el" href="gutenprintui_8h.html#a21">gutenprintui.h</a><li>stpui_plist_get_name()
+: <a class="el" href="gutenprintui_8h.html#a12">gutenprintui.h</a><li>stpui_plist_get_output_filename()
+: <a class="el" href="gutenprintui_8h.html#a18">gutenprintui.h</a><li>stpui_plist_get_queue_name()
+: <a class="el" href="gutenprintui_8h.html#a15">gutenprintui.h</a><li>stpui_plist_set_command_type()
+: <a class="el" href="gutenprintui_8h.html#a30">gutenprintui.h</a><li>stpui_plist_set_copy_count()
+: <a class="el" href="gutenprintui_8h.html#a25">gutenprintui.h</a><li>stpui_plist_set_current_standard_command()
+: <a class="el" href="gutenprintui_8h.html#a27">gutenprintui.h</a><li>stpui_plist_set_current_standard_command_n()
+: <a class="el" href="gutenprintui_8h.html#a28">gutenprintui.h</a><li>stpui_plist_set_custom_command()
+: <a class="el" href="gutenprintui_8h.html#a22">gutenprintui.h</a><li>stpui_plist_set_custom_command_n()
+: <a class="el" href="gutenprintui_8h.html#a23">gutenprintui.h</a><li>stpui_plist_set_extra_printer_options()
+: <a class="el" href="gutenprintui_8h.html#a19">gutenprintui.h</a><li>stpui_plist_set_extra_printer_options_n()
+: <a class="el" href="gutenprintui_8h.html#a20">gutenprintui.h</a><li>stpui_plist_set_name()
+: <a class="el" href="gutenprintui_8h.html#a10">gutenprintui.h</a><li>stpui_plist_set_name_n()
+: <a class="el" href="gutenprintui_8h.html#a11">gutenprintui.h</a><li>stpui_plist_set_output_filename()
+: <a class="el" href="gutenprintui_8h.html#a16">gutenprintui.h</a><li>stpui_plist_set_output_filename_n()
+: <a class="el" href="gutenprintui_8h.html#a17">gutenprintui.h</a><li>stpui_plist_set_queue_name()
+: <a class="el" href="gutenprintui_8h.html#a13">gutenprintui.h</a><li>stpui_plist_set_queue_name_n()
+: <a class="el" href="gutenprintui_8h.html#a14">gutenprintui.h</a><li>stpui_print()
+: <a class="el" href="gutenprintui_8h.html#a61">gutenprintui.h</a><li>stpui_printer_initialize()
+: <a class="el" href="gutenprintui_8h.html#a36">gutenprintui.h</a><li>stpui_printrc_load()
+: <a class="el" href="gutenprintui_8h.html#a41">gutenprintui.h</a><li>stpui_printrc_save()
+: <a class="el" href="gutenprintui_8h.html#a43">gutenprintui.h</a><li>stpui_set_errdata()
+: <a class="el" href="gutenprintui_8h.html#a48">gutenprintui.h</a><li>stpui_set_errfunc()
+: <a class="el" href="gutenprintui_8h.html#a46">gutenprintui.h</a><li>stpui_set_global_parameter()
+: <a class="el" href="gutenprintui_8h.html#a32">gutenprintui.h</a><li>stpui_set_image_channel_depth()
+: <a class="el" href="gutenprintui_8h.html#a56">gutenprintui.h</a><li>stpui_set_image_dimensions()
+: <a class="el" href="gutenprintui_8h.html#a52">gutenprintui.h</a><li>stpui_set_image_filename()
+: <a class="el" href="gutenprintui_8h.html#a44">gutenprintui.h</a><li>stpui_set_image_raw_channels()
+: <a class="el" href="gutenprintui_8h.html#a55">gutenprintui.h</a><li>stpui_set_image_resolution()
+: <a class="el" href="gutenprintui_8h.html#a53">gutenprintui.h</a><li>stpui_set_image_type()
+: <a class="el" href="gutenprintui_8h.html#a54">gutenprintui.h</a><li>stpui_set_printrc_file()
+: <a class="el" href="gutenprintui_8h.html#a39">gutenprintui.h</a><li>stpui_set_thumbnail_data()
+: <a class="el" href="gutenprintui_8h.html#a59">gutenprintui.h</a><li>stpui_set_thumbnail_func()
+: <a class="el" href="gutenprintui_8h.html#a57">gutenprintui.h</a><li>STPUI_TYPE_COMMAND_T
+: <a class="el" href="typebuiltins_8h.html#a1">typebuiltins.h</a><li>STPUI_TYPE_CURVE
+: <a class="el" href="curve_8h.html#a0">curve.h</a><li>STPUI_TYPE_CURVE_TYPE
+: <a class="el" href="typebuiltins_8h.html#a2">typebuiltins.h</a><li>STPUI_TYPE_GAMMA_CURVE
+: <a class="el" href="gammacurve_8h.html#a0">gammacurve.h</a><li>STPUI_TYPE_ORIENT_T
+: <a class="el" href="typebuiltins_8h.html#a0">typebuiltins.h</a><li>StpuiCurve
+: <a class="el" href="curve_8h.html#a6">curve.h</a><li>StpuiCurveClass
+: <a class="el" href="curve_8h.html#a7">curve.h</a><li>StpuiCurveType
+: <a class="el" href="curve_8h.html#a19">curve.h</a><li>StpuiGammaCurve
+: <a class="el" href="gammacurve_8h.html#a6">gammacurve.h</a><li>StpuiGammaCurveClass
+: <a class="el" href="gammacurve_8h.html#a7">gammacurve.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/globals_defs.html b/doc/gutenprintui2/html/globals_defs.html
new file mode 100644
index 0000000..c3934f5
--- /dev/null
+++ b/doc/gutenprintui2/html/globals_defs.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a></div>
+<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindexHL" href="globals_defs.html">Defines</a></div>
+
+<p>
+<ul>
+<li>STPUI_CURVE
+: <a class="el" href="curve_8h.html#a1">curve.h</a><li>STPUI_CURVE_CLASS
+: <a class="el" href="curve_8h.html#a2">curve.h</a><li>STPUI_CURVE_GET_CLASS
+: <a class="el" href="curve_8h.html#a5">curve.h</a><li>STPUI_GAMMA_CURVE
+: <a class="el" href="gammacurve_8h.html#a1">gammacurve.h</a><li>STPUI_GAMMA_CURVE_CLASS
+: <a class="el" href="gammacurve_8h.html#a2">gammacurve.h</a><li>STPUI_GAMMA_CURVE_GET_CLASS
+: <a class="el" href="gammacurve_8h.html#a5">gammacurve.h</a><li>STPUI_IS_CURVE
+: <a class="el" href="curve_8h.html#a3">curve.h</a><li>STPUI_IS_CURVE_CLASS
+: <a class="el" href="curve_8h.html#a4">curve.h</a><li>STPUI_IS_GAMMA_CURVE
+: <a class="el" href="gammacurve_8h.html#a3">gammacurve.h</a><li>STPUI_IS_GAMMA_CURVE_CLASS
+: <a class="el" href="gammacurve_8h.html#a4">gammacurve.h</a><li>STPUI_TYPE_COMMAND_T
+: <a class="el" href="typebuiltins_8h.html#a1">typebuiltins.h</a><li>STPUI_TYPE_CURVE
+: <a class="el" href="curve_8h.html#a0">curve.h</a><li>STPUI_TYPE_CURVE_TYPE
+: <a class="el" href="typebuiltins_8h.html#a2">typebuiltins.h</a><li>STPUI_TYPE_GAMMA_CURVE
+: <a class="el" href="gammacurve_8h.html#a0">gammacurve.h</a><li>STPUI_TYPE_ORIENT_T
+: <a class="el" href="typebuiltins_8h.html#a0">typebuiltins.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/globals_enum.html b/doc/gutenprintui2/html/globals_enum.html
new file mode 100644
index 0000000..b437b0c
--- /dev/null
+++ b/doc/gutenprintui2/html/globals_enum.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a></div>
+<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindexHL" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+
+<p>
+<ul>
+<li>command_t
+: <a class="el" href="gutenprintui_8h.html#a63">gutenprintui.h</a><li>orient_t
+: <a class="el" href="gutenprintui_8h.html#a62">gutenprintui.h</a><li>StpuiCurveType
+: <a class="el" href="curve_8h.html#a19">curve.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/globals_eval.html b/doc/gutenprintui2/html/globals_eval.html
new file mode 100644
index 0000000..598f52f
--- /dev/null
+++ b/doc/gutenprintui2/html/globals_eval.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a></div>
+<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindexHL" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+
+<p>
+<ul>
+<li>COMMAND_TYPE_CUSTOM
+: <a class="el" href="gutenprintui_8h.html#a63a8">gutenprintui.h</a><li>COMMAND_TYPE_DEFAULT
+: <a class="el" href="gutenprintui_8h.html#a63a7">gutenprintui.h</a><li>COMMAND_TYPE_FILE
+: <a class="el" href="gutenprintui_8h.html#a63a9">gutenprintui.h</a><li>ORIENT_AUTO
+: <a class="el" href="gutenprintui_8h.html#a62a2">gutenprintui.h</a><li>ORIENT_LANDSCAPE
+: <a class="el" href="gutenprintui_8h.html#a62a4">gutenprintui.h</a><li>ORIENT_PORTRAIT
+: <a class="el" href="gutenprintui_8h.html#a62a3">gutenprintui.h</a><li>ORIENT_SEASCAPE
+: <a class="el" href="gutenprintui_8h.html#a62a6">gutenprintui.h</a><li>ORIENT_UPSIDEDOWN
+: <a class="el" href="gutenprintui_8h.html#a62a5">gutenprintui.h</a><li>STPUI_CURVE_TYPE_FREE
+: <a class="el" href="curve_8h.html#a19a10">curve.h</a><li>STPUI_CURVE_TYPE_LINEAR
+: <a class="el" href="curve_8h.html#a19a8">curve.h</a><li>STPUI_CURVE_TYPE_SPLINE
+: <a class="el" href="curve_8h.html#a19a9">curve.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/globals_func.html b/doc/gutenprintui2/html/globals_func.html
new file mode 100644
index 0000000..c04cefe
--- /dev/null
+++ b/doc/gutenprintui2/html/globals_func.html
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a></div>
+<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindexHL" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_s">s</a></div>
+
+<p>
+
+<p>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>command_t_command_t_get_type()
+: <a class="el" href="typebuiltins_8h.html#a4">typebuiltins.h</a></ul>
+<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
+<li>orient_t_orient_t_get_type()
+: <a class="el" href="typebuiltins_8h.html#a3">typebuiltins.h</a></ul>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>stpui_build_standard_print_command()
+: <a class="el" href="gutenprintui_8h.html#a38">gutenprintui.h</a><li>stpui_compute_orientation()
+: <a class="el" href="gutenprintui_8h.html#a51">gutenprintui.h</a><li>stpui_curve_get_type()
+: <a class="el" href="curve_8h.html#a11">curve.h</a><li>stpui_curve_get_vector()
+: <a class="el" href="curve_8h.html#a16">curve.h</a><li>stpui_curve_new()
+: <a class="el" href="curve_8h.html#a12">curve.h</a><li>stpui_curve_reset()
+: <a class="el" href="curve_8h.html#a13">curve.h</a><li>stpui_curve_set_curve_type()
+: <a class="el" href="curve_8h.html#a18">curve.h</a><li>stpui_curve_set_gamma()
+: <a class="el" href="curve_8h.html#a14">curve.h</a><li>stpui_curve_set_range()
+: <a class="el" href="curve_8h.html#a15">curve.h</a><li>stpui_curve_set_vector()
+: <a class="el" href="curve_8h.html#a17">curve.h</a><li>stpui_curve_type_get_type()
+: <a class="el" href="typebuiltins_8h.html#a5">typebuiltins.h</a><li>stpui_do_print_dialog()
+: <a class="el" href="gutenprintui_8h.html#a50">gutenprintui.h</a><li>stpui_gamma_curve_get_type()
+: <a class="el" href="gammacurve_8h.html#a8">gammacurve.h</a><li>stpui_gamma_curve_new()
+: <a class="el" href="gammacurve_8h.html#a9">gammacurve.h</a><li>stpui_get_current_printer()
+: <a class="el" href="gutenprintui_8h.html#a37">gutenprintui.h</a><li>stpui_get_errdata()
+: <a class="el" href="gutenprintui_8h.html#a49">gutenprintui.h</a><li>stpui_get_errfunc()
+: <a class="el" href="gutenprintui_8h.html#a47">gutenprintui.h</a><li>stpui_get_global_parameter()
+: <a class="el" href="gutenprintui_8h.html#a33">gutenprintui.h</a><li>stpui_get_image_filename()
+: <a class="el" href="gutenprintui_8h.html#a45">gutenprintui.h</a><li>stpui_get_printrc_file()
+: <a class="el" href="gutenprintui_8h.html#a40">gutenprintui.h</a><li>stpui_get_system_printers()
+: <a class="el" href="gutenprintui_8h.html#a42">gutenprintui.h</a><li>stpui_get_thumbnail_data()
+: <a class="el" href="gutenprintui_8h.html#a60">gutenprintui.h</a><li>stpui_get_thumbnail_func()
+: <a class="el" href="gutenprintui_8h.html#a58">gutenprintui.h</a><li>stpui_plist_add()
+: <a class="el" href="gutenprintui_8h.html#a35">gutenprintui.h</a><li>stpui_plist_copy()
+: <a class="el" href="gutenprintui_8h.html#a34">gutenprintui.h</a><li>stpui_plist_get_command_type()
+: <a class="el" href="gutenprintui_8h.html#a31">gutenprintui.h</a><li>stpui_plist_get_copy_count()
+: <a class="el" href="gutenprintui_8h.html#a26">gutenprintui.h</a><li>stpui_plist_get_current_standard_command()
+: <a class="el" href="gutenprintui_8h.html#a29">gutenprintui.h</a><li>stpui_plist_get_custom_command()
+: <a class="el" href="gutenprintui_8h.html#a24">gutenprintui.h</a><li>stpui_plist_get_extra_printer_options()
+: <a class="el" href="gutenprintui_8h.html#a21">gutenprintui.h</a><li>stpui_plist_get_name()
+: <a class="el" href="gutenprintui_8h.html#a12">gutenprintui.h</a><li>stpui_plist_get_output_filename()
+: <a class="el" href="gutenprintui_8h.html#a18">gutenprintui.h</a><li>stpui_plist_get_queue_name()
+: <a class="el" href="gutenprintui_8h.html#a15">gutenprintui.h</a><li>stpui_plist_set_command_type()
+: <a class="el" href="gutenprintui_8h.html#a30">gutenprintui.h</a><li>stpui_plist_set_copy_count()
+: <a class="el" href="gutenprintui_8h.html#a25">gutenprintui.h</a><li>stpui_plist_set_current_standard_command()
+: <a class="el" href="gutenprintui_8h.html#a27">gutenprintui.h</a><li>stpui_plist_set_current_standard_command_n()
+: <a class="el" href="gutenprintui_8h.html#a28">gutenprintui.h</a><li>stpui_plist_set_custom_command()
+: <a class="el" href="gutenprintui_8h.html#a22">gutenprintui.h</a><li>stpui_plist_set_custom_command_n()
+: <a class="el" href="gutenprintui_8h.html#a23">gutenprintui.h</a><li>stpui_plist_set_extra_printer_options()
+: <a class="el" href="gutenprintui_8h.html#a19">gutenprintui.h</a><li>stpui_plist_set_extra_printer_options_n()
+: <a class="el" href="gutenprintui_8h.html#a20">gutenprintui.h</a><li>stpui_plist_set_name()
+: <a class="el" href="gutenprintui_8h.html#a10">gutenprintui.h</a><li>stpui_plist_set_name_n()
+: <a class="el" href="gutenprintui_8h.html#a11">gutenprintui.h</a><li>stpui_plist_set_output_filename()
+: <a class="el" href="gutenprintui_8h.html#a16">gutenprintui.h</a><li>stpui_plist_set_output_filename_n()
+: <a class="el" href="gutenprintui_8h.html#a17">gutenprintui.h</a><li>stpui_plist_set_queue_name()
+: <a class="el" href="gutenprintui_8h.html#a13">gutenprintui.h</a><li>stpui_plist_set_queue_name_n()
+: <a class="el" href="gutenprintui_8h.html#a14">gutenprintui.h</a><li>stpui_print()
+: <a class="el" href="gutenprintui_8h.html#a61">gutenprintui.h</a><li>stpui_printer_initialize()
+: <a class="el" href="gutenprintui_8h.html#a36">gutenprintui.h</a><li>stpui_printrc_load()
+: <a class="el" href="gutenprintui_8h.html#a41">gutenprintui.h</a><li>stpui_printrc_save()
+: <a class="el" href="gutenprintui_8h.html#a43">gutenprintui.h</a><li>stpui_set_errdata()
+: <a class="el" href="gutenprintui_8h.html#a48">gutenprintui.h</a><li>stpui_set_errfunc()
+: <a class="el" href="gutenprintui_8h.html#a46">gutenprintui.h</a><li>stpui_set_global_parameter()
+: <a class="el" href="gutenprintui_8h.html#a32">gutenprintui.h</a><li>stpui_set_image_channel_depth()
+: <a class="el" href="gutenprintui_8h.html#a56">gutenprintui.h</a><li>stpui_set_image_dimensions()
+: <a class="el" href="gutenprintui_8h.html#a52">gutenprintui.h</a><li>stpui_set_image_filename()
+: <a class="el" href="gutenprintui_8h.html#a44">gutenprintui.h</a><li>stpui_set_image_raw_channels()
+: <a class="el" href="gutenprintui_8h.html#a55">gutenprintui.h</a><li>stpui_set_image_resolution()
+: <a class="el" href="gutenprintui_8h.html#a53">gutenprintui.h</a><li>stpui_set_image_type()
+: <a class="el" href="gutenprintui_8h.html#a54">gutenprintui.h</a><li>stpui_set_printrc_file()
+: <a class="el" href="gutenprintui_8h.html#a39">gutenprintui.h</a><li>stpui_set_thumbnail_data()
+: <a class="el" href="gutenprintui_8h.html#a59">gutenprintui.h</a><li>stpui_set_thumbnail_func()
+: <a class="el" href="gutenprintui_8h.html#a57">gutenprintui.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/globals_type.html b/doc/gutenprintui2/html/globals_type.html
new file mode 100644
index 0000000..ea2abdf
--- /dev/null
+++ b/doc/gutenprintui2/html/globals_type.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a></div>
+<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindexHL" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+
+<p>
+<ul>
+<li>get_thumbnail_func_t
+: <a class="el" href="gutenprintui_8h.html#a1">gutenprintui.h</a><li>stpui_image_t
+: <a class="el" href="gutenprintui_8h.html#a0">gutenprintui.h</a><li>StpuiCurve
+: <a class="el" href="curve_8h.html#a6">curve.h</a><li>StpuiCurveClass
+: <a class="el" href="curve_8h.html#a7">curve.h</a><li>StpuiGammaCurve
+: <a class="el" href="gammacurve_8h.html#a6">gammacurve.h</a><li>StpuiGammaCurveClass
+: <a class="el" href="gammacurve_8h.html#a7">gammacurve.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/gutenprintui_8h.html b/doc/gutenprintui2/html/gutenprintui_8h.html
new file mode 100644
index 0000000..a5db95f
--- /dev/null
+++ b/doc/gutenprintui2/html/gutenprintui_8h.html
@@ -0,0 +1,1953 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: include/gutenprintui2/gutenprintui.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprintui2</a></div>
+<h1>gutenprintui.h File Reference</h1><code>#include &lt;gtk/gtk.h&gt;</code><br>
+<code>#include &lt;gutenprint/gutenprint.h&gt;</code><br>
+<code>#include &lt;<a class="el" href="curve_8h.html">gutenprintui2/curve.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="gammacurve_8h.html">gutenprintui2/gammacurve.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="typebuiltins_8h.html">gutenprintui2/typebuiltins.h</a>&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__image.html">stpui_image</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstpui__image.html">stpui_image</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a0">stpui_image_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef guchar *(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a1">get_thumbnail_func_t</a> )(void *data, gint *width, gint *height, gint *bpp, gint page)</td></tr>
+
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a62">orient_t</a> { <br>
+&nbsp;&nbsp;<a class="el" href="gutenprintui_8h.html#a62a2">ORIENT_AUTO</a> = -1,
+<a class="el" href="gutenprintui_8h.html#a62a3">ORIENT_PORTRAIT</a> = 0,
+<a class="el" href="gutenprintui_8h.html#a62a4">ORIENT_LANDSCAPE</a> = 1,
+<a class="el" href="gutenprintui_8h.html#a62a5">ORIENT_UPSIDEDOWN</a> = 2,
+<br>
+&nbsp;&nbsp;<a class="el" href="gutenprintui_8h.html#a62a6">ORIENT_SEASCAPE</a> = 3
+<br>
+ }</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a63">command_t</a> { <a class="el" href="gutenprintui_8h.html#a63a7">COMMAND_TYPE_DEFAULT</a>,
+<a class="el" href="gutenprintui_8h.html#a63a8">COMMAND_TYPE_CUSTOM</a>,
+<a class="el" href="gutenprintui_8h.html#a63a9">COMMAND_TYPE_FILE</a>
+ }</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a10">stpui_plist_set_name</a> (<a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p, const char *val)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a11">stpui_plist_set_name_n</a> (<a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p, const char *val, int n)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a12">stpui_plist_get_name</a> (const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a13">stpui_plist_set_queue_name</a> (<a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p, const char *val)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a14">stpui_plist_set_queue_name_n</a> (<a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p, const char *val, int n)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a15">stpui_plist_get_queue_name</a> (const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a16">stpui_plist_set_output_filename</a> (<a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p, const char *val)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a17">stpui_plist_set_output_filename_n</a> (<a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p, const char *val, int n)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a18">stpui_plist_get_output_filename</a> (const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a19">stpui_plist_set_extra_printer_options</a> (<a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p, const char *val)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a20">stpui_plist_set_extra_printer_options_n</a> (<a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p, const char *val, int n)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a21">stpui_plist_get_extra_printer_options</a> (const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a22">stpui_plist_set_custom_command</a> (<a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p, const char *val)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a23">stpui_plist_set_custom_command_n</a> (<a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p, const char *val, int n)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a24">stpui_plist_get_custom_command</a> (const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a25">stpui_plist_set_copy_count</a> (<a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p, gint count)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a26">stpui_plist_get_copy_count</a> (const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a27">stpui_plist_set_current_standard_command</a> (<a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p, const char *val)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a28">stpui_plist_set_current_standard_command_n</a> (<a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p, const char *val, int n)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a29">stpui_plist_get_current_standard_command</a> (const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a30">stpui_plist_set_command_type</a> (<a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p, <a class="el" href="gutenprintui_8h.html#a63">command_t</a> val)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="gutenprintui_8h.html#a63">command_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a31">stpui_plist_get_command_type</a> (const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a32">stpui_set_global_parameter</a> (const char *param, const char *value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a33">stpui_get_global_parameter</a> (const char *param)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a34">stpui_plist_copy</a> (<a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *vd, const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *vs)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a35">stpui_plist_add</a> (const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *key, int add_only)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a36">stpui_printer_initialize</a> (<a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *printer)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a37">stpui_get_current_printer</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a38">stpui_build_standard_print_command</a> (const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *plist, const stp_printer_t *printer)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a39">stpui_set_printrc_file</a> (const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a40">stpui_get_printrc_file</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a41">stpui_printrc_load</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a42">stpui_get_system_printers</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a43">stpui_printrc_save</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a44">stpui_set_image_filename</a> (const char *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a45">stpui_get_image_filename</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a46">stpui_set_errfunc</a> (stp_outfunc_t wfunc)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">stp_outfunc_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a47">stpui_get_errfunc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a48">stpui_set_errdata</a> (void *errdata)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a49">stpui_get_errdata</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">gint&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a50">stpui_do_print_dialog</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">gint&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a51">stpui_compute_orientation</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a52">stpui_set_image_dimensions</a> (gint width, gint height)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a53">stpui_set_image_resolution</a> (gdouble xres, gdouble yres)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a54">stpui_set_image_type</a> (const char *image_type)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a55">stpui_set_image_raw_channels</a> (gint channels)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a56">stpui_set_image_channel_depth</a> (gint bit_depth)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a57">stpui_set_thumbnail_func</a> (<a class="el" href="gutenprintui_8h.html#a1">get_thumbnail_func_t</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="gutenprintui_8h.html#a1">get_thumbnail_func_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a58">stpui_get_thumbnail_func</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a59">stpui_set_thumbnail_data</a> (void *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a60">stpui_get_thumbnail_data</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="gutenprintui_8h.html#a61">stpui_print</a> (const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *printer, <a class="el" href="structstpui__image.html">stpui_image_t</a> *im)</td></tr>
+
+</table>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="a1"></a><!-- doxytag: member="gutenprintui.h::get_thumbnail_func_t" ref="a1" args=")(void *data, gint *width, gint *height, gint *bpp, gint page)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef guchar*(* <a class="el" href="gutenprintui_8h.html#a1">get_thumbnail_func_t</a>)(void *data, gint *width, gint *height, gint *bpp, gint page) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a0"></a><!-- doxytag: member="gutenprintui.h::stpui_image_t" ref="a0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct <a class="el" href="structstpui__image.html">stpui_image</a> <a class="el" href="structstpui__image.html">stpui_image_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Enumeration Type Documentation</h2>
+<a class="anchor" name="a63"></a><!-- doxytag: member="gutenprintui.h::command_t" ref="a63" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="gutenprintui_8h.html#a63">command_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="a63a7"></a><!-- doxytag: member="COMMAND_TYPE_DEFAULT" ref="a63a7" args="" -->COMMAND_TYPE_DEFAULT</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a63a8"></a><!-- doxytag: member="COMMAND_TYPE_CUSTOM" ref="a63a8" args="" -->COMMAND_TYPE_CUSTOM</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a63a9"></a><!-- doxytag: member="COMMAND_TYPE_FILE" ref="a63a9" args="" -->COMMAND_TYPE_FILE</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a62"></a><!-- doxytag: member="gutenprintui.h::orient_t" ref="a62" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="gutenprintui_8h.html#a62">orient_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="a62a2"></a><!-- doxytag: member="ORIENT_AUTO" ref="a62a2" args="" -->ORIENT_AUTO</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a62a3"></a><!-- doxytag: member="ORIENT_PORTRAIT" ref="a62a3" args="" -->ORIENT_PORTRAIT</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a62a4"></a><!-- doxytag: member="ORIENT_LANDSCAPE" ref="a62a4" args="" -->ORIENT_LANDSCAPE</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a62a5"></a><!-- doxytag: member="ORIENT_UPSIDEDOWN" ref="a62a5" args="" -->ORIENT_UPSIDEDOWN</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a62a6"></a><!-- doxytag: member="ORIENT_SEASCAPE" ref="a62a6" args="" -->ORIENT_SEASCAPE</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a38"></a><!-- doxytag: member="gutenprintui.h::stpui_build_standard_print_command" ref="a38" args="(const stpui_plist_t *plist, const stp_printer_t *printer)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* stpui_build_standard_print_command </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>plist</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const stp_printer_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>printer</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a51"></a><!-- doxytag: member="gutenprintui.h::stpui_compute_orientation" ref="a51" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">gint stpui_compute_orientation </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a50"></a><!-- doxytag: member="gutenprintui.h::stpui_do_print_dialog" ref="a50" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">gint stpui_do_print_dialog </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a37"></a><!-- doxytag: member="gutenprintui.h::stpui_get_current_printer" ref="a37" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a>* stpui_get_current_printer </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a49"></a><!-- doxytag: member="gutenprintui.h::stpui_get_errdata" ref="a49" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void* stpui_get_errdata </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a47"></a><!-- doxytag: member="gutenprintui.h::stpui_get_errfunc" ref="a47" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">stp_outfunc_t stpui_get_errfunc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a33"></a><!-- doxytag: member="gutenprintui.h::stpui_get_global_parameter" ref="a33" args="(const char *param)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stpui_get_global_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>param</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a45"></a><!-- doxytag: member="gutenprintui.h::stpui_get_image_filename" ref="a45" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stpui_get_image_filename </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a40"></a><!-- doxytag: member="gutenprintui.h::stpui_get_printrc_file" ref="a40" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stpui_get_printrc_file </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a42"></a><!-- doxytag: member="gutenprintui.h::stpui_get_system_printers" ref="a42" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_get_system_printers </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a60"></a><!-- doxytag: member="gutenprintui.h::stpui_get_thumbnail_data" ref="a60" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void* stpui_get_thumbnail_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a58"></a><!-- doxytag: member="gutenprintui.h::stpui_get_thumbnail_func" ref="a58" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="gutenprintui_8h.html#a1">get_thumbnail_func_t</a> stpui_get_thumbnail_func </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a35"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_add" ref="a35" args="(const stpui_plist_t *key, int add_only)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stpui_plist_add </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>add_only</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a34"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_copy" ref="a34" args="(stpui_plist_t *vd, const stpui_plist_t *vs)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_plist_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>vd</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>vs</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a31"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_get_command_type" ref="a31" args="(const stpui_plist_t *p)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="gutenprintui_8h.html#a63">command_t</a> stpui_plist_get_command_type </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a26"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_get_copy_count" ref="a26" args="(const stpui_plist_t *p)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stpui_plist_get_copy_count </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a29"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_get_current_standard_command" ref="a29" args="(const stpui_plist_t *p)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stpui_plist_get_current_standard_command </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a24"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_get_custom_command" ref="a24" args="(const stpui_plist_t *p)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stpui_plist_get_custom_command </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a21"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_get_extra_printer_options" ref="a21" args="(const stpui_plist_t *p)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stpui_plist_get_extra_printer_options </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a12"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_get_name" ref="a12" args="(const stpui_plist_t *p)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stpui_plist_get_name </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a18"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_get_output_filename" ref="a18" args="(const stpui_plist_t *p)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stpui_plist_get_output_filename </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a15"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_get_queue_name" ref="a15" args="(const stpui_plist_t *p)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const char* stpui_plist_get_queue_name </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a30"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_set_command_type" ref="a30" args="(stpui_plist_t *p, command_t val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_plist_set_command_type </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="gutenprintui_8h.html#a63">command_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a25"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_set_copy_count" ref="a25" args="(stpui_plist_t *p, gint count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_plist_set_copy_count </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>gint&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a27"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_set_current_standard_command" ref="a27" args="(stpui_plist_t *p, const char *val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_plist_set_current_standard_command </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a28"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_set_current_standard_command_n" ref="a28" args="(stpui_plist_t *p, const char *val, int n)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_plist_set_current_standard_command_n </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>n</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a22"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_set_custom_command" ref="a22" args="(stpui_plist_t *p, const char *val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_plist_set_custom_command </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a23"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_set_custom_command_n" ref="a23" args="(stpui_plist_t *p, const char *val, int n)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_plist_set_custom_command_n </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>n</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a19"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_set_extra_printer_options" ref="a19" args="(stpui_plist_t *p, const char *val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_plist_set_extra_printer_options </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a20"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_set_extra_printer_options_n" ref="a20" args="(stpui_plist_t *p, const char *val, int n)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_plist_set_extra_printer_options_n </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>n</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a10"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_set_name" ref="a10" args="(stpui_plist_t *p, const char *val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_plist_set_name </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a11"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_set_name_n" ref="a11" args="(stpui_plist_t *p, const char *val, int n)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_plist_set_name_n </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>n</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a16"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_set_output_filename" ref="a16" args="(stpui_plist_t *p, const char *val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_plist_set_output_filename </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a17"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_set_output_filename_n" ref="a17" args="(stpui_plist_t *p, const char *val, int n)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_plist_set_output_filename_n </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>n</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a13"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_set_queue_name" ref="a13" args="(stpui_plist_t *p, const char *val)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_plist_set_queue_name </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a14"></a><!-- doxytag: member="gutenprintui.h::stpui_plist_set_queue_name_n" ref="a14" args="(stpui_plist_t *p, const char *val, int n)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_plist_set_queue_name_n </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>val</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>n</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a61"></a><!-- doxytag: member="gutenprintui.h::stpui_print" ref="a61" args="(const stpui_plist_t *printer, stpui_image_t *im)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stpui_print </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>printer</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="structstpui__image.html">stpui_image_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>im</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a36"></a><!-- doxytag: member="gutenprintui.h::stpui_printer_initialize" ref="a36" args="(stpui_plist_t *printer)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_printer_initialize </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="structstpui__plist__t.html">stpui_plist_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>printer</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a41"></a><!-- doxytag: member="gutenprintui.h::stpui_printrc_load" ref="a41" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_printrc_load </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a43"></a><!-- doxytag: member="gutenprintui.h::stpui_printrc_save" ref="a43" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_printrc_save </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a48"></a><!-- doxytag: member="gutenprintui.h::stpui_set_errdata" ref="a48" args="(void *errdata)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_set_errdata </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>errdata</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a46"></a><!-- doxytag: member="gutenprintui.h::stpui_set_errfunc" ref="a46" args="(stp_outfunc_t wfunc)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_set_errfunc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">stp_outfunc_t&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>wfunc</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a32"></a><!-- doxytag: member="gutenprintui.h::stpui_set_global_parameter" ref="a32" args="(const char *param, const char *value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_set_global_parameter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>param</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a56"></a><!-- doxytag: member="gutenprintui.h::stpui_set_image_channel_depth" ref="a56" args="(gint bit_depth)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_set_image_channel_depth </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">gint&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>bit_depth</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a52"></a><!-- doxytag: member="gutenprintui.h::stpui_set_image_dimensions" ref="a52" args="(gint width, gint height)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_set_image_dimensions </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">gint&nbsp;</td>
+ <td class="mdname" nowrap> <em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>gint&nbsp;</td>
+ <td class="mdname" nowrap> <em>height</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a44"></a><!-- doxytag: member="gutenprintui.h::stpui_set_image_filename" ref="a44" args="(const char *)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_set_image_filename </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a55"></a><!-- doxytag: member="gutenprintui.h::stpui_set_image_raw_channels" ref="a55" args="(gint channels)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_set_image_raw_channels </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">gint&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>channels</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a53"></a><!-- doxytag: member="gutenprintui.h::stpui_set_image_resolution" ref="a53" args="(gdouble xres, gdouble yres)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_set_image_resolution </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">gdouble&nbsp;</td>
+ <td class="mdname" nowrap> <em>xres</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>gdouble&nbsp;</td>
+ <td class="mdname" nowrap> <em>yres</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a54"></a><!-- doxytag: member="gutenprintui.h::stpui_set_image_type" ref="a54" args="(const char *image_type)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_set_image_type </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>image_type</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a39"></a><!-- doxytag: member="gutenprintui.h::stpui_set_printrc_file" ref="a39" args="(const char *name)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_set_printrc_file </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>name</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a59"></a><!-- doxytag: member="gutenprintui.h::stpui_set_thumbnail_data" ref="a59" args="(void *)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_set_thumbnail_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a57"></a><!-- doxytag: member="gutenprintui.h::stpui_set_thumbnail_func" ref="a57" args="(get_thumbnail_func_t)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stpui_set_thumbnail_func </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="gutenprintui_8h.html#a1">get_thumbnail_func_t</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/index.html b/doc/gutenprintui2/html/index.html
new file mode 100644
index 0000000..93ee5e3
--- /dev/null
+++ b/doc/gutenprintui2/html/index.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindexHL" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libgutenprintui2 API Reference Documentation</h1>
+<p>
+<h3 align="center">5.0.0-rc1 </h3><hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/struct__StpuiCurve.html b/doc/gutenprintui2/html/struct__StpuiCurve.html
new file mode 100644
index 0000000..0fb5b48
--- /dev/null
+++ b/doc/gutenprintui2/html/struct__StpuiCurve.html
@@ -0,0 +1,396 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: _StpuiCurve Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>_StpuiCurve Struct Reference</h1><!-- doxytag: class="_StpuiCurve" --><code>#include &lt;curve.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GtkDrawingArea&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurve.html#o0">graph</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">gint&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurve.html#o1">cursor_type</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">gfloat&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurve.html#o2">min_x</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">gfloat&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurve.html#o3">max_x</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">gfloat&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurve.html#o4">min_y</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">gfloat&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurve.html#o5">max_y</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GdkPixmap *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurve.html#o6">pixmap</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="curve_8h.html#a19">StpuiCurveType</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurve.html#o7">curve_type</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">gint&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurve.html#o8">height</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">gint&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurve.html#o9">grab_point</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">gint&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurve.html#o10">last</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">gint&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurve.html#o11">num_points</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GdkPoint *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurve.html#o12">point</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">gint&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurve.html#o13">num_ctlpoints</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">gfloat(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurve.html#o14">ctlpoint</a> )[2]</td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o14"></a><!-- doxytag: member="_StpuiCurve::ctlpoint" ref="o14" args=")[2]" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">gfloat(* <a class="el" href="struct__StpuiCurve.html#o14">_StpuiCurve::ctlpoint</a>)[2] </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="_StpuiCurve::cursor_type" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">gint <a class="el" href="struct__StpuiCurve.html#o1">_StpuiCurve::cursor_type</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o7"></a><!-- doxytag: member="_StpuiCurve::curve_type" ref="o7" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="curve_8h.html#a19">StpuiCurveType</a> <a class="el" href="struct__StpuiCurve.html#o7">_StpuiCurve::curve_type</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o9"></a><!-- doxytag: member="_StpuiCurve::grab_point" ref="o9" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">gint <a class="el" href="struct__StpuiCurve.html#o9">_StpuiCurve::grab_point</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="_StpuiCurve::graph" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GtkDrawingArea <a class="el" href="struct__StpuiCurve.html#o0">_StpuiCurve::graph</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o8"></a><!-- doxytag: member="_StpuiCurve::height" ref="o8" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">gint <a class="el" href="struct__StpuiCurve.html#o8">_StpuiCurve::height</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o10"></a><!-- doxytag: member="_StpuiCurve::last" ref="o10" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">gint <a class="el" href="struct__StpuiCurve.html#o10">_StpuiCurve::last</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="_StpuiCurve::max_x" ref="o3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">gfloat <a class="el" href="struct__StpuiCurve.html#o3">_StpuiCurve::max_x</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o5"></a><!-- doxytag: member="_StpuiCurve::max_y" ref="o5" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">gfloat <a class="el" href="struct__StpuiCurve.html#o5">_StpuiCurve::max_y</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o2"></a><!-- doxytag: member="_StpuiCurve::min_x" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">gfloat <a class="el" href="struct__StpuiCurve.html#o2">_StpuiCurve::min_x</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="_StpuiCurve::min_y" ref="o4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">gfloat <a class="el" href="struct__StpuiCurve.html#o4">_StpuiCurve::min_y</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o13"></a><!-- doxytag: member="_StpuiCurve::num_ctlpoints" ref="o13" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">gint <a class="el" href="struct__StpuiCurve.html#o13">_StpuiCurve::num_ctlpoints</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o11"></a><!-- doxytag: member="_StpuiCurve::num_points" ref="o11" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">gint <a class="el" href="struct__StpuiCurve.html#o11">_StpuiCurve::num_points</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o6"></a><!-- doxytag: member="_StpuiCurve::pixmap" ref="o6" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GdkPixmap* <a class="el" href="struct__StpuiCurve.html#o6">_StpuiCurve::pixmap</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o12"></a><!-- doxytag: member="_StpuiCurve::point" ref="o12" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GdkPoint* <a class="el" href="struct__StpuiCurve.html#o12">_StpuiCurve::point</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprintui2/<a class="el" href="curve_8h.html">curve.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/struct__StpuiCurveClass.html b/doc/gutenprintui2/html/struct__StpuiCurveClass.html
new file mode 100644
index 0000000..b37b862
--- /dev/null
+++ b/doc/gutenprintui2/html/struct__StpuiCurveClass.html
@@ -0,0 +1,171 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: _StpuiCurveClass Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>_StpuiCurveClass Struct Reference</h1><!-- doxytag: class="_StpuiCurveClass" --><code>#include &lt;curve.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GtkDrawingAreaClass&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurveClass.html#o0">parent_class</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurveClass.html#o1">curve_type_changed</a> )(<a class="el" href="struct__StpuiCurve.html">StpuiCurve</a> *curve)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurveClass.html#o2">_gtk_reserved1</a> )(void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurveClass.html#o3">_gtk_reserved2</a> )(void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurveClass.html#o4">_gtk_reserved3</a> )(void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiCurveClass.html#o5">_gtk_reserved4</a> )(void)</td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o2"></a><!-- doxytag: member="_StpuiCurveClass::_gtk_reserved1" ref="o2" args=")(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="struct__StpuiCurveClass.html#o2">_StpuiCurveClass::_gtk_reserved1</a>)(void) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="_StpuiCurveClass::_gtk_reserved2" ref="o3" args=")(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="struct__StpuiCurveClass.html#o3">_StpuiCurveClass::_gtk_reserved2</a>)(void) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="_StpuiCurveClass::_gtk_reserved3" ref="o4" args=")(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="struct__StpuiCurveClass.html#o4">_StpuiCurveClass::_gtk_reserved3</a>)(void) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o5"></a><!-- doxytag: member="_StpuiCurveClass::_gtk_reserved4" ref="o5" args=")(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="struct__StpuiCurveClass.html#o5">_StpuiCurveClass::_gtk_reserved4</a>)(void) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="_StpuiCurveClass::curve_type_changed" ref="o1" args=")(StpuiCurve *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="struct__StpuiCurveClass.html#o1">_StpuiCurveClass::curve_type_changed</a>)(<a class="el" href="struct__StpuiCurve.html">StpuiCurve</a> *curve) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="_StpuiCurveClass::parent_class" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GtkDrawingAreaClass <a class="el" href="struct__StpuiCurveClass.html#o0">_StpuiCurveClass::parent_class</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprintui2/<a class="el" href="curve_8h.html">curve.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/struct__StpuiGammaCurve.html b/doc/gutenprintui2/html/struct__StpuiGammaCurve.html
new file mode 100644
index 0000000..7e7e74e
--- /dev/null
+++ b/doc/gutenprintui2/html/struct__StpuiGammaCurve.html
@@ -0,0 +1,196 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: _StpuiGammaCurve Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>_StpuiGammaCurve Struct Reference</h1><!-- doxytag: class="_StpuiGammaCurve" --><code>#include &lt;gammacurve.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GtkVBox&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiGammaCurve.html#o0">vbox</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GtkWidget *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiGammaCurve.html#o1">table</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GtkWidget *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiGammaCurve.html#o2">curve</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GtkWidget *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiGammaCurve.html#o3">button</a> [5]</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">gfloat&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiGammaCurve.html#o4">gamma</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GtkWidget *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiGammaCurve.html#o5">gamma_dialog</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GtkWidget *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiGammaCurve.html#o6">gamma_text</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o3"></a><!-- doxytag: member="_StpuiGammaCurve::button" ref="o3" args="[5]" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GtkWidget* <a class="el" href="struct__StpuiGammaCurve.html#o3">_StpuiGammaCurve::button</a>[5] </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o2"></a><!-- doxytag: member="_StpuiGammaCurve::curve" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GtkWidget* <a class="el" href="struct__StpuiGammaCurve.html#o2">_StpuiGammaCurve::curve</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="_StpuiGammaCurve::gamma" ref="o4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">gfloat <a class="el" href="struct__StpuiGammaCurve.html#o4">_StpuiGammaCurve::gamma</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o5"></a><!-- doxytag: member="_StpuiGammaCurve::gamma_dialog" ref="o5" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GtkWidget* <a class="el" href="struct__StpuiGammaCurve.html#o5">_StpuiGammaCurve::gamma_dialog</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o6"></a><!-- doxytag: member="_StpuiGammaCurve::gamma_text" ref="o6" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GtkWidget* <a class="el" href="struct__StpuiGammaCurve.html#o6">_StpuiGammaCurve::gamma_text</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="_StpuiGammaCurve::table" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GtkWidget* <a class="el" href="struct__StpuiGammaCurve.html#o1">_StpuiGammaCurve::table</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="_StpuiGammaCurve::vbox" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GtkVBox <a class="el" href="struct__StpuiGammaCurve.html#o0">_StpuiGammaCurve::vbox</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprintui2/<a class="el" href="gammacurve_8h.html">gammacurve.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/struct__StpuiGammaCurveClass.html b/doc/gutenprintui2/html/struct__StpuiGammaCurveClass.html
new file mode 100644
index 0000000..fa85d0e
--- /dev/null
+++ b/doc/gutenprintui2/html/struct__StpuiGammaCurveClass.html
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: _StpuiGammaCurveClass Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>_StpuiGammaCurveClass Struct Reference</h1><!-- doxytag: class="_StpuiGammaCurveClass" --><code>#include &lt;gammacurve.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GtkVBoxClass&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiGammaCurveClass.html#o0">parent_class</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiGammaCurveClass.html#o1">_gtk_reserved1</a> )(void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiGammaCurveClass.html#o2">_gtk_reserved2</a> )(void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiGammaCurveClass.html#o3">_gtk_reserved3</a> )(void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__StpuiGammaCurveClass.html#o4">_gtk_reserved4</a> )(void)</td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o1"></a><!-- doxytag: member="_StpuiGammaCurveClass::_gtk_reserved1" ref="o1" args=")(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="struct__StpuiGammaCurveClass.html#o1">_StpuiGammaCurveClass::_gtk_reserved1</a>)(void) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o2"></a><!-- doxytag: member="_StpuiGammaCurveClass::_gtk_reserved2" ref="o2" args=")(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="struct__StpuiGammaCurveClass.html#o2">_StpuiGammaCurveClass::_gtk_reserved2</a>)(void) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="_StpuiGammaCurveClass::_gtk_reserved3" ref="o3" args=")(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="struct__StpuiGammaCurveClass.html#o3">_StpuiGammaCurveClass::_gtk_reserved3</a>)(void) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="_StpuiGammaCurveClass::_gtk_reserved4" ref="o4" args=")(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="struct__StpuiGammaCurveClass.html#o4">_StpuiGammaCurveClass::_gtk_reserved4</a>)(void) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="_StpuiGammaCurveClass::parent_class" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GtkVBoxClass <a class="el" href="struct__StpuiGammaCurveClass.html#o0">_StpuiGammaCurveClass::parent_class</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprintui2/<a class="el" href="gammacurve_8h.html">gammacurve.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/structstpui__image.html b/doc/gutenprintui2/html/structstpui__image.html
new file mode 100644
index 0000000..e1d6e7c
--- /dev/null
+++ b/doc/gutenprintui2/html/structstpui__image.html
@@ -0,0 +1,221 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: stpui_image Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>stpui_image Struct Reference</h1><!-- doxytag: class="stpui_image" --><code>#include &lt;gutenprintui.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">stp_image_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__image.html#o0">im</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__image.html#o1">transpose</a> )(struct <a class="el" href="structstpui__image.html">stpui_image</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__image.html#o2">hflip</a> )(struct <a class="el" href="structstpui__image.html">stpui_image</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__image.html#o3">vflip</a> )(struct <a class="el" href="structstpui__image.html">stpui_image</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__image.html#o4">rotate_ccw</a> )(struct <a class="el" href="structstpui__image.html">stpui_image</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__image.html#o5">rotate_cw</a> )(struct <a class="el" href="structstpui__image.html">stpui_image</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__image.html#o6">rotate_180</a> )(struct <a class="el" href="structstpui__image.html">stpui_image</a> *image)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__image.html#o7">crop</a> )(struct <a class="el" href="structstpui__image.html">stpui_image</a> *image, int left, int top, int right, int bottom)</td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o7"></a><!-- doxytag: member="stpui_image::crop" ref="o7" args=")(struct stpui_image *image, int left, int top, int right, int bottom)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="structstpui__image.html#o7">stpui_image::crop</a>)(struct <a class="el" href="structstpui__image.html">stpui_image</a> *image, int left, int top, int right, int bottom) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stpui_image::hflip" ref="o2" args=")(struct stpui_image *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="structstpui__image.html#o2">stpui_image::hflip</a>)(struct <a class="el" href="structstpui__image.html">stpui_image</a> *image) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stpui_image::im" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">stp_image_t <a class="el" href="structstpui__image.html#o0">stpui_image::im</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o6"></a><!-- doxytag: member="stpui_image::rotate_180" ref="o6" args=")(struct stpui_image *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="structstpui__image.html#o6">stpui_image::rotate_180</a>)(struct <a class="el" href="structstpui__image.html">stpui_image</a> *image) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="stpui_image::rotate_ccw" ref="o4" args=")(struct stpui_image *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="structstpui__image.html#o4">stpui_image::rotate_ccw</a>)(struct <a class="el" href="structstpui__image.html">stpui_image</a> *image) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o5"></a><!-- doxytag: member="stpui_image::rotate_cw" ref="o5" args=")(struct stpui_image *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="structstpui__image.html#o5">stpui_image::rotate_cw</a>)(struct <a class="el" href="structstpui__image.html">stpui_image</a> *image) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stpui_image::transpose" ref="o1" args=")(struct stpui_image *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="structstpui__image.html#o1">stpui_image::transpose</a>)(struct <a class="el" href="structstpui__image.html">stpui_image</a> *image) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="stpui_image::vflip" ref="o3" args=")(struct stpui_image *image)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void(* <a class="el" href="structstpui__image.html#o3">stpui_image::vflip</a>)(struct <a class="el" href="structstpui__image.html">stpui_image</a> *image) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprintui2/<a class="el" href="gutenprintui_8h.html">gutenprintui.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/structstpui__plist__t.html b/doc/gutenprintui2/html/structstpui__plist__t.html
new file mode 100644
index 0000000..5cca4a3
--- /dev/null
+++ b/doc/gutenprintui2/html/structstpui__plist__t.html
@@ -0,0 +1,346 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: stpui_plist_t Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>stpui_plist_t Struct Reference</h1><!-- doxytag: class="stpui_plist_t" --><code>#include &lt;gutenprintui.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__plist__t.html#o0">name</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="gutenprintui_8h.html#a63">command_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__plist__t.html#o1">command_type</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__plist__t.html#o2">queue_name</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__plist__t.html#o3">extra_printer_options</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__plist__t.html#o4">custom_command</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__plist__t.html#o5">current_standard_command</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__plist__t.html#o6">output_filename</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__plist__t.html#o7">scaling</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="gutenprintui_8h.html#a62">orient_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__plist__t.html#o8">orientation</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__plist__t.html#o9">unit</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__plist__t.html#o10">auto_size_roll_feed_paper</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__plist__t.html#o11">invalid_mask</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">stp_vars_t *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstpui__plist__t.html#o12">v</a></td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o10"></a><!-- doxytag: member="stpui_plist_t::auto_size_roll_feed_paper" ref="o10" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstpui__plist__t.html#o10">stpui_plist_t::auto_size_roll_feed_paper</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o1"></a><!-- doxytag: member="stpui_plist_t::command_type" ref="o1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="gutenprintui_8h.html#a63">command_t</a> <a class="el" href="structstpui__plist__t.html#o1">stpui_plist_t::command_type</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o5"></a><!-- doxytag: member="stpui_plist_t::current_standard_command" ref="o5" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* <a class="el" href="structstpui__plist__t.html#o5">stpui_plist_t::current_standard_command</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o4"></a><!-- doxytag: member="stpui_plist_t::custom_command" ref="o4" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* <a class="el" href="structstpui__plist__t.html#o4">stpui_plist_t::custom_command</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o3"></a><!-- doxytag: member="stpui_plist_t::extra_printer_options" ref="o3" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* <a class="el" href="structstpui__plist__t.html#o3">stpui_plist_t::extra_printer_options</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o11"></a><!-- doxytag: member="stpui_plist_t::invalid_mask" ref="o11" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstpui__plist__t.html#o11">stpui_plist_t::invalid_mask</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o0"></a><!-- doxytag: member="stpui_plist_t::name" ref="o0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* <a class="el" href="structstpui__plist__t.html#o0">stpui_plist_t::name</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o8"></a><!-- doxytag: member="stpui_plist_t::orientation" ref="o8" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="gutenprintui_8h.html#a62">orient_t</a> <a class="el" href="structstpui__plist__t.html#o8">stpui_plist_t::orientation</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o6"></a><!-- doxytag: member="stpui_plist_t::output_filename" ref="o6" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* <a class="el" href="structstpui__plist__t.html#o6">stpui_plist_t::output_filename</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o2"></a><!-- doxytag: member="stpui_plist_t::queue_name" ref="o2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* <a class="el" href="structstpui__plist__t.html#o2">stpui_plist_t::queue_name</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o7"></a><!-- doxytag: member="stpui_plist_t::scaling" ref="o7" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">float <a class="el" href="structstpui__plist__t.html#o7">stpui_plist_t::scaling</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o9"></a><!-- doxytag: member="stpui_plist_t::unit" ref="o9" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="structstpui__plist__t.html#o9">stpui_plist_t::unit</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="o12"></a><!-- doxytag: member="stpui_plist_t::v" ref="o12" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">stp_vars_t* <a class="el" href="structstpui__plist__t.html#o12">stpui_plist_t::v</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>include/gutenprintui2/<a class="el" href="gutenprintui_8h.html">gutenprintui.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/gutenprintui2/html/typebuiltins_8h.html b/doc/gutenprintui2/html/typebuiltins_8h.html
new file mode 100644
index 0000000..2d3d0b2
--- /dev/null
+++ b/doc/gutenprintui2/html/typebuiltins_8h.html
@@ -0,0 +1,187 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprintui2 API Reference: include/gutenprintui2/typebuiltins.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">gutenprintui2</a></div>
+<h1>typebuiltins.h File Reference</h1><code>#include &lt;glib-object.h&gt;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="typebuiltins_8h.html#a0">STPUI_TYPE_ORIENT_T</a>&nbsp;&nbsp;&nbsp;(orient_t_orient_t_get_type())</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="typebuiltins_8h.html#a1">STPUI_TYPE_COMMAND_T</a>&nbsp;&nbsp;&nbsp;(command_t_command_t_get_type())</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="typebuiltins_8h.html#a2">STPUI_TYPE_CURVE_TYPE</a>&nbsp;&nbsp;&nbsp;(stpui_curve_type_get_type())</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">G_BEGIN_DECLS GType&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="typebuiltins_8h.html#a3">orient_t_orient_t_get_type</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GType&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="typebuiltins_8h.html#a4">command_t_command_t_get_type</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GType&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="typebuiltins_8h.html#a5">stpui_curve_type_get_type</a> (void)</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="a1"></a><!-- doxytag: member="typebuiltins.h::STPUI_TYPE_COMMAND_T" ref="a1" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STPUI_TYPE_COMMAND_T&nbsp;&nbsp;&nbsp;(command_t_command_t_get_type()) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a2"></a><!-- doxytag: member="typebuiltins.h::STPUI_TYPE_CURVE_TYPE" ref="a2" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STPUI_TYPE_CURVE_TYPE&nbsp;&nbsp;&nbsp;(stpui_curve_type_get_type()) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a0"></a><!-- doxytag: member="typebuiltins.h::STPUI_TYPE_ORIENT_T" ref="a0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define STPUI_TYPE_ORIENT_T&nbsp;&nbsp;&nbsp;(orient_t_orient_t_get_type()) </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a4"></a><!-- doxytag: member="typebuiltins.h::command_t_command_t_get_type" ref="a4" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GType command_t_command_t_get_type </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a3"></a><!-- doxytag: member="typebuiltins.h::orient_t_orient_t_get_type" ref="a3" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">G_BEGIN_DECLS GType orient_t_orient_t_get_type </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a5"></a><!-- doxytag: member="typebuiltins.h::stpui_curve_type_get_type" ref="a5" args="(void)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">GType stpui_curve_type_get_type </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:12 2005 for libgutenprintui2 API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>
diff --git a/doc/indices.texi b/doc/indices.texi
deleted file mode 100644
index fdabf0a..0000000
--- a/doc/indices.texi
+++ /dev/null
@@ -1,14 +0,0 @@
-@node Data Type and Variable Index, Function and Macro Index, Appendices, Top
-@unnumbered Data Type and Variable Index
-
-@printindex vr
-
-@node Function and Macro Index, Concept Index, Data Type and Variable Index, Top
-@unnumbered Function and Macro Index
-
-@printindex fn
-
-@node Concept Index, , Function and Macro Index, Top
-@unnumbered Concept Index
-
-@printindex cp
diff --git a/doc/integrating.texi b/doc/integrating.texi
deleted file mode 100644
index 75e150b..0000000
--- a/doc/integrating.texi
+++ /dev/null
@@ -1,192 +0,0 @@
-@node Integrating libgimpprint, Functions, Using libgimpprint, Top
-@chapter Integrating libgimpprint
-@cindex integrating
-
-This chapter describes how to integrate the compiling and linking of
-programs using libgimpprint with build scripts. Commonly used systems include
-@command{make}, but more commonly @file{Makefile} files are generated by using
-tools such as @command{autoconf} and @command{automake}.
-
-@menu
-* gimpprint-config:: Getting the correct compiler and linker flags
-* make:: Normal makefiles
-* autoconf:: Macro to automatically check for libgimpprint
-* automake:: Automatically defined variables to use
-@end menu
-
-
-@node gimpprint-config, make, , Integrating libgimpprint
-@section @command{gimpprint-config}
-@pindex gimpprint-config
-
-Depending on the setup of the computer system GIMP-Print was installed on, as
-well as the options passed to @command{configure} when configuring the
-package when it was built, the @env{CFLAGS} and @env{LIBS} parameters
-needed to compile and link programs with libgimpprint may vary. To make it
-simple to determine what these are on any given system, the script
-@command{gimpprint-config} was created. It's job is to output the
-correct parameters for the setup on your system. The following options
-are available:
-
-@example
-roger@@whinlatter:~/gimpprint/devel$ gimpprint-config --help
-Usage: gimpprint-config [OPTIONS] [LIBRARIES]
-Options:
- [--prefix[=DIR]]
- [--exec-prefix[=DIR]]
- [--version]
- [--libs]
- [--cflags]
-Libraries:
- gimpprint
-@end example
-
-The @option{--prefix} and @option{--exec-prefix} options are only needed if the
-installed locations of parts of GIMP-Print are different from the configured
-locations. These should never be needed if GIMP-Print was properly configured
-and installed.
-
-The installed version of GIMP-Print can be obtained with the
-@option{--version} option:
-
-@example
-roger@@whinlatter:~/gimpprint/devel$ gimpprint-config --version
-@value{VERSION}
-@end example
-
-The correct @env{CFLAGS} to use can be obtained with the @option{--cflags}
-option:
-
-@example
-roger@@whinlatter:~/gimpprint/devel$ gimpprint-config --cflags
-
-@end example
-
-In this case, there are no special @env{CFLAGS} required to compile programs.
-
-The correct @env{LIBS} to use can the obtained with the @option{--libs} option:
-
-@example
-roger@@whinlatter:~/gimpprint/devel$ gimpprint-config --libs
--L/usr/lib -lgimpprint -lm
-@end example
-
-The command can be used from the shell by enclosing it in backquotes @samp{`}:
-
-@example
-gcc `gimpprint-config --cflags` -c prog.c
-gcc `gimpprint-config --libs` -o prog prog.o
-@end example
-
-However, this is not the way it it typically used. Normally it is used in a
-@file{Makefile} (@pxref{make}) or by an @command{m4} macro in a @command{configure}
-script (@pxref{autoconf}).
-
-
-@node make, autoconf, gimpprint-config, Integrating libgimpprint
-@section @command{make}
-@pindex make
-
-If you use @command{make} with your own @file{Makefile} files, then you are on
-your own. This manual offers no assistance with doing this. Only the following
-suggestion is offered:
-
-@example
-GIMPPRINT_VERSION = $(shell gimpprint-config --version)
-GIMPPRINT_CFLAGS = $(shell gimpprint-config --cflags)
-GIMPPRINT_LIBS = $(shell gimpprint-config --libs)
-@end example
-
-How you choose to use these variables is entirely up to you. @inforef{Top, GNU
-make, make}, for more information.
-
-
-@node autoconf, automake, make, Integrating libgimpprint
-@section @command{autoconf}
-@pindex autoconf
-@cindex m4 macros
-
-The @command{autoconf} program produces a Bourne shell script called
-@file{configure} from a template file called @file{configure.in}.
-@file{configure.in} contains both Bourne shell script, and @command{m4} macros.
-@command{autoconf} expands the @command{m4} macros into `real' shell script.
-The resulting @file{configure} script performs various checks for installed
-programs, compiler characteristics and other system information such as
-available headers and libraries. @inforef{Top, GNU autoconf, autoconf}, for
-more information.
-
-GIMP-Print provides an @command{m4} macro, @code{AM_PATH_GIMPPRINT}, suitable for
-use in a @file{configure.in}. It defines the environment variables
-@env{GIMPPRINT_CFLAGS}, @env{GIMPPRINT_LIBS} and @env{GIMPPRINT_CONFIG}. You can
-optionally specify a minimum version of the library to use, and shell script to
-run if the test suceeds or fails.
-
-@defmac AM_PATH_GIMPPRINT (@r{[}@var{minimum-version} @r{[}, @var{action-if-found} @r{[}, @var{action-if-not-found}@r{]]]})
-Check for an installed version of GIMP-Print greater than or equal to
-@var{minimum-version}.
-
-@var{action-if-found} is a list of shell commands to run if the check
-for the library succeeds; @var{action-if-not-found} is a list of
-shell commands to run if the check fails.
-
-The macro sets the following environment variables: @env{GIMPPRINT_CFLAGS},
-@env{GIMPPRINT_LIBS} and @env{GIMPPRINT_CONFIG}. It also will substitute them
-into any @file{Makefile.in} you specify in @code{AC_OUTPUT} because it calls
-@code{AC_SUBST} for each of them. However, you will probably be using
-@command{automake} to generate your @file{Makefile.in} files
-(@pxref{automake}).
-
-@end defmac
-
-@node automake, , autoconf, Integrating libgimpprint
-@section @command{automake}
-@pindex automake
-
-The @command{automake} program can be used to generate @file{Makefile.in} files
-suitable for use with a @file{configure} script generated by
-@command{autoconf}. As @command{automake} @emph{requires} @command{autoconf},
-this section will assume the use of a @file{configure} script which uses the
-@code{AM_PATH_GIMPPRINT} macro (there is little point in @emph{not} using it!).
-
-It is highly recommeded that you use GNU @command{autoconf} and
-@command{automake}. They will allow you to make your software build on most
-platforms with most compilers. @command{automake} makes writing complex
-@file{Makefile} files very easy, by expressing how to build your packages
-in terms of what files are required to build a project and the installation
-locations of the files. It imposes a few limitations over using plain
-@file{Makefile} files, such as in the use of conditionals, but these problems
-are vastly outweighed by the benefits it brings. It also creates many extra
-targets in the generated @file{Makefile.in} files such as @command{dist},
-@command{distcheck}, @command{clean}, @command{distclean},
-@command{maintainer-clean} and @command{tags}, and there are many more more
-available. @inforef{Top, GNU automake, automake}, for more information.
-
-Because @code{AM_PATH_GIMPPRINT} calls @code{AC_SUBST} to substitute
-@env{GIMPPRINT_CFLAGS}, @env{GIMPPRINT_LIBS} and @env{GIMPPRINT_CONFIG},
-@command{automake} will automatically set these variables in the
-@file{Makefile.in} files it generates, requiring no additional effort on
-your part!
-
-As in previous examples, we will make a program @command{prog} from a file @file{prog.c}. This is how one might build write a @file{Makefile.am} to do this:
-
-@example
-AUTOMAKE_OPTIONS = 1.4 gnu
-MAINT_CHARSET = latin1
-
-@@SET_MAKE@@
-
-CFLAGS = @@CFLAGS@@
-
-INCLUDES = @@INCLUDES@@ $(GIMPPRINT_CFLAGS)
-
-bin_PROGRAMS = prog
-prog_SOURCES = prog.c
-prog_LDADD = $(GIMPPRINT_LIBS)
-
-MAINTAINERCLEANFILES = Makefile.in
-@end example
-
-That's all there is to it! Please note that this example also requires the
-macro @code{AC_PROG_MAKE_SET} to be used in @file{configure.in} and the use of
-@code{AC_SUBST} to substitute @env{CFLAGS} and @env{INCLUDES} where
-@code{@@CFLAGS@@} and @code{@@INCLUDES@@} are found in the file, respectively.
diff --git a/doc/introduction.texi b/doc/introduction.texi
deleted file mode 100644
index 3dab48e..0000000
--- a/doc/introduction.texi
+++ /dev/null
@@ -1,38 +0,0 @@
-@node Instructions, Copying, Top, Top
-@unnumbered Preface
-
-@cindex reading
-@cindex manual, how to read
-@cindex how to read
-This manual documents the use of the GIMP-Print package, focusing mainly on the
-libgimpprint library that is the core of GIMP-Print. Parts of the manual which
-describe the use of libgimpprint are aimed primarily at programmers, and do
-assume that the reader is familiar with C programming, and using standard
-programming tools on GNU or UNIX systems. Other parts of the manual document
-the use of the programs that make up the GIMP-Print package, and assume no
-knowledge other than the basics of using a shell and editor.
-
-The best way to learn how to use libgimpprint in your own programs is to read
-the manual from start to finish, using the examples given in the text to learn
-how it works. The bulk of the manual can be used as a reference once one
-understands the basics.
-
-The manual is split into several parts for the programmer. It starts
-with a simple usage example of how to link a program with libgimpprint,
-then how to integrate this into package build scripts, using
-@command{make}, @command{autoconf} and @command{automake}. This is
-followed by a detailed function reference, including descriptions of all
-the data types used.
-
-For the end-user, there is a section on all of the programs that come
-with GIMP-Print, including the GIMP @command{print} plugin, and the CUPS
-and Ghostscript drivers.
-
-The appendices at the end of the manual detail the dither and weave
-algorithms used in libgimpprint, the ESC/P2 printer control language
-used in Epson printers and how to add support for a new printer to
-libgimpprint.
-
-@sp 2
-@center We hope you enjoy using GIMP-Print!
-@center ---The GIMP-Print project
diff --git a/doc/manual-html/gimpprint_1.html b/doc/manual-html/gimpprint_1.html
deleted file mode 100644
index efd7c7f..0000000
--- a/doc/manual-html/gimpprint_1.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Instructions</TITLE>
-</HEAD>
-<BODY>
-Go to the first, previous, <A HREF="gimpprint_2.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC1" HREF="gimpprint_toc.html#TOC1">Preface</A></H1>
-
-<P>
-<A NAME="IDX1"></A>
-<A NAME="IDX2"></A>
-<A NAME="IDX3"></A>
-This manual documents the use of the GIMP-Print package, focusing mainly on the
-libgimpprint library that is the core of GIMP-Print. Parts of the manual which
-describe the use of libgimpprint are aimed primarily at programmers, and do
-assume that the reader is familiar with C programming, and using standard
-programming tools on GNU or UNIX systems. Other parts of the manual document
-the use of the programs that make up the GIMP-Print package, and assume no
-knowledge other than the basics of using a shell and editor.
-
-</P>
-<P>
-The best way to learn how to use libgimpprint in your own programs is to read
-the manual from start to finish, using the examples given in the text to learn
-how it works. The bulk of the manual can be used as a reference once one
-understands the basics.
-
-</P>
-<P>
-The manual is split into several parts for the programmer. It starts
-with a simple usage example of how to link a program with libgimpprint,
-then how to integrate this into package build scripts, using
-@command{make}, @command{autoconf} and @command{automake}. This is
-followed by a detailed function reference, including descriptions of all
-the data types used.
-
-</P>
-<P>
-For the end-user, there is a section on all of the programs that come
-with GIMP-Print, including the GIMP @command{print} plugin, and the CUPS
-and Ghostscript drivers.
-
-</P>
-<P>
-The appendices at the end of the manual detail the dither and weave
-algorithms used in libgimpprint, the ESC/P2 printer control language
-used in Epson printers and how to add support for a new printer to
-libgimpprint.
-
-</P>
-<P>
-We hope you enjoy using GIMP-Print!
---The GIMP-Print project
-<P><HR><P>
-Go to the first, previous, <A HREF="gimpprint_2.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_10.html b/doc/manual-html/gimpprint_10.html
deleted file mode 100644
index 03be2c3..0000000
--- a/doc/manual-html/gimpprint_10.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Functions</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_9.html">previous</A>, <A HREF="gimpprint_11.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC15" HREF="gimpprint_toc.html#TOC15">4 Functions</A></H1>
-<P>
-<A NAME="IDX13"></A>
-
-</P>
-<P>
-This section of the manual is a complete reference to all of the functions
-comprising libgimpprint, with examples.
-
-</P>
-<P>
-All of the libgimpprint functions can be declared by including the master
-libgimpprint header, <TT>`&#60;gimp-print/gimp-print.h&#62;'</TT>. This should be done in
-every source file that uses gimpprint functions by putting
-
-</P>
-
-<PRE>
-#include &#60;gimp-print/gimp-print.h&#62;
-</PRE>
-
-<P>
-at the top of each file.
-
-</P>
-
-<UL>
-<LI><A HREF="gimpprint_11.html#SEC16">Main functions</A>: Essential functions every program must call.
-<LI><A HREF="gimpprint_12.html#SEC17">stp_vars_t functions</A>: Using stp_vars_t.
-<LI><A HREF="gimpprint_13.html#SEC18">Dither functions</A>: Dither algorithms.
-<LI><A HREF="gimpprint_14.html#SEC19">Options functions</A>: Options.
-<LI><A HREF="gimpprint_15.html#SEC20">Paper functions</A>: Paper size and orientation.
-<LI><A HREF="gimpprint_16.html#SEC21">Printer functions</A>: Printer selection.
-<LI><A HREF="gimpprint_17.html#SEC22">Settings functions</A>: Getting and changing settings.
-<LI><A HREF="gimpprint_18.html#SEC23">Version functions</A>: Getting libgimpprint version information.
-</UL>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_9.html">previous</A>, <A HREF="gimpprint_11.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_11.html b/doc/manual-html/gimpprint_11.html
deleted file mode 100644
index 3ba2822..0000000
--- a/doc/manual-html/gimpprint_11.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Main functions</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_10.html">previous</A>, <A HREF="gimpprint_12.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC16" HREF="gimpprint_toc.html#TOC16">4.1 Main functions</A></H2>
-<P>
-<A NAME="IDX14"></A>
-
-</P>
-<P>
-These functions are essential to the correct functioning of
-libgimpprint. All or most other functions in the library depend
-absolutely upon them. In the case of <CODE>stp_init</CODE>, this function
-<EM>must</EM> be called before any of the other functions in the library.
-
-</P>
-
-<P>
-<A NAME="IDX15"></A>
-<DL>
-<DT><U>Function:</U> int <B>stp_init</B> <I>(void)</I>
-<DD><A NAME="IDX16"></A>
-
-</P>
-<P>
-This function initialises the libgimpprint library. It must be called before
-any of the other libgimpprint functions are called. It is responsible for
-setting up message catalogues (for internationalisation). This function
-may be called more than once, at any stage during the execution of a
-program.
-
-</P>
-<P>
-It returns zero on success, nonzero on failure.
-</DL>
-
-</P>
-<P>
-<CODE>stp_init</CODE> might be used as follows:
-
-</P>
-
-<PRE>
-int
-main (int argc, char **argv)
-{
- stp_init();
-
- ...
-
-}
-</PRE>
-
-<P>
-<A NAME="IDX17"></A>
-<DL>
-<DT><U>Function:</U> void * <B>stp_malloc</B> <I>(size_t <VAR>size</VAR>)</I>
-<DD><A NAME="IDX18"></A>
-
-</P>
-<P>
-Where <VAR>size</VAR> is the amount of memory to allocate (in bytes).
-
-</P>
-<P>
-This function allocates memory. It will always return a pointer to the
-allocated memory. It will not return on failure.
-
-</P>
-<P>
-It returns a pointer to the allocated memory.
-</DL>
-
-</P>
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_10.html">previous</A>, <A HREF="gimpprint_12.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_12.html b/doc/manual-html/gimpprint_12.html
deleted file mode 100644
index 59eb45e..0000000
--- a/doc/manual-html/gimpprint_12.html
+++ /dev/null
@@ -1,558 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - stp_vars_t functions</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_11.html">previous</A>, <A HREF="gimpprint_13.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC17" HREF="gimpprint_toc.html#TOC17">4.2 <CODE>stp_vars_t</CODE> functions</A></H2>
-<P>
-<A NAME="IDX19"></A>
-
-</P>
-<P>
-<DL>
-<DT><U>Data type:</U> void * <B>stp_vars_t</B>
-<DD><A NAME="IDX20"></A>
-This is an opaque data type, whose structure is not visible to the
-user. This object contains all of the information about settings for
-a given printer, such as color (contrast, brightness), the type of
-printer, the dithering algorithm in use, and so forth. Please see the
-<CODE>stp_set_*</CODE> and <CODE>stp_get_*</CODE> functions below for the
-accessors and mutators for this data type.
-</DL>
-
-</P>
-
-<P>
-<DL>
-<DT><U>Function:</U> stp_vars_t <B>stp_allocate_vars</B> <I>(void)</I>
-<DD><A NAME="IDX21"></A>
-Allocate a new <CODE>stp_vars_t</CODE> with default settings for all members.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void <B>stp_copy_vars</B> <I>(stp_vars_t <VAR>vd</VAR>, const stp_vars_t <VAR>vs</VAR>)</I>
-<DD><A NAME="IDX22"></A>
-Copy the settings from <VAR>vs</VAR> to <VAR>vd</VAR>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> stp_vars_t <B>stp_allocate_copy</B> <I>(const stp_vars_t <VAR>vs</VAR>)</I>
-<DD><A NAME="IDX23"></A>
-Allocate a new <CODE>stp_vars_t</CODE>, copying settings from <VAR>vs</VAR>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void <B>stp_free_vars</B> <I>(stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX24"></A>
-Free all resources associated with <VAR>vv</VAR>. <VAR>vv</VAR> must not be
-used in any way following this call.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_get_output_to</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX25"></A>
-<DT><U>Function:</U> void <B>stp_set_output_to</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>)</I>
-<DD><A NAME="IDX26"></A>
-<DT><U>Function:</U> void <B>stp_set_output_to_n</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>, int <VAR>bytes</VAR>)</I>
-<DD><A NAME="IDX27"></A>
-Get or set the name of the command that this job will be printed to.
-This is used by front ends; the driver library always prints to a
-stream provided by the front end and never uses this directly.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_get_driver</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX28"></A>
-<DT><U>Function:</U> void <B>stp_set_driver</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>)</I>
-<DD><A NAME="IDX29"></A>
-<DT><U>Function:</U> void <B>stp_set_driver_n</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>, int <VAR>bytes</VAR>)</I>
-<DD><A NAME="IDX30"></A>
-Get or set the name of the driver (the type of printer).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_get_ppd_file</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX31"></A>
-<DT><U>Function:</U> void <B>stp_set_ppd_file</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>)</I>
-<DD><A NAME="IDX32"></A>
-<DT><U>Function:</U> void <B>stp_set_ppd_file_n</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>, int <VAR>bytes</VAR>)</I>
-<DD><A NAME="IDX33"></A>
-Get or set the name of the PPD file used by this print job. Normally,
-only PostScript printers use PPD files.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_get_resolution</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX34"></A>
-<DT><U>Function:</U> void <B>stp_set_resolution</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>)</I>
-<DD><A NAME="IDX35"></A>
-<DT><U>Function:</U> void <B>stp_set_resolution_n</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>, int <VAR>bytes</VAR>)</I>
-<DD><A NAME="IDX36"></A>
-Get or set the resolution to be used in this print job. Different
-drivers support different resolutions, and many drivers support
-multiple quality settings for a given DPI resolution.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_get_media_size</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX37"></A>
-<DT><U>Function:</U> void <B>stp_set_media_size</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>)</I>
-<DD><A NAME="IDX38"></A>
-<DT><U>Function:</U> void <B>stp_set_media_size_n</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>, int <VAR>bytes</VAR>)</I>
-<DD><A NAME="IDX39"></A>
-Get or set the name of the media size (e. g. A3, letter, legal) to be
-used in this print job.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_get_media_type</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX40"></A>
-<DT><U>Function:</U> void <B>stp_set_media_type</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>)</I>
-<DD><A NAME="IDX41"></A>
-<DT><U>Function:</U> void <B>stp_set_media_type_n</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>, int <VAR>bytes</VAR>)</I>
-<DD><A NAME="IDX42"></A>
-Get or set the name of the media type (e. g. plain paper, photo
-quality inkjet paper) to be used in this print job.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_get_media_source</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX43"></A>
-<DT><U>Function:</U> void <B>stp_set_media_source</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>)</I>
-<DD><A NAME="IDX44"></A>
-<DT><U>Function:</U> void <B>stp_set_media_source_n</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>, int <VAR>bytes</VAR>)</I>
-<DD><A NAME="IDX45"></A>
-Get or set the name of the media source (e. g. manual feed, tray A) to
-be used in this print job.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_get_ink_type</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX46"></A>
-<DT><U>Function:</U> void <B>stp_set_ink_type</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>)</I>
-<DD><A NAME="IDX47"></A>
-<DT><U>Function:</U> void <B>stp_set_ink_type_n</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>, int <VAR>bytes</VAR>)</I>
-<DD><A NAME="IDX48"></A>
-Get or set the name of the ink type (e. g. four color standard, six
-color photo) to be used in this print job.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_get_dither_algorithm</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX49"></A>
-<DT><U>Function:</U> void <B>stp_set_dither_algorithm</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>)</I>
-<DD><A NAME="IDX50"></A>
-<DT><U>Function:</U> void <B>stp_set_dither_algorithm_n</B> <I>(stp_vars_t <VAR>vv</VAR>, const char *<VAR>val</VAR>, int <VAR>bytes</VAR>)</I>
-<DD><A NAME="IDX51"></A>
-Get or set the dither algorithm to be used in this print job.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>stp_get_output_type</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX52"></A>
-<DT><U>Function:</U> void <B>stp_set_output_type</B> <I>(stp_vars_t <VAR>vv</VAR>, int <VAR>val</VAR>)</I>
-<DD><A NAME="IDX53"></A>
-Get or set the output type (color, grayscale, black and white) for
-this print job.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>stp_get_orientation</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX54"></A>
-<DT><U>Function:</U> void <B>stp_set_orientation</B> <I>(stp_vars_t <VAR>vv</VAR>, int <VAR>val</VAR>)</I>
-<DD><A NAME="IDX55"></A>
-Get or set the paper orientation for this print job.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>stp_get_left</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX56"></A>
-<DT><U>Function:</U> void <B>stp_set_left</B> <I>(stp_vars_t <VAR>vv</VAR>, int <VAR>val</VAR>)</I>
-<DD><A NAME="IDX57"></A>
-Get or set the left margin (in 1/72 inch units, or "points") for this
-print job.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>stp_get_top</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX58"></A>
-<DT><U>Function:</U> void <B>stp_set_top</B> <I>(stp_vars_t <VAR>vv</VAR>, int <VAR>val</VAR>)</I>
-<DD><A NAME="IDX59"></A>
-Get or set the top margin (in 1/72 inch units, or "points") for this
-print job.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>stp_get_image_type</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX60"></A>
-<DT><U>Function:</U> void <B>stp_set_image_type</B> <I>(stp_vars_t <VAR>vv</VAR>, int <VAR>val</VAR>)</I>
-<DD><A NAME="IDX61"></A>
-Get or set the image type (line art, continuous tone, solid colors)
-for this print job.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>stp_get_unit</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX62"></A>
-<DT><U>Function:</U> void <B>stp_set_unit</B> <I>(stp_vars_t <VAR>vv</VAR>, int <VAR>val</VAR>)</I>
-<DD><A NAME="IDX63"></A>
-Get or set the base unit (inches or centimeters) for this print job.
-This is provided for front ends; the package itself uses points as its
-unit of measurement.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>stp_get_page_width</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX64"></A>
-<DT><U>Function:</U> void <B>stp_set_page_width</B> <I>(stp_vars_t <VAR>vv</VAR>, int <VAR>val</VAR>)</I>
-<DD><A NAME="IDX65"></A>
-Get or set the width of the printed region of the page.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>stp_get_page_height</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX66"></A>
-<DT><U>Function:</U> void <B>stp_set_page_height</B> <I>(stp_vars_t <VAR>vv</VAR>, int <VAR>val</VAR>)</I>
-<DD><A NAME="IDX67"></A>
-Get or set the height of the printed region of the page.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>stp_get_input_color_model</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX68"></A>
-<DT><U>Function:</U> void <B>stp_set_input_color_model</B> <I>(stp_vars_t <VAR>vv</VAR>, int <VAR>val</VAR>)</I>
-<DD><A NAME="IDX69"></A>
-Get or set the color model (currently RGB or CMY) of the input to the
-driver. Most front ends will use RGB input.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>stp_get_output_color_model</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX70"></A>
-<DT><U>Function:</U> void <B>stp_set_output_color_model</B> <I>(stp_vars_t <VAR>vv</VAR>, int <VAR>val</VAR>)</I>
-<DD><A NAME="IDX71"></A>
-Get or set the color model (currently RGB or CMY) of the output of the
-driver. Most printers will use CMY.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> float <B>stp_get_scaling</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX72"></A>
-<DT><U>Function:</U> void <B>stp_set_scaling</B> <I>(stp_vars_t <VAR>vv</VAR>, float <VAR>val</VAR>)</I>
-<DD><A NAME="IDX73"></A>
-Get or set the scaling factor of the image. If the scaling factor is
-greater than 0, it is interpreted as a percent (5.0-100.0 is the valid
-range) of the printable page region, using the more restrictive axis.
-For example, if the image to be printed should be 3" (wide) x 2"
-(high), and the printable page region is 8"x10.5", the scale factor
-should be 37.5 (3"/8").
-
-</P>
-<P>
-If the scaling is less than zero, it is interpreted as pixels per
-inch.
-
-</P>
-<P>
-It is likely that in the future this will be migrated into the front
-end. There is no particular reason why the driver needs to know about
-this.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> float <B>stp_get_gamma</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX74"></A>
-<DT><U>Function:</U> void <B>stp_set_gamma</B> <I>(stp_vars_t <VAR>vv</VAR>, float <VAR>val</VAR>)</I>
-<DD><A NAME="IDX75"></A>
-Get or set the gamma of the print job (valid range: 0.1-4.0; default
-1.0). Note that this is not the absolute gamma used by the print job;
-it is scaled by the gamma appropriate for the printer. This is true
-for all of the numerical parameters.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> float <B>stp_get_brightness</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX76"></A>
-<DT><U>Function:</U> void <B>stp_set_brightness</B> <I>(stp_vars_t <VAR>vv</VAR>, float <VAR>val</VAR>)</I>
-<DD><A NAME="IDX77"></A>
-Get or set the brightness of the print job (valid range: 0.0-2.0;
-default: 1.0). Any value other than 1.0 will result in some possible
-values not being used; if brightness is less than 1.0, no output point
-will be pure white, and if brightness is greater than 1.0, no output
-point will be pure black (or cyan, or magenta, or yellow).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> float <B>stp_get_contrast</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX78"></A>
-<DT><U>Function:</U> void <B>stp_set_contrast</B> <I>(stp_vars_t <VAR>vv</VAR>, float <VAR>val</VAR>)</I>
-<DD><A NAME="IDX79"></A>
-Get or set the contrast of the print job (valid range: 0.0-4.0;
-default: 1.0). Values less than 1.0 will result in pure white or
-black not being used (0.0 will make the entire image 50% gray).
-Values greater than 1.0 do not hard clip; while the contrast in the
-midtones increases, it only asymptotically approaches the limits.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> float <B>stp_get_cyan</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX80"></A>
-<DT><U>Function:</U> void <B>stp_set_cyan</B> <I>(stp_vars_t <VAR>vv</VAR>, float <VAR>val</VAR>)</I>
-<DD><A NAME="IDX81"></A>
-Get or set the cyan adjustment of the print job (range: 0.0-4.0; default:
-1.0). This currently adjusts the gamma of the cyan curve. It is
-scaled by the cyan adjustment for the printer model in question.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> float <B>stp_get_magenta</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX82"></A>
-<DT><U>Function:</U> void <B>stp_set_magenta</B> <I>(stp_vars_t <VAR>vv</VAR>, float <VAR>val</VAR>)</I>
-<DD><A NAME="IDX83"></A>
-Get or set the magenta adjustment of the print job (range: 0.0-4.0; default:
-1.0). This currently adjusts the gamma of the magenta curve. It is
-scaled by the magenta adjustment for the printer model in question.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> float <B>stp_get_yellow</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX84"></A>
-<DT><U>Function:</U> void <B>stp_set_yellow</B> <I>(stp_vars_t <VAR>vv</VAR>, float <VAR>val</VAR>)</I>
-<DD><A NAME="IDX85"></A>
-Get or set the yellow adjustment of the print job (range: 0.0-4.0; default:
-1.0). This currently adjusts the gamma of the yellow curve. It is
-scaled by the yellow adjustment for the printer model in question.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> float <B>stp_get_saturation</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX86"></A>
-<DT><U>Function:</U> void <B>stp_set_saturation</B> <I>(stp_vars_t <VAR>vv</VAR>, float <VAR>val</VAR>)</I>
-<DD><A NAME="IDX87"></A>
-Get or set the saturation of the print job (range: 0.0-9.0; default: 1.0).
-Saturation of 0.0 produces grayscale output using composite (CMY or
-CMYK, as appropriate for the printer) color.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> float <B>stp_get_density</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX88"></A>
-<DT><U>Function:</U> void <B>stp_set_density</B> <I>(stp_vars_t <VAR>vv</VAR>, float <VAR>val</VAR>)</I>
-<DD><A NAME="IDX89"></A>
-Get or set the density of the print job (range: 0.0-2.0; default:
-1.0). This adjusts the amount of ink deposited in a linear fashion
-for all channels. It is scaled by the density appropriate for the
-choice of printer, resolution, paper type, and other factors that the
-driver may deem appropriate.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> float <B>stp_get_app_gamma</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX90"></A>
-<DT><U>Function:</U> void <B>stp_set_app_gamma</B> <I>(stp_vars_t <VAR>vv</VAR>, float <VAR>val</VAR>)</I>
-<DD><A NAME="IDX91"></A>
-Get or set the gamma of the input (i. e. what the driving application
-uses).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void * <B>stp_get_lut</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX92"></A>
-<DT><U>Function:</U> void <B>stp_set_lut</B> <I>(stp_vars_t <VAR>vv</VAR>, void *<VAR>val</VAR>)</I>
-<DD><A NAME="IDX93"></A>
-Get or set the color lookup table for the print job. This is useful
-outside of the library for computing a preview of the printed result.
-The lookup table itself should be treated as an opaque handle.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> unsigned char * <B>stp_get_cmap</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX94"></A>
-<DT><U>Function:</U> void <B>stp_set_cmap</B> <I>(stp_vars_t <VAR>vv</VAR>, unsigned char *<VAR>val</VAR>)</I>
-<DD><A NAME="IDX95"></A>
-Get or set the color map for the print job. This is a table of R,G,B
-values for 8-bit indexed input. This may be moved outside of the
-library in the future; in this case, the front end would be required
-to do its own mapping and supply true-color RGB to the driver.
-</DL>
-
-</P>
-<P>
-The following methods are used to perform output and error reporting
-by the driver. The driver supplies a stream of output bytes; the
-front end is responsible for providing methods that accept this output
-and handle it appropriately.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> stp_outfunc_t <B>stp_get_outfunc</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX96"></A>
-<DT><U>Function:</U> void <B>stp_set_outfunc</B> <I>(const stp_vars_t <VAR>vv</VAR>, stp_outfunc_t <VAR>val</VAR>)</I>
-<DD><A NAME="IDX97"></A>
-<DT><U>Function:</U> void * <B>stp_get_outdata</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX98"></A>
-<DT><U>Function:</U> void <B>stp_set_outdata</B> <I>(stp_vars_t <VAR>vv</VAR>, void *<VAR>val</VAR>)</I>
-<DD><A NAME="IDX99"></A>
-
-</P>
-<P>
-<DL>
-<DT><U>Data type:</U> <B>stp_outfunc_t</B>
-<DD><A NAME="IDX100"></A>
-
-<PRE>
-typedef void (*stp_outfunc_t) (void *data,
- const char *buffer, size_t bytes);
-</PRE>
-
-</DL>
-<P>
-Get or set the output function the driver will use. The front end
-must supply a suitable function for accepting the output data. The
-<CODE>stp_set_outdata</CODE> method provides a way of passing an appropriate
-object to the output function.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> stp_outfunc_t <B>stp_get_errfunc</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX101"></A>
-<DT><U>Function:</U> void <B>stp_set_errfunc</B> <I>(const stp_vars_t <VAR>vv</VAR>, stp_outfunc_t <VAR>val</VAR>)</I>
-<DD><A NAME="IDX102"></A>
-<DT><U>Function:</U> void * <B>stp_get_errdata</B> <I>(const stp_vars_t <VAR>vv</VAR>)</I>
-<DD><A NAME="IDX103"></A>
-<DT><U>Function:</U> void <B>stp_set_errdata</B> <I>(stp_vars_t <VAR>vv</VAR>, void *<VAR>val</VAR>)</I>
-<DD><A NAME="IDX104"></A>
-Get or set the error reporting function that the driver will use.
-This is used to report errors or debugging information, and must be
-supplied. A typical errfunc will simply print whatever it's passed to
-stderr.
-</DL>
-
-</P>
-<P>
-/*
- * hue_map is an array of 49 doubles representing the mapping of hue
- * from (0..6) to (0..6) in increments of .125. The hue_map is in CMY space,
- * so hue=0 is cyan.
- */
-typedef void (*stp_convert_t)(const stp_vars_t vars, const unsigned char *in,
- unsigned short *out, int *zero_mask,
- int width, int bpp, const unsigned char *cmap,
- const double *hue_map, const double *lum_map,
- const double *sat_map);
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void <B>stp_merge_printvars</B> <I>(stp_vars_t <VAR>user</VAR>, const stp_vars_t <VAR>print</VAR>)</I>
-<DD><A NAME="IDX105"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> void <B>stp_allocate_lut</B> <I>(stp_vars_t <VAR>v</VAR>, size_t <VAR>steps</VAR>)</I>
-<DD><A NAME="IDX106"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> void <B>stp_free_lut</B> <I>(stp_vars_t <VAR>v</VAR>)</I>
-<DD><A NAME="IDX107"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> void <B>stp_compute_lut</B> <I>(stp_vars_t <VAR>v</VAR>, size_t <VAR>steps</VAR>)</I>
-<DD><A NAME="IDX108"></A>
-
-</P>
-</DL>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_11.html">previous</A>, <A HREF="gimpprint_13.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_13.html b/doc/manual-html/gimpprint_13.html
deleted file mode 100644
index 8942a5e..0000000
--- a/doc/manual-html/gimpprint_13.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Dither functions</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_12.html">previous</A>, <A HREF="gimpprint_14.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC18" HREF="gimpprint_toc.html#TOC18">4.3 Dither functions</A></H2>
-<P>
-<A NAME="IDX109"></A>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> size_t <B>stp_dither_algorithm_count</B> <I>(void)</I>
-<DD><A NAME="IDX110"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_dither_algorithm_name</B> <I>(int <VAR>id</VAR>)</I>
-<DD><A NAME="IDX111"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_default_dither_algorithm</B> <I>(void)</I>
-<DD><A NAME="IDX112"></A>
-
-</P>
-</DL>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_12.html">previous</A>, <A HREF="gimpprint_14.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_14.html b/doc/manual-html/gimpprint_14.html
deleted file mode 100644
index 5384d1a..0000000
--- a/doc/manual-html/gimpprint_14.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Options functions</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_13.html">previous</A>, <A HREF="gimpprint_15.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC19" HREF="gimpprint_toc.html#TOC19">4.4 Options functions</A></H2>
-<P>
-<A NAME="IDX113"></A>
-
-</P>
-<P>
-<DL>
-<DT><U>Data type:</U> void * <B>stp_option_t</B>
-<DD><A NAME="IDX114"></A>
-This is an opaque data type, whose structure is not visible to the
-user.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void <B>stp_set_option(stp_vars_t</B> <I><VAR>v</VAR>, const char *<VAR>name</VAR>, const char *<VAR>data</VAR>, int <VAR>bytes</VAR>)</I>
-<DD><A NAME="IDX115"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> void <B>stp_clear_option</B> <I>(stp_vars_t <VAR>v</VAR>, const char *<VAR>name</VAR>)</I>
-<DD><A NAME="IDX116"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> void <B>stp_clear_all_options</B> <I>(stp_vars_t <VAR>v</VAR>)</I>
-<DD><A NAME="IDX117"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> size_t <B>stp_option_count</B> <I>(const stp_vars_t <VAR>v</VAR>)</I>
-<DD><A NAME="IDX118"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const stp_option_t <B>stp_get_option_by_index</B> <I>(const stp_vars_t <VAR>v</VAR>, size_t <VAR>idx</VAR>)</I>
-<DD><A NAME="IDX119"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const stp_option_t <B>stp_get_option_by_name</B> <I>(const stp_vars_t <VAR>v</VAR>, const char *<VAR>name</VAR>)</I>
-<DD><A NAME="IDX120"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_option_data</B> <I>(const stp_option_t <VAR>option</VAR>)</I>
-<DD><A NAME="IDX121"></A>
-<STRONG>Note</STRONG>: not null delimited!
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_option_name</B> <I>(const stp_option_t <VAR>option</VAR>)</I>
-<DD><A NAME="IDX122"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> size_t <B>stp_option_length</B> <I>(const stp_option_t <VAR>option</VAR>)</I>
-<DD><A NAME="IDX123"></A>
-
-</P>
-</DL>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_13.html">previous</A>, <A HREF="gimpprint_15.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_15.html b/doc/manual-html/gimpprint_15.html
deleted file mode 100644
index 3bc88e2..0000000
--- a/doc/manual-html/gimpprint_15.html
+++ /dev/null
@@ -1,141 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Paper functions</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_14.html">previous</A>, <A HREF="gimpprint_16.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC20" HREF="gimpprint_toc.html#TOC20">4.5 Paper functions</A></H2>
-<P>
-<A NAME="IDX124"></A>
-
-</P>
-<P>
-<DL>
-<DT><U>Data type:</U> void * <B>stp_papersize_t</B>
-<DD><A NAME="IDX125"></A>
-This is an opaque data type, whose structure is not visible to the
-user.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Data type:</U> <B>stp_papersize_unit_t</B>
-<DD><A NAME="IDX126"></A>
-
-<PRE>
-typedef enum papersize_unit
-{
- PAPERSIZE_ENGLISH,
- PAPERSIZE_METRIC
-} stp_papersize_unit_t;
-</PRE>
-
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> int <B>stp_known_papersizes</B> <I>(void)</I>
-<DD><A NAME="IDX127"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const stp_papersize_t <B>stp_get_papersize_by_name</B> <I>(const char *<VAR>name</VAR>)</I>
-<DD><A NAME="IDX128"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const stp_papersize_t <B>stp_get_papersize_by_size</B> <I>(int <VAR>l</VAR>, int <VAR>w</VAR>)</I>
-<DD><A NAME="IDX129"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const stp_papersize_t <B>stp_get_papersize_by_index</B> <I>(int <VAR>index</VAR>)</I>
-<DD><A NAME="IDX130"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_papersize_get_name</B> <I>(const stp_papersize_t <VAR>pt</VAR>)</I>
-<DD><A NAME="IDX131"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> unsigned <B>stp_papersize_get_width</B> <I>(const stp_papersize_t <VAR>pt</VAR>)</I>
-<DD><A NAME="IDX132"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> unsigned <B>stp_papersize_get_height</B> <I>(const stp_papersize_t <VAR>pt</VAR>)</I>
-<DD><A NAME="IDX133"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> unsigned <B>stp_papersize_get_top</B> <I>(const stp_papersize_t <VAR>pt</VAR>)</I>
-<DD><A NAME="IDX134"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> unsigned <B>stp_papersize_get_left</B> <I>(const stp_papersize_t <VAR>pt</VAR>)</I>
-<DD><A NAME="IDX135"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> unsigned <B>stp_papersize_get_bottom</B> <I>(const stp_papersize_t <VAR>pt</VAR>)</I>
-<DD><A NAME="IDX136"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> unsigned <B>stp_papersize_get_right</B> <I>(const stp_papersize_t <VAR>pt</VAR>)</I>
-<DD><A NAME="IDX137"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> stp_papersize_unit_t <B>stp_papersize_get_unit</B> <I>(const stp_papersize_t <VAR>pt</VAR>)</I>
-<DD><A NAME="IDX138"></A>
-
-</P>
-</DL>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_14.html">previous</A>, <A HREF="gimpprint_16.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_16.html b/doc/manual-html/gimpprint_16.html
deleted file mode 100644
index dd8f55d..0000000
--- a/doc/manual-html/gimpprint_16.html
+++ /dev/null
@@ -1,184 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Printer functions</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_15.html">previous</A>, <A HREF="gimpprint_17.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC21" HREF="gimpprint_toc.html#TOC21">4.6 Printer functions</A></H2>
-<P>
-<A NAME="IDX139"></A>
-
-</P>
-<P>
-<DL>
-<DT><U>Data type:</U> void * <B>stp_printer_t</B>
-<DD><A NAME="IDX140"></A>
-This is an opaque data type, whose structure is not visible to the
-user.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>stp_known_printers</B> <I>(void)</I>
-<DD><A NAME="IDX141"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const stp_printer_t <B>stp_get_printer_by_index</B> <I>(int <VAR>idx</VAR>)</I>
-<DD><A NAME="IDX142"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_printer_get_long_name</B> <I>(const stp_printer_t <VAR>p</VAR>)</I>
-<DD><A NAME="IDX143"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const stp_printer_t <B>stp_get_printer_by_long_name</B> <I>(const char *<VAR>long_name</VAR>)</I>
-<DD><A NAME="IDX144"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const stp_printer_t <B>stp_get_printer_by_driver</B> <I>(const char *<VAR>driver</VAR>)</I>
-<DD><A NAME="IDX145"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> int <B>stp_get_printer_index_by_driver</B> <I>(const char *<VAR>driver</VAR>)</I>
-<DD><A NAME="IDX146"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_printer_get_driver</B> <I>(const stp_printer_t <VAR>p</VAR>)</I>
-<DD><A NAME="IDX147"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> int <B>stp_printer_get_model</B> <I>(const stp_printer_t <VAR>p</VAR>)</I>
-<DD><A NAME="IDX148"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const stp_printfuncs_t * <B>stp_printer_get_printfuncs</B> <I>(const stp_printer_t <VAR>p</VAR>)</I>
-<DD><A NAME="IDX149"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Data type:</U> <B>stp_printfuncs_t</B>
-<DD><A NAME="IDX150"></A>
-
-<PRE>
-typedef struct
-{
- char **(*parameters)(const stp_printer_t printer,
- const char *ppd_file,
- const char *name, int *count);
- void (*media_size)(const stp_printer_t printer,
- const stp_vars_t v, int *width,
- int *height);
- void (*imageable_area)(const stp_printer_t printer,
- const stp_vars_t v,
- int *left, int *right,
- int *bottom, int *top);
- void (*limit)(const stp_printer_t printer,
- const stp_vars_t v,
- int *width, int *height);
- void (*print)(const stp_printer_t printer,
- stp_image_t *image, const stp_vars_t v);
- const char *(*default_parameters)(const stp_printer_t printer,
- const char *ppd_file,
- const char *name);
- void (*describe_resolution)(const stp_printer_t printer,
- const char *resolution,
- int *x, int *y);
- int (*verify)(const stp_printer_t p, const stp_vars_t v);
-} stp_printfuncs_t;
-</PRE>
-
-</DL>
-
-<P>
-<DL>
-<DT><U>Data type:</U> <B>stp_image_t</B>
-<DD><A NAME="IDX151"></A>
-
-<PRE>
-typedef struct stp_image
-{
- void (*init)(struct stp_image *image);
- void (*reset)(struct stp_image *image);
- void (*transpose)(struct stp_image *image);
- void (*hflip)(struct stp_image *image);
- void (*vflip)(struct stp_image *image);
- void (*crop)(struct stp_image *image,
- int left, int top, int right,
- int bottom);
- void (*rotate_ccw)(struct stp_image *image);
- void (*rotate_cw)(struct stp_image *image);
- void (*rotate_180)(struct stp_image *image);
- int (*bpp)(struct stp_image *image);
- int (*width)(struct stp_image *image);
- int (*height)(struct stp_image *image);
- void (*get_row)(struct stp_image *image,
- unsigned char *data, int row);
- const char *(*get_appname)(struct stp_image *image);
- void (*progress_init)(struct stp_image *image);
- void (*note_progress)(struct stp_image *image,
- double current, double total);
- void (*progress_conclude)(struct stp_image *image);
- void *rep;
-} stp_image_t;
-</PRE>
-
-<P>
-This is an abstract data type for interfacing with the program which
-created the image.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> const stp_vars_t <B>stp_printer_get_printvars</B> <I>(const stp_printer_t <VAR>p</VAR>)</I>
-<DD><A NAME="IDX152"></A>
-
-</P>
-</DL>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_15.html">previous</A>, <A HREF="gimpprint_17.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_17.html b/doc/manual-html/gimpprint_17.html
deleted file mode 100644
index f6dc2bb..0000000
--- a/doc/manual-html/gimpprint_17.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Settings functions</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_16.html">previous</A>, <A HREF="gimpprint_18.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC22" HREF="gimpprint_toc.html#TOC22">4.7 Settings functions</A></H2>
-<P>
-<A NAME="IDX153"></A>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> stp_convert_t <B>stp_choose_colorfunc</B> <I>(int <VAR>output_type</VAR>, int <VAR>image_bpp</VAR>, const unsigned char *<VAR>cmap</VAR>, int *<VAR>out_bpp</VAR>, const stp_vars_t <VAR>v</VAR>)</I>
-<DD><A NAME="IDX154"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> void <B>stp_compute_page_parameters</B> <I>(int <VAR>page_right</VAR>, int <VAR>page_left</VAR>, int <VAR>page_top</VAR>, int <VAR>page_bottom</VAR>, double <VAR>scaling</VAR>, int <VAR>image_width</VAR>, int <VAR>image_height</VAR>, stp_image_t *<VAR>image</VAR>, int *<VAR>orientation</VAR>, int *{page_width}, int *<VAR>page_height</VAR>, int *<VAR>out_width</VAR>, int *<VAR>out_height</VAR>, int *<VAR>left</VAR>, int *<VAR>top</VAR>)</I>
-<DD><A NAME="IDX155"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const stp_vars_t <B>stp_default_settings</B> <I>(void)</I>
-<DD><A NAME="IDX156"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const stp_vars_t <B>stp_maximum_settings</B> <I>(void)</I>
-<DD><A NAME="IDX157"></A>
-
-</P>
-</DL>
-
-<P>
-<DL>
-<DT><U>Function:</U> const stp_vars_t <B>stp_minimum_settings</B> <I>(void)</I>
-<DD><A NAME="IDX158"></A>
-
-</P>
-</DL>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_16.html">previous</A>, <A HREF="gimpprint_18.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_18.html b/doc/manual-html/gimpprint_18.html
deleted file mode 100644
index 96bc5a4..0000000
--- a/doc/manual-html/gimpprint_18.html
+++ /dev/null
@@ -1,156 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Version functions</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_17.html">previous</A>, <A HREF="gimpprint_19.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC23" HREF="gimpprint_toc.html#TOC23">4.8 Version functions</A></H2>
-<P>
-<A NAME="IDX159"></A>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> const char * <B>stp_check_version</B> <I>(unsigned int <VAR>required_major</VAR>,</I>
-<DD><A NAME="IDX160"></A>
-unsigned int <VAR>required_minor</VAR>, unsigned int <VAR>required_micro</VAR>)
-
-</P>
-<P>
-This function checks whether the version of libgimpprint that the program
-is linked with is equal to the version number passed to it. If the version
-is the same, the function returns <CODE>NULL</CODE>. If any of the version
-numbers do not match (i.e. the library version is too old or too new), a string containing a desription of the difference is
-returned. The first error found is returned. The function checks in the order
-major, minor, micro.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC24" HREF="gimpprint_toc.html#TOC24">4.8.1 Version macros</A></H3>
-
-<P>
-<DL>
-<DT><U>Macro:</U> <B>GIMPPRINT_CHECK_VERSION</B> <I>(major,minor,micro)</I>
-<DD><A NAME="IDX161"></A>
-
-</P>
-<P>
-This macro returns zero if the version of the libgimpprint headers are
-greater or equal to the version given as an argument. It returns nonzero
-if the version of the libgimpprint headers are less than the argument.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Macro:</U> <B>GIMPPRINT_MAJOR_VERSION</B>
-<DD><A NAME="IDX162"></A>
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Macro:</U> <B>GIMPPRINT_MINOR_VERSION</B>
-<DD><A NAME="IDX163"></A>
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Macro:</U> <B>GIMPPRINT_MICRO_VERSION</B>
-<DD><A NAME="IDX164"></A>
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Macro:</U> <B>GIMPPRINT_CURRENT_INTERFACE</B>
-<DD><A NAME="IDX165"></A>
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Macro:</U> <B>GIMPPRINT_BINARY_AGE</B>
-<DD><A NAME="IDX166"></A>
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Macro:</U> <B>GIMPPRINT_INTERFACE_AGE</B>
-<DD><A NAME="IDX167"></A>
-</DL>
-
-</P>
-<P>
-These macros are integers holding the version numbers. They should be
-used for compile-time checking only. To check version numbers at
-run-time, use the equivalent variables. Note that at present (4.1.x
-development branch) the library interface version numbers are not used.
-
-</P>
-
-
-<H3><A NAME="SEC25" HREF="gimpprint_toc.html#TOC25">4.8.2 Version variables</A></H3>
-
-<P>
-<DL>
-<DT><U>Variable:</U> const unsigned int <B>gimpprint_major_version</B>
-<DD><A NAME="IDX168"></A>
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> const unsigned int <B>gimpprint_minor_version</B>
-<DD><A NAME="IDX169"></A>
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> const unsigned int <B>gimpprint_micro_version</B>
-<DD><A NAME="IDX170"></A>
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> const unsigned int <B>gimpprint_current_interface</B>
-<DD><A NAME="IDX171"></A>
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> const unsigned int <B>gimpprint_binary_age</B>
-<DD><A NAME="IDX172"></A>
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> const unsigned int <B>gimpprint_interface_age</B>
-<DD><A NAME="IDX173"></A>
-</DL>
-
-</P>
-<P>
-These variables hold the library version numbers. Because the version of
-the library may change on a system using shared libraries, these should
-be used instead of the equivalent macros when checking the library
-version at run-time. Note that library interface version numbers are not
-used in the development branch, but are in the stable branch.
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_17.html">previous</A>, <A HREF="gimpprint_19.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_19.html b/doc/manual-html/gimpprint_19.html
deleted file mode 100644
index 0ba0d14..0000000
--- a/doc/manual-html/gimpprint_19.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Programs</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_18.html">previous</A>, <A HREF="gimpprint_20.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC26" HREF="gimpprint_toc.html#TOC26">5 Programs</A></H1>
-<P>
-<A NAME="IDX174"></A>
-
-</P>
-<P>
-This chapter of the manual describes the use of some of the programs
-which use the GIMP-Print library (libgimpprint). Note that there is now
-a user manual in DocBook/SGML format, currently provided in HTML,
-PostScript and PDF formats which is distributed with GIMP-Print. This
-manual currently covers the use of the GIMP Print plugin and CUPS
-drivers.
-
-</P>
-
-
-<UL>
-<LI><A HREF="gimpprint_20.html#SEC27">The GIMP plugin</A>: The print plugin for the GIMP
-<LI><A HREF="gimpprint_21.html#SEC36">Ghostscript</A>: Printer driver
-<LI><A HREF="gimpprint_22.html#SEC37">CUPS</A>: Printer driver
-</UL>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_18.html">previous</A>, <A HREF="gimpprint_20.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_2.html b/doc/manual-html/gimpprint_2.html
deleted file mode 100644
index 4820f55..0000000
--- a/doc/manual-html/gimpprint_2.html
+++ /dev/null
@@ -1,495 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Copying</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_1.html">previous</A>, <A HREF="gimpprint_3.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-</P>
-
-
-<H1><A NAME="SEC2" HREF="gimpprint_toc.html#TOC2">GNU GENERAL PUBLIC LICENSE</A></H1>
-<P>
-Version 2, June 1991
-
-</P>
-
-<PRE>
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-675 Mass Ave, Cambridge, MA 02139, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-</PRE>
-
-
-
-<H2><A NAME="SEC3" HREF="gimpprint_toc.html#TOC3">Preamble</A></H2>
-
-<P>
- 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.
-
-</P>
-<P>
- 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.
-
-</P>
-<P>
- 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.
-
-</P>
-<P>
- 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.
-
-</P>
-<P>
- 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.
-
-</P>
-<P>
- 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.
-
-</P>
-<P>
- 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.
-
-</P>
-<P>
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-</P>
-<P>
-TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-</P>
-
-<OL>
-<LI>
-
-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.
-
-<LI>
-
-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.
-
-<LI>
-
-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:
-
-
-<OL>
-<LI>
-
-You must cause the modified files to carry prominent notices
-stating that you changed the files and the date of any change.
-
-<LI>
-
-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.
-
-<LI>
-
-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.)
-</OL>
-
-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.
-
-<LI>
-
-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:
-
-
-<OL>
-<LI>
-
-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,
-
-<LI>
-
-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,
-
-<LI>
-
-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.)
-</OL>
-
-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.
-
-<LI>
-
-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.
-
-<LI>
-
-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.
-
-<LI>
-
-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.
-
-<LI>
-
-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.
-
-<LI>
-
-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.
-
-<LI>
-
-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.
-
-<LI>
-
-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
-
-<LI>
-
-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.
-
-<LI>
-
-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.
-</OL>
-
-<P>
-END OF TERMS AND CONDITIONS
-
-</P>
-
-
-<H2><A NAME="SEC4" HREF="gimpprint_toc.html#TOC4">How to Apply These Terms to Your New Programs</A></H2>
-
-<P>
- 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.
-
-</P>
-<P>
- 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.
-
-</P>
-
-<PRE>
-<VAR>one line to give the program's name and an idea of what it does.</VAR>
-Copyright (C) 19<VAR>yy</VAR> <VAR>name of author</VAR>
-
-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.
-</PRE>
-
-<P>
-Also add information on how to contact you by electronic and paper mail.
-
-</P>
-<P>
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-</P>
-
-<PRE>
-Gnomovision version 69, Copyright (C) 19<VAR>yy</VAR> <VAR>name of author</VAR>
-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.
-</PRE>
-
-<P>
-The hypothetical commands <SAMP>`show w'</SAMP> and <SAMP>`show c'</SAMP> should show
-the appropriate parts of the General Public License. Of course, the
-commands you use may be called something other than <SAMP>`show w'</SAMP> and
-<SAMP>`show c'</SAMP>; they could even be mouse-clicks or menu items--whatever
-suits your program.
-
-</P>
-<P>
-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:
-
-</P>
-
-<PRE>
-Yoyodyne, Inc., hereby disclaims all copyright
-interest in the program `Gnomovision'
-(which makes passes at compilers) written
-by James Hacker.
-
-<VAR>signature of Ty Coon</VAR>, 1 April 1989
-Ty Coon, President of Vice
-</PRE>
-
-<P>
-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.
-
-</P>
-
-
-<H1><A NAME="SEC5" HREF="gimpprint_toc.html#TOC5">Copying summary</A></H1>
-<P>
-GIMP-Print is <STRONG>free</STRONG>; this means that everyone is free to use it and
-free to redistribute it on a free basis. GIMP-Print is not in the public
-domain; it is copyrighted and there are restrictions on its
-distribution, but these restrictions are designed to permit everything
-that a good cooperating citizen would want to do. What is not allowed is
-to try to prevent others from further sharing any version of GIMP-Print
-that they might get from you.
-
-</P>
-<P>
-Specifically, we want to make sure that you have the right to give away
-copies of GIMP-Print, that you receive source code or else can get it if
-you want it, that you can change GIMP-Print or use pieces of it in new
-free programs, and that you know you can do these things.
-
-</P>
-<P>
-To make sure that everyone has such rights, we have to forbid you to
-deprive anyone else of these rights. For example, if you distribute
-copies of GIMP-Print, 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 tell them their rights.
-
-</P>
-<P>
-Also, for our own protection, we must make certain that everyone finds
-out that there is no warranty for GIMP-Print. If GIMP-Print is modified
-by someone else and passed on, we want their recipients to know that
-what they have is not what we distributed, so that any problems
-introduced by others will no reflect on our reputation.
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_1.html">previous</A>, <A HREF="gimpprint_3.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_20.html b/doc/manual-html/gimpprint_20.html
deleted file mode 100644
index e53165e..0000000
--- a/doc/manual-html/gimpprint_20.html
+++ /dev/null
@@ -1,315 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - The GIMP plugin</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_19.html">previous</A>, <A HREF="gimpprint_21.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC27" HREF="gimpprint_toc.html#TOC27">5.1 The GIMP Print plugin</A></H2>
-<P>
-<A NAME="IDX175"></A>
-<A NAME="IDX176"></A>
-
-</P>
-<P>
-The GIMP Print plugin is the printing facility for the GNU Image
-Manipulation Program<A NAME="DOCF1" HREF="gimpprint_foot.html#FOOT1">(1)</A>}. This section
-examines the features offered by the Print plugin.
-
-</P>
-<P>
-The main window is divided into five panes:
-
-</P>
-
-
-
-<H3><A NAME="SEC28" HREF="gimpprint_toc.html#TOC28">5.1.1 Preview</A></H3>
-
-<P>
-The Preview pane contains a positioning widget that allows interactively
-positioning the output on the page. It contains an outer border,
-representing the sheet of paper; an inner border, representing the
-printable area of the printer; an arrow, pointing to the top of the page
-(the end that's fed into the printer); and a black rectangle,
-representing the position of the image on the page. The image can be
-moved around on the paper. When the first (left) button is used, the
-image is moved in screen pixels; when any other button is used, the
-image is moved in points<A NAME="DOCF2" HREF="gimpprint_foot.html#FOOT2">(2)</A>.
-The arrow resizes depending upon the media size chosen; the shaft of the
-arrow is always equal to one inch on the output.
-
-</P>
-<P>
-@image{print-main,,4in}
-
-</P>
-
-
-
-<H3><A NAME="SEC29" HREF="gimpprint_toc.html#TOC29">5.1.2 Printer Settings</A></H3>
-
-<P>
-The Printer Settings pane contains a dropdown menu for selecting a
-printer to print to. There is a special `printer' named <SAMP>`File'</SAMP>
-that allows you to choose a file to print to, rather than a printer
-queue. The Setup box to the right allows specification of a printer
-type, a PPD file<A NAME="DOCF3" HREF="gimpprint_foot.html#FOOT3">(3)</A>, and the command to
-be used to print. Each distinct printer in the Printer list can have
-different settings applied to it. Below that is a combo box allowing
-choice of media size. The choices are constrained to those that the
-printer supports. Below that are dropdown menus for choosing media type
-(what kind of paper), media source (what input tray), ink type, and
-resolution. All of these settings are printer-specific.
-
-</P>
-<P>
-@image{print-setup,,2in}
-
-</P>
-
-
-
-<H3><A NAME="SEC30" HREF="gimpprint_toc.html#TOC30">5.1.3 Position</A></H3>
-
-<P>
-The Position pane contains various widgets to place the image on the
-paper. These widgets work in conjunction with the Preview pane. At the
-top of the pane is a button to center the image on the paper (not on the
-printable area), and on either side buttons to center vertically and
-horizontally. Below these are four boxes that allow entry of the left,
-top, right, and bottom of the image. These positions are relative to
-the top left of the paper<A NAME="DOCF4" HREF="gimpprint_foot.html#FOOT4">(4)</A>. There are
-two additional boxes that allow specification of the right margin and
-bottom margin if you prefer; these are relative to the bottom right
-corner of the paper. Any of these may have values entered into them;
-the preview image will be moved appropriately.
-
-</P>
-<P>
-<STRONG>Note</STRONG>: These entries do not resize the image.
-
-</P>
-<P>
-Finally, there is a pick box for orientation (landscape or portrait).
-There is an <SAMP>`Auto'</SAMP> mode that picks the orientation that yields the
-orientation that best matches that of the image to be printed.
-
-</P>
-
-
-<H3><A NAME="SEC31" HREF="gimpprint_toc.html#TOC31">5.1.4 Scaling</A></H3>
-
-<P>
-The Scaling pane contains a slider that allows scaling of the image.
-The image can be scaled in either percent of the printable area
-(<STRONG>not</STRONG> the page in this case) or pixels per inch (PPI) via a
-radio button below the slider. PPI allows matching image resolution to
-printer resolution. The image may be scaled using either method to
-between 5 and 100% of the imageable area. It is not possible to crop
-with the Print plugin. In Percent mode, the image is scaled so that
-neither axis will be longer than the percent of the printable area
-specified. For example, if you print an image at 20%, it will be
-possible to tile the image 5 times on one axis and at least 5 times on
-the other. To the right of the radio button is a button called Set
-Image Scale. This sets the scaling to PPI, and sets the resolution as
-closely as possible to the resolution stored in the image. To the right
-of the Set Image Scale button are two boxes that allow entry of width
-and height of the image. These set the scaling mode to PPI. Specifying
-one automatically sets the other, and the image is repositioned as
-needed to prevent it from falling off the edge of the page.
-
-</P>
-<P>
-To its right is a button group that allows choosing English (inch)
-units or metric (centimeter) units.
-
-</P>
-
-
-<H3><A NAME="SEC32" HREF="gimpprint_toc.html#TOC32">5.1.5 Image Settings</A></H3>
-
-<P>
-The Image Settings pane allows choice of Line Art, Solid Colors, or
-Photograph image type. Line art or Solid Colors should be used for
-graphics containing mostly solid areas of color. They're very similar
-to each other. Photograph mode dithers more slowly, but produces more
-accurate colors. To the right of these three radio buttons is a button
-called Adjust Color. This pops up a new window that controls various
-output quality settings. That will be described separately. Finally,
-there is a choice of Black and White, Color and Monochrome output.
-Monochrome output can be used to print absolute black and white very
-quickly.
-
-</P>
-
-
-
-<H4><A NAME="SEC33" HREF="gimpprint_toc.html#TOC33">5.1.5.1 Adjust Output</A></H4>
-
-<P>
-The Adjust Output button button pops up a non-modal dialog that allows
-adjustment of various parameters related to the print quality. These
-are independent of the controls within the GIMP itself and only affect
-the print.
-
-</P>
-<P>
-@image{print-color,,2in}
-
-</P>
-<P>
-At the top of the window is a thumbnail of the image that changes to
-reflect the color settings of the image. This enables you to get an
-idea of how the image will print out as you adjust settings.
-
-</P>
-<P>
-Below that there are eight sliders:
-
-</P>
-<DL COMPACT>
-
-<DT><EM>Brightness</EM>
-<DD>
-(0--2.0, default 1.0) Adjust the brightness of the image.
-
-<DT><EM>Contrast</EM>
-<DD>
-(0--4.0, default 1.0) Adjust the output contrast.
-
-<DT><EM>Cyan, Magenta, Yellow</EM>
-<DD>
-(0--4.0, default 1.0) Adjust the cyan, magenta, and yellow in the
-output. These should not normally need to be adjusted very much; even
-very small adjustments can go quite a long way to restoring color
-balance.
-
-<DT><EM>Saturation</EM>
-<DD>
-(0--9.0, default 1.0) Adjust the color brilliance (saturation) of the
-output. Saturation of 0 means pure gray scale, with no color.
-Saturation of 9.0 will make just about anything but pure grays
-brilliantly colored.
-
-<DT><EM>Density</EM>
-<DD>
-(0.1--2.0, default 1.0) Adjust the density (amount of ink) in the print.
-The density is automatically corrected for the particular printer,
-resolution, and in some cases paper choices. If solid black in the
-input is not solid in the print, the density needs to be increased; if
-there is excessive ink bleed-through and muddy dark colors, the density
-should be decreased.
-
-<STRONG>Note</STRONG>: the density will not increase beyond a certain amount no
-matter what the slider is set to.
-
-<DT><EM>Gamma</EM>
-<DD>
-(0.1--4.0, default 1.0) Adjust the output gamma. The gamma value is
-automatically corrected for the choice of printer; this is used if you
-believe the automatic setting is incorrect.
-</DL>
-
-
-
-<H4><A NAME="SEC34" HREF="gimpprint_toc.html#TOC34">5.1.5.2 Dither Algorithm</A></H4>
-<P>
-There is also a selection box for the dither algorithm to be used in the
-pop-up dialog. There are currently seven choices:
-
-</P>
-<DL COMPACT>
-
-<DT><EM>Adaptive Hybrid</EM>
-<DD>
-Adaptive Hybrid usually yields the best output quality; it chooses a
-modified Floyd-Steinberg error diffusion algorithm or ordered dithering
-depending upon the image characteristics.
-
-<DT><EM>Ordered</EM>
-<DD>
-Ordered uses a pure ordered dither. It generally yields excellent
-quality for simple black and white or four color printers without
-variable drop size or drop modulation; it is not recommended if high
-quality is desired on six color printers. It is considerably faster
-than Adaptive Hybrid.
-
-<DT><EM>Fast</EM>
-<DD>
-Fast also uses a pure ordered dither, but uses a very simple black model
-and makes no attempt to handle multi-level (6-color, variable drop size,
-or drop modulation) at all cleanly. It is substantially faster than
-Ordered dither. The quality tends to be quite poor except on simple
-four color printers. On three color printers, quality is probably
-competitive with anything else.
-
-<DT><EM>Very Fast</EM>
-<DD>
-Very Fast is similar to Fast, except that it uses a very simple dither
-matrix that can be looked up much more quickly than the matrix used in
-the Fast dither. For simple pure black and white images dominated by
-horizontal and vertical lines, this may actually yield the best results;
-for other types of image, the quality will be poor.
-
-<DT><EM>Adaptive Random</EM>
-<DD>
-Adaptive Random is similar to Adaptive Hybrid, except that the
-modifications to the Floyd-Steinberg algorithm are slightly different.
-This is slower than Adaptive Hybrid on most systems. For some images
-the quality may be better than Adaptive Hybrid, but generally Adaptive
-Hybrid should yield slightly superior images.
-
-<DT><EM>Hybrid Floyd-Steinberg</EM>
-<DD>
-Hybrid Floyd-Steinberg uses the modified Floyd-Steinberg algorithm of
-Adaptive Hybrid on the entire image. Generally, the results are poor in
-pale regions.
-
-<DT><EM>Random Floyd-Steinberg</EM>
-<DD>
-Random Floyd-Steinberg uses the modified Floyd-Steinberg algorithm of
-Adaptive Random on the entire image. Generally, the results are poor in
-pale regions.
-</DL>
-
-
-
-<H3><A NAME="SEC35" HREF="gimpprint_toc.html#TOC35">5.1.6 Action Buttons</A></H3>
-
-<P>
-The last pane contains four action buttons:
-
-</P>
-<DL COMPACT>
-
-<DT><EM>Print and Save Settings</EM>
-<DD>
-Immediately print the image (or, if the File printer is chosen, display
-a file selection window to pick the output file), and save all current
-settings for all printers.
-
-<DT><EM>Save Settings</EM>
-<DD>
-Immediately save the settings, and continue working in the Print plugin.
-
-<DT><EM>Print</EM>
-<DD>
-Immediately print the image (or, if the <SAMP>`File'</SAMP> printer is chosen,
-display a file selection window to pick the output file), but do not
-save settings.
-
-<DT><EM>Cancel</EM>
-<DD>
-Immediately quit without saving settings or printing.
-</DL>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_19.html">previous</A>, <A HREF="gimpprint_21.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_21.html b/doc/manual-html/gimpprint_21.html
deleted file mode 100644
index 9f83de8..0000000
--- a/doc/manual-html/gimpprint_21.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Ghostscript</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_20.html">previous</A>, <A HREF="gimpprint_22.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC36" HREF="gimpprint_toc.html#TOC36">5.2 Ghostscript driver</A></H2>
-<P>
-<A NAME="IDX177"></A>
-
-</P>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_20.html">previous</A>, <A HREF="gimpprint_22.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_22.html b/doc/manual-html/gimpprint_22.html
deleted file mode 100644
index 11b0fec..0000000
--- a/doc/manual-html/gimpprint_22.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - CUPS</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_21.html">previous</A>, <A HREF="gimpprint_23.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC37" HREF="gimpprint_toc.html#TOC37">5.3 CUPS driver</A></H2>
-<P>
-<A NAME="IDX178"></A>
-
-</P>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_21.html">previous</A>, <A HREF="gimpprint_23.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_23.html b/doc/manual-html/gimpprint_23.html
deleted file mode 100644
index e1bd23b..0000000
--- a/doc/manual-html/gimpprint_23.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Problems</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_22.html">previous</A>, <A HREF="gimpprint_24.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC38" HREF="gimpprint_toc.html#TOC38">6 Reporting Bugs</A></H1>
-<P>
-<A NAME="IDX179"></A>
-<A NAME="IDX180"></A>
-
-</P>
-<P>
-If you find a bug in GIMP-Print or have any suggestions for modification
-or improvement, please send electronic mail to the GIMP-Print bug
-reporting address <A NAME="DOCF5" HREF="gimpprint_foot.html#FOOT5">(5)</A>}. Include the version
-number, which you can find by running <SAMP>`gimpprint-config
---version'</SAMP>. Also include in your message the output that the program
-produced and the output you expected, if applicable, otherwise the best
-description of the problem that you can provide.
-
-</P>
-<P>
-If you have other questions, comments or suggestions about GIMP-Print,
-contact the developers via electronic mail to the GIMP-Print mailing
-list <A NAME="DOCF6" HREF="gimpprint_foot.html#FOOT6">(6)</A>}. They will try to help you out,
-although they may not have time to fix your problems.
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_22.html">previous</A>, <A HREF="gimpprint_24.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_24.html b/doc/manual-html/gimpprint_24.html
deleted file mode 100644
index 31838f9..0000000
--- a/doc/manual-html/gimpprint_24.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Appendices</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_23.html">previous</A>, <A HREF="gimpprint_25.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC39" HREF="gimpprint_toc.html#TOC39">7 Appendices</A></H1>
-<P>
-<A NAME="IDX181"></A>
-
-</P>
-
-<UL>
-<LI><A HREF="gimpprint_25.html#SEC40">Dithering</A>: Dither algorithms.
-<LI><A HREF="gimpprint_26.html#SEC41">Weaving</A>: Weaving algorithms.
-<LI><A HREF="gimpprint_34.html#SEC49">ESC/P2</A>: Epson ESC/P2 printer control language.
-<LI><A HREF="gimpprint_39.html#SEC54">New Printer</A>: Adding a new printer to libgimpprint.
-</UL>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_23.html">previous</A>, <A HREF="gimpprint_25.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_25.html b/doc/manual-html/gimpprint_25.html
deleted file mode 100644
index bbccb97..0000000
--- a/doc/manual-html/gimpprint_25.html
+++ /dev/null
@@ -1,611 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Dithering</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_24.html">previous</A>, <A HREF="gimpprint_26.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC40" HREF="gimpprint_toc.html#TOC40">A Dithering</A></H1>
-<P>
-<A NAME="IDX182"></A>
-
-</P>
-<P>
-The dithering code in <TT>`print-dither.c'</TT> attempts to reproduce
-various shades of gray (or all colors) from only a few different inks
-(black, cyan, magenta, yellow, and sometimes light cyan and light
-magenta). The dots can't vary in darkness or size (except for certain
-special printers), and so we need to lay down a certain fraction of dots
-to represent each distinct level.
-
-</P>
-<P>
-This sounds straightforward; in practice, it isn't. Completely random
-distribution of dots (simple probabilistic dithering) would create
-grainy clumps and light spots. The smoothest pattern results from an
-equidistant spacing of dots. Approximating this requires sophisticated
-algorithms. We have two dithering algorithms, an ordered dither
-algorithm that uses a grid (matrix) to decide whether to print, and a
-modified Floyd-Steinberg error diffusion algorithm that uses a grid in a
-slightly different way.
-
-</P>
-
-<P>
-We currently have three dithering functions:
-
-</P>
-
-<OL>
-<LI>
-
-<CODE>dither_fastblack</CODE> produces pure black or white from a pre-dithered
-input. This is used for two purposes: for printing pure black and white
-very quickly (e. g. text), and for printing pre-screened monochrome
-output that was rasterized externally.
-
-<LI>
-
-<CODE>dither_black</CODE> produces black from grayscale input. The new
-dither_black can produce either a single or multiple levels of black,
-for printers supporting variable dot size.
-
-<LI>
-
-<CODE>dither_cmyk</CODE> produces 3, 4, 5, 6, or 7 color output (CMY, CMYK,
-CcMmYK, CcMmYy, CcMmYyK, or any variants). The new routine can handle
-single or multiple levels of each color.
-</OL>
-
-<P>
-There is a choice of dithering algorithms. Four of them are based on a
-basic error diffusion, with a few tweaks of my own. The other one is
-`ordered'. However, they all share the basic operation in common.
-First, the algorithm picks what kind of dot (if there are multiple dot
-sizes and/or tones that may be picked) is the candidate to be printed.
-This decision is made based on the darkness at the point being dithered.
-Then, it decides whether the dot will be printed at all. What this is
-based on depends upon which algorithm family we use. This is all
-described in more detail below.
-
-</P>
-
-<P>
-Ordered dithering works by comparing the value at a given point with the
-value of a tiled matrix. If the value at the point is greater than the
-value in the matrix, the dot is printed. The matrix should consist of a
-set of evenly spaced points between 0 and the upper limit. The choice
-of matrix is very important for print quality. A good dither matrix
-will emphasize high frequency components, which distributes dots evenly
-with a minimum of clumping. The matrices used here are all simple
-matrices that are expanded recursively to create larger matrices with
-the same kind of even point distribution. This is described below.
-
-</P>
-<P>
-Note that it is important to use different matrices for the two
-sub-operations, because otherwise the choice about whether to print and
-the choice of dot size will be correlated. The usual result is that the
-print is either too dark or too light, but there can be other problems.
-
-</P>
-<P>
-Ordered dithering works quite well on single dot size, four color
-printers. It has not been well tested on four color, variable dot size
-printers. It should be avoided on six color printers.
-
-</P>
-
-<P>
-Error diffusion works by taking the output error at a given pixel and
-"diffusing" it into surrounding pixels. Output error is the
-difference between the amount of ink output and the input level at each
-pixel. For simple printers, with one or four ink colors and only one
-dot size, the amount of ink output is either 65536 (i. e. full output)
-or 0 (no output). The difference between this and the input level is
-the error. Normal error diffusion adds part of this error to the
-adjoining pixels in the next column and the next row (the algorithm
-simply scans each row in turn, never backing up). The error adds up
-until it reaches a threshold (half of the full output level, or 32768),
-at which point a dot is output, the output is subtracted from the
-current value, and the (now negative) error is diffused similarly.
-
-</P>
-<P>
-Error diffusion works quite well in general, but it tends to generate
-artifacts which usually appear as worm-like lines or areas of anomalous
-density. I have devised some ways, as described below, of ameliorating
-these artifacts.
-
-</P>
-<P>
-There are two sub-classes of error diffusion that we use here, `random'
-and `hybrid'. One of the techniques that we use to ameliorate the
-artifacts is to use a fuzzy threshold rather than the hard threshold of
-half of the output level. Random error diffusion uses a pseudo-random
-number to perturb the threshold, while hybrid error diffusion uses a
-matrix. Hybrid error diffusion worked very poorly in 3.1.3, and I
-couldn't figure out why until I found a bug. It now works very well.
-
-</P>
-<P>
-There is one additional variant (on both sub-classes), called `adaptive
-hybrid' and `adaptive random'. The adaptive variant takes advantage of
-the fact that the patterns that ordered dithering create are less
-visible at very low densities, while the artifacts created by error
-diffusion are more objectionable at low densities. At low densities,
-therefore, it uses ordered dithering; at higher densities it uses error
-diffusion.
-
-</P>
-
-<P>
-Handling multiple output levels makes life a bit more complicated. In
-principle, it shouldn't be much harder: simply figure out what the ratio
-between the available output levels is and have multiple thresholds. In
-practice, getting these right involves a lot of trial and error. The
-other thing that's important is to maximize the number of dots that have
-some ink. This will reduce the amount of speckling. More on this
-later.
-
-</P>
-<P>
-The next question: how do we handle black when printing in color? Black
-ink is much darker than colored inks. It's possible to produce black by
-adding some mixture of cyan, magenta, and yellow--in principle. In
-practice, the black really isn't very black, and different inks and
-different papers will produce different color casts. However, by using
-CMY to produce gray, we can output a lot more dots! This makes for a much
-smoother image. What's more, one cyan, one magenta, and one yellow dot
-produce less darkness than one black dot, so we're outputting that many
-more dots. Better yet, with 6 or 7 color printers, we have to output even
-more light ink dots. So Epson Stylus Photo printers can produce really
-smooth grays--if we do everything right. The right idea is to use
-CMY at lower black levels, and gradually mix in black as the overall
-amount of ink increases, so the black dots don't really become visible
-within the ink mass.
-
-</P>
-<P>
-Variable dot sizes are handled by dividing the range between 0 and
-65536 into segments. Each segment can either represent a range in
-which all of one kind of ink (color and/or dot size) is used, with
-varying amounts of ink, or a transition region between inks, in which
-equal numbers of dots are printed but the amount of each ink will be
-adjusted throughout the range. Each range is represented by four
-numbers:
-
-</P>
-
-<OL>
-<LI>
-
-bottom of the range
-<LI>
-
-top of the range
-<LI>
-
-value of the lighter ink
-<LI>
-
-value of the darker ink
-</OL>
-
-<P>
-In addition, the bit patterns and which type of ink are also
-represented, but they don't affect the actual algorithm.
-
-</P>
-
-<P>
-As mentioned above, the basic algorithm is the same whether we use
-ordered dither or error diffusion. We perform the following steps on
-each color of each pixel:
-
-</P>
-
-<OL>
-<LI>
-
-Compute the value of the particular color we're printing. This isn't
-usually the pure CMY value; it's adjusted to improve saturation and to
-limit the use of black in light toned regions (to avoid speckling).
-
-<LI>
-
-Find the range containing this value.
-
-<LI>
-
-Compute where this value lies within the range. We scale the endpoints
-between 0 and 65536 for this purpose. So for example, if the bottom of
-the range is 10,000 and the top of the range is 20,000, and the value is
-12,500, we're 1/4 of the way between the bottom and the top of the
-range, so our scale point is 16384.
-
-<LI>
-
-Compute the "virtual value". The virtual value is the distance between
-the value of the lighter and the value of the darker ink. So if the
-value of the light ink is 32768 and the dark ink is 65536, we compute a
-virtual value scaled appropriately between these two values, which is
-40960 in this case.
-
-<LI>
-
-Using either error diffusion or ordered dither, the standard threshold
-is 1/2 of the value (20480 in this case). Using ordered dither, we want
-to compute a value between 0 and 40960 that we will compare the input
-value against to decide whether to print. Using pure error diffusion,
-we would compare the accumulated error against 20480 to decide whether
-to print. In practice, we use the same matrix method to decide whether
-to print. The correct amount of ink will be printed this way, but we
-minimize the squiggly lines characteristic of error diffusion by
-dithering the threshold in this fashion. A future enhancement will
-allow us to control the amount of dithering applied to the threshold.
-</OL>
-
-<P>
-The matrices were generated by Thomas Tonino
-@email{&#60;ttonino@bio.vu.nl&#62;} with an algorithm of his devising. The
-algorithm is designed to maximize the spacing between dots at any given
-density by searching the matrix for holes and placing a dot in the
-largest available hole. It requires careful selection of initial points
-to achieve good results, and is very time consuming. For best results,
-a different matrix must be used for modes with 2:1 aspect ratio
-(e.g. 1440x720) than for 1:1 (e. g. 720x720). It is essential with any
-of these matrices that every point be used. Skipping points generates
-low-frequency noise.
-
-</P>
-<P>
-It's essential to use different matrices for deciding whether to print
-and for deciding what color (dark or light) to print. This should be
-obvious; the decision about whether to print at all should be as
-independent as possible from the decision about what color to print,
-because any bias will result in excess light or dark ink being
-printed, shifting the tonal balance. We actually use the same
-matrices, but we shift them vertically and horizontally. Assuming
-that the matrices are not self-correlated, this will yield good
-results.
-
-</P>
-<P>
-The ranges are computed from a list of ink values (between 0 and 1 for
-each possible combination of dot size and ink tone, where the value
-represents the darkness of the ink) and the desired maximum density of
-the ink. This is done in dither_set_ranges, and needs more
-documentation.
-
-</P>
-
-<P>
-I stated earlier that I've tweaked the basic error diffusion algorithm.
-Here's what I've done to improve it:
-
-</P>
-
-<OL>
-<LI>
-
-We use a variable threshold to decide when to print, as discussed above.
-This does two things for us: it reduces the slightly squiggly diagonal
-lines that are the mark of error diffusion; and it allows us to lay down
-some ink even in very light areas near the edge of the image. The
-squiggly lines that error diffusion algorithms tend to generate are
-caused by the gradual accumulation of error. This error is partially
-added horizontally and partially vertically. The horizontal
-accumulation results in a dot eventually being printed. The vertical
-accumulation results in a dot getting laid down in roughly the same
-horizontal position in the next row. The diagonal squigglies result
-from the error being added to pixels one forward and one below the
-current pixel; these lines slope from the top right to the bottom left
-of the image.
-
-Error diffusion also results in pale areas being completely white near
-the top left of the image (the origin of the printing coordinates).
-This is because enough error has to accumulate for anything at all to
-get printed. In very pale areas it takes quite a long time to build up
-anything printable at all; this results in the bare spots.
-
-Randomizing the threshold somewhat breaks up the diagonals to some
-degree by randomizing the exact location that the accumulated output
-crosses the threshold. It reduces the false white areas by allowing
-some dots to be printed even when the accumulated output level is very
-low. It doesn't result in excess ink because the full output level is
-still subtracted and diffused.
-
-Excessive randomization leads to blobs at high densities. Therefore, as
-the density increases, the degree of randomization decreases.
-
-<LI>
-
-Alternating scan direction between rows (first row is scanned left to
-right, second is scanned right to left, and so on). This also helps
-break up white areas, and it also seems to break up squigglies a bit.
-Furthermore, it eliminates directional biases in the horizontal
-direction. This isn't necessary for ordered dither, but it doesn't hurt
-either.
-
-<LI>
-
-Diffusing the error into more pixels. Instead of diffusing the entire
-error into @math{(X+1, Y)} and @math{(X, Y+1)}, we diffuse it into
-@math{(X+1, Y)}, @math{(X+K, Y+1)}, @math{(X, Y+1)}, @math{(X-K, Y+1)}
-where @math{K} depends upon the output level (it never exceeds about 10
-dots, and is greater at higher output levels). This really reduces
-squigglies and graininess. The amount of this spread can be controlled;
-for line art, it should be less than for photographs (of course, line
-art doesn't usually contain much light color, but the <STRONG>error</STRONG>
-value can be small in places!) In addition to requiring more
-computation, a wide ink spread results in patterning at high dot
-densities (note that the dot density can be high even in fairly pale
-regions if multiple dot sizes are in use).
-
-<LI>
-
-Don't lay down any colored ink if we're laying down black ink. There's
-no point; the colored ink won't show. We still pretend that we did for
-purposes of error diffusion (otherwise excessive error will build up,
-and will take a long time to clear, resulting in heavy bleeding of ink
-into surrounding areas, which is very ugly indeed), but we don't bother
-wasting the ink. How well this will do with variable dot size remains
-to be seen.
-
-<LI>
-
-Oversampling. This is how to print 1440x720 with Epson Stylus printers.
-Printing full density at 1440x720 will result in excess ink being laid
-down. The trick is to print only every other dot. We still compute the
-error as though we printed every dot. It turns out that randomizing
-which dots are printed results in very speckled output. This can be
-taken too far; oversampling at 1440x1440 or 1440x2880 virtual resolution
-results in other problems. However, at present 1440x1440 (which is more
-accurately called "1440x720 enhanced", as the Epson printers cannot
-print 1440 rows per inch) does quite well, although it's slow.
-</OL>
-
-<P>
-What about multiple output levels? For 6 and 7 color printers, simply
-using different threshold levels has a problem: the pale inks have trouble
-being seen when a lot of darker ink is being printed. So rather than
-just using the output level of the particular color to decide which ink
-to print, we look at the total density (sum of all output levels).
-If the density's high enough, we prefer to use the dark ink. Speckling
-is less visible when there's a lot of ink, anyway. I haven't yet figured
-out what to do for multiple levels of one color.
-
-</P>
-<P>
-You'll note that I haven't quoted a single source on color or printing
-theory. I simply did all of this empirically.
-
-</P>
-<P>
-There are various other tricks to reduce speckling. One that I've seen
-is to reduce the amount of ink printed in regions where one color
-(particularly cyan, which is perceived as the darkest) is very pale.
-This does reduce speckling all right, but it also results in strange
-tonal curves and weird (to my eye) colors.
-
-</P>
-
-<P>
-Before any dither routine is used, <CODE>init_dither()</CODE> must be called.
-This takes three arguments: the input width (number of pixels in the
-input), the output width (number of pixels in the output), and a
-<CODE>vars_t</CODE> structure containing the parameters for the print job.
-
-</P>
-<P>
-<CODE>init_dither()</CODE> returns a pointer to an opaque object representing
-the dither. This object is passed as the first argument to all of the
-dither-related routines.
-
-</P>
-<P>
-After a page is fully dithered, <CODE>free_dither()</CODE> must be called to
-free the dither object and perform any cleanup. In the future, this may
-do more (such as flush output). This arrangement permits using these
-routines with programs that create multiple output pages, such as
-GhostScript.
-
-</P>
-<P>
-The dithering routines themselves have a number of control knobs that
-control internal aspects of the dithering process. These knobs are
-accessible via a number of functions that can be called after
-<CODE>init_dither()</CODE>.
-
-</P>
-
-<UL>
-<LI>
-
-<CODE>dither_set_density()</CODE> takes a double between 0 and 1 representing
-the desired ink density for printing solid colors. This is used in a
-number of places in the dithering routine to make decisions.
-
-<LI>
-
-<CODE>dither_set_black_density()</CODE> takes a double between 0 and 1
-representing the desired ink density for printing black ink in color
-printing. This is used to balance black against color ink. By default,
-this is equal to the density set by <CODE>dither_set_density()</CODE>. By
-setting it higher, more black ink will be printed. For example, if the
-base density is .4 and the black density is .8, twice as much black ink
-will be printed as would otherwise be called for.
-
-This is not used when printing in monochrome. When printing monochrome,
-the base density (<CODE>dither_set_density</CODE>) should be adjusted
-appropriately.
-
-<LI>
-
-<CODE>dither_set_ink_budget()</CODE> takes an unsigned number representing the
-most ink that may be deposited at a given point. This number is
-arbitrary; the limit is computed by summing the size of each ink dot,
-which is supplied as a parameter in <CODE>dither_set_<VAR>X</VAR>_ranges</CODE>.
-By default, there is no limit.
-
-<LI>
-
-<CODE>dither_set_black_lower()</CODE> takes a double that should be between 0
-and 1 that represents the lowest density level at which black ink will
-start to mix in with colored ink to generate grays. The lower this is,
-the less density is required to use black ink. Setting this too low
-will result in speckling from black dots, particularly on 6 and 7 color
-printers. Setting this too high will make it hard to get satisfactory
-black or may result in sharp transition between blended colors and
-black. Default: 0.0468.
-
-It is important to note that since the density scale is never linear
-(and since this value is adjusted via other things happening during the
-dithering process) that this does not mean that 95% gray will use any
-black ink. At this setting, there will be no black ink used until about
-50% gray.
-
-This only applies to color mode.
-
-This value should be set lower for printers capable of variable dot
-size, since more dots can be laid down close to each other.
-
-<LI>
-
-<CODE>dither_set_black_upper()</CODE> takes a double that should be between 0
-and 1 that represents the highest density level at which colored inks
-will be mixed to create gray. Setting this too low will result in
-speckly dark grays because there is not enough ink to fill all the
-holes, or sharp transition between blended colors and black if it is too
-close to the value of dither_set_black_upper(). Setting this too high
-will result in poor black and dark tone quality. Default: 0.5. This
-results in 10% and darker grays being printed with essentially all
-black.
-
-This only applies to color mode.
-
-<LI>
-
-<CODE>dither_set_black_levels()</CODE> takes three doubles that represent the
-amount of cyan, magenta, and yellow respectively that are blended to
-create gray. The defaults are 1.0 for each, which is probably too low
-for most printers. These values are adjusted to create a good gray
-balance. Setting these too low will result in pale light and midtone
-grays, with a sharp transition to darker tones as black mixes in.
-Setting them too high will result in overly dark grays and use of too
-much ink, possibly creating bleed-through.
-
-This only applies to color mode.
-
-<LI>
-
-<CODE>dither_set_randomizers()</CODE> takes four integer values representing
-the degree of randomness used for cyan, magenta, yellow, and black.
-This is used to allow some printing to take place in pale areas. Zero
-is the most random; greater than 8 or so gives very little randomness at
-all. Defaults are 0 for cyan, magenta, and yellow, and 4 for black.
-Setting the value for black too low will result in black speckling in
-pale areas. Setting values too high will result in pale areas getting
-no ink at all.
-
-This currently only applies to single dot size in color and black. It
-should be extended to operate in variable dot size mode, although
-actually applying it correctly will be tricky.
-
-<LI>
-
-<CODE>dither_set_ink_darkness()</CODE> takes three doubles representing the
-contribution to perceived darkness of cyan, magenta, and yellow. This
-is used to help decide when to switch between light and dark inks in 6
-and 7 color printers (with light cyan, light magenta, and possibly light
-yellow). Setting these too low will result in too much light ink being
-laid down, creating flat spots in the darkness curves and bleed-through.
-Setting them too high will result in dark ink being used in pale areas,
-creating speckle. The defaults are .4 for cyan, .3 for magenta, and .2
-for yellow. Dark cyan will show against yellow much more than dark
-magenta will show against cyan, since the cyan appears much darker than
-the yellow.
-
-<LI>
-
-<CODE>dither_set_light_inks()</CODE> takes three doubles between 0 and 1
-representing the ratio in darkness between the light and dark versions
-of the inks. Setting these too low will result in too much dark ink
-being used in pale areas, creating speckling, while setting them too
-high will result in very smooth texture but too much use of light ink,
-resulting in flat spots in the density curves and ink bleed-through.
-There are no defaults. Any light ink specified as zero indicates that
-there is no light ink for that color.
-
-This only applies to 6 and 7 color printers in single dot size color
-mode, and only to those inks which have light versions (usually cyan and
-magenta).
-
-<LI>
-
-<CODE>dither_set_ink_spread()</CODE> takes a small integer representing the
-amount of ink spread in the dither. Larger numbers mean less spread.
-Larger values are appropriate for line art and solid tones; they will
-yield sharper transitions but more dither artifacts. Smaller values are
-more appropriate for photos. They will reduce resolution and sharpness
-but reduce dither artifacts up to a point. A value of 16 or higher
-implies minimum ink spread at any resolution no matter what the
-overdensity. A value of 14 is typical for photos on single dot size, 6
-color printers. For 4 color printers, subtract 1 (more spread; the dots
-are farther apart). For variable dot size printers, add 1 (more small
-dots are printed; less spread is desirable).
-
-<LI>
-
-<CODE>dither_set_adaptive_divisor()</CODE> takes a float representing the
-transition point between error diffusion and ordered dither if adaptive
-dithering is used. The float is a fraction of the printing density.
-For example, if you wish the transition to be at 1/4 of the maximum
-density (which works well on simple 4-color printers), you would pass
-.25 here. With six colors and/or with multiple dot sizes, the values
-should be set lower.
-
-<LI>
-
-<CODE>dither_set_transition()</CODE> takes a float representing the exponent
-of the transition curve between light and dark inks/dot sizes. A value
-less than 1 (typical when using error diffusion) mixes in less dark
-ink/small dots at lower ends of the range, to reduce speckling. When
-using ordered dithering, this must be set to 1.
-
-<LI>
-
-<CODE>dither_set_<VAR>X</VAR>_ranges_simple</CODE> (<VAR>X</VAR>=<SAMP>`c'</SAMP>, <SAMP>`m'</SAMP>,
-<SAMP>`y'</SAMP>, or <SAMP>`k'</SAMP>) describes the ink choices available for each
-color. This is useful in typical cases where a four color printer with
-variable dot sizes is in use. It is passed an array of doubles between
-(0, 1] representing the relative darkness of each dot size. The dot
-sizes are assigned bit patterns (and ink quantities, see
-<CODE>dither_set_ink_budget()</CODE> above) from 1 to the number of levels.
-This also requires a density, which is the desired density for this
-color. This density need not equal the density specified in
-<CODE>dither_set_density()</CODE>. Setting it lower will tend to print more
-dark ink (because the curves are calculated for this color assuming a
-lower density than is actually supplied).
-
-<LI>
-
-<CODE>dither_set_<VAR>X</VAR>_ranges</CODE> (<VAR>X</VAR>=<SAMP>`c'</SAMP>, <SAMP>`m'</SAMP>, <SAMP>`y'</SAMP>,
-or <SAMP>`k'</SAMP>) describes in a more general way the ink choices available
-for each color. For each possible ink choice, a bit pattern, dot size,
-value (i. e. relative darkness), and whether the ink is the dark or
-light variant ink is specified.
-</UL>
-
-<P>
----Robert Krawitz @email{&#60;rlk@alum.mit.edu&#62;} May 8, 2000
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_24.html">previous</A>, <A HREF="gimpprint_26.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_26.html b/doc/manual-html/gimpprint_26.html
deleted file mode 100644
index 49ba0d0..0000000
--- a/doc/manual-html/gimpprint_26.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Weaving</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_25.html">previous</A>, <A HREF="gimpprint_27.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC41" HREF="gimpprint_toc.html#TOC41">B Weaving for inkjet printers</A></H1>
-<P>
-<A NAME="IDX183"></A>
-
-</P>
-<P>
-by Charles Briscoe-Smith and Robert Krawitz.
-
-</P>
-
-<UL>
-<LI><A HREF="gimpprint_27.html#SEC42">Weaving introduction</A>: Just what is weaving?
-<LI><A HREF="gimpprint_28.html#SEC43">Weaving algorithms</A>: How to weave.
-</UL>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_25.html">previous</A>, <A HREF="gimpprint_27.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_27.html b/doc/manual-html/gimpprint_27.html
deleted file mode 100644
index dbd76d4..0000000
--- a/doc/manual-html/gimpprint_27.html
+++ /dev/null
@@ -1,152 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Weaving introduction</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_26.html">previous</A>, <A HREF="gimpprint_28.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC42" HREF="gimpprint_toc.html#TOC42">B.1 Introduction</A></H2>
-
-<P>
-The Epson Stylus Color/Photo printers don't have memory to print using
-all of the nozzles in the print head. For example, the Stylus Photo
-700/EX has 32 nozzles. At 720 dpi, with an 8" wide image, a single line
-requires @math{(8 * 720 * 6 / 8)} bytes, or 4320 bytes (because the
-Stylus Photo printers have 6 ink colors). To use 32 nozzles per color
-would require 138240 bytes. It's actually worse than that, though,
-because the nozzles are spaced 8 rows apart. Therefore, in order to
-store enough data to permit sending the page as a simple raster, the
-printer would require enough memory to store 256 rows, or 1105920 bytes.
-Considering that the Photo EX can print 11" wide, we're looking at more
-like 1.5 MB. In fact, these printers are capable of 1440 dpi horizontal
-resolution. This would require 3 MB. The printers actually have
-64K-256K.
-
-</P>
-<P>
-With the newer (740/750 and later) printers it's even worse, since these
-printers support multiple dot sizes; of course, the even newer
-2880x720 printers don't help either.
-
-</P>
-<P>
-Older Epson printers had a mode called <STRONG>MicroWeave</STRONG> (tm). In this
-mode, the host fed the printer individual rows of dots, and the printer
-bundled them up and sent them to the print head in the correct order to
-achieve high quality. This MicroWeave mode still works in new printers,
-but in some cases the implementation is very minimal: the printer uses
-exactly one nozzle of each color (the first one). This makes printing
-extremely slow (more than 30 minutes for one 8.5x11" page), although the
-quality is extremely high with no visible banding whatsoever. It's not
-good for the print head, though, since no ink is flowing through the
-other nozzles. This leads to drying of ink and possible permanent
-damage to the print head.
-
-</P>
-<P>
-By the way, although the Epson manual says that microweave mode should be
-used at 720 dpi, 360 dpi continues to work in much the same way. At 360
-dpi, data is fed to the printer one row at a time on all Epson printers.
-The pattern that the printer uses to print is very prone to banding.
-However, 360 dpi is inherently a low quality mode; if you're using it,
-presumably you don't much care about quality. It is possible to do
-microweave at 360 DPI, with significantly improved quality.
-
-</P>
-<P>
-Except for the Stylus Pro printers (5000, 5500, 7000, 7500, 9000,
-9500, and when it's released the 10000), which can do microweave at
-any resolution, printers from roughly the Stylus Color 600 and later
-do not have the capability to do MicroWeave correctly in many cases
-(some printers can do MicroWeave correctly at 720 DPI). Instead, the
-host must arrange the output in the order that it will be sent to the
-print head. This is a very complex process; the jets in the print
-head are spaced more than one row (1/720") apart, so we can't simply
-send consecutive rows of dots to the printer. Instead, we have to
-pass e. g. the first, ninth, 17th, 25th... rows in order for them to
-print in the correct position on the paper. This interleaving process
-is called "soft" weaving.
-
-</P>
-<P>
-This decision was probably made to save money on memory in the
-printer. It certainly makes the driver code far more complicated than
-it would be if the printer could arrange the output. Is that a bad
-thing? Usually this takes far less CPU time than the dithering
-process, and it does allow us more control over the printing process,
-e.g. to reduce banding. Conceivably, we could even use this ability
-to map out bad jets.
-
-</P>
-<P>
-Interestingly, apparently the Windows (and presumably Macintosh) drivers
-for most or all Epson printers still list a "microweave" mode.
-Experiments have demonstrated that this does not in fact use the
-"microweave" mode of the printer. Possibly it does nothing, or it
-uses a different weave pattern from what the non-"microweave" mode
-does. This is unnecessarily confusing, at least for people who write
-drivers who try to explain them to people who don't.
-
-</P>
-<P>
-What makes this interesting is that there are many different ways of of
-accomplishing this goal. The naive way would be to divide the image up
-into groups of 256 rows (for a printer with 32 jets and a separation of
-8 rows), and print all the mod8=0 rows in the first pass, mod8=1 rows in
-the second, and so forth. The problem with this approach is that the
-individual ink jets are not perfectly uniform; some emit slightly bigger
-or smaller drops than others. Since each group of 8 adjacent rows is
-printed with the same nozzle, that means that there will be distinct
-streaks of lighter and darker bands within the image (8 rows is 1/90",
-which is visible; 1/720" is not). Possibly worse is that these patterns
-will repeat every 256 rows. This creates banding patterns that are
-about 1/3" wide.
-
-</P>
-<P>
-So we have to do something to break up this patterning.
-
-</P>
-<P>
-Epson does not publish the weaving algorithms that they use in their
-bundled drivers. Indeed, their developer web site
-(http://www.ercipd.com/isv/edr_docs.htm) does not even describe how to
-do this weaving at all; it says that the only way to achieve 720 dpi is
-to use MicroWeave. It does note (correctly) that 1440 dpi horizontal
-can only be achieved by the driver (i. e. in software). The manual
-actually makes it fairly clear how to do this (it requires two passes
-with horizontal head movement between passes), and it is presumably
-possible to do this with MicroWeave.
-
-</P>
-<P>
-The information about how to do this is apparently available under
-non-disclosure agreement (NDA). It's actually easy enough to reverse
-engineer what's inside a print file with a simple Perl script, which is
-supplied with the Gimp-Print distribution as tests/parse-escp2. In any
-event, we weren't particularly interested in the weaving patterns Epson
-used. There are many factors that go into choosing a good weaving
-pattern; we're learning them as we go along. Issues such as drying time
-(giving the ink a few seconds more or less to dry can have highly
-visible effects) affect the quality of the output.
-
-</P>
-<P>
-The Uniprint GhostScript driver has been able to do weaving for a long
-time. It uses patterns that must be specified for each choice of
-resolution and printer. We preferred an algorithmic approach that
-computes a weave pattern for any given choice of inputs. This
-obviously requires extensive testing; we developed a test suite
-specifically for this purpose.
-
-</P>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_26.html">previous</A>, <A HREF="gimpprint_28.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_28.html b/doc/manual-html/gimpprint_28.html
deleted file mode 100644
index 3116157..0000000
--- a/doc/manual-html/gimpprint_28.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Weaving algorithms</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_27.html">previous</A>, <A HREF="gimpprint_29.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC43" HREF="gimpprint_toc.html#TOC43">B.2 Weaving algorithms</A></H2>
-<P>
-<A NAME="IDX184"></A>
-
-</P>
-<P>
-I considered a few algorithms to perform the weave. The first one I
-devised let me use only @math{(jets-distance_between_jets+1)}
-nozzles, or 25. This is OK in principle, but it's slower than using all
-nozzles. By playing around with it some more, I came up with an
-algorithm that lets me use all of the nozzles, except near the top and
-bottom of the page.
-
-</P>
-<P>
-This still produces some banding, though. Even better quality can be
-achieved by using multiple nozzles on the same line. How do we do
-this? In 1440x720 mode, we're printing two output lines at the same
-vertical position. However, if we want four passes, we have to
-effectively print each line twice. Actually doing this would increase
-the density, so what we do is print half the dots on each pass. This
-produces near-perfect output, and it's far faster than using (pseudo)
-"MicroWeave".
-
-</P>
-<P>
-Yet another complication is how to get near the top and bottom of the
-page. This algorithm lets us print to within one head width of the
-top of the page, and a bit more than one head width from the bottom.
-That leaves a lot of blank space. Doing the weave properly outside of
-this region is increasingly difficult as we get closer to the edge of
-the paper; in the interior region, any nozzle can print any line, but
-near the top and bottom edges, only some nozzles can print. We
-originally handled this by using the naive way mentioned above near
-the borders, and switching over to the high quality method in the
-interior. Unfortunately, this meant that the quality is quite visibly
-degraded near the top and bottom of the page. We have since devised
-better algorithms that allow printing to the extreme top and bottom of
-the region that can physically be printed, with only minimal loss of
-quality.
-
-</P>
-<P>
-Epson does not advertise that the printers can print at the very top
-of the page, although in practice most of them can. The quality is
-degraded to some degree, and we have observed that in some cases not
-all of the dots get printed. Epson may have decided that the
-degradation in quality is sufficient that printing in that region
-should not be allowed. That is a valid decision, although we have
-taken another approach.
-
-</P>
-
-<UL>
-<LI><A HREF="gimpprint_29.html#SEC44">Simple weaving algorithms</A>: Starting to weave.
-<LI><A HREF="gimpprint_30.html#SEC45">Perfect weaving</A>: Improving the weave.
-<LI><A HREF="gimpprint_31.html#SEC46">Weaving collisions</A>: Bang!
-<LI><A HREF="gimpprint_32.html#SEC47">What is perfect weaving?</A>: What makes a "perfect" weave?
-<LI><A HREF="gimpprint_33.html#SEC48">Oversampling</A>: Increasing resolution, reducing banding
-</UL>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_27.html">previous</A>, <A HREF="gimpprint_29.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_29.html b/doc/manual-html/gimpprint_29.html
deleted file mode 100644
index bd893a6..0000000
--- a/doc/manual-html/gimpprint_29.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Simple weaving algorithms</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_28.html">previous</A>, <A HREF="gimpprint_30.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H3><A NAME="SEC44" HREF="gimpprint_toc.html#TOC44">B.2.1 Simple weaving algorithms</A></H3>
-
-<P>
-The initial problem is to calculate the starting position of each
-pass; the row number of the printer's top jet when printing that pass.
-Since we assume the paper cannot be reverse-fed, the print head must,
-for each pass, start either further down the page than the previous
-pass or at the same position. Each pass's start point is therefore at
-a non-negative offset from the previous pass's start point.
-
-</P>
-<P>
-Once we have a formula for the starting row of each pass, we then turn
-that "inside out" to get a formula for the pass number containing each
-row.
-
-</P>
-<P>
-First, let's define how our printer works. We measure vertical
-position on the paper in "rows"; the resolution with which the printer
-can position the paper vertically. The print head contains @math{J} ink
-jets, which are spaced @math{S} rows apart.
-
-</P>
-<P>
-Consider a very simple case: we want to print a page as quickly as
-possible, and we mostly don't care how sparse the printing is, so long
-as it's fairly even.
-
-</P>
-<P>
-It's pretty obvious how to do this. We make one pass with the print
-head, printing @math{J} lines of data, each line @math{S} rows after the
-previous one. We then advance the paper by @math{S*J} rows and print
-the next row. For example, if @math{J=7} and @math{S=4}, this method
-can be illustrated like this:
-
-</P>
-
-<PRE>
-pass number
-| row number-------&#62;
-| | 111111111122222222223333333333444444444455555555556666666666
-| 0123456789012345678901234567890123456789012345678901234567890123456789
-0 *---*---*---*---*---*---*
-1 *---*---*---*---*---*---*
-2 \-----------------------/ *---*---*---*---*---*-
- 7 jets \---/
- 4 rows offset from one jet to the next
- \---------------------------/
- 7*4=28 rows offset from one pass to the next
-</PRE>
-
-<P>
-In these examples, the vertical axis can be thought of as the time axis,
-with the pass number shown at the left margin, while the row number runs
-horizontally. A <SAMP>`*'</SAMP> shows each row printed by a pass, and a row of
-<SAMP>`-'</SAMP> is used to link together the rows printed by one pass of the
-print head. The first pass is numbered <SAMP>`0'</SAMP> and starts at row 0.
-Each subsequent pass @math{p} starts at row @math{p*S*J}. Each pass
-prints @math{J} lines, each line being @math{S} rows after the previous
-one. (For ease of viewing this file on a standard terminal, I'm
-clipping the examples at column 80.)
-
-</P>
-<P>
-This method covers the whole page with lines printed evenly @math{S}
-rows apart. However, we want to fill in all the other rows with
-printing to get a full-density page (we're ignoring oversampling at this
-stage). Where we have previously printed a single pass, we'll now print
-a "pass block": we print extra passes to fill in the empty rows. A
-naive implementation might look like this:
-
-</P>
-
-<PRE>
-0 *---*---*---*---*---*---*
-1 *---*---*---*---*---*---*
-2 *---*---*---*---*---*---*
-3 *---*---*---*---*---*---*
-4 *---*---*---*---*---*---*
-5 *---*---*---*---*---*---*
-6 *---*---*---*---*---*---*
-7 *---*---*---*---*---*---*
-8 *---*---*---*---*---*-
-9 *---*---*---*---*---*
-10 *---*---*---*---*---
-11 *---*---*---*---*--
-</PRE>
-
-<P>
-(Now you can see why this process is called "weaving"!)
-
-</P>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_28.html">previous</A>, <A HREF="gimpprint_30.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_3.html b/doc/manual-html/gimpprint_3.html
deleted file mode 100644
index e64b2eb..0000000
--- a/doc/manual-html/gimpprint_3.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Overview</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_2.html">previous</A>, <A HREF="gimpprint_4.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC6" HREF="gimpprint_toc.html#TOC6">1 Overview</A></H1>
-<P>
-<A NAME="IDX4"></A>
-
-</P>
-<P>
-The GIMP-Print package is a collection of programs and a library for
-high quality printing on modern inkjets, including `photographic
-quality' models which offer very high resolutions and several inks.
-
-</P>
-
-<P>
-META: Short history of the project
-
-</P>
-<P>
-GIMP-Print is the print facility of the <STRONG>GNU Image Manipulation Program</STRONG>
-(GIMP). It is in addition
-a suite of drivers that may be used with common UNIX spooling systems
-using GhostScript or CUPS. These drivers provide printing quality for
-UNIX/Linux on a par with proprietary vendor-supplied drivers in many
-cases, and can be used for many of the most demanding printing tasks.
-The core of GIMP-Print is a shared library (libgimpprint) which may be
-used by any program that wishes to produce high-qulaity printed output.
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_2.html">previous</A>, <A HREF="gimpprint_4.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_30.html b/doc/manual-html/gimpprint_30.html
deleted file mode 100644
index b947f40..0000000
--- a/doc/manual-html/gimpprint_30.html
+++ /dev/null
@@ -1,246 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Perfect weaving</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_29.html">previous</A>, <A HREF="gimpprint_31.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H3><A NAME="SEC45" HREF="gimpprint_toc.html#TOC45">B.2.2 Perfect weaving</A></H3>
-<P>
-<A NAME="IDX185"></A>
-
-</P>
-<P>
-This simple weave pattern prints every row, but will give conspicuous
-banding patterns for the reasons discussed above.
-
-</P>
-<P>
-Let's start improving this for our simple case. We can reduce banding
-by making sure that any given jet never prints a row too close to
-another row printed by the same jet. This means we want to space the
-rows printed by a given jet evenly down the page. In turn, this
-implies we want to advance the paper by as nearly an equal amount
-after each pass as possible.
-
-</P>
-<P>
-Each pass block prints @math{S*J} lines in @math{S} passes. The first
-line printed in each pass block is @math{S*J} rows lower on the page
-than the first line printed in the previous pass block. Therefore, if
-we advance the paper by @math{J} rows between each pass, we can print
-the right number of passes in each block and advance the paper perfectly
-evenly.
-
-</P>
-<P>
-Here's what this "perfect" weave looks like:
-
-</P>
-
-<PRE>
- start of full weave
- |
-0 *---*---*---*---*---*---*
-1 *---*---*---*---*---*---*
-2 *---*---*---*---*---*---*
-3 *---*---*---*---*---*---*
-4 *---*---*---*---*---*---*
-5 *---*---*---*---*---*---*
-6 *---*---*---*---*---*---*
-7 *---*---*---*---*---*---*
-8 *---*---*---*---*---*-
-9 *---*---*---*--
-10 *---*---
-11 *
-</PRE>
-
-<P>
-You'll notice that, for the first few rows, this weave is too sparse.
-It is not until the row marked "start of full weave" that every
-subsequent row is printed. We can calculate this start position as
-follows:
-
-</P>
-
-<PRE>
-@math{start = (S-1) * (J-1)}
-</PRE>
-
-<P>
-For the moment, we will ignore this problem with the weave. We'll
-consider later how to fill in the missing rows.
-
-</P>
-<P>
-Let's look at a few more examples of perfect weaves:
-
-</P>
-
-<P>
-@math{S=2}, @math{J=7}, @math{start=(2-1)*(7-1)=6}:
-
-</P>
-
-<PRE>
- starting row of full weave
- |
-0 *-*-*-*-*-*-*
-1 *-*-*-*-*-*-*
-2 *-*-*-*-*-*-*
-3 *-*-*-*-*-*-*
-4 *-*-*-*-*-*-*
-5 *-*-*-*-*-*-*
-6 *-*-*-*-*-*-*
-7 *-*-*-*-*-*-*
-</PRE>
-
-<P>
-@math{S=7}, @math{J=2}, @math{start=6}:
-
-</P>
-
-<PRE>
- start
- |
-0 *------*
-1 *------*
-2 *------*
-3 *------*
-4 *------*
-5 *------*
-6 *------*
-7 *------*
-8 *------*
-9 *------*
-</PRE>
-
-<P>
-@math{S=4}, @math{J=13}, @math{start=36}:
-
-</P>
-
-<PRE>
- start
- |
-0 *---*---*---*---*---*---*---*---*---*---*---*---*
-1 *---*---*---*---*---*---*---*---*---*---*---*---*
-2 *---*---*---*---*---*---*---*---*---*---*---*---*
-3 *---*---*---*---*---*---*---*---*---*--
-4 *---*---*---*---*---*---*-
-5 *---*---*---*
-</PRE>
-
-<P>
-@math{S=13}, @math{J=4}, @math{start=36}:
-
-</P>
-
-<PRE>
- start
- |
-0 *------------*------------*------------*
-1 *------------*------------*------------*
-2 *------------*------------*------------*
-3 *------------*------------*------------*
-4 *------------*------------*------------*
-5 *------------*------------*------------*
-6 *------------*------------*------------*
-7 *------------*------------*------------*
-8 *------------*------------*------------*
-9 *------------*------------*------------*
-10 *------------*------------*-----------
-11 *------------*------------*-------
-12 *------------*------------*---
-13 *------------*------------
-14 *------------*--------
-15 *------------*----
-16 *------------*
-17 *---------
-18 *-----
-19 *-
-</PRE>
-
-<P>
-@math{S=8}, @math{J=5}, @math{start=28}:
-
-</P>
-
-<PRE>
- start
- |
-0 *-------*-------*-------*-------*
-1 *-------*-------*-------*-------*
-2 *-------*-------*-------*-------*
-3 *-------*-------*-------*-------*
-4 *-------*-------*-------*-------*
-5 *-------*-------*-------*-------*
-6 *-------*-------*-------*-------*
-7 *-------*-------*-------*-------*
-8 *-------*-------*-------*-------*
-9 *-------*-------*-------*-------*
-10 *-------*-------*-------*---
-11 *-------*-------*------
-12 *-------*-------*-
-13 *-------*----
-14 *-------
-15 *--
-</PRE>
-
-<P>
-@math{S=9}, @math{J=5}, @math{start=32}:
-
-</P>
-
-<PRE>
- start
- |
-0 *--------*--------*--------*--------*
-1 *--------*--------*--------*--------*
-2 *--------*--------*--------*--------*
-3 *--------*--------*--------*--------*
-4 *--------*--------*--------*--------*
-5 *--------*--------*--------*--------*
-6 *--------*--------*--------*--------*
-7 *--------*--------*--------*--------*
-8 *--------*--------*--------*--------*
-9 *--------*--------*--------*-----
-10 *--------*--------*--------*
-11 *--------*--------*----
-12 *--------*--------
-13 *--------*---
-14 *-------
-15 *--
-</PRE>
-
-<P>
-@math{S=6}, @math{J=7}, @math{start=30}:
-
-</P>
-
-<PRE>
- start
- |
-0 *-----*-----*-----*-----*-----*-----*
-1 *-----*-----*-----*-----*-----*-----*
-2 *-----*-----*-----*-----*-----*-----*
-3 *-----*-----*-----*-----*-----*-----*
-4 *-----*-----*-----*-----*-----*-----*
-5 *-----*-----*-----*-----*-----*-----*
-6 *-----*-----*-----*-----*-----*-----
-7 *-----*-----*-----*-----*----
-8 *-----*-----*-----*---
-9 *-----*-----*--
-10 *-----*-
-11 *
-</PRE>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_29.html">previous</A>, <A HREF="gimpprint_31.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_31.html b/doc/manual-html/gimpprint_31.html
deleted file mode 100644
index c4c1a4b..0000000
--- a/doc/manual-html/gimpprint_31.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Weaving collisions</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_30.html">previous</A>, <A HREF="gimpprint_32.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H3><A NAME="SEC46" HREF="gimpprint_toc.html#TOC46">B.2.3 Weaving collisions</A></H3>
-<P>
-<A NAME="IDX186"></A>
-<A NAME="IDX187"></A>
-
-</P>
-<P>
-This perfect weave is not possible in all cases. Let's look at another
-example:
-
-</P>
-<P>
-@math{S=6}, @math{J=4}:
-
-</P>
-
-<PRE>
-0 *-----*-----*-----*
-1 *-----*-----*-----*
-2 *-----*-----*-----*
-3 *-----*-----*-----*
-4 ^ *-^---*-----*-----*
-5 | ^ | *-^---*-----*-----*
- OUCH! ^ | ^
- | |
-</PRE>
-
-<P>
-Here we have a collision. Some lines printed in later passes overprint
-lines printed by earlier passes. We can see why by considering which
-row number is printed by a given jet number @math{j} (numbered from 0)
-of a given pass, @math{p}:
-
-</P>
-
-<PRE>
-@math{row(p, j) = p*J + j*S}
-</PRE>
-
-<P>
-Because @math{J=4} and @math{S=6} have a common factor of 2, jet 2 of
-pass 0 prints the same row as jet 0 of pass 3:
-
-</P>
-
-<PRE>
-@math{row(0, 2) = 0*4 + 2*6 = 12}
-@math{row(3, 0) = 3*4 + 0*6 = 12}
-</PRE>
-
-<P>
-In fact, with this particular weave pattern, jets 0 and 1 of pass
-@math{p+3} always overprint jets 2 and 3 of pass @math{p}. We'll
-represent overprinting rows by a <SAMP>`^'</SAMP> in our diagrams, and correct
-rows by <SAMP>`*'</SAMP>:
-
-</P>
-<P>
-@math{S=6} @math{J=4}:
-
-</P>
-
-<PRE>
-0 *-----*-----*-----*
-1 *-----*-----*-----*
-2 *-----*-----*-----*
-3 ^-----^-----*-----*
-4 ^-----^-----*-----*
-5 ^-----^-----*-----*
-</PRE>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_30.html">previous</A>, <A HREF="gimpprint_32.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_32.html b/doc/manual-html/gimpprint_32.html
deleted file mode 100644
index 3a118f5..0000000
--- a/doc/manual-html/gimpprint_32.html
+++ /dev/null
@@ -1,723 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - What is perfect weaving?</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_31.html">previous</A>, <A HREF="gimpprint_33.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H3><A NAME="SEC47" HREF="gimpprint_toc.html#TOC47">B.2.4 What makes a "perfect" weave?</A></H3>
-<P>
-<A NAME="IDX188"></A>
-
-</P>
-<P>
-So what causes the perfect weave cases to be perfect, and the other
-cases not to be? In all the perfect cases above, @math{S} and @math{J}
-are relatively prime (i.e. their greatest common divisor (GCD) is 1).
-As we mentioned above, @math{S=6} and @math{J=4} have a common factor,
-which causes the overprinting. Where @math{S} and @math{J} have a GCD
-of 1, they have no common factor other than 1 and, as a result, no
-overprinting occurs. If @math{S} and @math{J} are not relatively prime,
-their common factor will cause overprinting.
-
-</P>
-<P>
-We can work out the greatest common divisor of a pair of natural numbers
-using Euler's algorithm:
-
-</P>
-
-<UL>
-<LI>Start with the two numbers: (e.g.) 9, 24
-
-<LI>Swap them if necessary so that the larger one comes first: 24, 9
-
-<LI>Subtract the second number from the first: 15, 9
-
-<LI>Repeat until the first number becomes smaller: 6, 9
-
-<LI>Swap the numbers again, so the larger one comes first: 9, 6
-
-<LI>Subtract again: 3, 6
-
-<LI>Swap: 6, 3
-
-<LI>Subtract: 3, 3
-
-<LI>And again: 0, 3
-
-<LI>When one of the numbers becomes 0, the other number is the GCD of the two numbers you started with.
-
-</UL>
-
-<P>
-These repeated subtractions can be done with C's <SAMP>`%'</SAMP> operator, so we
-can write this in C as follows:
-
-</P>
-
-<PRE>
-unsigned int
-gcd(unsigned int x, unsigned int y)
-{
- if (y == 0)
- return x;
- while (x != 0) {
- if (y &#62; x)
- swap (&#38;x, &#38;y);
- x %= y;
- }
- return y;
-}
-</PRE>
-
-<P>
-<SAMP>`gcd(S,J)'</SAMP> will feature quite prominently in our weaving algorithm.
-
-</P>
-<P>
-If @math{0 &#60;= j &#60; J}, there should only be a single pair @math{(p, j)}
-for any given row number. If @math{S} and @math{J} are not relatively
-prime, this assumption breaks down. (For conciseness, let
-@math{G=GCD(S,J)}.)
-
-</P>
-<P>
-@math{S=8}, @math{J=6}, @math{G=2}:
-
-</P>
-
-<PRE>
-0 *-------*-------*-------*-------*-------*
-1 *-------*-------*-------*-------*-------*
-2 *-------*-------*-------*-------*-------*
-3 *-------*-------*-------*-------*-------*
-4 ^-------^-------^-------*-------*-------*
-5 ^-------^-------^-------*-------*-------*
-</PRE>
-
-<P>
-In this case, jets 0, 1 and 2 of pass @math{p+4} collide with jets 3, 4
-and 5 of pass @math{p}.
-
-</P>
-<P>
-How can we calculate these numbers? Suppose we were to print using
-fewer jets, say @math{J/G} jets. The greatest common divisor of
-@math{J/G} and @math{S} is 1, enabling a perfect weave. But to get a
-perfect weave, we also have to advance the paper by a factor of @math{G}
-less:
-
-</P>
-
-<PRE>
-0 *-------*-------* - - -
-1 *-------*-------* - - -
-2 *-------*-------* - - -
-3 *-------*-------* - - -
-4 *-------*-------* - - -
-5 *-------*-------* - - -
-</PRE>
-
-<P>
-If we left the paper advance alone, we'd get a sparse weave; only one
-row can be printed every @math{G} rows:
-
-</P>
-
-<PRE>
-0 *-------*-------* - - -
-1 *-------*-------* - - -
-2 *-------*-------* - - -
-3 *-------*-------* - - -
-4 *-------*-------* - - -
-5 *-------*-------* - - -
- ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
- These rows need filling in.
-</PRE>
-
-<P>
-The rows that would have been printed by the jets we've now omitted
-(shown as <SAMP>`-'</SAMP>) are printed by other jets on later passes.
-
-</P>
-<P>
-Let's analyse this. Consider how a pass @math{p} could collide with
-pass 0. Pass @math{p} starts at offset @math{p*J}. Pass 0 prints at
-rows which are multiples of @math{S}. If @math{p*J} is exactly
-divisible by @math{S}, a collision has occurred, unless @math{p*J &#62;=
-J*S} (which will happen when we finish a pass block).
-
-</P>
-<P>
-So, we want to find @math{p} and @math{q} such that @math{p*J=q*S} and
-@math{p} is minimised. Then @math{p} is the number of rows before a
-collision, and @math{q} is the number of jets in pass 0 which are not
-involved in the collision. To do this, we find the lowest common
-multiple of @math{J} and @math{S}, which is @math{L=J*S/G}. @math{L/J}
-is the number of rows before a collision, and @math{L/S} is the number
-of jets in the first pass not involved in the collision.
-
-</P>
-<P>
-Thus, we see that the first @math{J/G} rows printed by a given pass are
-not overprinted by any later pass. However, the rest of the rows
-printed by pass @math{p} are overprinted by the first
-@math{J-(J/G)} jets of pass @math{p+(S/G)}. We will use @math{C}
-to refer to @math{S/G}, the number of rows after which a collision
-occurs.
-
-</P>
-<P>
-Another example:
-
-</P>
-<P>
-@math{S=6}, @math{J=9}, @math{G=3}, @math{C=S/G=2}:
-
-</P>
-
-<PRE>
-0 *-----*-----*-----*-----*-----*-----*-----*-----*
-1 *-----*-----*-----*-----*-----*-----*-----*-----*
-2 ^-----^-----^-----^-----^-----^-----*-----*-----*
-3 ^-----^-----^-----^-----^-----^-----*-----*-----*
-4 ^-----^-----^-----^-----^-----^-----*-----
-5 ^-----^-----^-----^-----^-----^--
- ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^
- These rows need filling in.
-</PRE>
-
-<P>
-In this case, the first @math{J-(J/G) = 9-9/3 = 6} jets of pass
-@math{p+(6/3)=p+2} collide with the last 6 jets of pass @math{p}. Only
-one row in every @math{G=2} rows is printed by this weave.
-
-</P>
-<P>
-@math{S=9}, @math{J=6}, @math{G=3}, @math{C=3}:
-
-</P>
-
-<PRE>
-0 *--------*--------*--------*--------*--------*
-1 *--------*--------*--------*--------*--------*
-2 *--------*--------*--------*--------*--------*
-3 ^--------^--------^--------^--------*--------*
-4 ^--------^--------^--------^--------*--------*
-5 ^--------^--------^--------^--------*--------*
-</PRE>
-
-<P>
-Here, the first @math{J-(J/G) = 6-6/3 = 4} jets of pass
-@math{p+(9/3)=p+3} collide with the last 4 jets of pass @math{p}.
-
-</P>
-<P>
-Note that, in these overprinting cases, only rows divisible by @math{G}
-are ever printed. The other rows, those not divisible by @math{G}, are
-not touched by this weave.
-
-</P>
-<P>
-We can modify our weave pattern to avoid overprinting any rows and
-simultaneously fill in the missing rows. Instead of using @math{J}
-alone to determine the start of each pass from the previous pass, we
-adjust the starting position of some passes. As mentioned before, we
-will divide the page into pass blocks, with @math{S} passes in each
-block. This ensures that the first jet of the first pass in a block
-prints the row which the @math{J}th jet of the first pass of the
-previous block would have printed, if the print head had one extra jet.
-
-</P>
-<P>
-Looking back at an example of a perfect weave, we can divide it into
-pass blocks:
-
-</P>
-<P>
-@math{S=7}, @math{J=2}, @math{G=1}:
-
-</P>
-
-<PRE>
- imaginary extra jet
- |
-0 *------* * &#60;--start of pass block 0
-1 *------* |
-2 *------* |
-3 *------*|
-4 *-----|*
-5 *---|--*
-6 *-|----*
- |
-7 *------* &#60;--start of pass block 1
-8 *------*
-9 *------*
-</PRE>
-
-<P>
-We can now calculate the start of a given pass by reference to its pass
-block. The first pass of pass block @math{b} always starts at row
-@math{(b*S*J)}. The start row of each of the other passes in the block
-are calculated using offsets from this row.
-
-</P>
-<P>
-For the example above, there are 7 passes in each pass block, and their
-offsets are 0, 2, 4, 6, 8, 10 and 12. The next pass block is offset
-@math{S*J=14} rows from the start of the current pass block.
-
-</P>
-<P>
-The simplest way to modify the "perfect" weave pattern to give a
-correct weave in cases where @math{G!=1} is to simply change any offsets
-which would result in a collision, until the collision disappears.
-Every printed row in the weave, as we have shown it up to now, is
-separated from each of its neighbouring printed rows by @math{G} blank
-rows. We will add an extra offset to each colliding pass in such a way
-that we push the pass onto these otherwise blank rows.
-
-</P>
-<P>
-We have seen that, unless @math{G=1}, the plain weave pattern results in
-each pass colliding with the pass @math{S/G} passes before. We will now
-subdivide our pass block into subblocks, each consisting of @math{B=S/G}
-passes. There are therefore @math{G} subblocks in a pass block.
-
-</P>
-<P>
-For each subblock, the passes in that subblock have a constant offset
-added to them. The offset is different for each subblock in a block.
-There are many ways we can choose the offsets, but the simplest is to
-make the offset equal to the subblock number (starting from 0).
-
-</P>
-<P>
-Thus, the passes in the first subblock in each pass block remain at the
-offsets we've already calculated from @math{J}. The passes in the
-second subblock each have 1 added to their offset, the passes in the
-third subblock have 2 added, and so on. Thus, the offset of pass
-@math{p} (numbered relative to the start of its pass block) is @math{p*J
-+ floor(p/B)}.
-
-</P>
-<P>
-This gives us a weave pattern looking like this:
-
-</P>
-<P>
-@math{S=6}, @math{J=9}, @math{G=3}, @math{B=2}:
-
-</P>
-
-<PRE>
-0 *-----*-----*-----*-----*-----*-----*-----*-----*
-1 ^ *-----*-----*-----*-----*-----*-----*-----*-----*
-2 | +-&#62; *-----*-----*-----*-----*-----*-----*-----*-----*
-3 | | *-----*-----*-----*-----*-----*-----*-----*-----*
-4 | | +-&#62; *-----*-----*-----*-----*-----*-----*---
-5 | | | *-----*-----*-----*-----*-----*
-6 | | | +-&#62; *-----*-----*-----*-----
-7 | | | | *-----*-----*--
- | | | start of pass block 1
- | | | (offset returns to 0)
- | | start of subblock 2 (offset 2 rows)
- | start of subblock 1 (following passes offset by 1 row)
- start of passblock 0, subblock 0 (pass start calculated as p*J)
-</PRE>
-
-<P>
-@math{S=9}, @math{J=6}, @math{G=3}, @math{B=3}:
-
-</P>
-
-<PRE>
-0 *--------*--------*--------*--------*--------*
-1 *--------*--------*--------*--------*--------*
-2 *--------*--------*--------*--------*--------*
-3 *--------*--------*--------*--------*--------*
-4 *--------*--------*--------*--------*--------*
-5 *--------*--------*--------*--------*--------*
-6 *--------*--------*--------*--------*---
-7 *--------*--------*--------*------
-8 *--------*--------*--------*
-9 *--------*--------*-----
-10 \---/ *--------*--------
-11 small offset *--------*--
-12 *----
-</PRE>
-
-<P>
-This method of choosing offsets for subblocks can result in an occasional
-small offset (as shown above) between one pass and the next, particularly
-when @math{G} is large compared to @math{J}. For example:
-
-</P>
-<P>
-@math{S=8}, @math{J=4}, @math{G=4}, @math{B=2}:
-
-</P>
-
-<PRE>
-0 *-------*-------*-------*
-1 *-------*-------*-------*
-2 *-------*-------*-------*
-3 *-------*-------*-------*
-4 *-------*-------*-------*
-5 *-------*-------*-------*
-6 *-------*-------*-------*
-7 *-------*-------*-------*
-8 *-------*-------*-------*
-9 \/ *-------*-------*-------*
- very small offset!
-</PRE>
-
-<P>
-We can plot the offset against the subblock number as follows:
-
-</P>
-
-<PRE>
-subblock number
-| offset
-| |
-| 0123
-0 *
-1 *
-2 *
-3 *
-0 *
-1 *
-2 *
-3 *
-</PRE>
-
-<P>
-The discontinuity in this plot results in the small offset between
-passes.
-
-</P>
-<P>
-As we said at the beginning, we want the offsets from each pass to the
-next to be as similar as possible. We can fix this by calculating the
-offset for a given subblock b as follows:
-
-</P>
-
-<PRE>
- offset(b) = 2*b , if b &#60; ceiling(G/2)
- = 2*(G-b)-1 , otherwise
-</PRE>
-
-<P>
-We can visualise this as follows, for @math{G=10}:
-
-</P>
-
-<PRE>
- 0123456789
-0 *
-1 *
-2 *
-3 *
-4 *
-5 *
-6 *
-7 *
-8 *
-9 *
-0 *
-1 *
-2 *
-3 *
-4 *
-5 *
-6 *
-7 *
-8 *
-9 *
-</PRE>
-
-<P>
-and for @math{G=11}:
-
-</P>
-
-<PRE>
- 1
- 01234567890
- 0 *
- 1 *
- 2 *
- 3 *
- 4 *
- 5 *
- 6 *
- 7 *
- 8 *
- 9 *
-10 *
- 0 *
- 1 *
- 2 *
- 3 *
- 4 *
- 5 *
- 6 *
- 7 *
- 8 *
- 9 *
-10 *
-</PRE>
-
-<P>
-This gives a weave looking like this:
-
-</P>
-<P>
-@math{S=12}, @math{J=6}, @math{G=6}, @math{B=2}:
-
-</P>
-
-<PRE>
-0 *-----------*-----------*-----------*-----------*-----------*
-1 *-----------*-----------*-----------*-----------*-----------*
-2 *-----------*-----------*-----------*-----------*-----------*
-3 *-----------*-----------*-----------*-----------*---------
-4 *-----------*-----------*-----------*-----------*-
-5 *-----------*-----------*-----------*-------
-6 *-----------*-----------*-----------*
-7 *-----------*-----------*------
-8 *-----------*-----------*--
-9 *-----------*--------
-10 *-----------*----
-11 *----------
-12 *-----
-</PRE>
-
-<P>
-This method ensures that the offset between passes is always in the range
-@math{[J-2,J+2]}.
-
-</P>
-<P>
-(This might seem odd, but it occurs to me that a good weave pattern
-might also make a good score for bell ringers. When church bells are
-rung, a list of "changes" are used. For example, if 8 bells are being
-used, they will, at first, be rung in order: 12345678. If the first
-change is for bells 5 and 6, the bells will then be rung in the order
-12346578. If the second change is 1 and 2, the next notes are 21346578.
-After a long list of changes, the order the bells are rung in can become
-quite complex.
-
-</P>
-<P>
-For a group of bell-ringers to change the order of the notes, they must
-each either delay their bell's next ring, hasten it, or keep it the same
-as the time it takes to ring all the bells once. The length of time
-between each ring of a given bell can only be changed a little each
-time, though; with an ink-jet weave pattern, we want the same to apply
-to the distance between passes.)
-
-</P>
-<P>
-Finally, knowing the number of jets @math{J} and their separation
-@math{S}, we can calculate the starting row of any given pass @math{p}
-as follows:
-
-</P>
-
-<PRE>
-passesperblock = S
-passblock = floor(p / passesperblock)
-offsetinpassblock = p - passblock * passesperblock
-subblocksperblock = gcd(S, J)
-passespersubblock = S / subblocksperblock
-subpassblock = floor(offsetinpassblock / passespersubblock)
-if subpassblock &#60; ceiling(subblocksperblock/2)
- subblockoffset = 2*subpassblock
-else
- subblockoffset = 2*(subblocksperblock-subpassblock)-1
-startingrow = passblock * S * J + offsetinpassblock * J + subblockoffset
-</PRE>
-
-<P>
-We can simplify this down to the following:
-
-</P>
-
-<PRE>
-subblocksperblock = gcd(S, J)
-subpassblock = floor((p % S) * subblocksperblock / S)
-if subpassblock * 2 &#60; subblocksperblock
- subblockoffset = 2*subpassblock
-else
- subblockoffset = 2*(subblocksperblock-subpassblock)-1
-startingrow = p * J + subblockoffset
-</PRE>
-
-<P>
-So the row number of jet @math{j} of pass @math{p} is
-
-</P>
-
-<PRE>
-subblocksperblock = gcd(S, J)
-
-subblockoffset(p)
- = 2*subpassblock , if subpassblock * 2 &#60; subblocksperblock
- = 2*(subblocksperblock-subpassblock)-1 , otherwise
- where
- subpassblock = floor((p % S) * subblocksperblock / S)
-
-row(j, p) = p * J + subblockoffset(p) + j * S
-</PRE>
-
-<P>
-Together with the inequality @math{0 &#60;= j &#60; J}, we can use this
-definition in reverse to calculate the pass number containing a given
-row, @math{r}. Working out the inverse definition involves a little
-guesswork, but one possible result is as follows. Given a row,
-@math{r}, which is known to be the first row of a pass, we can calculate
-the pass number as follows:
-
-</P>
-
-<PRE>
-subblocksperblock = gcd(S, J)
-subblockoffset = r % subblocksperblock
-pass = (r - subblockoffset) / J
-</PRE>
-
-<P>
-If @math{G==1}, we can determine the pass number with this algorithm:
-
-</P>
-
-<PRE>
-offset = r % J
-pass = (r - offset) / J
-while (offset % S != 0)
-{
- pass--
- offset += J
-}
-jet = offset / S
-</PRE>
-
-<P>
-Generalising, we come up with this algorithm. Given @math{r}, @math{S}
-and @math{J}:
-
-</P>
-
-<PRE>
-G = gcd(S, J)
-passespersubblock = S/G
-subblockoffset = r % G
-subpassblock = subblockoffset / 2 , if subblockoffset % 2 == 0
- = G - (subblockoffset+1)/2 , otherwise
-baserow = r - subblockoffset - (subpassblock * passespersubblock * J)
-offset = baserow % J
-pass = (baserow - offset) / J
-while (offset % S != 0)
-{
- offset += J
- pass -= 1
-}
-subblockretreat = floor(pass / passespersubblock) % G
-pass -= subblockretreat * passespersubblock
-pass += subpassblock * passespersubblock
-jet = (r - subblockoffset - pass * J) / S
-</PRE>
-
-<P>
-Let's look at some examples of imperfect but correct weave patterns:
-
-</P>
-<P>
-@math{S=6}, @math{J=4}, @math{GCD=2},
-<BR>passesperblock=@math{S}=6,
-<BR>passespersubblock=@math{S/G}=6/2=3:
-
-</P>
-
-<PRE>
-0 *-----*-----*-----*
-1 *-----*-----*-----*
-2 *-----*-----*-----*
-3 *-----*-----*-----*
-4 *-----*-----*-----*
-5 *-----*-----*-----*
-6 *-----*-----*-----*
-7 *-----*-----*-----*
-8 *-----*-----*-----*
-9 *-----*-----*-----*
-10 *-----*-----*-----*
-11 *-----*-----*-----*
-12 *-----*-----*-----*
-13 *-----*-----*-----*
-14 *-----*-----*-----*
-15 *-----*-----*----
-16 *-----*-----*
-17 *-----*--
-18 *-----
-19 *-
-</PRE>
-
-<P>
-@math{S=8}, @math{J=6}, @math{G=2},
-<BR>passesperblock=@math{S}=8,
-<BR>passespersubblock=@math{S/G}=8/2=4:
-
-</P>
-
-<PRE>
-0 *-------*-------*-------*-------*-------*
-1 *-------*-------*-------*-------*-------*
-2 *-------*-------*-------*-------*-------*
-3 *-------*-------*-------*-------*-------*
-4 *-------*-------*-------*-------*-------*
-5 *-------*-------*-------*-------*-------*
-6 *-------*-------*-------*-------*-------*
-7 *-------*-------*-------*-------*--
-8 *-------*-------*-------*-----
-9 *-------*-------*-------
-10 *-------*-------*-
-11 *-------*---
-12 *----
-</PRE>
-
-<P>
-@math{S=6}, @math{J=12}, @math{G=6},
-<BR>passesperblock=@math{S}=6,
-<BR>passespersubblock=@math{S/G}=6/6=1:
-
-</P>
-
-<PRE>
-0 *-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
-1 *-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*---
-2 *-----*-----*-----*-----*-----*-----*-----*-----*-
-3 *-----*-----*-----*-----*-----*-----*
-4 *-----*-----*-----*-----*--
-5 *-----*-----*----
-6 *-----
-</PRE>
-
-<P>
-We have now solved the basic weaving problem. There are two further
-refinements we need to consider: oversampling, and filling in the
-missing rows at the start of the weave.
-
-</P>
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_31.html">previous</A>, <A HREF="gimpprint_33.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_33.html b/doc/manual-html/gimpprint_33.html
deleted file mode 100644
index edf4627..0000000
--- a/doc/manual-html/gimpprint_33.html
+++ /dev/null
@@ -1,247 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Oversampling</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_32.html">previous</A>, <A HREF="gimpprint_34.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H3><A NAME="SEC48" HREF="gimpprint_toc.html#TOC48">B.2.5 Oversampling</A></H3>
-<P>
-<A NAME="IDX189"></A>
-
-</P>
-<P>
-By oversampling, we mean printing on the same row more than once.
-There are two reasons for oversampling: to increase the horizontal
-resolution of the printout and to reduce banding.
-
-</P>
-<P>
-Oversampling to increase horizontal resolution is necessary because,
-although the printer might be able to position an ink drop to, for
-example, 1/1440" horizontally, it may not be able to lay down two such
-drops 1/1440" apart. If it can print two drops 1/720" apart, 2x
-oversampling will be necessary to get a 1/1440" horizontal resolution.
-If it can only print two drops 1/360" apart, 4x oversampling will be
-necessary for a 1/1440" horizontal resolution. The printer enforces
-this "drop spacing" by only accepting raster passes with a horizontal
-resolution matching the spacing with which it can print dots, so we
-must print passes at different horizontal positions if we are to
-obtain a higher horizontal resolution. (Another reason it does this
-may be to reduce the amount of memory needed in the printer.)
-
-</P>
-<P>
-Oversampling can also be done to decrease the banding apparent in an
-image. By splitting a row into two or more sets of dots ("lines") and
-printing each line on the same row, but with a different nozzle for
-each line, we can get a smoother print.
-
-</P>
-<P>
-To quantify these two kinds of oversampling, we'll introduce two new
-constants: @math{H} shows how many different horizontal offsets we want
-to print at (the "horizontal oversampling") while @math{O} shows how
-many times we want to print each row, over and above the number of times
-necessary for horizontal oversampling (the "extra oversampling").
-
-</P>
-<P>
-It is necessary for all the lines printed by a given pass to have the
-same horizontal offset, but there need not be any relation between
-them in terms of extra oversampling. For the moment, however, we will
-treat all oversampling as potentially requiring this alignment; all
-lines in one pass must be derived from the original row data in the
-same way. Thus, we'll assume @math{O=1} for now.
-
-</P>
-<P>
-So, how do we do this oversampling? In fact, it can be done easily:
-advance the paper by a factor of @math{H} less between each pass. We'll
-define a new variable, @math{A}, to show how much we advance the paper
-between passes. Previously, we'd have defined @math{A=J}; we now let
-@math{A=J/H}. This also affects our pass blocks. Printing one pass
-block used to involve advancing the paper @math{S*J} rows; it now
-advances the paper @math{S*J/H} rows. We therefore name a group of
-@math{H} pass blocks a "band". Printing one band involves advancing
-the paper @math{S*J} rows, as a pass block did before.
-
-</P>
-<P>
-To keep our weave pattern working correctly, so that overprinting does
-not occur within a pass block, we also have to redefine @math{G} as
-@math{GCD(S,A)}. Here's an example of an oversampled weave pattern:
-
-</P>
-<P>
-@math{S=4}, @math{J=10}, @math{H=2}, @math{A=J/H=10/2=5},
-@math{G=GCD(4,5)=1},
-<BR>passesperblock=@math{S}=4,
-<BR>passespersubblock=@math{S/G}=4/1=4:
-
-</P>
-
-<PRE>
-0 *---*---*---*---*---*---*---*---*---*
-1 *---*---*---*---*---*---*---*---*---*
-2 *---*---*---*---*---*---*---*---*---*
-3 *---*---*---*---*---*---*---*---*---*
-4 *---*---*---*---*---*---*---*---*---*
-5 *---*---*---*---*---*---*---*---*---*
-6 *---*---*---*---*---*---*---*---*---*
-7 *---*---*---*---*---*---*---*---*---*
-8 *---*---*---*---*---*---*---*---*---*
-9 *---*---*---*---*---*---*---*---*
-10 *---*---*---*---*---*---*---
-11 *---*---*---*---*---*--
-12 *---*---*---*---*-
-13 *---*---*---*
-14 *---*---
-15 *--
-</PRE>
-
-<P>
-Now we have to determine which line is printed by each jet on each
-pass. If we number each line generated as we split up a row, we can
-use these numbers. We'll number the lines in our diagram by replacing
-the <SAMP>`*'</SAMP>s with integers in the range [0...@math{H-1}].
-
-</P>
-<P>
-Overprinting occurs once per pass block, so we can simply print pass
-block 0 with line 0, pass block 1 with line 1, pass block 2 with line
-2, etc, wrapping to 0 when we've run out of lines:
-
-</P>
-
-<PRE>
-0 0--0---0--0---0--0---0--0---0--0
-1 0--0---0--0---0--0---0--0---0--0
-2 0--0---0--0---0--0---0--0---0--0
-3 0--0---0--0---0--0---0--0---0--0
-4 1--1---1--1---1--1---1--1---1--1
-5 1--1---1--1---1--1---1--1---1--1
-6 1--1---1--1---1--1---1--1---1--1
-7 1--1---1--1---1--1---1--1---1--1
-8 0--0---0--0---0--0---0--0---0--0
-9 0--0---0--0---0--0---0--0---0
-10 0--0---0--0---0--0---0---
-11 0--0---0--0---0--0--
-12 1--1---1--1---1-
-13 1--1---1--1
-14 1--1---
-15 1--
-</PRE>
-
-<P>
-@math{S=4}, @math{J=12}, @math{H=2}, @math{A=J/H=12/2=6}, @math{G=GCD(4,6)=2},
-<BR>passesperblock=@math{S}=4,
-<BR>passespersubblock=@math{S/G}=4/2=2:
-
-</P>
-
-<PRE>
-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
-2 0--0---0--0---0--0---0--0---0--0---0--0
-3 0--0---0--0---0--0---0--0---0--0---0--0
-4 1--1---1--1---1--1---1--1---1--1---1--1
-5 1--1---1--1---1--1---1--1---1--1---1--1
-6 1--1---1--1---1--1---1--1---1--1---1
-7 1--1---1--1---1--1---1--1---1--
-8 0--0---0--0---0--0---0--0-
-9 0--0---0--0---0--0---
-10 0--0---0--0---0
-11 0--0---0--
-12 1--1-
-</PRE>
-
-<P>
-But what do we do if @math{J} is not an exact multiple of @math{H}?
-This is a difficult problem, which I struggled with for quite a few days
-before giving in and taking the easy (but less elegant) way out. The
-easy solution is to round @math{J/H} down, then add on the accumulated
-error at the end of each band.
-
-</P>
-<P>
-@math{S=4}, @math{J=11}, @math{H=2} @math{A=floor(J/H)=floor(11/2)=5}, @math{G=GCD(4,5)},
-<BR>passesperblock=@math{S}=4,
-<BR>passespersubblock=@math{S/G}=4/1=4
-
-</P>
-
-<PRE>
-Band 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
-2 0--0---0--0---0--0---0--0---0--0---0
-3 0--0---0--0---0--0---0--0---0--0---0
-4 1--1---1--1---1--1---1--1---1--1---1
-5 1--1---1--1---1--1---1--1---1--1---1
-6 1--1---1--1---1--1---1--1---1--1---1
-7 1--1---1--1---1--1---1--1---1--1---
-
-Band 1:
-8 | 0--0---0--0---0--0---0--0---0-
-9 \-----------------------------------------/ 0--0---0--0---0--0---0--0
-10 S*J rows 0--0---0--0---0--0---
-11 0--0---0--0---0--
-12 1--1---1--1-
-13 1--1---1
-14 1---
-</PRE>
-
-<P>
-We can calculate the starting row and subpass number of a given pass
-in this scheme as follows:
-
-</P>
-
-<PRE>
-A = floor(J / H)
-subblocksperblock = gcd(S, A)
-subpassblock = floor((p % S) * subblocksperblock / S)
-if subpassblock * 2 &#60; subblocksperblock
- subblockoffset = 2*subpassblock
-else
- subblockoffset = 2*(subblocksperblock-subpassblock)-1
-band = floor(P / (S * H))
-passinband = P % (S * H)
-startingrow = band * S * J + passinband * A + subblockoffset
-subpass = passinband / S
-</PRE>
-
-<P>
-So the row number of jet @math{j} of pass @math{p} is
-
-</P>
-
-<PRE>
-A = floor(J / H)
-subblocksperblock = gcd(S, A)
-
-subblockoffset(p)
- = 2*subpassblock , if subpassblock * 2 &#60; subblocksperblock
- = 2*(subblocksperblock-subpassblock)-1 , otherwise
- where
- subpassblock = floor((p % S) * subblocksperblock / S)
-
-band(p) = floor(p / (S * H))
-passinband(p) = p % (S * H)
-
-row(j, p) = band(p) * S * J + passinband(p) * A + subblockoffset(p) + j * S
-row(j, p) = p * J + subblockoffset(p) + j * S
-</PRE>
-
-<P>
-To be continued@enddots{}
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_32.html">previous</A>, <A HREF="gimpprint_34.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_34.html b/doc/manual-html/gimpprint_34.html
deleted file mode 100644
index 95372ef..0000000
--- a/doc/manual-html/gimpprint_34.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - ESC/P2</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_33.html">previous</A>, <A HREF="gimpprint_35.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC49" HREF="gimpprint_toc.html#TOC49">C ESC/P2</A></H1>
-<P>
-<A NAME="IDX190"></A>
-
-</P>
-
-<UL>
-<LI><A HREF="gimpprint_35.html#SEC50">ESC/P2 Introduction</A>: What is ESC/P2
-<LI><A HREF="gimpprint_36.html#SEC51">ESC/P2 Standard Commands</A>: Normal ESC/P2 commands
-<LI><A HREF="gimpprint_37.html#SEC52">ESC/P2 Remote Mode Commands</A>: Exotic ESC/P2 commands
-<LI><A HREF="gimpprint_38.html#SEC53">ESC/P2 Appropriate Remote Commands</A>: Useful remote command sequences
-</UL>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_33.html">previous</A>, <A HREF="gimpprint_35.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_35.html b/doc/manual-html/gimpprint_35.html
deleted file mode 100644
index 38adfb3..0000000
--- a/doc/manual-html/gimpprint_35.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - ESC/P2 Introduction</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_34.html">previous</A>, <A HREF="gimpprint_36.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC50" HREF="gimpprint_toc.html#TOC50">C.1 Introduction to ESC/P2</A></H2>
-<P>
-<A NAME="IDX191"></A>
-
-</P>
-<P>
-This is a description of the ESC/P2 raster commands used by the
-gimp-print plugin and Ghostscript driver, which is a subset of the
-complete command set. The full documents are found on
-@url{http://www.ercipd.com/isv/edr_docs.htm}. Note that these are
-<STRONG>not</STRONG> always correct, and are certainly not complete.
-
-</P>
-<P>
-All ESCP/2 raster commands begin with the <SAMP>`ESC'</SAMP> character (1b hex),
-followed by either one or two command characters and arguments where
-applicable. Older commands generally have one command character. Newer
-commands usually have a <SAMP>`('</SAMP> (left parenthesis) followed by a
-command character and a byte count for the arguments that follow. The
-byte count is a 16-bit (2 byte) binary integer, in little endian order.
-
-</P>
-<P>
-All arguments listed here are of the form <SAMP>`name[bytes]'</SAMP> where
-<SAMP>`[bytes]'</SAMP> is the number of bytes that comprise the argument. The
-arguments themselves are usually one, two, or four byte integers, always
-little endian (the least significant bits come first). Presumably this
-is to match Intel processors.
-
-</P>
-<P>
-In some cases, the same command sequence identifies different versions
-of the same command, depending upon the number of bytes of arguments.
-
-</P>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_34.html">previous</A>, <A HREF="gimpprint_36.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_36.html b/doc/manual-html/gimpprint_36.html
deleted file mode 100644
index d7e1677..0000000
--- a/doc/manual-html/gimpprint_36.html
+++ /dev/null
@@ -1,560 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - ESC/P2 Standard Commands</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_35.html">previous</A>, <A HREF="gimpprint_37.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC51" HREF="gimpprint_toc.html#TOC51">C.2 Standard commands</A></H2>
-
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC @</CODE></B>
-<DD><A NAME="IDX192"></A>
-Reset the printer. Discards any output, ejects the existing page,
-returns all settings to their default. Always use this before printing
-a page.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (G <VAR>BC</VAR>=1 <VAR>ON1</VAR></CODE></B>
-<DD><A NAME="IDX193"></A>
-Turn on graphics mode. <VAR>ON</VAR> should be <SAMP>`1'</SAMP> (turn on graphics
-mode).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (U <VAR>BC</VAR>=1 <VAR>UNIT1</VAR></CODE></B>
-<DD><A NAME="IDX194"></A>
-Set basic unit of measurement used by printer. This is expressed in
-multiples of 1/3600". At 720 DPI, <VAR>UNIT</VAR> is <SAMP>`5'</SAMP>; at 360 DPI,
-<VAR>UNIT</VAR> is <SAMP>`10'</SAMP>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (U <VAR>BC</VAR>=5 <VAR>PAGEUNITS1</VAR> <VAR>VUNIT1</VAR> <VAR>HUNIT1</VAR> <VAR>BASEUNIT2</VAR></CODE></B>
-<DD><A NAME="IDX195"></A>
-Set basic units of measurement used by the printer. <VAR>PAGEUNIT</VAR> is
-the unit of page measurement (for commands that set page dimensions and
-the like). <VAR>VUNIT</VAR> is the unit of vertical measurement (for
-vertical movement commands). <VAR>HUNIT</VAR> is the unit of horizontal
-movement (for horizontal positioning commands). All of these units are
-expressed in <VAR>BASEUNIT</VAR>, which is in reciprocal inches. Typically,
-<VAR>BASEUNIT</VAR> is <SAMP>`1440'</SAMP>. In 720 DPI mode, <VAR>PAGEUNIT</VAR>,
-<VAR>VUNIT</VAR>, and <VAR>HUNIT</VAR> are all <SAMP>`2'</SAMP>; in 1440x720 DPI mode,
-<VAR>PAGEUNIT</VAR> and <VAR>VUNIT</VAR> are normally set to <SAMP>`2'</SAMP>; <VAR>HUNIT</VAR>
-is set to <SAMP>`1'</SAMP>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (K <VAR>BC</VAR>=2 <VAR>ZERO1</VAR> <VAR>GRAYMODE1</VAR></CODE></B>
-<DD><A NAME="IDX196"></A>
-Set color or grayscale mode, on printers supporting an explicit
-grayscale mode. These printers can be identified because they are
-advertised as having more black nozzles than nozzles of individual
-colors. Setting grayscale mode allows use of these extra nozzles for
-faster printing. <VAR>GRAYMODE</VAR> should be <SAMP>`0'</SAMP> or <SAMP>`2'</SAMP> for
-color, <SAMP>`1'</SAMP> for grayscale. <VAR>ZERO</VAR> should always be <SAMP>`0'</SAMP>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (i <VAR>BC</VAR>=1 <VAR>MICROWEAVE1</VAR></CODE></B>
-<DD><A NAME="IDX197"></A>
-If <VAR>MICROWEAVE</VAR> is <SAMP>`1'</SAMP>, use microweave mode. On older
-printers, this is used to turn on microweave; on newer printers, it
-prints one row at a time. All printers support this mode. It should
-only be used at 720 (or 1440x720) DPI. The Epson Stylus Pro series
-indicates additional modes:
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>`2'</SAMP>
-<DD>
-"Full-overlap"
-<DT><SAMP>`3'</SAMP>
-<DD>
-"Four-pass"
-<DT><SAMP>`4'</SAMP>
-<DD>
-"Full-overlap 2"
-</DL>
-
-<P>
-Any of these commands can be used with the high four bits set to either
-<SAMP>`3'</SAMP> or <SAMP>`0'</SAMP>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC U <VAR>DIRECTION1</VAR></CODE></B>
-<DD><A NAME="IDX198"></A>
-If <VAR>DIRECTION</VAR> is <SAMP>`1'</SAMP>, print unidirectionally; if <SAMP>`0'</SAMP>,
-print bidirectionally.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (s <VAR>BC</VAR>=1 <VAR>SPEED1</VAR></CODE></B>
-<DD><A NAME="IDX199"></A>
-On some older printers, this controls the print head speed. <VAR>SPEED</VAR>
-of <SAMP>`2'</SAMP> is 10 inches/sec; SPEED of <SAMP>`0'</SAMP> or 1 is 20.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (e <VAR>BC</VAR>=2 <VAR>ZERO1</VAR> <VAR>DOTSIZE1</VAR></CODE></B>
-<DD><A NAME="IDX200"></A>
-Choose print dotsize. <VAR>DOTSIZE</VAR> can take on various values,
-depending upon the printer. Almost all printers support <SAMP>`0'</SAMP> and
-<SAMP>`2'</SAMP>. Variable dot size printers allow a value of <VAR>16</VAR>. Other
-than the value of <VAR>16</VAR>, this appears to be ignored at resolutions of
-720 DPI and above.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (C <VAR>BC</VAR>=2 <VAR>PAGELENGTH2</VAR></CODE></B>
-<DD><A NAME="IDX201"></A>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (C <VAR>BC</VAR>=4 <VAR>PAGELENGTH4</VAR></CODE></B>
-<DD><A NAME="IDX202"></A>
-Set the length of the page in "pageunits" (see <SAMP>`ESC (U'</SAMP> above).
-The second form of the command allows setting of longer page lengths on
-new printers (these happen to be the printers that support variable dot
-size).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (c <VAR>BC</VAR>=4 <VAR>TOP2</VAR> <VAR>LENGTH2</VAR></CODE></B>
-<DD><A NAME="IDX203"></A>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (c <VAR>BC</VAR>=8 <VAR>TOP4</VAR> <VAR>LENGTH4</VAR></CODE></B>
-<DD><A NAME="IDX204"></A>
-Set the vertical page margins of the page in "pageunits" (see <SAMP>`ESC
-(U'</SAMP> above). The margins are specified as the top of the page and the
-length of the page. The second form of the command allows setting of
-longer page lengths on new printers (these happen to be the printers
-that support variable dot size).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (S <VAR>BC</VAR>=8 <VAR>WIDTH4</VAR> <VAR>LENGTH4</VAR></CODE></B>
-<DD><A NAME="IDX205"></A>
-Set the width and length of the printed page region in "pageunits" (see
-<SAMP>`ESC (U'</SAMP> above).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (v <VAR>BC</VAR>=2 <VAR>ADVANCE2</VAR></CODE></B>
-<DD><A NAME="IDX206"></A>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (v <VAR>BC</VAR>=4 <VAR>ADVANCE4</VAR></CODE></B>
-<DD><A NAME="IDX207"></A>
-Feed vertically <VAR>ADVANCE</VAR> "vertical units" (see <SAMP>`ESC (U'</SAMP> above)
-from the current print head position.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (V <VAR>BC</VAR>=2 <VAR>ADVANCE2</VAR></CODE></B>
-<DD><A NAME="IDX208"></A>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (V <VAR>BC</VAR>=4 <VAR>ADVANCE4</VAR></CODE></B>
-<DD><A NAME="IDX209"></A>
-Feed vertically <VAR>ADVANCE</VAR> "vertical units" (see <SAMP>`ESC (U'</SAMP> above)
-from the top margin.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC ($ <VAR>BC</VAR>=4 <VAR>OFFSET4</VAR></CODE></B>
-<DD><A NAME="IDX210"></A>
-Set horizontal position to <VAR>OFFSET</VAR> from the left margin. This
-command operates on printers of the 740 class and newer (all printers
-with variable dot size).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC $ <VAR>OFFSET2</VAR></CODE></B>
-<DD><A NAME="IDX211"></A>
-Set horizontal position to <VAR>OFFSET</VAR> from the left margin. This
-command operates on printers of the 740 class and newer (all printers
-with variable dot size).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (\ <VAR>BC</VAR>=4 <VAR>UNITS2</VAR> <VAR>OFFSET2</VAR></CODE></B>
-<DD><A NAME="IDX212"></A>
-Set horizontal position to <VAR>OFFSET</VAR> from the previous print head
-position, measured in <VAR>UNITS</VAR>. <VAR>UNITS</VAR> is measured in inverse
-inches, and should be set to 1440 in all cases. This operates on all
-1440 dpi printers that do not support variable dot size.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (/ <VAR>BC</VAR>=4 <VAR>OFFSET4</VAR></CODE></B>
-<DD><A NAME="IDX213"></A>
-Set horizontal position to <VAR>OFFSET</VAR> from the previous print head
-position, measured in "horizontal units" (see <SAMP>`ESC (U'</SAMP> above).
-This operates on all variable dot size printers.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC \ <VAR>OFFSET2</VAR></CODE></B>
-<DD><A NAME="IDX214"></A>
-Set horizontal position to <VAR>OFFSET</VAR> from the previous print head
-position, measured in basic unit of measurement (see <SAMP>`ESC (U'</SAMP>
-above). This is used on all 720 dpi printers, and can also be used on
-1440 dpi printers in lower resolutions to save a few bytes. Note that
-<VAR>OFFSET</VAR> may be negative. The range of values for this command is
-between <SAMP>`-16384'</SAMP> and <SAMP>`16383'</SAMP>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC r <VAR>COLOR1</VAR></CODE></B>
-<DD><A NAME="IDX215"></A>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (r <VAR>BC</VAR>=2 <VAR>DENSITY1</VAR> <VAR>COLOR1</VAR></CODE></B>
-<DD><A NAME="IDX216"></A>
-Set the ink color. The first form is used on four-color printers; the
-second on six-color printers. <VAR>DENSITY</VAR> is <SAMP>`0'</SAMP> for dark inks,
-<SAMP>`1'</SAMP> for light. <VAR>COLOR</VAR> is
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>`0'</SAMP>
-<DD>
-black
-<DT><SAMP>`1'</SAMP>
-<DD>
-magenta
-<DT><SAMP>`2'</SAMP>
-<DD>
-cyan
-<DT><SAMP>`4'</SAMP>
-<DD>
-yellow
-</DL>
-
-<P>
-This command is not used on variable dot size printers in softweave
-mode.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC . <VAR>COMPRESS1</VAR> <VAR>VSEP1</VAR> <VAR>HSEP1</VAR> <VAR>LINES1</VAR> <VAR>WIDTH2</VAR> <VAR>data...</VAR></CODE></B>
-<DD><A NAME="IDX217"></A>
- Print data. <VAR>COMPRESS</VAR> signifies the compression mode:
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>`0'</SAMP>
-<DD>
-no compression
-<DT><SAMP>`1'</SAMP>
-<DD>
-TIFF compression (incorrectly documented as "run length encoded")
-<DT><SAMP>`2'</SAMP>
-<DD>
-TIFF compression with a special command set.
-</DL>
-
-<P>
-<VAR>VSEP</VAR> depends upon resolution and printer type. At 360 DPI, it is
-always <SAMP>`10'</SAMP>. At 720 DPI, it is normally <SAMP>`5'</SAMP>5. On the ESC
-600, it is <SAMP>`40'</SAMP> (@math{8 * 5}). On some other printers, it varies.
-
-</P>
-<P>
-<VAR>HSEP1</VAR> is <SAMP>`10'</SAMP> at 360 DPI and <SAMP>`5'</SAMP> at 720 or 1440 DPI
-(1440 DPI cannot be printed in one pass; it is printed in two passes,
-with the dots separated in each pass by 1/720").
-
-</P>
-<P>
-<VAR>LINES</VAR> is the number of lines to be printed. It should be <SAMP>`1'</SAMP>
-in microweave and 360 DPI. At 720 DPI softweave, it should be the
-number of lines to be actually printed.
-
-</P>
-<P>
-<VAR>WIDTH</VAR> is the number of pixels to be printed in each row.
-Following this command, a carriage return (<SAMP>`13'</SAMP> decimal, <SAMP>`0A'</SAMP>
-hex) should be output to return the print head position to the left
-margin.
-
-</P>
-<P>
-The basic data format is a string of bytes, with data from left to right
-on the page. Within each byte, the highest bit is first.
-
-</P>
-<P>
-The TIFF compression is implemented as one count byte followed by one or
-more data bytes. There are two cases:
-
-</P>
-
-<OL>
-<LI>
-
-If the count byte is <SAMP>`128'</SAMP> or less, it is followed by @math{[count]
-+ 1} data bytes. So if the count byte is <SAMP>`0'</SAMP>, it is followed by 1
-data byte; if it is <SAMP>`128'</SAMP>, it is followed by 129 data bytes.
-
-<LI>
-
-If the count byte is greater than 128, it is followed by one byte. This
-byte is repeated (257 - [count]) times. So if [count] is 129, the next
-byte is treated as though it were repeated 128 times; if [count] is 255,
-it is treated as though it were repeated twice.
-</OL>
-
-</DL>
-
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC i <VAR>COLOR1</VAR> <VAR>COMPRESS1</VAR> <VAR>BITS1</VAR> <VAR>BYTES2</VAR> <VAR>LINES2</VAR> <VAR>data...</VAR></CODE></B>
-<DD><A NAME="IDX218"></A>
-Print data in the newer printers (that support variable dot size), and
-Stylus Pro models.
-
-</P>
-<P>
-<VAR>COLOR</VAR> is the color:
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>`0'</SAMP>
-<DD>
-black
-<DT><SAMP>`1'</SAMP>
-<DD>
-magenta
-<DT><SAMP>`2'</SAMP>
-<DD>
-cyan
-<DT><SAMP>`4'</SAMP>
-<DD>
-yellow
-<DT><SAMP>`17'</SAMP>
-<DD>
-light magenta
-<DT><SAMP>`18'</SAMP>
-<DD>
-light cyan
-</DL>
-
-<P>
-<VAR>COMPRESS</VAR> signifies the
-compression mode:
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>`0'</SAMP>
-<DD>
-no compression
-<DT><SAMP>`1'</SAMP>
-<DD>
-TIFF compression (incorrectly documented as "run length encoded")
-<DT><SAMP>`2'</SAMP>
-<DD>
-TIFF compression with a special command set.
-</DL>
-
-<P>
-<VAR>BITS</VAR> is the number of bits per pixel.
-
-</P>
-<P>
-<VAR>BYTES</VAR> is the number of bytes wide for each row (@math{ceiling(BITS
-* width_of_row, 8)}). Note that this is different from the <SAMP>`ESC .'</SAMP>
-command above.
-
-</P>
-<P>
-<VAR>LINES</VAR> is the number of lines to be printed. This command is the
-only way to get variable dot size printing. In variable dot mode, the
-size of the dots increases as the value (<SAMP>`1'</SAMP>, <SAMP>`2'</SAMP>, or
-<SAMP>`3'</SAMP>) increases.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (D <VAR>BC</VAR>=4 <VAR>BASE2</VAR> <VAR>VERTICAL1</VAR> <VAR>HORIZONTAL1</VAR></CODE></B>
-<DD><A NAME="IDX219"></A>
-Set printer horizontal and vertical spacing. It only applies to
-variable dot size printers in softweave mode (and possibly other high
-end printers).
-
-</P>
-<P>
-<VAR>BASE</VAR> is the base unit for this command; it must be <SAMP>`14400'</SAMP>.
-
-</P>
-<P>
-<VAR>VERTICAL</VAR> is the distance in these units between printed rows; it
-should be (@math{separation_in_nozzles * BASE / 720}).
-
-</P>
-<P>
-<VAR>HORIZONTAL</VAR> is the horizontal separation between dots in a row.
-Depending upon the printer, this should be either (@math{14400 / 720})
-or (@math{14400 / 360}). The Stylus Pro 9000 manual suggests that the
-settings should match the chosen resolution, but that is apparently not
-the case (or not always the case) on other printers.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC (R <VAR>BC</VAR>=8 00 R E M O T E 1</CODE></B>
-<DD><A NAME="IDX220"></A>
-Enters "remote mode". This is a special, undocumented command set that
-is used to set up various printer options, such as paper feed tray, and
-perform utility functions such as head cleaning and alignment. It does
-not appear that anything here is actually required to make the printer
-print. Our best understanding of what is in a remote command sequence
-is described in a separate section below.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 command:</U> <B><CODE>ESC 01 @EJL [sp] ID\r\n</CODE></B>
-<DD><A NAME="IDX221"></A>
-Return the printer ID. This is considered a remote mode command,
-although the syntax is that of a conventional command. This returns the
-following information:
-
-</P>
-
-<PRE>
-@EJL ID\r
-MFG:EPSON;
-CMD:ESCPL2,BDC;
-MDL:[printer model];
-CLS:PRINTER;
-DES:EPSON [printer model];
-\f
-</PRE>
-
-</DL>
-
-<P>
-After all data has been sent, a form feed byte should be sent.
-
-</P>
-<P>
-All newer Epson printers (STC 440, STP 750) require the following
-command to be sent at least once to enable printing at all. This
-command specifically takes the printer out of the Epson packet mode
-communication protocol (whatever that is) and enables normal data
-transfer. Sending it multiple times is is not harmful, so it is
-normally sent at the beginning of each job:
-
-</P>
-
-<PRE>
-ESC 01@EJL[space]1284.4[newline]@EJL[space][space][space][space]
-[space][newline]ESC@
-</PRE>
-
-<P>
-The proper sequence of initialization commands is:
-
-</P>
-
-<PRE>
-magic command
-ESC
-remote mode if needed
-ESC (G
-ESC (U
-ESC (K (if appropriate)
-ESC (i
-ESC U (if needed)
-ESC (s (if appropriate)
-ESC (e
-ESC (C
-ESC (c
-ESC (S
-ESC (D (if needed)
-ESC (V (optional -- this can be accomplished with ESC (v)
-</PRE>
-
-<P>
-For printing, the proper sequence is:
-
-</P>
-
-<PRE>
-ESC (v
-</PRE>
-
-<P>
-and repeat for each color:
-
-</P>
-
-<PRE>
-ESC ($ or ESC (\ or ESC \
-ESC (r or ESC r (if needed--not used with <SAMP>`ESC i'</SAMP> and not needed if the color
-has not changed from the previous printed line)
-ESC . or ESC i ...data... [return] (0A hex)
-</PRE>
-
-<P>
-To terminate a page:
-
-</P>
-
-<PRE>
-[formfeed] (0C hex)
-ESC @
-</PRE>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_35.html">previous</A>, <A HREF="gimpprint_37.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_37.html b/doc/manual-html/gimpprint_37.html
deleted file mode 100644
index d2cbd44..0000000
--- a/doc/manual-html/gimpprint_37.html
+++ /dev/null
@@ -1,663 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - ESC/P2 Remote Mode Commands</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_36.html">previous</A>, <A HREF="gimpprint_38.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC52" HREF="gimpprint_toc.html#TOC52">C.3 Remote Mode Commands</A></H2>
-
-<P>
-The following description of remote commands comes out of an
-examination of the sequences used by the printer utilities bundled
-with the Windows drivers for the ESC740, and from other sources (some
-Epson manuals, experimentation, analysis of print files). It is
-largely speculative as these commands are not all documented in the
-Epson documentation we have access to. Generally, newer manuals
-provide more thorough documentation.
-
-</P>
-<P>
-Remote command mode is entered when the printer is sent the following
-sequence:
-
-</P>
-
-<PRE>
-ESC (R BC=8 00 R E M O T E 1
-</PRE>
-
-<P>
-Remote mode commands are then sent, and terminated with the following
-sequence:
-
-</P>
-
-<PRE>
-ESC 00 00 00
-</PRE>
-
-<P>
-All remote mode commands must be sent before the initial <SAMP>`ESC (G'</SAMP>
-command is sent.
-
-</P>
-<P>
-This introductory sequence is then followed by a sequence of commands.
-Each command is constructed as follows:
-
-</P>
-
-<UL>
-<LI>Two ASCII bytes indicating the function
-
-<LI>A byte count (two bytes, little-endian) for the parameters
-
-<LI>Binary parameters, if any
-
-</UL>
-
-<P>
-This is a list of all remote commands we have seen:
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>NC <VAR>BC</VAR>=2 00 00</CODE></B>
-<DD><A NAME="IDX222"></A>
-Print a nozzle check pattern
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>VI <VAR>BC</VAR>=2 00 00</CODE></B>
-<DD><A NAME="IDX223"></A>
-on my 740, prints the following:
-
-</P>
-
-<PRE>
-W01286 I02382\r\n
-</PRE>
-
-<P>
-probably "version information"
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* AI <VAR>BC</VAR>=3 00 00 00</CODE></B>
-<DD><A NAME="IDX224"></A>
-Prints a "printer ID". On one 870, prints the following:
-
-<PRE>
-51-51-50-51-49-48\r\n
-</PRE>
-
-<P>
-The Windows driver has a text entry field where this number can be
-entered, but its purpose is unknown.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* LD <VAR>BC</VAR>=0</CODE></B>
-<DD><A NAME="IDX225"></A>
-Load printer defaults from NVRAM, DIP switches, and/or ROM. This
-apparently does not load factory defaults per se, but any settings that
-are saved. This is commonly used right at the end of each print job
-after the <SAMP>`ESC @'</SAMP> printer reset command.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* CH <VAR>BC</VAR>=2 00 <VAR>xx</VAR></CODE></B>
-<DD><A NAME="IDX226"></A>
-Perform a head cleaning cycle. The heads to clean are determined by
-parameter <VAR>xx</VAR>:
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>`00'</SAMP>
-<DD>
-clean all heads
-<DT><SAMP>`01'</SAMP>
-<DD>
-clean black head
-<DT><SAMP>`02'</SAMP>
-<DD>
-clean color heads
-</DL>
-
-<P>
-While <VAR>xx</VAR> = <SAMP>`00'</SAMP> is probably supported by all printers, <VAR>xx</VAR> =
-<SAMP>`01'</SAMP> and <SAMP>`02'</SAMP> may well not be.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* DT <VAR>BC</VAR>=3 00 <VAR>xx</VAR> 00</CODE></B>
-<DD><A NAME="IDX227"></A>
-Print an alignment pattern. There are three patterns, which are picked
-via the choice of <VAR>xx</VAR>. Pattern <SAMP>`0'</SAMP> is coarse, pattern
-<SAMP>`1'</SAMP> is medium, and pattern <SAMP>`2'</SAMP> is fine.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* DU <VAR>BC</VAR>=6 00 <VAR>xx</VAR> 00 09 00 <VAR>yy</VAR></CODE></B>
-<DD><A NAME="IDX228"></A>
-Print another alignment pattern. It isn't entirely clear what <VAR>xx</VAR>
-and <VAR>yy</VAR> are, but it appears that <VAR>xx</VAR> takes on the values
-<SAMP>`1'</SAMP> and <SAMP>`2'</SAMP> , and <VAR>yy</VAR> takes on the values <SAMP>`0'</SAMP> and
-<VAR>1</VAR>. This may only work on the 580 and/or 480.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* DA <VAR>BC</VAR>=4 00 <VAR>xx</VAR> 00 <VAR>yy</VAR></CODE></B>
-<DD><A NAME="IDX229"></A>
-Set results for the first alignment pattern. <VAR>xx</VAR> is the pattern
-(<SAMP>`1'</SAMP>--<SAMP>`3'</SAMP>); <VAR>yy</VAR> is the best choice from the set
-(<SAMP>`1'</SAMP>--<SAMP>`7'</SAMP> or <SAMP>`1'</SAMP>--<SAMP>`15'</SAMP>). This does not save to
-NVRAM, so when the printer is powered off, the setting will be lost.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* DA <VAR>BC</VAR>=6 00 <VAR>xx</VAR> 00 <VAR>yy</VAR> 09 00</CODE></B>
-<DD><A NAME="IDX230"></A>
-Set results for alternate alignment pattern. <VAR>xx</VAR> appears to be the
-pass, and <VAR>yy</VAR> appears to be the optimum pattern. This does not
-save to NVRAM, so when the printer is powered off, the setting will be
-lost.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* SV <VAR>BC</VAR>=0</CODE></B>
-<DD><A NAME="IDX231"></A>
-Save the current settings to NVRAM.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* RS <VAR>BC</VAR>=1 01</CODE></B>
-<DD><A NAME="IDX232"></A>
-Reset the printer.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* IQ <VAR>BC</VAR>=1 01</CODE></B>
-<DD><A NAME="IDX233"></A>
-Get ink quantity. This requires direct access to the printer port. The
-return looks like
-
-</P>
-
-<PRE>
-IQ:KKCCMMYY
-</PRE>
-
-<P>
-or
-
-</P>
-
-<PRE>
-IQ:KKCCMMYYccmm
-</PRE>
-
-<P>
-(for 4-color and 6-color printers respectively), where each pair of
-digits are hexadecimal representations of percent.
-</DL>
-
-</P>
-<P>
-The following two commands have been observed on an STP 870.
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* IR <VAR>BC</VAR>=2 00 <VAR>xx</VAR></CODE></B>
-<DD><A NAME="IDX234"></A>
-<STRONG>Function unknown</STRONG>. This command has been observed on an STP 870
-with <VAR>xx</VAR>=<SAMP>`03'</SAMP> at the start of a job and <VAR>xx</VAR>=<SAMP>`02'</SAMP> at
-the end of a job (where it is followed by an <SAMP>`LD'</SAMP> command). When
-in roll mode, the values change to <VAR>xx</VAR>=<SAMP>`01'</SAMP> at the start of a
-job and <VAR>xx</VAR>=<SAMP>`00'</SAMP> at the end of a job.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* FP <VAR>BC</VAR>=3 00 <VAR>xx</VAR> <VAR>yy</VAR></CODE></B>
-<DD><A NAME="IDX235"></A>
-<VAR>xx</VAR>=<SAMP>`00'</SAMP> and <VAR>yy</VAR>=<SAMP>`00'</SAMP> selects the printer's normal
-left margin (about 3mm). <VAR>xx</VAR>=<SAMP>`0xb0'</SAMP> and <VAR>yy</VAR>=<SAMP>`0xff'</SAMP>
-selects zero-margin mode, where the left-most print position is shifted
-to a point about 0.1" to the left of the left-hand edge of the paper,
-allowing printing up to (and off) the left-hand edge of the paper.
-</DL>
-
-</P>
-<P>
-The commands below are partially documented in the Stylus Pro 9000
-manual. Much of this information is interpreted; none is tested.
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* SN <VAR>BC</VAR>=3 00 <VAR>xx</VAR> <VAR>yy</VAR></CODE></B>
-<DD><A NAME="IDX236"></A>
-Select Mechanism Sequence. <VAR>xx</VAR> controls which sub-operation is
-performed. <VAR>xx</VAR>=<SAMP>`00'</SAMP> selects the "Feed paper sequence
-setting". <VAR>yy</VAR> can take on the following values (on the STP 870,
-at any rate):
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>`0'</SAMP>
-<DD>
-default
-<DT><SAMP>`1'</SAMP>
-<DD>
-plain paper
-<DT><SAMP>`2'</SAMP>
-<DD>
-postcards
-<DT><SAMP>`3'</SAMP>
-<DD>
-film (photo quality glossy film, transparencies)
-<DT><SAMP>`4'</SAMP>
-<DD>
-envelopes
-<DT><SAMP>`5'</SAMP>
-<DD>
-plain paper (fast load)
-<DT><SAMP>`6'</SAMP>
-<DD>
-back light film (although this has been observed with heavyweight matte
-paper)
-<DT><SAMP>`7'</SAMP>
-<DD>
-matte paper (observed with 360 dpi inkjet paper, and photo quality
-inkjet paper)
-<DT><SAMP>`8'</SAMP>
-<DD>
-photo paper
-</DL>
-
-<P>
-Experimentation suggests that this setting changes details of how the
-printers' cut sheet feeder works, presumably to tune it for different
-types of paper.
-
-</P>
-<P>
-<VAR>xx</VAR>=<SAMP>`01'</SAMP> controls the platen gap setting; <VAR>yy</VAR>=<SAMP>`00'</SAMP>
-is the default, <VAR>yy</VAR>=<SAMP>`1'</SAMP> or <SAMP>`2'</SAMP> are higher settings.
-
-</P>
-<P>
-<VAR>xx</VAR>=<SAMP>`02'</SAMP> controls paper loading speed (<VAR>yy</VAR>=<SAMP>`0'</SAMP> is
-normal, <SAMP>`1'</SAMP> is fast, <SAMP>`2'</SAMP> is slow). It appears that <SAMP>`1'</SAMP>
-is used when printing on "plain paper", "360dpi ink jet paper" or
-"ink jet transparencies", and <VAR>yy</VAR>=<SAMP>`00'</SAMP> for all other paper
-type settings.
-
-</P>
-<P>
-<VAR>xx</VAR>=<SAMP>`07'</SAMP> controls duplex printing for printers with that
-capability (<VAR>yy</VAR>=<VAR>0</VAR> is default, for non-duplex printing;
-<SAMP>`1'</SAMP> is front side of the paper, and <VAR>2</VAR> is back side).
-
-</P>
-<P>
-<VAR>xx</VAR>=<SAMP>`09'</SAMP> controls zero margin printing on the printers with
-the capability of printing zero-margin on all sides (Stylus Photo
-780/790, 890, and 1280/1290). <VAR>yy</VAR>=<SAMP>`0'</SAMP> is the default;
-<SAMP>`1'</SAMP> enables zero margin printing.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* PP <VAR>BC</VAR>=3 00 <VAR>xx</VAR> <VAR>yy</VAR></CODE></B>
-<DD><A NAME="IDX237"></A>
-Set Paper Path. <VAR>xx</VAR>=<SAMP>`2'</SAMP> indicates manual feed,
-<VAR>xx</VAR>=<SAMP>`3'</SAMP> is for roll paper. <VAR>yy</VAR> selects "paper path
-number".
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* AC <VAR>BC</VAR>=2 00 <VAR>xx</VAR></CODE></B>
-<DD><A NAME="IDX238"></A>
-Set Auto Cutting State. <VAR>xx</VAR>=<SAMP>`0'</SAMP> selects auto cutting off,
-<VAR>xx</VAR>=<SAMP>`1'</SAMP> selects auto cutting on, and <VAR>xx</VAR>=<SAMP>`2'</SAMP>
-indicates horizontal print page line on. It appears that with auto
-cutting on, roll paper is cut automatically at the point a formfeed
-character is sent. The formfeed character is normally used to eject a
-page; with this turned on, it also cuts the roll paper. Horizontal
-print page line on prints a narrow line of black dots at the position
-the paper should be cut manually.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* DR <VAR>BC</VAR>=4 00 xx <VAR>DT2</VAR></CODE></B>
-<DD><A NAME="IDX239"></A>
-Set Drying Time. <VAR>xx</VAR>=<SAMP>`00'</SAMP> sets the drying time "per scan"
-(per pass?); <VAR>xx</VAR>=<SAMP>`01'</SAMP> sets the drying time per page. <VAR>DT</VAR>
-indicates the drying time, which is in seconds if page mode is used and
-in milliseconds if scan mode is used. <VAR>DT</VAR> must not exceed 3600
-seconds in per-page mode and 10000 milliseconds in per-scan mode.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* IK <VAR>BC</VAR>=2 00 <VAR>xx</VAR></CODE></B>
-<DD><A NAME="IDX240"></A>
-Select Ink Type. <VAR>xx</VAR>=<SAMP>`00'</SAMP> selects dye ink. Pigment ink is
-apparently selected by <VAR>xx</VAR>=<SAMP>`01'</SAMP>. This probably does not apply
-to the consumer-grade printers.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* PZ BC=2 00 xx</CODE></B>
-<DD><A NAME="IDX241"></A>
-Set Pause After Printing. <VAR>xx</VAR>=<SAMP>`00'</SAMP> selects no pause after
-printing; <VAR>xx</VAR>=<SAMP>`01'</SAMP> selects pause after printing. If turned
-on, the printer is paused after the page is ejected (by the FF
-byte). If cutting is turned on, the printer is paused <STRONG>after</STRONG>
-the cutting or printing of the horizontal cut line.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* EX <VAR>BC</VAR>=6 00 00 00 00 0x14 <VAR>xx</VAR></CODE></B>
-<DD><A NAME="IDX242"></A>
-Set Vertical Print Page Line Mode. <VAR>xx</VAR>=<SAMP>`00'</SAMP> is off,
-<VAR>xx</VAR>=<SAMP>`01'</SAMP> is on. If turned on, this prints vertical trim lines
-at the left and right margins.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* EX <VAR>BC</VAR>=6 00 00 00 00 0x05 <VAR>xx</VAR></CODE></B>
-<DD><A NAME="IDX243"></A>
-Set Roll Paper Mode. If <VAR>xx</VAR> is <SAMP>`0'</SAMP>, roll paper mode is off;
-if <VAR>xx</VAR> is <SAMP>`1'</SAMP>, roll paper mode is on.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* EX <VAR>BC</VAR>=3 00 <VAR>xx</VAR> <VAR>yy</VAR></CODE></B>
-<DD><A NAME="IDX244"></A>
-Appears to be a synonym for the <SAMP>`SN'</SAMP> command described above.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* PH <VAR>BC</VAR>=2 00 <VAR>xx</VAR></CODE></B>
-<DD><A NAME="IDX245"></A>
-Select Paper Thickness. Set the paper thickness <VAR>xx</VAR> in .1 mm
-units. This must not exceed 0x10 (1.6 mm). If the thickness is set
-"more than" .6 mm (which probably means "at least" .6 mm, since the
-other case reads "less than 0.5 mm"), the platen gap is set high
-irrespective of the <SAMP>`SN'</SAMP> command.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* PM <VAR>BC</VAR>=2 00 00</CODE></B>
-<DD><A NAME="IDX246"></A>
-<STRONG>Function unknown</STRONG>. Used on the STC 3000 at least when using roll
-feed, and on the STP 870 in all print files analysed to date.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* ST <VAR>BC</VAR>=2 00 <VAR>xx</VAR></CODE></B>
-<DD><A NAME="IDX247"></A>
-Epson's STP 750/1200 programming guide refers to the <SAMP>`ST'</SAMP> command
-as "Set printer state reply". If <VAR>xx</VAR> is <SAMP>`0'</SAMP> or <SAMP>`2'</SAMP>,
-the printer will not send status replies. If <VAR>xx</VAR> is <SAMP>`1'</SAMP> or
-<SAMP>`3'</SAMP>, the printer will send status replies. The status replies
-consist of state, error codes, ink leve, firmware version, and warning
-status.
-
-</P>
-<P>
-The actual reply is documented as
-
-</P>
-
-<PRE>
-@BDC ST\r
-ST: xx;
-[ER: yy;]
-IQ: n1n2n3n4;
-[WR: w1,w2...;]
-RV: zz;
-AI:CW:02kkccmmyy, MI:mm
-[TC:tttt;]
-INK:...;
-\f
-</PRE>
-
-<P>
-(<SAMP>`\r'</SAMP> is carriage return; <SAMP>`\n'</SAMP> is newline; <SAMP>`\f'</SAMP> is
-formfeed.)
-
-</P>
-<P>
-<SAMP>`ST'</SAMP> is the printer status:
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>`00'</SAMP>
-<DD>
-Error
-<DT><SAMP>`01'</SAMP>
-<DD>
-Self-test
-<DT><SAMP>`02'</SAMP>
-<DD>
-Busy
-<DT><SAMP>`03'</SAMP>
-<DD>
-Waiting while printing
-<DT><SAMP>`04'</SAMP>
-<DD>
-Idle
-<DT><SAMP>`07'</SAMP>
-<DD>
-Cleaning/filling ink heads
-<DT><SAMP>`08'</SAMP>
-<DD>
-Not yet initialized/filling heads
-</DL>
-
-<P>
-<SAMP>`ER'</SAMP>, if provided, is the error status:
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>`00'</SAMP>
-<DD>
-Fatal error
-<DT><SAMP>`01'</SAMP>
-<DD>
-Interface not selected
-<DT><SAMP>`04'</SAMP>
-<DD>
-Paper jam
-<DT><SAMP>`05'</SAMP>
-<DD>
-Out of ink
-<DT><SAMP>`06'</SAMP>
-<DD>
-Paper out
-</DL>
-
-<P>
-<SAMP>`IQ'</SAMP> is the amount of ink left, as a (decimal!) percentage
-expressed in hexadecimal. The values are black, cyan, magenta, and
-yellow (presumably 6-color printers supply light cyan and light magenta
-inks as additional parameters).
-
-</P>
-<P>
-<SAMP>`WR'</SAMP>, if provided, is the warning status:
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>`10'</SAMP>
-<DD>
-Black ink low
-<DT><SAMP>`11'</SAMP>
-<DD>
-Cyan
-<DT><SAMP>`12'</SAMP>
-<DD>
-Magenta
-<DT><SAMP>`13'</SAMP>
-<DD>
-Yellow
-<DT><SAMP>`14'</SAMP>
-<DD>
-Light cyan (presumably)
-<DT><SAMP>`15'</SAMP>
-<DD>
-Light magenta (presumably)
-</DL>
-
-<P>
-<SAMP>`RV'</SAMP> is the firmware revision (one byte ASCII).
-
-</P>
-<P>
-<SAMP>`AI'</SAMP> is actuator information. These are two byte ASCII codes that
-indicate "ink weight rank ID" of KCMY, respectively.
-
-</P>
-<P>
-<SAMP>`TC'</SAMP>, if provided, is the total time of cleaning or ink filling (?).
-
-</P>
-<P>
-<SAMP>`INK:'</SAMP> and <SAMP>`MI'</SAMP> are <STRONG>not documented</STRONG>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* SM <VAR>BC</VAR>=2 00 <VAR>xx</VAR></CODE></B>
-<DD><A NAME="IDX248"></A>
-Set Status Reply Rate. <VAR>xx</VAR> is the repeat interval in seconds. If
-<VAR>xx</VAR> is <SAMP>`0'</SAMP>, the status is returned only when the printer's
-state changes.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* ST <VAR>BC</VAR>=1 01</CODE></B>
-<DD><A NAME="IDX249"></A>
-Reply Printer Status. The reply is formatted as
-
-</P>
-
-<PRE>
-@BDC PS\r\nST:<VAR>xx</VAR>;\f
-</PRE>
-
-<P>
-(<SAMP>`\r'</SAMP> is carriage return; <SAMP>`\n'</SAMP> is newline; <SAMP>`\f'</SAMP> is
-formfeed). If <VAR>xx</VAR> (the reply value) is <SAMP>`0'</SAMP> or <SAMP>`2'</SAMP>,
-automatic status update is disabled; if <SAMP>`1'</SAMP> or <SAMP>`3'</SAMP>, it is
-enabled.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* SM <VAR>BC</VAR>=1 01</CODE></B>
-<DD><A NAME="IDX250"></A>
-Reply Printer Status Rate. The reply is formatted as
-
-</P>
-
-<PRE>
-@BDC PS\r\nST:xx;\f
-</PRE>
-
-<P>
-(<SAMP>`\r'</SAMP> is carriage return; <SAMP>`\n'</SAMP> is newline; <SAMP>`\f'</SAMP> is
-formfeed). See <SAMP>`SM <VAR>BC</VAR>=2'</SAMP> above for the meaning of the return
-value.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* ?? <VAR>BC</VAR>=<VAR>xx</VAR> <VAR>y</VAR>[1] ... <VAR>y</VAR>[xx]</CODE></B>
-<DD><A NAME="IDX251"></A>
-Echo Parameters (perhaps better described as Echo Commands). The
-command string is executed (it would appear from the documentation), and
-the string sent is returned using a sequence similar to that described
-in the <SAMP>`ST <VAR>BC</VAR>=1'</SAMP> and <SAMP>`SM <VAR>BC</VAR>=1'</SAMP> commands. Note
-that in this case the number of bytes is variable!
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>ESC/P2 remote command:</U> <B><CODE>* SM <VAR>BC</VAR>=2 00 02</CODE></B>
-<DD><A NAME="IDX252"></A>
-<STRONG>Function unknown</STRONG>. Used on the STC 3000 at least when using
-roll feed.
-</DL>
-
-</P>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_36.html">previous</A>, <A HREF="gimpprint_38.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_38.html b/doc/manual-html/gimpprint_38.html
deleted file mode 100644
index a71d5f1..0000000
--- a/doc/manual-html/gimpprint_38.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - ESC/P2 Appropriate Remote Commands</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_37.html">previous</A>, <A HREF="gimpprint_39.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC53" HREF="gimpprint_toc.html#TOC53">C.4 Appropriate Remote Commands</A></H2>
-
-<P>
-All of the remote commands described above are wrapped up with the usual
-boilerplate. The files always start with <SAMP>`00 00 00'</SAMP> and the
-"magic" command described above, then two <SAMP>`ESC @'</SAMP>s to reset the
-printer. The remote command sequences come next; if they print anything
-that is usually followed by a <SAMP>`FF'</SAMP> (0C hex) character to feed the
-page, then the file ends with another two <SAMP>`ESC @'</SAMP>s to get back to
-the ground state.
-
-</P>
-<P>
-An alignment sequence goes like this:
-
-</P>
-
-<OL>
-<LI>Host uses <SAMP>`DT'</SAMP> to print an alignment sheet
-
-<LI>User eyeballs the sheet to see which is the best aligned pattern.
-
-<LI>Host sends a <SAMP>`DA'</SAMP> command indicating which pattern the user chose
-
-<LI>If the user said "realign", meaning he isn't done yet, go to step 1
-
-<LI>We are done: host sends a <SAMP>`SV'</SAMP> command and exits
-
-</OL>
-
-<P>
-The sequence used (by the STC 3000, at least) to print from the roll
-feed is (with byte count omitted)
-
-</P>
-
-<PRE>
- PM 00 00
- SN 00 00 00
- EX 00 00 00 00 05 01
- ST 00 01
- SM 00 02
-</PRE>
-
-<P>
-The sequence used by the STP 870 to print on plain paper is
-
-</P>
-
-<PRE>
- PM 00 00
- IR 00 03
- SN 00 00 01
- SN 00 01 00
- SN 00 02 01
- EX 00 00 00 00 05 00
- FP 00 00 00
-</PRE>
-
-<P>
-and the job finishes with
-
-</P>
-
-<PRE>
- IR 00 02
- LD
-</PRE>
-
-<P>
-For different paper type settings on the STP 870, the arguments to
-<SAMP>`SN'</SAMP> vary. The arguments to the first and third <SAMP>`SN'</SAMP> commands
-are as outlined in the description of the <SAMP>`SN'</SAMP> command above; the
-arguments to the second ("platen gap") are <SAMP>`00 01 01'</SAMP> for thick
-papers ("matte paper--heavyweight", "photo paper" and "premium
-glossy photo paper") and <SAMP>`00 01 00'</SAMP> for all others.
-
-</P>
-<P>
-For roll-mode printing, the STP 870's sequence changes as follows.
-<SAMP>`IR'</SAMP>'s arguments become <SAMP>`00 01'</SAMP> in the header, and <SAMP>`00
-00'</SAMP> after the job, and <SAMP>`EX'</SAMP>'s last argument changes from <SAMP>`00'</SAMP>
-to <SAMP>`01'</SAMP>.
-
-</P>
-<P>
-For zero-margin printing on the STP 870, the arguments to <SAMP>`FP'</SAMP> become
-<SAMP>`00 0xb0 0xff'</SAMP>. This moves the origin about 5.5mm to the left, to a
-point one tenth of an inch to the left of the left-hand edge of the
-paper, allowing printing right up to (and beyond) the edge of the
-paper. Some printers (at least the STP 870) include white absorbent
-pads at the left margin position and other positions (89mm and 100mm
-on the STP 870) to soak up ink which misses the edge of the paper.
-Printing off the edge of paper of a width not aligned with a pad could
-result in making a mess of the inside of the printer and ink getting
-on the reverse of the paper.
-
-</P>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_37.html">previous</A>, <A HREF="gimpprint_39.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_39.html b/doc/manual-html/gimpprint_39.html
deleted file mode 100644
index fd25fb0..0000000
--- a/doc/manual-html/gimpprint_39.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - New Printer</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_38.html">previous</A>, <A HREF="gimpprint_40.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC54" HREF="gimpprint_toc.html#TOC54">D Adding a new printer</A></H1>
-<P>
-<A NAME="IDX253"></A>
-<A NAME="IDX254"></A>
-<A NAME="IDX255"></A>
-
-</P>
-
-<P>
-This appendix covers adding a new ESCP/2, PCL, or Canon printer.
-Writing a new driver module is not covered.
-
-</P>
-<P>
-The three steps to adding a printer are:
-
-</P>
-
-<OL>
-<LI>Add an entry to <TT>`printers.xml'</TT>
-
-<LI>Add the appropriate code and data to the appropriate driver module
-
-<LI>Tune the printer
-
-</OL>
-
-<P>
-Printer information is stored in two places: in <TT>`printers.xml'</TT>
-(which contains the list of printer models available to the the
-upper-level application), and in the appropriate driver file
-(<TT>`print-escp2.c'</TT>, <TT>`print-pcl.c'</TT>, or <TT>`print-canon.c'</TT>).
-
-</P>
-
-<UL>
-<LI><A HREF="gimpprint_40.html#SEC55">printers.xml</A>: File format description.
-<LI><A HREF="gimpprint_41.html#SEC56">Driver file</A>: Data structures to use.
-<LI><A HREF="gimpprint_42.html#SEC57">Epson inkjet printers</A>: Adding an Epson printer.
-<LI><A HREF="gimpprint_43.html#SEC58">Tuning Epson printers</A>: Tweaking settings.
-<LI><A HREF="gimpprint_44.html#SEC59">Canon inkjet printers</A>: Adding a Canon printer.
-</UL>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_38.html">previous</A>, <A HREF="gimpprint_40.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_4.html b/doc/manual-html/gimpprint_4.html
deleted file mode 100644
index 5b262af..0000000
--- a/doc/manual-html/gimpprint_4.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Using libgimpprint</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_3.html">previous</A>, <A HREF="gimpprint_5.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC7" HREF="gimpprint_toc.html#TOC7">2 Using libgimpprint</A></H1>
-<P>
-<A NAME="IDX5"></A>
-
-</P>
-<P>
-This chapter describes how to write programs that use libgimpprint.
-
-</P>
-
-
-
-<H2><A NAME="SEC8" HREF="gimpprint_toc.html#TOC8">2.1 Code prerequisites</A></H2>
-<P>
-To use libgimpprint with a program, several steps must be taken:
-
-</P>
-
-<OL>
-<LI>Include the master libgimpprint header <CODE>&#60;gimp-print/gimp-print.h&#62;.</CODE>
-
-<LI>Call <CODE>stp_init()</CODE>.
-
-<LI>Link with libgimpprint.
-
-</OL>
-
-<P>
-The following is a short example program. It does not do anything useful,
-but it does everything required to link with libgimpprint and call other
-functions from libgimpprint.
-
-</P>
-
-<PRE>
-#include &#60;gimp-print/gimp-print.h&#62;
-
-int
-main (int argc, char *argv[])
-{
- stp_init ();
- return (0);
-}
-</PRE>
-
-
-
-<H2><A NAME="SEC9" HREF="gimpprint_toc.html#TOC9">2.2 Linking with libgimpprint</A></H2>
-
-<P>
-To link a program with libgimpprint, then <SAMP>`-lgimpprint'</SAMP> needs to be passed
-to the compiler when linking. For example, to compile and link <TT>`prog.c'</TT>
-the following commands would be used:
-
-</P>
-
-<PRE>
-gcc -c prog.c
-gcc -o prog -lgimpprint prog.o
-</PRE>
-
-<P>
-The compiler and linker flags needed may vary depending on the options
-GIMP-Print was configured with when it was built. The
-@command{gimpprint-config} script will give the correct parameters for
-the local installation (see section <A HREF="gimpprint_6.html#SEC11">3.1 @command{gimpprint-config}</A>).
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_3.html">previous</A>, <A HREF="gimpprint_5.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_40.html b/doc/manual-html/gimpprint_40.html
deleted file mode 100644
index d71cf27..0000000
--- a/doc/manual-html/gimpprint_40.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - printers.xml</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_39.html">previous</A>, <A HREF="gimpprint_41.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC55" HREF="gimpprint_toc.html#TOC55">D.1 <TT>`printers.xml'</TT></A></H2>
-
-<P>
-<TT>`printers.xml'</TT> is an XML-like file (there's no formal DTD) that
-contains very simple printer definitions. A typical definition follows:
-
-</P>
-
-<PRE>
-&#60;printer name="EPSON Stylus Color 1500" driver="escp2-1500"&#62;
-&#60;color&#62;
-&#60;model value=2&#62;
-&#60;gamma value=0.597&#62;
-&#60;density value=1.0&#62;
-&#60;language value=escp2&#62;
-&#60;/printer&#62;
-</PRE>
-
-<P>
-There are other tags that may be present. The only ones that are
-mandatory are <SAMP>`&#60;printer&#62;'</SAMP>, <SAMP>`&#60;color&#62;'</SAMP>, <SAMP>`&#60;model&#62;'</SAMP>, and
-<SAMP>`&#60;language&#62;'</SAMP>. The other optional parameters (gamma and density in
-this case) can be used to adjust control settings. This is probably not
-the right place for them; the printer drivers themselves should contain
-this information. There's probably no good reason for anything but
-gamma and density to be in here. Gamma refers to the printer's gamma
-factor; density is the desired base ink density for the printer. The
-Epson driver contains the density information for each printer at each
-resolution internally. An even better driver would adjust density and
-possibly even gamma for paper type. All the more reason not to have
-that information here.
-
-</P>
-<P>
-If you really are curious about what tags are permitted, please see
-<TT>`printdefl.l'</TT>. I deliberately want to make this obscure.
-
-</P>
-<P>
-Anyway, here's the definition of the tags that do matter:
-
-</P>
-<P>
-<DL>
-<DT><U><TT>`printers.xml'</TT> tag:</U> <B><CODE>&#60;printer name="<VAR>longname</VAR>" driver="<VAR>drivername</VAR>"&#62;</CODE></B>
-<DD><A NAME="IDX256"></A>
-This starts the definition of a printer. The <VAR>longname</VAR> should be
-something human readable; the <VAR>drivername</VAR> should consist of
-alphanumerics and hyphens, and be fairly short. The <VAR>longname</VAR> is
-what will appear in the GUI listing of printers; the <VAR>drivername</VAR> is
-what is actually used to key into the list of printers. It is legal to
-have multiple printers with the same driver name.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U><TT>`printers.xml'</TT> tag:</U> <B><CODE>&#60;color&#62;</CODE></B>
-<DD><A NAME="IDX257"></A>
-<DT><U><TT>`printers.xml'</TT> tag:</U> <B><CODE>&#60;nocolor&#62;</CODE></B>
-<DD><A NAME="IDX258"></A>
-Indicates that this printer is capable of color, or is not capable of
-color respectively
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U><TT>`printers.xml'</TT> tag:</U> <B><CODE>&#60;model value=<VAR>int</VAR>&#62;</CODE></B>
-<DD><A NAME="IDX259"></A>
-This defines a model number. This is passed into the driver, which may
-do whatever it cares to with it--index into a table, compute on, or
-whatever. This need not be unique.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U><TT>`printers.xml'</TT> tag:</U> <B><CODE>&#60;language value=<VAR>type</VAR>&#62;</CODE></B>
-<DD><A NAME="IDX260"></A>
-This defines what driver module this printer uses. <VAR>type</VAR> should be
-<SAMP>`escp2'</SAMP>, <SAMP>`pcl'</SAMP>, <SAMP>`canon'</SAMP>, or <SAMP>`ps'</SAMP>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U><TT>`printers.xml'</TT> tag:</U> <B><CODE>&#60;/printer&#62;</CODE></B>
-<DD><A NAME="IDX261"></A>
-This, of course, closes off a printer definition.
-</DL>
-
-</P>
-<P>
-This is handled very ad-hoc. It's ugly. But it's reasonably easy to
-extend, and it's buzzword-compliant.
-
-</P>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_39.html">previous</A>, <A HREF="gimpprint_41.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_41.html b/doc/manual-html/gimpprint_41.html
deleted file mode 100644
index 8f7fde6..0000000
--- a/doc/manual-html/gimpprint_41.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Driver file</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_40.html">previous</A>, <A HREF="gimpprint_42.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC56" HREF="gimpprint_toc.html#TOC56">D.2 The driver file</A></H2>
-<P>
-<A NAME="IDX262"></A>
-
-</P>
-<P>
-Adding a new printer to a driver module (<TT>`print-escp2.c'</TT>,
-<TT>`print-pcl.c'</TT>, or <TT>`print-canon.c'</TT>---<TT>`print-ps.c'</TT> is
-really ad hoc) requires a bit more planning. Each driver is somewhat
-different, but they all generally have a vector of printer definitions,
-and the code does some special casing based on particular printer
-capabilities. The PCL and Canon drivers are quite similar; the Canon
-driver was actually cribbed from the PCL driver, but it then returned
-the favor.
-
-</P>
-<P>
-The Epson driver is a little bit different. Canon and PCL printers
-have some amount of intelligence; a lot of them have specific ink
-options, and know about specific paper sizes and types, and must be
-told the right thing. Epson printers have somewhat less intelligence
-and will more or less do exactly what the host tells it to do in a
-fairly regular fashion. I actually prefer this; it isn't materially
-more work for the host to compute things like exact paper sizes and
-such, it allows a lot more tweaking, and it may be why Epson has been
-more open with information -- the communication protocol doesn't
-really contain very much IP, so they have less reason to keep it
-secret.
-
-</P>
-<P>
-Someone else will have to fill in the sections about PCL and Canon
-printers.
-
-</P>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_40.html">previous</A>, <A HREF="gimpprint_42.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_42.html b/doc/manual-html/gimpprint_42.html
deleted file mode 100644
index 4c5e557..0000000
--- a/doc/manual-html/gimpprint_42.html
+++ /dev/null
@@ -1,457 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Epson inkjet printers</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_41.html">previous</A>, <A HREF="gimpprint_43.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC57" HREF="gimpprint_toc.html#TOC57">D.3 Epson inkjet printers</A></H2>
-<P>
-<A NAME="IDX263"></A>
-
-</P>
-<P>
-The <SAMP>`model_capabilities'</SAMP> vector in <TT>`print-escp2.c'</TT> contains
-one entry for each defined printer model. The <SAMP>`model'</SAMP> parameter in
-<TT>`printers.xml'</TT> is an index into this table.
-
-</P>
-<P>
-In general, the new printers have fewer eccentricities than the older
-printers. That doesn't mean they're simpler, just that they're more
-consistent.
-
-</P>
-<P>
-An <CODE>escp2_printer_t</CODE> is a C struct defined as follows:
-
-</P>
-<P>
-<DL>
-<DT><U>Data type:</U> <B>escp2_printer_t</B>
-<DD><A NAME="IDX264"></A>
-
-<PRE>
-typedef struct escp2_printer
-{
- model_cap_t flags; /* Bitmask of flags, see below */
-/*****************************************************************************/
- int nozzles; /* Number of nozzles per color */
- int min_nozzles; /* Minimum number of nozzles per color */
- int nozzle_separation; /* Separation between rows, in 1/360" */
- int black_nozzles; /* Number of black nozzles (may be extra) */
- int min_black_nozzles; /* # of black nozzles (may be extra) */
- int black_nozzle_separation; /* Separation between rows */
- int fast_nozzles; /* Number of fast nozzles */
- int min_fast_nozzles; /* # of fast nozzles (may be extra) */
- int fast_nozzle_separation; /* Separation between rows */
-/*****************************************************************************/
- int xres; /* Normal distance between dots in */
- /* softweave mode (inverse inches) */
- int enhanced_xres; /* Distance between dots in highest */
- /* quality modes */
- int base_separation; /* Basic unit of row separation */
- int base_resolution; /* Base hardware spacing (above this */
- /* always requires multiple passes) */
- int enhanced_resolution;/* Above this we use the */
- /* enhanced_xres rather than xres */
- int resolution_scale; /* Scaling factor for ESC(D command */
- int max_black_resolution; /* Above this resolution, we */
- /* must use color parameters */
- /* rather than (faster) black */
- /* only parameters*/
- int max_hres;
- int max_vres;
- int min_hres;
- int min_vres;
-/*****************************************************************************/
- int max_paper_width; /* Maximum paper width, in points */
- int max_paper_height; /* Maximum paper height, in points */
- int min_paper_width; /* Maximum paper width, in points */
- int min_paper_height; /* Maximum paper height, in points */
- /* Printer interleave: */
- int m_left_margin; /* Left margin, points */
- int m_right_margin; /* Right margin, points */
- int m_top_margin; /* Absolute top margin, points */
- int m_bottom_margin; /* Absolute bottom margin, points */
- /* ROLL FEED: */
- /* Softweave: */
- int roll_left_margin; /* Left margin, points */
- int roll_right_margin; /* Right margin, points */
- int roll_top_margin; /* Absolute top margin, points */
- int roll_bottom_margin; /* Absolute bottom margin, points */
- /* Printer interleave: */
- int m_roll_left_margin; /* Left margin, points */
- int m_roll_right_margin; /* Right margin, points */
- int m_roll_top_margin; /* Absolute top margin, points */
- int m_roll_bottom_margin; /* Absolute bottom margin, points */
-/*****************************************************************************/
- int extra_feed; /* Extra distance the paper can be spaced */
- /* beyond the bottom margin, in 1/360". */
- /* (maximum useful value is */
- /* nozzles * nozzle_separation) */
- int separation_rows; /* Some printers require funky spacing */
- /* arguments in interleave mode. */
- int pseudo_separation_rows;/* Some printers require funky */
- /* spacing arguments in softweave mode */
-
- int zero_margin_offset; /* Offset to use to achieve */
- /* zero-margin printing */
- int initial_vertical_offset;
- int black_initial_vertical_offset;
- int extra_720dpi_separation;
-
-/*****************************************************************************/
- const int *dot_sizes; /* Vector of dot sizes for resolutions */
- const double *densities; /* List of densities for each printer */
- const escp2_variable_inklist_t *inks; /* Choices of inks for this printer */
-/*****************************************************************************/
- const paperlist_t *paperlist;
- const res_t *reslist;
- const inklist_t *inklist;
-/*****************************************************************************/
- const int *bits;
- const int *base_resolutions;
- const input_slot_list_t *input_slots;
-/*****************************************************************************/
- const init_sequence_t *preinit_sequence;
- const init_sequence_t *postinit_remote_sequence;
-} escp2_printer_t;
-</PRE>
-
-</DL>
-
-<P>
-The printer definition block is divided into 8 sections. The first
-section is a set of miscellaneous printer options. These are
-described in the code, and will not be discussed further here.
-
-</P>
-
-<P>
-The second section describes the number of nozzles and the separation
-between nozzles in base units. The base unit is 1/360" for all
-currently supported printers, but future printers may support a
-smaller base unit.
-
-</P>
-<P>
-Many printers have more black nozzles than nozzles of other colors,
-and when used in black and white mode, it's possible to use these
-extra nozzles, which speeds up printing. As an example, a printer
-that is specified to have 48 cyan, magenta, and yellow nozzles, and
-144 black nozzles, can use all 144 black nozzles when printing black
-ink only. When printing in color, only 48 nozzles of each color
-(including black) can be used.
-
-</P>
-<P>
-Most printers can print using either the number of nozzles available
-or any smaller number. Some printers require that all of the nozzles
-be used. Those printers will set <CODE>min_nozzles</CODE> and/or
-<CODE>min_black_nozzles</CODE> to the same value as <CODE>nozzles</CODE> and/or
-<CODE>black_nozzles</CODE>.
-
-</P>
-
-<P>
-The third section defines basic units of measure for the printer,
-including the standard separation between dots, the base nozzle
-separation, and the minimum and maximum printing resolutions the
-printer supports. Most of these are fairly self-explanatory, but some
-are not obvious.
-
-</P>
-<P>
-Most Epson printers, other than the high-end Stylus Pro models, cannot
-print dots spaced more closely than 1/360" or 1/720" apart (this is
-the setting for <CODE>xres</CODE>. This is true even for printers that
-support resolutions of 1440 or 2880 DPI. In these cases, the data
-must be printed in 2, 4, or 8 passes. While the printer can position
-the head to a resolution of 1/1440" or 1/2880", the head cannot
-deposit ink that frequently.
-
-</P>
-<P>
-Some printers can only print in their very best quality (using the
-smallest dots available) printing at a lower resolution. For example,
-the Stylus Photo EX can normally print with a dot spacing of 1/720".
-The smallest dot size cannot be printed with a dot spacing of less
-than 1/360", however. In this case, we use <CODE>enhanced_xres</CODE>
-to specify the resolution to be used in this enhanced mode, and
-<CODE>enhanced_resolution</CODE> to specify the printing resolution above
-which we use the <CODE>enhanced_xres</CODE>.
-
-</P>
-<P>
-The <CODE>resolution_scale</CODE> command is used to specify scaling factors
-for the dot separation on newer printers. It should always be 14400
-with current printers.
-
-</P>
-
-<P>
-The fourth section specifies the minimum and maximum paper sizes, and
-the margins. Some printers allow use of narrower margins when
-softweave is used; both sets of margins are specified.
-
-</P>
-<P>
-There is a convenient <SAMP>`INCH'</SAMP> macro defined to make specification of
-the <CODE>max_paper_width</CODE> and <CODE>max_paper_height</CODE> more legible. It
-multiplies 72 by the provided expression to get the appropriate number
-of points. For example, to specify 8.5", <SAMP>`INCH(17/2)'</SAMP> expands to
-<SAMP>`(72 * 17/2)'</SAMP>, which is evaluated left to right, and hence
-generates the correct value.
-
-</P>
-
-<P>
-The fifth section specifies some miscellaneous values that are
-required for certain printers. For most printers, the correct values
-are 1 for <CODE>separation_rows</CODE> and 0 for the others. Very, very few
-printers require (or allow) <CODE>separation_rows</CODE> to be anything but
-1 and <CODE>pseudo_separation_rows</CODE> other than zero. The Stylus Color
-1520, Stylus Color 800, Stylus Color 850, and (strangely enough to my
-mind, since it's a new printer) Stylus Color 660 seem to be the only
-exceptions.
-
-</P>
-<P>
-The <CODE>zero_margin_offset</CODE> is used to specify an additional
-negative horizontal offset required to print to the edges of the paper
-on newer Stylus Photo printers. These must be determined empirically;
-good starting values are 100 for 1440 DPI and 50 for 2880 DPI
-printers. The goal is to print to the edge of the page, but not over
-it.
-
-</P>
-
-<P>
-The sixth section specifies head offsets for printers that do not have
-the color jets aligned. Certain printers, such as the Stylus Color
-480, have an unusual head arrangement whereby instead of all of the
-colors being aligned vertically, the nozzles are configured in
-groups. These printers are easy to determine; if the normal head
-offset of zero for each color is used, the printing will be vertically
-out of alignment. Most of these printers require specification of a
-negative offset for printing to the top edge of the paper; typically
-these printers do not require such an offset when printing black only.
-
-</P>
-<P>
-The seventh section specifies the most difficult values to tune, the
-dot sizes, printing densities, and ink values (for variable dot size
-enabled printers). These will be described in detail below.
-
-</P>
-
-<P>
-The last section specifies luminosity, hue, and saturation adjustment
-vectors for the printer, and the paper definitions. These are used to
-adjust the color in Photograph and Solid Colors output modes. These are
-each vectors of 48 (actually 49, as the first value must be duplicated)
-doubles that remap the luminosity, hue, and saturation respectively.
-The hue is calculated, and the value used to interpolate between the two
-closest points in each vector.
-
-</P>
-<P>
-The paper definitions is a set of paper definitions. The paper
-definition contains the name of the paper type, special settings that
-are required for printers to process the paper correctly, and a set of
-adjustment values. These are not currently discussed here.
-
-</P>
-
-<P>
-The lists of dot sizes and densities contain values for 13 printing
-modes: 120/180 DPI using printer weaving (single row;
-referred to as "interleave") and "soft" weaving (the driver
-determines the exact pattern of dot layout), 360 DPI interleave and
-softweave, 720x360 DPI interleave and softweave, 720 DPI interleave
-and softweave, 1440x720 interleave and softweave, 2880x720 interleave
-and softweave, and 2880x1440 softweave only.
-
-</P>
-<P>
-For the dot sizes, the value for each element in the vector selects
-the dot size to be used when printing at this (or similar)
-resolution. The dot sizes are determined by consulting the
-programming manual for the printer and experimenting as described
-below. Current Epson printers always use dot sizes less than
-<SAMP>`16'</SAMP>, or <SAMP>`0x10'</SAMP>, to indicate single dot size (each dot is
-represented by 1 bit, and it's either printed or not), and dot sizes
-of <SAMP>`16'</SAMP> or greater to indicate variable dot size (each dot is
-represented by 2 bits, and it can either be not printed or take on 2
-or 3 values, representing the relative size of the printed dot).
-Variable dot sizes permit the use of very small dots (which would be
-too small to fill the page and produce solid black) in light areas,
-while allowing the page to be filled with larger dots in darker areas.
-
-</P>
-<P>
-Even single dot size printers can usually produce dots of different
-sizes; it's just illegal to actually try to switch dot size during a
-page. These dots are also much bigger than those used in true
-variable dot size printing.
-
-</P>
-<P>
-A dot size of <SAMP>`-1'</SAMP> indicates that this resolution is illegal for
-the printer in question. Any resolutions that would use this dot size
-will not be presented to the user. A dot size of <SAMP>`-2'</SAMP> indicates
-that this resolution is legal, but that the driver is not to attempt
-to set any dot size. Some very old printers do not support the
-command to set the dot size.
-
-</P>
-<P>
-Most printers support a dot size of <SAMP>`0'</SAMP> as a mode-specific default,
-but it's often a bigger dot than necessary. Printers usually also
-support some dot sizes between <SAMP>`1'</SAMP> and <SAMP>`3'</SAMP>. Usually <SAMP>`1'</SAMP>
-is the right dot size for 720 and 1440 dpi printing, and <SAMP>`3'</SAMP> works
-best at 360 dpi.
-
-</P>
-<P>
-Variable dot size printers usually support 2 or 3 sets of variable dot
-sizes. Older printers based on a 6 picolitre drop (the 480, 720, 740,
-750, 900, and 1200) support two: mode 16 (0x10 in hexadecimal) for
-normal variable dots at 1440 or 720 dpi, and mode 17 (0x10) for
-special larger dots at 360 dpi. Newer printers based on 4 picolitre
-drops normally support three sizes: <SAMP>`0x10'</SAMP> for 4 pl base drops,
-<SAMP>`0x11'</SAMP> for 6 pl base drops, and <SAMP>`0x12'</SAMP> for special large
-drops. On these printers, <SAMP>`0x10'</SAMP> usually works best at 1440x720
-and <SAMP>`0x11'</SAMP> works best at 720x720. Unfortunately, <SAMP>`0x10'</SAMP>
-doesn't seem to generate quite enough density at 720x720, because if
-it did the output would be very smooth. Perhaps it's possible to
-tweak things@enddots{}
-
-</P>
-
-<P>
-The list of densities is a list of base density values for all of the
-above listed modes. "Density" refers to the amount of ink deposited
-when a solid color (or solid black) is printed. So if the density is
-<SAMP>`.5'</SAMP>, solid black actually prints only half the possible dots.
-"Base density" refers to the fact that the density value can be
-scaled in the GUI or on the Ghostscript command line. The density
-value specified (which is not made visible to the user) is multiplied
-by the base density to obtain the effective density value. All other
-things (such as ink drop size) remaining the same, doubling the
-resolution requires halving the base density. The base density in the
-density vector may exceed <SAMP>`1'</SAMP>, as many paper types require lower
-density than the base driver. The driver ensures that the actual
-density never exceeds 1.
-
-</P>
-<P>
-Tuning the density should be done on high quality paper (usually
-glossy photo paper). The goal is to find the lowest density value
-that results in solid black (no visible gaps under a fairly high power
-magnifying glass or loupe). If an appropriate density value is found
-for 720 DPI, it could be divided by 2 for 1440x720, by 4 for 2880x720,
-and by 8 for 2880x1440.
-
-</P>
-<P>
-However, for printers that offer a choice of dot size, this may not be
-the best strategy. The best choice for dot size is the smallest dot
-size that allows choosing a density value not greater than 1 that
-gives full coverage. This dot size may be different for different
-resolutions. Tuning variable dot size printers is more complicated;
-the process is described below.
-
-</P>
-<P>
-The last member is a pointer to a structure containing a list of ink
-values for variable dot size (or 6 color) inks. We model variable dot
-size inks as producing a certain "value" of ink for each available dot
-size, where the largest dot size has a value of 1. 6-color inks are
-handled similarly; the light cyan and light magenta inks are treated
-as a fractional ink value. The combination of variable dot size and 6
-color inks, of course, just creates that many more different ink
-choices.
-
-</P>
-<P>
-This structure is actually rather complicated; it contains entries for
-each combination of physical printer resolution (180, 360, 720, and
-1440 dpi), ink colors (4, 6, and 7), and single and variable dot sizes
-(since some printer modes can't handle variable dot size inks). Since
-there's so much data, it's actually a somewhat deeply nested
-structure:
-
-</P>
-<P>
-An <CODE>escp2_printer_t</CODE> contains a pointer (essentially, a reference
-rather than a copy) to an <CODE>escp2_variable_inklist_t</CODE>.
-
-</P>
-<P>
-An <CODE>escp2_variable_inklist_t</CODE> contains pointers to
-<CODE>escp2_variable_inkset_t</CODE> structures. There is one such pointer
-for each combination of resolution, dot type, and ink colors as
-described above. Yes, this is rather inflexible.
-
-</P>
-<P>
-An <CODE>escp2_variable_inkset_t</CODE> contains pointers to
-<CODE>escp2_variable_ink_t</CODE> structures. There is one such pointer for
-each of the four colors (C, M, Y, and K).
-
-</P>
-<P>
-An <CODE>escp2_variable_ink_t</CODE> contains a pointer to the actual list of
-ink values (<CODE>simple_dither_range_t</CODE>), the number of ink values, and
-a density value to be used for computing the transitions. This density
-value is actually a scaling value; it is multiplied by the effective
-density to compute the density to be used for computing the transitions.
-Normally, this value is <SAMP>`1'</SAMP>, but in some cases it may be possible
-to get smoother results with a different value (in particular, the
-single dot size 6-color inks work best with the effective density scaled
-to <SAMP>`.75'</SAMP> for this purpose). A lower density lowers the transition
-points, which results in more ink being deposited.
-
-</P>
-<P>
-A <CODE>simple_dither_range_t</CODE> is a structure containing four values:
-
-</P>
-
-<OL>
-<LI>The value of the particular ink
-
-<LI>The bit pattern used to represent the ink
-
-<LI>Whether the ink is light (0) or dark (1), for inks with light and dark variants
-
-<LI>The relative amount of ink actually deposited by this dot (not
-
-currently used for much; it can be used for ink reduction purposes, to
-reduce the amount of ink deposited on the paper).
-</OL>
-
-<P>
-These things are interesting as arrays. From an array of
-<CODE>simple_dither_range_t</CODE>'s, the dither code computes transition
-values that it looks up at run time to decide what ink to print, as well
-as whether to print at all.
-
-</P>
-<P>
-<STRONG>Really</STRONG> confused now? Yup. You'll probably find it easier to
-simply read the code.
-
-</P>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_41.html">previous</A>, <A HREF="gimpprint_43.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_43.html b/doc/manual-html/gimpprint_43.html
deleted file mode 100644
index 381ac9c..0000000
--- a/doc/manual-html/gimpprint_43.html
+++ /dev/null
@@ -1,189 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Tuning Epson printers</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_42.html">previous</A>, <A HREF="gimpprint_44.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC58" HREF="gimpprint_toc.html#TOC58">D.4 Tuning the printer</A></H2>
-<P>
-<A NAME="IDX265"></A>
-<A NAME="IDX266"></A>
-
-</P>
-<P>
-Now, how do you use all this to tune a printer? There are a number of
-ways to do it; this one is my personal favorite.
-
-</P>
-<P>
-There's a file named <TT>`cyan-sweep.tif'</TT>. This consists of a thin bar
-of cyan sweeping from white to almost pure cyan, and from pure cyan to
-black. The first thing to do is to pick the appropriate
-<CODE>simple_dither_range_t</CODE> (or create a whole new
-<CODE>escp2_variable_inklist_t</CODE>) and comment out all but the darkest ink
-(this means you'll be using the largest dots of dark ink). At 8.5"
-width (the width of a letter-size piece of paper), the bar will be 1/8"
-high. Printing it on wider or narrower paper will change the height
-accordingly. Print it width-wise across a piece of photo quality paper
-in line art mode using ordered or adaptive hybrid dither. Do not use
-photographic mode; the colors in photographic mode vary non-linearly
-depending upon the presence of the three color components, while in line
-art mode the colors are much purer. Make sure that all the color
-adjustments are set to defaults (1.0). Use the highest quality version
-of the print mode you're testing to reduce banding and other artifacts.
-This is much easier to do with the Gimp than with Ghostscript.
-
-</P>
-<P>
-At this stage, you want to look for four things:
-
-</P>
-
-<OL>
-<LI>
-
-The black near the center of the line is solid, but not more so than
-that.
-
-<LI>
-
-The cyan immediately to the left of the black is <EM>almost</EM> solid.
-
-<LI>
-
-The dark cyan at the far right of the page is solid, but not more so.
-You can try tuning the density so that it isn't quite solid, then
-nudging up the density until it is.
-
-<LI>
-
-Both sweeps sweep smoothly from light to dark. In particular, the dark
-half of the bar shouldn't visibly change color; it should go smoothly
-from cyan to black.
-</OL>
-
-<P>
-Repeat this stage until you have everything just right. Use the
-positioning entry boxes in the dialog to position each bar exactly
-1/8" further down the page. Adjacent bars will be touching.
-
-</P>
-<P>
-The next step is to uncomment out the second darkest dot size. If
-you're using variable dots, use the second largest dot size of the
-dark ink rather than the largest dot size of the light ink. This will
-give you two inks.
-
-</P>
-<P>
-When you recompile the plugin, you simply need to copy the new
-executable into the correct place. You do not need to exit and
-restart the Gimp.
-
-</P>
-<P>
-Print another bar adjacent to the first one. Your goal is to match
-the bar using a single dot size as closely as possible. You'll find
-that the dark region of the bar shouldn't change to any great degree,
-but the light half probably will. If the lighter part of the light
-half is too dark, you need to increase the value of the smaller dot;
-if it's too light, you need to decrease the value. The reasoning is
-that if the value is too low, the ink isn't being given enough credit
-for its contribution to the darkness of the ink, and vice versa.
-Repeat until you have a good match. Make sure you let the ink dry
-fully, which will take a few minutes. Wet ink will look too dark.
-Don't look at the paper too closely; hold it at a distance. The extra
-graininess of the largest dot size will probably make it look lighter
-than it should; if you hold it far enough away so that you can't see
-the dots, you'll get a more accurate picture of what's going on.
-
-</P>
-<P>
-After you have what looks like a good match, print another bar using
-only the largest dot size (or dark ink, for single dot size 6-color
-printers). You want to ensure that the bars touching each other look
-identical, or as close as possible to it; your eye won't give you a
-good reading if the bars are separated from each other. You'll
-probably have to repeat the procedure.
-
-</P>
-<P>
-The next step is to comment out all but the largest and third-largest
-dot size, and repeat the procedure. When they match, use all three
-dot sizes of dark ink. Again, the goal is to match the single dot
-size.
-
-</P>
-<P>
-You'll probably find the match is imperfect. Now you have to figure
-out what region isn't right, which takes some experimentation. Even
-small adjustments can make a noticeable difference in what you see.
-At this stage, it's very important to hold the page far enough from
-your eye; when you use all three dot sizes, the texture will be much
-more even, which sometimes makes it look darker and sometimes lighter.
-
-</P>
-<P>
-After this is calibrated, it's time to calibrate the light ink against
-the dark ink. To do this, comment out all but the large dot version
-of the two inks, and repeat the procedure. This is trickier, because
-the hues of the inks might not be quite identical. Look at the dark
-half of the bar as well as the light half to see that the hue really
-doesn't change as you sweep from cyan to black. Sometimes it's easier
-to judge that way. You may find that it looks blotchy, in which case
-you should switch from ordered dither to adaptive hybrid.
-
-</P>
-<P>
-After you have the light and dark inks calibrated against each other,
-it's time to add everything back in. Usually you don't want to use
-the largest dot size of light ink. These dots will be much larger
-than the small dots of dark ink, but they'll still be lighter. This
-will cause problems when printing mixed colors, since you'll be
-depositing more ink on lighter regions of the page, and you'll
-probably get strange color casts that you can't get rid of in neutral
-tones. I normally use only the smallest one or two dot sizes of light
-ink.
-
-</P>
-<P>
-After you've tweaked everything, print the color bar with saturation
-set to zero. This will print neutral tones using color inks. Your
-goal here is to look for neutral tonality. If you're using a 6-color
-printer and get a yellow cast, it means that the values for your light
-inks are too high (remember, that means they're getting too much
-credit, so you're not depositing enough cyan and magenta ink, and the
-yellow dominates). If you get a bluish or bluish-purple cast, your
-light inks are too low (you're not giving them enough credit, so too
-much cyan and magenta is deposited, which overwhelms the yellow).
-Make sure you do this on very white, very high grade inkjet paper
-that's designed for 1440x720 dpi or higher; otherwise the ink will
-spread on contact and you'll get values that aren't really true for
-high grade paper. You can, of course, calibrate for low grade paper
-if that's what you're going to use, but that shouldn't be put into the
-distribution.
-
-</P>
-<P>
-You can also fully desaturate this bar inside the Gimp and print it as
-monochrome (don't print the cyan as monochrome; the driver does funny
-things with luminance), for comparison. You'll find it very hard to
-get rid of all color casts.
-
-</P>
-<P>
-There are other ways of tuning printers, but this one works pretty
-well for me.
-
-</P>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_42.html">previous</A>, <A HREF="gimpprint_44.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_44.html b/doc/manual-html/gimpprint_44.html
deleted file mode 100644
index 6e54c81..0000000
--- a/doc/manual-html/gimpprint_44.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Canon inkjet printers</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_43.html">previous</A>, <A HREF="gimpprint_45.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC59" HREF="gimpprint_toc.html#TOC59">D.5 Canon inkjet printers</A></H2>
-
-<P>
-Basically, a new Canon printer can be added to <TT>`print-canon.c'</TT> in a
-similar way as described above for the epson inkjet printers. The main
-differences are noted here:
-
-</P>
-<P>
-In general, Canon printers have more "built-in intelligence" than Epson
-printers which results in the fact that the driver only has to tell the
-printing conditions like resolutions, dot sizes, etc. to the printer and
-afterwards transfer the raster data line by line for each color used.
-
-</P>
-<P>
-<CODE>canon_cap_t</CODE> is a C struct defined as follows:
-
-</P>
-<P>
-<DL>
-<DT><U>Data type:</U> <B>canon_cap_t</B>
-<DD><A NAME="IDX267"></A>
-
-<PRE>
-typedef struct canon_caps {
- int model; /* model number as used in printers.xml */
- int max_width; /* maximum printable paper size */
- int max_height;
- int base_res; /* base resolution - shall be 150 or 180 */
- int max_xdpi; /* maximum horizontal resolution */
- int max_ydpi; /* maximum vertical resolution */
- int max_quality;
- int border_left; /* left margin, points */
- int border_right; /* right margin, points */
- int border_top; /* absolute top margin, points */
- int border_bottom; /* absolute bottom margin, points */
- int inks; /* installable cartridges (CANON_INK_*) */
- int slots; /* available paperslots */
- int features; /* special bjl settings */
- canon_dot_size_t dot_sizes; /* Vector of dot sizes for resolutions */
- canon_densities_t densities; /* List of densities for each printer */
- canon_variable_inklist_t *inxs; /* Choices of inks for this printer */
-} canon_cap_t;
-</PRE>
-
-</DL>
-
-<P>
-Since there are Canon printers which print in resolutions of
-@math{2^n*150} dpi (e.g. 300, 600, 1200) and others which support
-resolutions of @math{2^n*180} dpi (e.g. 360, 720, 1440), there's a base
-resolution (150 or 180, respectively) given in the
-<CODE>canon_cap_t</CODE>. The structs <CODE>canon_dot_size_t</CODE>,
-<CODE>canon_densities_t</CODE> and <CODE>canon_variable_inklist_t</CODE> refer to
-resolutions being multiples of the base resolution.
-
-</P>
-<P>
-For the Canon driver, the struct <CODE>canon_dot_size_t</CODE> holds values
-for a model's capabilities at a given resolution: <SAMP>`-1'</SAMP> if the
-resolution is not supported. <SAMP>`0'</SAMP> if it can be used and <SAMP>`1'</SAMP> if
-the resolution can be used for variable dot size printing.
-
-</P>
-<P>
-In <CODE>canon_densities_t</CODE> the base densities for each resolution can
-be specified like for an epson printer, the same holds true for
-<CODE>canon_variable_inklist_t</CODE>. See the descriptions above to learn
-about how to adjust your model's output to yield nice results.
-
-</P>
-<P>
-There's a slight difference though in the way the Canon driver and the escp2
-driver define their variable inklists: In the Canon driver, you need to define
-an inklist like this:
-
-</P>
-
-<PRE>
-static const canon_variable_inklist_t canon_ink_myinks[] =
-{
- {
- 1,4, /* 1bit/pixel, 4 colors */
- &#38;ci_CMYK_1, &#38;ci_CMYK_1, &#38;ci_CMYK_1,
- &#38;ci_CMYK_1, &#38;ci_CMYK_1, &#38;ci_CMYK_1,
- },
- {
- 3,4, /* 3bit/pixel, 4 colors */
- &#38;ci_CMYK_3, &#38;ci_CMYK_3, &#38;ci_CMYK_3,
- &#38;ci_CMYK_3, &#38;ci_CMYK_3, &#38;ci_CMYK_3,
- },
-};
-</PRE>
-
-<P>
-where the <SAMP>`&#38;ci_CMYK_1'</SAMP> and <SAMP>`&#38;ci_CMYK_3'</SAMP> entries are references
-to a previously defined const of type <CODE>canon_variable_inkset_t</CODE>.
-
-</P>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_43.html">previous</A>, <A HREF="gimpprint_45.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_45.html b/doc/manual-html/gimpprint_45.html
deleted file mode 100644
index b7214b1..0000000
--- a/doc/manual-html/gimpprint_45.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Data Type and Variable Index</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_44.html">previous</A>, <A HREF="gimpprint_46.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC60" HREF="gimpprint_toc.html#TOC60">Data Type and Variable Index</A></H1>
-
-<P>
-<H2>c</H2>
-<DIR>
-<LI><A HREF="gimpprint_44.html#IDX267">canon_cap_t</A>
-</DIR>
-<H2>e</H2>
-<DIR>
-<LI><A HREF="gimpprint_42.html#IDX264">escp2_printer_t</A>
-</DIR>
-<H2>g</H2>
-<DIR>
-<LI><A HREF="gimpprint_18.html#IDX172">gimpprint_binary_age</A>
-<LI><A HREF="gimpprint_18.html#IDX171">gimpprint_current_interface</A>
-<LI><A HREF="gimpprint_18.html#IDX173">gimpprint_interface_age</A>
-<LI><A HREF="gimpprint_18.html#IDX168">gimpprint_major_version</A>
-<LI><A HREF="gimpprint_18.html#IDX170">gimpprint_micro_version</A>
-<LI><A HREF="gimpprint_18.html#IDX169">gimpprint_minor_version</A>
-</DIR>
-<H2>s</H2>
-<DIR>
-<LI><A HREF="gimpprint_16.html#IDX151">stp_image_t</A>
-<LI><A HREF="gimpprint_14.html#IDX114">stp_option_t</A>
-<LI><A HREF="gimpprint_12.html#IDX100">stp_outfunc_t</A>
-<LI><A HREF="gimpprint_15.html#IDX125">stp_papersize_t</A>
-<LI><A HREF="gimpprint_15.html#IDX126">stp_papersize_unit_t</A>
-<LI><A HREF="gimpprint_16.html#IDX140">stp_printer_t</A>
-<LI><A HREF="gimpprint_16.html#IDX150">stp_printfuncs_t</A>
-<LI><A HREF="gimpprint_12.html#IDX20">stp_vars_t</A>
-</DIR>
-
-</P>
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_44.html">previous</A>, <A HREF="gimpprint_46.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_46.html b/doc/manual-html/gimpprint_46.html
deleted file mode 100644
index 88bb95b..0000000
--- a/doc/manual-html/gimpprint_46.html
+++ /dev/null
@@ -1,249 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Function and Macro Index</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_45.html">previous</A>, <A HREF="gimpprint_47.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC61" HREF="gimpprint_toc.html#TOC61">Function and Macro Index</A></H1>
-
-<P>
-<H2>*</H2>
-<DIR>
-<LI><A HREF="gimpprint_37.html#IDX251"><CODE>* ?? <VAR>BC</VAR>=<VAR>xx</VAR> <VAR>y</VAR>[1] ... <VAR>y</VAR>[xx]</CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX238"><CODE>* AC <VAR>BC</VAR>=2 00 <VAR>xx</VAR></CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX224"><CODE>* AI <VAR>BC</VAR>=3 00 00 00</CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX226"><CODE>* CH <VAR>BC</VAR>=2 00 <VAR>xx</VAR></CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX229"><CODE>* DA <VAR>BC</VAR>=4 00 <VAR>xx</VAR> 00 <VAR>yy</VAR></CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX230"><CODE>* DA <VAR>BC</VAR>=6 00 <VAR>xx</VAR> 00 <VAR>yy</VAR> 09 00</CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX239"><CODE>* DR <VAR>BC</VAR>=4 00 xx <VAR>DT2</VAR></CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX227"><CODE>* DT <VAR>BC</VAR>=3 00 <VAR>xx</VAR> 00</CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX228"><CODE>* DU <VAR>BC</VAR>=6 00 <VAR>xx</VAR> 00 09 00 <VAR>yy</VAR></CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX244"><CODE>* EX <VAR>BC</VAR>=3 00 <VAR>xx</VAR> <VAR>yy</VAR></CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX243"><CODE>* EX <VAR>BC</VAR>=6 00 00 00 00 0x05 <VAR>xx</VAR></CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX242"><CODE>* EX <VAR>BC</VAR>=6 00 00 00 00 0x14 <VAR>xx</VAR></CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX235"><CODE>* FP <VAR>BC</VAR>=3 00 <VAR>xx</VAR> <VAR>yy</VAR></CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX240"><CODE>* IK <VAR>BC</VAR>=2 00 <VAR>xx</VAR></CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX233"><CODE>* IQ <VAR>BC</VAR>=1 01</CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX234"><CODE>* IR <VAR>BC</VAR>=2 00 <VAR>xx</VAR></CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX225"><CODE>* LD <VAR>BC</VAR>=0</CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX245"><CODE>* PH <VAR>BC</VAR>=2 00 <VAR>xx</VAR></CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX246"><CODE>* PM <VAR>BC</VAR>=2 00 00</CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX237"><CODE>* PP <VAR>BC</VAR>=3 00 <VAR>xx</VAR> <VAR>yy</VAR></CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX241"><CODE>* PZ BC=2 00 xx</CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX232"><CODE>* RS <VAR>BC</VAR>=1 01</CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX248"><CODE>* SM <VAR>BC</VAR>=2 00 <VAR>xx</VAR></CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX250"><CODE>* SM <VAR>BC</VAR>=1 01</CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX252"><CODE>* SM <VAR>BC</VAR>=2 00 02</CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX236"><CODE>* SN <VAR>BC</VAR>=3 00 <VAR>xx</VAR> <VAR>yy</VAR></CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX247"><CODE>* ST <VAR>BC</VAR>=2 00 <VAR>xx</VAR></CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX249"><CODE>* ST <VAR>BC</VAR>=1 01</CODE></A>
-<LI><A HREF="gimpprint_37.html#IDX231"><CODE>* SV <VAR>BC</VAR>=0</CODE></A>
-</DIR>
-<H2>&#60;</H2>
-<DIR>
-<LI><A HREF="gimpprint_40.html#IDX261"><CODE>&#60;/printer&#62;</CODE></A>
-<LI><A HREF="gimpprint_40.html#IDX257"><CODE>&#60;color&#62;</CODE></A>
-<LI><A HREF="gimpprint_40.html#IDX260"><CODE>&#60;language value=<VAR>type</VAR>&#62;</CODE></A>
-<LI><A HREF="gimpprint_40.html#IDX259"><CODE>&#60;model value=<VAR>int</VAR>&#62;</CODE></A>
-<LI><A HREF="gimpprint_40.html#IDX258"><CODE>&#60;nocolor&#62;</CODE></A>
-<LI><A HREF="gimpprint_40.html#IDX256"><CODE>&#60;printer name="<VAR>longname</VAR>" driver="<VAR>drivername</VAR>"&#62;</CODE></A>
-</DIR>
-<H2>a</H2>
-<DIR>
-<LI><A HREF="gimpprint_8.html#IDX11">AM_PATH_GIMPPRINT</A>
-</DIR>
-<H2>e</H2>
-<DIR>
-<LI><A HREF="gimpprint_36.html#IDX211"><CODE>ESC $ <VAR>OFFSET2</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX210"><CODE>ESC ($ <VAR>BC</VAR>=4 <VAR>OFFSET4</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX213"><CODE>ESC (/ <VAR>BC</VAR>=4 <VAR>OFFSET4</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX212"><CODE>ESC (\ <VAR>BC</VAR>=4 <VAR>UNITS2</VAR> <VAR>OFFSET2</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX201"><CODE>ESC (C <VAR>BC</VAR>=2 <VAR>PAGELENGTH2</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX202"><CODE>ESC (C <VAR>BC</VAR>=4 <VAR>PAGELENGTH4</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX203"><CODE>ESC (c <VAR>BC</VAR>=4 <VAR>TOP2</VAR> <VAR>LENGTH2</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX204"><CODE>ESC (c <VAR>BC</VAR>=8 <VAR>TOP4</VAR> <VAR>LENGTH4</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX219"><CODE>ESC (D <VAR>BC</VAR>=4 <VAR>BASE2</VAR> <VAR>VERTICAL1</VAR> <VAR>HORIZONTAL1</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX200"><CODE>ESC (e <VAR>BC</VAR>=2 <VAR>ZERO1</VAR> <VAR>DOTSIZE1</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX193"><CODE>ESC (G <VAR>BC</VAR>=1 <VAR>ON1</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX197"><CODE>ESC (i <VAR>BC</VAR>=1 <VAR>MICROWEAVE1</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX196"><CODE>ESC (K <VAR>BC</VAR>=2 <VAR>ZERO1</VAR> <VAR>GRAYMODE1</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX216"><CODE>ESC (r <VAR>BC</VAR>=2 <VAR>DENSITY1</VAR> <VAR>COLOR1</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX220"><CODE>ESC (R <VAR>BC</VAR>=8 00 R E M O T E 1</CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX199"><CODE>ESC (s <VAR>BC</VAR>=1 <VAR>SPEED1</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX205"><CODE>ESC (S <VAR>BC</VAR>=8 <VAR>WIDTH4</VAR> <VAR>LENGTH4</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX194"><CODE>ESC (U <VAR>BC</VAR>=1 <VAR>UNIT1</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX195"><CODE>ESC (U <VAR>BC</VAR>=5 <VAR>PAGEUNITS1</VAR> <VAR>VUNIT1</VAR> <VAR>HUNIT1</VAR> <VAR>BASEUNIT2</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX206"><CODE>ESC (v <VAR>BC</VAR>=2 <VAR>ADVANCE2</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX208"><CODE>ESC (V <VAR>BC</VAR>=2 <VAR>ADVANCE2</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX207"><CODE>ESC (v <VAR>BC</VAR>=4 <VAR>ADVANCE4</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX209"><CODE>ESC (V <VAR>BC</VAR>=4 <VAR>ADVANCE4</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX217"><CODE>ESC . <VAR>COMPRESS1</VAR> <VAR>VSEP1</VAR> <VAR>HSEP1</VAR> <VAR>LINES1</VAR> <VAR>WIDTH2</VAR> <VAR>data...</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX221"><CODE>ESC 01 @EJL [sp] ID\r\n</CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX192"><CODE>ESC @</CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX214"><CODE>ESC \ <VAR>OFFSET2</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX218"><CODE>ESC i <VAR>COLOR1</VAR> <VAR>COMPRESS1</VAR> <VAR>BITS1</VAR> <VAR>BYTES2</VAR> <VAR>LINES2</VAR> <VAR>data...</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX215"><CODE>ESC r <VAR>COLOR1</VAR></CODE></A>
-<LI><A HREF="gimpprint_36.html#IDX198"><CODE>ESC U <VAR>DIRECTION1</VAR></CODE></A>
-</DIR>
-<H2>g</H2>
-<DIR>
-<LI><A HREF="gimpprint_18.html#IDX166">GIMPPRINT_BINARY_AGE</A>
-<LI><A HREF="gimpprint_18.html#IDX161">GIMPPRINT_CHECK_VERSION</A>
-<LI><A HREF="gimpprint_18.html#IDX165">GIMPPRINT_CURRENT_INTERFACE</A>
-<LI><A HREF="gimpprint_18.html#IDX167">GIMPPRINT_INTERFACE_AGE</A>
-<LI><A HREF="gimpprint_18.html#IDX162">GIMPPRINT_MAJOR_VERSION</A>
-<LI><A HREF="gimpprint_18.html#IDX164">GIMPPRINT_MICRO_VERSION</A>
-<LI><A HREF="gimpprint_18.html#IDX163">GIMPPRINT_MINOR_VERSION</A>
-</DIR>
-<H2>n</H2>
-<DIR>
-<LI><A HREF="gimpprint_37.html#IDX222"><CODE>NC <VAR>BC</VAR>=2 00 00</CODE></A>
-</DIR>
-<H2>s</H2>
-<DIR>
-<LI><A HREF="gimpprint_12.html#IDX23">stp_allocate_copy</A>
-<LI><A HREF="gimpprint_12.html#IDX106">stp_allocate_lut</A>
-<LI><A HREF="gimpprint_12.html#IDX21">stp_allocate_vars</A>
-<LI><A HREF="gimpprint_18.html#IDX160">stp_check_version</A>
-<LI><A HREF="gimpprint_17.html#IDX154">stp_choose_colorfunc</A>
-<LI><A HREF="gimpprint_14.html#IDX117">stp_clear_all_options</A>
-<LI><A HREF="gimpprint_14.html#IDX116">stp_clear_option</A>
-<LI><A HREF="gimpprint_12.html#IDX108">stp_compute_lut</A>
-<LI><A HREF="gimpprint_17.html#IDX155">stp_compute_page_parameters</A>
-<LI><A HREF="gimpprint_12.html#IDX22">stp_copy_vars</A>
-<LI><A HREF="gimpprint_13.html#IDX112">stp_default_dither_algorithm</A>
-<LI><A HREF="gimpprint_17.html#IDX156">stp_default_settings</A>
-<LI><A HREF="gimpprint_13.html#IDX110">stp_dither_algorithm_count</A>
-<LI><A HREF="gimpprint_13.html#IDX111">stp_dither_algorithm_name</A>
-<LI><A HREF="gimpprint_12.html#IDX107">stp_free_lut</A>
-<LI><A HREF="gimpprint_12.html#IDX24">stp_free_vars</A>
-<LI><A HREF="gimpprint_12.html#IDX90">stp_get_app_gamma</A>
-<LI><A HREF="gimpprint_12.html#IDX76">stp_get_brightness</A>
-<LI><A HREF="gimpprint_12.html#IDX94">stp_get_cmap</A>
-<LI><A HREF="gimpprint_12.html#IDX78">stp_get_contrast</A>
-<LI><A HREF="gimpprint_12.html#IDX80">stp_get_cyan</A>
-<LI><A HREF="gimpprint_12.html#IDX88">stp_get_density</A>
-<LI><A HREF="gimpprint_12.html#IDX49">stp_get_dither_algorithm</A>
-<LI><A HREF="gimpprint_12.html#IDX28">stp_get_driver</A>
-<LI><A HREF="gimpprint_12.html#IDX103">stp_get_errdata</A>
-<LI><A HREF="gimpprint_12.html#IDX101">stp_get_errfunc</A>
-<LI><A HREF="gimpprint_12.html#IDX74">stp_get_gamma</A>
-<LI><A HREF="gimpprint_12.html#IDX60">stp_get_image_type</A>
-<LI><A HREF="gimpprint_12.html#IDX46">stp_get_ink_type</A>
-<LI><A HREF="gimpprint_12.html#IDX68">stp_get_input_color_model</A>
-<LI><A HREF="gimpprint_12.html#IDX56">stp_get_left</A>
-<LI><A HREF="gimpprint_12.html#IDX92">stp_get_lut</A>
-<LI><A HREF="gimpprint_12.html#IDX82">stp_get_magenta</A>
-<LI><A HREF="gimpprint_12.html#IDX37">stp_get_media_size</A>
-<LI><A HREF="gimpprint_12.html#IDX43">stp_get_media_source</A>
-<LI><A HREF="gimpprint_12.html#IDX40">stp_get_media_type</A>
-<LI><A HREF="gimpprint_14.html#IDX119">stp_get_option_by_index</A>
-<LI><A HREF="gimpprint_14.html#IDX120">stp_get_option_by_name</A>
-<LI><A HREF="gimpprint_12.html#IDX54">stp_get_orientation</A>
-<LI><A HREF="gimpprint_12.html#IDX98">stp_get_outdata</A>
-<LI><A HREF="gimpprint_12.html#IDX96">stp_get_outfunc</A>
-<LI><A HREF="gimpprint_12.html#IDX70">stp_get_output_color_model</A>
-<LI><A HREF="gimpprint_12.html#IDX25">stp_get_output_to</A>
-<LI><A HREF="gimpprint_12.html#IDX52">stp_get_output_type</A>
-<LI><A HREF="gimpprint_12.html#IDX66">stp_get_page_height</A>
-<LI><A HREF="gimpprint_12.html#IDX64">stp_get_page_width</A>
-<LI><A HREF="gimpprint_15.html#IDX130">stp_get_papersize_by_index</A>
-<LI><A HREF="gimpprint_15.html#IDX128">stp_get_papersize_by_name</A>
-<LI><A HREF="gimpprint_15.html#IDX129">stp_get_papersize_by_size</A>
-<LI><A HREF="gimpprint_12.html#IDX31">stp_get_ppd_file</A>
-<LI><A HREF="gimpprint_16.html#IDX145">stp_get_printer_by_driver</A>
-<LI><A HREF="gimpprint_16.html#IDX142">stp_get_printer_by_index</A>
-<LI><A HREF="gimpprint_16.html#IDX144">stp_get_printer_by_long_name</A>
-<LI><A HREF="gimpprint_16.html#IDX146">stp_get_printer_index_by_driver</A>
-<LI><A HREF="gimpprint_12.html#IDX34">stp_get_resolution</A>
-<LI><A HREF="gimpprint_12.html#IDX86">stp_get_saturation</A>
-<LI><A HREF="gimpprint_12.html#IDX72">stp_get_scaling</A>
-<LI><A HREF="gimpprint_12.html#IDX58">stp_get_top</A>
-<LI><A HREF="gimpprint_12.html#IDX62">stp_get_unit</A>
-<LI><A HREF="gimpprint_12.html#IDX84">stp_get_yellow</A>
-<LI><A HREF="gimpprint_11.html#IDX16">stp_init</A>
-<LI><A HREF="gimpprint_15.html#IDX127">stp_known_papersizes</A>
-<LI><A HREF="gimpprint_16.html#IDX141">stp_known_printers</A>
-<LI><A HREF="gimpprint_11.html#IDX18">stp_malloc</A>
-<LI><A HREF="gimpprint_17.html#IDX157">stp_maximum_settings</A>
-<LI><A HREF="gimpprint_12.html#IDX105">stp_merge_printvars</A>
-<LI><A HREF="gimpprint_17.html#IDX158">stp_minimum_settings</A>
-<LI><A HREF="gimpprint_14.html#IDX118">stp_option_count</A>
-<LI><A HREF="gimpprint_14.html#IDX121">stp_option_data</A>
-<LI><A HREF="gimpprint_14.html#IDX123">stp_option_length</A>
-<LI><A HREF="gimpprint_14.html#IDX122">stp_option_name</A>
-<LI><A HREF="gimpprint_15.html#IDX136">stp_papersize_get_bottom</A>
-<LI><A HREF="gimpprint_15.html#IDX133">stp_papersize_get_height</A>
-<LI><A HREF="gimpprint_15.html#IDX135">stp_papersize_get_left</A>
-<LI><A HREF="gimpprint_15.html#IDX131">stp_papersize_get_name</A>
-<LI><A HREF="gimpprint_15.html#IDX137">stp_papersize_get_right</A>
-<LI><A HREF="gimpprint_15.html#IDX134">stp_papersize_get_top</A>
-<LI><A HREF="gimpprint_15.html#IDX138">stp_papersize_get_unit</A>
-<LI><A HREF="gimpprint_15.html#IDX132">stp_papersize_get_width</A>
-<LI><A HREF="gimpprint_16.html#IDX147">stp_printer_get_driver</A>
-<LI><A HREF="gimpprint_16.html#IDX143">stp_printer_get_long_name</A>
-<LI><A HREF="gimpprint_16.html#IDX148">stp_printer_get_model</A>
-<LI><A HREF="gimpprint_16.html#IDX149">stp_printer_get_printfuncs</A>
-<LI><A HREF="gimpprint_16.html#IDX152">stp_printer_get_printvars</A>
-<LI><A HREF="gimpprint_12.html#IDX91">stp_set_app_gamma</A>
-<LI><A HREF="gimpprint_12.html#IDX77">stp_set_brightness</A>
-<LI><A HREF="gimpprint_12.html#IDX95">stp_set_cmap</A>
-<LI><A HREF="gimpprint_12.html#IDX79">stp_set_contrast</A>
-<LI><A HREF="gimpprint_12.html#IDX81">stp_set_cyan</A>
-<LI><A HREF="gimpprint_12.html#IDX89">stp_set_density</A>
-<LI><A HREF="gimpprint_12.html#IDX50">stp_set_dither_algorithm</A>
-<LI><A HREF="gimpprint_12.html#IDX51">stp_set_dither_algorithm_n</A>
-<LI><A HREF="gimpprint_12.html#IDX29">stp_set_driver</A>
-<LI><A HREF="gimpprint_12.html#IDX30">stp_set_driver_n</A>
-<LI><A HREF="gimpprint_12.html#IDX104">stp_set_errdata</A>
-<LI><A HREF="gimpprint_12.html#IDX102">stp_set_errfunc</A>
-<LI><A HREF="gimpprint_12.html#IDX75">stp_set_gamma</A>
-<LI><A HREF="gimpprint_12.html#IDX61">stp_set_image_type</A>
-<LI><A HREF="gimpprint_12.html#IDX47">stp_set_ink_type</A>
-<LI><A HREF="gimpprint_12.html#IDX48">stp_set_ink_type_n</A>
-<LI><A HREF="gimpprint_12.html#IDX69">stp_set_input_color_model</A>
-<LI><A HREF="gimpprint_12.html#IDX57">stp_set_left</A>
-<LI><A HREF="gimpprint_12.html#IDX93">stp_set_lut</A>
-<LI><A HREF="gimpprint_12.html#IDX83">stp_set_magenta</A>
-<LI><A HREF="gimpprint_12.html#IDX38">stp_set_media_size</A>
-<LI><A HREF="gimpprint_12.html#IDX39">stp_set_media_size_n</A>
-<LI><A HREF="gimpprint_12.html#IDX44">stp_set_media_source</A>
-<LI><A HREF="gimpprint_12.html#IDX45">stp_set_media_source_n</A>
-<LI><A HREF="gimpprint_12.html#IDX41">stp_set_media_type</A>
-<LI><A HREF="gimpprint_12.html#IDX42">stp_set_media_type_n</A>
-<LI><A HREF="gimpprint_14.html#IDX115">stp_set_option(stp_vars_t</A>
-<LI><A HREF="gimpprint_12.html#IDX55">stp_set_orientation</A>
-<LI><A HREF="gimpprint_12.html#IDX99">stp_set_outdata</A>
-<LI><A HREF="gimpprint_12.html#IDX97">stp_set_outfunc</A>
-<LI><A HREF="gimpprint_12.html#IDX71">stp_set_output_color_model</A>
-<LI><A HREF="gimpprint_12.html#IDX26">stp_set_output_to</A>
-<LI><A HREF="gimpprint_12.html#IDX27">stp_set_output_to_n</A>
-<LI><A HREF="gimpprint_12.html#IDX53">stp_set_output_type</A>
-<LI><A HREF="gimpprint_12.html#IDX67">stp_set_page_height</A>
-<LI><A HREF="gimpprint_12.html#IDX65">stp_set_page_width</A>
-<LI><A HREF="gimpprint_12.html#IDX32">stp_set_ppd_file</A>
-<LI><A HREF="gimpprint_12.html#IDX33">stp_set_ppd_file_n</A>
-<LI><A HREF="gimpprint_12.html#IDX35">stp_set_resolution</A>
-<LI><A HREF="gimpprint_12.html#IDX36">stp_set_resolution_n</A>
-<LI><A HREF="gimpprint_12.html#IDX87">stp_set_saturation</A>
-<LI><A HREF="gimpprint_12.html#IDX73">stp_set_scaling</A>
-<LI><A HREF="gimpprint_12.html#IDX59">stp_set_top</A>
-<LI><A HREF="gimpprint_12.html#IDX63">stp_set_unit</A>
-<LI><A HREF="gimpprint_12.html#IDX85">stp_set_yellow</A>
-</DIR>
-<H2>v</H2>
-<DIR>
-<LI><A HREF="gimpprint_37.html#IDX223"><CODE>VI <VAR>BC</VAR>=2 00 00</CODE></A>
-</DIR>
-
-</P>
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_45.html">previous</A>, <A HREF="gimpprint_47.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_47.html b/doc/manual-html/gimpprint_47.html
deleted file mode 100644
index 46f8520..0000000
--- a/doc/manual-html/gimpprint_47.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Concept Index</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_46.html">previous</A>, next, last section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC62" HREF="gimpprint_toc.html#TOC62">Concept Index</A></H1>
-
-<P>
-<H2>a</H2>
-<DIR>
-<LI><A HREF="gimpprint_39.html#IDX253">adding a printer</A>
-<LI><A HREF="gimpprint_24.html#IDX181">Appendices</A>
-<LI><A HREF="gimpprint_8.html#IDX9">autoconf</A>
-<LI><A HREF="gimpprint_9.html#IDX12">automake</A>
-</DIR>
-<H2>b</H2>
-<DIR>
-<LI><A HREF="gimpprint_23.html#IDX179">bugs</A>
-</DIR>
-<H2>c</H2>
-<DIR>
-<LI><A HREF="gimpprint_31.html#IDX186">collisions</A>
-<LI><A HREF="gimpprint_22.html#IDX178">CUPS driver</A>
-</DIR>
-<H2>d</H2>
-<DIR>
-<LI><A HREF="gimpprint_13.html#IDX109">dither functions</A>
-<LI><A HREF="gimpprint_25.html#IDX182">dithering</A>
-<LI><A HREF="gimpprint_41.html#IDX262">driver file</A>
-</DIR>
-<H2>e</H2>
-<DIR>
-<LI><A HREF="gimpprint_42.html#IDX263">Epson inkjet printers</A>
-<LI><A HREF="gimpprint_34.html#IDX190">ESC/P2</A>
-<LI><A HREF="gimpprint_35.html#IDX191">ESC/P2 introduction</A>
-</DIR>
-<H2>f</H2>
-<DIR>
-<LI><A HREF="gimpprint_10.html#IDX13">functions</A>
-</DIR>
-<H2>g</H2>
-<DIR>
-<LI><A HREF="gimpprint_21.html#IDX177">ghostscript driver</A>
-<LI><A HREF="gimpprint_20.html#IDX175">GIMP Print plugin</A>
-<LI><A HREF="gimpprint_6.html#IDX7">gimpprint-config</A>
-</DIR>
-<H2>h</H2>
-<DIR>
-<LI><A HREF="gimpprint_1.html#IDX3">how to read</A>
-</DIR>
-<H2>i</H2>
-<DIR>
-<LI><A HREF="gimpprint_11.html#IDX15">initialising libgimpprint</A>
-<LI><A HREF="gimpprint_5.html#IDX6">integrating</A>
-</DIR>
-<H2>m</H2>
-<DIR>
-<LI><A HREF="gimpprint_8.html#IDX10">m4 macros</A>
-<LI><A HREF="gimpprint_11.html#IDX14">main functions</A>
-<LI><A HREF="gimpprint_7.html#IDX8">make</A>
-<LI><A HREF="gimpprint_1.html#IDX2">manual, how to read</A>
-<LI><A HREF="gimpprint_11.html#IDX17">memory allocation</A>
-</DIR>
-<H2>n</H2>
-<DIR>
-<LI><A HREF="gimpprint_39.html#IDX255">new printer</A>
-</DIR>
-<H2>o</H2>
-<DIR>
-<LI><A HREF="gimpprint_14.html#IDX113">options functions</A>
-<LI><A HREF="gimpprint_33.html#IDX189">oversampling</A>
-<LI><A HREF="gimpprint_3.html#IDX4">overview</A>
-</DIR>
-<H2>p</H2>
-<DIR>
-<LI><A HREF="gimpprint_15.html#IDX124">paper functions</A>
-<LI><A HREF="gimpprint_30.html#IDX185">perfect weave</A>, <A HREF="gimpprint_32.html#IDX188">perfect weave</A>
-<LI><A HREF="gimpprint_20.html#IDX176">Print plugin</A>
-<LI><A HREF="gimpprint_16.html#IDX139">printer functions</A>
-<LI><A HREF="gimpprint_39.html#IDX254">printer, adding</A>
-<LI><A HREF="gimpprint_43.html#IDX266">printer, tuning</A>
-<LI><A HREF="gimpprint_23.html#IDX180">problems</A>
-<LI><A HREF="gimpprint_19.html#IDX174">programs</A>
-</DIR>
-<H2>r</H2>
-<DIR>
-<LI><A HREF="gimpprint_1.html#IDX1">reading</A>
-</DIR>
-<H2>s</H2>
-<DIR>
-<LI><A HREF="gimpprint_17.html#IDX153">settings functions</A>
-<LI><A HREF="gimpprint_12.html#IDX19"><CODE>stp_vars_t</CODE> functions</A>
-</DIR>
-<H2>t</H2>
-<DIR>
-<LI><A HREF="gimpprint_43.html#IDX265">tuning the printer</A>
-</DIR>
-<H2>u</H2>
-<DIR>
-<LI><A HREF="gimpprint_4.html#IDX5">using</A>
-</DIR>
-<H2>v</H2>
-<DIR>
-<LI><A HREF="gimpprint_18.html#IDX159">version functions</A>
-</DIR>
-<H2>w</H2>
-<DIR>
-<LI><A HREF="gimpprint_26.html#IDX183">weaving</A>
-<LI><A HREF="gimpprint_28.html#IDX184">weaving algorithms</A>
-<LI><A HREF="gimpprint_31.html#IDX187">weaving collisions</A>
-</DIR>
-
-</P>
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_46.html">previous</A>, next, last section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_5.html b/doc/manual-html/gimpprint_5.html
deleted file mode 100644
index 75dbead..0000000
--- a/doc/manual-html/gimpprint_5.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Integrating libgimpprint</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_4.html">previous</A>, <A HREF="gimpprint_6.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC10" HREF="gimpprint_toc.html#TOC10">3 Integrating libgimpprint</A></H1>
-<P>
-<A NAME="IDX6"></A>
-
-</P>
-<P>
-This chapter describes how to integrate the compiling and linking of
-programs using libgimpprint with build scripts. Commonly used systems include
-@command{make}, but more commonly <TT>`Makefile'</TT> files are generated by using
-tools such as @command{autoconf} and @command{automake}.
-
-</P>
-
-<UL>
-<LI><A HREF="gimpprint_6.html#SEC11">gimpprint-config</A>: Getting the correct compiler and linker flags
-<LI><A HREF="gimpprint_7.html#SEC12">make</A>: Normal makefiles
-<LI><A HREF="gimpprint_8.html#SEC13">autoconf</A>: Macro to automatically check for libgimpprint
-<LI><A HREF="gimpprint_9.html#SEC14">automake</A>: Automatically defined variables to use
-</UL>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_4.html">previous</A>, <A HREF="gimpprint_6.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_6.html b/doc/manual-html/gimpprint_6.html
deleted file mode 100644
index a0bc835..0000000
--- a/doc/manual-html/gimpprint_6.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - gimpprint-config</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_5.html">previous</A>, <A HREF="gimpprint_7.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC11" HREF="gimpprint_toc.html#TOC11">3.1 @command{gimpprint-config}</A></H2>
-<P>
-<A NAME="IDX7"></A>
-
-</P>
-<P>
-Depending on the setup of the computer system GIMP-Print was installed on, as
-well as the options passed to @command{configure} when configuring the
-package when it was built, the @env{CFLAGS} and @env{LIBS} parameters
-needed to compile and link programs with libgimpprint may vary. To make it
-simple to determine what these are on any given system, the script
-@command{gimpprint-config} was created. It's job is to output the
-correct parameters for the setup on your system. The following options
-are available:
-
-</P>
-
-<PRE>
-roger@whinlatter:~/gimpprint/devel$ gimpprint-config --help
-Usage: gimpprint-config [OPTIONS] [LIBRARIES]
-Options:
- [--prefix[=DIR]]
- [--exec-prefix[=DIR]]
- [--version]
- [--libs]
- [--cflags]
-Libraries:
- gimpprint
-</PRE>
-
-<P>
-The @option{--prefix} and @option{--exec-prefix} options are only needed if the
-installed locations of parts of GIMP-Print are different from the configured
-locations. These should never be needed if GIMP-Print was properly configured
-and installed.
-
-</P>
-<P>
-The installed version of GIMP-Print can be obtained with the
-@option{--version} option:
-
-</P>
-
-<PRE>
-roger@whinlatter:~/gimpprint/devel$ gimpprint-config --version
-4.2.7
-</PRE>
-
-<P>
-The correct @env{CFLAGS} to use can be obtained with the @option{--cflags}
-option:
-
-</P>
-
-<PRE>
-roger@whinlatter:~/gimpprint/devel$ gimpprint-config --cflags
-
-</PRE>
-
-<P>
-In this case, there are no special @env{CFLAGS} required to compile programs.
-
-</P>
-<P>
-The correct @env{LIBS} to use can the obtained with the @option{--libs} option:
-
-</P>
-
-<PRE>
-roger@whinlatter:~/gimpprint/devel$ gimpprint-config --libs
--L/usr/lib -lgimpprint -lm
-</PRE>
-
-<P>
-The command can be used from the shell by enclosing it in backquotes <SAMP>``'</SAMP>:
-
-</P>
-
-<PRE>
-gcc `gimpprint-config --cflags` -c prog.c
-gcc `gimpprint-config --libs` -o prog prog.o
-</PRE>
-
-<P>
-However, this is not the way it it typically used. Normally it is used in a
-<TT>`Makefile'</TT> (see section <A HREF="gimpprint_7.html#SEC12">3.2 @command{make}</A>) or by an @command{m4} macro in a @command{configure}
-script (see section <A HREF="gimpprint_8.html#SEC13">3.3 @command{autoconf}</A>).
-
-</P>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_5.html">previous</A>, <A HREF="gimpprint_7.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_7.html b/doc/manual-html/gimpprint_7.html
deleted file mode 100644
index 7a792c3..0000000
--- a/doc/manual-html/gimpprint_7.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - make</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_6.html">previous</A>, <A HREF="gimpprint_8.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC12" HREF="gimpprint_toc.html#TOC12">3.2 @command{make}</A></H2>
-<P>
-<A NAME="IDX8"></A>
-
-</P>
-<P>
-If you use @command{make} with your own <TT>`Makefile'</TT> files, then you are on
-your own. This manual offers no assistance with doing this. Only the following
-suggestion is offered:
-
-</P>
-
-<PRE>
-GIMPPRINT_VERSION = $(shell gimpprint-config --version)
-GIMPPRINT_CFLAGS = $(shell gimpprint-config --cflags)
-GIMPPRINT_LIBS = $(shell gimpprint-config --libs)
-</PRE>
-
-<P>
-How you choose to use these variables is entirely up to you. See Info file `make', node `Top', for more information.
-
-</P>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_6.html">previous</A>, <A HREF="gimpprint_8.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_8.html b/doc/manual-html/gimpprint_8.html
deleted file mode 100644
index e35f343..0000000
--- a/doc/manual-html/gimpprint_8.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - autoconf</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_7.html">previous</A>, <A HREF="gimpprint_9.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC13" HREF="gimpprint_toc.html#TOC13">3.3 @command{autoconf}</A></H2>
-<P>
-<A NAME="IDX9"></A>
-<A NAME="IDX10"></A>
-
-</P>
-<P>
-The @command{autoconf} program produces a Bourne shell script called
-<TT>`configure'</TT> from a template file called <TT>`configure.in'</TT>.
-<TT>`configure.in'</TT> contains both Bourne shell script, and @command{m4} macros.
-@command{autoconf} expands the @command{m4} macros into `real' shell script.
-The resulting <TT>`configure'</TT> script performs various checks for installed
-programs, compiler characteristics and other system information such as
-available headers and libraries. See Info file `autoconf', node `Top', for
-more information.
-
-</P>
-<P>
-GIMP-Print provides an @command{m4} macro, <CODE>AM_PATH_GIMPPRINT</CODE>, suitable for
-use in a <TT>`configure.in'</TT>. It defines the environment variables
-@env{GIMPPRINT_CFLAGS}, @env{GIMPPRINT_LIBS} and @env{GIMPPRINT_CONFIG}. You can
-optionally specify a minimum version of the library to use, and shell script to
-run if the test suceeds or fails.
-
-</P>
-<P>
-<DL>
-<DT><U>Macro:</U> <B>AM_PATH_GIMPPRINT</B> <I>([<VAR>minimum-version</VAR> [, <VAR>action-if-found</VAR> [, <VAR>action-if-not-found</VAR>]]])</I>
-<DD><A NAME="IDX11"></A>
-Check for an installed version of GIMP-Print greater than or equal to
-<VAR>minimum-version</VAR>.
-
-</P>
-<P>
-<VAR>action-if-found</VAR> is a list of shell commands to run if the check
-for the library succeeds; <VAR>action-if-not-found</VAR> is a list of
-shell commands to run if the check fails.
-
-</P>
-<P>
-The macro sets the following environment variables: @env{GIMPPRINT_CFLAGS},
-@env{GIMPPRINT_LIBS} and @env{GIMPPRINT_CONFIG}. It also will substitute them
-into any <TT>`Makefile.in'</TT> you specify in <CODE>AC_OUTPUT</CODE> because it calls
-<CODE>AC_SUBST</CODE> for each of them. However, you will probably be using
-@command{automake} to generate your <TT>`Makefile.in'</TT> files
-(see section <A HREF="gimpprint_9.html#SEC14">3.4 @command{automake}</A>).
-
-</P>
-</DL>
-
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_7.html">previous</A>, <A HREF="gimpprint_9.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_9.html b/doc/manual-html/gimpprint_9.html
deleted file mode 100644
index 93d7d58..0000000
--- a/doc/manual-html/gimpprint_9.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - automake</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_8.html">previous</A>, <A HREF="gimpprint_10.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H2><A NAME="SEC14" HREF="gimpprint_toc.html#TOC14">3.4 @command{automake}</A></H2>
-<P>
-<A NAME="IDX12"></A>
-
-</P>
-<P>
-The @command{automake} program can be used to generate <TT>`Makefile.in'</TT> files
-suitable for use with a <TT>`configure'</TT> script generated by
-@command{autoconf}. As @command{automake} <EM>requires</EM> @command{autoconf},
-this section will assume the use of a <TT>`configure'</TT> script which uses the
-<CODE>AM_PATH_GIMPPRINT</CODE> macro (there is little point in <EM>not</EM> using it!).
-
-</P>
-<P>
-It is highly recommeded that you use GNU @command{autoconf} and
-@command{automake}. They will allow you to make your software build on most
-platforms with most compilers. @command{automake} makes writing complex
-<TT>`Makefile'</TT> files very easy, by expressing how to build your packages
-in terms of what files are required to build a project and the installation
-locations of the files. It imposes a few limitations over using plain
-<TT>`Makefile'</TT> files, such as in the use of conditionals, but these problems
-are vastly outweighed by the benefits it brings. It also creates many extra
-targets in the generated <TT>`Makefile.in'</TT> files such as @command{dist},
-@command{distcheck}, @command{clean}, @command{distclean},
-@command{maintainer-clean} and @command{tags}, and there are many more more
-available. See Info file `automake', node `Top', for more information.
-
-</P>
-<P>
-Because <CODE>AM_PATH_GIMPPRINT</CODE> calls <CODE>AC_SUBST</CODE> to substitute
-@env{GIMPPRINT_CFLAGS}, @env{GIMPPRINT_LIBS} and @env{GIMPPRINT_CONFIG},
-@command{automake} will automatically set these variables in the
-<TT>`Makefile.in'</TT> files it generates, requiring no additional effort on
-your part!
-
-</P>
-<P>
-As in previous examples, we will make a program @command{prog} from a file <TT>`prog.c'</TT>. This is how one might build write a <TT>`Makefile.am'</TT> to do this:
-
-</P>
-
-<PRE>
-AUTOMAKE_OPTIONS = 1.4 gnu
-MAINT_CHARSET = latin1
-
-@SET_MAKE@
-
-CFLAGS = @CFLAGS@
-
-INCLUDES = @INCLUDES@ $(GIMPPRINT_CFLAGS)
-
-bin_PROGRAMS = prog
-prog_SOURCES = prog.c
-prog_LDADD = $(GIMPPRINT_LIBS)
-
-MAINTAINERCLEANFILES = Makefile.in
-</PRE>
-
-<P>
-That's all there is to it! Please note that this example also requires the
-macro <CODE>AC_PROG_MAKE_SET</CODE> to be used in <TT>`configure.in'</TT> and the use of
-<CODE>AC_SUBST</CODE> to substitute @env{CFLAGS} and @env{INCLUDES} where
-<CODE>@CFLAGS@</CODE> and <CODE>@INCLUDES@</CODE> are found in the file, respectively.
-<P><HR><P>
-Go to the <A HREF="gimpprint_1.html">first</A>, <A HREF="gimpprint_8.html">previous</A>, <A HREF="gimpprint_10.html">next</A>, <A HREF="gimpprint_47.html">last</A> section, <A HREF="gimpprint_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_foot.html b/doc/manual-html/gimpprint_foot.html
deleted file mode 100644
index 1980040..0000000
--- a/doc/manual-html/gimpprint_foot.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Footnotes</TITLE>
-</HEAD>
-<BODY>
-<H1>GIMP-Print</H1>
-<H2>The print plugin for the GIMP</H2>
-<H2>Version 4.2.7, 27 October 2001</H2>
-<ADDRESS>The GIMP-Print Project</ADDRESS>
-<P>
-<P><HR><P>
-<H3><A NAME="FOOT1" HREF="gimpprint_20.html#DOCF1">(1)</A></H3>
-<P>@uref{http://www.gimp.org
-<H3><A NAME="FOOT2" HREF="gimpprint_20.html#DOCF2">(2)</A></H3>
-<P>The output resolution of the plugin.
-<H3><A NAME="FOOT3" HREF="gimpprint_20.html#DOCF3">(3)</A></H3>
-<P>For Postscript printers.
-<H3><A NAME="FOOT4" HREF="gimpprint_20.html#DOCF4">(4)</A></H3>
-<P>Again, that's relative to the paper
-corner, not the printable area, which is usually smaller.
-<H3><A NAME="FOOT5" HREF="gimpprint_23.html#DOCF5">(5)</A></H3>
-<P>@email{gimp-print-devel@lists.sourceforge.net
-<H3><A NAME="FOOT6" HREF="gimpprint_23.html#DOCF6">(6)</A></H3>
-<P>@email{gimp-print-devel@lists.sourceforge.net
-<P><HR><P>
-This document was generated on 11 June 2004 using the
-<A HREF="http://wwwcn.cern.ch/dci/texi2html/">texi2html</A>
-translator version 1.51.</P>
-</BODY>
-</HTML>
diff --git a/doc/manual-html/gimpprint_toc.html b/doc/manual-html/gimpprint_toc.html
deleted file mode 100644
index 4c34629..0000000
--- a/doc/manual-html/gimpprint_toc.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from .././gimpprint.texi on 11 June 2004 -->
-
-<TITLE>GIMP-Print - Table of Contents</TITLE>
-</HEAD>
-<BODY>
-<H1>GIMP-Print</H1>
-<H2>The print plugin for the GIMP</H2>
-<H2>Version 4.2.7, 27 October 2001</H2>
-<ADDRESS>The GIMP-Print Project</ADDRESS>
-<P>
-<P><HR><P>
-<UL>
-<LI><A NAME="TOC1" HREF="gimpprint_1.html#SEC1">Preface</A>
-<LI><A NAME="TOC2" HREF="gimpprint_2.html#SEC2">GNU GENERAL PUBLIC LICENSE</A>
-<UL>
-<LI><A NAME="TOC3" HREF="gimpprint_2.html#SEC3">Preamble</A>
-<LI><A NAME="TOC4" HREF="gimpprint_2.html#SEC4">How to Apply These Terms to Your New Programs</A>
-</UL>
-<LI><A NAME="TOC5" HREF="gimpprint_2.html#SEC5">Copying summary</A>
-<LI><A NAME="TOC6" HREF="gimpprint_3.html#SEC6">1 Overview</A>
-<LI><A NAME="TOC7" HREF="gimpprint_4.html#SEC7">2 Using libgimpprint</A>
-<UL>
-<LI><A NAME="TOC8" HREF="gimpprint_4.html#SEC8">2.1 Code prerequisites</A>
-<LI><A NAME="TOC9" HREF="gimpprint_4.html#SEC9">2.2 Linking with libgimpprint</A>
-</UL>
-<LI><A NAME="TOC10" HREF="gimpprint_5.html#SEC10">3 Integrating libgimpprint</A>
-<UL>
-<LI><A NAME="TOC11" HREF="gimpprint_6.html#SEC11">3.1 @command{gimpprint-config}</A>
-<LI><A NAME="TOC12" HREF="gimpprint_7.html#SEC12">3.2 @command{make}</A>
-<LI><A NAME="TOC13" HREF="gimpprint_8.html#SEC13">3.3 @command{autoconf}</A>
-<LI><A NAME="TOC14" HREF="gimpprint_9.html#SEC14">3.4 @command{automake}</A>
-</UL>
-<LI><A NAME="TOC15" HREF="gimpprint_10.html#SEC15">4 Functions</A>
-<UL>
-<LI><A NAME="TOC16" HREF="gimpprint_11.html#SEC16">4.1 Main functions</A>
-<LI><A NAME="TOC17" HREF="gimpprint_12.html#SEC17">4.2 <CODE>stp_vars_t</CODE> functions</A>
-<LI><A NAME="TOC18" HREF="gimpprint_13.html#SEC18">4.3 Dither functions</A>
-<LI><A NAME="TOC19" HREF="gimpprint_14.html#SEC19">4.4 Options functions</A>
-<LI><A NAME="TOC20" HREF="gimpprint_15.html#SEC20">4.5 Paper functions</A>
-<LI><A NAME="TOC21" HREF="gimpprint_16.html#SEC21">4.6 Printer functions</A>
-<LI><A NAME="TOC22" HREF="gimpprint_17.html#SEC22">4.7 Settings functions</A>
-<LI><A NAME="TOC23" HREF="gimpprint_18.html#SEC23">4.8 Version functions</A>
-<UL>
-<LI><A NAME="TOC24" HREF="gimpprint_18.html#SEC24">4.8.1 Version macros</A>
-<LI><A NAME="TOC25" HREF="gimpprint_18.html#SEC25">4.8.2 Version variables</A>
-</UL>
-</UL>
-<LI><A NAME="TOC26" HREF="gimpprint_19.html#SEC26">5 Programs</A>
-<UL>
-<LI><A NAME="TOC27" HREF="gimpprint_20.html#SEC27">5.1 The GIMP Print plugin</A>
-<UL>
-<LI><A NAME="TOC28" HREF="gimpprint_20.html#SEC28">5.1.1 Preview</A>
-<LI><A NAME="TOC29" HREF="gimpprint_20.html#SEC29">5.1.2 Printer Settings</A>
-<LI><A NAME="TOC30" HREF="gimpprint_20.html#SEC30">5.1.3 Position</A>
-<LI><A NAME="TOC31" HREF="gimpprint_20.html#SEC31">5.1.4 Scaling</A>
-<LI><A NAME="TOC32" HREF="gimpprint_20.html#SEC32">5.1.5 Image Settings</A>
-<UL>
-<LI><A NAME="TOC33" HREF="gimpprint_20.html#SEC33">5.1.5.1 Adjust Output</A>
-<LI><A NAME="TOC34" HREF="gimpprint_20.html#SEC34">5.1.5.2 Dither Algorithm</A>
-</UL>
-<LI><A NAME="TOC35" HREF="gimpprint_20.html#SEC35">5.1.6 Action Buttons</A>
-</UL>
-<LI><A NAME="TOC36" HREF="gimpprint_21.html#SEC36">5.2 Ghostscript driver</A>
-<LI><A NAME="TOC37" HREF="gimpprint_22.html#SEC37">5.3 CUPS driver</A>
-</UL>
-<LI><A NAME="TOC38" HREF="gimpprint_23.html#SEC38">6 Reporting Bugs</A>
-<LI><A NAME="TOC39" HREF="gimpprint_24.html#SEC39">7 Appendices</A>
-<LI><A NAME="TOC40" HREF="gimpprint_25.html#SEC40">A Dithering</A>
-<LI><A NAME="TOC41" HREF="gimpprint_26.html#SEC41">B Weaving for inkjet printers</A>
-<UL>
-<LI><A NAME="TOC42" HREF="gimpprint_27.html#SEC42">B.1 Introduction</A>
-<LI><A NAME="TOC43" HREF="gimpprint_28.html#SEC43">B.2 Weaving algorithms</A>
-<UL>
-<LI><A NAME="TOC44" HREF="gimpprint_29.html#SEC44">B.2.1 Simple weaving algorithms</A>
-<LI><A NAME="TOC45" HREF="gimpprint_30.html#SEC45">B.2.2 Perfect weaving</A>
-<LI><A NAME="TOC46" HREF="gimpprint_31.html#SEC46">B.2.3 Weaving collisions</A>
-<LI><A NAME="TOC47" HREF="gimpprint_32.html#SEC47">B.2.4 What makes a "perfect" weave?</A>
-<LI><A NAME="TOC48" HREF="gimpprint_33.html#SEC48">B.2.5 Oversampling</A>
-</UL>
-</UL>
-<LI><A NAME="TOC49" HREF="gimpprint_34.html#SEC49">C ESC/P2</A>
-<UL>
-<LI><A NAME="TOC50" HREF="gimpprint_35.html#SEC50">C.1 Introduction to ESC/P2</A>
-<LI><A NAME="TOC51" HREF="gimpprint_36.html#SEC51">C.2 Standard commands</A>
-<LI><A NAME="TOC52" HREF="gimpprint_37.html#SEC52">C.3 Remote Mode Commands</A>
-<LI><A NAME="TOC53" HREF="gimpprint_38.html#SEC53">C.4 Appropriate Remote Commands</A>
-</UL>
-<LI><A NAME="TOC54" HREF="gimpprint_39.html#SEC54">D Adding a new printer</A>
-<UL>
-<LI><A NAME="TOC55" HREF="gimpprint_40.html#SEC55">D.1 <TT>`printers.xml'</TT></A>
-<LI><A NAME="TOC56" HREF="gimpprint_41.html#SEC56">D.2 The driver file</A>
-<LI><A NAME="TOC57" HREF="gimpprint_42.html#SEC57">D.3 Epson inkjet printers</A>
-<LI><A NAME="TOC58" HREF="gimpprint_43.html#SEC58">D.4 Tuning the printer</A>
-<LI><A NAME="TOC59" HREF="gimpprint_44.html#SEC59">D.5 Canon inkjet printers</A>
-</UL>
-<LI><A NAME="TOC60" HREF="gimpprint_45.html#SEC60">Data Type and Variable Index</A>
-<LI><A NAME="TOC61" HREF="gimpprint_46.html#SEC61">Function and Macro Index</A>
-<LI><A NAME="TOC62" HREF="gimpprint_47.html#SEC62">Concept Index</A>
-</UL>
-<P><HR><P>
-This document was generated on 11 June 2004 using the
-<A HREF="http://wwwcn.cern.ch/dci/texi2html/">texi2html</A>
-translator version 1.51.</P>
-</BODY>
-</HTML>
diff --git a/doc/manual-html/print-color.png b/doc/manual-html/print-color.png
deleted file mode 100644
index db1af3f..0000000
--- a/doc/manual-html/print-color.png
+++ /dev/null
Binary files differ
diff --git a/doc/manual-html/print-main.png b/doc/manual-html/print-main.png
deleted file mode 100644
index 2d78222..0000000
--- a/doc/manual-html/print-main.png
+++ /dev/null
Binary files differ
diff --git a/doc/manual-html/print-setup.png b/doc/manual-html/print-setup.png
deleted file mode 100644
index 904e03b..0000000
--- a/doc/manual-html/print-setup.png
+++ /dev/null
Binary files differ
diff --git a/doc/new-printer.texi b/doc/new-printer.texi
deleted file mode 100644
index 8ab4f2e..0000000
--- a/doc/new-printer.texi
+++ /dev/null
@@ -1,707 +0,0 @@
-@node New Printer, ,ESC/P2, Appendices
-@appendix Adding a new printer
-@cindex adding a printer
-@cindex printer, adding
-@cindex new printer
-
-
-This appendix covers adding a new ESCP/2, PCL, or Canon printer.
-Writing a new driver module is not covered.
-
-The three steps to adding a printer are:
-
-@enumerate
-@item Add an entry to @file{printers.xml}
-@item Add the appropriate code and data to the appropriate driver module
-@item Tune the printer
-@end enumerate
-
-Printer information is stored in two places: in @file{printers.xml}
-(which contains the list of printer models available to the the
-upper-level application), and in the appropriate driver file
-(@file{print-escp2.c}, @file{print-pcl.c}, or @file{print-canon.c}).
-
-@menu
-* printers.xml:: File format description.
-* Driver file:: Data structures to use.
-* Epson inkjet printers:: Adding an Epson printer.
-* Tuning Epson printers:: Tweaking settings.
-* Canon inkjet printers:: Adding a Canon printer.
-@end menu
-
-@node printers.xml, Driver file, , New Printer
-@appendixsection @file{printers.xml}
-
-@file{printers.xml} is an XML-like file (there's no formal DTD) that
-contains very simple printer definitions. A typical definition follows:
-
-@example
-<printer name="EPSON Stylus Color 1500" driver="escp2-1500">
-<color>
-<model value=2>
-<gamma value=0.597>
-<density value=1.0>
-<language value=escp2>
-</printer>
-@end example
-
-There are other tags that may be present. The only ones that are
-mandatory are @samp{<printer>}, @samp{<color>}, @samp{<model>}, and
-@samp{<language>}. The other optional parameters (gamma and density in
-this case) can be used to adjust control settings. This is probably not
-the right place for them; the printer drivers themselves should contain
-this information. There's probably no good reason for anything but
-gamma and density to be in here. Gamma refers to the printer's gamma
-factor; density is the desired base ink density for the printer. The
-Epson driver contains the density information for each printer at each
-resolution internally. An even better driver would adjust density and
-possibly even gamma for paper type. All the more reason not to have
-that information here.
-
-If you really are curious about what tags are permitted, please see
-@file{printdefl.l}. I deliberately want to make this obscure.
-
-Anyway, here's the definition of the tags that do matter:
-
-@deffn {@file{printers.xml} tag} @code{<printer name="@var{longname}" driver="@var{drivername}">}
-This starts the definition of a printer. The @var{longname} should be
-something human readable; the @var{drivername} should consist of
-alphanumerics and hyphens, and be fairly short. The @var{longname} is
-what will appear in the GUI listing of printers; the @var{drivername} is
-what is actually used to key into the list of printers. It is legal to
-have multiple printers with the same driver name.
-@end deffn
-
-@deffn {@file{printers.xml} tag} @code{<color>}
-@deffnx {@file{printers.xml} tag} @code{<nocolor>}
-Indicates that this printer is capable of color, or is not capable of
-color respectively
-@end deffn
-
-@deffn {@file{printers.xml} tag} @code{<model value=@var{int}>}
-This defines a model number. This is passed into the driver, which may
-do whatever it cares to with it---index into a table, compute on, or
-whatever. This need not be unique.
-@end deffn
-
-@deffn {@file{printers.xml} tag} @code{<language value=@var{type}>}
-This defines what driver module this printer uses. @var{type} should be
-@samp{escp2}, @samp{pcl}, @samp{canon}, or @samp{ps}.
-@end deffn
-
-@deffn {@file{printers.xml} tag} @code{</printer>}
-This, of course, closes off a printer definition.
-@end deffn
-
-This is handled very ad-hoc. It's ugly. But it's reasonably easy to
-extend, and it's buzzword-compliant.
-
-
-@node Driver file, Epson inkjet printers, printers.xml, New Printer
-@appendixsection The driver file
-@cindex driver file
-
-Adding a new printer to a driver module (@file{print-escp2.c},
-@file{print-pcl.c}, or @file{print-canon.c}---@file{print-ps.c} is
-really ad hoc) requires a bit more planning. Each driver is somewhat
-different, but they all generally have a vector of printer definitions,
-and the code does some special casing based on particular printer
-capabilities. The PCL and Canon drivers are quite similar; the Canon
-driver was actually cribbed from the PCL driver, but it then returned
-the favor.
-
-The Epson driver is a little bit different. Canon and PCL printers
-have some amount of intelligence; a lot of them have specific ink
-options, and know about specific paper sizes and types, and must be
-told the right thing. Epson printers have somewhat less intelligence
-and will more or less do exactly what the host tells it to do in a
-fairly regular fashion. I actually prefer this; it isn't materially
-more work for the host to compute things like exact paper sizes and
-such, it allows a lot more tweaking, and it may be why Epson has been
-more open with information -- the communication protocol doesn't
-really contain very much IP, so they have less reason to keep it
-secret.
-
-Someone else will have to fill in the sections about PCL and Canon
-printers.
-
-
-@node Epson inkjet printers, Tuning Epson printers, Driver file, New Printer
-@appendixsection Epson inkjet printers
-@cindex Epson inkjet printers
-
-The @samp{model_capabilities} vector in @file{print-escp2.c} contains
-one entry for each defined printer model. The @samp{model} parameter in
-@file{printers.xml} is an index into this table.
-
-In general, the new printers have fewer eccentricities than the older
-printers. That doesn't mean they're simpler, just that they're more
-consistent.
-
-An @code{escp2_printer_t} is a C struct defined as follows:
-
-@deftypevr {Data type} {} escp2_printer_t
-@example
-typedef struct escp2_printer
-@{
- model_cap_t flags; /* Bitmask of flags, see below */
-/*****************************************************************************/
- int nozzles; /* Number of nozzles per color */
- int min_nozzles; /* Minimum number of nozzles per color */
- int nozzle_separation; /* Separation between rows, in 1/360" */
- int black_nozzles; /* Number of black nozzles (may be extra) */
- int min_black_nozzles; /* # of black nozzles (may be extra) */
- int black_nozzle_separation; /* Separation between rows */
- int fast_nozzles; /* Number of fast nozzles */
- int min_fast_nozzles; /* # of fast nozzles (may be extra) */
- int fast_nozzle_separation; /* Separation between rows */
-/*****************************************************************************/
- int xres; /* Normal distance between dots in */
- /* softweave mode (inverse inches) */
- int enhanced_xres; /* Distance between dots in highest */
- /* quality modes */
- int base_separation; /* Basic unit of row separation */
- int base_resolution; /* Base hardware spacing (above this */
- /* always requires multiple passes) */
- int enhanced_resolution;/* Above this we use the */
- /* enhanced_xres rather than xres */
- int resolution_scale; /* Scaling factor for ESC(D command */
- int max_black_resolution; /* Above this resolution, we */
- /* must use color parameters */
- /* rather than (faster) black */
- /* only parameters*/
- int max_hres;
- int max_vres;
- int min_hres;
- int min_vres;
-/*****************************************************************************/
- int max_paper_width; /* Maximum paper width, in points */
- int max_paper_height; /* Maximum paper height, in points */
- int min_paper_width; /* Maximum paper width, in points */
- int min_paper_height; /* Maximum paper height, in points */
- /* Printer interleave: */
- int m_left_margin; /* Left margin, points */
- int m_right_margin; /* Right margin, points */
- int m_top_margin; /* Absolute top margin, points */
- int m_bottom_margin; /* Absolute bottom margin, points */
- /* ROLL FEED: */
- /* Softweave: */
- int roll_left_margin; /* Left margin, points */
- int roll_right_margin; /* Right margin, points */
- int roll_top_margin; /* Absolute top margin, points */
- int roll_bottom_margin; /* Absolute bottom margin, points */
- /* Printer interleave: */
- int m_roll_left_margin; /* Left margin, points */
- int m_roll_right_margin; /* Right margin, points */
- int m_roll_top_margin; /* Absolute top margin, points */
- int m_roll_bottom_margin; /* Absolute bottom margin, points */
-/*****************************************************************************/
- int extra_feed; /* Extra distance the paper can be spaced */
- /* beyond the bottom margin, in 1/360". */
- /* (maximum useful value is */
- /* nozzles * nozzle_separation) */
- int separation_rows; /* Some printers require funky spacing */
- /* arguments in interleave mode. */
- int pseudo_separation_rows;/* Some printers require funky */
- /* spacing arguments in softweave mode */
-
- int zero_margin_offset; /* Offset to use to achieve */
- /* zero-margin printing */
- int initial_vertical_offset;
- int black_initial_vertical_offset;
- int extra_720dpi_separation;
-
-/*****************************************************************************/
- const int *dot_sizes; /* Vector of dot sizes for resolutions */
- const double *densities; /* List of densities for each printer */
- const escp2_variable_inklist_t *inks; /* Choices of inks for this printer */
-/*****************************************************************************/
- const paperlist_t *paperlist;
- const res_t *reslist;
- const inklist_t *inklist;
-/*****************************************************************************/
- const int *bits;
- const int *base_resolutions;
- const input_slot_list_t *input_slots;
-/*****************************************************************************/
- const init_sequence_t *preinit_sequence;
- const init_sequence_t *postinit_remote_sequence;
-@} escp2_printer_t;
-@end example
-@end deftypevr
-
-The printer definition block is divided into 8 sections. The first
-section is a set of miscellaneous printer options. These are
-described in the code, and will not be discussed further here.
-
-
-The second section describes the number of nozzles and the separation
-between nozzles in base units. The base unit is 1/360" for all
-currently supported printers, but future printers may support a
-smaller base unit.
-
-Many printers have more black nozzles than nozzles of other colors,
-and when used in black and white mode, it's possible to use these
-extra nozzles, which speeds up printing. As an example, a printer
-that is specified to have 48 cyan, magenta, and yellow nozzles, and
-144 black nozzles, can use all 144 black nozzles when printing black
-ink only. When printing in color, only 48 nozzles of each color
-(including black) can be used.
-
-Most printers can print using either the number of nozzles available
-or any smaller number. Some printers require that all of the nozzles
-be used. Those printers will set @code{min_nozzles} and/or
-@code{min_black_nozzles} to the same value as @code{nozzles} and/or
-@code{black_nozzles}.
-
-
-The third section defines basic units of measure for the printer,
-including the standard separation between dots, the base nozzle
-separation, and the minimum and maximum printing resolutions the
-printer supports. Most of these are fairly self-explanatory, but some
-are not obvious.
-
-Most Epson printers, other than the high-end Stylus Pro models, cannot
-print dots spaced more closely than 1/360" or 1/720" apart (this is
-the setting for @code{xres}. This is true even for printers that
-support resolutions of 1440 or 2880 DPI. In these cases, the data
-must be printed in 2, 4, or 8 passes. While the printer can position
-the head to a resolution of 1/1440" or 1/2880", the head cannot
-deposit ink that frequently.
-
-Some printers can only print in their very best quality (using the
-smallest dots available) printing at a lower resolution. For example,
-the Stylus Photo EX can normally print with a dot spacing of 1/720".
-The smallest dot size cannot be printed with a dot spacing of less
-than 1/360", however. In this case, we use @code{enhanced_xres}
-to specify the resolution to be used in this enhanced mode, and
-@code{enhanced_resolution} to specify the printing resolution above
-which we use the @code{enhanced_xres}.
-
-The @code{resolution_scale} command is used to specify scaling factors
-for the dot separation on newer printers. It should always be 14400
-with current printers.
-
-
-The fourth section specifies the minimum and maximum paper sizes, and
-the margins. Some printers allow use of narrower margins when
-softweave is used; both sets of margins are specified.
-
-There is a convenient @samp{INCH} macro defined to make specification of
-the @code{max_paper_width} and @code{max_paper_height} more legible. It
-multiplies 72 by the provided expression to get the appropriate number
-of points. For example, to specify 8.5", @samp{INCH(17/2)} expands to
-@samp{(72 * 17/2)}, which is evaluated left to right, and hence
-generates the correct value.
-
-
-The fifth section specifies some miscellaneous values that are
-required for certain printers. For most printers, the correct values
-are 1 for @code{separation_rows} and 0 for the others. Very, very few
-printers require (or allow) @code{separation_rows} to be anything but
-1 and @code{pseudo_separation_rows} other than zero. The Stylus Color
-1520, Stylus Color 800, Stylus Color 850, and (strangely enough to my
-mind, since it's a new printer) Stylus Color 660 seem to be the only
-exceptions.
-
-The @code{zero_margin_offset} is used to specify an additional
-negative horizontal offset required to print to the edges of the paper
-on newer Stylus Photo printers. These must be determined empirically;
-good starting values are 100 for 1440 DPI and 50 for 2880 DPI
-printers. The goal is to print to the edge of the page, but not over
-it.
-
-
-The sixth section specifies head offsets for printers that do not have
-the color jets aligned. Certain printers, such as the Stylus Color
-480, have an unusual head arrangement whereby instead of all of the
-colors being aligned vertically, the nozzles are configured in
-groups. These printers are easy to determine; if the normal head
-offset of zero for each color is used, the printing will be vertically
-out of alignment. Most of these printers require specification of a
-negative offset for printing to the top edge of the paper; typically
-these printers do not require such an offset when printing black only.
-
-The seventh section specifies the most difficult values to tune, the
-dot sizes, printing densities, and ink values (for variable dot size
-enabled printers). These will be described in detail below.
-
-
-The last section specifies luminosity, hue, and saturation adjustment
-vectors for the printer, and the paper definitions. These are used to
-adjust the color in Photograph and Solid Colors output modes. These are
-each vectors of 48 (actually 49, as the first value must be duplicated)
-doubles that remap the luminosity, hue, and saturation respectively.
-The hue is calculated, and the value used to interpolate between the two
-closest points in each vector.
-
-The paper definitions is a set of paper definitions. The paper
-definition contains the name of the paper type, special settings that
-are required for printers to process the paper correctly, and a set of
-adjustment values. These are not currently discussed here.
-
-
-The lists of dot sizes and densities contain values for 13 printing
-modes: 120/180 DPI using printer weaving (single row;
-referred to as ``interleave'') and ``soft'' weaving (the driver
-determines the exact pattern of dot layout), 360 DPI interleave and
-softweave, 720x360 DPI interleave and softweave, 720 DPI interleave
-and softweave, 1440x720 interleave and softweave, 2880x720 interleave
-and softweave, and 2880x1440 softweave only.
-
-For the dot sizes, the value for each element in the vector selects
-the dot size to be used when printing at this (or similar)
-resolution. The dot sizes are determined by consulting the
-programming manual for the printer and experimenting as described
-below. Current Epson printers always use dot sizes less than
-@samp{16}, or @samp{0x10}, to indicate single dot size (each dot is
-represented by 1 bit, and it's either printed or not), and dot sizes
-of @samp{16} or greater to indicate variable dot size (each dot is
-represented by 2 bits, and it can either be not printed or take on 2
-or 3 values, representing the relative size of the printed dot).
-Variable dot sizes permit the use of very small dots (which would be
-too small to fill the page and produce solid black) in light areas,
-while allowing the page to be filled with larger dots in darker areas.
-
-Even single dot size printers can usually produce dots of different
-sizes; it's just illegal to actually try to switch dot size during a
-page. These dots are also much bigger than those used in true
-variable dot size printing.
-
-A dot size of @samp{-1} indicates that this resolution is illegal for
-the printer in question. Any resolutions that would use this dot size
-will not be presented to the user. A dot size of @samp{-2} indicates
-that this resolution is legal, but that the driver is not to attempt
-to set any dot size. Some very old printers do not support the
-command to set the dot size.
-
-Most printers support a dot size of @samp{0} as a mode-specific default,
-but it's often a bigger dot than necessary. Printers usually also
-support some dot sizes between @samp{1} and @samp{3}. Usually @samp{1}
-is the right dot size for 720 and 1440 dpi printing, and @samp{3} works
-best at 360 dpi.
-
-Variable dot size printers usually support 2 or 3 sets of variable dot
-sizes. Older printers based on a 6 picolitre drop (the 480, 720, 740,
-750, 900, and 1200) support two: mode 16 (0x10 in hexadecimal) for
-normal variable dots at 1440 or 720 dpi, and mode 17 (0x10) for
-special larger dots at 360 dpi. Newer printers based on 4 picolitre
-drops normally support three sizes: @samp{0x10} for 4 pl base drops,
-@samp{0x11} for 6 pl base drops, and @samp{0x12} for special large
-drops. On these printers, @samp{0x10} usually works best at 1440x720
-and @samp{0x11} works best at 720x720. Unfortunately, @samp{0x10}
-doesn't seem to generate quite enough density at 720x720, because if
-it did the output would be very smooth. Perhaps it's possible to
-tweak things@enddots{}
-
-
-The list of densities is a list of base density values for all of the
-above listed modes. ``Density'' refers to the amount of ink deposited
-when a solid color (or solid black) is printed. So if the density is
-@samp{.5}, solid black actually prints only half the possible dots.
-``Base density'' refers to the fact that the density value can be
-scaled in the GUI or on the Ghostscript command line. The density
-value specified (which is not made visible to the user) is multiplied
-by the base density to obtain the effective density value. All other
-things (such as ink drop size) remaining the same, doubling the
-resolution requires halving the base density. The base density in the
-density vector may exceed @samp{1}, as many paper types require lower
-density than the base driver. The driver ensures that the actual
-density never exceeds 1.
-
-Tuning the density should be done on high quality paper (usually
-glossy photo paper). The goal is to find the lowest density value
-that results in solid black (no visible gaps under a fairly high power
-magnifying glass or loupe). If an appropriate density value is found
-for 720 DPI, it could be divided by 2 for 1440x720, by 4 for 2880x720,
-and by 8 for 2880x1440.
-
-However, for printers that offer a choice of dot size, this may not be
-the best strategy. The best choice for dot size is the smallest dot
-size that allows choosing a density value not greater than 1 that
-gives full coverage. This dot size may be different for different
-resolutions. Tuning variable dot size printers is more complicated;
-the process is described below.
-
-The last member is a pointer to a structure containing a list of ink
-values for variable dot size (or 6 color) inks. We model variable dot
-size inks as producing a certain "value" of ink for each available dot
-size, where the largest dot size has a value of 1. 6-color inks are
-handled similarly; the light cyan and light magenta inks are treated
-as a fractional ink value. The combination of variable dot size and 6
-color inks, of course, just creates that many more different ink
-choices.
-
-This structure is actually rather complicated; it contains entries for
-each combination of physical printer resolution (180, 360, 720, and
-1440 dpi), ink colors (4, 6, and 7), and single and variable dot sizes
-(since some printer modes can't handle variable dot size inks). Since
-there's so much data, it's actually a somewhat deeply nested
-structure:
-
-An @code{escp2_printer_t} contains a pointer (essentially, a reference
-rather than a copy) to an @code{escp2_variable_inklist_t}.
-
-An @code{escp2_variable_inklist_t} contains pointers to
-@code{escp2_variable_inkset_t} structures. There is one such pointer
-for each combination of resolution, dot type, and ink colors as
-described above. Yes, this is rather inflexible.
-
-An @code{escp2_variable_inkset_t} contains pointers to
-@code{escp2_variable_ink_t} structures. There is one such pointer for
-each of the four colors (C, M, Y, and K).
-
-An @code{escp2_variable_ink_t} contains a pointer to the actual list of
-ink values (@code{simple_dither_range_t}), the number of ink values, and
-a density value to be used for computing the transitions. This density
-value is actually a scaling value; it is multiplied by the effective
-density to compute the density to be used for computing the transitions.
-Normally, this value is @samp{1}, but in some cases it may be possible
-to get smoother results with a different value (in particular, the
-single dot size 6-color inks work best with the effective density scaled
-to @samp{.75} for this purpose). A lower density lowers the transition
-points, which results in more ink being deposited.
-
-A @code{simple_dither_range_t} is a structure containing four values:
-
-@enumerate
-@item The value of the particular ink
-@item The bit pattern used to represent the ink
-@item Whether the ink is light (0) or dark (1), for inks with light and dark variants
-@item The relative amount of ink actually deposited by this dot (not
-currently used for much; it can be used for ink reduction purposes, to
-reduce the amount of ink deposited on the paper).
-@end enumerate
-
-These things are interesting as arrays. From an array of
-@code{simple_dither_range_t}'s, the dither code computes transition
-values that it looks up at run time to decide what ink to print, as well
-as whether to print at all.
-
-@strong{Really} confused now? Yup. You'll probably find it easier to
-simply read the code.
-
-
-@node Tuning Epson printers, Canon inkjet printers, Epson inkjet printers, New Printer
-@appendixsection Tuning the printer
-@cindex tuning the printer
-@cindex printer, tuning
-
-Now, how do you use all this to tune a printer? There are a number of
-ways to do it; this one is my personal favorite.
-
-There's a file named @file{cyan-sweep.tif}. This consists of a thin bar
-of cyan sweeping from white to almost pure cyan, and from pure cyan to
-black. The first thing to do is to pick the appropriate
-@code{simple_dither_range_t} (or create a whole new
-@code{escp2_variable_inklist_t}) and comment out all but the darkest ink
-(this means you'll be using the largest dots of dark ink). At 8.5"
-width (the width of a letter-size piece of paper), the bar will be 1/8"
-high. Printing it on wider or narrower paper will change the height
-accordingly. Print it width-wise across a piece of photo quality paper
-in line art mode using ordered or adaptive hybrid dither. Do not use
-photographic mode; the colors in photographic mode vary non-linearly
-depending upon the presence of the three color components, while in line
-art mode the colors are much purer. Make sure that all the color
-adjustments are set to defaults (1.0). Use the highest quality version
-of the print mode you're testing to reduce banding and other artifacts.
-This is much easier to do with the Gimp than with Ghostscript.
-
-At this stage, you want to look for four things:
-
-@enumerate
-@item
-The black near the center of the line is solid, but not more so than
-that.
-
-@item
-The cyan immediately to the left of the black is @emph{almost} solid.
-
-@item
-The dark cyan at the far right of the page is solid, but not more so.
-You can try tuning the density so that it isn't quite solid, then
-nudging up the density until it is.
-
-@item
-Both sweeps sweep smoothly from light to dark. In particular, the dark
-half of the bar shouldn't visibly change color; it should go smoothly
-from cyan to black.
-@end enumerate
-
-Repeat this stage until you have everything just right. Use the
-positioning entry boxes in the dialog to position each bar exactly
-1/8" further down the page. Adjacent bars will be touching.
-
-The next step is to uncomment out the second darkest dot size. If
-you're using variable dots, use the second largest dot size of the
-dark ink rather than the largest dot size of the light ink. This will
-give you two inks.
-
-When you recompile the plugin, you simply need to copy the new
-executable into the correct place. You do not need to exit and
-restart the Gimp.
-
-Print another bar adjacent to the first one. Your goal is to match
-the bar using a single dot size as closely as possible. You'll find
-that the dark region of the bar shouldn't change to any great degree,
-but the light half probably will. If the lighter part of the light
-half is too dark, you need to increase the value of the smaller dot;
-if it's too light, you need to decrease the value. The reasoning is
-that if the value is too low, the ink isn't being given enough credit
-for its contribution to the darkness of the ink, and vice versa.
-Repeat until you have a good match. Make sure you let the ink dry
-fully, which will take a few minutes. Wet ink will look too dark.
-Don't look at the paper too closely; hold it at a distance. The extra
-graininess of the largest dot size will probably make it look lighter
-than it should; if you hold it far enough away so that you can't see
-the dots, you'll get a more accurate picture of what's going on.
-
-After you have what looks like a good match, print another bar using
-only the largest dot size (or dark ink, for single dot size 6-color
-printers). You want to ensure that the bars touching each other look
-identical, or as close as possible to it; your eye won't give you a
-good reading if the bars are separated from each other. You'll
-probably have to repeat the procedure.
-
-The next step is to comment out all but the largest and third-largest
-dot size, and repeat the procedure. When they match, use all three
-dot sizes of dark ink. Again, the goal is to match the single dot
-size.
-
-You'll probably find the match is imperfect. Now you have to figure
-out what region isn't right, which takes some experimentation. Even
-small adjustments can make a noticeable difference in what you see.
-At this stage, it's very important to hold the page far enough from
-your eye; when you use all three dot sizes, the texture will be much
-more even, which sometimes makes it look darker and sometimes lighter.
-
-After this is calibrated, it's time to calibrate the light ink against
-the dark ink. To do this, comment out all but the large dot version
-of the two inks, and repeat the procedure. This is trickier, because
-the hues of the inks might not be quite identical. Look at the dark
-half of the bar as well as the light half to see that the hue really
-doesn't change as you sweep from cyan to black. Sometimes it's easier
-to judge that way. You may find that it looks blotchy, in which case
-you should switch from ordered dither to adaptive hybrid.
-
-After you have the light and dark inks calibrated against each other,
-it's time to add everything back in. Usually you don't want to use
-the largest dot size of light ink. These dots will be much larger
-than the small dots of dark ink, but they'll still be lighter. This
-will cause problems when printing mixed colors, since you'll be
-depositing more ink on lighter regions of the page, and you'll
-probably get strange color casts that you can't get rid of in neutral
-tones. I normally use only the smallest one or two dot sizes of light
-ink.
-
-After you've tweaked everything, print the color bar with saturation
-set to zero. This will print neutral tones using color inks. Your
-goal here is to look for neutral tonality. If you're using a 6-color
-printer and get a yellow cast, it means that the values for your light
-inks are too high (remember, that means they're getting too much
-credit, so you're not depositing enough cyan and magenta ink, and the
-yellow dominates). If you get a bluish or bluish-purple cast, your
-light inks are too low (you're not giving them enough credit, so too
-much cyan and magenta is deposited, which overwhelms the yellow).
-Make sure you do this on very white, very high grade inkjet paper
-that's designed for 1440x720 dpi or higher; otherwise the ink will
-spread on contact and you'll get values that aren't really true for
-high grade paper. You can, of course, calibrate for low grade paper
-if that's what you're going to use, but that shouldn't be put into the
-distribution.
-
-You can also fully desaturate this bar inside the Gimp and print it as
-monochrome (don't print the cyan as monochrome; the driver does funny
-things with luminance), for comparison. You'll find it very hard to
-get rid of all color casts.
-
-There are other ways of tuning printers, but this one works pretty
-well for me.
-
-
-@node Canon inkjet printers, , Tuning Epson printers, New Printer
-@appendixsection Canon inkjet printers
-
-Basically, a new Canon printer can be added to @file{print-canon.c} in a
-similar way as described above for the epson inkjet printers. The main
-differences are noted here:
-
-In general, Canon printers have more ``built-in intelligence'' than Epson
-printers which results in the fact that the driver only has to tell the
-printing conditions like resolutions, dot sizes, etc. to the printer and
-afterwards transfer the raster data line by line for each color used.
-
-@code{canon_cap_t} is a C struct defined as follows:
-
-@deftypevr {Data type} {} canon_cap_t
-@example
-typedef struct canon_caps @{
- int model; /* model number as used in printers.xml */
- int max_width; /* maximum printable paper size */
- int max_height;
- int base_res; /* base resolution - shall be 150 or 180 */
- int max_xdpi; /* maximum horizontal resolution */
- int max_ydpi; /* maximum vertical resolution */
- int max_quality;
- int border_left; /* left margin, points */
- int border_right; /* right margin, points */
- int border_top; /* absolute top margin, points */
- int border_bottom; /* absolute bottom margin, points */
- int inks; /* installable cartridges (CANON_INK_*) */
- int slots; /* available paperslots */
- int features; /* special bjl settings */
- canon_dot_size_t dot_sizes; /* Vector of dot sizes for resolutions */
- canon_densities_t densities; /* List of densities for each printer */
- canon_variable_inklist_t *inxs; /* Choices of inks for this printer */
-@} canon_cap_t;
-@end example
-@end deftypevr
-
-Since there are Canon printers which print in resolutions of
-@math{2^n*150} dpi (e.g. 300, 600, 1200) and others which support
-resolutions of @math{2^n*180} dpi (e.g. 360, 720, 1440), there's a base
-resolution (150 or 180, respectively) given in the
-@code{canon_cap_t}. The structs @code{canon_dot_size_t},
-@code{canon_densities_t} and @code{canon_variable_inklist_t} refer to
-resolutions being multiples of the base resolution.
-
-For the Canon driver, the struct @code{canon_dot_size_t} holds values
-for a model's capabilities at a given resolution: @samp{-1} if the
-resolution is not supported. @samp{0} if it can be used and @samp{1} if
-the resolution can be used for variable dot size printing.
-
-In @code{canon_densities_t} the base densities for each resolution can
-be specified like for an epson printer, the same holds true for
-@code{canon_variable_inklist_t}. See the descriptions above to learn
-about how to adjust your model's output to yield nice results.
-
-There's a slight difference though in the way the Canon driver and the escp2
-driver define their variable inklists: In the Canon driver, you need to define
-an inklist like this:
-
-@example
-static const canon_variable_inklist_t canon_ink_myinks[] =
-@{
- @{
- 1,4, /* 1bit/pixel, 4 colors */
- &ci_CMYK_1, &ci_CMYK_1, &ci_CMYK_1,
- &ci_CMYK_1, &ci_CMYK_1, &ci_CMYK_1,
- @},
- @{
- 3,4, /* 3bit/pixel, 4 colors */
- &ci_CMYK_3, &ci_CMYK_3, &ci_CMYK_3,
- &ci_CMYK_3, &ci_CMYK_3, &ci_CMYK_3,
- @},
-@};
-@end example
-
-@noindent
-where the @samp{&ci_CMYK_1} and @samp{&ci_CMYK_3} entries are references
-to a previously defined const of type @code{canon_variable_inkset_t}.
-
-
-
-
-
-
-
diff --git a/doc/overview.texi b/doc/overview.texi
deleted file mode 100644
index 64d3409..0000000
--- a/doc/overview.texi
+++ /dev/null
@@ -1,19 +0,0 @@
-@node Overview, Using libgimpprint, Copying, Top
-@chapter Overview
-@cindex overview
-
-The GIMP-Print package is a collection of programs and a library for
-high quality printing on modern inkjets, including `photographic
-quality' models which offer very high resolutions and several inks.
-
-
-META: Short history of the project
-
-GIMP-Print is the print facility of the @dfn{GNU Image Manipulation Program}
-(GIMP). It is in addition
-a suite of drivers that may be used with common UNIX spooling systems
-using GhostScript or CUPS. These drivers provide printing quality for
-UNIX/Linux on a par with proprietary vendor-supplied drivers in many
-cases, and can be used for many of the most demanding printing tasks.
-The core of GIMP-Print is a shared library (libgimpprint) which may be
-used by any program that wishes to produce high-qulaity printed output.
diff --git a/doc/print-color.eps b/doc/print-color.eps
deleted file mode 100644
index 7c68f37..0000000
--- a/doc/print-color.eps
+++ /dev/null
@@ -1,788 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (print-color.eps)
-%%CreationDate: (Sun Feb 29 19:56:02 2004)
-%%BoundingBox: 0 0 382 406
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 382 406
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-383 407
-12.000000
-383 407
-0
-0
-0
-GhVN?ED2SjhZ*W-^\lPFpqt%gO>Ot11r^Ag0fCflU8CBdRaif'=']4f9cLReX_ogSf1hX:_<
-eVA_5TpAA)4`H$%ei+3^L>dOfg4BQ:b5S[8JH=8k1I[IF$1+m<H(1h7N,smbd9>J(O9&;m3pG
-Y"S-SaJY@1J<5kSd(^q,Z*%EHq?JC%KS6YDJ*l@qQ_XS>cdb8,dA'53i1uHr:mUk9jnqW5pp#
->:jBmrH$[dE[no2?'gE.O;k.o=Ak/Q;.lM#Mt?gdW3qOJl1nU:D_%P8rj[Jc'1`8C%(Yoi0/\
-WaeJkN^r%lf#2KnaXL5j+$C3r$,>B4r=7Tr[E1-n.GL]f#.:\cHOV<r#[:^SN?H>YPOg3L\LN
-3j?L0Fq0DkT98ML'p#k;K\$l)cQUAM)qp"NC_qHchp@"R;Y7L1#V_'1dn([jNT>(BsCEib`rU
-3J[]W3-(qt&l5\FTI'!5I+C2_XH'ru(j[NP>e=D]\+$GOdi(r8td:4Dc78J)C77nbM_FNuNS7
-kNY9Yjn%diIntp%s(hE-k,7X.SC/K^q-4[(&c+`D5D%5-GBL&@>T1A0cdcD$X4BLHjn"E%bYE
-P7U$*T=kDu.AOO1a\&**9%n)QUDL:R/]2cC5_5!8?(LLg5'k79n!olos%bqg'jFpSKRfYdL^&
-+8NV#h352qAjr)?7,XKm([`*oCo?]20Zgfnr'(:G?7_X\3]b&B7<dWh`ks$TmtPj&UaTQj=fA
->rQYl85JH^a5Ee?id/Q?-`BBi#ImM@eT)-_)b^XF!i?LNKq2_V)KS5$XXns!.X$;$_hf&3B.K
-@?.ho+]m4PPAYk=eE;kb$5JQh,.0ht_WfIK!B5&*%a'O*1,>5nakDqD[\HHT=<L%toUhK`:_X
-qR?L0oZ+us6:+"*s-qtc=$$II6:+$=h^%,),UE"88\dhe8EaEDJ<,eRd(^h,+!Df$In9]*fc9
-2<q;;;:ju>HGR2JaqF)$SrPIqpp_urFNNf>bIar<Nj8*G-F29[3k*=gd.f\a`QCp[AkZ%q.@m
--NY5$U6N?@h[VOf\42,)qj#b;[0t<k?ACCUQ2P0n225IBmI(S051-NRSTu/5fnG>HsFM.b.1H
-rD5H#3j2PQ2PB(dh=%\i5k$h17([52#EfnR7+rBcS`,ZI775u+D\Hq=A+G*r'Y6Z0]>TsT50I
-VNYKROML,$7:t'qnib:(]$;0^$69KD$:lk.m@:jr>4YT[,o6%dJ+3Rfcq+ZoP)-JL1We*2mnN
-bX"Z-'L3NY#>+t6:]s=?!^HhJ!@$KVSP9FcA95N(-aA1tCm*0O_\9ZticenF3D.&I^(HC8koQ
-_F8Z.3$!S[G'DrXo"IaQ&k?+eP#o+moRdpf&^NM[K");3G+UOc-c)B,QXj'+Bg6cTjD*j=]\%
-?IObU5I8Iq+N(F.]=n2V4<E@QHQeOQs6EB<64_FXqc#C.'jQNPt8#FE[;>K&RU+A$:Ir<]E7-
-:&R:@3EqgsM9&PiIQ&hVd%-GI!O8`^p/VA0`HC(@Q.6<g4,)05/P8N[r[#/;96ZX:WH-e31it
-Bip61&.F(.5\N<K!MQ"SEt;EhU]G74o:b-kem!6AYt'&W1TObs=XUJ58'Mi02Fa%6hl;I,YP/
-gkd^?_/P4(0a:,cnBjJ;lY_$'l#q+"_4^l>p<dd<'e:s3nB3Fjl<o[,?"S8Kpj!fCCZ-X1Ial
-:o"4-1FCg^0^%5iN'a-0]@=j7Tueu5QH;6+5M-''I!\=?@<H(^E!AZR;W6H\jcDO5=CR%$L3N
-C[tUC'0XbO][Zh0k/+X(*Qq9nT>,?6XVMDCZ0[E*[t>l$qW1`#50q<?Oba>=BD3*&D`'(/:aP
-sk*7X&5l1nqY(1LPR[:o7JNb08q5@YTg1AV_Km"oF`6a=6c@[SWasEug!l\W5/V8?^8oc)u7?
-IjRd/lKl!^9bRJ58)t+8B@^n4>4i1Gd;?.8ETX1;`5X,9bn^@q_)m*s3b[]6Sgl,>PfjF:I_C
-+0XD^Y]?ClI9j4&n-]UWRX)`fXu:I1n8fg=CZ6]GI\^U\"'b&8\q\Hj^8Ig$RX,D^eZ;jBKTa
-A+q20bob?6.SO]!6dn`aL(OA]6&8dY6J\P&1?M=aQ=Fs+=9#s%!c`#_?h)o>f6?A`,>![[>SJ
-Tin4S)E"R+W1JC_S-'L)dlk\CGC-nd(Kp[lX3j'o-5q\d4RlR)AlPNGr6#2TJ&]C!U<a\FsV5
-\TO!SXjj6PkcA--PPY4jsL-gj)4NNk^A2.VQ;7$VW>SMu:&Kret^aH`,nB'hl';+mu5-kXl,c
-2ENA1YU>$/Q.H4N:U#%/Dk@_LS-T@JZK6EU_]`Iac>G)kC"jH>)d,Pn%-/ct90*`(Ot6Bjm?j
-SPB%;5`;5r#+FiP@1>HJnVidRC,TjP9$MQ[4K2k$-0l:.;9n3Bl:S%@nYK^/+Q`3K<(hI,bbm
-jsrCHBEl3S^dOf1PCEQ%Pp\d)XI`ZIQe2ZgVL08I"FSt0if^sI65b$j1^rb\lVKs_W.-0X3Ec
-HWT7@$\X9&a^Oa=q"mqRYtQU#Q7g_8l761m2G1h6!K/F!bbV$]`P4q:eFQH&&g;g/VRGgP!$g
-OTP-'UMboKci00-,pgeGq`TR+%I$2sk2oY#Q:.6"hi11EtO"ic>><[d239Fg\R!pE2%XJBDl(
-d!&Q^-0Kkj5%=K6@X+R!I@Q>8t=ji?]^qRb2K8Gs0J2cr.n[C\WaH-7qH`jp)fr;:DIQZ]_49
-q6#>GEkWj_)l5Y?@r3r-Q1A$#O%NM+jq1JQ3M[01odl9P+Rq;JLCdB-H2up%0`E>L8d+k(rrg
-!"n5R32(INO'W.9:TqKKbV%Vlr.GG9FG3p!S.$M-0C9$pt&eh&Rn7e7rD2F>.ZNU'GKN7rF$X
-bHH\<(Wcd%J;3L$DC^]MA8r=7p/%:q']AQR2A@c+C0qX7?HRS:F+k^>m^::F+;/AD?6C,e!uh
-8@Zp6emnRgW`98$_UC@$ECP3iiK>Y@djJ[\i#3bBJf1(gdht5:G`G6L,C8&O=]89VCf[n!DN;
-Tu<<Wb#?H(fdpFmQ3g3?9\TITjul1c23-To'p?H)?b&'l5Mcqf3TIq2UC]MqKN?)hgBt@BGp#
-MDE56IMo,[8013o)Y#;q?9n,g_A\@tLYuSDeF5[)micoc_K>iG:L[-,q`aX:!F#`/O/$nP\eX
-FV%$k0QQc$0Dm5rZEL[e4uDhXl!qCQC9N-Z@V2aXtpg1"$`K4Z^b;Q//3\I'(*:om(<$HSR/,
-Tj='-k\nY"9j\eI'PI-T5<q6n4ClDG+-N%hOA%"_Pmju%<6EId8<A\%$0nDS"X6pSK)])0Yl(
-"hQZO]Pp8Hi[YsP`\h(L+VUNK"2LaIK]9-0`GhG?OSmO>$>/uOY]V&cDQKP;o:;aDQ>#[=/q/
-I]F;R!9n+38`)Pc&)//nU<3V[E7&KR,B1&nTofq@07cO?A(^/`Oe_HOWgm_T+@57IV],0>V!!
-mgJV)Ja7Ri*QI$DYWmd>6a.SaodTMsM=1?+HifT@Qlh)t&)%b3h$mjSRWlWQ"*usG\"S7$C.k
-5S"K`)4)kgCFFV.SgTp29\%2>j><XAL.PUqS@+%8gGbsT;[8/<f8P9[`EZR>jHD!jOXH12A/p
-SU!WJC!ijj!!8"j5_WWpiq.=&N;(l3UUG!_;G=6qA?HaDrls"?LOVtK,tEVB"CYUDWA,?3fS5
-<nS843oXrVfbB<`_L0s4ZeacTqHSrI/As\D<Prr-iZO0mYq5KmVPgUgeHSO9NCb=]c#u?K4/B
-YV\oI6Tm7IhHE:*P-"Ysq.=5e%lq-P1YGJ`H77#-SN.@rQ-:oF_A/@=Jmf7ppZbf#-]OU\ebI
-WaIgeo91lq8,Es5XakCERM@M=#(8KMGG9NkC*/.I/$pV$g'irLl4$RlLN4Cb*e?Y8ZIP$QU1=
-F<b>FK7W>Gea$i&cipgdG-52"^unO_&IDMG-)c;$)SadEDJ':]PPC5d@,)>!CD#bu9,L)G/T_
-SPaCLADaoEQlQj%nF7qn"@unYF-U^HJ7S#U!(O9-=/LTWTRXk*Hea@n;<8)>$eAo<uTfB[&S@
-BabuFsTO;t(ccb!Eb&]>0/Z(s/F!3c1cm358.+<om.oL#A4H7:O&8t&)4[]_b^Pd(pJgV.DK`
-=bklesi)="T/eA+3LN?U;FB[\L'-U\@3!+$o)]YWN<b1GGfTILrVW_71T3:V]d-rE_<ELAK`)
-/V@q&ZuT,_K;Je:btuNT>`Xad.+Y+d$MeG$'L9).71r.X/`<s;^aJF\nB'hf_`[*(0_5i>W@?
-+f1)]&p";;qRO"ii@.3E%ES94AJ0V_B4*"3?sU5ud"$sEC3%te0#fti2mULs?soX448$b]#UR
-eX"9DEV87]N3'g20A,.<D,h>^Xd?hbpt:;.=&Ie2?giHVcD#8V7\3d:GFLnfi?,b&tTd.F&Br
-/oVY6.Jtr^0G/W,HCIRk(_P]-FN*nFCn%ipmpDnKR_Y"\!hS`eblmL.e$eoZ'Fm(uCm\Aun$'
-lB94p'2SBKqI,B4+]4q#Ch!6GF%jQ)NSu=p9#[TIiO]G%_qN\eM.r:i8V="t5@+[MEm48le5Y
-J>2.ek+b0MaV"WHX@p>VS,4^"%q_6$iS76(bXRtii(St$`g@TSgrK0qVqd4?F4//l%Rp\J]8m
-OC_cBP)n5^>m*W44"TUB::hJ?\pKmk9F:%T<J>u,A@4a$\2L2J$HdF)%>@1BE>ku@2QP)`.`X
-e<@t"*.]sAY4pJMtrX&[R,EdTiK<pU<Ee:]9,.8A-Wa>,AofkN9DVpRkXgbJo(e#_#J%lrrc+
-R>jl+BJAHG;5DfA/f\V.d%_]'@q`$WDL#j/q7q&DeHPK_F_"\n<eM')prBW8(M>I1LXb:RF[#
-^nq(Gn4IQ:&%haq@ZiJmni)MBH8aOu8?'6IACr,q)m,JBoD?TBo1c-_'uBI-.;n>/4coK#nRf
-A"4Fu4Wb=^N4TrLk*2'R*K1GHZB'3GN*:M=LQO3D4#g[-/MkFA%(5W;(']a<CZ8%j"*t.ikca
-$+)Z"RJC$Db^LkZs.^K&[`j>W?G.6(SXCN9oMdOF5,@QL=_\r_(A#K48!b$7EiL=@#1?:(A&n
-I(/D8$iBWcS9<'n5BHRL>N.&L[]Zkf,5!f`aCUhn"\b?gH2X26uO<]ha$?2=DD8.%auqAIi5@
-Y@B;fe&K%*l?B)rlW'?*l-_Ykgg'UgHJS$jj4/(@<jYg)&5d:W,)^$e#aWlnL7Ss2^b>GJPOu
-rc;X@p>VS,6!/k3&,"jb"GJ(\!i^A1GIG"D:*75K;b4P<R9Nn=H,+@88m%G;)4rWBT1H0kP!u
-LQc#Ve%qu:\'9l!(hmKiKbHr4C>uaS+[&1%%+[.8__E0MC)Ns^5f6GVr@6Z#dT=QV$@9n[Q.&
-Z(O,Vs3dk0Z?KlfmG/ESfe`eh&).6E\oOLU7Z%C%Pt]nC>X`k)gFO2*dNcbfPs4D))s)#=er+
-2E=0rMO(>L@m_%)USF@3`!W`-HpTd]oMe)[(Zn-b@j'H6P]5`d!-E#C=K8VHOAL*W2bM_&(J4
-b.YDb'.^h[K"_BI1f:uk.A5X*V6Fm4%q2gDp[ogEn]+XVTk5GRWbR>Re1VJ=b>_M!10GS&3N3
-f:Lp$r"ePAV_&3TK0`#O`*UdDor?j&X0H37Z!I%c4TIAnK9*aYlo&n;`XY-JgX7U1^9QiAu^/
-32,@a/T4X1>f2Yl+Vhaj10DXQ"`K^uVOW38#%S]*VI)rF+`Bp8'D&d`j$DCYPRGTK82q3*+D+
--N+5tB[rt7UJ!Z0h1!:P2X3oE&WThdCVLA`@hIgB7/XCooW-Zm+a:'3'9^jHcl#.3!Wo`U5odB
-%uZAa!JfisVg;T_;OP%RGFA<D$pSU##n%DCE\)+bsMWau2W$&LBl-4bBEYOKM!&7)1/h'Ca-+
-ref&"!^<#d5+#f*P3E8$':]GMDN*J61?E"\KIJimLH4\]I0Yr<9_L2Tj,B6Z4hTCc6jFA@:7F
-7\@_@]j(/>`-e\o'(hUOF5^fVU)CH/<RUm?5)):^F@k%thX8k(9J;(u8#YacB']HuU?@c!8g]
-T=9C6XkKlb1oBGJCG#RY9W!lgl9r?U/$@H0lBMN$3HRQ\%uj6k9=.I0Q\@gk?tcls&7Q6L:&&
-8D<O09:*V;a0V<s]*OP.[g'D1/RU:j/3:sDInL3\';0rGW_pCT,We8YHTrs&`09j(GYnII)b"
-<i7KTc"iX[CJS8./7u*0R-"5$=5&:H%qhq#'Up54]0WA>Y`^jF[^[9J@JrHAq)ccM9FY_DsR<
-LAANH.0icR9_C,Oj/eNP4e1p!r=7\n0PP.I`+0g"=u^$Q9G?k4GYcXR!u#fNe1dTV[$L5s`\i
-^U)-:fMaf.m-.<r=l0f`a?N6)nek+n6*Kq+CsNgN[@-A(jm;B[<<8-BLu,Bb))&&N4C%jO&eJ
--16^]N=%%%+gg_\qIm@fXoMf!S^aZ5=P%]k\`n')_>W02T#)Mg/"F8*>m[#o:%G(JA)5I3n1p
-'g6\Ho!pt'-H3Tgj;"'1>'$<A9fEK5(P\l&#$VE<D<fA4OUkL4!!Qd+X/J7KoXos-X\c9V2LS
-+((TB?%ck9l[S0JgO=Lm]u07[`f:_$D-mR3#toag?]b!N,a][W0U8\K9%=ENXq8(4L2apElck
-Qtg'PaA`gO#,_#d2/p!aZSe9'EE:99C>RS3^7+dr9IcI3A5^6S3KnL/P]B75R:=H43E+!:$1E
-^r:R$\\I2AkE8DZgF!q?h25ste\q_@M-d"B+mn6^h"$',1k!=W8RTFH&pqKlZ:L:%].B@6Z,3
-^8@q*Tdl?qD6ibBRLuBGL<LITb7,^1tJE#2:T>K>rAuBT^"ONSqd(A<;WAj5fI50PbCb\Gpu?
-D6+.h'CEZt0i00uDpgeGq`TN"Zr\253VYS+254]B3:N/M9q(^0UEo+k4&^J!K5KnC#k8g'7i-
-ZX0D4J'je&+iq1EF\AQn^C,@]#-Q(1rNL1biKJ7aFa11Ngpk0V`,Ib6QRFT]#u1+/ns"aTn))
-/!qr%>0_4=dk[eYR?fU6aL$V71"2jj$L.FYh*WrX6k!"<&;qZW$fMZ:D^%/uJ.MVkGhr/G"d]
-li%Lh'"mmFi!2CklBkj:]<#<L/I@YWP=;]FFT5jP%NCe""F(uC#H/MttPrWHtCKC3;a?UE9Nc
-l@f:&6&n-gkUd#;!^[):<9o<A2@a8;7$h]2(2Q58\T^Neg97<c2GHR+8Fb!cMbQ3+#rioVgmX
-S4=B;0RHMLN6h;:ekNG$Vo,O0rH_/.HFO&?tiBW-G);6jQB%W;U=,%_5=u%pIBZdP2_j1^j))
-c&>aAAL;6\]_$ei]Vn!OWG?rIC=A<'R&@!L7A"VQ!+m4AC*iV.n*#/5B-4Amq-k1rX0d;An7c
-j'E)_,[q)8M'EYNXXHMEg`4@J&AA.WI^m'.p;#pE@gE0hkd/1X&$$/Q<cn#/UDmi-@CEs^7[j
-^dm5WpZ-6l8Cj)"nTd\FMgYLhgb>.grS93Su)Ku4fK;WE97qio`;J_^\"/AjA+2O@gH%-reT>
-)JRKaHp:+*caZc$Tj7ZnB'gA`b1mLo:263o_\bS)+HBOa=rk;=GERgqAsV:!SqH"Vs-n(Oleo
-tI;.EtBUrYZ*4t@c0h9F]1k/<MpM<L-,t2=$9dpuYeBbF/Q?BO8RAFeeg0%J6Vrg1npSgb_R:
-KllMBpB/Pg?RUL9_[4cVQ[?_L%O&U\Gm!nI4i_E@6Ip8PCB@MB`s*+:<T8hJmdlpa1N,IQ5#[
-G]:WUb<rKC_J2SZ5It[p[,PmT54-A1SS5Lj"#J5i?u3m\XY:TcDapK&FaDOqijF*F>`4qjGX7
-8NWpmA"#LqD06A6&5<M3RtGo969fMmIq19<(EWWdd9$2A%<!^>;mO8-s!KMR?O),=`Yn9Mg+1
-dbu;V)^S,h],/Kkapi(pN1j[7u@Btp8)GlV0/(eZg>9LNr-1/Bhm*@AD7MsAn[]CdgQ][W)'W
-@_7BbbVQ$&^2U:SI20#YV<)$4M`QBVZm]nrEH&SRSb$lonUi_cRPEajrp^T`T$msC.V%?<EOF
-TQUlS3XYE/-/1NhIR8!SI@\il,I>^3&>^&:+Q.AOf6TcJ%ce'd*1E]c1gZ3+INeN$]35[H!fY
-]Of$NbrB,sN?5Z#]NgN_=rbrK3A$i%_EeY)X&5k5*[Pu0@#"g<b-4<pN?p!=6!Aq..96`LA7Y
-g+g"[)Gho,=\Hnl*)4Q'2-PA*M7S=!f"Napsf1dtc/,:U3:3BTstI6*N28?sm?gC12?m((0>"
-?R7'9[c*u;k.]E[S5(.`MU7(gnd3SL)B5'=YiY*,dhhu*Mk)Tokg]Q<(9t-Td%_O0]`s!]g^U
-+(6;B4@UY(U&B3O(F>JP7)E1R`-K.P3*QN+-c6rn7Y`Ig:&=3L'q-isUU'DK>3'W(;K<X!:mY
-Ao=Ft5c?`L1T\44.TT.5Tg8iFG"g>#AqNlcj\!J62A&g5,$?*3$nc*M1jA?knnE<3!3)L##Af
-XFOQ,dP>X%@sn[7afqWJ"]?m)^et3*lq>,AS,4(qbQ9s=31XBkB9&,C3K[c!`N`R+cI-p/,>#
-J1*1ikq*ZYOs,hP%M>Fa8(H`#FQ`K%R;`+Y1Y1s*0t[bRQ2b,3oM7&Z0N+j@MOCF6!l7I;[-O
-&H^d3^cu0ari4TW49t?S!4.[)PCo2`I:GX/G)g!U\Hl=,8n#?E2@M*$"j="3:&A)M;iOm[W,E
-%kRHI%+6U?$nDLAUT+0bC6(%$6YTKu*r7Qrlp#>pfSEe$S(7[4V_1Xc$EM=2gNR0QCAHQ8ej+
-Ts9lLA[B%d@pt$Y:&&2;"\DDAC<YOB5hj!h7B;;3%@`4<h].,-7"q;?3s)MZnL6/-2AZmU:Ja
-E$iio3DRh=1;ueA'=/,'k?*nB8c!$YEf]VkLSsBqdh1cY'`7=H(8Eb,Sk4+]@7QQJgGDE6MQe
-\VQ3eIJZ"]__&G72)"BcOObntR^WP-F=!&^NNql..mV2pnnWUR4K9=]hS*m23.Z('0[=QlJiR
-,Vlq3AYWM@8GiS&sj:,.ZQ/k\.hAM(u=43+2k\icMI(!(M41O/poX3[R$Fgj)dMSD0XA66SI<
-a`lUugBgKEMYFAA;%UCSk2WAC+WXLk]a5KLdl_1>t;`a9sU9Y,Q1t\p"R0q]6fNNhX$HUAo?B
-2E>ONLC%KG@DG$i"7D!^>;mO8*6FpOKSacHIluPN(XS,I<n216gkP$qKd6Qf(E)mPp!"ke'PY
-N!#:1]0feef%]PJYUdqX0J0bI*iCI*[LcYp1lej*-4L"@")RJ5mKRHSeG6'9Z?h0B&(TQ8jeh
-Sf<k>4HB)+=,LKNi;lmdo6PWDo[Vdt>;.hl:7^m;tV.9Met:#J>Xk@<_3i`m=dEI8\C-NTV4p
-s=p04?2B<kohkoidElsrHQA;P?'O6if.iGkX;NVYF4p<$-1b>ZkZS1*,3E6#,q2Se;/bM:tFV
-4*@eGK;ha$Glr7K,$JUft;LqOLCa_Z5*06=l[1!4-=>%Ru!ouqW8AHUr'(F$*IZ7-\;mQl,,W
-RTscomC83#\]5MBc&Aa#H1Qk8cUX*4X8-#]4!RDmAI@]0blZNg:g42efkF[K'P01u;W(O+uuM
-HeI=ch7'J*;tga//ll>Sjr2cFWif7a@--!>fNCC'q%]4h;0JAH2G1_pTp66@`>9u7O?n(/k>O
-@,`7Y8EEL:82,RRHe+-,B6+O1,ZB0ZCV7?[uF\R68kgOhJ"7q4d?YbB@"f6_MM)m=GEQj$")W
-&C?L*Cj:QfEcUUSi5N"*`"\'Im#8sYuc_$Zm`,p:(?9!CfOo%&t:AT6%S#NXHd9i#mt6G=TjQ
-q9+.sl^aK!lnB'gA`[B$a3R4FL_C*IH$muYr9lhl2d4+p$*1<W"%Ypg$7d(,!@"Ng9BFE5a*I
-ED)]#fs4/Yb0"C%AOr3a96RHJ%jA%Gt"N@`((S%C*oEh&s*8<e!ig!7b/LlD*o*.rA8<=Dju5
-&kalUf#-JTP]j>$4=)!^Inl+PK29tk,R%*Zm0U/=d2Koj-r,QfVf=NunQl2"5Mkosn%i3\1^p
-(,&1?hCmDj2cFB0CI`R/S9e;4tn3+Bo!-6-pD1TaIkEM+1F)R*"uMFQs7LS>QrF=>UI7hm)qT
-N$n&.`dk,:k<'Zes8TOa/TadaKW;_q,3"bnAuF7ag)%sZFP8+B,5r,l!NrUIK?'D:*hn\_ao@
-mdgSrjln1e<oM'?O8p>s+@6/>S1!Y=]qgu27d2HE=.(fEDnBp6lH%[LTgY?Ubd5]@ICG\#M+(
-U"VF`u=E:j7WIbH1]#)B74-W\..oOd/(/FL1m-jddqc8(h#\>:;A8n.SDf'Xq#jQ9f:)B2U^[
-`1IZUNoRei$rOYV`nTN5)+7s7Du*?"`<d&i>rY$$<sS8Q*A@0IW"%9X]\&,eh0?XIcW]gs)2C
-mFfT)k5Z/:?bRSdM/?9K?F`9qr9eRF:DE\4_"TgXOXC<0B,TL;W\eg_do_eM1=9!CVd8J.7@i
-3QP$-i4PGal\&lB5RaB=\dl;e-m]<N(e;%MP7X%S)icRqJL@"6MCV<a6=#[&`g`%p'#.$ds?X
-0f@f7sLPHX(bq>H>ff$ba-]JToI8.TZoiKdbR<;lA`^ZMag.SO8V<.j0>u[Amnf01+;IO#0Vj
-)\J;A3X//8h5iQ%`j!3DFKL7IOf,.ZJXNGUEfG![m#AN8`#0lGGS9Nn8o^$/d[*FC#sY5jQ;7
-+]K!376?P%j*;RR>G:K(e(miCid_2.R^(b'II3tH`Eje_1h3uqja-90`/].+>)R5YP\RJ6$C`
-m)TZ29mMNi@]!`B2&Q_?[)'dZs76iI-NGm.:qi0/QqpgeG1ifd]a-aeJ#P#M)jn;25G/jkgBM
-fLX@?^N(IkRMSl8EW].!ZW%gh[S;BdlP@;DqX5aLPqI61coCiAD>^P)5-L,RkE/tU](WZ>[lM
-Xem+lNS(dJ85"Ek#W\%2<WVi-K+&UG*nlEoZYk0b`bq+=9;?I<aV*n,L>84c=6%'Y!;E0e,D$
-%c<GVo\2'Z\);NoOda0*P26`sZ2nn_e[/%M.OO5s/YtTmdugi@-:A^"D5%-TY+5_;f.o0gX3I
-h5r(a@V7K?(a.F?>9gT-USJZpFc^=BTaL*C-rOQW$;r2$<+(sm"_Cdba79l(bHS>ZGu?1r^df
-[.P@Y'qA90uqo0$`!3KrOr%&X`.N&,L@'9`hn3>UReR(ccE$.0dSn4br6l+"P1+8`^XH"_?,B
-:)uVf\rXF6*m,Z.r=N]b?$NLaX/MI(TG0bL+_&"ZK<-L(2?'FodA7VW;_mY&#_V.b0s<HZi#6
-o%4lp_ZBHhWV">*3StMmFi`@RT-%hQ531@_3,cVNVMW;YmN^TQIj10.L%RM2O1O^>7ih-M]>^
-18pb!GC'j,&4af^QBcH[DIM`abRlAO2_%4&+AT%XBQG2.C>W8e'FIa6#j-WlN+_XOj.JMkV]&
-eNg.S)AQ:%;-8C7$EPYnE]N\`YZ(gH&XGtm\,a&IpcuVBRhG54k'i<94\e^mEf,tr-gi[1Rq#
-lehP)[AOW`H\%f>M_dGa2;LOF'o>dRgIO-<iZG1^N>6M"cWCi'!#/XL/;@8f)okG^\d"q0`\A
-^)UPRAg(GeK7V/L2%r5buDEtb'0i3ZhuDthdG[Tb%b)W)PtJVGa+A+MN:U+>R#u4GW#_J&l0l
-o-k95c#GQGmN$lZ>$t<QD:\[fO7>1tn?.^q9`?65.@okn;D()`"B.p];6f*Yi/_FZ)W<oEgf[
->Z%7VlhZ7KYR4Z+^ghoiP:R[5pFE`L89XemOa]Kds0'@RUHd.j-:Y1-(Yd5V,9/&Je$E8AHT'
-'Ca-+I`<bSg&%;-iH0ZMEDFLjRH2;'L;FqB`R,6F@iPg%mH:^7c4N+OjhNhA)lCkOX+NQYG$S
-OsAQin,>A:[i[N;l!dFcR<cY9U[De=WYFW[pO"7"0.CLhQD25dC%Q`?6K2R9W[MA%O*::ZC]>
-0:/\nI(RFcU'K8LF@V/UAYtr9B1jC.[-f%i:/f#`ipft72V)F@s8Kr!\!f<b_r#5lu56S"Sj/
-][:<E*8o5u]@S8@4G@OQ!A/8u<A"s>Lg9J@,77O@o```Jql61"tZlZ8`Z!)oL/IJP_;M,^!/6
->-37",<*.Bp/f@QF!OYXF5b79Cg(D?3-<j9YNk=TUe?glM6S/`;gt^h9*7;k0@g,g(rL6ao#j
-ib4Ff!(Zs/?g$naSSgJn*4X#&X0am#*FMYb]56j/JsM<O?_FBVD&mHgSArn-oEbsK;;]BJ(=o
-$g9f$q\;/9RISsi-Kl_up2j`+>86H)ff=&FF"V2$LHR`,L[<O/ilP!'NJU1e0D44;cD_Y,89#
-s9-H[MZGAYr.KgEKgZ)'#58I2LD^^K2!u>L9PY/)sl5(O7bCF>>`n.U2I'u`**Ni1#iiZV!V:
-5MUb1tDT4..$M>f\6pWt:ema=CbI*F2+^]kL23t5G<!dOJ`!YRj@>Pt^9<_NQ77G:_6<&IT!M
-A^O^aGUUp^YS6rikJ`^aHt_32c1bndZlV:/!>Ui`M;;!W)^6\PBVh_eqMjknrEq+T(N4?(ppH
-HbO%B-$Jq-dRA3^9qScZ1U_Ztj%!p#UYuXS7Q**.cG5lmW&mT<S#ee>9b#W6WjG`+ZgnA:LKX
-U5jTeo!T<\e>.juu^iH@i%;S8ElN>ZP+@m^UhP?=GBE?)qP'Lbk5`k$/k$Y!rQC]/Lr$`OA/(
-Y0"'bog'AZ+;$XCfk7;@4qu";:(.$$W`_$dY&A&=OE#f7P&J4`.34unf*]uO(G_$Wl%^d`)R@
-aOJbR>$;6Uc;Ludo/2"ga3>Rl&<sDM66rN(shua"P/5*c+RsQ!ER0@u83#1IaP`[XIDDCc(a)
-5qI:S3[m,BUOX4A;Z:N^40-g"0$S=1!FmSr;sH^lJ#nS>4b(PF687[^=H7_BpK::"1-7n2BSN
-=n;i?-`B2Rl=8<`V><W\Su5K2b(EYA=^F\1Ju.RnD.iB>8iO(q4XFkm?:@^W"pJ_B9OVKF.hc
-"sa,1^77'Rqpjl9Ga`:<mRIRq,5G`_A\rXeW*O`/:GIOqg6R2&AAZ*YHC4!D$tCkgSq]QWAD,
-0u(XAh5ZEM&o;.Z(rF6C9^lr`EFgm_BKF)WNf!J>U=D@OK3o1$mI]",nS1[;hUYEHm%@2I0o[
-ZF2,M'H3'X0:.?(gi'`Bp0ocDslD)\K&NAMu%Qioscsc*&5Pr0hbt@:jp3*dCP9":M1"0s5WL
-Y->ZK9Ch2RDW^%<#2F()uOApH!(rU[Au,7p5cl22D"odo7@GPP\ImQ[<n^HmcCAA*FcO2R%EH
-V5mb/P*0Aj0;^-VKA8;(;ohZW2hBaDEb!1M+u]qX3(-&g!YG/Nnj;Dga9Bs&7"Z'(+mOj(#*B
-Xp?AQ09l@d4[OVo>VEnZZ)MB!j]RZV)FNZL3?aJh[)/TPsSd3>Iq3?$tWOeY7'&ig]J;#k0X*
-%1hu5S5+B"FRL1!M=2rn)JJ9K&Hl\JtibLG[lD52a,'#3I/lcWrr:2O&p/1Cuq!H][Xn.*B\9
-!3AW66RbMLj@@NB29f*d@Uo0o;qDpOcYYN5B/RPXBb8S*jjq/==/,=95T2KW83?OT/G:@aY\?
-2-&Utf(nFV:hhZTuHVAAh#sOV/lf7RE&Y*b'DNjrp7MnN6sG&BKJg&)JW%/:hRCL6c4d1$jhG
-^DODuYV&E6@WX7mk@.O/_7U&N7;-%]em'&5d@:S30(c\fbXHq4C3-)lKf0`I,%sA@MkC\KR=g
-A:-ur.M"*kAKEZiO;nB'eqI'U;t`@![j`"_6qN("SS?mNZp@gn?;bf@L)Dn,$Pk-n*s*5"2FX
-*sp"`W7SCpX%J[CBo2<lo)3!`6[1OC#LF/Ial:o"4-1FCuG251t5@*A##?.<:bcta43;Li__"
-/XQ8s[WlqB)o>slo+lf/'mZMT\+h(%Q7Eg`8Y!Y[9ZkOr<P&$.]KD6A'<[50oiDg_%KjZ&*L%
-#nq>6%G">QksJM8>I]Y<`*pfTsFd*50PC/O?9;Q@,(k@EM+;1:/ZdE>b43_QX`#0cJ$0(S`l!
-\iaYmTP=ci9;#T"eRBpCTjeTJMbo]IGqM^0+VUP?"DJ>QEWgcq0EIe^mNHsU$i&L]^uoTgP7t
-SL@X*jlU\rEXRj/nqdl0t(PM\Fb)W8"e3c/t@C%#J[(Vf7n(D^=6o7Dh^gXsojZUTDt`/bB*8
-C+^KSuJKiL.s]I[!\d?-T-9MbnDSX.f!g*?WQZmEkW[ZF/=7R`e2609)1jupI_r"bafqq6`(R
-^&u;rY\HRi7Li5b!';@78AJj<\i!'<B^qUrI@X*dh.`0On%'G52/c+)9p'@`toLdNE#+]O;=U
-jsPQr]oo&?Q*i(8,q!$nJ#YJ]?fM?]J:rF:r9Y;7-h$V,/h!8do8P.e967K!H\a01O&-a;1Ht
-(K(hP7$-IP01Wf*WtOpDjqdI.r.NDpC!KC,1!-C#@hZKg@UtGV;3(Mj*8sUN7u->Mdd*Q=JF5
-T2gGia*?k;X1][FX>(>@!>RWu)s(L#I&A4I<Z)Yf_lT/?&43k!SC7E7W.q57uAYG"8,[oIfKa
-Yt_q6G]+2^+/<hV0kkS(Q8+%Pj1RVP40nTpPJZ)1('fl83M^gDBsBK?B/,*U,rtDJar+5DFZr
-%s.f($K4c]>V&1\u?jZ1(d(^I,9sDde]+Nj<d((3`@[N'^.RO"n['#,Q&N!-h=9JL?1p0=H.b
-#5#<rhV[<3:[_3Re\?,Z*Wu@MokQ;'q#[%jajk>E#:FOQN8[(D;j\:UVS-PKj&Z:O3&6fkDcL
-n;0Y[GCl#%7`Q>`jb/\g&I.((3Qt>JD`Hr$TVmig)dQKNl_1YCNXjbp]OL#7'5_UaU4jDC][4
-SL"$?2R]RcA0RVQTbZ!GP]C:7f#>0UXohc%s"8\K^oQ1I^1:R&.c``J(D9Zj,aXHN(/R"n+X"
-rS0(#E_&tjHE+_&`8Z%5")#.\.[g:#X49a*r$K>4pK>N\9;;Z*.qh,mmR2!f]98#MV`46hMTT
-V=@uuX!n1bgDaLK5`XQTf%mr)D7;,q]qR*8M"M-J;Y"$qkBF:FcJ8-Bp.o<Jj$44k@6,"$Z@`
-\+:Zingr-s3j,O%@&6WtOpDjrVD&qk*AGRH/IC;\P+D3'#"B-mLq4)I^_3i%T(1)0!qe5[PVH
-2L;HHpMdX#6QNgSTu0R9M-&DU\V2pd^M)UQ"+0_-DW(=OSu^gQ*C&$$>YUE:m:s)/fV7Hk8iA
-3pIQ7jX^/N1<1,]iQ?HNq8XHE!P0oq09'U^GH?UX/bOr>U;8,P&McQ`2o_G=\>&:t-!2urtWn
-1*DM&(`uR<FW06p:]\I".KACh<<[KmW*F;KOkD4gL5CBmG$"!'ugkCDh2=QoJ/7@7/[>>(.2.
-+m5e30!f[oZePNB"Z4Ia$Tick$$0:n1=U*PW']hWl"9j],aVF<e[KLu`\VK[BRpg'#pD<<j6l
-;QS</@e6hAKnSa2eN6g`.EuG>=/Y(`8p\O#LmfDWOD"^[:#>*?;M,aNU\33ne7ci>!U7ReW/!
-2Ee/O]NE4G)KtFk?H\@DT%22^VHLm!Q2ISDD$m_;o8K3Z;Du_n?82me^0SgD&iPXCL574=WC?
-YC;Qh:D6fJsB0-bWSd?bEI`qYGt*^N$ns)[Zn$]c4/V_N9!K*Ph7$N3c;[NF(KkcI8Ij658+M
-ZW%]@+p>.EjY7fEBBWN0PlAj.iM&W^BM$7T\Bb>##l=)ZOZ9.:e@?cK8NZ*'VK7gjNCCEJSZ3
-]`/s+5i3R(tT:CE(?`DCZ'Ca-+IYH,7'U+`NM(g[#G_f:.N/_l+a63dRDMEplbK5iu_#`EZA&
-(RKQ+e;Gn)?kC^U;F*VTZnnD035UWf`;gg't]hB3tbUWhZ\N<ZNi-fiu]/)Kr+5WT#oacW9Tm
-"jQ-can\d_gLU5TQtN3W?-$UaS&@E8ik*:qOZnV$,E`L,]Rb;J@OD_h7JJj^?U[eH^bPVln/d
-:])Qjl2F9I47fFObW=kK<soalE[UAHB]4pfD]R%Jo.!pu&DFUsFlTm7F_A^Km2UE&rfU38&/-
-.$O!Pmj)j:_uK!"Q`fd8>0.FZ9lV?:pM&r$&Y$7.Rq7;"ak=oI'P4&T5<pCHlgKe4i?`dR@<.
-68L>[p2o.n<nM*du1?RWX#bu9,L)G/T_SPaCLADaonYVS&*r<KnUP%/MoU>#!dG;f\>3Ia4=q
-dG2%dN:lTY6@eC=oHEAM%cLr),n_RMSuj;=[%"]+jT_k;bQKQI6u;VoAR%8lHnf-#=7d!tij%
-@mmmGW?rnJ6c+BK]84.[kXgHb_KZ07D]j!#rn$,2J`eo#F;R&n5qVFVTt_MS(LYddpGm=[Mp>
-sC3<\q>R%?YAPA&bW@jRQcLLC_cO.ifuojt)X!SsNtDF7D11n12)6+$a9@T9F]iXqEWL3s_.<
-^O577JW#t76qt?MZnL6/HMJ[DOs'Ti;=QN$i%pti%mI:q[q+In6Up-0uc^Dj^W+[PA]4pB%4q
-YKAcjflJoC6+Y/1.*:)V/%ZX`V2q)F!oeq,#kV;Y_-@THt9@%A_*3,d?L(54E>2$#;TOGU(QW
-<rU8R!LC$=54F76,]efe)7[@Wk@hY)o8KBG'i7&^ACaOD[Rg%ET-B3.q!u&MkWbN:?]]5D>a2
-J[aT&$#_%NDo,M8TbA9EL&En$^C&^M=LI@@$/JVFHi]Pr@6P*`)XU=q<<_D]BNE!S&,HVimR=
-ej[C`(^K6@L"*ee2Ve6AU"%-9rXXG:7*b+t-&7S+b6.o@RCF;YG(!^9bSJ58)t.t#('@VV(4&
-LJkb'B6\[-:U#_j4"@4gl)\`d`FQ\7L'dpA(\d-.rY)7eA^l;(pn8+baTp`g?<J6%3p9qoGT]
-`Vl,+63kB+jdW&C4CXmNAGZ@InMI.lJYN-E%qoa7fcEBiSPOXQ?>,Al6aBf1"`4R5PH"8st5)
-5@+aj6&&,Aoj7,=L8tDT2Ag"TOFrTAXX>pCo^o\DG6P8IW<:q]"b&KC&fC2<]Gth63JM$d20s
-=2XY3g,3P,%-'-W4p8b(kat9'51EZ.Ft[ru6+[M)4/(=;oera@U"kTaNDQ]HffI1r6-3l_$;n
-/3dX2`[Kk(M\(('bH<<>A;gdCj!Qsk<0F&W!cP,S_"-[7koj;;N!RIDpc_RQ(6_jka&k2>;#n
-+8>Lj)$:k4UcOSU4]p+*&fZaicf5J[W'I3RnX;.kh";@5[PP8f?gSYLmFWII]K/H9p^_i-*L<
-h83plKYKH)Xjju9AM`DpAPsY19GZi7o7'n+I7J\3+4\0`@E?=W[`'-]@K!6-Q+!YGcTFLl2i&
-q1gBt0TdoKEIT_>Z(`oru+5CBJnKd<u(e26a_#o.)M/d=)e3<A817r#?,[kRXBW!:$1Em69_`
-T\Y7#h9_BR]`Y9)Te&XOAgfR3X;LMN.$6j)$:QHgQ(VM&,^BGTfp7.a2YRbHR0@ud;k0?<pCX
-8LrZ?L]pY,he[t"<:jeN,$OH:$:L6.LO&@.!$)@5!tVFHk;.+-:1`GAuu)mTC@\k1G0)f3)We
-Z'Qg2X@;BX))Tg:p"PMG'9sQY*Q4pl*co+d]TsaCY/"NhTqeJqgRtrqZf5Hkke_s5'`]JQk&W
-E/5t"kHC15^""+bGN8#5Z0fI2O_i.b:[4jAWHi4BInueB('8&b,(c^El3B[Hb%-Zp,dbi'4(=
-"baVr>"OhF?@&dA,c0$G,>hWi&M0>IAQFl)^aL_T>F,'_>osm3:8<*#HtVr"sH5OL^C9'aY9-
-f+8rhp^2V>0m<s'TAfYZ?5)*`\9d'e@%n%h?XrFb7QOrU*1"o)Ur>S\qEBN,/50\a4H1Bk]&/
-)<D0.[$pBJ".U&AQ0^4bV^co_PU4W9oCl6qn):co6`@FS:Ep)%NcJ[?%iHQ_!qMDC!sU28"&5
-3kl:'NHH,MRgLl.BMO8]S]K;_JG$$$d8a@R:U]5%m<T\1$)qdOq6nQfU*N;i\9Cn`[m&XnpWf
-u]o8Bt1%Cit@0=DQ]W5\DK0^N1=t[1%^4gW&$tpJSo1gP/.aBM(UYq*$^3WPtkcL[_b1kJ=8G
-H74h.!t=3@1CmaBJ^,O`qpl':D(HZ6:rWp^KWp,A]fqK"7rO?\,C&hEJH!L<C!\#nodepL*>,
-N-)o4'eGmmq@WlkoR-f4a"Xp;fRf^$kl(SYpX&^GFDjPD(><+cl`4\_$-`dTT1?f*:d"pB;(/
-#hr,L4,L9):NO$^E"<I5l$ULFJHgK3nWQLH?39)'*As+sO#Oisg#j?h'C0H8ru/2Pc!GaP(3g
-<#,69\Gi>0fdD;0U#O$YV7fQ6pDK7))j?h@a)o\JbQbneMGpqLlN'!n$On*_Jg1WC)Bi)eB";
-?5p[<]S<n<2T(=]AC)N-(:,VK2kc^dhbh7$^Lc?WT:V^]*D^4F7`eBWjM+PW5&H)^ih[pjIgb
-AZ@_=n>M=5b3RWum?c9`0ih1WE**0uEc=/DV/SJ:[=Ul[W+Ce#+mk6VfeT>G496c4?Rp%pCjE
-)q"L/RU:^0AZ->WGQFi):d+u8%.[TO*J*PgC8rDATW/Wf4fI!>E>cne&8`oU;f%`g.HX\$=]r
-_AY_l4?`dEH_+m'Q-$SXN_lnl$iAuE0"A7guB4#8dl8!tE1g<,0dV?WIRB<%:i1Qs.L0_0dGM
-(U.I9QY5Na1.H*2TAo;CLTuTqeFu+A5pOHOq@jBE^o>>:W@?*_bu5iGuqkpPmiKe.VDSrTTDG
-?(Q].Mk=<OIPSXW:i_tXo&U#:A'6AZ=DhIK_]Ye\miNg7='baY&IMlX^0_,mY-<S"":_*cE6/
-Mj5cbn65UCKGZUAGr&+/-"E\n5X58,GA]4b`%-TQpu],oRIo]`@/6.%Z"f.-bOi4+`oRO?SE!
-rK(!O64@iob-nJ4Z_<%J;,tK2R/9[,$B$I:ifam-^VG5IbHkHFB$S<L'Q[%3-CM7tCL_OPfjQ
-L9\R],\OI:Q0HC6KDD.;5?["7Ho51K14#?*[\ZqRk^e\Yi1P8Ydu9K)HmM@YqF.%$)P;9soSM
-mZfS11&58K^h[S`Jg'<-=TZiR"4pnO!&W_R35E!8GEdh6.Cgs#Jhk53T51t2Z`A,ggb<ZJE&[
-;I`;(>N*X7j5HMQ&r.Lac0^p+ZH=6^VV@,)L7o'B$FjOpOq(Zt56@/q(VpY>^RSQ6@(=]O_i>
-&:*:d,E/Z]H7rh,BCuJXXK<<hW+e8L5j06bEM4gE>3T_Pc$9iD[u!NR(4c.t?SXLp.G"@=a+4
-$a\&Q1[eb$MKpT@PK_dL[kU+ir%OJ>>deTsOL]i&HC6QFB4B0-S:S4'k4Hl@0WS\abA8-(/^-
-+m8])i3QQ!E1if]HB"Z(12lC!bh;p1,aR;-=Z9NNu$B"FLH&^s(D"\^/56nX$a%&jLFG7b?03
-esp]5p,7%n9a)7_<ZdO-<t^RCm__`nR7CTM@g5tK<XuXW##PJoU0)F_XoF=h<;D"mS;t18*=O
-3SV-V\[%Bd&':Rg2jqQ;SBQtOI-'U&LnN>n*W-]Gg>1=OCoH:.TKk*Ctp-?8(A_SB^;So?a.c
-F=M'iqiW_X%WY.nm*bEJ:Y47TL@0iPGp(/"BmJR9j%dXK5*tX>j9^-<F77.kA&nQ-kk^iKY/D
-b)0bAAT24WIq>I#A];<f@TlnhY,iI@<k;=4oIDF4.kA2r(%"VeD5GTW-o;YGRR0;G-o;\HW^9
-!S-n#E+H(e&A.*)aLg-S)/-r^uiP!YkJ:_4EMjb8;b:_4BLJjKL]bK):Zr=I'r(?:5,7jN[_#
-R_"G">Doql"PB)s#;PhSX>q#h%#n`2f<$u3ip*5EXdYR\9o0\0#;@Yab5QgnZ;gt(SF!RN\@*
-TiS6H#[@sE#9hfm$4oF>:)]J5BlZi5:]_E\BHOb1@3%@9i%1Z$NTF);<.OqZ<(Wsn)jWF86KL
-#$V4_^mF=2Ll&qqq/_(b7:<@&Ukp!WrVO(-#Tm-dSbSSU!umC!Y7ok@gI)H!6PK=m"Wtqj6!*
-UH(hCNlE%J3HjM_c`n]b?&mVigTkY;Z7/F@QKg"?ZW(M8bYk]6q%E"[.*JhQ6YV;*)+lZcbYX
-g<H%r%%Kc(6G6n46c%^?G:.>/??`A&IRSM4Z-nBSl1a-7*00.,MZ]3o\fC]YjAY`?OTJfuWK/
-Ee%i:BUBs&)Wf&@m[X:(OC&7)dhh!=XVMZn<"K!gX4LX9f#OYd%H,n!O&Gp:uZa(lK*9%%St5
-dU]q(#GcV8L-.l.ISRQF8#<j>Jpof1hs4<I#qKF65MRe5r;dd2PA764F4<o-+nm'6lOQYscVj
-HYiE@OIkNfuKWZa=:(RcSLSegrCG**cs&L:nIn1GiZV9[f)8=.8tB4!%;oOP1E';J\q0.7Hso
-l6I=4<$eM;;Xo;.#HU]tQ=+Q]dKHTe.9U1mSDlNOitTH]N):-2U3VE5#\>]^66Lj43.+SJ_Jf
-a"CCYjjERP0)(VdS%_hICd==7Joa5@d=7aPeecPHF<K^T.bYn,`ZEP[>"7We>hf8WSupp^tZl
->Td^&)*^k`MmI^V1D6u<uURk$I:5B>_-C*4B7.T)%P8k8d\-).OE_QJK839/&UK^5"/NZT474
-QnB#`+^P^>m6d&`U0p(F3Nmh-WZCG*m1W.<Cm2=X+*)1K6:$Y/M*c`sRrY0]X1ad!0deJ?I#O
-G&ZT3t0@\j^AoCl>VGcDDF90re`"]MDOlas\!%as4!K:_mL,4\EVn%T=!Pj^!a2/.YSlU+f,(
-OI4AS:(B&tpepT,i/Y\i`LgSo%)P15RieChN-Ol^)o&n%c%.AYkT<=`(k*OB%p"'r_8RQ7#&p
-7HH8@TVcl)@V&'f<m9omk#SC-<&(@S]l<%Hg?`p4PUU;fh8GX7&D9%5:4PG>Pr7q=S]K?'e??
-\Jgn`"a[:@qur?Q1-669)'*As+O6W'qbCR50JoH(s+Lsj[,8a--e,_3^Z\t;e\;AS:!kSMRF3
-hP8m?GqLFk7#8?H2A8e"#3))+G@l2-VFeALY4/14nW/\%K*a?Kt$<)#4l4=n%<!B60;R&L_4R
-;/ZRq(h*V#aWSU#Z\6r=o-35"j93KejG<#]Cc6jl":sR=ZZ7RrR)UY_=eM`5iq$qsfRTf=Vr@
-A&*d^#;/`d4:]gWN$J,KMJk&U0Eh=S3rAEW)5!@:cA;08[!(Jg*ZoJjUOua.`cf#JMV"<eZ3C
-Xn?>.,o'qS8hVEh7'O4W?P$jUMiOeT,gHR.6HJMJrJX8&bLiDX!Hn1!N!".s-Wk#V#o1:4uR$
-j.BmVE(3Ek96a$F='#9V#:=2$'$WY3)47ZQ5Bj:m#SG28ooZ_#`\Rl#dZ$TI>Amel@RLifs\\
-^GrEoE';.D%`]I/qWLTeoL@Q55q^D'@ek<!/e[I!tYjsH)h(3bK1e"*rJm60cGtd@.cX8khYl
-ns_0cYm)N*h1H2MWG?#(3rI`?dIe0)XYCG8%JG%`9-p8+<o$k:Pm7Jo1R\p>MMZm3]1YEOH*H
-h9bBUDC83Dd%H)m*Nup2j^u0(_=MC]Dnn.YaHUpIJ]Hk3>_d&3*j*8-.J?eN[fecBY^I6.@0r
-R#X+X8'pJ62-X8(aVn]<Pl`))0rBa3"U9lW3_:QeWekY,r9OnLbO0oj75I%St</J/KL@t0lZG
-A.Q7'VmHS_ZII4WLmZjJ@[hlqUmdMQ5MUVW:<_Jbsj?d\#K!rnJC;)ek]0*@dPa>SZMgS&dKp
-7.DEppRhXO)Zr8YRN9)d__f,h3;tr3N9,q$.\.V8\&:JW0jG2ED+2%BoNJfD+*9a!0KlQ=sco
-H\2XO(,>aUgWW5[,=6bW'CT#=cA`K6OqI8rpte]W&ea=t&.q;CbL!6a"83C-9rFR0p>o4JBQ!
-3NDE7Qjf&*TMgY1<S/T`Gm1X5Z)%jJ79EX.Vmn58;p>1ZTB0(#ZA^@iP$oc`Kng)431K"$"*t
-TMMUNI+A;p41D,H<_3.-e<0J+FXL=dSYml\kd1^.R*6\D":Zdd=*_aiN>[9g;tArDF=DJIs+]
-@c>Ab":]e<&c:uAGo6F-<P&]FI^l>8q(F7(r\F9IY4A'$EmB9-%<tr=q3n;>Y3mp!e#&nMS^@
-Q%mbS-#GWA(4rCrrEoUpOc9'B-JM5%5fbcmj_)X%"/8-'@f`<r(iNsKkR@lIt<"BnYnV/*gGN
-'>X:29<.4.^B0nRg9bE(l7d%B*:cE?u)F:bB^tFca\KY6K?M&6E:q"PYFL&n>thT44mT:GMT^
-Hu_nm\[]R[L64;[.4uk`89-W)ks]pXS;P]3j^a&<HaJJe)WG^lefZR9*1UMgJA$E#B5*g.d7;
-)2]=cX?f^Tc#DJEHn]>YO5RiKp;W4pBn$**>kN`0A]I#R`nPhfa70W!B(D5G1nb$QR*Yl#t>6
-PNk#@"@Iaj&-@OARJ9LPed$5(o-ja$ptS3F1C.`hM4iZ^2ua*_P[lW-ZErC+,ut:"D=iM[c$c
-h1]r!#&#[Wb1uV.R<'>K.)bN7gG2bq2T%DtH46g&?9J^2t4K1eE"-0=!8;V'b*g8rhLOCpWe6
-oa"40)11_6s\e&S"`W2O*\[\k;`3F8m2O$tF!@;@Fk^n:6&mBB,MBd;tpY&N]B#1/*%N[NJ'V
-3'9uPJ<i8:S7V^/H[R_tBt@$6LB]]LVPn^D_b$DOg.Aa/A;d!Qj4)_[rgf$Y<8F3fR#:3o>?U
-tVAJWj'U\$%:Y>@!ib0(LnZ2>5'5>c*k^dNR:LG=R&1GGWOS\Tq=^5Cot(nEs?0aF6kTDG5Ri
-g^s)/pulufa4/d`s6*64bEF0GfPD76YIIT>CB>9nX9bV,@9ehU)PKPGeOj3Ff<pO=?C&qGcDW
-=)Eb0WZiLD3W)DV0"Wie9?QCV,fNj,8;Nt6k]*)=gYZVBC):j_M[Y.Fr<PkZ$.hoL`B6JP8T;
->P8*r_-pJq5moA"8S-'B)oXcF]STd_8!$*(L)Np<u&qMiWM>m.[g;6aN7/(QGn;E3dYQrCqH/
-;"k4&2R`S0Q;KQ":btf<FZ*F&qM!(-<*Z9t$L7pF]?Jtm8h[I'9Z`?s1f=/kbDd3a9;-og0&l
-1ZoJq#*d#l0]$0^CD1^\(:kCRB>_af0_pi+fB1N%Tu_YXhU2h?1mEG>o#O5MT?hR)56+hTi9A
-KO[9TePGY&^U40\Sfp_;:gY73ZQ]0a`c1@ipgVO2)qC$FTW,P+AlU_!gRfmXi##oG1BuU'\f[
-m9nFr3fHeJV&jF9:$(k\phtU`Mb]#;]=Gi4d6O>B`)2N8jb390p@8;O?%!$B[p&JrYNm;[t8*
-_u`[lO4"qq^U]dHm[N6/tZX-J7troepuP;0RZH@CBHSMj7!PC9CE^Q&SkD)PHXV'pg?KRIt17
-9W\2a;Br6WV8U0l/rIDU\XoNj$GW6!7spK?\K!fYTKS!i&nm9bC_UO!BF<bk*8^GM>p%qnifk
-C#]?oKORhJVXj0^VS3Wc,m-S8.'iPY_fn&'3Y*&jSJLhD&'F>o6FnPglNFa-62,OIJGMM'0Pd
-boWoO#Go.(%s(RTth^0`-']]6[9-`UtA]OOT_.(+;A<Q):k)B.Cr.H'Qa;m-hfP`%iJ"qP$f]
-`Kbsnhc:0c6VC0<]"Zkg+H&))rg1E<*c/IEar^Da7K.cjZg$>=,-;AY%D)D19Y#4ISfQ!HC/%
-$/$?";%hS$#S/RHcso?D>S9jUY=<:UuV\hbs.WCV)"nMUgl=l!WW9'S",C/O^a[p^mZ]`0i`V
-Eqgc0pJZ;iJTp-N7r^#;[tA@]_cqT&iPXtf]]R3a0"gPdaU'B8EFK>0N'M:"Eu$l"KXq1Hdta
-jGOI>U&&Pr+nVAkT^EMO8'FZ?0cFZU)?imD@/1t]"O^'7Q8YXaQ+$LEpc7if``fNs2I;M_?W=
-b9?_fI4c9<I=oqI#=s;5/l<lnQB<Vc,J34^uml`&^H+k*MR1t;fd';iT(F752*Xhol/PXX,@`
-@#9E0Ga^.'R2O_X!]KsFh]7-OS=*@]E)l!$5gFfh/QVB\CA#@tu`p]k;8>UlpDTXW:?;F]/CH
-n`h1KJ9?q3[Eh;;B%ZAr9>^p`9U:LputhaPj60hFp5#_!?!Q)T=48]H"l33P=FnMa![#iWV:%
-/j/=4ZP08Z8)5#BNSnM$N`tr%&=sk,9cor\j)Ga.7NCj4Tl*iq;:UL*3]sErU`K>:Z*,#[)XL
-I6:BSNblr%;j!p+HeeR=pU>AG@E@WN8B8[,H$)oPi[L:+)WTS-)Q<PkZ$q_p^,^[XlL&ngDl(
-Es9@3?-uM!^1Upo$]V:a_BIIe+OSJV`9'^<X1383G<'?NP/gYhk93pNE-sH@FmC%#MCgsh.:=
-SZ-CLY+5$3+2&E5MYd'[tYGjW[70hp8epg<F3S(W9g</\:P^L8=%E3(J^J3+F'Y[=nP'ADd71
-Lt_E$BuP&pQSMGne<:GW(BS3RmlpN"<tAOL]A\Kr5o8EWWZ/W#<M5,<0.de:PS*3&H/<IAf'a
-J-h8SnQ6;Ih0;>KrLMT=6_tQFgTdXk]:0tp@$_cn)mD\`1*s@ZYYC.[FV)[!V$<Eb&6<57"</
-hpIMErU#]!'-'NZT.MRe5rP?l/j+W$?Cpr"#,EoA&A+jM]ZHB'%2Ve5._k+mcU2f11-3]ZQ"F
-b5oD3;>T4Dm4GQAh-Rk)R%RCaKC!Wqq1EpF[&c>@[iK3hm05NRL<*\g"8TUNlk.r3(Nd7XDaf
-6RC2K^qC\gE;:<6P'udA\r$4]Y."%&,3oX6_:ZikDi+NHn-1GFb[8GG,nO*qLcf&k.Nqaaiii
-jAW>WCq4o`V;7EF91[7e!>kO'3YD_BT08hhQVl<16Wl6q%X[G%6RS]/q1e@@%`kgTdLgjio4&
-@(R?3)mE%jX\+B`fHSAu3c'sF=G)T2CoG2T$.`0cSJZ-8p_73aI#>K7_Ir[_Hr=3s^f[+hq[>
-p'&8!'+fm-?MTkB*Ydr]mql)*9*gRfJ!a^I952Hn*[35Y[\m/<43CGZLKfM=jV]7-XV7s98US
-WR(XgUc&.'q77`q1@nXfQ`FV2C_q13(*LUf"Xl2.Fu4%WJ]4u8mYug$PX[qq(i^*V6G[U.<.&
-&K/lnD:mF@I!XI_0/;hKbGVf]J*$ftqikp3up:ITUKh;S"-VuOX]jo\VJj!0$[UAh@_unZBLL
-"NY1gu.O4*j`[NA<Z>3jDtGm94=Aa4=:IRN^*eM],e<YZZZS8dH.Cb-A2])eIYuKCr-DYJN=,
-elH1\(kONE.H+3IQ1-6brf'^"'q`Do5#I'O>R3&<ce/;rBBer+l8G2N::b+_cutVJFq38?*Mm
->7K3%\MfR&nG!LbXiG_lV\]1g]nfjUPVMqYAef"i+BRm*P.A#_b&j&rCNW74Y;VS&&a.`u(+m
-7W\X_!9sE4N#=:'\BQo8l6=WO&AeGm)`a5%_FOLSUrg%E?)TbfG2E/+El%=V]S!Jf\sdZ2p,D
-SGG&aRA`ME,L@$5<B#QY9[LH[2!4MT0Wu3)p6q2uYYb`;.p"8&VbrT[h@T,?H[6iLST`uIdf[
-t]`.Vqpj]`RN]=BC9#19@Om=t/$'5p1`O!c,_VZ\f8cp_6dUI#>K7^aH[M:Q1DA6[-'PA71G(
-ISTe(nT)cHVi-agdXICg5</L$LMtOcSJE^\YH`S=^&9cpU<-*(M$>3:^88Q%*FD[q8Ze"iT<R
-Ee2RQG(L?d6(I$^j3<5(f?CQuTXqA1T-NjX"o*bBI',uRcE;_2@&,t28Mb:*u7S+>3r_kmi#V
-6DD"9lY!,@T+,\+G=eIqB>Jskf$"M2S--?JW1>q0THTPfJ%md<c#!J_[n^7@!s-JS$Ch'ogZ%
-O_>8&NdplZ2f'0D6Mm_qSgPWD`=KB8A2:aZNTRoE8JH>m5"Eb9s+K3*p.FqI,N<F#H!&7:SPj
-g-59)'*Aru7TLJ)YN.`.\@!!h>gXDjh^Xh,ADVl'S:&:7I5QUDt06DcU$m*#dm'5C7bQPF3a2
-NCJA4@!<F%d^-943ZUH4ZFu7"/So=aBars"oBf#]WT'sNSlG1_3KMe`R#Fhkno6)h<V%pOpK)
-BrQoiL%9uP:CXqOW^]Dsqm1'46S8-fbC+=]WYJ=lm`!r)rg$/cQ6/V$IoLB%thN3C(M)N:bKF
-U]m;0XM#dCXBNpju"ipJT2-Fet@@!oP;ga#.c\=Y!Mq'[&u^d)JB+.ciC!E-(k8!5TLsLC&f\
-Z"\=.V5/g_4T475<iKIB_-Q6DQ`8C^[!qafZAt!$:4]?G_l($h1STYrhUDt68Lm;!K/VC^icR
-Z]q1\55mIl-_C"#"iFT]_"=T%EL*/Tkp[[]lljXW!d.oDM.mUZ1$#^8^%kEh9Aq#oTA9jYKdU
-X_*QGdRmPs.4Jo+LghON"Peb02WV:iZPBIA88L_B/#"5@70nc)-\?gUHs>Ob!r$<:2T)d;':U
-_j$"KGYZ3f)VYQus/`./DI6C9^KZk:<;kh1d[%FB#Yk6C/$6b=E,ld<9bc0M$*#PC,7XFk7>P
-\Zsp$i*uU#p9nS7KBCf<GN^[K8MN4I#><E5/l=W`$_sM:OEnLHQe+Z\.E%UQMtUp4S2D=0.1%
-hFP8`hj2<@dLH/u.%1B?Mo%/=slfFe-QVHg(ng=Nhki-f4p2odC*A;)O^5ZL.:tNW]2#LJ#%i
-]dp`=J2\:VftM2UkYOj"%Nb8]hjLH!J4!.X>";RW9GbZ!'\TJGYGcLKl,\Pt4mt;1\LK7/%n<
-#JiQjgC=1#pr)ZZiSFai/i\#`@OK0>?u-';b$clWV$o_&(tak_m4`I2BcE#cd'FJC,3VJZg]H
-:IBK)]71Kl`2GnW#$W.ep;#h;Bm2aFVKo(Aqc&(s"nXFkUHWn'K\5_T3t2(2[-_Pd/YiD[u!"
-/#K@5+,Du*\;=d``RnV&Anka"ZS`i^bf[eoM*a!jBn*mg$,lk1!6!'r56\7/\EgZli"3adUM?
-='<`6uftcGsrhS]f*W/[Q*\@h<][/un'0A)L>g:S5Gtu=:-!M'G,Nn<;^+86C>.u;ZWg^+^pe
-iDF&G(-,lU6sD=Y&Fja<*_9#Vo;R%O5s!nO&*R7(=/O.a1o/IfR4'i-c;W$!\*&*l5dDN:4g>
-5)`IX=oh8"LA#(a&,LIe/;?_)j"Buj6MF7=GG)8^\h[sBd(UO&gX*SBR]TDEd'*\Rbtr;4@M@
-fhe-R;QLmed7Y".#'8CjJD/]<6@I+FPO.C)S@'Qa;6:Mpo>LIig/R><R=@5PpD!q-=1SE9Z*"
-!5`_dH@<LP(2.FA`Kmi3ehq/9"Tec6&tX07PCs7Bf4:IjAc;cFRcZ.]cI#R`uh_e^5^,J)Of<
-\i<;*b2mPe>SW]TpGYZPmHFCn>VO"-VI(,QB,]'F?)e-NbcBgtI;+S6JcQ`B?EqRL9K@DV$NZ
-nBYU.5eZMVs\cHP6<]phJ`8!q++f3Wb'N'8J;k#\+)o;@RCV/-dm$(^;$MT*4:H@+l.O54hgK
-])qiBkhH9rDJ7"&hhBXPB\iba3RhVRfFHFi.(;MdJp[sk2FFnZ2*shmU1scUlVXnsijC0JPjg
--99)'*As2&Ctc#f,J76ZNI0u@%Kd08A70Jpu22!7$71W<KEI?X<Wl*8W!9%Pbf<]Ve%(uue;[
-.SI`bRkMl)eh1Vd`&85?Kkk4NdY);C88=nVC$biiC,U5NU0^9CF.:WfHI/qStF/MY*Np&[T<"
-$KHF/k,N_)L4=/uk6G>)1X2r&-grmd/7-Z'D'SrAHoEBo?8+8O_4U;"nnC>E\#PTs_Sq]UeM5
-(o;$=gI\WIa^K=<>ME'Ea-<G6m>`0NGqkKq??3r@%:NF?Tc^5%lIo?@g\@B\j2X)!YC?fEkP<
-P\![-LO:'+[R.D+24GcFKIS,j)c3d\icQYR$^%*8:Q\YoVjR>t52!^@8]I-R0HT6P"\&P%cS@?
-%TSN,;$omLDjG]YY2VoM:?c/D>ns4uZ%W\kI'>==]9UglK7c#igH5E]0rmJVu3Y#kLV2^gGf\
-=?:2)M@JC?0Rg?<#@G@(2XBlD^,TZ^+rhWN5//&tZ.7S!Yeh4<rhj6>?XN#Ph<>SO01cW<OX)
-6Mq9\<=$?oi%(0n_Z)B=0>X]>qZL.W^`gb:Eu7-%Z$M?k"7%[DA/I@bJZ$jr$ZcbNO2H2F4]6
-ADK)QlRX.VNSmA"?]TQNJfpH_^Yoj0KAL.Vm9/gtm.?B2VaODRFG#gt<'g'!6D'cS9%?c&]h/
-)aFNrD.er8Z!;lMX`ucM]p(VGX'!b/AopFGo3(2]T[n<qX'fXd5O\d0KiJ9A`;,]DtW_J?;?q
-L@A;T!E<C^Zii&Fn*PAPM<Qeb'GccZe9t[3/^RBS1]VM9)aWD6Sa_@hhO,SfsG"[+SRX,9%/,
-=md\oN6Li]/1:"oJr-(?EabEsATj,YfSe61eH9ha-`Gk"`bM!8h#M^&b\MY1MTV"VXLeT>[)u
-,:?lI!>[\MNaq!Mo[Ud*$mljN8($oR\ndsg!hDiS3t1L"Zra$q!1G!^7KW731fQeA!Tb@N`/s
-FUh%%NK:pUU/&ZW9)Z3_6b+l7aTFfY;=.H+3!Q1-6brYqKks269&@3WY/"i^V&c8%0"Y_RG#(
-j'e,P&kg'Z-beYR:5rnoNLGrjBqkUlK'TRSL-CV]P6:l(]Vk2f"j']8$s=Nj7O0kS+s%=(,`9
-RE_s^U,qge$/*EaTRUuDjQ6n&qX6)hW%@-i\bR<P1>/^#!FpRk'niGhq77N3b3@*;jrs7"QK[
-1ie#'8&YT8)f_Gi+-X%G*$ghSqqc`o"_%$6uajq?ec,A*>3I]SO9<@$\]P*6)X=;hse=TpMJE
-.HkN?I0/e+d!?PR#GJ,KqCsftT\9of,nt\Lhi53QOR5;-)5Q"`[2"kLW";;.&S:8O>$JkAa=?
-.IbcUf&:G0n.P*nb9@n]=Y$o,$&`;jDS]KaYsL\IY_FttnrTUk[4cAaS59YZiK(A\7"mH<kCH
-H^K#kVD^pJ^,l/oXrkn#p'&mdalFq><(3P)]B3eH+f>@'n9*/U>T$3#O?Y(`lkdVPO_U/J!SG
-daWJGXQ.%/@73N*AFsDJ;\Z_.C,LqXhQ\^-OW".c^&NkiZO5Y#0mmD>(i'%NM'-*o)Tu$N9(f
-Or*D-.`bGnWQKA)K6:.:GCHP6/`;k]n6*cU%R^3pWGc)VUs"IhJk@BKcLB@Aj^2TaIeiTmR!#
-I?7O'D@^9i:pU8P1/r+C7"gHB-%(TX&jF:i5O^*Q1]O*B4H(s/@WI$V!#K8cT4Z<bkS,7:L*m
-kI1Lt!7PRGC![k_?bIuq#8SEZlr9Ws;^NV"(Omc'J&Xq!L8r):e\2Vr8D]npnAD/0(,a>"E"P
-oNZj\t$OcdjjB2[CdjJeS5RcGbpT%@U:["YDANur(4[GO>e=q7-5[k"sgoK]F3*p#jW)h`8$^
-KleqXKhG<&n#?Nu,+(:lIj(C'sKTX`f^'DhC(cmA%7eF@tZO3R2@=/5A-dhl:oIlk9%c),<ld
-1(hX[ge:,W&:^I0:"7TrNk<!#-'epS4kmZ9>,u6b3A"AWU^s`>48`.,.S8Vt_b#;p>1JTB.nN
-8S/d,M(p%0_[o`S9Et9"QAK=q4cE,*^6?r97dRd#@sF63@>:il=u\af\UFa/kr3\7`#0eJ##9
-BiX68j[H?=7E3RpT#$_:"6C?SLCdE%e,:+0gXE*Q.B4b&f<[$EYH*3&(C$%K"O<QngmBbBm(O
-B2UuJp]e'IE5Y[b)F9"Lmnr5,('tg"6R=KrrRRT_:o9?#@*n=nJNZ;_>$$L[:A8b=O4k4N1n]
-;d%KhJQqtQJ#if.Q;5*kek`t@Z$+^esb0bYXX`\<+)OdEtf:q5DW2*62K]3!m'%H<(X9(8++P
-haO*KY)-Ka?[4X8&bHiDX9Pn1!N!IseOVAg0p(QsO/M^uR&1dnG"RQt"jmfHasM7W"*E1,@(#
-<e`17%5QGZ?nW>?S2W01AAGuB?1dGCe%lnBI9LsOk\[#kM&m-+;UaGmQ\mCASI5?FVk]iI1>]
-+oKTu1FrZRu;Ou>&8auLs2%3\4Er!dp%EY`2g+uP1p!90=W]nGlN#l]W?'Dt>p0#DCS]*kbLE
-9K%(M=E5QVSgJ&Yb$KD%7@673/bKtQqtWl/r]7lkA>=U"oTD(Hk!ZRTm[77-dX>5o<Ze+"18O
-H:I=^WPYrn>6@JoW'$0d?AhTrh<:,@7$l)tihMeb"-%(TR&jF:i^[T@C\X[2J'q_<.1Eg?GQk
-&WE/5t"kHC15^""+bG>dQ;)@r.C7@G\IKC11Y7Oa`%3))a9]@`ZW`J\`talT*k=3?83*hJ&b"
-KsOLDd;VQL?R)IKoI>,j6'%Oce^H+F]9Y&u?.HS6TsKo3MWlPPUkgs`S.P0#jDDtt+u=i#FX4
-&E>7eK*n0!>]R-TD)&q";9It7EC\1YX,^dL-$047J7OUbJXLZL<#Bef*3qEBSC"f>lK5<t86h
-.l027d""&WM"YSm4Y57J`c-h3=^0P)P2]K8LSAIO@"C-FU'%QTOo:AHVc#CU`:-(+Pq]*+[kW
-hp_6jWI#>K7`i$%u:OX%N>`@>AZQUqQ0G@i+QK`*IoIr/AP`s3\-LH1g@q([Z@4k_$[kK_]=?
-l9K12:FN`/'Nf"7L@eXCo%qGBF=.)/NfeKaUVFf5P'@\OHd&$n-Bk6,/qroph.aVNsCpIFXjR
-cs')FR%A>E7/T\K[t$*lS]FML1P+%8'#,YTMWcb2^EN@[k,uNb#i?AA0>i2E/i+J3@,cNl?c8
-<4,@.O&%8/('^;PO3I@n<&%]5:pCdlYfFJ":oK2+:GNR5Crp=I^g$CY=Rjoj2[TqNO-VkJJFM
-C0O5U@'.7O.k\J81RNE)j6bjfFG0bKMPHG_P`du(I!OQI.E2#N\M>Y0#[)XZN4ZN\MVQiLRBT
-gSP2iMTq)^29T:ebbbULq$Qfd4dEb36'4rkc(cO3f@'#8@4n!Ua^5c&BUMYss0[dmd)W"CKgr
-Q^WGEiRc(m6[Wc_-4)[9Sf6^7+X+c;cVBAtYZ<7(ab??bdQ?]uYJ\E?fT6M*DTeM5VG')hMRe
-])hqMnGN^_27SG")M"Rn':1Cj`g@&W7TdEZV&Mc<0Q8(]?c&mskn=o[Tr/@U/^U+Uk@s/:L%Z
-57)pkTOo./1XK_bfijA=Amq(rd]6N.,Q%RX9NRR\OWLT8%Llp=,Y`*6*IWJ"(;<PkZ$qZf;8J
-)aI0`?ua;5/QCmQPZ"s0K7211p\68VjMUIBp'>q1H&i7R2KVjb-Zle5sFYu_d94a9UV8'121.
-%Mb-&RFRXjA#qZg-9XJcDM/a!bC;q21;_b.[9Ym*dpZi]^0j;c!P`]]M,`G^nSs]8p)&=qXA6
-?Vio(0rY6"Un3Bd@R@mRG][n=L!C`1.is)gl/b%`A5a>ee'o'baY&IMlX^0Ofde"H*jZhdYL_
-oR.2?H'l=!;2:`=d/>]k+//9WF<<dF*no.XD+*t7d(B_Y8Mlrfl8^9YTo_QHMn6qP4+s%)O?S
-8r$:r+6.#3$dau2VoTnH4(<PkZ$qepj_rl1k?aMKDjq%3-*bQjN-AU^)k*\L5Ck@AIn3BM:?A
-k/70B%G,+L"Sb(qjHj5P*nriArOqNR-A'LcV+Sm3i9;Y[kZ^UF;#a2pe]4jND-==;DP(V9$UC
-!P;4J#R?TI0c(p"'.eu?R6obo)-A5%u(dgKE>Srk?;Y*E^&>)C5)IX/.DTppghZ;V/GfSbaKB
-i^]f.leG`iife&0mNMm=iN<+VP'=kkc.XDOA.inN;-35kep<T0m61F=kitU&BDHWmTT-bo9Ko
-MM@<k]`@/8:cnjU;:O,]-:LWdU_6YoK4GKBG*MJFek5]OF8s*i--_]#<u/=Zj%=tT+Vkhq#d?
-#+_DDWA(8b2QZ7sCPSHTu(UWa6)De7eBr#kV0bkEl2B&:J=Oa.'#?-MW&n)1L3b??O-EOgeH9
-jH7'Ve3)o3>HU-jqQ%]RB'sq``t*:;Wb!IP;$([S=%uMAjsoNR2%E.Hj[Ce13'+a8;%Q_+Zb\
-R*<^"/2\#don4gabKR4?@lu;l_M,B4=a-[Sdf3fVPjYDQCU#1f8'?iq5$nuk"k::Xu5d*Q<-d
-]7ggPWEqBRLuImm-J&e8M)?<N'5Unc^G%6[fGd:I4\6C(<UW!*,(FZ547f+Pr-a/L>e%Y7a%<
-*"+9%?=A#2knPOH\@BE.$6q&0X`0uL5_66F:)E+CE2l09JWg8k$a^X.>2X@NecIE,%Mm](?uL
-VY!_ih:$T&RM<M2P%N]_H0C@c8bZR*qp4>hDao5)WLQ)?B57@s'4lgpA&=du<Gcg#(6Q<Caln
-M8:S.9`TfR=aN_Z8n^:8>_J>+;RHmMS!:"K:&-\h[c=i\%QamEQ\N@!tu=b+33"N7Rlm:'c%1
-[%Ui`FI=:nDN#tagcA6Ccn4bjUet]PbTBl!G(?aEA@4TV]j0T$ZW:>$5hGiGk,u,q/6B:)K3$
-uOA20_HF6WH)g_'9]I/&ojiC_pO'7ViWDc2[I4V>aa,T475<i)=$h^r6@b"\&h-'tB?<+OA_'
-Vt9QA3L-L`R?Ph$0@Q6IBTBtj>'%(331+3*QG$FiZSZ6-bgMSaf+RaLlr]u76Z%Qp)7F).PbB
-EkFde;(WmXkDWCTteOS',5HcXorPbqQRU*R_#'ZDMe-RhYcR%tjma'oO`$mI-R'*uT4+,)q<R
-39.`nG"a"K@>`M2s`0L*#P0\n2Pk9K4P0eXghiVjWXOaJ04[X]brs[(lYuO"+<*ho[%a?'-5f
-7BPkeX<h+'I],J>a`g[E^9neq!32(k-Nk.9mA>lV]</Q<.GZ99C("i+:5+>4?'O)l2MRgLl.K
-#0$T!:C&H%tlp=Cts/ZT1eDkfIfo94sQS=k]3U>N0=N_\lW6Zt).`Aq-8_Bpp-loT7',%4QIs
-W)']D8R7M5,hjBEjT1h`e0LtfY]5f*74R=s`$pbR5#,7>[4t9`XM.KPI9&fdNj:c>;1udl"d(
-q8jq,aE/ql@nbeu4VKdVhY+E#H?iQ"Y7`kD0'N>jKTGJH6?b;b6r0JJ)B.t4qba!#gpJ;\h0Q
-uTrqYDh]3_&(r&9TO7cB[`YDMro1r>4G?DhU^To2-t(6b::0'KNs(@j`n?H:Wi/p%1Ys,<J<p
-gW2tMON:J`?/)aE[Q1-6b<q.X:NDG!<T4LK4%->!\@j&tJ/>niua`&^sB82Uag=*DljQJr@Ve
-AfPP2p#6rCQ]HTK,;:K#U4t(>0G#50f0*FYRY"ZgBq\U25]b';7J(`X#T=W!lT:VYi(46^3:,
-)ko11l6%A\XIQ25T&oPXbu#=N+HXW[%_`@a.<lJE`Slcm&]R3MJ'?kq5=U(2mY01#M[NT,\2&
-WYj6.M9Gm$?6nXTh"LL:t7Kg'lq7]-Q")"C`>[,#EIUU:bJFne4[pY'Ve'ogI_6\AIjGe!i.W
-ZYB;?@cU,4B7.aA<>B8>)GhNYYTka("ag%=W+Z*Yc3:OYuSZ=R/8!#jB(kSAh:EK:R2A]$tM>
-eiH1N[1oDDCRGqb7p*=KHN]uB?K%:&VM]@\^5L/+&bqY[Tdhno)_QF1;pXg(T/kkY<[Y<?H@T
-/AW+Opj9S>U+nauLpQPQt<?LGD)0rKPU5HA3%S.t&+-ZeS39QbqJkGk,h:i6(!('IFKta"\XS
-=;WuK(nQB1O'd:ElG]D8r@[_&nFHe,j"QJ/3.`2%^9QV5&G-(gkelRqHtpMY,MIM6@5lKsdF=
-$IFa-E7;seh1'rklYU;9DY:,G5=_QuiS;rFSo20G#'E3KNOUl\QL;M%%HfI=i615J=0DT)Aa5
-"/HXT475,I.F?5/9<Pd=I,(#6VC\*0TbF5RaW^3;OgA-q1+Y8g(Uj43?%("N7JgtpGj(%ItYK
-IR_pt9BtR)+Lg<=3KBu^5DP#QB[KY:r@$@3$5Lm)VS>"(qV2pLJb.Xmk9ppdE*_P7iG#L088f
-,IU=RN!K:C8*V3:`HXiK"Cr:LQ)2OZ9L6@1C*e`76kQnY=us?8$bN_sDusJaXr41Ch;>\jl1s
-'qH+f3<\.<54-6J1YPN92<&E_R_/+(*q+:3PR`[V][;bk>+ocP9,bI9`cDTf=5fMZ:FT*ja,r
-D&P+el[&h3NS@BTgn$C$IRXUJE+p_7-_I#>K7`$`UElmb1:L,*")1[pL4.8D8TH,-B^SVs"sd
-iP:O5"D@fNmJ]<--X1Zqa9]Zd2\rrJ];sRk1CEArXM$feBLlQ__rT@VV1%,ju1a22Z?.1S'!0
-0>a4,T]p#`d=mM`&P1;K?R:)k^i]gO_UZcn/a!_eL@lT80)-BhA,]GW$_'fN)\/`G`3W.sYO$
-7s[L!bl$(CUdq:#P>WS0(,=#X5`W1CLQWpilc\oqB?`1F@KWKVf"CG2nf.%@q`BLY&qYV&^pf
-nR=;GfAO.WFU`S!Kr:06;;d6ML[%\^_k[78]sE^#U.Y4Us6G-u#="<;&<_d0OG4=pL):hbB`k
-/!)q[u^`G!ePCYcBqlUt7)'"dHu_(Ai+?0QO?C`f7[?+]YW\CE3M[90)F45F'I[6OcW[M13m/
-=Z[W6eAqon%Ef2gtOo]\T@ec9ZYGG1NUl9chVS+ba`_]Z(q@[q,j#>"ZaZJ`gf`Hb.rrRQmVX
-=$H^?5"N]bu5K`0C/brZ5fl7L.iMk!_0ui'C1e-.U_W/Q#\B+B%4FD\b0!P!g>DBZ^/9d`FNm
-hhDQ;%Ht4N3&=XRBfX$#]!;9eWPn=kU]P#(>=/paaP"\?;$,a'!_I,tD+n_)4_beBV'2/84)7
-6d.X5h#5IRc`C/ZI)5FjVZ$;pp0G_:f<B$143+RR'[=Pjis#?h#`YaeD#b%Df\2)kHVi=Rg.o
-;1'K&DMDB#SciiQ8Z\cj&IiJg"imDQ2snS/`[)tEJWXPJaMlL8%1SuKP)<Hqt/*oDXk2IK5_*
-\Kt1>23J>qas^^JtEf'Il3N,@;-m*$a;$$$h>u9#P56`OboJDQnJ3E%EZZ8"N]aeYPc1/s0sA
-IX#r>dZWB,2RAV\-`$ft&BFM65,*.5oNXKYfcbi+4E0dV=fQ*F-#J#234&3&kT1p]cfZ/_b=P
-q<5*c<]7e'4mF<d&NDEVb^#i[Du3\F'XGg0*.LP/Ah7`&.d%oG=ZFA\f0fhSQqOR(JF4T/(0m
-1NkL$-e#N]5kB,GHjrg1ph1*94,X%U7`,DZ&)kFTW#J!=5MkkHHTcV_)t.n.mA$UBJiDGgnK;
-.VKs(ZpgkSu*TR8+nBu\jR]\&&'\)Fm".':CN[<SDMO&t;Fbuh:YO).'Y"Wf'^iEG#@L6\T;;
-1e^T/6e)[7E@(!U&nlg@t#ISF"es\ZSR_m90TgV5-@6CEAKi%kFXu]k8Hjno&;XT?/aJ[*5'3
-gUHC9JhI.<=fl_kdca.,;m:U_>$kEcPFau'A\G%7mpN&hHRsWi\2`CB6Tpt_)A_ktnd`IqfXQ
-j3T=5;G'hj:EXA,.:N42A0#/8\t?k:CN0Ra5*CO/kHU_/:m_`OtT^rIikKbkd\E9hbSCBoP'u
-E#l^.LAGn;3/5"Ae.-!3"hZdIRa\2V5ZL&*l9f+nhX&8%::tQ\^*EDQ)_)>,I4JW<_9;_[Fq7
-p3M<CAuC_KD[n^KI]CrJ'm:gApNeR2)d*o;jM9mC%J<`S)7EYPUo:WouT'R,fbY8Bo5,Gtg*$
-B\VE47\N%LNto$aMt;co!r&sE>t(%S)OCnQ[IhZI"("=J+1ldNdT02=*X-gcX,Vh#Z(Di-\g=
-O*K:Hn3lg8nfl;c6K0293"/jf*c^#7"q[IcDE^pY0]@k]Q`in(BanfMKlen'RXD)<I)_2G=ir
-T#MZ_E`HT6"9Gb<BG#?C'qdnLgut_4p=%e]`V0Ed8>i5%<s[1:r*?^LtQA9`KWW^V,1MfC>>G
-W#<Xf@sDW#D\(m1$`G&^S#<N2!,qL>6Q]Y#_(WFjC+%RS`@FIJEZ<RN`/C`GCVb)hnB;q9[1c
-=oitkGbGpA3UiFcB"V@J[:ih78Q=G?W2UMpn7h11(aX=2-[[CEgWb=]%H"H/2#ZPnaZOBmZ($
-BUO6H$Pd@KA"qFR>DfENsh(tgrtiM\UI18f5A]Cr0D^_na%Y/s3=OZH/\mPcdN_?f,5VOAB2/
-q5K1MfH/Jg0^L9bgp\&QM2g9AK\W]b.f\"#pY?9]-\i+Fd`0pe0q?nggi5QQ/5%DQ<Q@I&"]3
-)LoV4XufRDj[:RQn$TOfPpqTRk;PRJ-`'l^1u$XPY_,L?\.\mHkjk]T-?+_kqFd0o":MZ!eKQ
-?,/+KnEO_h+$b*9?KoA=*k^!^(HYK;'[If9ZYas`+J*=:8IL!P&!-0FnP9"`)/G\F\e,Hk_a@
-Yu5TNnUU9Fjr<hWnW<c5d3%EP`g?0,1s(/)iT\.gqL\?d"[=(=N.jqf5J!;#b9-P*P)0Ja[4R
-@'RsBethtq7$dRa3B:YkBi4oiPdOC)s,`b%M&*[G<Bl:]gFX%Y\T?@#M=$ZmJT0&`rj"km9rX
-HpNCP#-[-P?EsJ2gg"=<!_lQ)D])CF4b*j)HIE'FCgpi-R?*)](nkZcuR:T)DD.LaH(,p2,4c
-;M^W]CpFEqt(+H^D9Cb^Q$a^LkJTVSCE`f5@8@3aTLSp#C:.%'PV!h([Dd^l(R)iA@,J^iTI!
-V@TLdGcD]YG2e@Rpr*h-hM0&\ib,Aqdt6-InF.J]ZkGmQGb>AD)H"!RpMIl4F]_e)T@RCq(%O
-<DY"`$,!I5D^;NBP?a=5$$;CjB8Jn!N?)HfMM/B$<FbfRol4Ntr6H8_X5iq<f9G"Y$AfIfM]E
-AIXdq$4*.jeZsW>is!u4?(-`_]8T7Vp=nP&:;aM(hD4uO.Tt'$+BU!E"<J$ZaG]CS_SRN]0!N
-tS]u"f3lK#?D"nD(^L5li\Rcju5%W7s<pnnc5LK3[/"0SsaE?6>f"f]E=n4Wif5f.5/?7[/G?
-F>mQWGq\'6E&=p1qmP@)dMi^Wa'ODP6>WT"g"ma77@j8k8FD0V5q-Os)r-)F#=Zj8CCo_dbiS
-Zl<dAZ2,ji5(\RD:im6Z[c79%XP/HH4h,\`mV,-V'37##`AT:)MYoNj<JtEGaK*2+buhUb\Jp
-W/JOS[&\/*b/=AXnN--.Q*k%`*l_ONr''OXs*B'(7"#;`Z*HR>U]4t]7oEAKi%k6G>,`[fs<d
-M7e$n_ttCrLIRSEps-+%Iq@Sp(#Lf?roRRpT^K[m6*Sebl_=Zof-09EpjV.DW?aECd,Y3<]5E
-PL-N"n0C/=Nb:_@^B2p`<S%.u5qR3Z'J`ZQ0pH+\kZLg(,WF9c]f=](s2nA2_(APE;Qcr[[gf
-KlVQ<@eCG_YHY1$oc9:ja:E?,P".n`Uh@N+2H6*k?fVL[`Z)'Fj!:IQYu4qg5QI)hjimmjRTe
-JpZ4UnfUuA@RUZjmmI'qgq=AF2.Kc&nf"cT)jYB\i]?/O,,YWh<ajBf/DPpF%9QGX43B:-/[E
-N\=c.JNQs5M0X"h3lZO/Ff!9s<HOb`0]\31e[13$M&dUqDbP)lZ*I,)qqb@ga=HnOsK#gWtOl
-idljj/Fgs1!&2P)ZB$fj7-H!(i8[#iD(FR`mtX.Zub\EmQS]4Ipqs3D#,q,pTe3<lZ]Z&'5hM
-r9bXQG=kUTM>Nu$8'u+>Uqcm4?Z?KFI(/*LpnJb`n@o3D2X_5Jn>lGr=SmuXeZV-\Y3&;UeqB
-J[\i!*4f8)Z>\2i`7*E:54C)+MFGX;o+"do\>T(&_7kL\r4Kh2T$.ES"&=4+b+'/3Se8X]X#'
-`VYb/#<=l.du6AXYc&-A[pe5rACk6U/afRRr$oqJN3#apgjjYbQs5S2CGD^q)5W^+K%\,1\Jd
-8^OC!_\"dkmBg[fB2%]3gt[S3Jg4t]7oEAP)bo?RF4>is*U0E.O*^>mo<*$!t;dl]A#hNKemf
-[\1*#!9EKhT<Z*H/L3]I`[mCgq02j>IgM_c26/#LQ+CKYatI3XD?g]7b0E#Wh,Kjj2P:!hIFO
-:/:X/T.Ts3BV&NP-9,=_oR[71L,$-qJJl44NJpG>ZI?`Cq1[BL%grK&P9Y:0+Q<d#;2(TcgdP
-39j`KFX\^4=0ia?>O<!T`n5c9C%:K14Tue;8lLZ1&%)gQ6gp$X.O?$guZ&q0OfF-aK2'eV).9
-A8];tXdE1F\[@f'K/lrQfSkb`R(WO,.kn"DZdrSt):D0??@j'6R'@RYM_MgU[hiFU5,RH#[N+
-(gNO2p\q8j%1no5D-O.-H;cW+;^_FnAY)<&PCT"DeEk;[^@VnV8LPO(FuUR,6jO*@k(PO1kcp
-]qD;Z1SZ4p2f]ch#/+7I*1SWCtd1SAi;KN^6*R<__#(qo/g"'ZLU.rXJYH'<rAEJDfD8.AJHb
-EKdCM;>fJYIYinZ]HCP/"Er!VsH[r[$1Adun\sjR1R@_='"ZMNc*Eh!U23+amA<%jT)"T@fh@
-Sh@`nUU=mDn!Gbius6DTq@`S>4.bJrDTu*5q2Eb\k8`I@.DIZZ]eY1M/ORAg:o*6i'iZf-.gC
-kr"i*Kc-@7I1rJr_"7uh?B3dliq>-$/&ek.9In,ie[V^e[h[o2!i4p&/IuPUpdmAmP)5fA!0W
-DtOF5j-aRJ]?`JYu(c]8JDNLW0qo'Nn2-Vobm3&0.ac"Ko!BQs47f3aR[4$MBG1"q(e[&r`D_
-*aRgZN&>h?X3GKbLjPT`qFd@[WC'Q-el\1S&^td`Yq&[CY3fUCW#6ElS&;3GF.3j]i+Hk/+:,
-tjfQ"q]NKOAND3K%Y@"8RmE59_nX%G>?X,Phr!VP]c]+8R4oY3ij,ZAfrlCkl5PXaBKb&Q<;#
-(!HJua)I^UiL/X*62,RXJgMk(:U`=cILcIl,Kdh!p0DJ0jNAVQ9t$?KV-Om%ukMs6*f*/A/N@
-4L&EM]"'Xn/.:qEpTj#FP4S-ln'(UV^R*_?jlCmM?ZL';Mf16&D_?tHbED6c-C1K's%11ZOF5
-j-bs+U">2$>te##p55',l1fs>>;R58L4]Qs,3cX3na_8:m6F)l::04);5l-a.dQK@;mY?8&=j
-iWk_giH8"@H%1ZhuDVe%mKX46`X:lIe;#X++*@ZTE"iP:H\0cP>=C<o[?T#qs:Z85QCWh0>-f
-&9/"!Vo#iulkj-j(J+_>nJ+]jLq0]p.?[mLa`f4oNq.=2Lj]cZ:<E3%!?!U`7;tJjmmqpa`V7
-*h@Y-.2F%mHqqYQ+RiJ)AW"Y\i.'`l?#Z55M4WWTiH(5Ak@VroB8=[Vt';CY,`F]6Ac$l)/n&
-meuLYcWXLU56(QPf%/FNqtD0lE8]*:6Z$[W?[hf^H[GWk?[[(hkg<n\NcfMgIf8rkJ,S\?]=Y\
-%H@#Sa\%d@_br:'!IJs-C-Vp<R(`<&AgM[<%#LAo#1Ggq1mbGAEkKeYPh00Yg?6$[.lB.4VdF
-#5(Z-/IeO,o?Os8D[nY?nncmFi(8r,DW2oc#i-r9I_iEr&Q]re':lAgAJ?a2:G3DFX2ZHp!AK
-j(9PYaiD:i5&Nj\OaK9MjPsht+3DR@83Uo\nr\;^N9'#2,Tk.K_alt/7e2[h4H/@]AgAJ?a2:
-G3DFX2ZHp!AKj(9PYaiD:i5&Nj\OaK9MjPsht+3DR@83UpG,1/CK-PcYIne"2JK&e/0E!49Q#
-WGSNKM:s",p+;c^s00DUa#.-[$[Gb8Nmp[$'A&91>%8-S:2M$_fP]OcV0!o[tj$SOdio#l2PL
-OG6iW]0DS.&Ak^9YJ*LHL##<G?3J$qcj56B:&1_<ao!(_8bK$JaR[Wtl!ftGN.$Id*O0eB`XG
-DVeCNbs8aGE7SZ%DY8+;=S"l&0Tk/+PE9Oh\uU'Om\^_WDC[rc)1,@FqV'(!#;'+o,7!AsTb?
-?h+MM6\=Y:eiZ7a<^NZK5+sXhP>4<8ru++&O@&[G753I8a(B!_,p/%;OaO5AGKn0Fo&5W?R6u
-hr+33IVeEdNG2bXo"'IR_(Y\/d'Bnk\Y;(7Zh'g*_58JZegjV,!B?\i.MO?cs:.5#]u/<Z&/,
-Thq85"<]9-gIlSWqi#)q:L72jQ$8!'_aPuK%;0""?k9A3eJ1CW7_mj1!.J.1SZ/iKY8O#-QaS
-$hfa]3L][;T7PgdhI&u\B\/Cab'UOk$h%EZXISLH0I/KK5+qqI:C5Cq,8K:E+b/ss4iq12ML-
-@@LP!hK"[3J14=nr=bn<eS3Fg&$5S+?BA&;_V[K-e-W%!=*9,!#1JI&pCr%*;!FG7[]XFTW'H
-S2mH>OF2_#!u%:t,o;cXAB@=Ii<YU-&Af#)+!KEi*M7?*bp4rFne&_J<,;17ai=O^k;j/\,:J
-1ij&N^bmsJreVqERgim:2ML?)h^T;13mm)qg-?;rE74o%q1.r<+Cq:KdpP)gi49Kr)La3qaaC
-9.Z[pN)HA,a!JU^PPMOE@i0KML<WQj=_<(L"IapH>?'2TEN2t*m(<`_[3oGW:DZA#M_A-=P3/
-4U)#fab9nu+YV$&odo[IG#3@O#b&HHM@ZlemLqDg02Yf%@B<R,QWlTa"[1g+aHCdAHKj?E#nd
-u2H1\-rE0i)Q[K^L_h8SIcDm,;PI4sGPK5"<]9-\@I)r*ge3O%:CbOUmY!p50-T$JeCKI(\;%
-nn4#^83Tf-)>P,@HeW,!]P<MsA2pqZ't2e,KR7$9QomP>`!u:BUMlgdis9YGa1pjl"bF:[L.F
-MMMmMu*SN'md;\=FgBLk=QEE59?@sC[2L:UI=M,1HZLkHD*_3/(fL,tV-OdpY`51ZbtL?'S44
-,Blg\cHR>$6_Mt[:ZV(I"W&0K&e/0E!49Q#iQ&PNtB/?,Te1_,=k!b#Y0u(KQ%$:oGY0-8RA^
-`,D7#7er6GgNsSS-D^i=g:^6M\pBj99]559\),!EX:rcI$o!+/"l+t;S_SM.&A\9B4C.JfgE*
-PRb?'jX4#Tf0?243#AjuJDn'$82jRg9Iul4d:[A*+tb%Z`'W55A$mW(q6%e#4OYHn<:(I%2C\
-I*C(P'ZX\('Z_ZgnDI.OXB4Ks'Sp^,Qbm8eq9\_(4sGQr?1W'*I-A*Y9B3pII"K4&7:_/6,8,
-fFj>4mZRgS^Pa=K>[_]t[Vndu0rnhF$<5+rFgaG9YTHpe&+N-sj"),'#-m"'61[ZuX0j3JcDO
-aN\91\*9m[O^9V6=7-U8h'=PB%K4c[\Ic6jPpMcaN)&p=7&RI68$;]q7oaq/r6K_4u+rm5X(%
-9(2)_R4GLo;A#Oa.SbP$OWCSF')(aJ&A#Nn:&BTbfjC>mW@n8dM\:^0+XW*pF//?#8<,9KOa[
-ZUk,tL3d#Y0u(KQ%$:HpML+PItGJ7gM%MXk>3M*tt09lTf]STFBtB=7(aVo<A=gB!2c&6Q[0a
-P)j1%:3S7s#mW+5Q1:GnW9tD/iOF8O\h;+F&NhB^HELalBJL3fYZO\d7.RV^-:1(73/&+CR(:
-;qG)Iff55EQ`6Y]:?a_Z%h-]]^*Ell@2I*'DXU<:MM*H:=P@UY%LMHU4J:-O--LYW\k/4,($$
-Tpf/Z\9_qndu0Rm[B3kj?o!R?4lB7KT(3q)AlL@7`8_76dKA!j<G:nBB1kj!hPAA$*(Ri*YLJ
-"BOK=JS`D".Lu`%kK7&Vs24:\<7`5X3jDu6>q1pK<1\.50B<R+k4qX5h;9rs$83[%>&J`F..6
-Jgs_n0j!,-1o)a.bb:2EO:YZ\9aG%J$d!DkQ1O#][r+^Zg5?&@a6*Lu`&)p8-PIq7oaq/r6K_
-4u+t-+s/=2N$jIgnduq\A+DA(]u!NlR_;$5Pb8GNm.)m\YuHP?`#J9P?L9Hm+!KE*9Z>Ql:pX
-4/i<cMAH\LN*KU<At+!H:^83TAM!B\"<[@9`oZK*6`)lV?S'p=Ua:="&*]LG^%o>[hS6f7^lJ
-5<LQLr?!J$k:>!1-VTtQJ."E(R<-f:HhbP$JTN)4uQ]5jPpLeP7LTk@qfT`bsE%c/P.30lYdt
-(UkVfMOcPogr,&p16L9mH;f>29KH$a81dYs"a'sG<a!mb*a%RLmlX411LPgsmKY8Y'M5pmj%,
--Dk"-eM2foP2=&kLe8+1K@I*hBtg.\V.p%1fT@6pAa%a[[TfccBa^jk!/r$*;uOQ;</>@?Gq*
-!g.kh,aXQ(n]?jQ@jS#5is;6=%m;t#KbZ.B`QV31+%doCI/MYB.[#ikGXakd9"s]`Va"kDiWJ
-AJEPe;g!]S3@NkU(-O!DRd+9/3E[AOqgap3+LF?rShoT>gjq,kX>q$<&?1&2[O?=>3Fc!DP+8
-l,^bG53!?==Q^ZiXP]cYP&frNtC_%VIJiqW7`\Sn-%:1]gD9%6;.]KNtB/?,Te1_,=k!b#Y0u
-(KFj.dq$8,`61PW)%G9'DfPW$]ac_\rDP1/hQ:a=f3'G$Qn/=S1bT#@g%/'"n!M<sT'o>9u9+
-B"`1;6<gWF9-TLc\2F=hH+(C.JfgR&#+G8sSJ$Uj,Qs9]j10r701#&`Pn>A.B,\b2d(24b<l(
-9jXpBa37!O_@fe'II^f%&#0JqdG<(,`-:?816qF8(gli*?D>T_9H?E=/;?iLI)6@(*jp7(8j<
-69^kttH-6c2^@HFG\36$FY4)`b*J@sqfJr%&$j#6]eq.D69CNbE?Rj*2(C?2$ITcu6Zndu2H1
-\-rEWHWuB!n61:$#>8$5)FSb=S[XLFBBe1O[(06_]A<)i.RKY'1ZTT7lZ*5jMN78YuL9#`;dl
-;MWBu6GXakdP/$B>_EIJsH<)$Y8TNmeU:03CE68Muo('&\B:n7KUr4Dus/&!k#O[Hf,5EK;PE
-?CB`9C_Vi^"Y()Np.m-6jTUK(,.T%!AbX';&kf'aZ07K-e-W%!=*9,!#1JI&pCr%*;!FG7[]X
-FT^-PV*]EYC<]j1q$8.@"Na.>i<YU-&8o:DDc#h5P*[`q#iPuf21(&<@tN0N*=/h\Pek$&Wnl
-$G4uV?JlkL^akT`G^o!+-,Q+C&LQYBC]*_+.rntEWrfLDm_a/7UY3qk<`*g7,JhQ\oAeiK4_"
-KbconhJ&YM[tdJil?q(bZs3^"Yk_`-Qf5$O;b>cn5l](Z\%7J7^[tWN1Hp<0iJ>43ga%%_5<r
-m_.8dk&McOP?slgua=IBZ`Yf0]6PE!SAk5+*&9lC>D=V-+cX(%6Yk!XD*O?#;B=$5%PC1T9I,
-_ptnsO$F:3QGdXi;1iX%%iSPg#5:b`I535k6Wl+Wn$M<bb6]j:`$Fa)4!a+"$gM'c&O)eHE%.
-`eiF91/):$$psM>_k.mC,5M$(N-pSKH.s)-<I<A!Q!pB>AbNK$&"KW`2Ja]Mq=loIV''_Ye.B
-aBSQNGZP`cRD`9E2$"o?<eOF/U/n<6c@&U*1hq&&C'@4+7`?6KqR:^0R9q&&C!.R\=:%Ja,0p
-)&sR&FL[<@d=5sfdhaF"P&sS6Lk^T9F6lC&Af#)+!KEi*M7H-bp4rFne&_J<,;17ai=O^k;j/
-\,:J1ij&N^bmsJreVqERgim:2ML?)h^T+g$2m)qLiIk;iUn&^@M?==dJaiC:%OaN\<A+F&CF=
-[m&]2%JV\mIYP?U/:<$cfLr+#=`/o7'FWp;r)h0r,")%(p'`8Kf16nKf9tM(0T'Fhk,3M1lt^
-.;Eit?MX?u""Q]hS$@]<p_Cn@,`oNO5&QPp;e,M.,?e(P-3L)6%_$\'a[[TfccBa^`ApNO';8
-G?'KN1@X?8n6Hpe$uI#MU%O'uL_=QO$n&ILkq&IHB3nmQ:W?=B5NHmG<jr4+"$P)nXJ7Qs;a]
-^7Ju>?G=+,R:J?D0CWQ%)bI-f[2!Ano9sTjQ#.i(P0A-;*uV$jM_`,^eUCPIjp@@1,L6ub;^[
-fiDhue+%+j7m)5gT.mu]1b$`=D+%%&AKh+tO+Wp%#*^fK1_B$QoCu#(KH\E$&TN\['83T@r.7
-*M:69'SX,D:"=a[ZWq#a15[_@\%8+bV(25$"n_CSu+RZ+aIDd7>CCNtn[YD)OsoKfD7sJVlqV
-JE13klD4:K?!+q!AH\gECuBDIoF@%F'dOmi@7WRW,PbG-o'md@J'3T_L'*]g&rYg\"j+f3(a1
-aYRacre`Bj&d/2>6on6oU1T\2rm8IE'N`u,MTUp0DEduecI+^e^%=N_0u%_6<8[+;G%P8Mm3'
-.=jB-aCT>T<RWI+ca_niCU=Z5&i9%q'7j]8V[oGR1D[_':<hdT>VAOI#S(HDEY3n'GqH"3Cj<
-^IjJc0i(E2cZZB;A;UF:A`iD!8gcI4:IfoZL#/8Cm$k/(:F@adSK+82^J6@1b;\CuNCs#ZZ_h
-*8fCa8a$Q:/j8#U]tc3'i6]l8^(;a=n3!X@Y/kerHKI-\<km$pYJ-6p?*.KHS.'cq9*sb.WdC
-o!U&&,Uc;V5)I6*q1Q`oXbT;.IqVP'm#OUAM414GEInIZ:BX<EUc:l)&9]Al$t862\f!e:;>i
-u7Hu;7AJ^>^8`%kopM/]'%n?A@%TmY(a*/rMO$4NUcq3[Efa_-bRk26!]A0?!9-aCTAT?(l>T
-P.q3*j_(-6XjeR=\5);C&+.(J:c@I[W`S9&eQ=@%11d8MU9G=8M/,",to=K7/;N/N9$1)@[0_
-s[DX.(\CWG/5icAq5sC%6La)'%YU1kN(5aR`RV4'j=(i&#&Z[!c:5C#7Z\6`]Cn\u?4@[7BSA
-Sr9aX=@3,Teu'8D5EjOl;Oil]`%'A2#8NVb%["K\!Z1P%9]9b[VY\ICl!r=leTol<`F4%*?P(
-,TeO-52O2=I%3[sZ%@"e-h5C#qT+H7"pm]gYsKGjD2P+hZ/]q<oF@%F&Af#)+!H:^83T?G8!&
-+O&<7n/#U(0Rne"2JJsh"VSk2fciGm*&j7N'^63rXIAsX(G&L8GAKHj#O6;/7l5@ngB'6ch7&
-Rrn]^@d^J`Slk&#se%n@]HA-^\E?T5pRNqV@:SeOF2_#!m/KEI"ZG?aiBKjKG-?D;;2e53#CN
-`KZ_@"oK$qe./AZJLTq8TS>=(H+/b<=4-GYD*7#G.W3*'6PYZs*Q@-W8Ob*`gC4m;6-^'OXH;
-^u?7?*C\pI+Qa;bm`9[&=R7n=E07@d:3rd/5!E7u.`8W2NkN@[m_='`jZB-hM:9=J@)`i<H"l
-[(qW5Q3kgs'D4W.EZ%Pcq#m7<@T2h0.8ES-#n.6L6.i21fFf"Z=L3lN?r7Am'=D)T:d/<+8<B
-ksCec%n8%=+0RU$M+JrU2oZuU!8R'HY%+.(.u[!ikb_C(E*,MYOX"YH\L&YFFp*#hih$9HNbI
-cN=5SU:j0b+[l@4@U=:I%n'R_?NIm2R71oes+BL7eoHdA!9FR&T1u3o!)NmZ-m<C<BeOZljA&
-r(&@R'fd4:'I';8+4:sGd08(Ac\h!FCEeGc2jM\Yr5%3nLBYu<sgH-8u+5mE%n:S<N&Q8+i83
-UMJ8\ouo2*qZ,'?Na<4XjL[U..\iHQr9AW@%iW>1<g,GY]S,1%e6$3iD/"ZBt@Ij)h<!oU\T;
-@d66o&E++PQ:.ValbGZGI"[l5U/m7O!QdifWCQM6,Te2"5k6WT+!I.>nhDC3+e7JfI%6crb8!
-_+%EV*Gi<YU-&Af%'j<K<hFqZ-nYJ0kUkn]s(,$"-UkGEN2&OM:&`9I,b&0c8m5H,6,W;~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 382 406
-%%EOF
diff --git a/doc/print-color.png b/doc/print-color.png
deleted file mode 100644
index db1af3f..0000000
--- a/doc/print-color.png
+++ /dev/null
Binary files differ
diff --git a/doc/print-color.txt b/doc/print-color.txt
deleted file mode 100644
index 69fdede..0000000
--- a/doc/print-color.txt
+++ /dev/null
@@ -1 +0,0 @@
-[Figure not available in Info format]
diff --git a/doc/print-main.eps b/doc/print-main.eps
deleted file mode 100644
index 05a6b3f..0000000
--- a/doc/print-main.eps
+++ /dev/null
@@ -1,551 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (print-main.eps)
-%%CreationDate: (Sun Feb 29 19:56:03 2004)
-%%BoundingBox: 0 0 647 647
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 647 647
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-648 648
-12.000000
-648 648
-0
-0
-0
-GhVQ@$[`q*^%hWSdL0pV25M*AV*KTN.8WW)5sPT6;*b^^r@9fAUBjI,"?iJF`KTuqMAV0u7K
-e8B+p8KDK5a@1U(@Hr1E`%669q5$V)6]MP&L?HrH2E.o#roAI:hX5IduF*Sa=YI4L6i9bjK)p
-Z2ak)zzzz!!!!A4Z.-mI;[SA+WsF"G!P_<'mce,hsnlkE*`MU459bRmKTI9q@4?[T+,nWj;:F
-OfBueQ;#*oAn("S-D%eF<id4n&J95s"k<uKodq_0jmU_:Sc>0#:dhRd?Gq7)*Qr*/n#>D$T/?
-"c4Su=h.ct/jqcjo7sd5``/RlKk?h.rSYnm*N4!sd?0.LZgu>M_#O"[+^QpXA\e2\r8"aH=pM(
-%2VLAZ,,4k^GnSWRm<;b9Qad%g&nhL#FW5]<1BTd_8M>Gs1nuZVqA:q%D]tW#8=K:8\kRcdcA
-tbOIYZ[C6[.31[b/=n"\3"kW)(s-?u:IBT!NJ/i7o5$s>U"6uL3#F`F,9HnX_]gtD["?g+pS.
-`3P?G!Q2T7NRH#BH^,?1pEg%^bDRmP:t!UTfpLZK:dD:TpguDaKdf"=\QJq(/oAr%"u;]<dk(
-=a<<<8?URO/Llj#;7[/YG5>Li4[P*:U<A'a$Jo?c('EbU@$H7eg%'UR$Rc:l$lF[N!sM2]!Me
-"QT]##h?kg0\'HCB_N'`k^JtpM>;<Tc3E%-"A#0=E0G"K7R'L_e'[TtS<]]$9MjQ2`i`><+I8
-pTu!H/oQ_huW)V8%S[BSXjeLL]"ejg+JWuQH6P]PI&Sudm#K5HpWkjTY0SE3G=!13bN-<BnP/
-7*LK$e^NOYTZq7r0-MC-i[X6GUY"99f-][X45H]Fi2Qc#Z[VRasH0gne@n&D:*n<5bl\:NHlU
-Qo4gM3eCR[T?cN=#7-`;1jjF;ZJd\nmYD]_5o^ks]l8V6"o>X@MB7#Nbr&l0a_lh]fO90/m,Z
-^\k?AG+i13*EdcMSG*1IlQeKm;,2M"1ql\Eg3r23fn0OU*2oLW^Mpg!"k.hmX6nSa>5)?%]Cq
-WI3H%g9XqTRQCtlP]KU,d$RV-HCW-3"+e1lpr7lQAK<Bk)+h5Cpn,IX>i)+Bkm`/$$MV(Q\69
-a94lbH']XBB6V$Ui3e+d3Hj'Q&"djqgU-P2bM\%o"3*,VMjR4`H((NEqu-o_p?Cma34;IQZ!i
-eBC.X"qJLqXh.>N/\c!o#krW=OhN.*OF56KFa3<gphos@j\*J9?D>U$U=q@4QZ=$T%r/$@*SC
-"Y/\AfQ/2U!.>5@mgMplVtZl#KhPAH4HZb>tUcRpM<OCZUg]ZMI^LiG!SG=&qF/:Fm1FDL(;$
-H13/kmqV*)Q`a!Bp']rIoAmotjdK-0(FRC%4sZK/="^KpC>!t'gN<VUgnXnMoD62,>ONBkp3_
->PmSe;o3baApO3R)PDJ&c#gU/).gN(6^k!Q$t3cJQWr,!D9NGI0lD#K=?Fd';;*A_0c<X+Nio
-[2dKiZXY?IVZ0)(T@%o(n8.!MIT'o>qU9qp"*`l>$:lgXR2?3IBq"YIm,F^J!-)kaO>@S'=Wd
-?SLhNR*kG;lr4^td?+K]7\bcfGo<WK7a5j_Mb0>\Ph6:kfl3.8km,*<Gr4X9?dsFqtcf.+!c^
-WPZoj'Yo]Q;-X410QMLXm,O[5?0B5'Hds,H!H5F)p;lgG\C]^4+@p\f%8Xa4'.OU<BCPX7dM#
-&AM+/!^.02*6G8TA(/eYXJ*g0Dg$D>UMP<H2QW4\ITa-HeiY:[+-BQQQ5>k0F+99aDjA)p+FV
-"h-SL\(0+i!)/8pi0c]j2[PJ<V1pO?<54_j21%iN%?i.5+uqgW`r?cN2\=3U./aZeNFW9_$&O
-3V\4eoC+1m:X^Y4akA::X*c@Icd@8ei"O3[IK?8%1=N4ceG=7qpDeb7agCWWhIU?\m4XO+N2C
-UEZuCn@8Js1d*:$eXB'NgS]bF<WTGDd]Z[TX?@PC%Xd4smabIRR^E/a7b@U/rZ>Q)3]i/7O:"
-K5G#!1hAT?4*+jb8WRTBFB^^*_0S8Y/(6SipC\*]*H\Ob;5s"s,t@s%eFBFhbWaNr#@)*8#\q
-r`rUMn%<J?NZ[W8^3I-<k.*'VmF6O[%Z=)Pg%:EkNCQcYGj!$AIE'g^*E,%V/nYo)[ch`Q=`c
-[CA[),4F-6%Nje5adBL%<DQe,<]VSC6M?J5+HCqNPM]1Y';/fS\o%G/e<Y)r=CangqWe\s<=%
-2o)$X?0G5SLgslG\GA!#645MJX&b!5CQ#XUPJO!s,N]=K=c&/f[[O*o:#Iqm<c=Omb.G$o3/j
-g\+uPb(4C(Ddtok!O.Fkkm`G,0`n0TA[WW!`c76DAdH*Krk]2R(@/Hqc,3?S_o#d%&%*A+EbK
-<QM[nY;_;'+L@pUqntD33L2aNY[bqXnmJHF[k*>l:TQ*gCROb#d09WU&X+=6.87L>MZc_=t)P
-3:cV=,9H56m/Gjcgs^?6mG/.gmQ09pcM?iJHagHPGsUc/DmmkQVg52d/Xh)sdu7cUV]FGEGsV
-E(h<W'UW?&P"8;"nbqWP4RQh/:ECR6QLfT[mr6LlrTX4:KH]'QKIjk&UZ9sT)?4L[WUr\&PE]
-dt7i^T<W1CZWj.jgI&;ld^%C9CfDhEp3sPd6HajkN-L*ad8Ta;kB+IXH[4d*]ill#2f+C^u9e
-.5GYp[m<A1DoUDESYNt'Fb-$/Bgpu#I3qd6$hlXG3mTD,'S_h#sM2PtpUhT\QNDn]e0QE`]EH
-CHc9VT^uAOr/)n(@/9e=]&!?#7*B1R@'KH._-h=FT=E-I;F;)TuVgrE/_r8EW.5ZOF:7%b#!O
-+kaA&?J-I%#Glp@XB6^.Xd2IXae)q%V9d7*Ss<M]apidib9uDWa5mq,(,)$:LZQa8jKu\C$2;
-Vun!0[IGNb.G%j$,a5lH]@#Bo_[E(06nTChLAKC6;Y](YoBkAKI+luH/(SC:\dr)Cl+j-s\1E
-)H#M9iDR:S@G5#_S#_^[]^W5JM(T$3F,\`1['^L=DYR=1R;@6.he],jZj@+WcU8tXqY=_Cd/r
-;b9F.5CE$gOH?j5,oWOCk<FYo**q#@ZXd"1(Q91\">:d=&\Qnr3BmW+ZJ%pC*?9.at3TH1kg"
-YUu^Qi;IQG[VX>'T_uJh%'!^T;qaO8AR\W4-YacQ:?e]7%A.f.V@9I!Wh.T5!3A`7A(N/MiE(
-SpoapWUFYl]V'8]h@8N.e;p"p2er9Q&,`I$80A>Y]3MpDq>\Te<_cNidl@Zrin:nZqcfQ<Pk&
-qZ28e5cag'W-?QN6k2FNmK5Os+3]'a.TLU#tok'Oi/[8T/Rd-GF4QbiCE@Ce"q8R>USCL<3(X
-6&"NjQU<RGD/0OKIjIjmRQ?H#N_i[jQ^Vsmug=]QO@\no59f!YE;b5+Xd:X54g'[l6<3G);=u
-BK6?&kf]0%2o=iY^gD>5"I_KIX;n@06WG@9MFj<1RA*,N5gE#*RHUQ',6^stn\7jn"VJYKRNn
-_*Qm#:egPO#Xu6^KUPr%:)*40OKu2=`dJPo%c7;;:3TWp3jY]e'k.Blr%ZQU&l,lg.,=*g;Ie
-/6nOl^S]H@G\qo]f5$"WIR*V,(Z_"IjJ`mBqh4SmQ[9g;]C)$CG0>kNEn0X>nseb#lXfUOEpi
-%0Aug=A,!#XMH2fhbLpLX,dt`,Dgu'f_%*Ul6J'J@K4+4J[LZ<]h5IPpiqmpA\ft#qN3bf1BT
-6>2>PQ`Y&ju6)kF4#YHS&XjB3-JoOQmq^'[]LK/\ot+m\suLWFP6=u43]"/r_L3C>Go[0M*Z'
-<6s1T"`uar'2)`fcWWG=[ocM17]9pn0b<_I<:u1?@Y;a5)6=*kH0<^[ArN^Ht4DDp4O2utJ96
-[jerEaBP<Na)&Y5"jkpbKDL')Bg^3TiO#_HCp-C!q7#]VeW`G*M?Bkg8[K#A;TubZNN4h1EB*
-qt8P.gG>t7HcdC8PNR'`g9kGMSG$fDCn38\A_bMlEOC_E:2Ln*Z#TF2L/H^TNuV.Y@K]u^/9A
-D(^NdI_(h_i\G.CLr@c\>@=8)KQqR/qTjk"'V>XH*R=n>LWI[;Y,8[7CjdcFSq])8kHr1^j6;
-H>t1:Hft`4<P/Vb<9/%LJI*H:-*hVm;6n."g[4DEo,JienO^N'BBi,.3Er(*-RDpQn*6d)k+4
-ki7-un;el1W:[OW.V0Cq[So#it:RKWh@:JEpD*,asCYr`/le$&X`f+aU1M5%ud7pB*2/YRW@H
-<7@&R3e&<O;LZ*ihF:#U>[Aet7G;nU/fb^4Q>u2-it4jo+qsV28M3B/m)oGT^]al3up_f+L.E
-+*8B:596WEDg$EdbF?8SiYd%08br7Yo([k.BXdp$:0I90l+0/u]0^DJ9Wkp&IWiG1qGk)aMfS
-g=o!OP"Q]@;/hCck;+Wo?ckWQ6WO-heDfSoes[d-#"HLJ`)Scr')pRBU=n)Vd*8KE.OCu9Bif
-"'gFFr],HrAKRGN+o:4h)K+J_mUfU[i&%%HE5a3F?-,eh;rmRa,]`eZKo_s*)"srf<W?FAbF_
-i$El*armUVnJ.P3N]'QKIjg?kR9%H*L00CQZbN7t0H2LuojH&liXg7:pEq`RSa%tgJn&l.lEm
-;/Crafe*75"GH/8gPf*%pEuQd^*q3b@KjPNE:DYZ(SBG3JhEm+r8ulM86>mf1qBlTMYHLJR4q
-FDC^--FYUpfWstSc$PFW[-P6!S]<Y6*n)fQlhX0tlc*jC]/<m>W'#4Uq37H4C8UTOD!,@Ta&7
-BCQg<Z`inlE$53eZ!:YWe>l[e>dRj`d$m'YK7]3G(4?1t\:bF:D>S(,#^AbFOCir@,AJ!H;na
-]!E,j1gdJDj#mYO[&kNQMjYJ^-K9TPM_rVSY)5f4t5+]Vu6I+q8qCPL\hKc[+F6q\q0Hsn,LD
-?^AloppWU02?ehXXZTE>YHMc"JB6AT<7f.t<\%[>qbBp*C+#[h1rO,GtO)*NlRteJKlXt$>2g
-%OUR$s.A<I5u&L*9j*/tKaaVPi*V-._1fK\P>X]It4V]DVM/g$k0;g+R7=A@3^:4=nhY8Y3I_
-<no<'FNWVaZMYO0n>5]kpZ2>Fjkd2as*dhV4sROd<.=E>\bVe:rII=;mm$U=r<@_V:]Ct"lML
-RP]e-kjHtV(!s4X=8loCVDgp,m\gUDZQ<pRf8C\^eDoD>F:HM=546RFYX5H^\t9`:!HlDBW@h
-1dOp'OA02EZSB'Im,brc?GU6Ir!$CeZtlU?<n`?*g=!maI5?:92"Bc5KH',Q03%HB<IPc5EVi
-sOXCsgj6)8AQ7P7+*][(=C6St\/,(,H[-[14Isg"d*=Ma+&+'2DI_AhMgXEl<pQ,%7qYn.Qn*
-\oW]Q<u'419TXG0=N12P2sWd>+SW2,%aIF@*m^D<c<e?+9dRg'Mj]UZf!PQh/:mbDDq9^:&-o
-nlm/BI<>(i4Pott[lgh(9a5L"Q`cTRQcfb$P(-^bc[A=[^FIP^P*MZ*'d&dV&'.]<*d[bR_2$
-o.nA%-^QQFrVa+_4A?-mZAIbe)oe(%dVft)ON7D$"#5I^=@*F$7bIIjEo(*-c:FPPrs,:>Ah1
-9Q)p0m,R=XIVbG1Q!ehHk'd1=iPYGb%%ij$V?\5rP*97'&!17O$bF/k\p$<YIsk-Cq<D#h'JP
-.Q]3rI`p73r(%U'iZJf9GYZNf2;`:-ts8'C0s-0U'PkFJe>'KVsMan4=pTFKC&+BD16[Bi!Hd
-B!M\pqJfldkm&*W'sVU9;1H?L(%$>J;tmq.m;QSMm8-jCsSqSD8)Eq"b/(lZV0sFrFZ3.(X6B
-jZKj4Ef/%Jql/^%'r/tCr/e!"P.qGtn*BQ&lZ1l0\SIDaYt8ii.+`C%.lPOG?BZJD-;.[/Df1
-ZC2ot/@aJ]"`NW519%hAQY97o_t2t675q@C(3%XkSUmE9ecqEt".[s%._?0=CQG1?K#IJ<3<c
-M^eeS?Ffr5&J]k:GtrE@,p=C)TEk$5Bce4Xf'_#Cc/NP,CqQ4ZK6;#5t7-Ognr=RH29HqLC">
-[QdssZnkd<74DoE8>94mBr%4!(Y*D*#aDD$"j(c,JQ!F<?r90bniU_*hF7RjoA^N=)l+bE^=3
-(W<Q?W@GkjV(Hhtb('4-oR^Hro2k^[5<G;pTpEFRR]8<VN964hfOQlhTphcY_M.9.enjg-"Ej
-7CC/n9g5k&iZSckp9#LDF5=o/F?-DcEd@2:5;g:1p'rmHY`M-]!XTk_C/"'d7TmDjqU`oJ6$[
-:K4L.HU]NUW(P!Ak3DLG8tGZLtR.6m'\+$LuDr[-ek-=?#&diXj=r[Nmjo%q.&U!&2IEVJD-^
-E5H!QMpu)m+_Q,^%:!*p:@VXc\oEtrHIG-kB6-=:A[e![*JYEbKLWhV]WB]gA@<c*SNJ]@Db"
-8f8ndnDWCr3S5hFg)*iT5Z;p`_WRk_K#'joZqU\?sJ64JG_uGf_4Y-:)?1)r83Zj]K?MVPbEp
-85I^&-phAb,M@jGZ0sl1abr>NM5I3U?r1n=$$QXr,s_npu4=eA(asI=!U2h>R8C?,,70b;ijL
-cKO'Re;io\eNW:4XkOlJ;Z$IU.IUS"l&_bKq_sPiX's54oqQ-KNS&t<B,+\V&0nc&Q+FVBo=$
-BVP@mt?dkAlD4XY_b.JGtOG<[^p>:qit,hMrsI_JL)Gdgr)-/Z:.cFHA=]0SW+Xo.>sEqE/hD
-6:,4pP/BF10F;,JN^a#5O[od]:RP7pPb\(TBkA(PcjCLka_=NNYrpRTDni@Bh,U*3NRMSgD4X
-Q5h!5+)n26i0R?duel1m(N1nEt7@+%nLb;o./oQu^K<f6O4S+.eeM#+<QCc.YhFH[g4`]jD\a
-b12Wo(uqDjBek8m8B[F+5fLrir!aIJLeoH!dltr`,Bd"kf_dB^Vc&G<T_KViUT@psHhC5L_dlR
-%B]Th:it#2>r?VC%(DUH>rcBKrpR4CY<m7k4/$YNLSZZG';o5)%BeGWZO78DQBnsr8NTKNs*=
-mb5c!>Q`ViFIea^][JJ-d?[hS7o'#-)i,VusJD@\/IWMFBn2pHbYN<'*jhc1$^J2FgTmZCFjl
-HH)O*k)jC6H&u+F>(YgE/:0qd"i\NYn./B`F$8oM'g>DsbE5C&<*MS_l;MYKf^dG"eFX^?s_,
-nT.mRD;W"NN(%6S2iXEW3,2@/f&Q$cN3:oM"C9;&\suhN^Hi[8$1[/ePTP-lq9:P,-83+b0>8
-hb=3?_&as2tg!tRrs4js!.\bTjJY![Zp/o?rts"':NSL7c)927QK:ABM?k6L+)_dq^-R6*p9:
-E?I+1,s-n^spL);^_64RFjTHgRa68]!n6W2.:mqpi.>7[V6gB[WS&o/RugXNuGE>e>T7H[r*0
-GZ=1\-qQ73+X/Vf9=[e\KWbq>LZQNmQW=AJjW1hD6.s6.)bOX)>d_A[\4=SjVo#QH(J%'NDam
-X/1hcqhd?QiML=FPXKr89ZbEfMu+6-_Sa52Rb9]LS!/RiFFahEG`=D)2D-RPAcsG5_;6n(W%i
-n(uN>p70REqrFnc-[!_*fJ.$np?fo0c5P:iA"2Up@i%i\dkl&dj7lI\@n,%1)GrG&/%V6N20:
-jVgA%n:gp,l6Y`ohCGa_9mmk/O+9a94lbH']XBB6V$Ui3gAX[e]7.hCG^J,69hh^Dc3a_dBf9
-c(uq/b4g@jelIO90OR:IR:d?IQ@-.q=8uTg298P]*s.7m_F[#qEM5`ha_kRrQj.[a3<iJNu;6
-lRGN3WD9!eugZtcEmQ[[^hhfUi:O)Jh*d8IU3-.d2PYq,68&"d&b]Gk?k]1"WjnuCIZ@fDfhX
-m8<?Rr=]P1@n$$W"sP]s?W@H"*1DGK[n5aTFKDI90'c]6%=&\,VM2SgV96>HTtdXuKQ:qiJ0+
-,o7UJ/UJ"VX)@DGHOQE#YQ(\0qn=bnpXGa\5.tJ#M*#g-FEZhe1HRe)?2Jta>7[@[ElaL-"",
-_TG='ckEK*&@D:i`JrT(*H`f-kPMCrNT?-Xt3S3IcpFtgAJYJ2D'f#k$HakD2HdjM1Iq<,ZDs
-!LrpO$%iG4E69]f?*S6je5?/Ja^d1kKCR%b2$]$=-MG=0tHro\`kfYIc8XR$O5A[+8GB?rBK)
-Ln%uZmQ9BQ.\QefXmFq60SNBX)WT061gJ=3eg,Pkhf]gZLRBl%IPFE=]B\[B._jiIS1IfoSVo
-tJsQh-(ekE#;e/ltfQ.Hd'N=2c+a*ni"]?]beuA[#OmXcPE$am)CW`V\bhh=B@ijk8P4hf"US
-Ijn/u-BDLXs0l*r2p5RSPb-@bcR6f+4tK?fPe5d,FN;4M\(2)flG3C7%d7]#hg=$?4Vu^ms3D
-`lhqG4(laq8/3N)h_*Et`gX6&@tRZFRVo\QQAn!MaP^k@GJa4>/n\o,AU\sucBfm!,^LF(_!U
-@MSQ+n!j<XipR#/mjgDS&TK=0+WEr<oq@4?*4Ofr5BDSDuQKOf/A-+j8-gXe`E:8k],:F?hF-
-aD)1Tr=adERqO,!@WP!2Dr8W0MmVC8N-$f1u=nrC"q_@ZkO[HfP%0#q(JborA^ZY!4[ia+HbC
-MesqfcDXDqC'ElF_A&NgAMTS*.5O\Pp[cgGb`aF4!LT2]XcPn^*+%qi%SJ4/Qm.?-Y"4>e0^V
-&TF;>QpZZkNAq.rF?+h%]e3BpQnDHoD#".pU"/`1oCD`Mg%75Ve12I[P`>FZCNmmTgL\:Inuq
-@jrQf'RAb,-*1:UEj^EMpW,3r!h=&,'ha2pTad.?]Hr;2TYee.ik+4bYn4*pr$i1AgXm(V_7Y
-,g`0[dW&B_`ccSB3sm_kI-no;tFX7004)BdkOc?h`\MYs7,coO0+m<QSXOP=0B8UQ^oM4Q.L"
-=7(D*Lnu(d;?>%a$^G'>Eg%GY1?@S>Pqe(2/Zo_!Jg[!&#N]jH6JO,X'6N6pPO$fDOkj`fkgE
-u1@,S+dUq_lT&)s-eFjQ6nlr<BfAK3\+'\Tke=?8(2\<R-%n:*#Qp%a'RY%DD5l_5%#jE9&hR
-n+p8G@EX!.q/aluh;&J-kZVpukPT*Wp24g+ZaFr4"YFebRs-o+dHo1:brD\Bg9D*NO/sG<TPj
-,a[3MT.XPs&C1Pma=<o5n[?F=o^E1Q4*M=Z1%Iin0KU0`d6SM%N\6#j_!OXR-Odcdtg`,rO>[
-WM=f=hRCugUR';*rdP0f?48KZ>?)eq23t9<dq_O3X4YXX6%c0Em]g9h&#-fs,\ls0;nHcn^#@
-_.u0/O)gmu0E;7?LLYUe]p?pf64*h\!g:dN/?1Y8bh!;8+4YLO,D/nkokI'Yu<q?g!0:I/ae+
-A\X:-#moi]HJHm8GrUDXGM:F?-,[Z>K8%GM2OK7&YlBrVEhONth1ZU!)!3<8gq#n&MT$@XCYm
-jf4EOI*puTZ=9@ep9He9+Fd]D94*cF4>42;b7,u`QRh.&VrX#Ua^Ro3Hf_>!jKs^'`!>A@J!Q
-jq%39K8i5'm[W5#HaiNN+o>h?UF07*?jBm8AZ?$fi/\_D<hG54W)S?lCC4M>>"Vjh<?^SpjY9
-iI+%o@oTZ/?%H<?JXi4CI_-mb8Ea8SZD4EA(q[0c9YAnO0(4N3[`XaMrCJbA_3i]SJMuA6Y\0
-e/itRWQ`EIPrC)e5V>h:p>9h]KH2+$&Vgc2>)7cM<DL"ROHVCU/Q+"HMpNtu5pWL+jAC3R2fg
-!XZGD@/bRiL9FFO72q(L/b8^b>QIs.jS*97-!=f<aZ"mWm^Tg@a7HS^6ZTkmQl?1ptUmWFa(>
-R\tXSdF9D1-GQm,gB/D7mp/.i:>Mid[3N]?jc#qWcIH!<=`GtLS*6A1CN`inFb62<4"%$A9UF
-4@H2mh`Bqj5&)%#amp3RdVbP!T8HpN(NQ&#>kbFXg-+-YG#Odg[XRQjAj\,>_j\_mrXml,:\Y
-N>B-b/m`,LOL`AD3Ohb%ILiRYjORTH_/hRmq[?`S_^p$)*L'Rf"KN]>s"S33W%hW1I'YYj4Mr
-:UKaT:d6-O;72$IqD*,LPh!PV]GHN#NUMfD>[3N]<jc#qW^-e%Hlc["J<kn:No@Sb+.D+r8@(
-KSXo'\5XI!P<"4[(7,/#;>7\TbU>oiLtVrGppr\`ur#r-#XGAm'M6I,c\:o4QMD,<>aMo)AZT
-,FW3DY7/\Qio$u;%d`c>rgc:(\'p2I4++,Bqi>jFqI%q!pNLM!<6+WT[nf)mFiqNPP7DE#3.K
->/4e'I[ei7inL+tLM7nos%\S^_7UIUb0-I>8LI>>]48SQogeZVA&YMd((fB^Ud5?5H>D7OfBq
--<Qr`uD-r[_15'`p`lY8<]nJ]J%l,(L=0NWViL2Q-[R9/*,*ujM=?^qp3]u<,VMa>^reZEJ+2
-aC:Wg]nsplF3D8E@hia2;,)rMDHVT`V5:X8e4Z*&?_-)O%b^=d;G4g:4(\ZGJh_T+upXFW&VX
-2trC%mXE]<uRhF6eLM>/nm+*]J/ff^5-I9Pkb4WF=;bocprF)_npIWtBG6UZc`)nTeL;A'nlV
-[5P&.X&lE,rJuH0?Emu4'2K$!qWO@QHe-uaCs?70^&5Ls?gbR<mBmsMIrXT(+(+`a%t=;rIkP
--[r2k*SS[7_lB+1C0l+rF/imicn?9R:2Y9'q;(H_)/jkP,_m]sl5]C'[hDL;;%hO_L;IEu9gZ
-.INEr)^B%20F7Q]@XdKmPFmsIHPh@49)nfqd6hi!S?di_"@pPE5M\aDHO.$L4p"R=EmZM7fm,
-Gjh.>2q.&sjfFDM:q2L(G1M4k<C"$\=R^Lmf]BurN55"UALE(?U;+DZ"^A#>0_]SmIa$9Rn:O
-VM,TDe+hcT'sD1XA2TlX0\gH0:aMdaE0P"W(EaaX*9[HKjOX?[fs/='Tgk2:l2brQR:Yr0uUA
-k)MOk\F\!-]=Y\A/R.q8^\m2eLE9X5I/.954ndB(:T[a(U;+JCq<+AW[;+6\2/CdF>IT([qG!
-G;%1NbHHR'.,?-Xt3S3IcpG+d$#3Ig75?I@m4Z08Iq?)Gg@6^RD%0'A9aQQ>9F?-XP'S6+qsO
-HG-8QeSmpjn-r36p[12W\ikZT:4]dJ)J:m9a*>b/B4X^80A>P$m8#])2O)$",IOp"sTeb!+J?
-_JV`MFJ/H[F+JN=g=oZ1:k,A!@0n@X!7[J[>$JXYRDecBuUIL:FKE>E`,-!)2QX@rBX5]'+%D`
-%]$XEr\U<D]*bf^=q#VU9;Lkm[QcS@.($m<40AKW2.Cd-%TX>#1o6C37Z%-b(L@]4K3k>*s:_
-3pRp[r<D=c[IC8S"u,\kF/F&4iC,22f\5jfB@L^Qg4Vu0rc!p:(^b9,0ENEe[LFgAQs#(jsK=
-L>B+af/Rk&6'\7C,',jl//uOLX!tf+@bI38(J!U-'3^p`Pq<i:bR.q/alaSt<TGTr=JasgH\s
-rkE)2Q@q/mEcP^TKfOTBKOOE6i$pZ]YkM@$c;^c#p,;fCU*!([3\5UW`I6='&Jj7E@^B]'T@0
-D:pb@@g.5u<\jtP(IUJ<Y+M9tHAM3#druft`Al6+U7oaj<jtN*(F82-EhFBheRbp5l<)MH,`4
-5;<@PtRs$oE"l*>VDWn?Di$_j7.c0)?a%\W9<>R+([%Wo6pk]/;@6gVI9fO_P8qBpoub>XKTl
-bC08Sr\0t(#qQGMhWkI:M#-k/gEiRla#XBG%/^o^<=^[qn=`@5?0W;n!Cr*+58enc;F6Q^_c[
-T>a80ok]2REEmE=sX8XJU@8rRl_oGcBK\k\s+M?(_4E4t7B*oiWbN?-?bt9Nk]Z:0\27f:sY/
-/Y\LsY@kq5h*4UAi@J"qXYYja?PiD:%MQJM*G<1+t-d+M?(_*)K$]glE!P>rJ<d?<.n.GbN;`
-Vp9(BT0cJ=]3Oa"#f*CdZPYrPUW](f)qO4SJ?Qh5GrTT>4_>*F[*[q$dRe1Yf7?7C]*of*F?-
-*Q@iFgdi/0,hL_3q<,5mHIED>*4AH4HZbP=VE;a?ZM`/$&/)dQ2>?-]K/jAaJb]VQUL2S,DoF
-?'MH3Nq-ps!\V%-H(8SCZmP56^L_J6^MkoeE(HFE>%8AD>lohi?5a1>O$]P:7(R3/uO4Pk7q:
-J+,_a5d,gM>jV6)']V<UFA'nim\stOeS-$9l=*-HPXLEA`Ef*ROa)i3hU<=u6GaH*E=aqiO*Y
-r#<b`fuFft-PHp7]oV70rP/mPTL4aE!e(%t!YDjTcN+7_Ir*$L"d:XTPsdoUmLY(ia`0nd&V%
-B3Yo=RQk7ll#jPB`H3!fU<>!YbJ%8*4f^/1EBPl:S-V2hke(07$eK`,cTaga'kc!l$]9"67@1
-]"l^XI(Rak0-&M1ECQ\QT.<ojF9/gF\E3<aNXFV)3#lb).:d<QD/]6=-cM"s.$-tnq^3?EWb6
-X;4AfmUipI'3iLUW^(Wdq-IU/uO4P>7nG_q&L6FG?K!];j>n#25=ltM=9cRR_Jq5-h&s>5$/l
-pa0(qAHUuLp`/?7GJ1ao0n2_f&4`@Ec9AcY9]t3R<7F[7V3p+.2*VO`p3F%oaC8.*_YiF58ED
-9Pa?$989/gF\E3<aN8nq-^0A(Q9hlZm<iqrD$qOdq#Hg%Tc.orL!^Y;t!S[`)d&s8?tPU=[R+
-8aS_`&%l>^$q*@IeX'3]IG+2TEp3<<hIZZ;Q`D,oK368K]-`mt".;NCFY5bJ0eQ7!5EBZ,O/h
-Z:\5cC@f6^S;]-u!8Q`%n$4LT+8Q$%7Vds&5(A19b3bOlH9Q\!@0GaD.boqHL5-@am=YmY/'M
-_9@[2-i[hct.9C4gQ.=?-XOMcc:4%bK(d:C^?T0[0*,Gq.%f`#J,llU!%^mEgIAu7@,%Y1@g2
-Qk7q:J+,_a5ct28K?-]MC&'.:-\]\jDkVA5OF?-Ns@ugJd#ql/]?G+lhTZbCu\dT]NF;]mj/d
-$nA>m;LIb5c!>Q[stV14U4hAKW2.S6,RUf1!-$Gb8*\%m7E36p[12Wbq>La<5+fW=AJjW1hC"
-VUWuSS18[W7HB9DkDD7GA`OA-c7?Jr58IOJTZbCu\suiD3I`Tklp-o"5BJohk]6Z)Dsd+7`@#
-9PP]KNbJ]u5UQb?EiIl5.2ns/[l8U6RO3P0Z^L!#6L8eLLR&b!*2/B@Rlf5=T;m*TAeF7S-uk
-8FNHAV^Alh5#qK$<rj6.4kL_/n^!:fB(-jdq'YC$Jo@G'AN'lf3M^20!#mWk7(]M47Cm=$.[d
-'h<"4Gb0t",ZYA14asjbLHehqH/*O=p?=.mD=d9L+\dW+E^:WaCJmPj-?>uJ!4'Z+,%k-khpO
-;cO]5l,$T?"A\l<R2USL&ElVX%$#DGHP9Yr'%.$Sbok15@L:/o+M6GI[9@NHHRoh619*]\`CZ
-oD5b2D55na7F%7;Z97!)>rfmtOJ'c^k2a8"Q?S@+T;88"&D-*MFbVF+mf6["el`4Mqm!i_l$R
-*tpEi1ErZYVXbOXu)Zbgf%aIIj+=`ZjFS]pre0`(UN6I>ITkpJIM`#%ZY=I/^=0:+#3]po\Pm
-\Ggp!tc9Ab>tPmL3n>/>aKk7fE3]mH-DK?Ek!o@?=+2e;Kg_N_/pR9S0E11MYqp>hrgD5VsE6
-,qGuluVuQM7Y4'DSICloY<aP78G(&7*n&LI0;L[Jhl_BRp".>A5/f,M"pQ[rY?1qT?\r>F;bB
-ZOCo>fk^YoW$`nqSj\'j]*,M_7*<A`OA-c7?Jr58IOJTZbCu\suiD3I`Tklp-o"5BJohdQ\j!
-"m%AGBqrj:[a=-K.ZHIZV^AqG+*d<^;h6PGJ*8Y<(sun;,.\1*7W]N(Lb8dc&R>SbU<<OG7$i
-I\k]1"o^L%f1'&n=K.6m=c1(XUpcE"CuIisB6.A\rL,GBiE".<%SQZK1Vj_Ffi&)q-i\KVN*)
->QXdo850`O%#BUkVD^a0'<sTc6%rs44%R"%pdI2\su"9>J"-#`MT/8\dW*Z>n0@f<f3N\^6p@
-*-$4=`q=^N17/\aJcGAh8+hH_1*iD8EbP/1aQK*@<fOMB?5H*d$O?%DCSBtOOFIagr?$8+eBG
-:Nm+`s&Vs%/PM/A3Z;[[8ZLR7!=YYoO9iVnG.3$JUUU2g:ill^VXh]53u)gK`VC/'`+IId285
-[OsYfdqs/,s"am2\(?t%*ICiK"+r3.R7!=YWB;(YNst-AlHI*?:S!n(-C/m>O)6u.43pK(6`-
-fOCQ;]`Ah0bI]sqD+GKu)<At>dGAQsuT16=M<3?6pKq@9D%q6J:6-a38mq4?6M(*WB(Hd0_-o
-jt]sm+@RQVq<%'F;`.>\f=Ic?1utr[[I"VQ*#L"[TC5DhW5;mTmsg[BDH]'=^elMA.DlT8*?*
-pd.>nm[gMu#FX><,I9#TYCu8C[hhD(.AtA&^pWKCi?8#re\SKQ'+<nB:Noj9bMBUO:ZKCJr:4
-^"Coi&iJ.".o7iE45T]-`mt".;NC_hn@*Yj6D_-b#Ym=$*%meplSDlV"]J?1s^Sj`K*7W.1gm
-^\W#S9XE`Hq(/h9TD.IDLn`'Xk0R\7GeN;\!h]4P58IPu?>I-2gn;jQn9S\.*4hY)(8$ZT5aR
-TtFP.3d:MU2%Qh/7lb78V3q*UM?MD"(Q7@,%Y1@g2Qk7q:J+,_a5ct28K?-]MC&'.:-\]\jDk
-VA5OF?-Ns@ugJd#ql/]?G+lhTZbCu\dT]NF;]mj/d$nA>m;LIb5c!>Q[stV14U4hAKW2.S6,R
-Uf1!-$Gb8*\%m7E36p[12Wbq>La<5+fW=AJjW1hC"VUWuSS8.)*7<6H.F%%)41@g2Qk7q:J+,
-_a5ct28K?-Xt3S3IcpG+d%"+1dtDF?+iP[s#<&MG6+OF;`.>\uZa:8o`*SkGPT?S[6MJpC7@t
-kkqF>L:/27c:Tg@obG^6*#AK'.gEh1S1bD"lrN5'&7#JqLG%nON"sfJYM&#>fXgEq=b!/XFM*
-(`2';"'`U<mH&u`u7F""<c\m3ot\dW*Z?.Kl2b:ui=PA%-KXs<;'=F"KNI8sT\Z2BLBZ$g\mY
-(LL`eNF8kA_WBXSqC*N=`IZt7FHIU5]Ks*P_*?ae9BkVYOVk?mIfRLa.?<,^nAk9k0R\1Og1-
-B<F:RQ;m37$Y?Bl=AZrK*PUMA@]AB)oP.\ZsFTqFV7==eOoMZ+"bNsNuFI-hfVTV6ect12;<,
-s!*`A&O`0"]tuNTU&BAcrjr)0S(J<O=r!QPHpYl!;YYN4mCqbN\[ubN&QRPuDK0$+^OU%UBQ*
-15]E(kM)LZ7ur[K5W.;oR8MR]L?Pqpmgia><-V]nW%L.^9UC=SU!#JA@qkE26-F&?e`Gk`V"G
-1qmsGc8ZLe+TB';<-MY0]TbLVt94!+uT)9<f/X>;V4ge"W\OS(6l"=pVg?Cg0dI9Eg!6!$'UQ
-RbkLot0RZ@(HbW%UIX')9_'>Ctf\0Vl63u\(hn(^+\AGQW3;>Qb@:2Su<;pf;Fs`=![#&b7iF
-r<=b4/P_-(#YXbcHjl_'&m_<i]a;hd]=+&k+r`F9qH`cNfEe?"-'j]*,MpKFeTZbCu\suiD3I
-`Tklp-o"5BJohk]6Z)FP23t,Ceot?I@m4Z08Iq>t4h?jh+4cJ;b2,]A09C/d'cnQh.46k/a0`
-i6m,5`Ht;_\r?Q\b5c!>Q[stV14U4hAKW2.$m8#])2O)$",IOp"sTeb!+J?_JV`MFJ/H[F+<n
-B*+@^GjLkmYcL_3ns,,36\@RQQ6M!-UE(sun;,.\1*7W]N(Lb8dc&R>SbU<<OG7$iI\kV@Z*d
-:FFE\dT]NF;]mj/d$nA>m;KFXig\OJh@.&UsnF6!(@O^E"VLD7[K5Vl#[dCD!3Y4MCo"0$G$Y
-UU<<P:Jh@/.kV@[gTZ_j9\dY5]kVD(R/d&$Z\dZ*Cb5ePo/d&9?14ZBtbCD+S%%o*61>o09?*
-8IRd#6.T$"O`U#$b05bDLe(>CHPi6C.^S#'S\m,hb/QFLgt2l8_gM5IIa"TKnhE=/L,nFa:i0
-YYA[."cPd7!E\N8cXZ2H?EZ#_]<(diB%b@ohcPhPIiBGj:OJcK&4L>>[XA1Hf6o(d*V<=bG@I
-tp$4k4[.#3^GkVD]Vbq=A!YQ")\Gof&eeHFfao49&=9QW:\f9]uP9`SM`1(]R^?+,?t+1lR)c
-MOm,>"o!'kV<]H[CQbhQfp19&R>SP,J":O7$dqmLb8cAd:E;4U<>eiF;[?&kV<\]>m:ib\dUt
-pQN>$\/cu^5AH4HZb<SI;)*j/E1(Y%'"qW#j$q*LM!Q9dH!tipl!&:4k5X]]35`Fn^&.r1P&0
-nap6q!B*1Q;*JeBJ?3$q*LMP>f7s:/49>\kA>?M1*&G*t#Rf6q!B*;nuC.a;^24L_!88c.-ln
-lVP?,$iL5:YqDoIb<SI;3B77Jjb0Gbje,[r<@[PYF&8dfQBdo`Cfdi8oX^nCkV<\]>u",q=#h
-GGFkO0BPnP[OWP8l'.$nhM8@.X[?!F)<VE*iq&.r2C:'"EV+c1AF;+$l^:6e[/?eHsS^'RiDM
-h*UWb<SI;3B77Jjb+n-^?d^3`%g-ejmjBrdnH)QhAolkrm9cf'QB<N;Y;YH6(Z+<g2-$%V<'.
-E>V8`M//VY&LFsg$k]1\N\B5+4U!$b@>ZIY(&S:nenXX>'\dUtpQ]k@`<DH*8],]hg?V[pOb.
-^MXH+tF_kjkO(/cu^5jl@+pPnOeDb>q'iHlM8AY-=Q\bKq$T*kt\%AKW2.S=BY`E^F7"E`Ef*
-aqe7e,,<?'.Gu[',eI>7+M%tL7$j*9^f=,8?-X"m$q*LMP7u+oa8(m3TUVj&X$k@s%&(j07!(
-FL&Q_!J7lj/Q8a'A)MCrNI>m;LIbK5UHb._5-jSN3eXrm-!H5!Ko[U$`FH\1iW^-"j_QTd^_j
-U@j+5X]]S3=0h2s18^3^])#krfrUG1tq]MMf_ulN@niL>m;LIbK3>dbDM/QTCJko\SoMG-O*#
-+1P@@_&^f_$,hHVjqn[AL?kkV?]kcN>CG%umGHY.k3E,,s&.r2C:($1-XqQGZkB]i5n\hq`@V
-BjD6g-9:&RA.,6LVrQiH]6G?\TB.$q*LMPEXeZ071CCg3-W^rRe8sl?g?*6eAf).@)k?\sspc
-)2O)$-`;Kq>SccoOtLAQ>m;LIbK23e.`_EgW^N10KJ!?=dH0F'E0[1_AaP@-B*_cI,,39&.Gu
-['KJ$mC>m;LIbK23k.OQLR>qY&FJ1^p9dH0F'E0V*"d4PrJ;=+NY'jV"fU<CY-i$p*"Md7qOf
-f./^J&7N!im;6Z,.a;7!j6Q11=p)AM\Tr,s5CNShh)l./cu^5jl@+pPnT=_0"Y0:/'[@?8BkU
-ckV<\]>u",q=#hEAlE]F!f_%aV3TAk+EJOTP\t#8lY&Ziae7EFeIakf/jmmc#!aUh2G?Gn05`
-IBDVgth<ODK'mH>Ara;7<jHE$RfO:R?Wgk]1\N\B5-">aMRM2#Ao<i[[I'(`g0r6q!B*;d/9@
-`$(%/h,9]J\E$Mod:FF=\t#9/`2_PG1ZW&=g5D%N\dUu+6^IhlLFrZ@d:E;4U<>eiF;[?&kV<
-\]>m:ib\dUtpQN>$\/cu^5AH4HZb<SI;)*j/E1(Y%'"qW#j$q*LM!Q9dH!tipl!&:4k5X]]S3
-S"+"kqK,#Af4Y:9kVW2DPPB?1it`<D4A;H+@?LGNFKig/rp*?#,8&ibD@YgW/!1Gieo7\@<7d
-U6$(=n)/r$2PJ_s_:tXRbER:43>m=Q]jlCBR/eg3fGoS[(9U>c]F?)?$W!e=(>oj6q3R_QT'j
-^MO%@o#9-q;+"T_:Eg45Z6sF/qtSW"%ha5,a;/FDc!"Xf;)pqBhW_giOEiLb=%6L?:Ad]<$M'
-FZic<pHWT$(_>cSc0_o)]mcuq8QI`.>m;LIb?grPRpLA4V0T'Uk^;(L$Di7#jb,V&STC9d0)M
-5=e)g-[B[3"u"0Ujnf4_ZhF<1Q!LBY8*520-0g=@E*2dMI6RQ=Z7/gE==ZI`d":=M9f=0?\m0
-"XS5Kqiaa#ATH:G1l3XQ0<76*&QhPQN:00fkWDo-T[m*:8,jF*i0N5:n*Cra,VbS&^b0ndEnD
-NBU@7fda$!dg15:cG'"UXLb=%6L?lcGc^2QJaSZ.Ja[3bVlpR2`j.JDF\dZ*CbI5f;I@%@nHZ
-ZBIK6Fd!I;'a[l#K*W^E6ZmF$$#XE.'o<I?VllDRp6E7$j+T#=.C'k'k///rtYISEVfeMCp93
-"*HfSjZr#b&.r2C%L;9HTZ_o5AKW2.S/`$gKu2t)O+ZSbkq_1S/glDVFeQ%MbN#6UB=\M]U<C
-Y-*N6$P'EJne)o[WX>oj6^$q*CJP>bZNCoR,qAJgoKEZF)PV?1$mrm53V0quiV7!';3N9E#.&
-R>SP,J":O7$dqmW/=jbEl7\YO+!?GAs_7-W7kaI@Fa4VVJP\/.WlWM-+Y)"[`s:]P9C+b7PS@
-nQcFY0"*'1s#cGkS[BAJ@-45CM>oj6q3R_QT(L<%;#O4WaF-jp5F3\kFn3r](`IYTsf\GS.d$
-umt#(4h[G]BB/'K1/\*&QhPQN:I4l*B[c0Ua6EqGY@-S-S?%\(ir'J*MEV:)4Aie_R+f9c;tg
-h6kF`Xld#odtt\*Q[p\9<0otRGf24]>upk[c1<S=qd%e./ljH-pAH#UF`XJM$WtiHRk=dtU<B
-udkL)S35HR$g;kKU0T%I!aHg,R0gXNd%S:<9S[5D53!+#_t0.VKCUWZNC4-27?g%BsKAZlK,C
-[HG@p3gi-p<Rj+Trac-g%BIpp#^=5EN``tF>gUS>Ost#]\=IJR6l%!rVCQEM9`MhGeT^1iS)G
-'Qdsj?$J"6oS"'$2=K\X[mRaJ`@#.-l=ac\jB21eVbDN@Rd,jgXB[3"u"29ZGALmOQg'VtqNq
-g=A\f>^Z>')cic(0<MJUC+(Qcs?6.u0sU/fW#YS,.$dTNAInbN3`jS?lpb"X'.Pdq-_kXZk$L
-4-/#TJ%o7Kp+A#k9eppc:2QJHrJ'R,=LlsuRkf)YFh6qO\VKE)J66BZbCP=q)M&EL.MOdbGoS
-[(SE[omO;5=jZKk(\Lsb-G>o[\Kni1=.3HKrZ+H(9hA]sNu6Sq;c"*JUf\]a$+3Thq7(4aWN;
-jUu3%1^n,_<*A2KBA\^Gut&E7[It-c%3Gcf\GS.d%#/3%gtYFkd#'-U]9R]RL6Qa@`7C]NrrY
-lbX%SdCRm'-*jZ8bF'"Ah][m8t)I3OSN\1E'U!#^;d:L*AF;ZJd\dTF0/cu8IQN<l.A_UC$::
-8+n_lCE79\J3<F;Zc()dRpY>,VC[?r7VW)o[WX>oj6^%%)Z"gX`rj&"4mT2KsEd2!8,f_ZGoT
-\nkSd%b/J6jt;^Ik+%?T=9)5gQYgN_J\!hnguWP&S9$Cq$UDkuZ>H^(:_sA+]0$RlF"ZT`!D$
-@d0&,6:;E8$&(Tp!qRclg45XOATEZD$Kn%*ME:"Qq4;$ZAO@pZl9PX,e'f=m.WK!WY7)p\8SF
-LH<sS(h]u2!7Q!JJ87SZJqK_!d-NAr,q/'58ps_.uogr#NR_f^T<g6X?V$9G<,MS95&B^p/h:
-A@`[^*)@+MIdq'X*Z#nZBmTfUdmAH646scc^M?C9<8\/c16#Yjil_$c%*-^'oHHnb0dGHbmml
-LElXoJ#aC7@DQc0[@uRWG@L5RQN<ZLb<b]^.[0c1rmX68;@#$K\[unTZ,0lY*8B*]qcEFBf(9
-TOT$Ve%!uXjN['2=h:-M1&r_\p\!We'D:PW454`K>Ii=R#@sC#E@)1FiPmuP^.mJ>^;!_!GX&
-s6M9YEF%[qI9b<QD$T._SAA_2Ed5#=<OqfFia0orBYD!mNH\(<TQcC$9e.7iZJlp)6WkO1Jek
-Zp1"\nFlUk,HN92n*8&l>4pCCi6Frd$umt##^Q.lcY0T"Id*N`#,-!Urte<3p>,Hgf<.b?K7\
-=B=\MI+LUrR4)a+@ApV/K=SX2\_V";.pK#QCd.r=F)S\4=Vt4Y5>R0Pe@pU3ek7bpo#DQ<Hg"
-\#pDHCot0M6AXpSC&R0bYW/<@D\Oni1=.R4\RjLptRmdhD=mTIpp:GBk/bk=h4n'Z>I7m/")"
-<cF]a'K1/\*&QhPQ[ok?]bRu`k!32lD!pjRB[4/ULBSf3FP4+R*2ndJc!;@qbrHU3YQ1JX0&+
-r<>L1)$E#ZcPc!;@q\dXsY/j%ZG>H0hu)91gA*/AdB#p;(9$ks[e#)km8JV'Z?J5PMc:iLLo0
-FD(i$B?_@7\S!j_9li0.!-=T34]M8Ke<H28!a7Oct/m.kV?N[\dT8m>m?6SQYic$GtpAaXj=R
-0+M%suKeD*oF0-*EQOQHO!Me"QRprOCE\dCF&-YIg!Me"QRprOCEp0h)kV?N[\nk<h[8%3;2B
-Q3/N'`kJMRh<[U!)SnbCEIRZ;!(*3]V<8Hup5[$=1+1>3hWdd\!64Q-7e';on1.q<0SAPSh$6
-PH>COB_>)/Djd?CiDq5t<R)AkCd,E=(aZ=;LX&rI3=#Cp#U-eGr,&6Og%L=rjo9I@(%6H;+-p
-jf*^Z4<8!a7O`6r5K"0_)celF*?02/P#;>`66S@o'mZL_CmX.YjD3\(;"k5/PZbLo=N!McI>A
-T`;UYGp3\&9Fugo^ueg;Yf1?mj]/@rErI?QS+bg/d"R7m<gp[M2Ip[R'S<fo4?P<JQB]lH+Js
-7TZ_j_Wn:lOQkVLRD-83sS?qC`l#NZKA\]]@S1hM"-hc`.eOs+9QNI[i$!kh5\dTE%L%f)tof
-T[N?+.E'Ale_+f-.HuaS")&6^3>%bo9s60"MH.-&'*@<X29qi6GuMXbrE)Wu'dO=_/Rr>h*M,
-]cgZ>+'f)0_WQ@#'Q^C?6^Q%fQN<l.AXd/3F`Q]Oq<0SA'Y8*ZbdC1U>rEd1#)km8D2PmTae?
-o?UW\0bkd!o;f/bp6fmIlZ0FD*o.HXe]LG#'W/d"S:b;R=Elf?E(o?h-b.!4.^pB*5`'O<V%)
-dNYAdRKS\9'6:5&6-'H.TGUe?kg0\'HCB_N'`k^JtpM>;<Tc3E-)sO$=*iCN\1E'U!#^;"mRj
-n'R4a<5XB(,Go/eMfE$PTX7f[Xzzzz'McS"-n4&2ml(7I+<k#`6aW*u!rrlK79*VhU7DsgkKB
-\0?FR=53<0'9>bAi5Qe1fRZ#,6\T)o!hA;ZH9oK!BRU+WY/C?<WW/3pU-^(^Qt6th#ZBBbkBc
-gC@Q':8;b@\LDMnSuAFJGdjaZ>58=\uboo[Utj,!6Ce*kKB,hFLiIOok!gHkV<,\a.d\/o)AM
-thhed#=8SR-o6tKU5S6ENEr+uT!$K<;d:HWk"oo?*-G"#=4>@<G5gEo:b5_MV!F5m0^`7G6!!
-%)eAH2_S6'hTP0F(kf!#Vlmh]i_&Pa/)g!!&4r&YPRdEQr(][EV=1QN."@c5E9QlnZC7_5/SA
-T>H`6/m%od,lg2T6UO4_3Ib=@RQJVSKQ9(X!4",)>qZ/`Zm'TP+-IT@>RhR#m)iItD+AO%1e7
-"Tjc^56U0tSE&RDiR]Q[6ER^jCj!844%A_/@Wc;rYj.aN+$CE269*&OF1jg^7%#MlJl*%h6Ej
-kF@u]\9OH)tA$]m!:'\V`ETdgOA3GM0;X9ShHE_GhpsA90$8f\lj)7>QD&[h"e7t?$?3iF)kQ
-0%B/CYNQF4A[`qY?Vf\=Z"3?IT\t%'0fTf_`hXV_(-UjKaHJb(@=g6o^^))/E\t[Ai)*k&fIs
-kH?hiqJT%P$?0A,EusbP<J>\u^`@""8uP?.LQF^:Wb)^+\)[l9C?3SfqC"GI-FP\,^&@&m\O&
-bFMIrbPucYmWiW>/r+\"=a`0=9U>e@=OQ[89(RFU3;*#U>Ad52gST<l[(X$(pXIjkIVdm8je_
-n-TZ[<j-cWo.pAO<W>]r,U76Y'RilfD`3EuQiMpM:C7$i1I\L'nu?9&#\\"%Top.sS\=3=.%/
-WV:!Mpl5;.#8je\Zjsq0a%KtZCH'j.e`U!!W[6f+'mGX=gmNL!5NiJ75Muga.G#!Xt3i_!19i
-%TPTIpZLM67!!%[>QN7(?#@0eeeUFYL9="3l)1\`[bD:sEKg*)L.>cBY93SaDN$6H,2S+i\GZ
-8?kbM!n-X/IjU).NSO^lW.6>t.4E.Q#OaI;R[;@o^u3U_uLc&J:'29lsM[&Re5T+4<P9QKIJ]
-A[p_sTntDf,9dPqq*UV7`mS+?\dVY&.Q#OaI7/`321J.1h,p,HTA;+Q=gCGD"l&n`;HpA-m`T
-gLGcdNGHLqBf+&CK=Uu/A3%fi/)A[0Eb%ug'jp#]1[9u/\2MQBdk=\/-2WC=b9mcr1*nPfCA?
-Ts3$pN#0Q-!Me#@s_1QG4:H>8!OVFTPLGc?"Y$3mnnQG;XRWY#=)_0XM.\>?1r#dZP;NElC4R
-eOe?"2h]dV`R&;+P]mP%7<9,tZ8Er#^%a/1VPEc@mk=M!!<pCV.;Y^=D5:iVfA];`8%>&G*'[
-,i#pm0f\%(F#Y'6W^nQX+d;\FnEC]5rkTr<><n;kN\^4X0/DlTCIa[lkr!OX0R\g9+r&OQKl0
-]3LB%[J?Ms8@)'bCjUa0$C\G]--ECj%(^UZQ>5(LH#1H_W:/"lDI*PrYIXIHVH=U9]hN?"b[Q
-q3f?s>d*pE,9+sO1fE[F2mpX`0tEHYAbB@B6ddUA`fY,]-X\MD;RMDWqt<TS>cA`&,fLkBtLj
-bL#-7.o:0Y-mE/Gl9&SGUe.\o_Q98K.aC[p%@c(dp7.r?Y@>FCkBg7dO[^r4q'QaX)Sf!cpAg
-G3+'sm>^"d<jV"aRX3[J]G,9/e$?q^e5Ai?.Ufb5odhU'$^4P`RIDs8UL<+-U294DC2\;M`p:
->k-r@75n/uqLm3EGs3M!KVjHpR^5$9HH9):I<`AXD:.[+Wm(9?U8j\6PKd]Q0Z3l#^)"<hYT&
-Dqr_5q6?cGl7Yqhl!B+PhtIjp\F]kDAXl+@Yib1t8Og=..3J/'ff(,?/h=)#QfEAdAl)gGCqV
-^NMC;\TL%7CD,d]LUWD'WBb*m+D1Yp5nW%LS)?hOppTVjcd/T@?_'r9%LVg\tuMMPl2eIQf6>
-UVW#Z;m$!7?fCcUY>NsV";+WI)]'4/(`T/KQ<O3#Q45+>WDjH,GT><niACgDseTFYA8Hd[H7P
-&hQP4Qjh&^%gW4_Y$eJNAa%@?a><>G6]9?hp'G#+Tj&k7[;V.%QNcU592#$RsASXr-'iE8`;O
-XY5Zo@\U@9Nf7^83T<&#Z^irlAM=1F2^#[Pk%og5D&cWZUMcH;k#q^,/Q+=W\6\idNR;U`!'`
-/gF5j4XtiOZE=tSXH/1%`;!_P82GoO,9e0DRcq%@,/TG15GX-R/Bu_CbAbFq65*YU7mn1lo7o
-0MNMX2^F;_6+<+r#LqD(!1k3iH^BnjuG6r\J3Zp@'f%ZFE;[eXU#/_(muL,;-KkVAm35nMT'>
-Q@GfQN7(?#@.N6^`7G6!!%)eAH2_S&ZEkQ!$H!E?*<m*joGH1MJAck!rr<$zzz5d@-b+oM2/s
-'NKlo)\ml\Wh.!Cj2ekGB+)l-lQ=e]Mds>L0L6I3F.%cX=11;L9=mdk?M3h7B6&P!s%9*ej7J
-2D77H0h9bJVc?j[4aS.</mSreU!!!kQq9b`o&ZhcGCJ3\JC9K.'FudJb=dqX4[+_.?$38.3c-
-P?"?*j*C48%@kI%K"KK)0EOo"AH_?$?2W;!ece"TT6gI[@aj)#MFS,/cN$N2t-jb6@r3/:sHH
-=&+V/jZp"&lZ>.\7A@s*J93'mAa?I:Q?I\WR-QV8Gs0RBS/Cn#B^/$d_M/'k'N1/Ja25XW)7W
-3;J:a^lQhB6^SJhSH#lmdeeN.'gJ)>B`$sY%X5g`R0H#*H\:e$cP!&+X`"ouFYF;Y@ag7JIX"
-Q"t9,_RcP6*VY:r7M.5(qL+Y`K'H-d=<hO$),O-;!\I0)+Y6C#(g;STZ]T@kV<\`3s&[lP!bR
-eT\'k?16<KeS-cnSYOg#+TrI3R^uI44!aR_5OsNbCY3,DrI'2)&p,Wp#>rH'c01H].8T+9BIe
-RDgGASmS"M/EB-!R=Ok4M1:3`ed3kd'0i796<hID0Op.dG/,q#8S*g?$Hp(@]L2fFd>QBhCgC
-A#$!Om(9Sc^W>:+V`YT$8!cq^CU#).^0S0)g=#k59D'@+^28n8,LC"sPbW&3hB*JHepQIMo5I
-RBhoX>5Q]:*1@BVNRS1j2%<6SD+E^?oSct.8t7_(pLk1I:NmBt7f\ni_4WNkcM_KFQ+M.j*Yd
-,f!q6C#r06TCiGig",eS-a;j=Dp=agGUQX.K*3FXk+0Z.G(+r0uN!Y8"e&f(trfjd\Z%SDd4n
-hFC(@fB*)?s=_4$:;7;X5*h+d/@7R!67]B(f,0D3<n&M<Kk+KnP/#QNu,]nIOff,\?:L\ZFnT
-k^J6*MT\A^cmmXH%=Xf*b^>hN*ZKd:Mp7d`a=O%X%srO9QWWU=p!,W9A7KE""Q13s&\G'2d$[
-\dS_\N^/q^jNqH\.!>a)$m^T\"$s1:ct+=[F;Y@A*J#gFae?mC;!\I0)+Y6C#(g;STZ]T@kV<
-\`3s&[lP!bReT\'k?16<Ke$j=P05aR&_<3+2VmaO+3;S2[*k`!1Rg8R;[?Lq+*2=D`U'UqJ'i
-h8U+hmAB+6C.fAXW\J"p#FqfE1jE:Nbrel2nZ+=6C4a"VpPrlTtb?2FU7Wg)"/[7]XC7CXYmj
-c0+cSj9%$uTZsM]l/W%_O>ri2t/,7aD-_o^lJuX%JFsut\IM8dA$]O_m)TcdWMWN5gOqa.)2"
-_ofF$A]nZAMN0RD8SN'L/^)N,7mT6+cJ'>H^cZ]SYbKfLp=]W$U//ocqh+R;F1M??+/,G:r65
-_K,".l=$d,VXGW1I6\R9$!ju&_UXDmf7UWc[e@:2p&$ZXSgcdTCqH)'*iD2D/(Vm&Od`&F5BQ
-1+)U<IUp`@7<4LEUjPMAXtAQ5!@%^PO)jQSq'?>KKSd<r#"]kogJANgd=lubUBIG]m=R09'\<
-?='$4."5+g,acj\q717+T:hh;7J66)^!$I-+?a!RG?ns2t:1(4<5gaVl7>U*^k:TWb7^l"%)>
-_mrD,+f:P+-(1ML:4OZmnR2/5@"20@uI[A6qS&2,D`Tr?CqB-)gVP'<5H=H)"V9<0QOJ`27,,
-;;fV=2k7QJQ-%GD7Q-S)I'/E\+hil^cb,kT<7BoZ!H1D-!6+qPVU^3a5mmiZO!iqJ[6mj?ntF
-?&l5)`ApciNfr^>r=,P_>T)8iduiH=qjp2+maO/6lT?KWr*rg=a!p^>k>I$%ZJtW/Lj'GEU>`
-t3=oH_<rMf+G,d^Er<Up%?^*=D8OF?TRb0bc,B.\Kaa1f_uCYXk[EgNo;^&m<L\\,*0H`)aXj
-Z,E#gErfhpaPZO^.1Mn-\<%*m^e1RpZS8oTegf))pU9k\nnp:Xma=m7nf'-fJe]V0*]u*qdnY
-pK%F\GhSf)iI4&Y$5[ep[=+.8^Gs'T)#JkP;5nDnmOm13hMIe$DmVYKCm;W=_=CFYU&[K,.NI
-=&=[o==qN*YuOa]t1mrC'\6RUZg`Q`@:REm_JBJ\pKUcC`='fo#59&"R@6!2kW764P&HL$CDu
-MScN:[:HPc5]s=V(u&UE#O!oS'KZA%#*M??JY:X-kVA5>\dS_\N^/q^jNqH\.!>a)$m^T\"$s
-1:ct+=[F;Y@A*J#gFae?mC;!\I0)+Y6Cc@dK:QDgu`o2_.*2=D`s_e]gCkNiIrfh=Ha!#tGn&
-`k@uk,JA0m]O%AiWGGuRr?CaMX,M8GV<>t!]pHh2ULq/MX*Yp:jC57(,9tmdH+%?>rGreaDX2
-Je7htPDSBKQUAefe7+[iRh9,EI]bW%afFd>QC!&kFVcfq@^>B-k\?4%NFH.qZbH+eG`I4_HC^
--WW-7_U>gAHb)Ufjt73HlS<cK4q%ouqRH4k!1]=`g&a)ogH<7@JY:ls!f"?cs1.Uj4pt'[q7d
-e[&7,P*tO>YpuMRU.DW9b=8aYfk[=!@=lcS>M'POZ8l/?m$6]uY:odeJ?/J_LjhUfr#NTKqgd
-f0/ON#L\ni^+PY8[;*;$^@`Pg,/G4+g@3NqYP+V^ioY!39c4EeXqa*9k*X37Z\P8K*.)f',nV
-+[/@Vn@#[1spU1WcpK"XYPPMJM*GPN=F:D=a<X(TB]?_gHS%f1D]D(Cs@g*1Xqh0(1/qob9j8
-`ZQdOmMI#rSmFV*TF?'TiZ;E+#XGF0I_!B10ZJ%V-P?O:^J+V0#_j/]PLp@c"bEg1Q-(Rj,fO
-e^l%GC&mm.-4[s7\*i[]h"'A^cmmXPPcpY:ht]ABX"hiHeW]+8%d#aoatp/ut%L#,9<')qq%?
-$hF>]5H;tXr.i1M5aMpZ8i,3J#O$1T<'AC_:3,rPLgWa2phqK;8j:U5BF=8D:gT1qlj.\N8.J
-o0Jmq6Cb<U+31(Y-]!aQ"n6^N@sfFd=&O;th?"BF.fg5:kB!t!AYXo:2/I&k(qe_Ud$51*pA!
-6d`q!<=fDTIp<HJ>?n&Go-M]UnZRUm/R+dzzz!0A;Qro5R1!:XpWrlZkn!:XpW5$nNpzzzzz!
-$I58s1Q/2C2.K#cPSC.nR=W@'m)Qh,Rj9A2G,-QHduG5UG8A1@Q`[>QXKsh;h_Zg2NE,=@Q`\
-iGfD8PGQLHE5?6XO(GEca?ArO0kV<R_I]C2'04'TM]GSt>d:F/HrD\@.?G%-$GVPf[U<>5Y>l
-/6[>BsLE4bpOJ.]unlIbaN8E75XfSsdK@`euIe&2A?2n]qbfLiHii1\nNsIDF<Enp"aYiu'M]
-$pu;rjjJk*s&]3+Ef/IoTCYRuRo`qF.V+lg7a1OGR]"meO(T4_T(/Pu0LQ7R[cLUG;*A..S&Z
-?a_iK/IC[*cdRM-?GpipB\iu'M]$pu<=qJs)>Ghkg8Gt+$Tj.=O(qK+`a(sdHSAJcVbo4?P<i
-O\C"4^E4O-,k[C'i4h@?B$RM&`X`^\dUqChW=#d.r4]q:]5mZfB)YNOXlh^Sls!V`euIe&GbX
-46!dn.g1BqA3FC&U`\UqC)29iFbJ*Gc<hK"!lM]A$a7Iia,N]srk;?1Gpiotgcg@c7+jC,$J`
-E0P.jIX0T.\"mr;Nd*i,LF!bTBXR1CPGhO=8St1]$<h^9:YcAJg#Z.%#25b<#78;uQ!3m4!k^
-5AeaB'_D,*hkq(!hMA+T[`A.)nY42\"<C>nlF</_k)ZF7bNa:,q#4D^&r[`)`KL#1DAD._STG
-`07Rn/O3pu*[q;^`4qJp_*iPhbce6J.^hY\6-\dUsQ&I"qiHT>L5GUE&q"UQnu4>ibO%bG:bc
-/V-W@0eog@+90L#L"8c\f=n0kHWPNeT7V2a>#`M@+90L#L"8c\f?G#?$"+^N!ipG+a!G,'`KF
-Vs";`IVi<^W4Yt,+.!*DW9.X@$k52D6='to\C>7LsSX4Ud2@@`R5P=jn3(AJe,0em[EniHoI"
-F+a4EH/FN#,cS+bFmjp*6-;X]cd\",FCE)@+G_,-P@^>o-)GmY2_UN#eO`$lRCH?p*I<QXL0u
-kHUQkSX9!s7_]>_$_`(8b+.L`RH"sF3THM<N+]fe1(9kkTB_s9L@2A5?%hE:Ldb2qmC6f_p]P
-0^G\.uV))&Q06Nl4@?([[2*o"B2VXq%dH</Vm;m-SC'.r=L).dD$pWOMITZeD%ls`*;7@.G=d
--pj0T=F-X,AZ.iihoZ!ehchY[^"j+PTf(T)iSFBkV<PYH^E:_<2W.I/jab0]<<k,4$GqJ17l%
-mGfGXo_[o]EI^sKnmqJ-bGu:-EW17>/i4NF#RlDcFQuh%=F*rQpB0>d:nVe8iL*6o3T*F-9MK
-[cJqOgfpnOsk]))&Q06f`\\%J39%9bED4;8su^,)g0'(sdHSAJh-Iql0R!_/0O"g^?8/5o!om
-;o<k"M_;mYm&(11pYs/:`f'AG(L;b=fM<5Am_t+SN#1Ll0=hQZPkNQaGR/NKX7fG\Mt)`Biu'
-M]$kq.+&*"N\`\Uq[B=t6m8-T%ozzzzJ40>84)VZ>~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 647 647
-%%EOF
diff --git a/doc/print-main.png b/doc/print-main.png
deleted file mode 100644
index 2d78222..0000000
--- a/doc/print-main.png
+++ /dev/null
Binary files differ
diff --git a/doc/print-main.txt b/doc/print-main.txt
deleted file mode 100644
index 69fdede..0000000
--- a/doc/print-main.txt
+++ /dev/null
@@ -1 +0,0 @@
-[Figure not available in Info format]
diff --git a/doc/print-setup.eps b/doc/print-setup.eps
deleted file mode 100644
index 5488cda..0000000
--- a/doc/print-setup.eps
+++ /dev/null
@@ -1,225 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (print-setup.eps)
-%%CreationDate: (Sun Feb 29 19:56:03 2004)
-%%BoundingBox: 0 0 289 226
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 289 226
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-290 227
-12.000000
-290 227
-1
-0
-0
-13
-000000
-ffffff
-cccccc
-7f7f7f
-e5e5e5
-999999
-b2b2b2
-d6d6d6
-969696
-888888
-fdfdfd
-c3c3c3
-00009c
-GhVPUM.2r.%#/?AQ#=kD5OW(N+k[D=a*70"$T/KnrfE'R*rq*6.BGsdL9?kaGn=/@DBq*CD?
-Rh^S>U6DU"aHZQI,Ws-:n(K3nK#2Qdp,'0KDkpKGK>='*:R6AjYp0cqOFdDfR:T7&Q&]aAC8u
-]i/kAcW%,X6JjkW0:UC?FR$r%Ft]WjbarOe&^mM(!'7A./^4E>_O`]=NX.d_T>_II%%6^5#Rm
-\X$.523>KlM:4/%F(I4\7[+nu$jMe\jPmluho2CUVl+`k,:07.h)?VMORU8cDb^<Z&<:fH=-K
-U0<nUQ!_+.=ILW*SSkQ&:-/;NAQjJeEpb@%dQ+*H-T<Vcjad$I>4nk;\NpEm6]-&G!`7n7%=,
-\TdLI>S:hG$+iHqXE@O9<B1P2bn@qp+$+4ZeUe#2dAC&#RKRWV)-I^4m2IKEp$P4A1D<kR,qt
-H<PWShiH>H@bNKRU>YpA/!IcusD63FE)tn&0n'&b+o=ha[t4,Q"I%$P4V[<iAJ96.lT./"nkO
-#U-#PcnD(^&je5_;L8_'O:Y#1UhgY.hX18YhX4D+?;Bt_k3icLdPaI7MZ4BUg&u(Za;5*@(8H
-Y:NuSa0[]OdF81EG\9Pd0Z6HY!Ud"mcMKVCpl\Ag@ML5:pM&dV["TX#.b+\++N7p^@(a</6O!
-20K/NuUP.fa.O#eW7mM;%O.^KYTU*3XuIIRY+EV\H44-7-J[P3\R1#YrtL1a!"D0[Khu9H[#A
-0KG)d#Cu71F%V#=\#rRkW&jeou>!d@@HebPj]J;XW(e_mB6-FRj64+=I(>F2AWQs=dQfX:q_0
-nQmTIt'%4%0)#IUjBqiMK.^5;Ak%Z2L=QFf!`>gq.ud,e!.Scq&g.8I,VG+Z(dE!W28R8$59i
-Hf^`[_t=4&KG5Vp/[e/P%nER-^\sgY,*s\jgH1M=O[gdPMT,;Qgt;tpm^F:":rRm1EmHC08:Q
-Toc'C;A#LVDt*E1#P&0m#;JUJt4W;kM!-ff_aZ`5#O=R35F_#EIk0P='"FT;X*9'qcl!GJDL7
-X;YJImV):*$,(j+<n2?K+B>_Wu5PK.t.A<6?#]`grjHPp=8U)#D@In9F+q&WGBQJ"1B$k64+=
-I)qtlqW90KFGP]O0YbBuaQ\b%Ls7W4,Cd03h)3Z^`ni9#Cl9;Xp9rS*E^,;TRC-h&IP_>,0)O
-Ab4j86hAmG;]T?g`,f`$F-hb2bm4"ip.G]gKkB9uZ9fj)UO8UWp7?;"0Sl6JMN=69$'0nFi1S
-\O*YIF@V#^535JSlrTc%,%OACi>50Yh=D4.5Mt=`3VK`\6N.6;U_#T)9AT,`)""8T,*u-eEb!
-]u(gCfDf[g0klJV]0KYi&V';>\ab_J/d*CA<-rO>8ZY!PJ3Qf;b;+[g"?&jiU%%p;DsGC*-Lm
-dL1a\@1N+$/ng8GN7"?,r@lF0r99dCEPr\!&YqL3a1u:[VoG`+XD_)KM\N@p'ToQp3hB#]g3t
-Am=!SXC7e<mKG5VpYMVP1;&kBgV1/;m#t6IDZJXM_8<-<@E52?5IFI!bb-au.*1o%hTh=Y3"8
-]+nme2_/Y"Gad-E)(%^&=,!db;R5!,B">nh:F&3+$6VF,#dX!rmr#L.IoD^_!O?1lD.7IH&?G
-B$Yk(+58==IZ%)%Zm;FYTb=Un\JC$TIUVBkIMbC3F/u+JES2k/Y8_1Bs+nf0RS,u'P7Z_!KK'
-8]:-sc#&E4sg3!ga'6AUg:icL.kf_$-O`ZDpRU.hMDKN>QqL#8uZAkJm4_M`iQPs;,kQ/lM4d
--bE%QUR<;f52qg"?(quVTG'^;!W]I;^rpt9=ueuK^SQ"d&5LFT.D/(8I0;K6C`]?-R$E"#]UJ
-DS:hG$+iHqXE@N_)Aj"Tj"J\OO.8:[HX[c$t3k.cf#pCJA1SGW!Th"G0l]7#Z!?#G8GGt;TlU
-0sD>`<k4d>',\+nT:M.eV>TpH`J8:O_hpJaneR=n)Rt4<ZhkhN,&L4M%-NM@#[qILZY;d2aD1
-j9`J)rKC[V=8<FO<(b#_+q#a'J3SZ[%/0-1Kod>)!%[<t33XQ[b33IZi"ZAG)ELrNQkQ%?!q(
-_j#t9o(3?mMi>TcH$!mR>bn*\SXi"@3uA`3[m\4XV5#gWbsH!,'=d$TR\aNIgY@TZR(M,%a\'
-[X.[8gu*/<`A`^-q,er(qDHgZos,iaFsDO&F,?RcJ3053hb+_O^LV#$-ab>`(:5S&ji+A&18X
->8I0;K6C`]?-R$E"#]UJDS:hG$+iMJ8C-;j(?Wf^t^S'gmianX5&?#AXMGt@4&ZRsZF[SRlo+
-XN]KFfLS`+_\-q&4>UTtD8P,a9gkLeuZ]fC91GPTo`EKJ$iK$6^bV<<t;sYPf*>,>;0Nd_o]`
-:F<"[mdH^.SPR*TCNPigZO&+6'7q$AHU]EPMR&[B(F'UQk&.k'BVeX)Sm6qW#\E\724TP5f)c
-XQG_-8KK^"Ig.*oR8/_GejWJp.S`U<GA.a#OaFa@pIdpc"r9aGaL#pCq1M$W5.<f[OJbd\giI
-!oQ,TtD7%,a;@dIZpC*6AUg:i\VOH'#UB>+uGaA&1:+AFK1>I;PJ&r7Lqi/:%V,]X`sjE#K>N
-22u~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 289 226
-%%EOF
diff --git a/doc/print-setup.png b/doc/print-setup.png
deleted file mode 100644
index 904e03b..0000000
--- a/doc/print-setup.png
+++ /dev/null
Binary files differ
diff --git a/doc/print-setup.txt b/doc/print-setup.txt
deleted file mode 100644
index 69fdede..0000000
--- a/doc/print-setup.txt
+++ /dev/null
@@ -1 +0,0 @@
-[Figure not available in Info format]
diff --git a/doc/problems.texi b/doc/problems.texi
deleted file mode 100644
index 0e59e03..0000000
--- a/doc/problems.texi
+++ /dev/null
@@ -1,17 +0,0 @@
-@node Problems, Appendices, Programs, Top
-@chapter Reporting Bugs
-@cindex bugs
-@cindex problems
-
-If you find a bug in GIMP-Print or have any suggestions for modification
-or improvement, please send electronic mail to the GIMP-Print bug
-reporting address @footnote{@value{BUGADDR}}. Include the version
-number, which you can find by running @w{@samp{gimpprint-config
---version}}. Also include in your message the output that the program
-produced and the output you expected, if applicable, otherwise the best
-description of the problem that you can provide.
-
-If you have other questions, comments or suggestions about GIMP-Print,
-contact the developers via electronic mail to the GIMP-Print mailing
-list @footnote{@value{MAILLIST}}. They will try to help you out,
-although they may not have time to fix your problems.
diff --git a/doc/programs.texi b/doc/programs.texi
deleted file mode 100644
index 4db47ee..0000000
--- a/doc/programs.texi
+++ /dev/null
@@ -1,278 +0,0 @@
-@node Programs, Problems, Functions, Top
-@chapter Programs
-@cindex programs
-
-This chapter of the manual describes the use of some of the programs
-which use the GIMP-Print library (libgimpprint). Note that there is now
-a user manual in DocBook/SGML format, currently provided in HTML,
-PostScript and PDF formats which is distributed with GIMP-Print. This
-manual currently covers the use of the GIMP Print plugin and CUPS
-drivers.
-
-
-@menu
-* The GIMP plugin:: The print plugin for the GIMP
-* Ghostscript:: Printer driver
-* CUPS:: Printer driver
-@end menu
-
-@node The GIMP plugin, Ghostscript, Programs, Programs
-@section The GIMP Print plugin
-@cindex GIMP Print plugin
-@cindex Print plugin
-
-The GIMP Print plugin is the printing facility for the GNU Image
-Manipulation Program@footnote{@uref{http://www.gimp.org}}. This section
-examines the features offered by the Print plugin.
-
-The main window is divided into five panes:
-
-
-@subsection Preview
-
-The Preview pane contains a positioning widget that allows interactively
-positioning the output on the page. It contains an outer border,
-representing the sheet of paper; an inner border, representing the
-printable area of the printer; an arrow, pointing to the top of the page
-(the end that's fed into the printer); and a black rectangle,
-representing the position of the image on the page. The image can be
-moved around on the paper. When the first (left) button is used, the
-image is moved in screen pixels; when any other button is used, the
-image is moved in points@footnote{The output resolution of the plugin.}.
-The arrow resizes depending upon the media size chosen; the shaft of the
-arrow is always equal to one inch on the output.
-
-@image{print-main,,4in}
-
-
-@subsection Printer Settings
-
-The Printer Settings pane contains a dropdown menu for selecting a
-printer to print to. There is a special `printer' named @samp{File}
-that allows you to choose a file to print to, rather than a printer
-queue. The Setup box to the right allows specification of a printer
-type, a PPD file@footnote{For Postscript printers.}, and the command to
-be used to print. Each distinct printer in the Printer list can have
-different settings applied to it. Below that is a combo box allowing
-choice of media size. The choices are constrained to those that the
-printer supports. Below that are dropdown menus for choosing media type
-(what kind of paper), media source (what input tray), ink type, and
-resolution. All of these settings are printer-specific.
-
-@image{print-setup,,2in}
-
-
-@subsection Position
-
-The Position pane contains various widgets to place the image on the
-paper. These widgets work in conjunction with the Preview pane. At the
-top of the pane is a button to center the image on the paper (not on the
-printable area), and on either side buttons to center vertically and
-horizontally. Below these are four boxes that allow entry of the left,
-top, right, and bottom of the image. These positions are relative to
-the top left of the paper@footnote{Again, that's relative to the paper
-corner, not the printable area, which is usually smaller.}. There are
-two additional boxes that allow specification of the right margin and
-bottom margin if you prefer; these are relative to the bottom right
-corner of the paper. Any of these may have values entered into them;
-the preview image will be moved appropriately.
-
-@strong{Note}: These entries do not resize the image.
-
-Finally, there is a pick box for orientation (landscape or portrait).
-There is an @samp{Auto} mode that picks the orientation that yields the
-orientation that best matches that of the image to be printed.
-
-@subsection Scaling
-
-The Scaling pane contains a slider that allows scaling of the image.
-The image can be scaled in either percent of the printable area
-(@strong{not} the page in this case) or pixels per inch (PPI) via a
-radio button below the slider. PPI allows matching image resolution to
-printer resolution. The image may be scaled using either method to
-between 5 and 100% of the imageable area. It is not possible to crop
-with the Print plugin. In Percent mode, the image is scaled so that
-neither axis will be longer than the percent of the printable area
-specified. For example, if you print an image at 20%, it will be
-possible to tile the image 5 times on one axis and at least 5 times on
-the other. To the right of the radio button is a button called Set
-Image Scale. This sets the scaling to PPI, and sets the resolution as
-closely as possible to the resolution stored in the image. To the right
-of the Set Image Scale button are two boxes that allow entry of width
-and height of the image. These set the scaling mode to PPI. Specifying
-one automatically sets the other, and the image is repositioned as
-needed to prevent it from falling off the edge of the page.
-
-To its right is a button group that allows choosing English (inch)
-units or metric (centimeter) units.
-
-@subsection Image Settings
-
-The Image Settings pane allows choice of Line Art, Solid Colors, or
-Photograph image type. Line art or Solid Colors should be used for
-graphics containing mostly solid areas of color. They're very similar
-to each other. Photograph mode dithers more slowly, but produces more
-accurate colors. To the right of these three radio buttons is a button
-called Adjust Color. This pops up a new window that controls various
-output quality settings. That will be described separately. Finally,
-there is a choice of Black and White, Color and Monochrome output.
-Monochrome output can be used to print absolute black and white very
-quickly.
-
-
-@subsubsection Adjust Output
-
-The Adjust Output button button pops up a non-modal dialog that allows
-adjustment of various parameters related to the print quality. These
-are independent of the controls within the GIMP itself and only affect
-the print.
-
-@image{print-color,,2in}
-
-At the top of the window is a thumbnail of the image that changes to
-reflect the color settings of the image. This enables you to get an
-idea of how the image will print out as you adjust settings.
-
-Below that there are eight sliders:
-
-@table @emph
-@item Brightness
-(0--2.0, default 1.0) Adjust the brightness of the image.
-
-@item Contrast
-(0--4.0, default 1.0) Adjust the output contrast.
-
-@item Cyan, Magenta, Yellow
-(0--4.0, default 1.0) Adjust the cyan, magenta, and yellow in the
-output. These should not normally need to be adjusted very much; even
-very small adjustments can go quite a long way to restoring color
-balance.
-
-@item Saturation
-(0--9.0, default 1.0) Adjust the color brilliance (saturation) of the
-output. Saturation of 0 means pure gray scale, with no color.
-Saturation of 9.0 will make just about anything but pure grays
-brilliantly colored.
-
-@item Density
-(0.1--2.0, default 1.0) Adjust the density (amount of ink) in the print.
-The density is automatically corrected for the particular printer,
-resolution, and in some cases paper choices. If solid black in the
-input is not solid in the print, the density needs to be increased; if
-there is excessive ink bleed-through and muddy dark colors, the density
-should be decreased.
-
-@strong{Note}: the density will not increase beyond a certain amount no
-matter what the slider is set to.
-
-@item Gamma
-(0.1--4.0, default 1.0) Adjust the output gamma. The gamma value is
-automatically corrected for the choice of printer; this is used if you
-believe the automatic setting is incorrect.
-@end table
-
-
-@subsubsection Dither Algorithm
-There is also a selection box for the dither algorithm to be used in the
-pop-up dialog. There are currently seven choices:
-
-@table @emph
-@item Adaptive Hybrid
-Adaptive Hybrid usually yields the best output quality; it chooses a
-modified Floyd-Steinberg error diffusion algorithm or ordered dithering
-depending upon the image characteristics.
-
-@item Ordered
-Ordered uses a pure ordered dither. It generally yields excellent
-quality for simple black and white or four color printers without
-variable drop size or drop modulation; it is not recommended if high
-quality is desired on six color printers. It is considerably faster
-than Adaptive Hybrid.
-
-@item Fast
-Fast also uses a pure ordered dither, but uses a very simple black model
-and makes no attempt to handle multi-level (6-color, variable drop size,
-or drop modulation) at all cleanly. It is substantially faster than
-Ordered dither. The quality tends to be quite poor except on simple
-four color printers. On three color printers, quality is probably
-competitive with anything else.
-
-@item Very Fast
-Very Fast is similar to Fast, except that it uses a very simple dither
-matrix that can be looked up much more quickly than the matrix used in
-the Fast dither. For simple pure black and white images dominated by
-horizontal and vertical lines, this may actually yield the best results;
-for other types of image, the quality will be poor.
-
-@item Adaptive Random
-Adaptive Random is similar to Adaptive Hybrid, except that the
-modifications to the Floyd-Steinberg algorithm are slightly different.
-This is slower than Adaptive Hybrid on most systems. For some images
-the quality may be better than Adaptive Hybrid, but generally Adaptive
-Hybrid should yield slightly superior images.
-
-@item Hybrid Floyd-Steinberg
-Hybrid Floyd-Steinberg uses the modified Floyd-Steinberg algorithm of
-Adaptive Hybrid on the entire image. Generally, the results are poor in
-pale regions.
-
-@item Random Floyd-Steinberg
-Random Floyd-Steinberg uses the modified Floyd-Steinberg algorithm of
-Adaptive Random on the entire image. Generally, the results are poor in
-pale regions.
-@end table
-
-
-@subsection Action Buttons
-
-The last pane contains four action buttons:
-
-@table @emph
-@item Print and Save Settings
-Immediately print the image (or, if the File printer is chosen, display
-a file selection window to pick the output file), and save all current
-settings for all printers.
-
-@item Save Settings
-Immediately save the settings, and continue working in the Print plugin.
-
-@item Print
-Immediately print the image (or, if the @samp{File} printer is chosen,
-display a file selection window to pick the output file), but do not
-save settings.
-
-@item Cancel
-Immediately quit without saving settings or printing.
-@end table
-
-
-@node Ghostscript, CUPS, The GIMP plugin, Programs
-@section Ghostscript driver
-@cindex ghostscript driver
-
-
-@node CUPS, , Ghostscript, Programs
-@section CUPS driver
-@cindex CUPS driver
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/doc/stamp-vti b/doc/stamp-vti
deleted file mode 100644
index e9a4321..0000000
--- a/doc/stamp-vti
+++ /dev/null
@@ -1,3 +0,0 @@
-@set UPDATED 27 October 2001
-@set EDITION 4.2.7
-@set VERSION 4.2.7
diff --git a/doc/users_guide/Makefile.am b/doc/users_guide/Makefile.am
index 406bc1f..c29c952 100644
--- a/doc/users_guide/Makefile.am
+++ b/doc/users_guide/Makefile.am
@@ -1,4 +1,4 @@
-## $Id: Makefile.am,v 1.28.2.4 2003/12/07 14:57:33 rlk Exp $
+## $Id: Makefile.am,v 1.42 2005/01/30 16:01:52 rleigh Exp $
## Copyright (C) 2001 Andy Stewart and Roger Leigh
##
## This program is free software; you can redistribute it and/or modify
@@ -23,9 +23,34 @@ AUTOMAKE_OPTIONS = 1.4 gnu
MAINT_CHARSET = latin1
+include $(top_srcdir)/scripts/global.mk
+
## Variables
+EPSLEVEL = 2
+
+UTIL_MANUAL = util-edition
+UTIL_MANUAL_SRC_FILES = $(srcdir)/$(UTIL_MANUAL).sgml \
+ $(srcdir)/title.sgml \
+ $(srcdir)/history.sgml \
+ $(srcdir)/utils.sgml \
+ $(srcdir)/gfdl.sgml
+
+GIMP_MANUAL = gimp-edition
+GIMP_MANUAL_SRC_FILES = $(srcdir)/$(GIMP_MANUAL).sgml \
+ $(srcdir)/title.sgml \
+ $(srcdir)/history.sgml \
+ $(srcdir)/gimp.sgml \
+ $(srcdir)/gfdl.sgml
+
+CUPS_MANUAL = cups-edition
+CUPS_MANUAL_SRC_FILES = $(srcdir)/$(CUPS_MANUAL).sgml \
+ $(srcdir)/title.sgml \
+ $(srcdir)/history.sgml \
+ $(srcdir)/cups.sgml \
+ $(srcdir)/gfdl.sgml
+
MANUAL = users-guide
MANUAL_SRC_FILES = $(srcdir)/$(MANUAL).sgml \
$(srcdir)/title.sgml \
@@ -34,21 +59,43 @@ MANUAL_SRC_FILES = $(srcdir)/$(MANUAL).sgml \
$(srcdir)/cups.sgml \
$(srcdir)/utils.sgml \
$(srcdir)/gfdl.sgml
+
+UTIL_HTMLDIR = util_html
+GIMP_HTMLDIR = gimp_html
+CUPS_HTMLDIR = cups_html
HTMLDIR = html
+UTIL_OUTPUTS = \
+ $(UTIL_MANUAL).pdf \
+ util_html
+
+GIMP_OUTPUTS = \
+ $(GIMP_MANUAL).pdf \
+ gimp_html
+
+CUPS_OUTPUTS = \
+ $(CUPS_MANUAL).pdf \
+ cups_html
+
OUTPUTS = \
$(MANUAL).pdf \
- $(MANUAL).ps \
html
-USER_GUIDE = $(MANUAL).pdf html $(MANUAL).ps
+UTIL_GUIDE = $(UTIL_MANUAL).pdf util_html
+GIMP_GUIDE = $(GIMP_MANUAL).pdf gimp_html
+CUPS_GUIDE = $(CUPS_MANUAL).pdf cups_html
+USER_GUIDE = $(MANUAL).pdf html
-STANDARD_TARGETS=@USER_GUIDE@
+if INSTALL_USER_GUIDE
+STANDARD_TARGETS = $(USER_GUIDE)
+endif
-DISTHOOKDIRS = figures $(HTMLDIR)
-DISTHOOKFILES = $(STANDARD_TARGETS)
+DISTHOOKDIRS = $(HTMLDIR)/stylesheet-images
-PNG_IMAGES = figures/cups_admin.png \
+UTIL_PNG_IMAGES =
+
+CUPS_PNG_IMAGES = \
+ figures/cups_admin.png \
figures/cups_admin_device.png \
figures/cups_admin_make.png \
figures/cups_admin_model.png \
@@ -56,7 +103,9 @@ PNG_IMAGES = figures/cups_admin.png \
figures/cups_config_printer.png \
figures/cups_my_printer.png \
figures/cups_printers.png \
- figures/cups_startup.png \
+ figures/cups_startup.png
+
+GIMP_PNG_IMAGES = \
figures/gimp-print-gui-1.png \
figures/gimp-print-gui.png \
figures/gimp-print-new-printer.png \
@@ -65,6 +114,15 @@ PNG_IMAGES = figures/cups_admin.png \
figures/gimp_image.png \
figures/gimp_startup.png
+PNG_IMAGES = \
+ $(CUPS_PNG_IMAGES) \
+ $(GIMP_PNG_IMAGES)
+
+DISTHOOKFILES = $(PNG_IMAGES) $(STANDARD_TARGETS) $(HTMLDIR)/*.html $(HTMLDIR)/*.css
+
+UTIL_EPS_IMAGES = $(addsuffix .eps,$(basename $(UTIL_PNG_IMAGES)))
+GIMP_EPS_IMAGES = $(addsuffix .eps,$(basename $(GIMP_PNG_IMAGES)))
+CUPS_EPS_IMAGES = $(addsuffix .eps,$(basename $(CUPS_PNG_IMAGES)))
EPS_IMAGES = $(addsuffix .eps,$(basename $(PNG_IMAGES)))
if MAINTAINER_MODE
@@ -82,6 +140,14 @@ endif
## Rules
dist-hook: $(USER_GUIDE)
+ for file in $(DISTHOOKFILES) ; do \
+ if test -f $$file ; then \
+ if ! test -d $(distdir)/`dirname $$file` ; then \
+ mkdir $(distdir)/`dirname $$file` ; \
+ fi ; \
+ cp -p $$file $(distdir)/`dirname $$file` ; \
+ fi ; \
+ done
for dir in $(DISTHOOKDIRS) ; do \
if test -d $(srcdir)/$$dir ; then \
mkdir $(distdir)/$$dir; \
@@ -95,11 +161,60 @@ dist-hook: $(USER_GUIDE)
done \
fi \
done
- for file in $(DISTHOOKFILES) ; do \
- if test -f $$file ; then \
- cp -p $$file $(distdir) ; \
+
+$(UTIL_MANUAL).pdf: $(UTIL_MANUAL_SRC_FILES)
+ if test $(srcdir) = '.' ; then \
+ : ; \
+ else \
+ if test -L $(notdir $<) ; then \
+ $(RM) $(notdir $<) ; \
+ fi ; \
+ $(LN_S) -f $(UTIL_MANUAL_SRC_FILES) . ; \
+ if test -d figures ; then \
+ : ; \
+ else \
+ mkdir figures ; \
+ fi ; \
fi ; \
- done
+ $(DB2PDF) $(UTIL_MANUAL).sgml
+
+$(GIMP_MANUAL).pdf: $(GIMP_MANUAL_SRC_FILES)
+ if test $(srcdir) = '.' ; then \
+ : ; \
+ else \
+ if test -L $(notdir $<) ; then \
+ $(RM) $(notdir $<) ; \
+ fi ; \
+ $(LN_S) -f $(GIMP_MANUAL_SRC_FILES) . ; \
+ if test -d figures ; then \
+ : ; \
+ else \
+ mkdir figures ; \
+ fi ; \
+ for image in $(addprefix $(srcdir)/, $(GIMP_PNG_IMAGES)) ; do \
+ cp -p $$image figures/`basename $$image` ; \
+ done ; \
+ fi ; \
+ $(DB2PDF) $(GIMP_MANUAL).sgml
+
+$(CUPS_MANUAL).pdf: $(CUPS_MANUAL_SRC_FILES)
+ if test $(srcdir) = '.' ; then \
+ : ; \
+ else \
+ if test -L $(notdir $<) ; then \
+ $(RM) $(notdir $<) ; \
+ fi ; \
+ $(LN_S) -f $(CUPS_MANUAL_SRC_FILES) . ; \
+ if test -d figures ; then \
+ : ; \
+ else \
+ mkdir figures ; \
+ fi ; \
+ for image in $(addprefix $(srcdir)/, $(CUPS_PNG_IMAGES)) ; do \
+ cp -p $$image figures/`basename $$image` ; \
+ done ; \
+ fi ; \
+ $(DB2PDF) $(CUPS_MANUAL).sgml
$(MANUAL).pdf: $(MANUAL_SRC_FILES)
if test $(srcdir) = '.' ; then \
@@ -108,7 +223,7 @@ $(MANUAL).pdf: $(MANUAL_SRC_FILES)
if test -L $(notdir $<) ; then \
$(RM) $(notdir $<) ; \
fi ; \
- $(LN_S) $< $(notdir $<) ; \
+ $(LN_S) -f $(MANUAL_SRC_FILES) . ; \
if test -d figures ; then \
: ; \
else \
@@ -120,21 +235,79 @@ $(MANUAL).pdf: $(MANUAL_SRC_FILES)
fi ; \
$(DB2PDF) $(MANUAL).sgml
-docs: html ps pdf
+editions: docs cups_docs gimp_docs util_docs
+
+util_docs: util_html util_pdf
+gimp_docs: gimp_html gimp_pdf
+cups_docs: cups_html cups_pdf
+docs: html pdf
+
+all_util_docs: util_html util_ps util_pdf
+all_gimp_docs: gimp_html gimp_ps gimp_pdf
+all_cups_docs: cups_html cups_ps cups_pdf
+all_docs: html ps pdf
all-local: $(ALL_LOCAL_TARGETS)
+util_pdf: $(UTIL_MANUAL).pdf
+gimp_pdf: $(GIMP_MANUAL).pdf
+cups_pdf: $(CUPS_MANUAL).pdf
pdf: $(MANUAL).pdf
+util_ps: $(UTIL_MANUAL).ps
+gimp_ps: $(GIMP_MANUAL).ps
+cups_ps: $(CUPS_MANUAL).ps
ps: $(MANUAL).ps
+$(UTIL_MANUAL).ps: $(UTIL_MANUAL_SRC_FILES) $(UTIL_EPS_IMAGES)
+ for i in $(UTIL_MANUAL_SRC_FILES); do \
+ j=`basename $$i .sgml`; \
+ sed -e 's/\.png"/.eps"/g' \
+ -e 's/FORMAT="PNG"/FORMAT="EPS"/g' $$i > $$j-eps.sgml; \
+ done
+ cat $(UTIL_MANUAL).sgml | sed -e 's/\.sgml"/-eps.sgml"/g' > $(UTIL_MANUAL)-eps.sgml
+ $(DB2PS) $(UTIL_MANUAL)-eps.sgml
+ mv $(UTIL_MANUAL)-eps.ps $(UTIL_MANUAL).ps
+ for i in $(UTIL_MANUAL_SRC_FILES); do \
+ j=`basename $$i .sgml`; \
+ $(RM) -f $${j}-eps.*; \
+ done
+
+$(GIMP_MANUAL).ps: $(GIMP_MANUAL_SRC_FILES) $(GIMP_EPS_IMAGES)
+ for i in $(GIMP_MANUAL_SRC_FILES); do \
+ j=`basename $$i .sgml`; \
+ sed -e 's/\.png"/.eps"/g' \
+ -e 's/FORMAT="PNG"/FORMAT="EPS"/g' $$i > $$j-eps.sgml; \
+ done
+ cat $(GIMP_MANUAL).sgml | sed -e 's/\.sgml"/-eps.sgml"/g' > $(GIMP_MANUAL)-eps.sgml
+ $(DB2PS) $(GIMP_MANUAL)-eps.sgml
+ mv $(GIMP_MANUAL)-eps.ps $(GIMP_MANUAL).ps
+ for i in $(GIMP_MANUAL_SRC_FILES); do \
+ j=`basename $$i .sgml`; \
+ $(RM) -f $${j}-eps.*; \
+ done
+
+$(CUPS_MANUAL).ps: $(CUPS_MANUAL_SRC_FILES) $(CUPS_EPS_IMAGES)
+ for i in $(CUPS_MANUAL_SRC_FILES); do \
+ j=`basename $$i .sgml`; \
+ sed -e 's/\.png"/.eps"/g' \
+ -e 's/FORMAT="PNG"/FORMAT="EPS"/g' $$i > $$j-eps.sgml; \
+ done
+ cat $(CUPS_MANUAL).sgml | sed -e 's/\.sgml"/-eps.sgml"/g' > $(CUPS_MANUAL)-eps.sgml
+ $(DB2PS) $(CUPS_MANUAL)-eps.sgml
+ mv $(CUPS_MANUAL)-eps.ps $(CUPS_MANUAL).ps
+ for i in $(CUPS_MANUAL_SRC_FILES); do \
+ j=`basename $$i .sgml`; \
+ $(RM) -f $${j}-eps.*; \
+ done
+
$(MANUAL).ps: $(MANUAL_SRC_FILES) $(EPS_IMAGES)
for i in $(MANUAL_SRC_FILES); do \
j=`basename $$i .sgml`; \
sed -e 's/\.png"/.eps"/g' \
-e 's/FORMAT="PNG"/FORMAT="EPS"/g' $$i > $$j-eps.sgml; \
done
- cat $(MANUAL).sgml | sed -e 's/\.sgml"/-eps.sgml"/g' > $(MANUAL)-eps.sgml
+ cat $(MANUAL).sgml | sed -e 's/\.sgml"/-eps.sgml"/g' > $(MANUAL)-eps.sgml
$(DB2PS) $(MANUAL)-eps.sgml
mv $(MANUAL)-eps.ps $(MANUAL).ps
for i in $(MANUAL_SRC_FILES); do \
@@ -144,21 +317,78 @@ $(MANUAL).ps: $(MANUAL_SRC_FILES) $(EPS_IMAGES)
%.eps:
if test ! -d figures ; then mkdir figures ; fi
- $(CONVERT) $(srcdir)/$(basename $@).png EPS2:$@
+ $(CONVERT) $(srcdir)/$(basename $@).png EPS$(EPSLEVEL):$@
+util_html: util-html-stamp
+gimp_html: gimp-html-stamp
+cups_html: cups-html-stamp
html: html-stamp
# This ugly workaround with SOURCE is because db2html doesn't seem to like
# "./users-guide.sgml". Note that db2ps does not have the same limitation.
# html-stamp should *only* be called by html--it's just a timestamp!
-html-stamp: $(srcdir)/$(MANUAL).sgml $(PNG_IMAGES)
+
+util-html-stamp: $(UTIL_MANUAL_SRC_FILES) $(UTIL_PNG_IMAGES)
if test $(srcdir) = '.' ; then \
: ; \
else \
if test -L $(notdir $<) ; then \
$(RM) $(notdir $<) ; \
fi ; \
- $(LN_S) $< $(notdir $<) ; \
+ $(LN_S) -f $(UTIL_MANUAL_SRC_FILES) . ; \
+ fi
+ $(DB2HTML) $(UTIL_MANUAL).sgml
+ -$(RM) -rf $(UTIL_HTMLDIR)
+ mv $(UTIL_MANUAL) $(UTIL_HTMLDIR)
+ chmod a+rx $(UTIL_HTMLDIR)
+ touch util-html-stamp
+
+gimp-html-stamp: $(GIMP_MANUAL_SRC_FILES) $(GIMP_PNG_IMAGES)
+ if test $(srcdir) = '.' ; then \
+ : ; \
+ else \
+ if test -L $(notdir $<) ; then \
+ $(RM) $(notdir $<) ; \
+ fi ; \
+ $(LN_S) -f $(GIMP_MANUAL_SRC_FILES) . ; \
+ fi
+ $(DB2HTML) $(GIMP_MANUAL).sgml
+ -mkdir $(GIMP_MANUAL)/figures
+ for image in $(addprefix $(srcdir)/, $(GIMP_PNG_IMAGES)) ; do \
+ cp -p $$image $(GIMP_MANUAL)/figures/`basename $$image` ; \
+ done
+ -$(RM) -rf $(GIMP_HTMLDIR)
+ mv $(GIMP_MANUAL) $(GIMP_HTMLDIR)
+ chmod a+rx $(GIMP_HTMLDIR)
+ touch gimp-html-stamp
+
+cups-html-stamp: $(CUPS_MANUAL_SRC_FILES) $(CUPS_PNG_IMAGES)
+ if test $(srcdir) = '.' ; then \
+ : ; \
+ else \
+ if test -L $(notdir $<) ; then \
+ $(RM) $(notdir $<) ; \
+ fi ; \
+ $(LN_S) -f $(CUPS_MANUAL_SRC_FILES) . ; \
+ fi
+ $(DB2HTML) $(CUPS_MANUAL).sgml
+ -mkdir $(CUPS_MANUAL)/figures
+ for image in $(addprefix $(srcdir)/, $(CUPS_PNG_IMAGES)) ; do \
+ cp -p $$image $(CUPS_MANUAL)/figures/`basename $$image` ; \
+ done
+ -$(RM) -rf $(CUPS_HTMLDIR)
+ mv $(CUPS_MANUAL) $(CUPS_HTMLDIR)
+ chmod a+rx $(CUPS_HTMLDIR)
+ touch cups-html-stamp
+
+html-stamp: $(MANUAL_SRC_FILES) $(PNG_IMAGES)
+ if test $(srcdir) = '.' ; then \
+ : ; \
+ else \
+ if test -L $(notdir $<) ; then \
+ $(RM) $(notdir $<) ; \
+ fi ; \
+ $(LN_S) -f $(MANUAL_SRC_FILES) . ; \
fi
$(DB2HTML) $(MANUAL).sgml
-mkdir $(MANUAL)/figures
@@ -180,7 +410,7 @@ install-data-local: $(STANDARD_TARGETS)
$(INSTALL_DATA) $(srcdir)/$(MANUAL).pdf $(DESTDIR)$(datadir)/$(PACKAGE)/doc ; \
fi ; \
if test -d $(HTMLDIR) ; then \
- HTMLGENDIR="$(HTMLDIR)" ; \
+ HTMLGENDIR="$(HTMLDIR)" ; \
elif test -d $(srcdir)/$(HTMLDIR) ; then \
HTMLGENDIR="$(srcdir)/$(HTMLDIR)" ; \
else \
@@ -191,7 +421,7 @@ install-data-local: $(STANDARD_TARGETS)
$(INSTALL_DATA) $$file $(DESTDIR)$(datadir)/$(PACKAGE)/doc/html ; \
fi ; \
done ; \
- for file in $$HTMLGENDIR/figures/*.png ; do \
+ for file in $(srcdir)/figures/*.png ; do \
if test -f $$file ; then \
$(INSTALL_DATA) $$file $(DESTDIR)$(datadir)/$(PACKAGE)/doc/html/figures ; \
fi ; \
@@ -210,8 +440,11 @@ uninstall-local:
CLEAN_MANUALS = \
$(RM) -f $(MANUAL).pdf $(MANUAL).ps ; \
- $(RM) -rf html-stamp $(HTMLDIR) ; \
- $(RM) -f $(EPS_IMAGES)
+ $(RM) -f $(CUPS_MANUAL).pdf $(CUPS_MANUAL).ps ; \
+ $(RM) -f $(GIMP_MANUAL).pdf $(GIMP_MANUAL).ps ; \
+ $(RM) -f $(UTIL_MANUAL).pdf $(UTIL_MANUAL).ps ; \
+ $(RM) -rf *html-stamp $(HTMLDIR) $(CUPS_HTMLDIR) $(GIMP_HTMLDIR) $(UTIL_HTMLDIR) ; \
+ $(RM) -f $(EPS_IMAGES) $(CUPS_EPS_IMAGES) $(GIMP_EPS_IMAGES) $(UTIL_EPS_IMAGES)
clean-local:
if test $(srcdir) = "." -a $(MAINT_MODE) = false ; then \
@@ -225,7 +458,8 @@ clean-local:
if test $(srcdir) = "." ; then \
: ; \
else \
- $(RM) -f $(MANUAL_SRC_FILES); \
+ $(RM) -f $(MANUAL_SRC_FILES) $(CUPS_MANUAL_SRC_FILES) ; \
+ $(RM) -f $(GIMP_MANUAL_SRC_FILES) $(UTIL_CUPS_MANUAL_SRC_FILES) ; \
$(RM) -rf figures ; \
fi
-$(RM) -rf *.tex *.log *.aux *.dvi *.gz *.out *.junk *.out *.fot
@@ -262,22 +496,52 @@ maintainer-clean-local:
help:
@echo " "
- @echo "Supported targets in this Makefile:"
+ @echo "Targets for the complete user's guide:"
+ @echo " "
@echo " docs - creates PS, PDF, and HTML documentation files"
+ @echo " all_docs - creates PS and HTML documentation files"
@echo " ps - creates PostScript documentation"
@echo " pdf - creates PDF documentation"
@echo " html - creates HTML documentation"
@echo " clean - deletes machine generated files, but not outputs"
@echo " veryclean - deletes output files in addition"
@echo " help - prints this help text"
+ @echo ""
+ @echo "Targets for specific manual editions:"
+ @echo " "
+ @echo " cups_html - generate HTML for CUPS edition of the manual"
+ @echo " cups_pdf - generate PDF for CUPS edition of the manual"
+ @echo " cups_ps - generate PS for CUPS edition of the manual"
+ @echo " "
+ @echo " gimp_docs - generate HTML, PDF, and PS for GIMP edition of the manual"
+ @echo " gimp_html - generate HTML for GIMP edition of the manual"
+ @echo " gimp_pdf - generate PDF for GIMP edition of the manual"
+ @echo " gimp_ps - generate PS for GIMP edition of the manual"
+ @echo " "
+ @echo " util_docs - generate HTML, PDF, and PS for UTIL edition of the manual"
+ @echo " util_html - generate HTML for UTIL edition of the manual"
+ @echo " util_pdf - generate PDF for UTIL edition of the manual"
+ @echo " util_ps - generate PS for UTIL edition of the manual"
+ @echo " "
+ @echo " editions - generates HTML, PDF, and PS for ALL editions of the manual"
@echo " "
## Clean
-MAINTAINERCLEANFILES = Makefile.in html-stamp
+MAINTAINERCLEANFILES = Makefile.in *html-stamp
-EXTRA_DIST = README $(MANUAL_SRC_FILES) html-stamp
+EXTRA_DIST = README \
+ $(MANUAL_SRC_FILES) \
+ html-stamp \
+ cups-edition.sgml \
+ gimp-edition.sgml \
+ util-edition.sgml
-.PHONY: docs html ps pdf help
+.PHONY: docs cups_docs gimp_docs util_docs
+.PHONY: all_docs all_cups_docs all_gimp_docs all_util_docs
+.PHONY: html cups_html gimp_html util_html
+.PHONY: ps cups_ps gimp_ps util_ps
+.PHONY: pdf cups_pdf gimp_pdf util_pdf
+.PHONY: help
diff --git a/doc/users_guide/Makefile.in b/doc/users_guide/Makefile.in
index 23428df..424c245 100644
--- a/doc/users_guide/Makefile.in
+++ b/doc/users_guide/Makefile.in
@@ -1,6 +1,8 @@
-# Makefile.in generated automatically by automake 1.4 from Makefile.am
+# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# @configure_input@
-# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -10,324 +12,600 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
+@SET_MAKE@
-SHELL = @SHELL@
-
+# Variables
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = @bindir@
-sbindir = @sbindir@
-libexecdir = @libexecdir@
-datadir = @datadir@
-sysconfdir = @sysconfdir@
-sharedstatedir = @sharedstatedir@
-localstatedir = @localstatedir@
-libdir = @libdir@
-infodir = @infodir@
-mandir = @mandir@
-includedir = @includedir@
-oldincludedir = /usr/include
-
-DESTDIR =
-
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
-
top_builddir = ../..
-
-ACLOCAL = @ACLOCAL@
-AUTOCONF = @AUTOCONF@
-AUTOMAKE = @AUTOMAKE@
-AUTOHEADER = @AUTOHEADER@
-
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-transform = @program_transform_name@
-
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
-host_alias = @host_alias@
+build_triplet = @build@
host_triplet = @host@
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/scripts/global.mk
+subdir = doc/users_guide
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gimp.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \
+ $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \
+ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
ALL_LINGUAS = @ALL_LINGUAS@
-AS = @AS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-BISON_PROG = @BISON_PROG@
-BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
+BUILD_CUPS_FALSE = @BUILD_CUPS_FALSE@
+BUILD_CUPS_PPDS_FALSE = @BUILD_CUPS_PPDS_FALSE@
+BUILD_CUPS_PPDS_TRUE = @BUILD_CUPS_PPDS_TRUE@
+BUILD_CUPS_TRUE = @BUILD_CUPS_TRUE@
+BUILD_ESCPUTIL_FALSE = @BUILD_ESCPUTIL_FALSE@
+BUILD_ESCPUTIL_TRUE = @BUILD_ESCPUTIL_TRUE@
+BUILD_FOOMATIC_3_FALSE = @BUILD_FOOMATIC_3_FALSE@
+BUILD_FOOMATIC_3_TRUE = @BUILD_FOOMATIC_3_TRUE@
+BUILD_FOOMATIC_FALSE = @BUILD_FOOMATIC_FALSE@
+BUILD_FOOMATIC_TRUE = @BUILD_FOOMATIC_TRUE@
+BUILD_GENPPD_STATIC_FALSE = @BUILD_GENPPD_STATIC_FALSE@
+BUILD_GENPPD_STATIC_TRUE = @BUILD_GENPPD_STATIC_TRUE@
+BUILD_GHOSTSCRIPT_FALSE = @BUILD_GHOSTSCRIPT_FALSE@
+BUILD_GHOSTSCRIPT_TRUE = @BUILD_GHOSTSCRIPT_TRUE@
+BUILD_GIMP2_FALSE = @BUILD_GIMP2_FALSE@
+BUILD_GIMP2_TRUE = @BUILD_GIMP2_TRUE@
+BUILD_GIMP_FALSE = @BUILD_GIMP_FALSE@
+BUILD_GIMP_TRUE = @BUILD_GIMP_TRUE@
+BUILD_LIBGUTENPRINTUI2_FALSE = @BUILD_LIBGUTENPRINTUI2_FALSE@
+BUILD_LIBGUTENPRINTUI2_TRUE = @BUILD_LIBGUTENPRINTUI2_TRUE@
+BUILD_LIBGUTENPRINTUI_FALSE = @BUILD_LIBGUTENPRINTUI_FALSE@
+BUILD_LIBGUTENPRINTUI_TRUE = @BUILD_LIBGUTENPRINTUI_TRUE@
+BUILD_MODULES_FALSE = @BUILD_MODULES_FALSE@
+BUILD_MODULES_TRUE = @BUILD_MODULES_TRUE@
+BUILD_TESTPATTERN_FALSE = @BUILD_TESTPATTERN_FALSE@
+BUILD_TESTPATTERN_TRUE = @BUILD_TESTPATTERN_TRUE@
+BUILD_TEST_FALSE = @BUILD_TEST_FALSE@
+BUILD_TEST_TRUE = @BUILD_TEST_TRUE@
+BUILD_TRANSLATED_CUPS_PPDS_FALSE = @BUILD_TRANSLATED_CUPS_PPDS_FALSE@
+BUILD_TRANSLATED_CUPS_PPDS_TRUE = @BUILD_TRANSLATED_CUPS_PPDS_TRUE@
CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
CONVERT = @CONVERT@
-CUPS_BACKEND_BIN = @CUPS_BACKEND_BIN@
-CUPS_BIN = @CUPS_BIN@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
CUPS_CFLAGS = @CUPS_CFLAGS@
-CUPS_CONF = @CUPS_CONF@
CUPS_CONFIG = @CUPS_CONFIG@
-CUPS_FILTER_BIN = @CUPS_FILTER_BIN@
-CUPS_INSTALL = @CUPS_INSTALL@
CUPS_LIBS = @CUPS_LIBS@
-CUPS_MAN = @CUPS_MAN@
-CUPS_NOINST_BIN = @CUPS_NOINST_BIN@
-CUPS_PKG = @CUPS_PKG@
+CUPS_PPDS_AT_TOP_LEVEL_FALSE = @CUPS_PPDS_AT_TOP_LEVEL_FALSE@
+CUPS_PPDS_AT_TOP_LEVEL_TRUE = @CUPS_PPDS_AT_TOP_LEVEL_TRUE@
CUPS_PPD_PS_LEVEL = @CUPS_PPD_PS_LEVEL@
-DATADIRNAME = @DATADIRNAME@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
DB2HTML = @DB2HTML@
DB2PDF = @DB2PDF@
DB2PS = @DB2PS@
-DLLTOOL = @DLLTOOL@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DIALOG = @DIALOG@
+DOXYGEN = @DOXYGEN@
DVIPDF = @DVIPDF@
DVIPS = @DVIPS@
ECHO = @ECHO@
-ESCPUTIL_BIN = @ESCPUTIL_BIN@
-ESCPUTIL_MAN = @ESCPUTIL_MAN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
-FOOMATIC_3_NOINST_BIN = @FOOMATIC_3_NOINST_BIN@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FIND = @FIND@
FOOMATIC_CONFIGURE = @FOOMATIC_CONFIGURE@
-FOOMATIC_INSTALL = @FOOMATIC_INSTALL@
FOOMATIC_KITLOAD = @FOOMATIC_KITLOAD@
-FOOMATIC_NOINST_BIN = @FOOMATIC_NOINST_BIN@
-FOOMATIC_OLDIDS_NOINST_BIN = @FOOMATIC_OLDIDS_NOINST_BIN@
FOOMATIC_PPDFILE = @FOOMATIC_PPDFILE@
-GENCAT = @GENCAT@
-GIMPPRINT_BINARY_AGE = @GIMPPRINT_BINARY_AGE@
-GIMPPRINT_CFLAGS = @GIMPPRINT_CFLAGS@
-GIMPPRINT_CURRENT_INTERFACE = @GIMPPRINT_CURRENT_INTERFACE@
-GIMPPRINT_DEPLIBS = @GIMPPRINT_DEPLIBS@
-GIMPPRINT_INTERFACE_AGE = @GIMPPRINT_INTERFACE_AGE@
-GIMPPRINT_LIBS = @GIMPPRINT_LIBS@
-GIMPPRINT_MAJOR_VERSION = @GIMPPRINT_MAJOR_VERSION@
-GIMPPRINT_MICRO_VERSION = @GIMPPRINT_MICRO_VERSION@
-GIMPPRINT_MINOR_VERSION = @GIMPPRINT_MINOR_VERSION@
-GIMPPRINT_VERSION = @GIMPPRINT_VERSION@
+GENPPD_LIBS = @GENPPD_LIBS@
+GIMP2_CFLAGS = @GIMP2_CFLAGS@
+GIMP2_LIBS = @GIMP2_LIBS@
GIMPTOOL = @GIMPTOOL@
+GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@
GIMPTOOL_CHECK = @GIMPTOOL_CHECK@
-GIMP_BIN = @GIMP_BIN@
GIMP_CFLAGS = @GIMP_CFLAGS@
GIMP_CFLAGS_NOUI = @GIMP_CFLAGS_NOUI@
GIMP_DATA_DIR = @GIMP_DATA_DIR@
GIMP_LIBS = @GIMP_LIBS@
GIMP_LIBS_NOUI = @GIMP_LIBS_NOUI@
GIMP_PLUGIN_DIR = @GIMP_PLUGIN_DIR@
-GLIBC21 = @GLIBC21@
-GMOFILES = @GMOFILES@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_CONFIG = @GLIB_CONFIG@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GMSGFMT = @GMSGFMT@
GNUCFLAGS = @GNUCFLAGS@
-IJS_BIN = @IJS_BIN@
+GTK2_CFLAGS = @GTK2_CFLAGS@
+GTK2_LIBS = @GTK2_LIBS@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_CONFIG = @GTK_CONFIG@
+GTK_LIBS = @GTK_LIBS@
+GUTENPRINTUI2_BINARY_AGE = @GUTENPRINTUI2_BINARY_AGE@
+GUTENPRINTUI2_CFLAGS = @GUTENPRINTUI2_CFLAGS@
+GUTENPRINTUI2_CURRENT_INTERFACE = @GUTENPRINTUI2_CURRENT_INTERFACE@
+GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@
+GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@
+GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la
+GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@
+GUTENPRINTUI_BINARY_AGE = @GUTENPRINTUI_BINARY_AGE@
+GUTENPRINTUI_CFLAGS = @GUTENPRINTUI_CFLAGS@
+GUTENPRINTUI_CURRENT_INTERFACE = @GUTENPRINTUI_CURRENT_INTERFACE@
+GUTENPRINTUI_INTERFACE_AGE = @GUTENPRINTUI_INTERFACE_AGE@
+GUTENPRINTUI_LIBDEPS = @GUTENPRINTUI_LIBDEPS@
+GUTENPRINTUI_LIBS = $(top_builddir)/src/gutenprintui/libgutenprintui.la
+GUTENPRINTUI_VERSION = @GUTENPRINTUI_VERSION@
+GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@
+GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@
+GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@
+GUTENPRINT_INTERFACE_AGE = @GUTENPRINT_INTERFACE_AGE@
+GUTENPRINT_LIBDEPS = @GUTENPRINT_LIBDEPS@
+
+# Libraries
+GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la
+GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@
+GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@
+GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@
+GUTENPRINT_VERSION = @GUTENPRINT_VERSION@
IJS_CFLAGS = @IJS_CFLAGS@
IJS_CONFIG = @IJS_CONFIG@
-IJS_INSTALL = @IJS_INSTALL@
IJS_LIBS = @IJS_LIBS@
-INCLUDES = @INCLUDES@
-INSTOBJEXT = @INSTOBJEXT@
-INTLBISON = @INTLBISON@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SAMPLES_FALSE = @INSTALL_SAMPLES_FALSE@
+INSTALL_SAMPLES_TRUE = @INSTALL_SAMPLES_TRUE@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTALL_USER_GUIDE_FALSE = @INSTALL_USER_GUIDE_FALSE@
+INSTALL_USER_GUIDE_TRUE = @INSTALL_USER_GUIDE_TRUE@
INTLLIBS = @INTLLIBS@
-INTLOBJS = @INTLOBJS@
-INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
+LDFLAGS = @LDFLAGS@
LEX = @LEX@
-LIBGIMPPRINT_LIBS = @LIBGIMPPRINT_LIBS@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBICONV = @LIBICONV@
-LIBM = @LIBM@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
LIBREADLINE_DEPS = @LIBREADLINE_DEPS@
+LIBS = $(INTLLIBS) @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_DEPS = @LIBTOOL_DEPS@
LN_S = @LN_S@
LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
-LT_AGE = @LT_AGE@
-LT_CURRENT = @LT_CURRENT@
-LT_RELEASE = @LT_RELEASE@
-LT_REVISION = @LT_REVISION@
MAINT = @MAINT@
MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@
-MAIN_BIN = @MAIN_BIN@
-MAIN_DAT = @MAIN_DAT@
-MAIN_MAN = @MAIN_MAN@
-MAIN_SCR = @MAIN_SCR@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
-OBJDUMP = @OBJDUMP@
+MSGMERGE = @MSGMERGE@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
PLUG_IN_PATH = @PLUG_IN_PATH@
-POFILES = @POFILES@
POSUB = @POSUB@
-PRINT_VASPRINTF = @PRINT_VASPRINTF@
RANLIB = @RANLIB@
RELEASE_DATE = @RELEASE_DATE@
RM = @RM@
-SAMPLE_IMAGES = @SAMPLE_IMAGES@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
STRIP = @STRIP@
-TESTPATTERN_BIN = @TESTPATTERN_BIN@
-TEST_BIN = @TEST_BIN@
TEXI2HTML = @TEXI2HTML@
-USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
+USE_LEVEL3_PS_FALSE = @USE_LEVEL3_PS_FALSE@
+USE_LEVEL3_PS_TRUE = @USE_LEVEL3_PS_TRUE@
USE_NLS = @USE_NLS@
+USE_NLS_FALSE = @USE_NLS_FALSE@
+USE_NLS_TRUE = @USE_NLS_TRUE@
VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
YACC = @YACC@
-YACC_PROG = @YACC_PROG@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
cups_bindir = @cups_bindir@
cups_conf_datadir = @cups_conf_datadir@
cups_conf_serverbin = @cups_conf_serverbin@
cups_conf_serverroot = @cups_conf_serverroot@
cups_exec_prefix = @cups_exec_prefix@
cups_prefix = @cups_prefix@
+cups_sbindir = @cups_sbindir@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+gimp2_plug_indir = @gimp2_plug_indir@
gimp_plug_indir = @gimp_plug_indir@
-gimpprint_cflags = @gimpprint_cflags@
-gimpprint_libs = @gimpprint_libs@
-
+gutenprint_cflags = @gutenprint_cflags@
+gutenprint_libs = @gutenprint_libs@
+gutenprintui2_cflags = @gutenprintui2_cflags@
+gutenprintui2_libs = @gutenprintui2_libs@
+gutenprintui_cflags = @gutenprintui_cflags@
+gutenprintui_libs = @gutenprintui_libs@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
AUTOMAKE_OPTIONS = 1.4 gnu
-
MAINT_CHARSET = latin1
+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(LOCAL_CPPFLAGS) $(GNUCFLAGS)
+EPSLEVEL = 2
+UTIL_MANUAL = util-edition
+UTIL_MANUAL_SRC_FILES = $(srcdir)/$(UTIL_MANUAL).sgml \
+ $(srcdir)/title.sgml \
+ $(srcdir)/history.sgml \
+ $(srcdir)/utils.sgml \
+ $(srcdir)/gfdl.sgml
+
+GIMP_MANUAL = gimp-edition
+GIMP_MANUAL_SRC_FILES = $(srcdir)/$(GIMP_MANUAL).sgml \
+ $(srcdir)/title.sgml \
+ $(srcdir)/history.sgml \
+ $(srcdir)/gimp.sgml \
+ $(srcdir)/gfdl.sgml
+
+CUPS_MANUAL = cups-edition
+CUPS_MANUAL_SRC_FILES = $(srcdir)/$(CUPS_MANUAL).sgml \
+ $(srcdir)/title.sgml \
+ $(srcdir)/history.sgml \
+ $(srcdir)/cups.sgml \
+ $(srcdir)/gfdl.sgml
MANUAL = users-guide
-MANUAL_SRC_FILES = $(srcdir)/$(MANUAL).sgml $(srcdir)/title.sgml $(srcdir)/history.sgml $(srcdir)/gimp.sgml $(srcdir)/cups.sgml $(srcdir)/utils.sgml $(srcdir)/gfdl.sgml
-
+MANUAL_SRC_FILES = $(srcdir)/$(MANUAL).sgml \
+ $(srcdir)/title.sgml \
+ $(srcdir)/history.sgml \
+ $(srcdir)/gimp.sgml \
+ $(srcdir)/cups.sgml \
+ $(srcdir)/utils.sgml \
+ $(srcdir)/gfdl.sgml
+
+UTIL_HTMLDIR = util_html
+GIMP_HTMLDIR = gimp_html
+CUPS_HTMLDIR = cups_html
HTMLDIR = html
-
-OUTPUTS = $(MANUAL).pdf $(MANUAL).ps html
-
-
-USER_GUIDE = $(MANUAL).pdf html $(MANUAL).ps
-
-STANDARD_TARGETS = @USER_GUIDE@
-
-DISTHOOKDIRS = figures $(HTMLDIR)
-DISTHOOKFILES = $(STANDARD_TARGETS)
-
-PNG_IMAGES = figures/cups_admin.png figures/cups_admin_device.png figures/cups_admin_make.png figures/cups_admin_model.png figures/cups_admin_success.png figures/cups_config_printer.png figures/cups_my_printer.png figures/cups_printers.png figures/cups_startup.png figures/gimp-print-gui-1.png figures/gimp-print-gui.png figures/gimp-print-new-printer.png figures/gimp-print-print-color-adjust.png figures/gimp-print-setup.png figures/gimp_image.png figures/gimp_startup.png
-
-
+UTIL_OUTPUTS = \
+ $(UTIL_MANUAL).pdf \
+ util_html
+
+GIMP_OUTPUTS = \
+ $(GIMP_MANUAL).pdf \
+ gimp_html
+
+CUPS_OUTPUTS = \
+ $(CUPS_MANUAL).pdf \
+ cups_html
+
+OUTPUTS = \
+ $(MANUAL).pdf \
+ html
+
+UTIL_GUIDE = $(UTIL_MANUAL).pdf util_html
+GIMP_GUIDE = $(GIMP_MANUAL).pdf gimp_html
+CUPS_GUIDE = $(CUPS_MANUAL).pdf cups_html
+USER_GUIDE = $(MANUAL).pdf html
+@INSTALL_USER_GUIDE_TRUE@STANDARD_TARGETS = $(USER_GUIDE)
+DISTHOOKDIRS = $(HTMLDIR)/stylesheet-images
+UTIL_PNG_IMAGES =
+CUPS_PNG_IMAGES = \
+ figures/cups_admin.png \
+ figures/cups_admin_device.png \
+ figures/cups_admin_make.png \
+ figures/cups_admin_model.png \
+ figures/cups_admin_success.png \
+ figures/cups_config_printer.png \
+ figures/cups_my_printer.png \
+ figures/cups_printers.png \
+ figures/cups_startup.png
+
+GIMP_PNG_IMAGES = \
+ figures/gimp-print-gui-1.png \
+ figures/gimp-print-gui.png \
+ figures/gimp-print-new-printer.png \
+ figures/gimp-print-print-color-adjust.png \
+ figures/gimp-print-setup.png \
+ figures/gimp_image.png \
+ figures/gimp_startup.png
+
+PNG_IMAGES = \
+ $(CUPS_PNG_IMAGES) \
+ $(GIMP_PNG_IMAGES)
+
+DISTHOOKFILES = $(PNG_IMAGES) $(STANDARD_TARGETS) $(HTMLDIR)/*.html $(HTMLDIR)/*.css
+UTIL_EPS_IMAGES = $(addsuffix .eps,$(basename $(UTIL_PNG_IMAGES)))
+GIMP_EPS_IMAGES = $(addsuffix .eps,$(basename $(GIMP_PNG_IMAGES)))
+CUPS_EPS_IMAGES = $(addsuffix .eps,$(basename $(CUPS_PNG_IMAGES)))
EPS_IMAGES = $(addsuffix .eps,$(basename $(PNG_IMAGES)))
-@MAINTAINER_MODE_TRUE@MAINT_MODE = true
@MAINTAINER_MODE_FALSE@MAINT_MODE = false
-@MAINTAINER_MODE_TRUE@ALL_LOCAL_TARGETS = docs
+@MAINTAINER_MODE_TRUE@MAINT_MODE = true
@MAINTAINER_MODE_FALSE@ALL_LOCAL_TARGETS = $(STANDARD_TARGETS)
+@MAINTAINER_MODE_TRUE@ALL_LOCAL_TARGETS = docs
+CLEAN_MANUALS = \
+ $(RM) -f $(MANUAL).pdf $(MANUAL).ps ; \
+ $(RM) -f $(CUPS_MANUAL).pdf $(CUPS_MANUAL).ps ; \
+ $(RM) -f $(GIMP_MANUAL).pdf $(GIMP_MANUAL).ps ; \
+ $(RM) -f $(UTIL_MANUAL).pdf $(UTIL_MANUAL).ps ; \
+ $(RM) -rf *html-stamp $(HTMLDIR) $(CUPS_HTMLDIR) $(GIMP_HTMLDIR) $(UTIL_HTMLDIR) ; \
+ $(RM) -f $(EPS_IMAGES) $(CUPS_EPS_IMAGES) $(GIMP_EPS_IMAGES) $(UTIL_EPS_IMAGES)
+
+MAINTAINERCLEANFILES = Makefile.in *html-stamp
+EXTRA_DIST = README \
+ $(MANUAL_SRC_FILES) \
+ html-stamp \
+ cups-edition.sgml \
+ gimp-edition.sgml \
+ util-edition.sgml
+
+all: all-am
-CLEAN_MANUALS = $(RM) -f $(MANUAL).pdf $(MANUAL).ps ; $(RM) -rf html-stamp $(HTMLDIR) ; $(RM) -f $(EPS_IMAGES)
-
-
-MAINTAINERCLEANFILES = Makefile.in html-stamp
-
-EXTRA_DIST = README $(MANUAL_SRC_FILES) html-stamp
-mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
-CONFIG_HEADER = ../../config.h
-CONFIG_CLEAN_FILES =
-DIST_COMMON = README Makefile.am Makefile.in
-
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
-TAR = tar
-GZIP_ENV = --best
-all: all-redirect
.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps doc/users_guide/Makefile
-
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/scripts/global.mk $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/users_guide/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/users_guide/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
tags: TAGS
TAGS:
+ctags: CTAGS
+CTAGS:
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-
-subdir = doc/users_guide
distdir: $(DISTFILES)
- $(mkinstalldirs) $(distdir)/$(srcdir)
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
+ $(mkdir_p) $(distdir)/$(srcdir) $(distdir)/../../scripts
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
if test -d $$d/$$file; then \
- cp -pr $$/$$file $(distdir)/$$file; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $$d/$$file $(distdir)/$$file || :; \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
fi; \
done
- $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook
-info-am:
-info: info-am
-dvi-am:
-dvi: dvi-am
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-hook
check-am: all-am
check: check-am
-installcheck-am:
-installcheck: installcheck-am
-install-exec-am:
+all-am: Makefile all-local
+installdirs:
+install: install-am
install-exec: install-exec-am
-
-install-data-am: install-data-local
install-data: install-data-am
+uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-install: install-am
-uninstall-am: uninstall-local
-uninstall: uninstall-am
-all-am: Makefile all-local
-all-redirect: all-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
-installdirs:
-
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f Makefile $(CONFIG_CLEAN_FILES)
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-mostlyclean-am: mostlyclean-generic
+clean: clean-am
-mostlyclean: mostlyclean-am
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
-clean-am: clean-generic mostlyclean-am clean-local
+dvi: dvi-am
-clean: clean-am
+dvi-am:
-distclean-am: distclean-generic clean-am
- -rm -f libtool
+info: info-am
-distclean: distclean-am
+info-am:
-maintainer-clean-am: maintainer-clean-generic distclean-am \
- maintainer-clean-local
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
+install-data-am: install-data-local
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-.PHONY: tags distdir info-am info dvi-am dvi check check-am \
-installcheck-am installcheck install-exec-am install-exec \
-install-data-local install-data-am install-data install-am install \
-uninstall-local uninstall-am uninstall all-local all-redirect all-am \
-all installdirs mostlyclean-generic distclean-generic clean-generic \
-maintainer-clean-generic clean mostlyclean distclean maintainer-clean
+pdf-am:
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-local
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+ clean-libtool clean-local dist-hook distclean \
+ distclean-generic distclean-libtool distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-data-local install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic \
+ maintainer-clean-local mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-info-am uninstall-local
@SET_MAKE@
+export STP_MODULE_PATH = $(top_builddir)/src/main/.libs:$(top_builddir)/src/main
+export STP_DATA_PATH = $(top_srcdir)/src/main
+
+# Rules
+
+$(top_builddir)/src/main/libgutenprint.la:
+ cd $(top_builddir)/src/main; \
+ $(MAKE)
+
+$(top_builddir)/src/gutenprintui/libgutenprintui.la:
+ cd $(top_builddir)/src/gutenprintui; \
+ $(MAKE)
+
+$(top_builddir)/src/gutenprintui2/libgutenprintui2.la:
+ cd $(top_builddir)/src/gutenprintui2; \
+ $(MAKE)
+
dist-hook: $(USER_GUIDE)
+ for file in $(DISTHOOKFILES) ; do \
+ if test -f $$file ; then \
+ if ! test -d $(distdir)/`dirname $$file` ; then \
+ mkdir $(distdir)/`dirname $$file` ; \
+ fi ; \
+ cp -p $$file $(distdir)/`dirname $$file` ; \
+ fi ; \
+ done
for dir in $(DISTHOOKDIRS) ; do \
if test -d $(srcdir)/$$dir ; then \
mkdir $(distdir)/$$dir; \
@@ -341,11 +619,60 @@ dist-hook: $(USER_GUIDE)
done \
fi \
done
- for file in $(DISTHOOKFILES) ; do \
- if test -f $$file ; then \
- cp -p $$file $(distdir) ; \
+
+$(UTIL_MANUAL).pdf: $(UTIL_MANUAL_SRC_FILES)
+ if test $(srcdir) = '.' ; then \
+ : ; \
+ else \
+ if test -L $(notdir $<) ; then \
+ $(RM) $(notdir $<) ; \
+ fi ; \
+ $(LN_S) -f $(UTIL_MANUAL_SRC_FILES) . ; \
+ if test -d figures ; then \
+ : ; \
+ else \
+ mkdir figures ; \
+ fi ; \
fi ; \
- done
+ $(DB2PDF) $(UTIL_MANUAL).sgml
+
+$(GIMP_MANUAL).pdf: $(GIMP_MANUAL_SRC_FILES)
+ if test $(srcdir) = '.' ; then \
+ : ; \
+ else \
+ if test -L $(notdir $<) ; then \
+ $(RM) $(notdir $<) ; \
+ fi ; \
+ $(LN_S) -f $(GIMP_MANUAL_SRC_FILES) . ; \
+ if test -d figures ; then \
+ : ; \
+ else \
+ mkdir figures ; \
+ fi ; \
+ for image in $(addprefix $(srcdir)/, $(GIMP_PNG_IMAGES)) ; do \
+ cp -p $$image figures/`basename $$image` ; \
+ done ; \
+ fi ; \
+ $(DB2PDF) $(GIMP_MANUAL).sgml
+
+$(CUPS_MANUAL).pdf: $(CUPS_MANUAL_SRC_FILES)
+ if test $(srcdir) = '.' ; then \
+ : ; \
+ else \
+ if test -L $(notdir $<) ; then \
+ $(RM) $(notdir $<) ; \
+ fi ; \
+ $(LN_S) -f $(CUPS_MANUAL_SRC_FILES) . ; \
+ if test -d figures ; then \
+ : ; \
+ else \
+ mkdir figures ; \
+ fi ; \
+ for image in $(addprefix $(srcdir)/, $(CUPS_PNG_IMAGES)) ; do \
+ cp -p $$image figures/`basename $$image` ; \
+ done ; \
+ fi ; \
+ $(DB2PDF) $(CUPS_MANUAL).sgml
$(MANUAL).pdf: $(MANUAL_SRC_FILES)
if test $(srcdir) = '.' ; then \
@@ -354,7 +681,7 @@ $(MANUAL).pdf: $(MANUAL_SRC_FILES)
if test -L $(notdir $<) ; then \
$(RM) $(notdir $<) ; \
fi ; \
- $(LN_S) $< $(notdir $<) ; \
+ $(LN_S) -f $(MANUAL_SRC_FILES) . ; \
if test -d figures ; then \
: ; \
else \
@@ -366,21 +693,79 @@ $(MANUAL).pdf: $(MANUAL_SRC_FILES)
fi ; \
$(DB2PDF) $(MANUAL).sgml
-docs: html ps pdf
+editions: docs cups_docs gimp_docs util_docs
+
+util_docs: util_html util_pdf
+gimp_docs: gimp_html gimp_pdf
+cups_docs: cups_html cups_pdf
+docs: html pdf
+
+all_util_docs: util_html util_ps util_pdf
+all_gimp_docs: gimp_html gimp_ps gimp_pdf
+all_cups_docs: cups_html cups_ps cups_pdf
+all_docs: html ps pdf
all-local: $(ALL_LOCAL_TARGETS)
+util_pdf: $(UTIL_MANUAL).pdf
+gimp_pdf: $(GIMP_MANUAL).pdf
+cups_pdf: $(CUPS_MANUAL).pdf
pdf: $(MANUAL).pdf
+util_ps: $(UTIL_MANUAL).ps
+gimp_ps: $(GIMP_MANUAL).ps
+cups_ps: $(CUPS_MANUAL).ps
ps: $(MANUAL).ps
+$(UTIL_MANUAL).ps: $(UTIL_MANUAL_SRC_FILES) $(UTIL_EPS_IMAGES)
+ for i in $(UTIL_MANUAL_SRC_FILES); do \
+ j=`basename $$i .sgml`; \
+ sed -e 's/\.png"/.eps"/g' \
+ -e 's/FORMAT="PNG"/FORMAT="EPS"/g' $$i > $$j-eps.sgml; \
+ done
+ cat $(UTIL_MANUAL).sgml | sed -e 's/\.sgml"/-eps.sgml"/g' > $(UTIL_MANUAL)-eps.sgml
+ $(DB2PS) $(UTIL_MANUAL)-eps.sgml
+ mv $(UTIL_MANUAL)-eps.ps $(UTIL_MANUAL).ps
+ for i in $(UTIL_MANUAL_SRC_FILES); do \
+ j=`basename $$i .sgml`; \
+ $(RM) -f $${j}-eps.*; \
+ done
+
+$(GIMP_MANUAL).ps: $(GIMP_MANUAL_SRC_FILES) $(GIMP_EPS_IMAGES)
+ for i in $(GIMP_MANUAL_SRC_FILES); do \
+ j=`basename $$i .sgml`; \
+ sed -e 's/\.png"/.eps"/g' \
+ -e 's/FORMAT="PNG"/FORMAT="EPS"/g' $$i > $$j-eps.sgml; \
+ done
+ cat $(GIMP_MANUAL).sgml | sed -e 's/\.sgml"/-eps.sgml"/g' > $(GIMP_MANUAL)-eps.sgml
+ $(DB2PS) $(GIMP_MANUAL)-eps.sgml
+ mv $(GIMP_MANUAL)-eps.ps $(GIMP_MANUAL).ps
+ for i in $(GIMP_MANUAL_SRC_FILES); do \
+ j=`basename $$i .sgml`; \
+ $(RM) -f $${j}-eps.*; \
+ done
+
+$(CUPS_MANUAL).ps: $(CUPS_MANUAL_SRC_FILES) $(CUPS_EPS_IMAGES)
+ for i in $(CUPS_MANUAL_SRC_FILES); do \
+ j=`basename $$i .sgml`; \
+ sed -e 's/\.png"/.eps"/g' \
+ -e 's/FORMAT="PNG"/FORMAT="EPS"/g' $$i > $$j-eps.sgml; \
+ done
+ cat $(CUPS_MANUAL).sgml | sed -e 's/\.sgml"/-eps.sgml"/g' > $(CUPS_MANUAL)-eps.sgml
+ $(DB2PS) $(CUPS_MANUAL)-eps.sgml
+ mv $(CUPS_MANUAL)-eps.ps $(CUPS_MANUAL).ps
+ for i in $(CUPS_MANUAL_SRC_FILES); do \
+ j=`basename $$i .sgml`; \
+ $(RM) -f $${j}-eps.*; \
+ done
+
$(MANUAL).ps: $(MANUAL_SRC_FILES) $(EPS_IMAGES)
for i in $(MANUAL_SRC_FILES); do \
j=`basename $$i .sgml`; \
sed -e 's/\.png"/.eps"/g' \
-e 's/FORMAT="PNG"/FORMAT="EPS"/g' $$i > $$j-eps.sgml; \
done
- cat $(MANUAL).sgml | sed -e 's/\.sgml"/-eps.sgml"/g' > $(MANUAL)-eps.sgml
+ cat $(MANUAL).sgml | sed -e 's/\.sgml"/-eps.sgml"/g' > $(MANUAL)-eps.sgml
$(DB2PS) $(MANUAL)-eps.sgml
mv $(MANUAL)-eps.ps $(MANUAL).ps
for i in $(MANUAL_SRC_FILES); do \
@@ -390,21 +775,78 @@ $(MANUAL).ps: $(MANUAL_SRC_FILES) $(EPS_IMAGES)
%.eps:
if test ! -d figures ; then mkdir figures ; fi
- $(CONVERT) $(srcdir)/$(basename $@).png EPS2:$@
+ $(CONVERT) $(srcdir)/$(basename $@).png EPS$(EPSLEVEL):$@
+util_html: util-html-stamp
+gimp_html: gimp-html-stamp
+cups_html: cups-html-stamp
html: html-stamp
# This ugly workaround with SOURCE is because db2html doesn't seem to like
# "./users-guide.sgml". Note that db2ps does not have the same limitation.
# html-stamp should *only* be called by html--it's just a timestamp!
-html-stamp: $(srcdir)/$(MANUAL).sgml $(PNG_IMAGES)
+
+util-html-stamp: $(UTIL_MANUAL_SRC_FILES) $(UTIL_PNG_IMAGES)
+ if test $(srcdir) = '.' ; then \
+ : ; \
+ else \
+ if test -L $(notdir $<) ; then \
+ $(RM) $(notdir $<) ; \
+ fi ; \
+ $(LN_S) -f $(UTIL_MANUAL_SRC_FILES) . ; \
+ fi
+ $(DB2HTML) $(UTIL_MANUAL).sgml
+ -$(RM) -rf $(UTIL_HTMLDIR)
+ mv $(UTIL_MANUAL) $(UTIL_HTMLDIR)
+ chmod a+rx $(UTIL_HTMLDIR)
+ touch util-html-stamp
+
+gimp-html-stamp: $(GIMP_MANUAL_SRC_FILES) $(GIMP_PNG_IMAGES)
+ if test $(srcdir) = '.' ; then \
+ : ; \
+ else \
+ if test -L $(notdir $<) ; then \
+ $(RM) $(notdir $<) ; \
+ fi ; \
+ $(LN_S) -f $(GIMP_MANUAL_SRC_FILES) . ; \
+ fi
+ $(DB2HTML) $(GIMP_MANUAL).sgml
+ -mkdir $(GIMP_MANUAL)/figures
+ for image in $(addprefix $(srcdir)/, $(GIMP_PNG_IMAGES)) ; do \
+ cp -p $$image $(GIMP_MANUAL)/figures/`basename $$image` ; \
+ done
+ -$(RM) -rf $(GIMP_HTMLDIR)
+ mv $(GIMP_MANUAL) $(GIMP_HTMLDIR)
+ chmod a+rx $(GIMP_HTMLDIR)
+ touch gimp-html-stamp
+
+cups-html-stamp: $(CUPS_MANUAL_SRC_FILES) $(CUPS_PNG_IMAGES)
if test $(srcdir) = '.' ; then \
: ; \
else \
if test -L $(notdir $<) ; then \
$(RM) $(notdir $<) ; \
fi ; \
- $(LN_S) $< $(notdir $<) ; \
+ $(LN_S) -f $(CUPS_MANUAL_SRC_FILES) . ; \
+ fi
+ $(DB2HTML) $(CUPS_MANUAL).sgml
+ -mkdir $(CUPS_MANUAL)/figures
+ for image in $(addprefix $(srcdir)/, $(CUPS_PNG_IMAGES)) ; do \
+ cp -p $$image $(CUPS_MANUAL)/figures/`basename $$image` ; \
+ done
+ -$(RM) -rf $(CUPS_HTMLDIR)
+ mv $(CUPS_MANUAL) $(CUPS_HTMLDIR)
+ chmod a+rx $(CUPS_HTMLDIR)
+ touch cups-html-stamp
+
+html-stamp: $(MANUAL_SRC_FILES) $(PNG_IMAGES)
+ if test $(srcdir) = '.' ; then \
+ : ; \
+ else \
+ if test -L $(notdir $<) ; then \
+ $(RM) $(notdir $<) ; \
+ fi ; \
+ $(LN_S) -f $(MANUAL_SRC_FILES) . ; \
fi
$(DB2HTML) $(MANUAL).sgml
-mkdir $(MANUAL)/figures
@@ -426,7 +868,7 @@ install-data-local: $(STANDARD_TARGETS)
$(INSTALL_DATA) $(srcdir)/$(MANUAL).pdf $(DESTDIR)$(datadir)/$(PACKAGE)/doc ; \
fi ; \
if test -d $(HTMLDIR) ; then \
- HTMLGENDIR="$(HTMLDIR)" ; \
+ HTMLGENDIR="$(HTMLDIR)" ; \
elif test -d $(srcdir)/$(HTMLDIR) ; then \
HTMLGENDIR="$(srcdir)/$(HTMLDIR)" ; \
else \
@@ -437,7 +879,7 @@ install-data-local: $(STANDARD_TARGETS)
$(INSTALL_DATA) $$file $(DESTDIR)$(datadir)/$(PACKAGE)/doc/html ; \
fi ; \
done ; \
- for file in $$HTMLGENDIR/figures/*.png ; do \
+ for file in $(srcdir)/figures/*.png ; do \
if test -f $$file ; then \
$(INSTALL_DATA) $$file $(DESTDIR)$(datadir)/$(PACKAGE)/doc/html/figures ; \
fi ; \
@@ -466,7 +908,8 @@ clean-local:
if test $(srcdir) = "." ; then \
: ; \
else \
- $(RM) -f $(MANUAL_SRC_FILES); \
+ $(RM) -f $(MANUAL_SRC_FILES) $(CUPS_MANUAL_SRC_FILES) ; \
+ $(RM) -f $(GIMP_MANUAL_SRC_FILES) $(UTIL_CUPS_MANUAL_SRC_FILES) ; \
$(RM) -rf figures ; \
fi
-$(RM) -rf *.tex *.log *.aux *.dvi *.gz *.out *.junk *.out *.fot
@@ -503,18 +946,42 @@ maintainer-clean-local:
help:
@echo " "
- @echo "Supported targets in this Makefile:"
+ @echo "Targets for the complete user's guide:"
+ @echo " "
@echo " docs - creates PS, PDF, and HTML documentation files"
+ @echo " all_docs - creates PS and HTML documentation files"
@echo " ps - creates PostScript documentation"
@echo " pdf - creates PDF documentation"
@echo " html - creates HTML documentation"
@echo " clean - deletes machine generated files, but not outputs"
@echo " veryclean - deletes output files in addition"
@echo " help - prints this help text"
+ @echo ""
+ @echo "Targets for specific manual editions:"
+ @echo " "
+ @echo " cups_html - generate HTML for CUPS edition of the manual"
+ @echo " cups_pdf - generate PDF for CUPS edition of the manual"
+ @echo " cups_ps - generate PS for CUPS edition of the manual"
+ @echo " "
+ @echo " gimp_docs - generate HTML, PDF, and PS for GIMP edition of the manual"
+ @echo " gimp_html - generate HTML for GIMP edition of the manual"
+ @echo " gimp_pdf - generate PDF for GIMP edition of the manual"
+ @echo " gimp_ps - generate PS for GIMP edition of the manual"
+ @echo " "
+ @echo " util_docs - generate HTML, PDF, and PS for UTIL edition of the manual"
+ @echo " util_html - generate HTML for UTIL edition of the manual"
+ @echo " util_pdf - generate PDF for UTIL edition of the manual"
+ @echo " util_ps - generate PS for UTIL edition of the manual"
+ @echo " "
+ @echo " editions - generates HTML, PDF, and PS for ALL editions of the manual"
@echo " "
-.PHONY: docs html ps pdf help
-
+.PHONY: docs cups_docs gimp_docs util_docs
+.PHONY: all_docs all_cups_docs all_gimp_docs all_util_docs
+.PHONY: html cups_html gimp_html util_html
+.PHONY: ps cups_ps gimp_ps util_ps
+.PHONY: pdf cups_pdf gimp_pdf util_pdf
+.PHONY: help
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/doc/users_guide/README b/doc/users_guide/README
index 9dc1b90..c6f1025 100644
--- a/doc/users_guide/README
+++ b/doc/users_guide/README
@@ -1,6 +1,6 @@
The files contained in this directory are all of the source files necessary
-to build "The User's Guide to the Gimp-Print Top Quality Printer Drivers".
+to build "The User's Guide to the Gutenprint Top Quality Printer Drivers".
Type: make pdf - to build the PDF documentation file
make ps - to build the Postscript documentation file
diff --git a/doc/users_guide/cups-edition.sgml b/doc/users_guide/cups-edition.sgml
new file mode 100644
index 0000000..2056bbf
--- /dev/null
+++ b/doc/users_guide/cups-edition.sgml
@@ -0,0 +1,58 @@
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+<!ENTITY title SYSTEM "title.sgml">
+<!ENTITY history SYSTEM "history.sgml">
+<!ENTITY gimp SYSTEM "gimp.sgml">
+<!ENTITY cups SYSTEM "cups.sgml">
+<!ENTITY utils SYSTEM "utils.sgml">
+<!ENTITY gfdl SYSTEM "gfdl.sgml">
+]>
+<book>
+
+ <bookinfo>
+ <title>The User's Guide to the Gutenprint - CUPS Edition</title>
+ <date>April 7, 2002</date>
+ <pubdate>April 7, 2002</pubdate>
+ <author>
+ <firstname>Andy</firstname>
+ <surname>Stewart</surname>
+ </author>
+ <copyright>
+ <year>2002</year>
+ <holder>Andy Stewart</holder>
+ </copyright>
+ <legalnotice>
+ <para>The User's Guide to the Gutenprint - CUPS Edition, Copyright
+2002, Andy Stewart.
+ </para>
+
+&title;
+
+<chapter><title>CUPS Edition</title>
+
+ <caution><title>PLEASE NOTE</title>
+
+ <para>
+ This manual includes a subset of chapters from a more complete
+manual entitled <emphasis>The User's Guide to the Gutenprint Top
+Quality Printer Drivers</emphasis>. To obtain the complete manual, go
+to the <ulink url="http://gimp-print.sourceforge.net">Gutenprint
+Project</ulink> home page.
+ </para>
+ <para>
+ This version of the manual has been specifically packaged in this
+way in an attempt to better suit the needs of people interested only
+in using the Gutenprint software with
+<ulink url="http://www.cups.org">CUPS</ulink> (Common Unix Printing System).
+ </para>
+
+ </caution>
+
+</chapter>
+
+&history;
+&cups;
+&gfdl;
+</book>
+
+
+
diff --git a/doc/users_guide/cups.sgml b/doc/users_guide/cups.sgml
index 60988a5..c39506f 100644
--- a/doc/users_guide/cups.sgml
+++ b/doc/users_guide/cups.sgml
@@ -1,14 +1,14 @@
- <chapter><title>CUPS and Gimp-Print</title>
+ <chapter><title>CUPS and Gutenprint</title>
<sect1><title>Introduction</title>
<para>
CUPS is an acronym which stands for <emphasis>C</emphasis>ommon
<emphasis>U</emphasis>nix <emphasis>P</emphasis>rinting
<emphasis>S</emphasis>ystem. It is assumed that the reader has
-properly installed the CUPS software and the Gimp-Print software.
+properly installed the CUPS software and the Gutenprint software.
This section will discuss adding a printer to CUPS that uses a
-Gimp-Print printer driver, as well as how to modify the various
-settings supplied by Gimp-Print. This will be a rather quick
+Gutenprint printer driver, as well as how to modify the various
+settings supplied by Gutenprint. This will be a rather quick
explanation, as the CUPS software is quite well documented, and it is
not my intention to attempt to duplicate the CUPS documentation here.
</para>
@@ -162,8 +162,8 @@ supported for each printer, as denoted by the initials in parenthesis.
(en) would be for English, (da) for Danish, (sv) for Swedish, (fr) for
French, (no) for Norwegian, (pl) for Polish, and (en_GB) for British
English (see <xref linkend="fig-cups-admin-model">). Also take note
-of the Gimp-Print revision for the driver, and ensure that it is
-indeed the version of Gimp-Print which you have most recently
+of the Gutenprint revision for the driver, and ensure that it is
+indeed the version of Gutenprint which you have most recently
installed. Once you have made the proper selection, click on the
<guibutton>Continue</guibutton> button.
</para>
@@ -213,7 +213,7 @@ After clicking on your_printer (epson_870 in this example), a window
will appear similar to that shown in <xref linkend="fig-cups-my-printer">.
It would probably be a good idea at this point to click on the
<guibutton>Print Test Page</guibutton> button to ensure that
-everything is working properly. Take note of the Gimp-Print revision
+everything is working properly. Take note of the Gutenprint revision
printed on this screen and confirm once again that it is the expected
revision.
</para>
@@ -232,8 +232,10 @@ printer you selected when you configured CUPS for your printer. The
screenshot shows the selections made by the author for his printer.
The individual selections will not be explained in detail here, as
they are the same selections which are available when using the
-Gimp-Print plugin to the GIMP. These selections are explained in
-detail in various sections of <xref linkend="ch-gimp-and-gimp-print">.
+Gutenprint plugin to the GIMP. These selections are explained in
+detail in various sections of the <emphasis>GIMP and
+Gutenprint</emphasis> chapter of <emphasis>The User's Guide to the
+Gutenprint Top Quality Printer Drivers</emphasis>.
</para>
<figure id="fig-cups-printer-config-window"><title>The CUPS Printer Cofiguration Window</title>
@@ -256,7 +258,7 @@ detail in various sections of <xref linkend="ch-gimp-and-gimp-print">.
It is possible to use the CUPS printing system from the command
line. While this document will not delve into all of the specifics of
the CUPS command line interface, there are portions of this interface
-which are specific to the Gimp-Print software.
+which are specific to the Gutenprint software.
</para>
<para>
@@ -265,7 +267,7 @@ printed output (e.g. when printing from a script). However, most
people (including the author) cannot easily predict what a command
line option of "-o stpCyan=1350" will do to the output. It is
therefore a good idea to use the GIMP to view the image and the
-Gimp-Print plugin to preview these settings before relying on the
+Gutenprint plugin to preview these settings before relying on the
command line.
</para>
@@ -284,7 +286,7 @@ general format:
When typing the command directly onto the command line, put all of the
command line options on one line, and do not type the "\" characters.
-The list of possible options which are specific to Gimp-Print,
+The list of possible options which are specific to Gutenprint,
followed by some of the supported choices, are shown below:
<programlisting>
@@ -308,7 +310,9 @@ followed by some of the supported choices, are shown below:
]]>
</programlisting>
-For more detailed information, consult the appropriate sections of <xref linkend="ch-gimp-and-gimp-print">.
+For more detailed information, consult the appropriate sections of the <emphasis>GIMP and
+Gutenprint</emphasis> chapter of <emphasis>The User's Guide to the
+Gutenprint Top Quality Printer Drivers</emphasis>.
</para>
</sect1>
diff --git a/doc/users_guide/figures/CVS/Entries b/doc/users_guide/figures/CVS/Entries
deleted file mode 100644
index 9984d4b..0000000
--- a/doc/users_guide/figures/CVS/Entries
+++ /dev/null
@@ -1,19 +0,0 @@
-/.cvsignore/1.1/Sat Oct 6 22:10:48 2001//Tgimp-print-4_2_branch
-/README/1.3/Sat Oct 27 17:08:14 2001//Tgimp-print-4_2_branch
-/cups_admin.png/1.1/Tue Oct 2 02:08:45 2001//Tgimp-print-4_2_branch
-/cups_admin_device.png/1.1/Tue Oct 2 02:08:45 2001//Tgimp-print-4_2_branch
-/cups_admin_make.png/1.1/Tue Oct 2 02:08:45 2001//Tgimp-print-4_2_branch
-/cups_admin_model.png/1.2/Sat Nov 24 00:42:16 2001//Tgimp-print-4_2_branch
-/cups_admin_success.png/1.1/Tue Oct 2 02:08:45 2001//Tgimp-print-4_2_branch
-/cups_config_printer.png/1.1/Tue Oct 2 02:08:45 2001//Tgimp-print-4_2_branch
-/cups_my_printer.png/1.2/Sat Nov 24 00:42:18 2001//Tgimp-print-4_2_branch
-/cups_printers.png/1.1/Tue Oct 2 02:08:45 2001//Tgimp-print-4_2_branch
-/cups_startup.png/1.1/Tue Oct 2 02:08:45 2001//Tgimp-print-4_2_branch
-/gimp-print-gui-1.png/1.1/Tue Oct 2 02:08:45 2001//Tgimp-print-4_2_branch
-/gimp-print-gui.png/1.1/Tue Oct 2 02:08:45 2001//Tgimp-print-4_2_branch
-/gimp-print-new-printer.png/1.1/Tue Oct 2 02:08:45 2001//Tgimp-print-4_2_branch
-/gimp-print-print-color-adjust.png/1.1/Tue Oct 2 02:08:45 2001//Tgimp-print-4_2_branch
-/gimp-print-setup.png/1.1/Tue Oct 2 02:08:45 2001//Tgimp-print-4_2_branch
-/gimp_image.png/1.1/Tue Oct 2 02:08:45 2001//Tgimp-print-4_2_branch
-/gimp_startup.png/1.1/Tue Oct 2 02:08:45 2001//Tgimp-print-4_2_branch
-D
diff --git a/doc/users_guide/figures/CVS/Repository b/doc/users_guide/figures/CVS/Repository
deleted file mode 100644
index 3897ed4..0000000
--- a/doc/users_guide/figures/CVS/Repository
+++ /dev/null
@@ -1 +0,0 @@
-print/doc/users_guide/figures
diff --git a/doc/users_guide/figures/CVS/Root b/doc/users_guide/figures/CVS/Root
deleted file mode 100644
index 437b605..0000000
--- a/doc/users_guide/figures/CVS/Root
+++ /dev/null
@@ -1 +0,0 @@
-rlk@cvs.sourceforge.net:/cvsroot/gimp-print
diff --git a/doc/users_guide/figures/CVS/Tag b/doc/users_guide/figures/CVS/Tag
deleted file mode 100644
index 5e5b854..0000000
--- a/doc/users_guide/figures/CVS/Tag
+++ /dev/null
@@ -1 +0,0 @@
-Tgimp-print-4_2_branch
diff --git a/doc/users_guide/figures/README b/doc/users_guide/figures/README
deleted file mode 100644
index 4d37e87..0000000
--- a/doc/users_guide/figures/README
+++ /dev/null
@@ -1,24 +0,0 @@
-
-Here's how I created the screen dumps shown in the documentation
-================================================================
-
-0) Bring up the interesting window to be dumped
-
-1) Bring up the GIMP
-
-2) In the GIMP, select File...Acquire...ScreenShot
-
-3) Click on the interesting window to be dumped
-
-4) Select File...SaveAs, PNG, and the file name
-
-The encapsulated postscript files are needed for generating the
-final .ps file. These are created from the PNG files using the
-convert utility. The PNG file is needed for the HTML output.
-
-The image scaling is done in the DocBook source code contained in
-users-guide.sgml
-
-AMS 3-oct-2001
-
-
diff --git a/doc/users_guide/figures/cups_admin.eps b/doc/users_guide/figures/cups_admin.eps
deleted file mode 100644
index d33f637..0000000
--- a/doc/users_guide/figures/cups_admin.eps
+++ /dev/null
@@ -1,594 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_admin.eps)
-%%CreationDate: (Sun Feb 29 19:55:36 2004)
-%%BoundingBox: 0 0 621 416
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 621 416
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-622 417
-12.000000
-622 417
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-e7e7e7
-6f6f6f
-b7b7b7
-eeeeee
-808080
-547098
-800000
-424f63
-000080
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPUBl`L]QA'PR;nhpV_@OJra;bQAF7B*?EZ@C#34#RMF(ZjG)TgXtZOK7Dgt=:HCaA*!^B
-'^\"TT5+$+5?+JD.e\5]'miTJeJE:`Gc3VDclDGPta^"k)/5Yf%$D-Q'M_GU`$o*T168H]>Kc
->]#CFYi67pKr$Rpo"]ACnR5Dt-K#NE=eA[e."7dNWWO#h&cX)5G>o!B9@+_-T>*g2=(PqTA_j
-0K?VClI5D%ToKtCBj<7P%#7MMfXlUE(;c$VutB+jk1a9g[@UtLT&:-sIm&riQ?[u)IP[k5n)/
-I_%_,Lk:/`f&VZYlp!?:qsM,Uc8Le,?.]6=`*,gK(`)pm(I%$6%6<Y9g-eH-uQ)oB[R!jh4N&
-[C"6F6Hd\q10kq(XBNhh*4mCb(n_Hdg,0$VLic/0g6kt'O/$0&LfMMC1.cQ'6VI\2d/\JEH?#
-%`ImYKQ^8_?fM(KFlVod%':lYXbBOpQtCNJ.XM:?81%H]g:uDN;l0'S)YdTA`Tc\0k)lQk$&(
-bQZK#V?:Q8dfHk-l1k2T$,BNar<5RXU[V#rDDqs;4eE7g[^j`8YKGYf;W@:lV`6iDg'APTL7P
-q^8k>(eX-Ip?h_o['IhgOS_p7'j-'ZJ3Z'\$u+-N[a8@8aH`;2dL(2p")mV[kSZ)t/e!jrp2C
---Qfrqqq3V2=FL('E&54usJTL7-_PS#MAM"BSZ/f<,%Rrq#dPB4^:Ehj-]GC?t+U`Q(IrMdg2
-R1,E.jOm69N.Xja$R[VsAO6rS,T;TZWap.3Mhj-][Bfc9g1A+j/G?7_4ps>D0q$cOSBbn.+CM
-`6k==glAdrp7m^)Ob.:HH!E-20kl;9Z:R2I0GEk+f&s;J(&jegWNnX,X<4343lNs7odqfll5Y
-R?:@e/%p0TIC^Y;F=M+GT;9KNCF:(UHr+l^IE\[-.uYk)%PJH!@PMZrEGC^%W/gMW>cc3ikW<
-C(Rqi(_hWeQ3e&jfSW:5Yf+&ald`6%Do+D(;6NN;I<e#D^[e[F[B^]&K(QAi_:X0&8(RbFS;r
-$>>g?VfZ\kt/?gX#I<>RTX,I[ZE2.^+nQO8cB+_iVN^CCt?"NjXSGeA2SbfS_rn]9UT&#9PU>
-+PYl0?1!%8'<SPBnkt83@[B67W5*X^4BBrK#Z,XtH:-;otX%7*5k7UC)+$sft8j2E^CB^WmMI
-J)`%Ee"<neLlblk)m-HaRC<cb>fKqPmQhD(k),>`WJX<\nkhI7D^mY%+3q7T#4[D<=-ArFMc_
-DTq1\N\7GrOL$3%f#^E_=:U`6PL$Pg]$n]L<e!<#B1phnU2L]Vhb]6G0Nn9&>PoKlMq"3fC>-
-;AWTNGT;<UT2g+5i.h.jPmE*[]4#`:FQLl)dkgoX[29Ll\:Hs?$j.pj<VHs>q]U(4?cq1o2GU
-Y5q7a%4-DLhe+AWY-';k`hQs;iMH"ZDLM`7?Sr[9@.]X@WQ;]Zhep0o?ig_.EZD#7J>pRY-rY
-O0DaC6EDiQPnKI#fU#qdcMrL6`<a3&u<jcpO^Y2BLQo>MdheLcoIB44-/hripc(!rp)l6_/e5
-kpn;RJrbUnC,)-uJE@f#3N4eQ.Q(<)dUd.rgC!r]J<*[,8?hC'tKk)iYq6>F=je^.laEW_LT0
-S3F#mbN>U_g9fMDh"fNJd\8M,2qEU>[>q_\*U2j2MTlo3SjC*X->JH-;"f6geWpJOXP0U$ZST
-<ia\@]<pS=kW);c3E1EXK0bu3c6$>nnSp0lGtjX0=oUV%u9Ea*@ldR%>9D>Ep`$YiP/P`D)'3
-@*rl6#XZ]D>h2n[n>p3U:7ERl=qh_\e6ZaW:m3m,i,2h/lgXt%bdMMcNq7e)l9uY`bceFfopU
-MSE]+S8#7TpcE4bEm$D&,3N8X#\f"0%U017&Q(03Qj:l%Ae`K=*R;k1W=;6K"G.impPqP@)&?
-,q;2s4Yid7F$?h4bH+mSSlu#a^X@)2(Q_Obh5Yj1Ka`OBD$kr_SDY=*K-5Z2+($5>#f6o50De
-2&!C&B+-=,BBQ)g@0GhbPiS3Zjm'-6-^CdAmRQ'u'$!STpn`)']I1COSneX3qG[cJ6\_L(2iM
-'?gZd%!ol8EoXdeC'Ppa78APqkeV;,*PDIRatm%(`T[_#^Y]iX=a0<BM>S_BUX5(-Z7OmYs@[
-SGWJ%Z?j_g5=KR[q7L:Z''O<F?k&lcKQ*R9<KR/NU`*SLCDLO*3sljrhQ]#W=[m]@OnL]I[tS
--d`]tGOMi0U*Ckk@qqK>KKLs-@]I/+QTJj^*geBf\]t63hWbi1ZEPp)X/g\fuEV'8/L=e%s_p
-7'j-,.2Sr9""XpD7E/Ft)tVC'0MaGRb","LpNXi]GlPM_JHXrI++sg][ad(aU37l6h>bIeH8,
-S@_&E$_sQY^+qb-f;Ykl"_n-fB^+0]F,+uuVm^U[W"&B-Ugq/,9ETa7g<*9c2UI)BcDWCtJ+c
-A-S@_&E$Zj->>CVmJ$O"0t%0-A.zzi1@%-L47H="^DH*qBfS2cabG"K5\kDs*V*&c:`"+N4?h
-&<P?,\fh^W(N.VAsjjmU^PIaXV<c2qVkg)kDDm*sP4*Qh'N*P;uf$tg?b0*D;/'\$oV<$RhIQ
-%).@Ohd[%Esdf9YY;Q:+*FA>'`+*]2lX_LYj3I9B=s@/%ST[Y;bjr[)-.Wn8-^U#Aqna):9n0
-a\DE'5E_Sp)Wff3K$N4Zc+B+jS*;quYe3VU;Zemc^SNN)-O'6*GIbP;B[)MS]*5tC.a1.pD9$
-=)>%!TW-3SY<oV+ZD9l7eWrHLfC2Ub=a_4#XpD;)GGRVLT#D2"keejaQdRX5H?rI*Af2m[/V$
-i[/Pa`\JDoa]bD=$!'/e\96h2sJ_A%4SH>hV,'K,46e)m"sSIM#K;!m+Dk+DiFj\Zkn3a"-if
-'H9`VQpL9Ep<=oGh5PMW'fB*!`8:0)JcV_W]$=`9h2GeK\>Z+'eEC7^R[T<[g%pM55?X'A0(F
-q5T^SnT.<er+!R"Z)goi#j)7IQ0[SRF2*NGbl9aG>6kcf`$f7?M+0?FlL%>+`K^LuT;E2W@`f
-bN;N8@QU&PN/\gfRJH!GSg!<SJLjGE\+QP<6O,J0;u'OrrN[Z5g2#$89m4<7j5WbZMP3-/.s5
-^d>O)g&kJaJRZ8^/,7?LpK_r-AX/*.jY0/CP@O9'32N%sYLN3/dZl!([SBr7Hl*7?(<=03^L/
-?Q@?EG@((>H<3W4)X).)mS;$P>Q2>&@rS37W!&,?(3#qT^#j,mBPpB-gIM<:;$u0ESkWeG9-X
-\>a4'DJo0Ara(JtpHVp9%b(-3DkO)*sWqH\C(@@ou53`/Sk;I!lNNujC?g?Bf*;aHbff8;_5F
-[LR+3E#&P`&G&04#)C%9Y'Y'',?2\uh<icb?M>A$N[=G-lr_o'C$O)tfq\Dk.s<.a,!CFs_5)
-mOF*Tgbo8bVCtQP'jS/V+Ue$V-_7C)6=9-8^oD8?eTPbnfU@tA;["qSNpOhjF"OfIf,[8[54?
-bTk4g9OT^t=+Ees:JRO#(JA%]q/GVA-"77c75SOXDgW^iF^1:k]F>HLDQr2Hu?D072%2jF]a+
-[``iW8CUJ'=NpDiHuW?B:\u1ePX/+D_Cdaap06'pVd`hX/ltGVH#LOMJan:^:C?/C9(R'R=F?
-VVCV8ge8MD-mu8)mUV\"h],K^TbAg.ZQQ%tW0\8D2lL"FBXe+q@5f%,,)gg8IVSCn:GICF[\5
-rVX]cE)N9C&ucMVI@_b`&+BB-gNB@FM^M+>)8r=OGi;<L):,a(?FD7l;mFiEJ6Ydjj'%4%D.d
-g^-iZds-,4,:Zn&\[Bg6]tT10is9kWB\6<O3pcfO:?_Bu7lHC9Y,=^DhX3,D]pVA"85f2XX\#
-;\Am/D\gB7;RW+tY-\<4\+oj7Nl?-&&p8bZClC=g)Qd]9>PA%@Rs,2J0;S0k>nZE7<.I<uEpC
-1FX4[^FlGaJ9;LBW`/Z4Xk7#+6d,(7D8'4$0J:"j/Ub%U&#aCN?^8G2galUNJM].8Oclqj'Yi
-^"s9u"OWS?Ygro+ngXc&em__\1\+]B_eL?1tNR;CTG0.6!(&tME`S1.@SG';M11JEOLj\s1Z2
-*<)A<<QHECf9J7Gp`Q,.St'?RKj<*Q.7.=kFkP@]1,*`00Td[C+(*;ql<3A2[GG^%hkGIH!Ge
-R,L3mg0S&dmqS#iD`)]S[aF2?41DjW;H#g)dJRNfcW\!J4+5-$mS&n_Sjk@coBo"*I=s5ug6A
-_ue'DpHf-dlYC%\N%q%16H#*epA<WDOR-mc>GCKGd4eV='*M7r4AUfWh$ADUX7SCWb^Wa4ja8
-+O3?nIbIX8aagHHGAA47SdepeVhPlhIVBUYV^5R,&Z"PAN%EUr*#YPV"/XbPpRHcSQmqH]hQV
-<;^*8DDUV4af0#=FgZ0k)moF9pK1E+&r@Wm$=X?'5Y]5]$EPB\>QTF``HQ2FH$DpTZn(Vq]]/
-Mlj=GNHe46j9d]nE#rmB%c'eG9$D?(O^2D7E"dm>g#-!cARG1;`%\nego`np&1!`46BjI$02N
-/qur?m9W0-O+Pf]:er6Xc<Vm$G1O1gL4X?-;Ni.i\f&saM76uqL+K4]=@HA6qJW=df(Q-,S%/
-m6Ank86o(ZD6=d5^?7V9Z4Xej1#p9RQH->pGZ(XY8m0]/bZ>+<aF2,5$87UX-D<K,kj)Ws7ek
-oI9P959\rB=%3i6>"E=j>OU%-.ueB86uL<JuGc`KK-+s+TSR&O@S\32D/pQ1\BAR-#*3$M>O_
-kjP0BJ<g!N]=@"F[2WD>B,PX0r10(mN]ndRl-_C/%K=*R=D/4JelI@MYl&,_fMofGNq6<iH7d
-i9"c#fS[Ebd/SZ-DEaY5S#)8KBthESF.UD9'T(D:TYQ.L4l),+MR;4&,PLCr3j)1NHb)DS9n*
-kI_aPbG6DsMVe\L0Y].01RjIJ$EGZ51RiYnBjl!oQ%*bj<I9<X_1Z'h*8#^)'@s-?O`*mu;D3
-^+QoCL)4a?VP$,0+@9chuT-&KtK7\h3(a;#6"0(3=_LM>U1(FB?p,PBN;p1Uk2A>ahp58uQ,I
-Ag<5X3C"o."ZBl]2PQbB;c]9DH'G4Pri3O:?W=kYcX=IX,V<b76<uQ:"SHWafa1ciTF9"'fG]
--Dq`8]Q!-G9YrCYj#NVbOh]#jiA&dZI:-$2UCaY#k,C?>"2d^qk7GjNdg;.E;mjI?CpNi_,mK
-t"u1k34Z5"XY]ER!1I,gQfJQd5Ns&.RFg\m@:s015'gr/I7k]og#%(b3dVc&e)QQ.5+rYr1k2
-)LG<8^0/2mN-qEWPA*-pYL`!r`b8*D[P2S\fQ5%jO6T=JC&me40?d"_1XrL]f`?Z<lt+JR<_o
-;jh'^A^]sDi[Zk/e#C#P"dj6NL2CT@ajq2Jd(c\EeqI,)a$(oJ\(dT7#&PXg&CP>#RLY/]h2i
-7iif2lg=`<m$+UpoTlaO_8<D<,3C=00\W4FHq#k*H3E`Za^tIon7!J&14/u3UQe@rRlCf/aGY
-r+55q<\1B*+c(9Zpg$E'^'^nfXN(CX\7D"nGhtODqB(;_XP<Ebh/WeHDV)'P@3h)p;aPML+N^
-_3!9[Lg'1FV!'K:3eklLN/>miqOY=/5LtN:<pu/c*;VX;G9[M6XRL05AaB_fkec/qZOS#eAa?
-!r\R1RVV6:I.(bPWKh*ra-5AV"e16.-GCG'LVh\*R9*ol&&V<!ocF&E>]dlG;d3aes$ns^YWm
-!g6-UTE)rjlR%F-'MF\OIak_HD2E;Oh37<d@J&a=gT:mL\&dAHs=+N&o`[d,CjMlk,_np<(ES
-#OT&l:R:g#n+4G?uC@X9C:qidUKB3-m[Pe[SV[^]CH2Fq`mi'rLW"R/S6X#>T@`WA*K-TiEYG
-Lhn`-;LLSnAfgm^\]DQ`XPX?JYmXjnl*fY)"2GMA#RcuiW[(tuZ_l%l1B<JaS=4Bm6T\A5T5_
-WC&CGi`QU6MiK-kc?$B%B)`7>>WFMo?@bZ+Lg8[$rq4P_K]Ooc1Kl6bTp$23Kgo(.IU-r=(uJ
-krbg!oE'f:&[Z/Wf!J+]a-,*+/3j+`j_0ud<E%9eSnmr3<-Iq%7Jm"5Dn%XQIJ--@DHD^?(h.
-&8E$%;bTRlHeT60]5T?^h7CKbJT?K#j/BI^;tU-#N_C+d[=Zg2>*6!`o0<SASi2mfCuLJhtj>
-?ARUC?6P%?u=91<RPf[kf(_FF66Hd*R,QVEGWJ-\M`-:eXCVrjY#$lkt64^7+p=c.mo$#SThb
-IF!1JE(._*sBV?<lHl^WUal\//:'PlS4s+tH!I;.u@,ZMDeE=QXlH2OW\:&*Z\!F4V=AQ>pmg
-bh8C]2`tOok[azzzzzz!:V""Sh6o/40OAYnW,m7.$.%,C'/Z)o4:`;\/Q[B#/G?me-77P\@f3
->oLHCP?HF5L7fXA2;]F=&P8<\:d?2!2%N^R&92&8YqGoWY^gJoL6#GOdpudGi:`Ho'?=*iCJN
-Mlp"1<^W'<QXmF4-q:g;(s@hM`nC0;q<X<&apZzzzzzz!!(qmndN<Q+>ki%&0$uJL^d#``!.O
-k@KR8FZ%34lV:paX-C$NG"\N9?9%NXT\SDOWc^iQ$[b6Ct>CZ9Q,?>aLD;TkJMX@t8RCLtXSE
-fWS[1s1'8*:q.,I^6<JRlE_mn`<mq9INiboIoCmeN9#%QhMEEAP"Jcf>hZV501<*F:?FaKp)7
-iA5J="eS:K&j^AqamIU?7)7=Bb^7cNf:.rt<).qZ^pB)bRpkj&@ra*-L#0%(D9n>J1:9Oi-+,
-$"_4tu\[FKTOkI=$0NZHXM[F$dXgI!bhD0<B$Kq@kgX"9\AfQ[$4Oq+aY[bKlL#X=8p`i/95)
-(.=I9*!QD[=RQZWA_g,>g?HV6#PUi`et:H!uH!7fH<+l&XS=`EW[+sWRr=Q0Tp4I"onW'zzpi
-b#FB("CQC!>DiZa-17p4!uKilA?Zg*R#="4I:YJa%^=^iVhYi!,SErRk?Q7;=(;/MmgBh%$3dF
-%],lq6k2b2Q6"tOB1(pe>@kt,q?D&*Iuj]7o5]@<40?E/s#A8@FCk1pNu*5C:bM)I]_i#TARW
-<7Tr@FA+3oM&%TuLf_32b[G?k9X5M+4bfEL#SD"VEQ0`MIbUN"-a:2mr*Ca/IT1*K&Tq'iH%q
-FA!"=$/*n3Cj",H/isee5C04Xp,<7B)CTMM#gL0n*lqjp/j($F9m&gt[G)No%u,H$rgAILiPH
-D:9.kB;gj)LYe]4WJT+o6W`0ZLYSQ2WVJI.,1Q;d5]'miTJeJE:`Gc3W!uE*dJ=)(GO>DeI^I
-b#2?3^Wzz^r%r%,Lkjemb7\Tbh_-^JnkZ+K<+QN3hSAb*Dd]B%]Bh1#Lir1inTcib)p:Pm[:g
-=#dmq?ocO$VC7G$7WDM>,cio3IC1DV2$K?V_AuP)8S>:t>n/=L%&(+<gC6*&<X4lLd*Z#0%'Y
-S,)2WC4?i@0(V+GC%(-=Z&^U_3T_K)Y9siG#:0U60f(9cOsaHWW&2ktb9+P*QV`ITg.M%*IdB
-+lV&N<1^[d8'Br0[ll@PGN<L3SeThP2WK*5C<Hj&B@Oqn^t#3g=iCTQ>t(VK8tQfbW/ZQ.2A,
-hs1VV,W#eo^'@W-'Rk6HH^i"(s"AtW4p)fcN4O)`dkFMYt'_N+*?ShO\b@lS+P8o^Q5T0uJ-&
-!k)oRXs1A(0.aOpH*K%Mo)lT*sSm3K'@g>^iVhY?ojr=0HEt/Qju51&5:-*()ta-zz!!!"D=Q
-Y'cg:YX8q`g(NgNut?/R`+-<?=g=e-;cPC'2oc[=RRmg;"9Fcf(ktUU)_"Rh&"*(i#NFnh5Cl
-_WJb:mFL0<L>#+)e2D,sEob[N#<2I?k^?lS:Q:9m>F0O)B5g.R,9Z_Qr^e3ZirIbb!U8Cg!f(
-nr`1H0n'hGL%b2Y,[(e^KQ"1?C.;d85FJ40B67T=WB;;l5?d;r^.08Z;0'85VB,q-WO!r3KJh
-"-OS`%*r7cpVJ9M*78]gO\)@a/b3@4g^#00X0`VD<9riEF4n((%738Gf"h#nQU8U*iST#Y/i@
-kd9D.TB#BV_perRo='OgNW_[W8W3,VY_7J@k<&1kX(8/+hn3aB+mn%qX?F<e)(771TW9rF4!)
-k2/T.!fC>95Q*/4?X-W,40(HCLBFY\=(`]?`\nON<KWfN=#eNSMS[%PQn8/f7;=P0k,'BOo+f
->Bi>?CcSra[\:.5c++"@F%['EAm)$ag:fJ?e2D]RI[3E2>YFkOd(.]aa1@RU>G/F(J_In]5]'
-miTJeJE:`Gc34=q+<a,^uTe-5mQ!!!!aQ03Yr^4:^)kKZ#24J"3gRK7^:j7pC4`V0&`s#5/i_
-*`4-fH<+,L+Bi4FJ`Fk9K27j@4!=pJ,>VF"Q3^5Nc\8teetI'\Ui`;;im8aET1p0VRD3Un@/G
-X:@Omdb5`T;JePJR'#Jddd0KB"XqZhi7r<`s[J^QBJZH=TD=N!_mP9;_iF:]!8LYM$5De163O
-O^F-cIV;%"p;%])GRrq59^G]#eVL-cHDu(s:On['Rt^!q82-aq^9T>a5O-Jif".K]$`?0I=5-
-)uos=zzzzzz!!!!E&:X+iZ_+Q0r8?a-56(Z`zzzzzzz!!#JSP2<AD&dql(7!^eAXmDmG+Ak#8
-3'/tT98_#*@J?uEn:?FJ\T;>C!tMI!,g4[OZV?(dS=.uuXh@Qqa\,Z5`<O"#<3=;0%OccbV.p
-qGbuOMlPkS&iRsIs?fbsR]fUBo*HU;ERS+X("EJE)Rg[`+UZA`^G<q.@%a\,eg9&e`2D:pr))
-`"Pc;/0kNX"CK6H`N.#//OL%Q$lX2o&Qid)r;c-gIXd-S`_N<<&HU8?f]qKH0^@$T9&ld\A(_
-f(2'jAD6++WI1#^ahYjdU;(1!Ypc=@WP:KLopFPhp>uFnJ9VLgcV^5@Zie]L3`j9c8ZJ7dC7@
-La9l-XQe@m*4Z;qqL%T:7+82cUg_mWdV*c9GD-WL"g#oiQ#f[1V_VF0A+cQ2$?nU+B3JS#70-
-9)MQ90GNWQ<q\AV[=JFFp1J,5E`Hof@X3dH1Tqag1DF&'@hW0I=eek<6ap,9`>-KY,ctA;'.G
-?Y`25M1c+!6%CK*2aZ=Ah)pP?X9nmZRk'\)7`-uSWY0pr(NAZ*VAO>deW(oodi7k8?G2WM>I?
-3QV#B7S^gi4%bRq\$E@g3@dc+kZVVS%,Q.UeJGf<OK@IK_5X&[AL+8aLaojFKjJ.^#cYnW3'0
-FY4BMJVi=Jd)WddjWE-!M0l$=CVV>6hZC\hcpS@%&>Z4k^$H]9lJ"oR5C2;hcan`PH<QC[Wh-
-!YqYo*!kT?+4;2QE$*04pof=gTUC7C>SIgN^,'_c#E-Mga_q[G>)'9bW7&d7BSu*k+3ObO_;Z
-)-IS`#JE>EJ'a1OUY88*M\:O%k:s55rZ9<0Or8s\E8iV3d6*Is/3Ci8V:,sh^=D9^idR!BNKu
-'Sl7Mrl8ZkCNo-Prh[oLVBb\BVM-!mC\jIL_1F40e8fqleb;>.37A8Rp?W89]!$eEV$!c#>S'
-'V/@fRMM+n*[Ncb1g"C*Qefk!-9smIKR2[),4kuLVAS@bn4P@EU8>;$j^s=:.6+I1=X1>6Vm'
-t&A&[8_]lFPVlZ!S\5#Ym3C.T?pf_r"ZfoY?Z2uo?m+AVq;];lYI#rF.m7Hp1?OEb15p]=O;_
-pfs'pD#Ye=5P0CMou:8$?BL],,&+>c>)>AuQ@'>iED]g,*Hmei`IupJtMWVM(Pp]8j,XkBa=F
-75/eeP\b>B,\qML&hCT@D6HmWMiEA5Ah1iJ@C'D<m7W;nrP3K?QT/97FaKT+AD$#dUAJ-RjkD
-/\N[ORuqa'i$q)/,mmWM*q;!p;E>I=:LR]n]`_'\Dh9=M]iP/Zb^=*LeEQ4'0i=M!\i+7uK`Z
-r`u\`^f3'.I8'e[ZJnt\lNia81FKo>k1?e'R.#S=R()RUDlYfGKqJcZ>=;@"lVU!-Y>fa%lPT
-@hg3Eh-+d:mZ),BGAp"sB81KD\SXmM[+^@AY0#E4onh)T&"OhA>AAX.]ju5KrR]WTL-^NO*P,
-=J9_t=Y_Qai4P8TdGV7'G=37_Bu*&pS^Pam=k2`8DB$am`V:S)&rL%u"4qP1kmGk;oI8RUI8D
-,`H3EB.=63PGYCZD4K9M)mLroIPOVHM\HDPW]4ktM@C9L`\JP$b1(%84f0;[)fQ$4C4"scM+q
-8GW%HS)G$:3^`WKSC2K(7KpcQBon`*g`,#_5SEIOn6TMZ$mbr0:U@Y*(t$n8'l,K75DA2uX^q
-ULnmX\WerG.cNQX[L$Hqm)bM[6:c3=\i3\2>YjH)rDFgo\n*lm/DWVC.J#=1sXDM;aD`"*<e`
-Ha^eqLfnRO<_NaKtkt*<<PJ(NRAk"61TASI&aA0fn<+l2\?Z1:s_tkbKW5:ZI%JRF">bn5':+
-COMAeN4E_Cs0=.SXdaiFU2M34TXa$k5tqAiVo=`Y8^g/0GB4>%?2Wm'km\hh"_IDtEYP<iOTH
-YJEntV^po7`5_Z0=csi1Wu4p:ZSjuI!.^P[dp"#6g#K>OA\A$uCU_J((^LT+2a0crXpe[,08e
->j7VCjQ)$<t0:hmVnkfE+C)ft*m&c$Y,#2FlOh)uIkHP?1f-7fPCMUs+(Y\Z`a\s7s+%o^%C!
-k7K&JJ1W6,"61dkX#Kc,pKs)2!?7p0@n>7Tu`4JCrKO*=>,pp8V^ZXTqjFNcW:)kLorW*RN6E
-A"?Xjuhh4k:c8b/3MVMm@JFoR/Cd#,@Zf]`1<-09nn8-^l1m4I'9iF$t]blo*C5Fq@kipBEg;
-<B)=$9>N)4EAiaj#0,=`%<e;RJAZ>j1Qa\4/sF&s5XY-]L]USb$^b^i6]HI9UHjglnV\]<\2p
-@kaKiDM_c1eIK>#j2u]sEhh;QT>a@'a7hNg]jl(m@HeO5*Y3XHB[Ep=rDt?PIL8HmG-`,dTXL
-K94mo!\Rih\2zzz!!(q)nf*,D=9(#eT26Jo%&LDY%!-(`VFp$`U?Z[bc>c6*Wn!D-d.k6!6#s
-Yrh\2jX?2<kp%%hTRW/j`QmBM5r`W3DPa()/e[9@]Y#IQ]%<c(0Q&A0KZSUNT@QdmOEFul1C%
-81)?=VOR-cc=)HJ,fB2YFar'_tah8M:tu<+g\iHTXG*Aq6j$+Y2`M2\ttL8:Wlb)7JlOoBm-)
-$pe*`+^U==#.YJFfZEfILFH1hch5LriB1RpIKD_=e<,H)1s/re,gS;Q1;D!Z"G&/W#eh%]9Jf
-'*nSqQ5T2n^t]qtTjMf0[DjlU4,a!M`LD[^t0RBn"GqD%B"I-^A/qG+t2f=n"Q/\".t>C#m!&
-qAf1>:_$CQe@+bQ-+.HdM8`ANXjiQ'hH?jq[9+#,D%As/:V)cg=Dgp_^RYupSA]HY4T/@GkOb
-,9V:69?]sJK^VC**#^XR2%2AJRCXQso7F]rJDkHs/V$YilPP/G"tZpDD;:tsU"dZ^8gdNpK!C
-2r?G(<OWla\@[fq)79/fMOS.;Z^/TN14"1n85)KM+r?*V*FJ6eE5b/s+T/JM-<]$l8mt[jLa2
-B]=O2&@T*N'Pd!pBC"7Jh7K.,2fIE%UK(X!7Z/n-JQ(&DUOe(SiW,;FHMLXU>*f@ZlWH(bilD
-.HHZspQF;P!-W:*)919KFW"2Eb*I1P9R\-D+/8ei0RW<<$N=et'/agX8h25+-=NC#I_eMOlim
-Bt9=8[`)-ZC+DHp.@UUE(gWpq2%R)NK5O[[ebV29$<!7T9"CM6M2fTd?MLs!V`lIk$/L:eeLY
-,Th+1u*l(t8rjsB'-C.<':<.f+iW(m-6V%m3K"iU9rW9p:WpS;9GWVNLbChcjog6U7>KcdIb+
-N$gO>&@l'E@S0$SWoYS?W2@K3N:OXdE37,CA[l"oVA$WfWnFWXh)u)S5jd0T_CEmbsVDUqKJX
-_'^bh:<Va\tZ*2=A69oBp+/j#b:tp+TUtWuKN;:-EB&N2<%o8D7G=AQLmb?9Ihq!g+_1:d#g;
-%fX5)^Qfhgk_3o++2&~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 621 416
-%%EOF
diff --git a/doc/users_guide/figures/cups_admin_device.eps b/doc/users_guide/figures/cups_admin_device.eps
deleted file mode 100644
index 637fbf8..0000000
--- a/doc/users_guide/figures/cups_admin_device.eps
+++ /dev/null
@@ -1,581 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_admin_device.eps)
-%%CreationDate: (Sun Feb 29 19:55:36 2004)
-%%BoundingBox: 0 0 621 416
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 621 416
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-622 417
-12.000000
-622 417
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-e7e7e7
-6f6f6f
-ededda
-eeeeee
-808080
-547098
-800000
-424f63
-000080
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPUl#u't[Y6#VRXOqgP(QJG*/[+HGMrGWUiH]MO*Z_b?>HMp2JoD:0*rIu>3_uO)Oma6^A
-tb_1B?j]-e&@g#1NkF#LitG#LitG#LitG#>psEW-@i;_+-9$[CCgY5#!kYhYC(+6NQ+G#kH-!
-*)pd]HF2ZL;2Zr"(s+"\o?WJ5!cSCi;4I/KAWIJ@e6*Hi(er@A+a?8ki2I.@GnJ1Xj*#QBAut
-2SkO;qZJD1[djr<+MMPI2[Z8Pg\qP_S*i4Jf<g.l/qlj5?;E0(ijjda6h2h]GK"RQpo3cCLY;
-Ho[HbpKB+G`Ki"?a0gAgsE:8@Nliqg^m=`7p0^!>t"(V#0HbXMF*!\(0c*T>#AO+D/@T%[G@G
-,QYFo1#"R+A_'s,W!TLh.b=BuNpVrh#\ed(qD.h2L$6lM&o0[4TK&DC+^S2o)W9p0MR^^7[ZE
-Qt2L=r+?p'*8^$cH1JQpM3l3",V#afLX28Yd8_$1+*/,R(Y&m<$etPr0uj=,1/A:`Hnj:`Hnd
-:`FWn:`Hnd:`Hnd:`HndT>*Pj\/15*Jg'ni"=NqW2[fV05+c.uO1nf4.Za"a&tcpbc1-Y@-@g
-eom%aHSKG%G&>fp^QD3+,GYJQ0@m%aHSKGI]DB9,pE6#j.AV)AXU>Wmqtpd'f(DjIpHg[\eu:
-n+;a[U]@7pJ3YL\hecOCkUO'TdP]#=I?M/RbBTZmd,^-<En?6IkUhn++>jprUp&n853q',H3d
-FH;t]HqO3+@Rt9(JiYS;:)miXI>CTcT?N6VCk"?Mq^OBN*q.]'1M_<L4h;*KRD=V)=7108Uc6
-S<PIl+TU7a;dhno6h0^sI_j7W"oKS+(>`8aO!-2LSgrc*O1`d]KY\V)GpbiRQL$r]Vl_YP[82
-m*)E+NF%!q4q1%D>ni=o-`&Qpg8iN-+7u#OSF^K"9C']Y_dd.K/7tG;9l2@%4cg^$ZfPm'6g(
-Oho6i%>>?u%m\pY]Q.!u[$O!n*=Uq+1m5!Qa7N_4/pIeiSZn8-3/I(\0J)QTi3q9P[*7I'OoO
--PiL]ln^cla:"UAn$Z9MpaNgHne(bJpR@o5ST]/D/uo*$HfHi0>#]rh2/+dW_M!+4@F$B\#6:
-Fk1-n>@QS8."j]*&[UP/]4'g3hZ*0PKeArrDg^[4(cUoGHHL1j5hhkknHjqRhXR[,"m-9]@@s
-ba/Q-[14=8Jpsp2)Id2F!oBiSX4bP%i=Wg*gAp,j1]B4A'V+A87mZCg#Q[dM\H,p0X]*rcn3b
-q>3E>>Iqkj^.ji?6]HS(ZM%9VrZ*MEd[K`A`k/4Hk4(,UN20Kk%]tP9\Xk,B+Zp?ii.[f.C2f
-6GQA_.O8=,`_bPcbKX/!nJM(kN@4_5hqC@br./GMA@1Prtb7="HL)gMt97;htUC9qs0@e4@3]
-faNhH?:TsR^1Yc/Gl>$W7pO-4r`dRfhp)<j[%#UT\#Wf=`I0Ye^cDNASp9^X>X9Dif0`$f>b5
-kLZN@"-Y>0B"Z+&2P='(8M(MXF<DQ2CoG"]8(nCgb<`Y^&QeHo7ePJ<ngJYGuNh`.7c_`j!_k
-M'JE`6`%Eg+Oro530LPc;o`Xj<PVI3^BoK6h#`C")s($T4"uO%4)rE:JnXD-'RRGD9\D2d1&\
-q0gbij^uFH7agDpKPudNR878>DCGuuKtd+m4'8m>\Oh"s-m)$[gh,ldZk6D=>Q2=qJm(!$XlI
-Ae9aU].eD'bDgT]Bu(FOX"X<<C`W2hMlJZ14=Z@shUIu)g=C=5"A5/Tfe>3dQ8m?2bLiM]5o?
-?s4j*?6OR.<TOi?0AHbP-.BoqU;WMR#<:;l'H.U0N1Vt,upG,).^bcb%"J>3k5,H_0<W1@Nk"
-8p`V7<,Yoat\Bul9;>>rN>XA.Dm)gG'&mS"\fc-l,p</=Fm'lrEEpJR#Rq9:$W/^]o"1-\&2(
-ALE#gtT0:il3(Dp.^?<3]^*+*jnk*(T,M(WpmKOn:a?mNi8m88lU[mVGkPG5T$Y*fe7LolmrT
-'hFroR?^9?-+B_7Rp=gOGfP9HmP!/F"L\3epcDQLlqR07Droi7DsQKoT<QBcX0$W=FDZ4(B1k
-,E.L1'ZiZ,-F[Xl']hs4Tsore3ihmLleqR_WeXL@tRde2"(5@6bj2Zunr=U(L:ZSrNb.^njlk
-q`@J=e=bib""V,HPMe!<^=Pap<ih:ikuL#:V\W>c+uL8dJZu&&,:n:UVHj-7<s!iP^%YbJ`e3
-U4!=#)i9#EFmq@>,_K9o/O1CmDXq:BFB^*$45<80+F"k`!UFQJ]0Le,&/#+><^"UV#TJeKWOc
-FcLGDp2+C+CZ_g;"8#3po)J@`5HO><*#>"pQd0RIl4+cbUm!O00&h_ORmU2OrjU'`qa0"onW'
-zzE(a7#A&%3%,HdhiHWRE9kM1RO+$;F:p>p+mSX.u%>&h[7Rsod4GG!sX"U@iGla=.oY&pLiS
-D;Vf1nV2@hVVB!pX)tF&*+0![]5@T8mY85<,)>EV'H<'p:]-S'jFOKH=CLZB#dV-FF'X_<m%b
-:hj*nP)uP/k?Qo>OJ&*gRo_!)aRSh_,&Y9q&c(n'Z1b1Vh1j+V:oNSU-8!CU?HdpaGRshaYHa
-b5t(05Bgms:]Th7'bVmZcYd*aN^R3/m!sbh]"#H]rWI[W6FG]e$B[o*YV@A4KLrV5B=4gV,fa
-?(2i\c",)5]JXQ\(eqDT]5g4oIk.QYJp?o-UAFbuh0';^`#&@%m?.VhJd*T?E@@A3Q5X*GS=B
-(_d=r98B9'Q'gr/TcJ+ge`n(:tpjd$&5FXrLqPWf!pNDTJ8WtCK2hlGQ[e5[?"s4#q,?<6nY&
-oCq+]Wd&*<Q)>(l6(7:T$p/8EFZtrEd%`c&(s-^hcd.b=!t6a?;qlAQ*Og?ZP^!MIOacbQp@8
-,"C'Q&VRL^^'+UEm?2?Tp,uV-qm9d=QF7g:]:>^TejI9nNmTk"k:3V`'M).*&hL%+0"LBdYF_
-TC2=`egrVe9YR*%N&4##_;2p9`Q'!)*baXVS#Y)`ZWO/,.m]IrIEO6#Fj&8F'n7H8Y^>]F]"H
-qG1uFQ"!fCJ?^oLQud&of%?\g4l5Y7b>*0hR@2`td?.:l;-R\(>"dArlJL1;gZVul[p+88l9c
-<(e=uF(@4+6t.A8+grTg?:2nf)6H=a82Dc2#=p0IQ(P4,f:Ee-8TpT`GeB[cp\53sa4MUl+G)
-q1h,+*_"!UKmKK9^$eP+L]QD$-N6Fhe(<H:YW&Degl6Q&0E'XD%B[);O4LP%4Vn=-Fsf=Of>p
--QVAmBCGot5]M#\WQ.XRF(d":;1"3Vgb]gI+he3su\U*uZ7;$Mo8@=kT;LSjPDf2Mr]t6^GX,#
-%\[l/2?gBP(Q)_JLqjP+d1m%pH]ZI[l*D9RD5g$6mfHb.nF.j*u':SSr)3i*Y7/(GO+C,"L:[
-9Shd2`bo]UFGk,)l/Xt!kd,S,j%n1I:oUi3PF`FKEDt$F[e_pJR5oG2O+YaXI`/V4&JL<gV!F
-3lR!^=jYg(.2K,Ti[$at(S?BG?/G8.`@[aE:;&0(a[[:dQ2qu'KT"d3RN/`k(P95+2(G,0J\<
-e/H8?hhMmI'B,?14A%e3q,fb8>T^[W]==C3R,6F1Bg!BYEf8DbJimeV`\:E+\9.qQgs;0!HAN
-9U&Sfs0/5?c)M_j[JqfQ?@UJJ!Y`?Ao/<A<XgYRfF2O!%`AZi,)j=+Qg8UjmjRi-e&$.#2.&/
-MqKQ>`"X]j(gD2DL9A)/\oG([[W0>1X]NQBP,Uohn:%;&dFFZ0AVU?H2.[b.QndqW[rdO#_WN
-20Z&/KOJWNm)D+c<>*g:;Vsa':0"U^MU%GC#@gBVs:@lr3:7RS]Y\[K]Yd%2j0&Yr!>0:^?V&
-e]tct@FM<V!'l'n6eiH,:[G*`DDae2k:19u1%sCuBHLfJ+N<jTbSU]>Z>i5AihLBe;h9f8/ZR
-2T;V)A)n8WZQVe*2&q=052!bo&_rHpM"cU_$u0mT_cN#o.#i0-"CmmM!qu$]07sD.jU>Er3@m
-HBBfe[29k&9sN4FG3(9<`\_kO0i^p'A+-)ng5pU$M)0T+?+IT5qHY`e[]RBjbrSe,Q$:EBQ(%
-\dp@]lGH<0TZgRB_5%;36fmP9+]L%cCp*@"7#<jllT?%2M%XgsOAT[U*YjC@c/*`2"RFSgQh=
-AJi\[BB4*\du]h&mISR.'KZ!W3X+*1i8W%<JT"^8JFes)A6ikZJ=)tolf)D:/>(h[u2i\eea$
->YV^:),&UJp0cT@]I\j5<U!'jQNM\bP?X,(YXii/\diohpD_k",pH5j1lgc'V&#V=d_0s\!Gu
-rJmXHC-tke,qi]Pk-oV('(OhUXdPMO@*ipbl($rnYd;<\_sI8+RL[QO&MZXn/@%^7J\jbO[ai
-"2CgHgp'(F^e^\H5tDo$+"NpWT$Fnb?M^$3A6DIf;qP>Vr\[`)01B%Y0i3^dG?7tK]ecgHU$1
-6qe<C28DT7]5npTE\.>r%&dSS5Zq&?BCQ+QAXDXTooLt_Kp3knR.(+lN2b09^gPu?;lI1H(ab
-h[7/.U+P0inM[`CQnS&`[es.#[A@aM\1AAj1Rs`]E@hD8W*p?fPJF;OOsn#q1G9N,^1k?.EK:
-X&@IeTR)[`*7NefFb@mD;kKCl9@49DJaYRHVW,LEHhmVW88Lg+e"K<ubKHD\)khD?EFQ9O4P'
-);s4S.AjB5=m.<pl!tS(g%]2[cu/;q4k5A$)WRKNk'\LX0#52'$JiAns`js(7.acgJZ_m5=aK
-IH'"m<Tc!rkhBF?G7$(Oej$5_lmlG*RjRY%D-OL3m=HpZPO^3^+O7ei;!)E%=<8&u<J"klla5
-*[il3EskGPBK!qV##V+B:%n?<N`\M_U?,t4e7_DKKK/#/LpL>kVYVM(hlFEU;$G(:<Ab_`mid
-J)b9bhP$,)!L"s^^[)J=jZT-f!Oe&DkgBDkM:o"Q+j6WG'b*TgX]^]%D>*qbd>hrF]30_[<cP
-%XQ-a4's8'2g_+JMI%+il*KaWCf#'.ZH7<UrS'eT?9.IW+Uf)DWY9r=RR,;(Qg2kj-c7M'9jm
-3b=^*$X`A\VRLYZ9T5e_2ViCE"&RZ1MY)n_ku>Za>4U*[/_Re\(#!>*9YTeB8PTZXXZXX_F-)
-%<Z@%R_Nk.Y'8jm4iTs4?8L^X/g^HW<c$$<h.)L\gGZ*nSX#7VAh&iXj4.?)gK:Qqh\PBl4*S
-rZma4Dd:/<"h[tQ[g]0bn6R%"YSgKsTRCX(k<2.Nq<0nHH6U;c3c8rHbUbO:Y_SZO7$'Fpkb/
-Y/3'd!6R%A"Apm>@0fc<1<#6cSAYfp_Ip:dC2QRDKip!;9G0VKqm6YR29LI<GO\5Cd+8)oSp<
-R")t>u\%%juo`V]ILl5-:SbDUEnIc&QQ40F0$uO2hY=m$HgPTumh=fAF$1:3`M"HV^[!V1,f^
-!.>`Rg\6p5F:15q]b#hWD32?'[MrpB6(4a1AsO@7VX0Uo[392&dIaQ^O)p-O:Hj-6L#ATgbqb
-%$O!-0XQBEA%[i*HI&B3!TAYai7KnR/iUI0^ES<mb'C?JH<NTQjZ1l=X>ak4m_]Jihi%gQEUK
-C!/$c:4EB.k?c[H2GHJllFX`;hi4]r-%T/M_&Fq^\5KUaurb=@.:BuQ0](W1FJn!=K1\u(E[-
-PW>EA>"pniU`fQ(O"OcCRcr`Y3X$p_&.*fDgUb2;<fHFg_tb>q,o>XI2GP6V'<7-/Dt'8$?8#
-d&&Is7&G6KZMGpXE\YrG@j??:LB)9,<M)RdLA+T)FEAqGR[A%U1cdc3ZFgRVo^/MVP^2;aa/T
-kcNjL!*^TXTlAo<)?.@_ek>QTA!OS!/sAXj1-.Hd\WfY$J,l#j]^9H]":$=ccEJ1Ye(t'si";
-23!it%pAMjW7>1e[7`*7F]"Gm#>G,OT>D)08oJ<o6a$c!4'QK(,-lVgCb&DTE0kUNbH@kEkRU
-J^q+r]5qPg3;H6RH9>3I,V'+22t-/=KbZ5FNLcg8S@2T8H=q3h7DK:At\WO6>n_[iH?aS(JYW
-5bj6/9f<MTW:Nk\NA5QUYObZSg*MnX^1="o?u1S5:XS)UlDBbfL4,FQ^d-UV(t$"fq%0UU4`&
-a[X4o0kLRdCW1VM'b-YZtgRP92"l@Rp_5>llqW9_-9B0]Z)q&codX^Ct-cRbC2CC]W2T$-kYd
-YkI6OEDJTr71u<SR='I:.@O1^;Q1XlPsW[r%\.\j199zzzzzz!!!#u"Hn7=:d9/1NB,r^rW&T
-V.Nt`"gl0ID6#GOl9McZ.QQ`"[E&RobQVj@Mk`>YBn7Uu'!2`'37Q!W1-"n,WoB<K4-R7(Qd8
-Z=DQ-K@`RS6@N)n6XAh[sRq2K3G`^')piDN#A?e-9e$g\JqAUeLs!JZD)L),V=.:h+F<E!?:B
-zzzzzz!5R4I"b<jCC>c6[CuC==CuC==CuC==CuC==CuC=Y;/P`n4t<,%-9/Wm2Q)Ys"dZt&\>
-F2Fom9+7.emh>=K)J3fjF7!\`Q.l<AiLT>iLgGY[?atf,j_XgdZ.t3M&4]^$ms>$Mr(,C,eLC
-M\tE,"ZpWLTXH6-(2@ob&Bsg'(T&Ap/;!SYLu*L+BL0p?g[fD0[0]((H=:9U$],G=`8Y8$'>[
-M>/+Grl#>j0]E#Z3=J4sfBH:_uDbr`UDD+nV>gXC+Y[3akhbKJP#1`.)O8Q-^DF247:3LHbRO
-o&u>lAX'\q'mP8VAjYd&>ggGZnTf63P_sa#uefdYBpS;c^tKm#4BNB[G=>jj]c-N\X>'.gm87
-YEfScp2fKPqM%+J-B5k$++?)!Bo>LpMJOs)n2#mUVzzz!59!DpH<eDZ[Ymph<g7h4M'4\.Gs\
-O(JrjrJD.g;JD.g;JD.g;JD.g;JD.dBfRG4n$`ujiWj\WFSY8S@$7Ti&9Oq0p?J]qpAt"8(Y"
-#[kDQ5UqTn.I&80UN9E<J5>%Ru^kJC:#Ae93]cB8pcSM/!^#c7\AY@^T2dE5(%^1S&+[<!cjq
-L9/CU9^L<M5#6%8.XeWNGm;-N_7_\CC?%&9^e8_+;'o-1BMdI6#b=CjS'^!]ZXoTZR-P@F:#m
-1J(dAuIU3sd>=qWW?&;@,X!G]4qd5<lmY[0rR&/3S`-h(@\<"k8[:a)3597.[1EY=R?[jOV#4
-9_\NVM(YgJ)k?;@S]l@<ss(^9r^*$.\D&ZD;IE6r#CnA.lu2RQ(V&rOaXrW,d"&*RV"oG+32Q
->CQb'49hIU>4-GIda:i=#&nJV3%!p#pq`M:V\[nD^nXVM"(R`aMkLlYjQ^5n`9'I^<Knp1QHS
-fBl9/pihq^OjJ%g$JJpZ"BDn^6giGg^%c5I`3SmK_5GmK_5GmK_5GmK_SGr'if[ftSun;f#8L
-zz!!'MH0E:r0K7EB_G_*uLS0Km!oEM2_ht+h\j2ZWk?$c!>>U25K%8>`4@2+>CQjD*!<+KI$k
-')VOf)RoB02,FNAY"o$S/W<k56Y1m(FO^r2gm7ULEGK93l-:e>mKjM'V(PSPa$V6AKSu4L/K^
-b!O_m!CAS%>JVuNaD1"M:kW46,iG@D+74FVJ5De1V.CI96,fM56N.c*:qXIG2oqu/\qSd-^-H
--H#(sC%g[$*V`#2jdBSL\YLE*"+9&Nk%9mKfD]"SW$pM?<hYzzzzzz!!!"Lo+:]5c]rrKLeZk
-65?I[^zzzzzzzz0En-er%=Wb;+mg?$)Xnk:_>JtU7*;[NYq:<7;oIC4K\iSA0I\X;g%78a0p+
-gAC2*L/Ok.M1N,5(HEkk]Q`R$@*I:(@[4)J0&H(A8WbL6i=8co5%M^P&(s"9EBB6O2CF7)T`7
-bn8lZLP%N,NQ_'Ri\tRGRD.iFCQ)QaBp?8Uk6XA_6EZbd>>:WN@&?2Vo@]<h!Jc/nS=fqkWfE
-fiQ]^^.4'hPE#p"V]3D#1fm^"F7$u[F2buAo<FC<Q`8\`!=.+DL0ud6:qme$5<6nrOl7Ij+U]
-("7SQ(Pn8#V2[TJn`h<@H\86lACUu;L'ndX8M$^DcIGcfH$Vpn1*#hDo'KLe9c8SPB.2DX(8Y
-qKF5^@bDX-"t]:fP5.7A-gJoU*.#92ekurM3;88/$kK8,M"T$Q*=<`['6rpK.)FdC.h0!lk)P
-+^u?$2bH;`!Xc^.#D5jU87A2uu=.A+W8NnE5>oFAF<2NAAGhea+UXN:F2j"fp)A1ID7^#@`6"
-NtkS*qKVk?Ka0!Xj,ebb']!,e>\XGTrZ[W%HZ_CT4rQ.Taq%[?8RLaV,.qE*]m!im:;ZlSip*
-=`$a$B\f_(o)f79'1d"8?#@ft1-[g'D-V")X!_X4et&g'ESG3jM_pK8f(;k@1r0m6Kko-Bf",
-\Un+n8CH3r3Q`d8l>[-95:1p"-?O&"QhQ(".gQ8GhC2F171CHdkf=`'m6pUlrKl=S.?d>MaLf
-@tDTM2((Ve]*%"BXM,OCJ>J?*c*/RBS[0okON^?9P0SWA1*!o&E0FW9=*2?[u1lK(=k4q,^j;
-UM.B$e2OnFf5+AJ7Mffgu^NB9;pU?U(5h$;W]54O22fIra8P0`PS9@bD^TC].A5tF*0C^U\-1
-BpDNO-?Ac-FT%*d.L?go\o/*S$YBI)b%=]n"gSQUSKF&]8OUn]cLU7:lA=V*hos!8u6uIbqm-
-<3eq%q(S&;F?%,'3KAMeRLt[b18l$7F%\*F4uF^[`n7Cq*1*&Z4Csej`I1W]=q_=1NUE(<Q,R
-/$Or^LcAuF4nT$rM"ktt3pG8JLd]G/`O;'kgGhMdRj`T3DJHFM[;c`OSF(fX2mpS'4-1Y"D/X
-=,>S<OjcZ2T&+o208WYenQ]tPVCI1QP&uir92+C">^95Os;H7A<2afZ'$'^mQMBCC`I"EgF9!
-=Rggh8:epZI#?nFG`p'(r%rGFmGYC?+k?@ZSmG+aPmbc5JBKpgXAj3b5J!S(EkGd0;nD'FN2M
-8gm)0JT5^r2]3IJf"Y<r0mkb:mhie)q5Ge/%p3;+;4^e%-5[a-eLn1qBfT4;h&>5E2#BM(FL5
-=s@kWqj?_9dJB%_ah97Wg[ci+3H8M',kPU\UPGUiQ7*%d=`@#j^WbDn[n&!(bFMp`4sAcM&la
-Mf[H0b^lj9EHVTFM-N91X7%%=;uNFnJ=)3X-H?c2OTo35Hks.h[geAS$6Ldlt@U(Wj>9/;u8N
-u5R)2]:MRC3)mmnPFH5->?cB30u'GZjcJl-".Mb4]>4:R<2_'D:?]aD/`WWrFD?qQAA%=:!C4
-7E!$9OOTMk^9Pn\",Ppr2!IqDL[Q/J*AEc-@D-V#4AQ`%QNI6T:Jj%]SH%oJbo1':X.Ba.d?;
-]o_<l8@P9j05'YhG9a`LLTcY,amOP7(f$D+WE8eAej/eAel4K]U+W^ma!>,XjVS(+tST[9^h^
-nV9=+<M)F(&2.no/4\b!9JdJa_Oi64E_@/mj30D<71uNrAB7#2Z's`*X"c=Y@eo9;/VW3&d]t
-b=-c1>egeI+te5=2-!1E7Rg%e$1':i+nc;kS"MBZl]OX<dD"eg(^*]U\CV[SR1k\;D)Q,c$C)
-Hf?\5&-'s40a8<?hb4l8pQo0YI7&ucG'PoC-9s!cQtJ)mQMo^&OF[;7X\t5!rr>23`g_TigM)
-5=]Y+_o;l6$?sk6hAD$N&9tE-.Bt4B$j-j5?.hrIt^f.6";POn`&$F-1O$r'dFW9i^`b!Im'V
-A*mc^Kq>#ZA>_fmtG2Rd<laqE.I9&I:M%IfWk$Kprd],MA%bnjl/l[qO8Y(dY7d4[Y>NNQ'mG
--s/.Q1<G=.Yn9Q;'`NLa0EH@#M72c<7j?#c55?@\_L9FDcVW[lR0(g+0&1bbK,-'",>uq.K#+
-d!!msPbeMg4]3Y,[jDQ+rAaHNNQ"gu>@4K)S`U^g+&K]M+*VQ@5-A?"9$Q54d.)lf%BO$oe#d
-m[cpA#F\n3AFiWA`&dl/<?U+o<&3q8dqS<aWhDYZ.e^Y@9iR97;arOk`Z^[FoHbU3]\Su(7$"
-mT]s8D7uRcn%)4bhn6Hm3[];QY!k!G`DXe.Se-l?XzzzzzzzzzzzzzzzzzzzzzzzzzzR*%&^m
-`,`d47NWbJ\.W+p6f>bh19q7o;A>;n'QdJKMg6t/X<"%GFtYkH4dp[Pg>uEYOH#sHuspopk7@
-m)lRT\:toPD\([.kA`*5YgU#hf-HuceRrZoGQ_Sk0*n+Z?j72<B%$loV_8Q?n%Yt)^p"*OQab
->Tg5("\l>L'#oo!4&)ScnN:H6]qk2PoaV;M?/.b<ASmT>eYO*i8d-cK/F!Jo)Mq$US'#F!JB]
-?VQ#$Uc&BS@QTAWnsQLPcG[K@2:V=NOHJ&6iKKd9.)#;3fs)ZSW4'5nb]D6+X1#plT0HtOX0%
-_I63^Jc7Vm4Toud36LYA>SqFIX)[dI_1qQo+*W,Fcs<78j9S+8T9Ff$1TXJp'mY=iUd;NnG@&
-R/rp[A1'+gN'_:!c!&p#"I$pP/:[V<;u9PW8T-@MoG3N>!L'BjA2m92YSt)=PJs;*e*D3<,F[
-NelgnnC?pl+oZqMH`>7"4PX8+ANlm(^Q%7T&5*_9&\54el+a&i]-SnD-DH^pICtc@$-Ul>W\X
-F;dEb=.WEe83kp0MRTZRs%N:Tl[KIf1qLp.Wt*dUV0=hko8\EB;SiV&#Oa1"X9'b5&=REao#a
-3Ep9^7=t,J`j+VMWKWeeS!BQ)1TG<j^RBZ2gRa:r25taorUQn26&]9Os3cPccX*0MDG3&>U,F
-f/F";llD&8fq=6H(F3,8FJ0q1HiLi))d$D58G*=_LT:W:,<oXL9f3SSAD1ppAUka3q)Q@tj/9
-s6q?b+N)WEco+@m=H&'Ue5MpiPd-sFhR9]cVAm_HB`"I>Nf)(;Rqq,W\[2jLb20;cdf,N9"@F
-K<`,@WSI6gRdLJh;D,Atc;'/BkXOlc8jk9:#oXHNQXcG\G0i<[j>`IJ(!omD>D`_\o;89"($u
-8b=;^%I#&l@?7B4*"PQ,4<M^2)7@f@-ht3sC9"a_MsXhrDI-XX4hYM7`?)c#_d-Vj2ed^-5BJ
-'VMnXGY5B/^DZWg`l#U@+!/-l5(>%OD3'-NIJdUBp_F:J+&Eod+.l?hLVY(Jrr_9E0g#~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 621 416
-%%EOF
diff --git a/doc/users_guide/figures/cups_admin_make.eps b/doc/users_guide/figures/cups_admin_make.eps
deleted file mode 100644
index a3caa31..0000000
--- a/doc/users_guide/figures/cups_admin_make.eps
+++ /dev/null
@@ -1,599 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_admin_make.eps)
-%%CreationDate: (Sun Feb 29 19:55:36 2004)
-%%BoundingBox: 0 0 621 510
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 621 510
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-622 511
-12.000000
-622 511
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-e7e7e7
-6f6f6f
-ededda
-eeeeee
-808080
-547098
-800000
-9a9a9a
-000080
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPUlZ2!r[Y6#VRWWdnaMtG"%a?0=466@tUf0^alF/aaCJIGZ2Ad%;a-QpfXLj4b/saW*T)
-_i#!C.sFTJfUUW"%5YC'4-Zg-@fo2GapY2ITGNk-kTaaW1'N($,!u@YE@(0;Uhm!:GO`YPcI-
-e[F]9<]hW'r/(lEjIX?`kJpR'W5(9*F#L"6;1b8uCHNBG$2Q"PGNanQ;M+>L#l.]oG]d%&/F,
-4Un7"b8q[qB@/)7UkUK;;DD(nca]e0tLDrqFB]9$EV:O&RgK/>Y@jhqD6,A[K/BWF,@ESKK9g
->_%.0gTZo@m"B&MBuBc&IjXK#3%h^*>)k*PgpQ,7FYW^+aG/s;2?p]@T/=\1Q$J.`[3iFg\lt
-GR9%"2YUAgtE/NADK;biZ]I/,LC]*UrCD#%FG4iAI+JPJ&Hro%j61B]Q^S45':g6X@NSEGSRF
-n>JL=)P7nI6``-A[Rd@1"`Ni$,83-)4'V,`ugm#-`0C&/<o`[*_ThoZTl-QlUX06Z(bQ5]*/8
-:`FWn:`H><e->1=[=NXOrVQ_i(6<p[&H#B.,PPk-$\!H:SmH8p^089%O)C9s?U$Wsq2*WKJ;#
-rKUYDVu&m;\Mb@e8#O)F%I_M1#9UYDVu(0N"$O&=Z0ioWdrg*Dc#o-A)2#:Zsj>N/7kl^K,Mg
-+<2;4*SGgrD8-Cb&drJ&SdN%*=4i<Ap/2Q[:p]<fFOl]D-aXM[JnMCo@M^Ec/4gUqU@FMPKM4
-t:)1a%Shi/adug)*r$JdfK@]nLepZt8m=$W'bI-roc/4gUIMfZcU,2I@2g<lO2Yh'k=UQ*(`[
-(01^GWHA7P7^gk4<IY"@F-ANS6kV2W<PJK%P/)iq.['NLh.:1#;0<:hlck+'rg?kC5\I^NNne
-Cj'@=d7Q([Ue`"o7Mgb'r^ghJ^36N]m0>d%2<VX+G1'PLA+5l<Or1OFT;FN3Np]HaX2XpU"@M
-@RD=_TmfNZ,C/i<HU#>t7AllT*/(^P24[=*IK[@NT:(>\i-Y@-%HEVOddokCL'D9@>,:b#AHB
-6iq08U!7o2n@\r=^reeR'7u%1#TAe_?9)nq10qPBA2E]SRn&))BX.#qqXhC%oo+_$h=k:/_le
-t&t;tW>)DWFM_/&>+gi&#]\M_&HAl^[e>@OEWTEh&p$nd+PO<ThE;H[b[_cNN6"`?AY\.$u>a
-`+R.oQ0/ah6&s<nYr.?>[DH'>hNGh'LOEHaR0HLIf_$3--alrfX7?7V;8O7[G`j$%;hjC?s0;
-s&oBu,aL#f@pi(GAP]8p#:B<hA`M*=3L&*Z<AW3#9f:7hMaC3Se`P59kgm@7K($Pi5mX(X"Y0
-ed\3%6)fT('Efs]\=pH1LZCmt_/):qe6!j4H=#KhYSF)`O5=Bn^pI,%3J6ZA/X4h'.HgpG_Hg
-4$.gQYJ^qQ=iopD.8WUFTtiMJ"nZOg1>9TUN610jS#S9R\,MtS<U(V>BfDIESI_OD!m*:Nk4*
-ce(/rM(TT0F2H*h9Alrnj88TZXASS"*.4LCNU+mF0B0d^lX%h/CgTRI=8r%7fWj^Q![*e*j["
-YJ`Zu&EQ8o7aLo).`g>;dj?C,9>bEoYp3P89ELXg&bNl#jY(l:BOi1QSt`nVjbjZ`&j&_m8);
-XYq65NnUkqN7^Hm]&$_sD6Z"j+\^T@Kl3s<<aKX8<c(HHdbQe'HVu?&`NC^C"SSfHJ$-;S(<p
-"JGdUF:_JUCe2LaF>XL?Ko8Xh%_LnZ0keX!#He<Y406C*3f6u?QoBNlsUiB/QkFd(<ubIHs2X
-Er;i=hRQNI.m3.e@:cFS\rlK3[YC.:Hr>t-CX"k>H<%d6;8'C<,I(pO@ASM*fIn^_6(0Q^@E!
-c$VBs1%rjoZGq^DZNG_ng_L'el%)OB&B*N@=i,Ta1]n>#S5HWSTHJ:))[uT+L7Fmoag;nIH//
-B&bV"Dh9dQ+:'A+I%2bOV0&Z/59uH*:ElB4^((b&l('oK!3E,n*I<n&])-D"O[nr+j"F4<*&+
-<OlNQ8GB&6auu_egY0bDY4%[iF19nH2f!8^g4",@SZ=F;VV:U-12k1@Fn1PS/98mJ/)DZ0g"!
-mW>4oGK!8Sq_k;gI=E**%b\l[d9=8o;i>%o'a<O%h>epj<6G;dXjF%G;N@)nC@E.=@jO\f%oj
-*T3e!c#&(c#1ZomG4<:V7$i[n:l@5]9Kh0j6-gE$*cL8_`kY;9)Jlhpc\KLmr-@DgSMj[Wsq0
-%nU!N/,J`.2,G*9ehh:7Z)")I[*aKoXNR?0oX+#*En(1s/Y=BB7Ht/+Wr$.s]I_FIX6(g+iKT
-V;LSNFisH*roi5]'m7.in?mYo*#seQ*.][=J@;F='/Tr\YPRld5k;hj>p[fnP,A\j50mdf9@J
-zz!:ItkII)#=g>bZF[s.MFI]iXHJ+1s(%kh""mBY5"dY^\8hXp-g]DEjlcT$/I?K]nn]@)uDE
-H5!5dX9WGH[jeKha\J#4HM)[gSVI#<:Y'mUIt,B)^RMs[Qg8!<3[0lV?^^6DmnQ1?)JLmAtpo
-Hq;#`=[`@hYp+(fGlYboUNP=8/75G9t1W"3=V\uijMe5DUQ)5&=PQ$^2_pKaqp)\AMrat&i`8
-5@WWJ)'\g:JE)8b\IXd[_$+gS;q$*f&.uPd+H"CN%W2e2D3'VPaSuBmrBVNbg?u[FFh'Ctg&X
-7+5ap8MaJT05jS>2F^V^gMWP.bhpG*N?B9*L?SSa4WLm@cbqd?eb,(c(Rt[7DQt^_d$GYT(6"
-`gBJBuCY,s_<DW2l.2Z)2Aj*YBe>:C*$6-icG#GL/;T2H2r5IhZj.K$m5AO9[UOmufT436/sI
-mp#_CRQ%Tn>:fiH;P-i:<759a=D/0fJ`0CJH$e9BC/p(eb/2Q(>Og_j0V]Blso0F[_8;jCF[>
-d#J.]:[Th3aa,'hPU:d#nI]a$R9(CWK*]E0G/HhTX!4A)1Wa<.&Em*Lr?5)#1Odhn[^6ojjR2
-Dm.[-H:;3k++I7qXk))ssdh;Ph)#ZJ&7_9J\l7'WiA@3*`F%pYIrXE'(6hD(ND`Z!S70eU/7I
-&8s_nT3O$!`3GC)'@2oaS6<1<NU9?qj8D_7m8V]!)4A/U*>rE+[;E$CCPgbKrS+o')u\O6_a.
-XgqG?uAV<GAaE%=+G<'h+o]%;@WC-))\F=Ojs^Ie+gcu%MJ'E"Y#P]P@2[ND!fMiPAqeVDnN!
-C^e-h7]df@h3rl@]rJuaUIAoIio4R;W<r>V7+X%EM!`qXcL0YcXl)\"L@^:E`#I"25ig;U$>$
-IJiYYUGP/6PflttY@k=gHSQm=51cm%UXaW"B\'BqVFj.SJp,6p`mOO0TgpSHXAo:6:'jSG^Ta
-LP^-Cq:,6JpSR^o?]4e95T6fU@t?dfm%DNp=\hHS;c]pDmeF59K7Vk4GfmTXR(D2MgX_Sg85RA
-%\kfp`S+/74R,,a-64oe0D)Z$Ec/RhU`u,H`H+MEHO19GFaS0TR=4$dbn)tPHKp?iBeB^B9W:
-rkXU!S^\cgP.Nar:+V[F)DlQQS1p*o@?$':RlHNt\<*Oj2.e>=#`_9sXg%oRYpq8CkCp]h0r6
-Srd&2R+=>Ih#&"FIo4Y24'Qp$14:%2>nP9Ot>^f(PF8D9hj$%+gpiXgaM%D/$\l>&dcqS_:93
-riCgR1MlqHj/!LY+',bO>'6[Mp1qK?qP0Vt)#p][[i#o$F?Cp62V^r.XA_<q0`cE%7s20r.D<
-F8")A2:.amN[65f.-5u$PQ2FfBYM;:j`Ne?.4cb5l>NC_LiUod@d%FMPckcP.!=jbbX*91'/R
-l1L]QhE-qTdMu?BkaIUF_"NOO#H-dV'J_f3cUUmn]S@eSbE"6>,n^TQ9R9>GH6lf)PQt5eFfV
-H9E'V/7:5`2_-UNC>.2/&m1jB=Ok(F;lZIPnVV[3OFIg9@b8qY*MY,i%Q$X+_)Fsh55J";r4h
-Ugag:<u2\n4Z/0hE>KM^2%IlqrO&mTm*k@5_cbXRI*IjcMl_mX+9j6).7_:A2O:-KdPm9sP>O
--eX58iAGh:Z_nW(][.L*`OI(WH9Z4NN2/4'4?bNc:#0:IT`Nl/GY!ZI^*haH]Bf<!:D+/>_2Z
-^JVHb'YQFBn0qPQ@,TBtjraO`dlXr,c]ku,%7kga>&?g+qZ0ZD_tZ8Hb#fc:Rb6M?F7^\X+S_
-+SQ/R;LFGs05u]q#aX/g1';)%-L5&Hl&NYWX>Nlp1hIO@3jIZQ0qA>OSdW@i%U8RhTi25LM^_
-s[,uJDfW6'?<_*6aj#/FIG/Gi:OhTs:qK`i:?RK&lWWE%:V,B@aPX9Iq`+-i)7VV:^V`&JJI"
-gUuWQf2I'XVK/eM'4g,]<[khXEAY[b:)sADUO/CE7N5bU"'ARji+HDT3-Tk\.)nH&KL3KLst8
-=jg&PcS*<!q3:f.?dpjnfUj\P#>mN,,`FC;(!f&SB?^k2I1-[M/;3X=CoSHS)N0'-,0bu^.)a
-u3/$7@I7BX7rB\Sd$PQaor`qE7"rRC*UMles:;(ap$2cac7GLuHBhM'Yp[HU&$I\Z$V>#JQT1
-Mb;p8nBCE3MbsRGMUBACqUO=D)5t09kN,uY7*33E.7^77^R#l[iVZW%b.p52(EudZOc(_&m%W
-G+*?9`\T=H85mDdiW+1+4@=3?p#>uKqO2dQ'IGVIg%,';]Bndl:[;@:'gC?=r8HDb[+Ebm\i.
-joLg,>c_?+HGWA.;oZcYW@'`ALh9)g=g;bq5NTRg%N'WFDn'Yu]?)\6GG7]?aNI2=9_ZAog;r
-rapt^cQ:!6m5<V+;e"LiS#s;eUMY@ChC(c^>Q-=GYciFDDQ:LU[iO7oG8oPI.4M;1%cS<V3+[
-8F)tP<6W_0M>G+M`<=PQ""+8p0/?!ptm0c)9/iZ;^K-FJT][NmC%KeO85mdb#qO!-U4[OIoL1L
-%I:&KANC1oA2bn`]l@?=n)B(*_u%`5$Mk@9V$LSCY(6N,>=kj49\14Y(qZg"i61Zu$%tWAO5S
-[3O/&p8Y06mu#Xe;e#.'[Bjh#nDU6X-YD+,9cf/X=u.7LH.,\h)o(W3)`=J?$V2c><h@fkgii
-8oX%Rfb`d)Z)Nd*Rr$)5be_/%`M(I)``pNEug%,![p8UAUoR;%'DK#]/(?RSE81,Lkl3B*;#=
-Wul^RGT+>_!POpA_VqpZsh8;\9Z]<E;(D`V)bRo;[SkSIN9rIB#F&A8$sA+c,\5S7i=+J`f%*
-:Xnch8er4I(j0k_pAmFrkY4SXt&FYCkS<R<QG!4%Y#g@-=He#N9o$j*l=hPZmeka\&E-eA"/$
-A".8P^tA-DhIe@\a5i/4lPq2A4"J/SUQcM?L+>d!M?p1=PbNk+&/_Me:eJK!DDA$ZQSFYAZ2B
-cGlm82M>4\1<o#5mGp@e=:u_9Ia[6_Cdns`ULlORj5o;IFJ(5M5]%UsQigZ\Pf*2;`j+>@?<r
-Y#:=P4n^Z\+uf55JRh2dKa[A/pK'>7]p(YdQeVKD00Ouabq"2UU>c!F'tKFrB([S6r`Hg9/ER
-H330#R0Z+5(JWGAu.`30Gmb(6Rt-QN0j'7YF03`6hoRq3-L=Db=sY:Db-e:E>C.uSlUqBGtrK
-=l$Za>3nuI[r<O2Oa54qN,$T@1QdU?Pm'koQ%7a`AN>qkhaAftR['9kDM]aT!Uq@e?5N6cX/V
-`3(k]WK2?1r)Y9c9?/-q74Y5TO]sc]<snYhF8)j^b'-=XQB<A#u*4mA]PBWL(,6CBWe?B=ZMe
-TdMGSMMskWLPpj9pt_9$KXd(pW,L<d>cPce6sU-E:MD45dQ_%F]H90PX7'0_].Z\&Qh>e+\[R
-f5%IO.PB1btN[[ikaV'aI\S9A'IoTg(e5*e!+FP%E&dSEj0rh?;WXn,`@G$:.$Fc8a%@@ilE:
-N;L?F7Q#<JpWZi@Zp/`:Eu^p6WQ??)XFZC[S&K@2,P,W4%t+?:LQ=\V)P`rTk=M1*N_1N&_X-
-/[LL>S\4\j8AG<+'BFcc(q+rR<r_pf2l&!c+Br6[FRuk1/.H#2>/GkQIoZU0kA7,7FJm\?@$u
-WFaUt1tL%c;u;,!.*^UDiICA[u7C"&1YQb<;"\)eK#g[M7\&WpSZo2)!^unrHDIDpUsR1)ra1
-MO1C+_PK"IRQ4\afV3rgCUPUg2.tL_?)SjnQ1B$-g"Tj`6P$i#pOcIe'_KX'OI#aj68PG53i3
-D/iDGQ)%.#Wp5441hdVeMEr.c9UcU5>0b!eC<2go(;.oZ`);d[iEa6fRCG3T:R!<<*"zzzzzz
-p`2o>>>XcMn+A^"++F8e+I*Mf#4=rmbFgb42^YI4JD1W3)lSLanhS?D+8q=O(&faI"2HaLg8L
-m)ZikM]B-*Ufn76'5,+<8p\'c,o7[%NmC'42SI#gf#[=NZ<oHg.gE+cgkTJgb=fZH]B-Z'd#%
-Eo$]Ajg?T6&iR7_AN=Rzzzzzz!!(o?(BAc3e3I"V2Gb!A%9*I>!u6C>5XceR:m&n8dgsL>2s-
-\QM\l-<8^u@G\?E%>RncNCL7#aV[;B,E>NVLu$[9C.3#M81eJb\j$Ym#_@!6:/UsmjPf$N2]O
-)1\"6qeBIm4QmhS$bOg8%)+qG6fifD8I6`(]X%=?UE,t8t>i7p%FPq$\hMDD>3+2C5XhY>WU0
-Y:tt-/(<o\N80lBQMYa16OMFhs8M!]mSTpsa?D:StK62G1-*_LI$rOblAs$68Qf'NoQ$FVF/O
-][%Uq58d;F+kG/GpoE:i4T5#usgV$OupKZkrb@(T?_M4Ap"u4Xj;GT.dDl=/r\?<H&uH8TXF:
-?qu#4DH5HPosWMHnQA1t&4%(Br@=B\jsiF*]^R?617aaH4$gNaGc3%oZZEJ*T&X,YjRXsRg-@
-f==5,OP/\=pc*l/7oHO@<7Dnmo5KA=6ZAeH'D"th^$fH<+lM&F8:_1<bAQ5T`'zz!!&5poC;%
-=J8`b]@bX#V.,`i)KUdf,e-7N+[=NWhD4hqH)lO"k#3oXHB',=S)n7h-A]"C3D;_!ND4hq9D=
-0Xpqr7XK2D?4=ACSU*3SiIVD;ZUP:MOGgg^hm=k(Kd0"N(GOJbc!S'4h#!H.i8+JW'<r2K.6$
-'\A;tTJeJ*ge.Y?JD*7OTJfUWW"%5YC'4-Zg-@fo2Gap_%FdaugS=aC't[fk2HqM':`HorGb[
-k<Wj_O0Q=*Ha)n6(q&tMH)kI2N:.>jf<>#60JLe%]6X3J7DD;[l][F)-UA83?]Tf+SBW]'SG(
-"<G"-Q0D4!M&'<`l;l#UP7F;FQf5o(=gE#6>bY,k^"1R;A7"4,q#BEE$`#\!9sTmJU0RuTH6o
-KW!CfVl2e;DH9c>?*`*fS8%P0fn3)tQTf6e]o\.O(bS"Xm(J/dK-9EU8f/0^k^!m4#"/Fh!ji
-JP<U=ob+jiabFe-7PBpUB6G-d-8bh($nY`\C)&a]DP1D;[JMDTZMQUgW2>Z6N_g"grpOoT%Z5
-C5[Ek7J%"rJ^K^*;i8F6T9^6N\j:2k,()<q?Z./rB(+@.Op@GL2DBjNmj04i`'A1t+ue;f_RL
-%K"SYJR4eO]0&#]re")7r2JD*7OTJfW-pn,8nccYu8k!Eom3rRq<;Vk.T[=RX8^BmoE:NU72"
-mZB#JW%nDdcG3ghl.o5oE;RQX%Cj-I1n*[#%f)Y>Io;#C'1firseZiD&Ba5=\.\Nr%/f-6#GO
-<pj/D<cRmW5PZVi+o72/oTH6oKW!CfVl2e;DH9c>?*`*fS#LitC!O[K)OO[XQG?&84<&qV.$a
-kPDn2j]nY>P9nQ%NZ[C',::<Eo$R7fmE-2^8s/&XeXW+5]m6(^^)3OHPRW"BX?nIpIf_^dng@
-c"Tj:D.$r_j#1$Y[gi8eAZ-&sUoZJ:fK6#@%&-3tm+iYI]LfQg-G<QWj14.KnI;mW-E)n`Q$g
-]!JD1!9TJfUW@Dq86Xlb9OTDdii#do6<+_pW.'''=5"#D-We@[g5a)pGD[=R'UC(hf!D:'0L#
-%iC0RXuM;kXiV'#iT?,[:XjkAdRCHjBkK(q6>1C%9uEfqqE`OjTj9>XoiD@omka]4if7uG_7'
-t2K0Ii[LHsRG6)F\omka]4aR)2%+GLL!:D.`H9c>?*`*fS#LitC!O[K)5]*/8:`H><e->3Sri
-m#]Aj66Ehr1./nK1LlD;ZW9>:6a14JMlE>I&1D8cC_0e-7O(<a/NC;k#1OK_%L'2K4dPD8CUr
-s6lGX9aL"a[=L%XC*Wa<;J'[%-7p7a6#C!<4gp>R1"*02OiS"q.@<Bj42olm:`CL_@?pm?;c]
-AYF]D<Ys0>t0%:#^u^L5L_2R`<KO.nk;%?(>^&jSUQ2Gap_%FbJp"8.2u5Wtbu:_0K6e,sFfo
-n^*/e$WC'q);<:SWs'PQU5Os,lGqfEefO#RiAn40;1:C%HRPc$*#8N2ZE`ke,K[`[=PRg_5p^
-;;"EF4ko$E/9IEi0kYW;n-FjN6#"Fa.[_*uQaZ$#Mh7`1@\"GWuOaPrMcOuCT62h5!JPd-DUn
-nm+%Eq)OhSrpt^\TRt6>^*M\<d3\!O[K)5]*/8:`H><e->1=[=NWhD4hqH)lO"k#3l5sJU0Ru
-TH6oKW!CfVl2e;DH9c>?*`*fS#LitC!O[K)5]*/8:`H><e->1=[=NWhD4hqH)lO"k#3l5sJU0
-RuTH6oKW!CfVl2e;DH9c>?*`*fS#LitC!O[K)5]*/8:`H><e->1=[=NWhD4hqH)lSN'S%3cc;
-8BYR5-[Cjz!!)pl]_qBq(&[[ok^8$Gj5h2Y=eI]-NW6UsCk)K`Iuhl<GUdSD)rq4#E'lRAc4i
-s*kXOItbetdOmgtO4!I,MhR'$e=\f`jI2_^hQ$F6ra:B%BQoWe$1rXOG-#laGZ14X#2@)SS2V
-"EIkq`s#bQ%E]YW9nN'[_JLoE&6+FNR&sn>mBdL>]&4L.0Yq2-]sn2Uc+Y6UmNHYOjM'Qh`j^
-os7CA158h`/Uf[WuA%B+>G*,:]!'Ce%Es4%F]CMU=fPq$DK&)Za-J0aWzzzzzzz!:W&nn:R@d
-IP)i7K:eQ\zzzzzzzz!),^-"s4!_`,"V%0[B<ua&U%\L$26nB1Io*8C9q1E#r'__6X\-\k?Vt
-*lliSP%E#TZRnX0S=.uuX1_X"a\,Z5`<O"#U:2T[3=u,EQE"ZSPH4\j.D#p&=q%2BZSV0GfY/
-cS\AZf0%f=G@Kc+7Pr[@]1atgZd8]A`_-SK2=6k]LEC<Nd=6(_kN:JtCQ>&Co1m]AC`Z<U)3<
-;&oZbEMBpg\;O5`gnqSE4fHOV5fqdIE]'fkaa.4G+SG^]Y@.j`\TTI2UVbm5)%^u@/e8Nk)4<
-lTamKsn0Mi?SqUP#-+1_9'Zs0t>!^:TBHdo3Ga<5<QH%;#+q62JHM3NU8.WOOMFJbPcV9SW=k
--!Q450GJld+13C8D'X3Yu"mg'$YlF/p][.f>:G-*fdm1JO.RPh7530S8DjYO#t8qZ[P)jIW>&
-a]5T7"N^c;:TQ1\Ad"0SN(mt[AW8/H)4FoLJla5nOL021:D?Zo2RMCkqeR2l^9Y&$,Wdms5qQ
-QQMR44"2?gMa#3'LF'pC)N:j0\AM$T53'1OHIKX3gV$ZYaJ<*f_k=3h/[OhktX&e63AYM*Z5B
-HbIi)k+:<[\QU(m(I0**=1mC88:l6g6d"oG'(+F\DHd[:XiDr4&pQ8[aW54Bc?*/l(us0"]Nn
-dY"eB;f44u5oCo'F-/>CVh?qB$9n-<=@C7u*GOkI1<7Td0UlKk<'-m^qjqIQUeL(.8Sen_0ga
-j;cH;SPGHCM&qd?#'@g:5BIXgZojehhC1_+(_^\p3C[/5LW0A7R,WFu%\P&Pi2-1olUX\L=^q
-@33=]V!i+HOj#5jJeJU08+SQbZ0[(?QVKd/qGremLtY--03bI;eQ_lcP$GseVbL,oDsK!!196
-hQQ?\\gP'?K]c:Qp*ACi/0U[6m#C2KQEW89]!/(W!]!O^`:M0'U[]&,C(]A)\Ao(JVqLN3Is^
-n[=1hnZ?nZ:PN$0GLa53$I!k%/ZtW,<X6!WL-5BQ9IP0e<51t'5p[*irYF0VlZ!S\5+SHF+V6
-@dC"!QZP^nmZ2umHg8SZP:MGL:F>'!Y]8L8=?4(B?W01_uCrT#C-d".rrQTA<27M#X@o+nRh2
-ARPY#O/cBLO)cV8@X2[2CTsX]a(JpJtL,;o1feh*tZ@o=YrE&^1Zb8<0W"Ou5;/`(Foh]DGQT
-Z#NaMfh*u)fPF*-LJjkY+)&sj&uTNNhR-cUj"^MJp9jDOgSIuld_D3!d!kV1c$XQWr[d[&cVq
-5+kG=*R`>Kk9P$YW)"X]OoYN+Nq[F-WC0#>&>:\Pq>W%GGZU5UE%Ve%<eNf1?-dH&#BZ88;@I
-d/S3'3Pm]>9Y]mH_5,LB`HAGjBe-fm:@!gOr,o$&pgj?hS[_r$^<W7,^<">^!,c'f17BHgPoL
-kT+LH7#qEfDg@?jL[KOutdq$='OldT)#,CQc)bhm:)3Uk]?c2ggk-qj`p.9BPBG?)6,8plCLe
-;'c/BM^"/Rl)E50EZWX#>1?-P(n_0M1[&b.15\Tk9,"/.&*(m[8s,c_TfOe2Am^V@>/9?9=RP
-PQg%f=;CES&3PPrg.6sd;l2J)m1K<lfml<?UUDI+:1WWN6#BkFfk";e)teT:g-U1giq!;Z`og
-P9=B&TE4MRW;TWEgad5G^Y\A7raL(mR\J[hii=\^T&@C7D,)c@X(:/DnY$58_Lb8gE/[Nm$%T
-!WHN%'+4dgVu1#po?U5Ih48M[[3cZFs]Zn<Piqo7(FV-O`Ac,1dp?$]JF(@V-$F^QBdh*.UrD
-AmZp1_@W#>>KbIn.D<ZfJ95:Eb4Fdk7WU,#*VMRblH"SpiA4@/sk"(aa><urUZ4/0;E@IX0$-
-ed2952mHBOh._GcuOS>D`;1pr6MlHLfg<J$nrKlLK;kTZT&*o3>`LrU*%9*oYUBWmle^4obS5
-fpQtU`1/t3R9"A&lXH>:@pgQkUt]uE9tE*-CVBpUj-lL+R5+tai2P4LCSVWM%qatD/J7fbDBh
-&JgpW!4\2T!,2'H*6Uj,V>!_ZQNfiA`s+/ZCK!o*Bd^l,"-P9Mn1]9,Cf6tCM"7W$!J@_HXi7
-360e(=,;jp/3?'FQa_aO]4g/q\?mLfY&V8ZX^F3ONW%B-B,fi`c6>Rnjo/Md[MjOp+-]B[?-D
->72I`abB=7],O&4c1kk6XL`s=*QA?arSiRY:(=.'"r]DK<B[SFWS+iAWg9R6FC26pRkj<,`7O
-E&18->cR`h^R+ff!k[]\:N:/WI!iPGZ@3a.Xm$?okc5M'1Pfa)Ai)E=YJZBf=<c+k#$=re@e(
-9K!ZP[Qr2Yi;4`g3=WRWS07T*(ot*u2Pr`VIkLKJ6SUGazzzzzzz!8PFe!:$fhTFtU.)lSKlg
-K0+m<In?<r3#8[HZ\F1TbfS$9-n9=h:F'chSd`4l27^^$nmpM7qZLk0<"9KJ_Ht$[GAiDX)5O
-VG?kH]4UY#%dX7.`.T`0d3NJM>3=U-qT7;em@-q&1UA1A,cd2Xjp"*OQ_1hFr5("Yk>;)epo"
-'J-Sciud3[;.p<i,.`;RrB#lRiS=hpok1Su)?X0'-HP6JU:M(5.]Za!9h2s(],d+gf@Q'&0;i
-/mkU3j?idVhEc#)!pN:9*59M)Q-rmG>+>t0Lh^-d__R:!D:S@Uj2[47jD+!+UQC#VW"E7Kg,]
-uIU4_0kLAmcDM/Ckd::4`Nnke(arh6-MgGWVao]ng_8D0oL?+2>`bt(P]<^po%T%*JZ8o<n5=
-pV(o8JpY_=%Wh#h-&F?F/"Dq>ch&is(_M&s,oURg=Y'$87?.X;Yg,Us/'P[5.&VH/lu7iKVj7
-E$S&T`[^?fafQUA9LenAUmJGA]PFbju,d!k[EG]5%aiI3"c%o*K2J],0=[,s9!a@=ZR9ECjD<
-K3&buhDS3:Z+\k/6ZeL"`,T^7OuPFk4"#GBKF!F_@\mVGAbNYg.:"mXgsr4^0R_RUhT>Cn!.q
-Gu*_dVT!.YkP0pLg\n><?eDfb@VAN:NDm;MlW"Lk(i$g-kPCrPB<<%M7Z+.hN7H_-T\J/A-VN
-"C-Ja`O^J)kKP7D&+\V\0>Z#++UCthlC0IK#e(2D(%==Hu3PU/A''7i$7@qsKa:cC2oeqI(oD
-0)a#KfQ,qgKAd+$"6O]Ctl;F5:8TedtOpr/7G[)87C'eUh7O\,icp[<c+[4UM]<oS$JS8-aqG
-18?cr-gJcMWPKH=lkG-2*kt1,b=&N6=J#HhN%!tl0C9nS4F*YIdXQ;k;RcZ-E8Y&V1=GK4.D;
-Ut:T!VE'>BTeF<Hm:oMq-]6(d(T#F!(FRs'9:q0uks&Q%*\CqlW%5"P!/DJ_Ht$[GAi$Wic20
-bh!T!JZ!E-Y*70"MG`-'\#YSIerHY95Wtbu:lhfXZ,>KYi;WiX,E=)~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 621 510
-%%EOF
diff --git a/doc/users_guide/figures/cups_admin_model.eps b/doc/users_guide/figures/cups_admin_model.eps
deleted file mode 100644
index 2d4f37c..0000000
--- a/doc/users_guide/figures/cups_admin_model.eps
+++ /dev/null
@@ -1,620 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_admin_model.eps)
-%%CreationDate: (Sun Feb 29 19:55:36 2004)
-%%BoundingBox: 0 0 620 501
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 620 501
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-621 502
-12.000000
-621 502
-1
-0
-0
-256
-000000
-ffffff
-b03060
-d9d9d9
-c0c0c0
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-0000ff
-990066
-ff0000
-ffffcc
-00ff00
-e7e7e7
-6f6f6f
-800000
-333366
-6666cc
-808080
-9999ff
-000080
-222222
-ffff00
-808000
-008080
-429aa7
-00ffff
-00373c
-008000
-ff6633
-ff66cc
-7f7f7f
-ccccff
-ffffbf
-d4d4ff
-bbbbbb
-8080ff
-5151ba
-cc9966
-996699
-33ff99
-0099ff
-1a5f67
-0000ee
-551a8b
-a3a3a3
-8b8b8b
-000033
-000066
-000099
-0000cc
-003300
-003333
-003366
-003399
-0033cc
-0033ff
-006600
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333300
-333333
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339933
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-666633
-666666
-666699
-6666ff
-669900
-669933
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-9966cc
-9966ff
-999900
-999933
-999966
-999999
-9999cc
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-cccc99
-cccccc
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff00ff
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-8c8c8c
-cccca3
-8c8c70
-b5b5b5
-cdc0b0
-eedfcc
-f6e7d4
-716a61
-8b8378
-a6a6a6
-GhVPU>B\`C[YCj&iQ5a.,YLCAS<^cXg]O-L5Ks#iLrgLG08A>>cKs^mpR8E@638=GrdWZFUo
-IS,:U;Z'OtU/bBI_7LBGu:&CsZ,_CsZ\oCsZ\oCsZ\oCsZ]:YR)QIDLO,,J]r*cX<<jj.iLP;
-H7A6a'@;FYa=BJqU9Mo-_2;;^/Z^p@,S)G$^YZ.$TZcX8fUPG]qibto>r;Y@_$']MJtJtY4I2
-YP/jfPLgoerFN+LhB*+!Fik[KFRq>0fEi`(W6N!9YhmrB9J^6ObpFsOn3:O(1&6(/g[EY8GbS
-Cm$scpi"Ia)&(lYf21LC]J;-j#cE$MC"YOL:Z&qOa%/qEY;qCb-8j/&^a5\P4t!YKEsps2X<=
-\R2?_u2W"OO(KYFq[-!o?]@!Xp+gAp!@TqFTDY2Ybn\LJC64AM6j=skiTo)"jO4FC=DQ*I`.V
-o-o#rQD?(>m5u/i=J8G(SB482s9PB2pR<kX]Y.f%H2u-/hCjLrBXC3Y\;T(KB,NVDTj0;$\(E
-r;Hn:cijU*TZI>hTIU>Q6'DVZ6'DVZ6'LR!Q`grWOfnXW6Kg3S\@?<9=m2XHleTI%m@3c<FmW
-cil0F[*CN7D!r>.6Km<\/3.7l8FbiePg4km@`q*oJam<\/3.7l>HaOt]DHWE2^Lk8>fno,t\n
-Uje]Fg8k"C\+ll!&gT5Cl@H1\"B_?`EKO@<MEV,f]3PJRi0t?R$jcj%5to[mFmPJD,k"[ReaG
-g?OtK?k#Tb%9j(F)[Z56)rchbKU=`_3R_bib784SIQF(<%oVg;KCORhL/\aHm*p,(_1O`7<p!
-[Rh??E'YkgjWdYfRtjcdoX\%$nX:;r7jb\ftc_)Re1*fu$),Y&4>GDpKd.>?;McXe/<0<`&DS
-.'[lf)ahG2(Hsrtc&]VgbeG`2_64a/85me`]B7QU8XkXT&c\X<Z`f@'C\pED7a3e$gJV3>B&"
-D:/[:\Nr@ll'3k?,54O*$/%<Pm^T$93f?uL2=NjO+&!)`M:llQ71FMt^LCgXr'fG4h&=Yp*R/
-bh3VAG+Xe[MiU4fTc..W?>*B$b<LE2![Vt98B!A.\BXM/LFa#G(@nNr#0nZY!?OB3jqLAc*N?
-aX77_-FE9MuF]I'^/]oqYS%5A#`L;R!rqtC7LLr.5[4^*h'jbd!5m,-(@^&!S$`RieQMPi,l:
-.+5a.%N.Z<$b;;o#L*7J6$0O\a]94jTbAA2jAm?Kk*_g%W'?Cq_tE_S>2\,t$(ng*!(J,hJR2
-4@l``A?\p@2D7D<f\_Pe*WK9H22`Q+c+j3"IP$,1Ir?b4.N8=rAF2Hor7b1G$8pqoN,OpFpj#
-p(7P/FO;R88gc4Z9.c6inY?ep[M#PGQ!q)#FkkWJHQ\Q>t^7?i'U&NV_.;oSfmc$+]Di:WVb,
-RC^kl/Z>4nfFN`h"8[l=kY]J*k$"Yk6EjXS]c^f))a4mrcnnZ>J89o?-P-/4DW::XCur]ZcqR
-PX>h/1YWXr:AtDb'.\85CNI2JujZMU7BcPmmGs6RY-"\scdVmW:@$=m#Puu4;U[XL5UmJ%!6J
-!cEYqg-9,1sUmr&&ihp1u0oZ/')_dAps`o7(o!l,Vf(o0R^Q7@.9WE1SYNNDeC[CJF5CleQ4d
-%-ibqJ8M/W5H.t2^0#?\KmT_aB,_"4mL%-DY;^8[qBW:Zg'hbj)kAXCGd^_Bq=#\IPsV*CBIX
-O^P(l]YB',Mf;E%3^Rk7^d.USF>_3TS!\,_H<6=INQH;_YseNDjBJ'?IQ>A2uk8X%7`Obc&78
-I>m7Uq[\N'`ArS/_#=<6$WkT8>4TCK'eLORmKhlUFYHt)KkPEdZ%/V2HsnLAnh64@DWk0=S/o
-S6'Ih?k%]c-;mV*:Ke7]*4uMaU*OEVm_6($M^>]mi#taI'%rj3FGr4K_"e.U[mnSe)#G7*K'Z
-Bfu&<`G%+1Bi=b?A"\qke(3&^NAY)Dcr(r'LOlg!SJ$r>,_6Cim&tC,eEO<GA'J'GbiS9E-6+
-e`n?:bmWXkT9SB3h<8S<G_49s'tpEGniWZKgZ$t8raTA!>;OB"WZ[F;<piElD0&4:S?FR<*.G
-.r/lu\\2?:1H/cW?G.sk2hq+Wk.j4P>"VaIQj>OgD1d]NYsk,Ur"bV-;6?nhk$*=q-oe`6JjK
-D7m1S=:#99ZgNV[ed>Xjhe)[O$U\fKe5b`Sbq+,j+Bp+led]YP5q*"h/&[qekY$uUgQ8LL\lV
-(F,SEdkR1M!ipD'ZAgusHI$O0S?h;!+?+X63\prA*]2AL852[TW9C#N('cX^n%>U^j_nF1.!d
-#C0jLE`(g$eZNB,&,c<Fs6kkVPGO4`'4.J.:e*+iiuhmGle\Cum'q%I0$$a*grio_A*`Q(n=;W
-%LH_TWb2Am>M,!TW1ah?L*Vlm/fS_Wtp:0#_F0)Jfk>N+:*Rl9BbltpFABfi'GMP8+im2"S<S
->ftO)9g2YONd]t/00DbA'd=%2@k8V!2]oA!)UV]Y'382lU1nQXIO"Ub2HgMG5=4D3XG,TSNMC
-qC="jR&e'QNVYT3L'$X;*bEK//@Sm5/[pkrCgFP[?5]#OU3qq#+a<6MS%PoKLd_ok=8k!URdE
-kP@n/?rR'K18dE:LZh2lV:OU=Li7X!Qp&19G>$S`m5?h'_4a$W6(2n&``C_@hHm?jD!61#a:/
-uq7BcD/m3(fS`b0Te?pXC*!HVe`:oR%8a7*o;?GdbPm39e?c+^it]3T36g?j%ga-l`b=PS_N[
-Drg.hm_urF7i5^i30;Mlu_2ckFaF#U]!8Pj2lmg;uS>::i(!mdH2"lDE$65D.68TZG2B`>B3'
-V=Esn?m.!kcJC:&PoEZ01hX'g+/j`A2a8WO<]\K+jC$V5MSOGZA+LYTU"0i7)PWJBNojmIJSd
-5$4Z>?srfkItQ*+@fR&N6e_PV)d"Koiq3VrD0C3QWKdd8oZnVQjG47dMmU4SNuh'M4SLXa/YB
-bfs@J3.0h%,@=E`C`_\mgY&*+CtP]2c88nPjM8tG<)Ii(fM"4_i`2&`F>aX*]]qp#HFr4AWSX
-!(HWVG7ZL>p'3^("ISb!'KlRfolm.I`7;PZ8)R.lq>q$5N0MXalkJ?^oKQud#n<mQ6e0g=X)'
-@*^hj2K;"%h:,mgW$h3*J&(*Is5eS7fPAe]@FBb5#`\!+e"BSgkak-PgG&^k&%fd[uL81)J-)
-!Dc2#=2OiN@'7I&)PWPjsD13T#n(MmTV@PVN_8OXU\SG-C`Z'/,@]^XCh@/NbIiu2F-omRkV4
-PrMEM'\/NON6iF.)eD,2)g#\L8d"(19sQW&i=kTT2^n?+m=,p0G(/MriKo]dq$mB#iQWkSH$s
-CWom^>P=>j[Y_&/?Vtpp[cn$dGnT3TDY:#a.bg_fDXMWHq;S7T%^p5)D;T*Zg6-*tjfpb)lG[
-r?q.XW92TVHg]X=*\rM/q6hXe,.*NDbYH@/P+nYgcnX].(kWNabtpH"[n8(plk]#qfuXZL"K<
-82W*)Oo0Mc9sWgTm+dq3)rd">nrjGKfBi\PPpK>9*\ZcqV:Bdn!2rl'M#SbW_TphSZXtYFB_o
-5c"G!p>MZ$rr&_#8;jf;IIWp,)hAR/6*TgB$f&OAMRA[uO>gN4sIE#t;D%D\ReSM>l#o5+&lY
-X8?S`Nm6ZaCjhmECX2D/VRA>-0jqgrAttG2/lXCJK#$D9$7?m"G7c.!DaoFe.se5PVqD+8(T.
-K\uS[Rt57RmHjMUE%PY+9)6iR7+AYOe^;C4o^Wh0X;bCpU[_;Tb$AqpC+?^#3HB+uFYb7gmHb
-d;md1^g8!9_gh:XW._9C1>h0"2j/%XHG/T0(*l**$OBcXMn]$[W'9:u'_Nm'!<X0oTM.1+IW%
-\"U]r+`??Spc!CIVNB?o#Jc5DH'63L,7_@\o(J`aIb.lkaR%Sg=n.-b/W&;]g'a^ZEnGq#2O*
-dT=55sIT'@Sm(o`V8.Rh+E\5-fj41oG?X;.WmbNA;CY[<<h6A<'R%uV90$,OWpJo7`?+XRJ_`
-Z4h=lD0ras2TGIJ:bCK:5V&p@c34-KdPo9sP>P-b0V-_J=$2-Vj-Y"ec]A`OOllHJ]d678fPn
-N]3i@WE\^D1r(^h*`D"_h2NK2"*ORFk6Kb4OW0X(9X,(3c_)RYs0R.MPMJ;*q6k.arSmZ/>mP
-Wf^%o><gY?r`VDJN^[$FHLS*ee^`r;dO=5WL%H>2aoo5)#7Iihcbr]jJdp/eg3_mPZ9^Ah"n<
-Q.g\HS]Yb@2)f18(T(caSf>!YjFu%D<KF'm3]2c>'%8]Cf[u./#7]l0q2a!GMnb>8mh/pI6.e
-,YJ%%peH#U*;CQHg9#7$0\EB7(JEEGEC?N%IQSs:SfIVXOJ=:ab,Q+X'r9_8hDQ!0!c1[DLn(
-r1khk8/(DRcg`^J%4g7l+a:`08b2R^X-IUbI5O3^;?^]D:8B4J.d$n;CGh)>e1Qq#Q`*#`7Tb
-A(b#JnZ7r5\W7=hP(f8eL/%@!?XqLX;P[G-*JIUBB;JIBS8m?k7F.i%;[u3@);@Bta8Jbo=)>
-j<MK7k'?Vf;amRcT:IIqV(Yj"MtrLdaQR])4Bb^-UJJo'm>LLa]EXtP'a4&5qJChAO3brf4r_
-(_&R(WJ+87*jG1hm$+oJU4c#6A=lBemV6CCk\,O6,O_+],$8<..C/&D<3@hn`>T.88Z:-)HX6
-7H/l%]A7qI/)3P]`ZgF/ng[_Ek"\e$&e<XCYh^XWLfb@u.EXuBr)SdViH#D4kpK[R!UcH2%jo
-OTVJbENPP\O[/@G7+?et^p4F/PRt%^k2*ZU*LHApC,T^4nAs>P)b/`3X:j[R8d^ch?LUI!al@
-D"5D2_S5T?\>]MDcF.l%h+b+b;c5e**5qAK30ecW:!AZSb:17\gDO1/6#l;-J+Z0/GCOmE@P1
-QlP4N)lCf5&:B1oO.08-<l8!c_%E"(EVSkX4%Y&*H66u2kHBM=7CikCK54_8Me(?.8m:>gHG0
-I,6;*GV$(j4WY0\FIj3cUV>ADDun[4knQF-nW+sm@\QrKBen1]2CN7'Ng.Hg$,t0q!BD@Hfj#
-J(mn./1Ge"aQc#l5Dn=@t9r@R"Oc$i7HSlSJIJhZ*Bs1[/YAUc\De:pcoGQ>.Pl4;G[k7G[\8
-f7/ei$4JA+%Sej0p[d9[`ooEeG]*9CnTnZUgN";D+1/od^ugD,%][G+f>V0\^O%Pj;2V#EH(;
-SBm-CM-/4VXhM$Ea6F8FD0u%pS`E8N16oeinS()VgKN*cB8^9.=*M]pf$XH[WuaAcD@<dJG(8
-4g0K0h&carI+[klL1S`u6dM`J?>PHu*shIlA-g[SpOHY9C=.><CfFA%B7WT]_/`3Cpfg*Nqs6
-;STb0i'QmjS0X7VkRg^:>N(%Z)j/tnJ[GE?=]XuK8%l7KNWFQc0-ZpmsEqo&oVbQjJrQ&1(^@
-WAf:"1qsX:+HgXGnBfj\m*:T\ug2=?nT/N2+Ru7oLM4+h:(VNrF[L)-Rf)7/620>:"bj/h[Z$
-C,$9!=4I;CCN`*VaEOeVa`g35Q0H2T^J]9nW:)PMH$@U#=Jb*O8.J<pCI<5YtGhXl.,70B8O.
-/D6*uiIfHacfm_jRpMCFO<4#Or)r5E/WU)u#9?NaSX+%0>qkekO#%si]9=[4[cYpiV01tOS'W
-TGN'(pY)u8sE/AV5N@eXS<5B^9TiH=VUO]1FB@Ydc!lg+>jZ=_j*b*)"&U0!V%eBt/jH8!0i<
-OVKK-];j(0EYE5[-c)4:AsrZ]u9SI_j;I7jeV922d4E>)1c<GNg?XUG$Y(YCe#aWO84WBQ'aS
-1@r^QnNF`=iYK%ij].NpFHS'tXQ]9M#^<SrE9A.qAY(qLNFDj=s^28)DU"O>4c3OJhR6ncojh
-)=(XGaU<'qnnT%909J?E)W7MGh1@,9B(ebZ^pS\r`KRZ"S`)P.+n`m]_F:C$^p]cRZCA8+`5&
-;N53]PXWtIL45C`anD532m]f`-NcFl;JUK0Z$hJ:"3F;_1-*uo=(*S)_dcEtQ--[eWG%o188.
-5PRYD=qZU\mI_%Xg:*Ds,Y`t79I3V0V-K#*Gr$u%f0[,Lo.Pd,Xg*C[&ua`>"p4'JXcInO\3I
-a5-86P7"t._FEEk%.IAJ$/uj"#^KX[u$gi03?D\4/I!Ho6Q!mMsehCea=GmcDd*+:Ht@"AVo=
-ClXNA^Lc=q:ZY!MIIIld!V,"DE$>I40kER%$MSA\4oo[S(lgB;1cQgWH0aIPrf.OXTd6`m42T
-g]qi&K8-^4+mSGKrpR:)jC&&-P91"@3S%5nF/b&-P91"@3S%5nF/b&-P91"@3T@G=qkr5eY4N
-)RBBmk5djPV$$fWkYfPc).8(LV#dedcrh!3%@Tn@dUg3M+8q=O(&f\r!^VH,@&$7)Z33>2Y$=
-'Wd![?1M'1?GDl"rqe5mM[J.9)O_ESd`!]K8Z$?ulm#$k9$(Vg5\>\qM,RuOj.@"ZH3nRVh[\
-raqg7,\IU5nF/b&-P91"@3S%5nF/b&-P91"@3S%5nF/b&-P91F9?iETO@n9d$+TIcu]>)cu]>
-)cu]>)cu]>)cu_;V2Z6)=pr:UWa5YqR'1arZ=2mZ&jnC!>`VY!QmgMk9Qo`R""k^-Pl*514%)
-\*QWJ`,K@S$s3fjEt>3j0>?%U3:!F,i2bR<fZ(=noG[d!;iu&*,IN9e,ppn.K+BhX.uQQhU7f
-U5$#8Zp1G(hXb-k/IK::;]6%P8:f^[3'TbnRjTdKU%"0Ub=k?PBf[LpAMp^ofPX.<_=eq@)BG
-I!MslL`o1k*rFd>JY'Al0eQrXu]cs&7*>ubOSp7Ci>26cQPoM4%J=;%Y7gH1DjcHqK!1^IL$+
-cQ_27lSTKi_p"=ge(u_VS_$SDDZ#+*OF-4dQ,e(f_0Db.Uk%HSBnh9!ooB"07qSMn*f$W?(UX
-eYmVfoZU5`VFFEgom?X=dJ=cWP@"Te)J(SXo[d<N$F;Gk2g'uF6h4k1Z#25_+1lsTA#+_j3XF
-W:n7%M+3G_8c<M53EK"@3S%5nF/b&-P91F;+L(F?NpAnH%ALefjj6mDbb>2@3*RK7`K?ZjudE
-YX'(hLJ>Ga2X%FJCk-@X3S4fHl/&W"pjhbl$F"6sgm:Rf]0.=n]Dq)%j$bUEMH)03\C?29a+?
-bojFSrF,dkdSYUFcllKp7!g&*6I>_e^jYUS/!Zj53#r2[Wql8?3^=3LTMX)]BJk9I+eRn?),\
-_XVq8I@R-=\-hi+Ao^Yj4D!/&3W$'A.u1Q!&ikN+p:I^*/2X9OMU'2M*fiMCbfX=(i2)!Xob)
-$c-Z0@@AD'sdctGKKq?J1?FI'0/M9HJkQ*TXcX`$&_^="^OWJS2Bc^Q?fTG58FX\-^O@TQeJ8
-G_I4<h%R"c&'s,9MY#WT5c#])6+_(pP*cZ(+dpVB%K6H+EQ6i\Y^2\!_ST"m@GcM6J#[;hRpS
->@AKtC9Wi/b[I7e'5oYk(kjNVQ?T)Y-f0o)fHW*rM@_m_V+cP5,0<1a[SX%[@/DTb@uXb4ZUI
-,m=HPP<Lp7SMLQC,5LWMm6@?Xh<<S0]cDcAi'iEeV][f;0cCpEY%<pLsA-q\>SB<l3;[B:VY8
-9R\/EWd&9HGPnlhY<DR(AhUW2@aP6S^$'dE==5TYWBH7L0$,?`p&'i)+hBaN?$F/'/GkHLZHS
-8]Wf]DhXcH5F?731+XN&m9,$83du-"bF(7,&CH)5m?oqZWec31^G>ZPXa-gAqY^P4[gSrG;3E
-j_X(`<uW4qEs5c$fB"'8.$'j*"S;afGM$4G]V'=D%_PP6pPkJ8I&Mkl\.a-GTi<-50e)k"0J6
-46g_gYk<d25H_lca\&PP=O[Lj-.n@cn`>Otog\^1RjS6k"^n+MMTq?9AJ,dii^\S0RjV,V7gi
->\q#T77YSG/TfK@86K)i=l@:R$p[0IY\J'uT*'!PXY2VM3:R7)5gj):NjNXZ!CM6LF[A9IJh2
-1?lfJ.7tqqjRS%=+h$P-\i#4@IrPj!c3)m5FDKj@%0i?%BrPR^]rF<'4:oYP6nI%o;"=,*S"Y
-V,67dK*B*o,$C`E(U*SgI+Fn;/Crq>)njC`LSU\T&P;*\X3tF7'XOoWQ==/$aN!?*AKf3<h_1
-p3uWK3g.''WtF%Bp:oXY>dPk/h0*A=/frec=GifU2,JmD0"pfK:%0#M;M!NODig=HQneA=FrX
-aWb+3"rfHrp=_XN$kHt[Y[R.a+;9-5$eV>/m?;CY%-L#KJ1^j\Cn;V]q..s)%1hGG'4:oYP6n
-Go[`J[)!8D#cCk-@X!B+bcoEMTG;RTFL[t"pW-Y\IkdA^nrJ8GR.ab0BZ6dL'GI#Q=67rB`jF
-s:b0=g<6-4rP/fTFBJmJ.7tq;]eMb&:eUsfF$XeCn==0!4L9_A%p-o#911&_Te9pD$np/>K(1
-efu4K9GnR>e!&eYb/8q+*Ak-5<Y[R-658/S7b-6;gc'+n:'X2$;jCA=.GS!*-!#o=89RmSV9d
-[X[fHq8>")O/-Y[R.!2io'Q2Zq_/_o<d"@In$+<9M[6fW]W6YY>THD,tJE$k>B^,9DCo^kU*t
-//-..&!7V=Yal;/@2t!GPGJ<^[P;0"^<<nh)n:CWc'*\FP-E?BMDZukMk=PO,[fr$\msF*qiD
-n.o4/\2ZI29]<eq>iql$a,!B,,,E.lK"rCm:#/&M":2G]?Bo>AFWG]L")]oim,3,G1V:7hME6
-=$(nSI$5l9HP(Z5T5F&3k3SWCsW013nV;\^c&_e0PnDF'R$p8DY/h_TWn7+d_<>]5qCS*^c&S
-a-uAj9c',t/G!l]t`p=JF@Ika=0n%oE?3Y3^JLu-Y?[h3AL[@HGScijS_a^+1RjWgjmuK22lO
-+Xi:Sp=9G3sfs<7hQ<-u>L9AcUS1YVG%sg4Kji5PaG5^ih0ZdRn,U0n73U=uO)iK&-%\8\d4s
-CtLjQhE35USlNRL->]UG]I"Jh!AA(G*BB^0&[5^8A;?.\Z?hf:)`CJugl*%W_h7a+"P<_/A--
-RtD)),M^c%S\)do./J.7tq]n,OKY7\Q."?-7h$C`E$V8D8mbJBK,LbD!bX>e%Pg,o\o7YZm\.
-lL0-QH;MSZY9MXfK@82_$[tD#&GO#<Z">8o46M11=@3g^kU*t%&Bsh(4behYgKo=r<^76_)G.
-:4rLSa!?3pmQ8_UFg!89P!B+bcltZ[,>nsf/^Njj)Mgu8+-RTR8_h7a+"P<_/A--RtD)),M^c
-%S\)do./J8NHRPC/Mc?M7/-Ms&?)!S`j.-du_#+qL7M+j9j6!:4uFa_EPgancm)E0VFYZ3f1'
-L+RZ^?[h3ADh6p1af:'LhEM>!`eKJ]l(p:6Z8T@jrKADUH*dU\BfAi92D',i['.33rKH>`!Og
-Hb.h&.)Z$DKu;h-Ig7Up&5[!siY&:eUSfU2,JNPS*O,A`r6@Ec_Q9GXoDRk,mhK^IFka`%p0Z
-X!nrg/,&s7<W\/k/h^dA-o6igHQSQA&'u(Cf>2BAE,AlgQCDc&=OXZ1M0*/[!sj!?C\nO@(Y^
-daY=3/d^&(VAq0m9a4rd+a2(jtq)h?$m6bc_P`g6i[irPA#P!uaYQ;2S"P<_/A--RtD)),M^c
-%S\)`CJ]Zh[IJ1OuSTD#A8f2G^V+A)kr@fW]W6YY>THD,Y8BUb%_>GS!(DCtLkl3>V6P83WsP
-D!/W8(dqg(,f-s6*t?m!^rCbgCCE+9s1FgK-"+>1Cp]mF)i<q@Vq=+7*?G3h;ddN*8`!hFc'-
-ZP3NN6>Cn;VW!jGr<2Jes)-GYA\PEQ<WiBdBP!c3C(1'';K2OOOa@%0i?%BrPR^kU*td;482O
-!Teh!,ND&pu<i?Sn(X:\euMT)dpSGaV/&l>@ITe@+].^@e1jVRDb@G)ArJ")?Da4SkLrVb2@o
-/oJ3o,)n#k![2]-<YS@@>fK;ap-,n%8I1gAmnCikO2;";bEfIn)mFXN=nli9K(H0fhRU^D\mD
-cmMfP!Xk=r#`0caS0tQ7N*G!O-#(,k!DPRjXW_JZQBgJt^F1>eBO0!o)rX;V.6iE(S6IH;\hh
-W<f_:oAi.U%(8HY\>9^)RsVnnj51Sf2pL'qE[OU>%G:.mIPU^f?2k,]TSj,\!Og)a*`r=7dls
-oq5a1H=5H_S@rI6:C[=.G^LEHkS+:*RlZJPWWqZQlhIdMMMGGk168@&A8cli;MFOpHjq`i]X4
-`jI\M`&ic%F>u@.!ed)Qj>VHq-D"'1r!>-FpXggd6#7G!7hb1i7aj\qPQTDF`?nirMGXPs6t7
--UFu&.CR5(5',=c>,>(ScLU%HO%K.\380+r59k!o<YX.I;1t_S&in@somR/FL2G?W7U&$.19c
-ep]B&+j^#Z*b52-o*"8ilS9ZV`prc"EeRqLEnWkVCjh?+U6dh$B(BT]q+7n^)Bp(*dKR@Ika$
-Ts-*gJfk>N+:*QA#_F0)Jfk>N+:*QA#_F0)Jfk>N+:*QA#_F0)3_ofAp_i>Z\0QOm1XZd:5nF
-/b&-P91"@3S%5nF/b&-P91"@3S%5nF/b&-P91"@3S%5nI"];!Ru,T--EmQ\7@n?RobX9MgO[M
-EEtpcdrc`MT(%,?"uF)&CK:<ZL`TplT3.nBT(OZrP"#SeXNVQ=R!q#<`?sA]pqKu-4:\&r7r-
-gD;A8mrG,V$.p-W8O]ot(hf$819_LI[92dgOQT^8U^UF)<paqbBGdETkO*ON-dUJ%YrafN]mb
-lBPBn[(LXmHQ:YDc,l-<QRlad1(5."?O5<S7/W8C;V/&E2^?atHc>\F;5fDQGoa*1T.[#^L'N
-_T)3!!?:9Q8V]XG>4DLO.LS]AL/<Tj[.#AVo599>d3[FSAdW+Ih5h`1&N#W9B08gG,YK^g>,:
-8V:9P^kNV!a_VPjf`Hu>/'NX6ZhlY+<Tmlk+SWK.ZKkFApuCkD;o\PEnb(&g[>M(DPFR\n4Y-
-/OHcMdSQHPs*B.D:B\#k;1bR>SUI2O?Bc:`94F17W<-R?p\WYCK+0Pd-.\??B=/7db(B+;+**
-TCr+$?4<#<OZD*1$44]4\r\41:=q""t!B/h!]ZE/f)1[FH$g(/O0G5BCWB:cq<aZ:nq(sS)K$
-)?e"#_q(/c!5c"@e*)k(]1QgqBD8bHN9]U.)9&k'IWe+ct4-3c*$L1,%?#2ND!Jkm;1FZ;\gX
-Vk(908CJt7:%,G]'b#XFgm\4QXiWX'7digq)n6(kDhR2kVS=Z[2f()7R_6*[eMR"Nl,ai[K#H
-SkHpV0X2GkuO?Hb`UZY1oU7G-8[2B4X&Oq]<\ggg&4D/@_U2@_h$+BHiFrcC2[Vqk`9W"^Gf(
-qbD*(]?%V<CXPnP^'MgL#FBC4.AV`PDQNj6t>_;4H3]!]AVqM1Cq("e`IaD?BEfN99d)897Lf
-AX'"PlM+[)MeT*#NRXo71VkBBhP>;jg4HXq;2auD<;%o0UG&`]mI):d:<!$kP9-ITUM!$F]mN
-o!-S$uVI*QegW&9Ln]hI5=X.+r]sI-?Gi3ZMQ$'X-@D:6.Z8oI.`#K2jL^^@XZSos%`+fIo!_
-Eln`7JS1aP1`bf()I4M!PD[Z@,qDd/bml=O4f'4_L'K^ShVBsuiM@ZF5!nhe5.#`oWL3$nVVW
-laYI0YX*1aluAhR'0Sd8ObZ_A#m=Q+-)2P[%O[1DoYV-tn@6g1J^ZP8c&I+Q=Q!]09pOs<RfZ
-8Ta(<lq[bpMc"n1%mAl/J-D(ba.>!.j_daJ`\L:EOlkMcaGB84Jj4Q:):QYqr$FXn8G0;Zlct
-_1S<H:J!G`Yf-tP&oResYC^,N/dcHcQ]u6*(jnj,r<P$;hV&'s7l&LB+fOAnJ@'h(</P=u<5I
-6'&-4dGG]ca0Ddr<EuaJ/J.&TNBZLLg9Kl[*3+#?\.6+!Pn>`.^3@kf#Fa%n@.5UuX@(Jm1j[
-AQFT!7T(5OG'.4`6@<_t."_]Uo):7""MqTb1G5'BI&fW4fd^epZ",LYRSnS>f1X>[CF.5h@O.
-n/:=ogr_$s6C*Zdq<4]$VFIA/Y<hlEul,<g#oCjJZfQWMI8TS87Hm]sc"Z.Uph@`YA,.^0@<b
-L#0H<4uh2;AP)o?o?/45]?f/fLUbMW=1]:k7N+>7)302_"L$!':H3;J;rTTh3DR(B]([S$g(R
-)kNQPpcSl^q;]Z@=>u>92<krUZD433)=)BT]0dR`p@o^TjEZ]D@QK5.U2MOtWNM45!o&m<B2:
-rs@N3!sMg_nqPNT/Xd2@k;`B0-U_NQlWb[,/to;\9YVLEP$2bX;5pD/"qS9R/9^7nU%Rj=Ml:
-0e-Z3l$epbG%,>lSV7G[SaF7QkT?amMGjL1d\kUj88T;O<:\<]&]nQ-/BO#(9f@LJZ=R66`mH
-M&^!diL6V#Um,,(S3'`E[8e8GB],Nsk@>u^CLhEGb@8q"2Y?)dDK31RQ!?#`A$+m!`V#3>9BD
-%AoD"HBK[2aNDUh2r!i5C]-0nM1=APN[:0G`Xgh&3`$[Jurl!cHJfsK21$(_03!/J_>gueX;m
-Lnh7EDfQM8kY)2.U"M23uA3l=:[E699=ib-C8*CGMd\[7cbs,L*Oi!<=fT,=_"ka$@4X01!m3
-8c\g9-:fBZq7<6G[uIPY!q.0o\^RU[X<m5lJYC0[YdFZO)6=jFapI'V6oMgGP*4AH8N%>.F7L
-#0g=B8#4AJN5;]g+bE72caRcM/e9KYO3nRuo'#>[!c7Bf5?6$.;MI*S6F'at/]3n9/;:3;EIl
-lDU5067"Hc/KVi+-!*V4+.6@[Y1Sh2g%mRC.,>rbd(0f3"qCk<e!B_u_[3-3\>DDW<mP8L9A^
-7uk=)O#T&V+hIW*d$ud]hW^A5<D0pPGg-NUMWF#CnFapfJPB?5mW&b#_F0)Jfk>N+:*QA#_F2
-_b5)0*PA(4ee*&;iK;Ofdm;"%qB`_"oc3KW;^2*J%"1h;2>=tR]G$k+kH`FeRPg0NaQgeI,dl
-$q9Yhc\egCOCoZZP*/c0+\qB`QnYaMB4J#>&_%WA-%6oeKmMdCt,1rj,r5F/SBA@^5^CkND#X
-s7+,O*RTQJ(I"Y!c"BpcH/8P0qiLPgNT%"52(>"BWQm,fk,U&e^Rq+aa^7sF+WobebCXS*X6)
-]P=j@t0am2a)k#X!I3^\e4B+`F"YfW=.F1qcnG9YIp)B*9`4t59UVqLfEk1BrU&(9Yb2a+XS4
-obHUF!`n`NFXNSAe?o%eR<6Xq:Q+Zh2CRSW+'VSOt5(Q3GZjFrVDj),PQ#sj65*_G)rp5gTjt
-J?o+V#foojHe;`1b=i!"gc%Q.6pS!UboLY27Zs5F`X$qWpGPUn'o_mYc[pOX+IqdQf\BBu<[,
-%[.ri(BGfQ7CY=juH9223pcZ^=V@,&D<Le>VoLZ6;OX!8Gc!dZ#lNPXBb[]"te4R3eUd9q,Qc
-HT(2aaAkH"dsTDQek+*kGd^'$=YkNo.9m._q=r,t!S\Woer;;N`d5'noCRHrNS;*>c.]@ud:9
-VQr$<HIWrOF:B(O\R/"%J=cXts9hMjSM1i&C<-N`&nJ$o9/B=fO6bso*V>0Rk0q832"^"<#IZ
-e<Z)1]M$WQl=fnfZZ>"9a[>cST_;<SS-BAW;0*,C^V7GZM*AA#h62/2hG\S-[!X&(JhBfPO^H
-QC;*YrBT^O?k!U^(S">2B8O5-cV!:(3>Q-%p7MTbJiE6i23aR'>4'-hg\r`fhH>8[WRkGP8_L
-0h5R5_0H,fYno/8V.^UM$XC2HtQYEibOl5([DLD"j`O2_&I@n&hu=<c^DE>qAXQ2;r1:JVb(A
-;Dk]3\](cC3nnjIdt2m'XZ.8:<^oF"6QlHac)[TY>q*R\<r,\DC9\ajeNY/>]M;f)&:]0/;dC
-PQc".@qipU"Dr?.[I!jLLn!8A%c[^1(BYa)s+oC[d=^VdMf:Qs'/Q%A>VHdhl\@E00jTZI>hT
-ZQj!DS.ZFs8%3iiBOI~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 620 501
-%%EOF
diff --git a/doc/users_guide/figures/cups_admin_success.eps b/doc/users_guide/figures/cups_admin_success.eps
deleted file mode 100644
index 34e75e6..0000000
--- a/doc/users_guide/figures/cups_admin_success.eps
+++ /dev/null
@@ -1,573 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_admin_success.eps)
-%%CreationDate: (Sun Feb 29 19:55:36 2004)
-%%BoundingBox: 0 0 621 510
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 621 510
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-622 511
-12.000000
-622 511
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-e7e7e7
-6f6f6f
-ededda
-eeeeee
-808080
-547098
-800000
-9a9a9a
-000080
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPUBo_2q[Y;Ws2!807W/HXgE?UL8"7r-VV.:Us/8k*bG;R=:9rcd2$(,](Z+QiO_lmDI4H
-0LE:Z;as"&B#6"4%'a"4%'a"4%'a"4)Uu9k`Ucr\*1ll0XX@6$?T^7!RPe>hWZti)'dNcF5?(
-D2Y^/llK$p.kX5QH5>-$T2l-R$!a5`CQn<)`Oj7*g1/^'TJ%Iu6Qs<>$/5?pkAS2s<EWJ/XIG
-IQRgB*:7o5\UE7ZS*U>#1l@%PNS/e`eOjpPq9OJ%Y132-5/3'/\Qa9Qr4C]l%tX'"A$gZ"CM_
-Vf;d6Z(jn4D+Su-!6rTNJf:ii]b-[&UAN[eJ:>;cs@\8q&Gf"#X@*R;iaR-MYjE59mWJ@`tR/
-^Y'S9):Ki]rNnT);GcocKT(LR8nY[&(7Ee]be`4)sL^N[_Y-dO]n;-Z8U*)(em?u0:[tRU5Z&
-9k!UH:d$)bJ[X&/RcD$8I_%_QUF;UIl^U&Sip#0QSE['KhPgd<0LEk+i"4*I`Z/D;^OAD;]\)
-D;\DZD;]\)D;]\)D;]\erV?TR=hOS86h"19NSLSZ/GS9$H@*'5qIoi1]XhBhI/W=E_],XN!!@
-/l=1:g4.C*j)Y27j?]t0?@$QIs,YAT[H8n;58G`CG&P+*\YC9'U"D;IZtHm>NR*gX;Mg\U&'T
-Jf/?D+"'ppJ3eOH88dE@Y3=6F%6;h0f.SLDJE+_]!5U;;/KUJrk8<Wo)*iOkjI>o=\<EJkt.r
-I\W]IeU$nD;XmS`&07FSW[R"\?[<:["n*TT*@_&og]DK'KQCjVk^Ssp*;U+$_e5i+t->Petg6
-a.7bEp62p/Hs8Nd98PLg]R9DlpIi[S=8mYomZ9ZoFU`6)/'s;,!$318NXfqM/!RGQ,p6rHm:E
-b@X45*Neu#Q1V=KeEA*_`P5!(RJ0H7[eZZ[UjAY3gU8l'9H-)@[OB.kn`QlGVP?3#@C93ENaQ
-[qZ#-WQ"oB^+m6\.?GS$9]_Rt\V`CQB:X6o5rWGR`3>BK2'^V+3:`o5Cs<mk)AD:3n4PU_jb6
-T#R(dd>WNXkI[;X>(;k86Fs@(i\.BrW`%7s$.-b2/UlYSRdu()K'_rf=R6F?E,n\$M"h;/aSq
-/'Ur%U>)M^K`9&Z+R+ei'So8^:4bgCSC6Le^V;ug&eFk*<PA[j1E9\Yu[`iSb?>"srfTW).>3
-WQK.oQ0'cFhr7<ls0(:2R.('>f0nh'LOEI5bJ[LIh-l3)_K`rfX7?7V;4#8!c,s)1DO%C?pWG
-J(DB\`3R?t%.%l+j:4%r_dr"42L^^P7;>P#2/V11<-(#P1-MU6Rmed#>Ak;iXp^9n+aE,cX;K
-aPDQD=)FJS6@[\\/\E9epYD8Q$[>Yg1^\Ct10=CpijNAL.BiX58;j#6JmK8VSOH`PE49o7,om
-J$IiPk3:F2(8$1'8tr!),tJ77UM+^b@4;Co'.dfG#i\/o--7Dj_F,4h7>F\)crNN*O3UMpKML
-g](:6QlCqr*[J=LUeQ.[//LRtpD,`YY-.6'U`_>hP87["R<R4Rtn"oACa),%^[a9!#dHKGsKr
-J:\D,P7LD+\]rE432,R?KD6BsDf[nLaL2=_1EFX9WTW*H*5cde,<`BJTn>,hmJY[;f]D[sO=h
-`e-KGD+\\LCq_9&D_KbO:n-\\->o,C\!:YXVm`p/S!7,gcPiWC.@&XsgZ91P957,g/'b(^0dn
-'G<cUa`Xb5K-O5%\)k*n>FdqArJPsebl;$p!6;3rl7>k")YD30CYV6h,kPLNbp95V.sgWkH<8
-NUYZ3k95_oVC!Hj]A#OdRu\Mp%(s<@pp^QjJ6#'H,;mC&_9ouDIehsmUdMubg=2/[gBe>jX1F
-5o7nu-6;d8\U@K\CX,IkOULn-M/g3#,#a5C\;]kB/e@,-``9,\+IOhsO`3q7\er8*JSh[HO>b
-%#+LCqIG;Ba*ACKHku3N6Q&Faqr::2p]j`36!$UcmsbN1<NXR?0Uqf::MBW,;=C?CqI>gUa;Q
-Yk#`aW%@L&WKc/kb,ni3/:0anh0(_mD2-dDE86k^0D6RDo!^Gog9u.S"0\q"af@"?SoeaK!uG
-b+k=PjKOR*DM&DP9/q7l6#IIXE:T[$^i+5Kl7Q<.;d4R%%9bKopE_umgj7u#FWgWYM-Vi#>;:
-\mgOD2,O1RdsJ1mbS,H[LH(&L4+3VjLB0Jd2VQ_@^GQYI<E0_p]KsRHhI?phiq3O99/aJ)gEI
-AF$O+X^r,suma26rK_amMmrQ6M>p/Wr;:;_MIath*YL+J"Y:^C]`b=VH>=L"<4141&5]'m;/K
-K1\mM*k,e<UUH[=L&kFR20/@`#lY><W>B#"HtfR<?FDf4^8L<u2-iA$/pG)\;N)!eG8`%0-A.
-zzGU/d-eGFWXa%]Q^SE.<[]Cnhri2p_j+'37FZICdt&QcC9;"#JRqlRFmj5<YbhcjkDW@RXSj
-X)o:rEZDjoWaPYY:_ST+]m=*9sMa'o!4FR8ooJ$.66%h^RK\TfWmhB"#H]2dr1\Xdg9ltOd8`
-ADj5+niVtS.(W(TB2ftfu?RK^<[),#6n8-^U#Aqn`):9n0a\DE'IjI1k29WS%K$I+5k0llfA9
-pus/8rs3C7nV\]<nF&Uu4FC?#K-m[-$M0h1Ar0W6@MDA&i7t>%!TW-3SY<oV.V6RbEL5qs0Ya
-g.X0!#A`JhUMcN(CT;*;N>7n2D2d<WimhOpir?a]gQuR4)ucma8XqS3UBA!PQ-SSd[4V!i9j4
-n8LD3gj\(XPY`,1^YSnR9hHaQl('*gC5jW9)6O+3'NjBgAKJg^TPRq4odKSf5+HM,g*\\B=bD
-k#ko$[>T99YJLO@QUT*lGtDlWn96'b^fR8b@f'iUXZ]\'(bNo[;hY8WnH"B8(A<gA_0ng,7em
-I^1pj->)/LHa.g5:q_D4VP,6fTqgP<$hFt`\$W(^5+mYsf<@s90]dC%Q,<%F9r6R5&4Y`%0C#
-l^oFLL2%7V=1m)s&\6;Q7@lZJ&go9J\l9'MUI8EP,1.p9V$ti-+g#D(NDXZ!S5ZY9*s%`(-O!
-Zg1&73+Oe;j-^RK2/=PAWEna;SF8;`:3d94OkGN@O]IcK>AK1$6e'\cs2L)Rkc:i^?6+u>;u4
-k;kZYCIMGG7X:]m_8^MAjPB>99u7b=W#8q-0>[e\FhO30jn8*-lOg`1gBW4TasC^U?&`Z2TP?
-)u[#\@BIPRd-Xhcuj4noJTV,Pe:J[VSh&)IG;?c$SS!+:ER[-#KoOgah:c.9LIBfWW]l/Mf.i
-lkHf*-c,>uV,s0gI*,0S<4KWqY_m`C%G?)kidWQsWq<9AdNni?FC==Q,g^:2fglR4Ofh#hO]$
-LsL2m@&_^"SLS&mLp5D5ok`d#f>OA'Uq%qRf2GW:.FQ>oukj#!1L;.t]6oWCcYM2TA=3`dK/2
-/!\VDE]bgi;E^:bP/1]6:8K"gfi&X#NN4iaSQ$s6L@j<S8A.rVY-N2O$g5DE4mVIDU5\ZO41X
-.I.\Dr9mu(,p+0nX@1l\Lq<HM/Bo##$-='I[SRJ@r3`cPd@R/1[Lpq>6fXHfDFor5rU5%^B![
-rPCp$0HW5=hWX]eEY^^%MXl1FCb9_1&Y[ebh5aNi>VZmoQE("/[!\p.B_4WR2J)cmn0N._kqA
-$?5d7%YbJDQW[bD2Ns.bJYA.76rASWLVH)-HG`HNT\>uWGSata!%]JAJaK8L@oPk3W`XqQKUq
-nL81t[40-Zm&DOU\'qf@-J3B_TShDrsn1P12X/A(#%<1lX)um/_W9<4._+fZIXOVUp!*(UE(J
-dU#R>3IT%%]pa7$0fLX0TmP1TdtE]b[T2Y#ViP5b>,*[YXj(`6P<*BN\R*eZUnT.gTmP2#HL&
-fVk,Y>$<G[[lI>g#&&/q`hDb[nWOmY8aOd=Z[(_s$d7oSf.+);kOg[8J(f(JP#bJ(;e]f]nL8
-g-b>l&U]]afl!brii`JgA0El[^3h^`0R;6_KXn>bm04pH9%Dr8*HJT!&Vek+I?X!l\*mF1!H5
-<<7VG:0iX)P@`crF@q-dLWT.u\a_[sm48B(oI,[=9cLd]MA'_<Y:Gk`-)iYl-[CTT^B9laH2>
-(#mc!PM`CoVp@kp+2kB;u[>0\X._]*$m]&\9q@;mr,i5J+Y]#I8EXqGi;u#bG6&8o0uss3D-I
-a_f,Q<>J68U#233G?p$3W\TOWgKoYLr(+!CQ0r`:TDQ;4d#TH_1Ge@2DgeD$25f`YA>OKQ+U-
-)LgPgrX%Bn!eE](U/a.lK,3gr[)%H%^KR8Rs%o$Jlu:E?oYV:fp]b.P.H$HK&ES'g0ACJB<$@
-=D*Gc2b5snC5alRI3schH=c,*E9lI+m3^3/o#UYj+^9I1tGNRK]"lg,d+VBZr>$:%rLlB8oDN
-uC2%bUp182q.$YAW`g+T#B:"?/AqoJ4"Rnup6Fm^TeW"nd76afscAEGf`6Oc$V:Ej\Y.C<7gS
-E>p"d*E:oMF*&fVfsOWAmdQ2ELf*Wj[mMlZk6uTf,;UC/aQXa>o0A<,6#Vm+Fk.ltF02FD^$G
-45!\pP6/"+HEFSMCg6:kTk=MZO'BR/[]O`(UQO,Yg:!qLL$NPuIU#G'ngV,/Ngh<+cPO^H^eG
-A?/Gg!uPp^f![1Vu.NCiI,`f6\<c7V`<-Rl!24#5RAo;k=`N3Rt61#%5N16#\rUrlZuDYf5JJ
-5/53h$4nNA@6:@)6".YGc"7P-n?X&.He`D9s&Rt2U-?9NA>:lf<Ip0KWb:H&4u7Ppi5%PfX>:
-#gY,A;&*73Rp6@E@_9nM)cR-jtT98FhE9hASSb'9R/sDI*.XiV$_7W]UBA/Fh&QVoEAN'.egq
-r'r.f\F]X7cO7JdJuD3=pC!'@s/5bdKrC.2P<PbfT!E%j$.BJo-]<PC$K>,S:s1LbtpG9_%38
-nkNe?R-#XW_Sj65UjcLo*3IeVm'LW)7q:l/LROKWaR$@U.bM2d*@`p06I!TY<F/[*mVK/>8s`
-ZUD9OP9D1(%dg6(&H?'>L;]11,%Ise2oW/4mUVR;plW<FOb\uh!55]41/hWWDS1N=K&PTq0nG
-(Sp5dQ9%mq;S;$qTd=9%R++1T;77tl^>bj.sOV5]R2_eP.mo@c.TWQbmGndcM[+G#&_,WQaZE
-qB`+C8[e$YcYid&pV-0i:;Y#U+HCl[qHGe%5#IX6tk4<!A,E8*bj+k'XNW-,@f!K9%j0jS'Ao
-.(;Y4S@k&>q]J-Y5fH=V%h@!e&eG*-I744>j]GQ>bK^EDs4US/uD'Lhld2d\Df&%Oq45&8=pq
-,r'Ms7`$";<LK\e/D_ldF@qaUAid*7XAc??_5s,+0U@uO+V&s:s&#WGfbi8.L<tiS\f"eM*F/
-mi9&a=8c+6&hbm;0s<%k.trqQEM44&_(TV`7%o`d'B9],PQ)K"6tD%LV\jGZXCWC=FIleV9HB
-ef$;3n`!0Ws*OkmQ6W\TsI=jK^9EZDBEZfCk=j00S?Yh)V",P=-mQ_HPaI6]GQ#!'+)oU3CZ4
-MPSHP93/WZ]ENdqe>2nJT\-u-',G]?Y$hPCdBl:"@o=_%6UfO'e*DLhr([O.E0_*s%(D4[DdC
-^Z+HC1#HDKP?Vi2R0FSD%^>r'-@DJGj7M%r)kG)NIU=2`ZB+l'>NF_%4BLE;t+7Z)_[2<:PKJ
-;O*3j;*2LA;T,!R[bE8Z$*D?2o0+".c.$H'FXB_pKnW__0K20gV0;JoBf9%''TtF\/6'XX0)r
-o2I1Sepj-J\&/LDh0;OH_dLXIFG_kk/\Z(7Tb%U$QYHmGPin'^[D;GK*V].<:u4W<'uXQtV01
-t-N7Bn=l?Jku3(cWo%0Qdn`sT\A3j:RPDL[@1?7Oiu?"'M8(FB$rfp7>Ab&Kq\nA8D^XDg<Gd
-MEl3[.H4Dd_6b0XH23Kdn&k"b(^;E`U3_u_6]tg=R"H=;$eI<,D0djC=acAYZ3SS'\eWdIsQe
-Hg<Q!JZ:2L`6T2dDm;Z1qpADO1`UQkIS[U)Vp0&/3`.^ZjZX5+TNMf!NpF]u&a>crai!89\$C
-`E_OEAiJ.;PIfNOWO,7ZDe_oW%_::G[]Y'p9BDe1?tmtW<AGUaer&Xkk/*fI3gr'6A(ZBaF)/
-3SX#4\Dnm/15dcL%A@+j:?.RO6ncF_K(3=,K?(.`NFBVl[,HlZ[OB_*@D:'PkX^)qOY*bi*-+
-T?d!eG$5KlLIA*3&e7=>K^(Pf2F-]]0k=3ekY$D3<0$Zzzzzzz!.P'tZN\m%k=)"!IeX"q%'b
-JY2XiC5>6_KdLG;/5!8N<Zg;)/K<*iaRqQ&@kn&"IgHN9E<;&e%"Od;YXCsT0R%c3.4912^$r
-/o_9^gn'06#GOWpudI_:`FX9?=*bK!tWBX#&47$LTPqLF4.XSg;)Meer2#:/uZ#cOkBg:zzzz
-zzz!5O4!r)T+fDe`E-QhnsUfH^eQ:X*>5rMl?*66L=WccpS;Ag@3mgSh;RhGV,Pqaa+RitiU%
-=6***r1JYq?3"&2Z=b4b@E\KdWf:paD(i])9t5]I6#N9<0#"*^FWX3O9BTh[>,&J#2J>CH"\g
-RjE85NsH!Ys'mh\F\SNLeMppA-Ngjo?._Hk@]3Gu5Fe^S_95&;l_"f1h1qobh"f.s6^_'5rYA
-!L<n-:gJk\Kl;E%.d\am7lL(TX$C)i(44J))m=.%b?[[rmt=d9;e\!r4u]5?h?(?hS>5bmqIM
-sWY^8dbo'+AM*=<t0J`sAI0[dB`r.I+LGNHseE1nsR\+>J$)q=e`[/aaGrK$l?4bji\YqF&e[
-E]I4=@+fFjdglO*?aRA3PrZ+c6k=l:FFE2CRurUsID^>u9&F\_bf=WmuQaYcR(-gG4!`OntIO
-H-f:1bmt]#o/Va/&7HBCDt(Fs55JTL/@b.k%CLV&QESTLrIE8/0?YkjFe2+=W9k&hh@c7XQJ)
-<=z!!%Pa#(]#:h<Aj0fIHgXmnS?4zzzzzzzzk2;l%>kC:ok'!R3N\@o*a3K`.31abqg/G0^0i
-!+,(4"=]I7Ej_Z?)(*lT31oW3b.mPO?^il`Fbp()=qq;H)6QI3AMto&Dq/VUnP5I=,qh<NshZ
-,W5-36.>7Z/O_\=-1crWYZWT*&nZH,]<1QFlV(ID[l^SaOS@rj/s_=15?MdE0g+_WY45Y0X!a
-s-f>aT9-<QS?al^`0.t;:(7C>j.O_ifM6\K)aO4R@)C@8/eB%j#X+G\j0$%3uc0/Lr:AnJWQ2
-UVbm5)%]JqUfHWn7hThB9nZ`E+eoekIOE8(4Js?e.sg'.6Hp2l0mC5RRk[ZStt\9A\XInDipK
-T3o53TD5;qp2&6/b%u]uZ5Ecab&c)S]iV-cn?:5h"-KLYQV'b.6[>!dh-[pH$d@D.T$]tRLS8
-"uSVT9g`L(PtlV6\.0/I`[fc95$/PcJVY#a,GTT3,BBbQo7/rVaTqhu9>,+47>KmDj(9ep+9c
-3oiAi#UZD\gI?t%XDB*'Nep/#M\rN>/I%J77W#;ZGaicn,RVb[>qgULHmHO]Oie>dDaA5(:-P
-":X.XG(9McZGr8oQh=9A4s)pJjE"?CpZ'Bdm]Q&1g?W&E7YO?S5k<gV@&r4YZJ,8\kLop40TU
-pb*mWQHHl*B1]ge&Wn2&%+_=bYaio2P"?Wa[TSIGRAV9#aa&\>9Q&7ks#P4Y-sen:<q_XWg[.
-XfWh515sk'N5*B8ZD5(#'[$[9@-G`g8ZYF!jgO-DcR\W4!`bjjK[G>,(F\R<]7F5u&`AttKH1
-iI5ghI+Wm%hAsPPK&4?Q8NU;.S#N4GH?t5P\*pn/6peE2"NNBKlADS>be+V\`,nfFR2A)5;;9
-`64GrH1g<+Fd/q'kHp(dlYXU]8$eYPCPc,,0DZsO*h;kt96P/mcRA[7jCrJ&XJe<FjX\p-T*<
-a<\0U'FN8X]^KHG*<Dp$gYc5k%:!!'37p@SW5V34PfaHs/^\]l#>?=VV8Kpgl`/tIl[jMGgS\
-f\;&hkn=rLiMFXhh@>nUl^Ws:F^C+K$h6Y[;n13(sQBo!]<3r\RdFl1r4%CQV7>F5ne]#3.q$
-XiUC\El.9;N;,2*[2p2<Sgi>33;8r<RccVur;JjmW'q$22$MU[PVR`Y6H:bk7>&B[c&k6X)2S
-toTlb1r.?t*M4ZpeO<XjOC"<cXqhSu:S+NK^)2<f6.YAkhhXQ4gn-J`\L8EP*Xa>\iIXCst'(
-\e`#-]B$_[mWqq._s(2;j9O2j?KR1DY.@[RF*>==DW;-i`#eT_\P$<sanRprc!;j5jME5\QL=
-#1#:!skm1h(Fp;(HG19T*#c"&XlY8(=\P"S%5(O_)bLq?h7/G2)slpB+jPr$gu/DJn%+M9!T@
-TFarB-"Y^X^r+nE[FBIQm-mFe02#X=:VeZ4+DZF3/8cX#W$3g]=cK'7)sG@#_PR7?MH2mD,G.
-,Z09>l32Q6a/shrtielG;ercV&N2hkN`#BmMJ`SX7ZR*#8_(*#E_e2h`G)K-;17,dE[EC)`2P
-p5<+Vlj]N,6*R.LJA7VCST^?F3BF>S]ai)5i]%iZ;2:o-P#2JrJDSL7(u72V[U2rOCO2gK@A-
-Or>]'Fe,3aY.*Jrbc?_L^-um&5$%2fJk>"o9+G'':)Q1/,1E3dK]CJ2EQ5N(8lpaX;keiQXtj
-.?%YSi07<ohN)q0gK)q,--Q?,\=957[o&4oZd3Aeb+Fs#JY0D]WXI<,9P34.AH*4<+/+f_1JI
-RQPa>;R4c(2Zc57"4].L5_oBMFg!p&sGjTa?RAL-'Om]>?5BcLL4t(g0srC)QGJ%+N&UW3u=i
-uK9;$Tfh<TY;>?tJ;Phd;+LGt,"XeNR;FH]^\m(1IV=BLt-5KEOpKD%[9'dY92nfEiOPfp3X0
-#3tbO<9*.Sj-iH\maS].Za%Jl=h5;IA/Q!!!#ec<W)[\7^jmVNos8]%HG;0ea1od;?Ua3aN]<
-2.(s;EQueQSMCCei2tLPCSWbm&+7Z$QUIYD\kT[?j0i_OZI^GMCJ@>8"=[XtXh^)79m.rl]cJ
-ME#m;m4^B#^FbXm]=OR,@>\Ki@Z>;YRg$np2tY+\B2%GB`DaMaZ#AX!Zf@j@_ja?3f1b^c7"U
-,>$oOpH)qcb9Z0F.RC*2&'c#9EFZT(ERo9#L/]58&V,0)1uM4"eq.SW3>O2EULdWSPkBaOTpj
-e1MR<p\PkLa;&SXY$dlq?F^AoVc=433/1gF:2,kg,08YJea-4NA`@fh%Z=CK"o!U-10]/)6`k
-1/*a>'(./XJkebA*q^KQ6$0'PXAb5bE^cA*;H&`4]Z&@:AR:#T=2#J&EV1;>6On"FgeXeTSD0
-;kUS6QUb:J0fMAuzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
-zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!%PaQ!XMRNs,MZiX9K':ID,K/&CRu!maL%:I
-WgkX#n?>]r4t9/4!e7^*^tp-@S*,SNiBHrlss*l3r[B"gu$&:tlt_[bH%F[B8'HY3VahGJU;]
-dU+J-Q)dZp%J"@!`5.1:pc0pW[:PJWir@<eo7-f9kF[mp6Mg:\^*9te(R<58\qA_n"D?IM/\$
-gAA_!n4krPos>nZM=X-IZEWp63k=oG\O`3"D86)[no4He"[YG)skTll*cfZq@GI)Tj$(?46E(
-2A1485H8In4!&QUu&]5@`X?KW,5[OQ>+iaUUKd?T0F,,='J`\1'neWC9a&Sf#d+l*Rsd@P^?:
-W[V])gZ9:"0LYB2qVj'YcgSE(kmgE\LX-22Fh);/h/[]>udULDmUo&@%C0N@B69oC+_FRJ6P#
->D!#AN(M8.@qo>-3PZ.fBeU<'QZ%f[rhi@;C2;lMOTZa(eO:Pg6im<ElATVZ);R'jFMh\e9&9
-2omt30*Keur@.B7_b-An<M`l()4<oME`7#-@T0_[(b)cBNRa9/edGubeh_-scoJ@FbI6t'^7<
-n^q!GgmgH/9t8VaH)[S;4nmC929.O@!\A#Y,=<6KFIji$N=HEgI<P6>[UZscUS;Ca[P2Bt<,=
-&@ZFrtYRN[_3DcF&HS>](M^s6*t+"rDK3PcVEmcAkX*lU,G/8ZSR5OCF5Z)<GS('5H8(IQuse
-D`O<&cKeHoi"q>D'>;7l\*EEP.Am;@4VRFnc%EV"G:$@tue3)7+%(^R.<GU@U.S+/H.ciPo-T
-3-,l%Nu$GKP!TU!d6!9$J""dYq^KSR-&7CgJl7XCftJ9/YA1K%d$f>Zn>n<^=<7KA,1>E_fjj
-3]/"EQ;((GLM]e'?211P#r4'-Wmt].(dibcD,>8IG"qMgkG2.V6EGSYTXO=885Ir2KrmCYeuB
-[to3uiT$:acRpXI6u_nQSU-Kb)WZh!S0H_6S$Kn.mk5>^)STXNU"9=<mMN;:'E@c7%u%mMG45
-8C</='r*orN^V%"Tt>$e-;MbfA"qdn-AGI<[LI4~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 621 510
-%%EOF
diff --git a/doc/users_guide/figures/cups_config_printer.eps b/doc/users_guide/figures/cups_config_printer.eps
deleted file mode 100644
index 8d2626d..0000000
--- a/doc/users_guide/figures/cups_config_printer.eps
+++ /dev/null
@@ -1,675 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_config_printer.eps)
-%%CreationDate: (Sun Feb 29 19:55:36 2004)
-%%BoundingBox: 0 0 618 994
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 618 994
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-619 995
-12.000000
-619 995
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-e7e7e7
-6f6f6f
-ededda
-eeeeee
-808080
-547098
-800000
-9a9a9a
-000080
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPUl#ri5eolasZM/Q453LQnb/ED4V!]E#Ij^L;4SG_cGh%"of!#_\R8n5o,6U[n8RP3+If
-hsR%KHjMTc0R)WW=<:)B]*]!@"0T+Mq':8bfXihgej#^2@,?H*b,&$'(LIg323R0FQ*O$t!^r
-eTT2q-0MM0AQ_MIonD)oq>Cd(R%#h1l"H<A-$C3!.i1l3`r&'@_?gYXG&:(%B/Y7O0O9g+?''
-3:Ac&.O!&NS51Ip2i&l#-9Beb3nRL@lc!-=/^<9r209og18m>Eqc_3UiB^g%#M-K^p59jCcSF
-fFLQFLqRR[Fa_r^mEi/>s4m)ZeS13&n!=o>)fn(m[6**iWQsXQ6la@<NMjqdFEo;<jeTc"4_#
-'S]LT9CK_+m`WV'qjsDcce`m>%dV!(=`0VL!WA_>jQ8#6\4]?qj0>PGXdf3I&=\t*:6$5'Zlo
-!h_"Ds-YH0M_QfJWtYNE.gcZGE*FXqoP54c<DnQs2j6K']LF2W?MFcUC2/'S'm(5MK!DbQ_#K
-6pNW6#Z(sA!S%/^:^n!+rVIN6&siN6+F"lBG[!5EJo1+mHI\>\W+O0"-RHb+mn.P'Z"a]Okk=
-Q@dO-=E2lta%M`"#4V,)+I*5]%noLVUt%',9A19,bBmS8G9<]iL"Q)GJ4Laf@W2U5%Ohjk$PC
-K9b&rV?&K=-/6;,'H+K/&!KOjU!a7;G<sV@-NlGWG5G@s0MaO?XJ<VMJDu$RA<E^Q3+GgqPs=
-nkd@>4b_n#:A`8%R,-!f9B[*PW?S?n8rqs2$CTePUVE^27IS)*e+>WUoSEm1H[GjiRZ=Ym@_a
-nXtjtF9BjqPETRI]aA7fmPbf9WH0NbZd#[B61coh3abbP^FR=&DSt<(D@3oENRO>W)OZLJb2M
-qTmdmcV%hZR]6fsrXhqT)a9i)ST0s?'u&^[WQ0mgC%Xs&5ik,'g.S,KQje+gBi0bq1I"Pj^)^
-("hO\ofmKD8+WMmhRo@A$[r7Pqb\7G],GfS=+V_;ggVk2c'$:)86YM/`[;=2A'gK"-CIr%f:.
-c1,(CD*^?2'+c-EeX;KXgg5&TJ%s%[c6C;[1R2O\IGmp\,K)[RJf^fq[J'39aA)cBj]%sOK/2
-'])T0\0<%B?@nj!4;N2DY@p;:-S\B'd9f&g:\S5Ef1`Oot<(e;#oGM<@K'l#1Wpp.k&?^Eriq
-4p(JA/[0gVd%=[)A#mXCMc)3j3sRMC4hcrlNpjg5kMs5Er2H<m.FR$8TWF;n\D(7+@:/,dOKJ
-hY?]T7?YW#TUML?b)<E"l9nn&U,D4I]>&J(B#6-e<irr]rFc/nbDU*)jb2R$5d_]#Kg0ZqqA!
-3/$RlN$NQ3gmf6G4(p9dO-TLq)$d%T1.llo-F*SJ6FbjU/>#\36pn[)6VkIq_^l4L_g-_E\($
-\LfCXqg2ga1Ok#<V>&<kHQ3>5>EH0Cje[elE$S!\CGOc7]0p/.MKBr+C,YX):e`Q^]*5pc[Bd
-HUfCp:=uR83C<^C=f61&82c1#;^:7rcU1O/.9=@)QeZ+&*DlTkGX/9q#`F1.mM[X@Nf7*Hn7E
-O+[ZcTST<j\il19IFBY>.^-W$WR(J^q1?\Itj,>+r*I9uXL.NN2sQMjL+(;(YhnSMgG+q/bTF
-lVDS!NP!21'<W(Z0-/SX/^Qa?Bj+LI]?LLm;@>]!bDMau?MDC]ci*5H-CaekoSRCIW"p;5Nd/
-6;MrN,\e\%j3;`3O&1sHf/qj3>Ajpkt9g(L$A6tqoG;+@rHV&FQ[co6[D"fUnDm\NN]n7tq(r
-aXl>.Y=.Oq!!W:"09,!XaaWY>r?t$+u9k>URD_<W^U,_)A(I$H`38$[N<u19(=7YDS2_;(QT=
-aW`=[N];Mh*FlNX=`BPphJ+;&cJGN\+I;.A@AVjWa[^Bh<-p_hGE`2:M_dLO>"FFK5;^&(cDO
-MKU7#aK>=(C2(0&&E8@KX9kc)Y#p:TUcZZ&?OE@6p>u17/NMVLWFska^@;j18OG2CWBF0^CG/
-2,Wulgu$72HX6$"E38]*g9,TK,LsFZ!Hu*#(9$,75hlEP]Fqq;#;Y*:jm6?u^LF@8(cNMkT6S
-`T$d`n#gaup5G7D_j8H19Gqc7ntW-8'EhgaHm<3&RX7p4hiT'Xl/.!KO3>q>WTAa`[5]Ms*52
-F+[XE//2JZ#=t5s7!fNUKU[Apq;MFC"8C@5[W#@^YPIt[64**P+C>AVR>2s?ft/Y;7USWh0p"
-rV8Nu]WG-(sRdYgAguL?T.=@KpI#4fcpqE3.<Bt;&rrR::5d`5p184#,7/=`#4+L>0f(p\e(%
-<0>$,X$[oLVWZJKO&,rM/a"=o+qi=MJTY-+H-#&08R!4N%c25n4<)UV3W)?@%AlXpAt<e\.^7
-s6nN=^6d\"O=S`uo2EsVs,CdX<M17D7!bWCBA4f2):d095W-oEnj`ZKQhC,l<(jCreNaerRmB
-7ns))-(Hg)OP\ME/b>5KdBmh!R*&qHC+K$_s!!S\nM%%#6LfIl(=nnXBQHd][&)OLu1g@*qV:
-^tVV<!,NZe`?1lTc0:5W!8%hMWm<?d]+<Oqu0>\/9iS#O&,brs"X#!S1`.J<9s8E:aiZ-_hWL
-7psebiqf<3Ib$1'E[XZ,^C7f>dm,M%Be#r5-KmYP<qtrGCs%Df6=HM]sWZ;uc9(&#=c.C2;4)
-j'geK12Q9"!REIX.kqdP=Z;;mNC^;O*WhZGV762#7.oU=pLb+7)4%k,CtPp757OZPLYHALs$k
-I7W[GM('ri4I.GVKP(-.$IFRhCgUK5Wd2e`WdQqM5!RQ'o'93hR)1<lbW\JWXO+_`k0e8(5*k
-&>YT-QNkB^,!8JRj>KrUX`FM1AT"-dDp"X%0O_QsfFM:[Pu%o8*uIKB;E/n>r4\TuQ0[*Og(G
-V#[fa5c]_/X(Yh-(>-D]&(g/s6Xhe/Y7e-s,5o8S",kq>$5nmBO$2teb%H;K=[M1@Q(=X=QU7
-SAtA"`e%o=h4k4j,Ocuubhl/"Vh?;4u%2WD7^$o=?5jGO4oN936]rB2+@Ma?fht;1Bm`YQbPq
-Mp_49mCn[3OtHn.QM[.)m5OUK]D%%f4noq<)$14+80'>&W+J4$BQHaK[/9i,*=fin4#YH20j'
-$s2`P;B/L'<*]a3fTp&lm[G*%'&SVVlKrVR+5Okm_lkqgM@Y/@:7oKS9]n5ZZ".^R;)MM6QV@
-P7'&YiljKE,.o>If+7OBm1&CYq#ai->bX2`=g5M*eriE5`CfR?4!qY@'7_>V#LeUmF>VESak2
-q]uK@il0W5PVbX26McEaE3.^V?<8ZldA;2:NnHj2)>!*8(P[DUdS*2WS0ptZ_OGP;>`ZD\siY
-C.P;P-0bc;:&onegPB_@^^LU59<2-D%oC9MqoK-+Dj=9\!n@+bLFSmFdIi#pm:DA_XIN@:;7F
-K_UG^4&&6laaTp+-`RN!(IZG32*e>uor7o7C7iU>D^"?Q@VW3r7[oF>BgSr96oQZ7Dp7&`b.D
-aZ$7%hZc:liZR_lEnBu(3SWod_kp=*?O_A647V`O8#C>?&$j>YaZ?Rqfc7B*g,OR?#Kj6PSbf
-93ml?fZ[,O+Nhm6,7`&rp?o0YG@Zt^DXg3Y8B.oT;>m#CkgnFGnDmZWt-c9cLbmk8F!q>SL2T
-8>V*#_dYlBG)E^RJ>iSn>5(1PCcFP-GGDW\2o>4`)l+>phVF9Jk.B>f4e6"9:mCAp'"h"W"ZS
-&&laQK^iJW)3_F"Pr=`s9/9_"L\JL%6f-W.oGDbsD*tsd\;&hU$lfqmJ-^,9jfU>b"R=FpkQo
-p`XlM)DhS\:77Q=?7tnOqBtCs(_&_YD\P20Do"?_T]2MQ:9#?9(hkactX77o`5h6m+RLHJ;<r
-'=,<PW"pK)UX8BR9/0FR'(:ON,.FRCPD^EK*rOuqO/Y+58(HAe]6Gj[!HS"2WN/UE/g?j1;'.
-n:7Ikt`<>rEB8F+E*S`H)#52?S]!m`u+2^nn@eX$Y^^0O]uoK"aMfabU%QAT,=<PtfV-=m4(<
-80CdA<(ufFhq^s+q@h(MC2_73a?2`3kOb2!q[\M&sIe7=7WBU<Mb'O[_u_8R;<Zre^_mO=`H1
-io>APGP7l'OQI5EE[r[h#RDMl=T^:b<0j/b8M2.#cB\?m91<3IE2W^jsW'[.\oQ8Im?5Y"]9W
-#I#0<Rnj;;jJMB4gHG=7^CFl4[q?G4Xjud]Y;$djhif2Q7=;0"ac'h5aZXHIf]N[V[r@@@>5n
-hOfBS>ABdP55Z]$,4Feq_dq';$N;@c/"'*Qm4ep.gq.>S4VrDV5=Kd(FL?uj?Of+cmpO:[9O^
-,Rif&<>'6(;t[p'4(=b%RcD0,4u=p:7f7+]ISEi0Bo)P<7,ia;Marma1kLZ7]!aj5hs`PaCm&
-($ff\bV&^U-\4j61%e=2`@_[7=Kp76nPV;Ye/Faf6V1/9cX(<LL<d;"[B@<<f%K'kG>\UP(Ue
-R^(/KDRp>,iCN#1YkZP'!F8oiR\?p)CXP2'gbK6@GprJ<PU9\eo=n-Yh<EE*'*tR>H/.6O[&)
-tLJ7)%O.6/s?.I'WO5/p^/K3FQm1\sh,Bhp3!fm8UifnOop["FR\Qa_+q`Y8neXd6F%\;jsY^
-8kGFl'=:bE&:5]fCc8<8rN&1o?/a]gWjjILh!->)PO5)SBI,jacSF.@/X[F;ifsqjAmPO;E=s
-/ZehR&sbW4;,;ZS5h]j&<j19m]Z6Z)L(*o4!6(G*i=CY=QN#uj7@8gc4u+;`S<B0:S2(o,6Ni
-q**sC+AMaGm?qh-i\LlG0kFi5LiK*K;Y/_alaaj$Usi4;N@_IG2S7klh>RtHHWl6Gq4op"#$[
-r$`[biWg-$]f`][FQjXZ^Wg+oK*-kfYUKVb!R42Xk[P$d?A[c2V<+.K/oB\)4#>B28V"3[!1&
-KuHn;`7HUC8@pPIE4Sg?b?)D;%]>5H;C%;=,!.-/-0PD50X)YP=#o_aQGcQoMU29+dZo\a`kQ
-^?W*%WHQWIS3HR613krH`%Sic]I>C23m$V9R]03V-j#i>lMXh#!Lf3*X$pLce^i:->Z?'2U>"
-jNdN;p7e_UWH%bsI[o="If*lH",gjaBNm@mgp-_$FU&s"F6Kr]FN8[ShFEqs/3!fDuZW`>@rJ
-9]Z!?VM88J%CRj/f-6DDn9f[b,ppp</\'1]G'kOI-Ni:$DYk+Me_$&53J^o5e%K#%!>b]JoIn
-d\>=1==3^*cQ"p]io$b#LNpg..iLGjAro`c]!f(HAIdk"Ah?t.M0'5N!qO^J^'g7CB`Gn$+IB
-!Xb]40HgC2f(I^N>+p4c!kD0O?p*NjA?Tr#luM.XbHUQFm5E/emi`:W5E!JZI5tU81c[<16nE
-`c*#1h&J6h\JUH'lgU7pos8D&?#@#&[Ron-0:N`lb`9;0W^"*;G*DV^LIY+K*;us`q^"%J^'9
-k1M``ViUYU^#D;ghmU%QP"X[RH\FM)^"ZC`B3f^BmF+h2gc<4eBM?WZ>!%qBthcSD(4jo858-
-DR$1X'PCr7@tMrJmLmBiU`4GJHh`@Fko\l!p!W=om&XAVUA<W`V`"s4IQJB>M]=<\^/ta]Ee;
-9djj1>ljK0D`NP0;piSH4*>P^aFbqW*?.<6GZbFP[Bk*0jT&cW7$g?kj=-/^>:0d1e[u[8TSV
-'g@SHsM38Y/Cmd,%L-lh88mGcq"`TLlOHBEG]@Vn?j>lhT/=/N8_s\Z(J3;SEE\,j'-YY^W*;
-QT)U8%4&Ub,9FeB\[Rcnp3,kji`kM'm:>eI&i_td<GG1Y8oIUD8:S%_bR;^AEeANUVCH&QW$6
-<V(H$L3Ec5!_45RJn$Ru`Q/'TNs$6VPerW/#l$hs0c>TPnN'C6[%_6?e`U0?cL\-.<Nb0#?sA
-[]rb2G3ADErL7.nQsTsj2TD.VD)*)NZ&P<Wsns8FDdY="jPpJl;Fb6p&0*<m]ZX2?,<MCG8s!
-:B$\.Hk=rPN&DG[<DVB70PB%/I0U&AilOgf?8]rhL[En<,E8mnOI0Z[Y[b03M(VZA<.qK\6[k
-u'`-N;r+c:Y]BSZM84].H:3=n6;K[0`CNPZ[XLIUgj@1/GUW(t!I3CVcucS`2e=931G`>q;Q%
-B"Gm(9eLcf-dn7PF8^OI?M4i5kJV:)>?!+u/<`ru]e#4n0N/.PC'RkoC=pd;dlC&r3%&9O`[Q
-9&>UXU5_a@W)r^85C=1:iH[OQ(U-@%bJ2T`&^Dt*,T/\+IOZ:U-WXeBo_Y(!D&k+eJ.,.1?K>
-=D5!pi0W8C8EC9\SUh?L1gW.<=Q&mHA9,29KRKeZ$.;q8*WR/P**!7KXYg[gcR*T^-BN,[5cW
-Pkmb_h3ORkS:FbP!e,24-ert1GSQn>VPN+ROb#6j<Uh<2C0uK6GZ!m*`FM;.B=\PHQF3Ajo<R
-P3e,M"C7ofZ"jf@6L34LOb=e?o7h2V:u+o+bt8+rS/ELSj*QdTVL<-:1lHeRW>L(M;R4BKDf_
-928EF94d<*jR(a1!tBo2q:p:$Y0;AN=$]d(BAsoLq7=QZU6es4\+Y=>G^hlc0BeaG=)WAR"7a
-+m>B8t6]:*HnKfiT5@"^9mjnsKh?&gs:NDL(7.=c/`#cIr`J80T?W!8'.C4HSg#)IeEJ-`(XL
-k'5j#cIr`J80T?W!8'.C4HSg#)IeEJ-`(XLk'5j#cIr`BN6YLp.p']]HN^*3<1I^W)c5B0V12
-QC/GD>JalF0)?='MW5bJKR#j5VI(,npnu[1K*grG^cN,/cT5)):Sla..(<fp-[m5C!X&]nU'<
-7"`;KDj-Bi.Sg5W(5-NN1YQ5>%jYVP%'Lok8)Ik$8;D^c7c^1U]P+0G0;ER:ji'#1^M6)H?=f
-R&?@%i@K4_M)bP=i(HIg#cIr`J80T?W!8'.C4HSg#)IeEJ-`(XLk'5j#cIr`J80T?W!8'.C4H
-Sg#)IeEJ-`(XLk'5j#cIr`J80T?W!8&krQ0'$b'lQGnX$8Xd@*Jh]\u)0M1/khs7$3)C&N%C4
-CPpd@GWN#R`QIK@Vofh<e]5W=BFd<R`6H4WM_JN-"jO7Prd@[NSP65'H'`rUg!"h-%B+b(Jt*
-,Ob7!hCLuP`a"q>=3@atBh1f#L-!)EopN,:o/q_IU<6L)8eX1R?Op.)TaZcsbrTBJTd2M\7nL
-R^F4ii=+l5>4h\^IWam"9bo5p[4qft&26mAdQW\W/.l=_/IeJq_qbT;&H>/Eg)8McA/:T3\nt
-IIKTt3C:,QAFee3rA5CEC?qS,"^36QWu%E[386_>XW49CZ2jPQQ-;mZC9T9+g97QF]";%oB43
-S]/R!l\!`s@p)=naQ@C*fcLoulU>YhqN.jJ@`DN+@K7\r)cJOSuBgj/a)cROK\J;>LN]CV$pD
-E+a3ghm?b5W(e0<!,NR2*_:D"%5C35Qk$g6pNUp"B5Ik5W(e0<!,NR2*_:D"%5C35X^rRcN*T
-L]P:+&*3>3@W\'cWYXZX2[WJ+W3Z5*SdQ%MIAZ0?:k814d@B(oM>Hh]d:lT2e8PALfaH%dER^
-C:?NBoEu@u+koBdg<\)JEb-ePopdk"h8@qXr:K#kD@9e[/,t3BNKL`W=>;;,,$;kHON3YQcqJf
-%"N80gmm,QqB4Vg-Wu)D/JNc"BdG;FZ!dMEpWn;"uNho!/Q/?J;?Lk_)3p8EgUT\%?.)&WZ#+
-EUF:nu#1pWrat]p42)(D<S8,8;%&.P?5</p95W(e0<!,NR2*_:D"%5C35Qk$g6pNUp"B5Ik5W
-(e0<!,O)9""]HZh,lR#cMn_(tuSd)cM`@K,@%+!)W&(T\9C=g-%^/!C4&>J8,1:CA._Y"p!3A
-!NHT:=k,oY++4q6T(SRdWD;")p/of/A+EE:S2S3XW\OD/:Im$H:MP,lLT8A2,_gT-\o8&-#-a
-n</3<HFX(Kdnfiec_$b&rL!/mjhT#;LFJ+C!ol]mu\C&Q-FU\@51e>8U\AQN>e6f$1d@Mr,a5
-SgAbp;E;$Y]*JXW9-*AqG7&iF"<Y[X?4?d[6)K,[5+kQodj(eDcu^2N?qQiO^"c--[F4lmSM/
-(Y]!eVW\$LX/Po_-Mc=2[C8$;3OL/'iC:?-"2.j*"6FHf'Ea?phbiQ0jG%Qo:^"Z^QF7TVn$V
-E'h<dX&I1C^@D+htVmGFUhO/]\g.G#r"D>(<hVXm`Bl'MpAoZ;^-3TN]W+[<mF="+Y.\!7_8R
-ea<I<%:E\G0l!$2jV>$Pe]:I;CAlhMC*7/^)B]*]!@"0T+9JPD,+ohs!ic8FTGepSWW=<:)B]
-*]!@"0T+9JPD,+ohs@T09Y0Q+_D/:GHl!7fZEWkL*p1"DT8!A3X6AgUJ]0i2^ATN]W+[1reo(
-'CSu$rgFc:i-mu5BX#$D`YbAWE/>Nc"*210;spLmIorm)qFlC85lj@/2iu4IP6n&qgP0(mJ33
-&e:h,*2N@g<2)2:Lb^42J@QI)W<,JJ&<bA1s=%qkm7%*:g1`G'j*cRcb#GlY*Ng]DPb!<@t:,
-O[T[9%,d,LmY&c<4n$Jj]k%iQ7]f2<T*S2*^DJ!S+'b)]qLk^0Hse<%In\4D,$YZG2?nR[Z&C
-:i/7fJI5@R=_=@2,1)cK#1`R5RqaKs?5#[F,R;b"6FDtM[<hR;:i-oD1#T3@H'NktS,uVF@]k
-j?H\dWm1Zr+.X'\Vkot&lRLJ>iZ[4/oIJt.C,.gE"*##rb`W4$0.g1!=TS:PE*#-'6Z<6L\hW
-CGd7r3@l%`.tQKeWrDj:p#FGW<RAIWW=<:)B]*]!@"0T+9JPD,+ohs@V_u,s*,R#O6<A2r;^Y
-,[HB99.3RC#CeD*b`gc\uqTmU#h`=t>m4QlGg>$L8[6$uVPbA4r82X23Jl=J)OT4';H4RI/G#
-WeuUe5=Ni>KMdb\TeW*sniEE%>86PB^B#2m;r$%t?g0hM4h3*Rte]9D_[&VXt;RGY]_R$$Za+
-?@C@1U"V7a\nYXU@d/<n1lndXR\42-8$sG$CIOS)7BHPYZX?P:URHZ9f+a-shqBn=:t,'<[m4
-r<@nsJ->5<J'9CK^*foTsY0pO[:;@U+io4CXqiCcRAZROGoe]=96Q>633GK+Gn239Cd%1iQj!
-"i$:&CI?.1B>*+YM.Db#O>liC.m_.XH>6;/Y-OY:55gXFH41@)62E=q$$(qQtf:W(9Eoq<"hE
-^5I6qc'[)(5A.$k_48f>7C6-IJeJaUtl9I5RcEsUndSUdXHD:/*l(Sik4XcMnp?Wbl4KHW[^n
-MT\MMY;21+B,mh4K%4Q@Wc]b>_?`;sN&fbq?gDeK17X<V&pocV[XL$q"!@BVrJGAsr`q/*7Y<
-b\J5L#6T/X!"i$:&2?^5\->E$%T<h>JWZ0a<J,'p']j;ai#3Fu3CYm9"pS"d;[p0d6'Q6E-c^
-`CW!8'.C4HSg#)IeEJ-`(XLk'5j#cIr`J80T?W!8'.C4M+7WV4)$Yk1e_$`K@1D!@]S(E6:ik
-oAIhK5,0%WoXXgb7(>X$D:SJ5degdC9%?7j\.;,0n"kGJ#MIE<a1U''+GVS`n5n+)lh/C<@sS
-?7TM7WaK2D\G*bqX]9h$$>GsGANN/8O$&p<B`N%T#5df9RqNS"iV&u*S7*Q&-KOe]/;djFkli
-u72jI<.B3>K`1g?a'aH-WBR0<R"0(@u1`U0>'Lo>IL6EDUKaR.F"j.o3RW[:&<8-M5to;lceU
-B'JDld\7GU/V:0pRG^LHDdj:@JeKr>C+KtP8uOY>S5]lS.U,]T[[#ecZd_YP-u14r-er@k)R.
-k26a`=:Kp,loB;MYklVkTNWqoE6!djLG!B(1#dPQ3G6+(id]*11seM76,XTGGe1JfYZT\:lGC
-,lCH1'=PY!iVD@)cM`5J>J=d>\m'@V(I75/Sn$:O>B]B&-:;]&ProJ!S%/^:^ms:eGp1X%1iQ
-j!"i$:&-:;]&ProJ!S%/^:^mu@.Fi%qhL4YEg'COBE<d+!An.jcOQ^l&X%3XulN4(\"B=[gW_
-EUqlN4(\"B=[gW_EUqlN4(\`)<TigG`KCE=2Q9<GPed,u2'G:i.BlMe^/L.HlObXaP!fei)p#
-"qi%*5Lmp1KFt5LGH:E;h)H%RS8(F2.BqWmQ<nd3bZiTcT[YW`RFfugh*a6Qs$?Hjon,q3%]X
-Z4;\2ZiFg:(HQ^QCM>G5k-7K_1QA3n`MN)L9L;OWB<E=:RS"tZUT(CHiS'j7JI-8^`]d%Zu$B
-!&5U_NgkVTc,@QWn)ZiJnVaY8>6*D7Ks2Y`"L2e@BnZ4&6,-T7B`cb*iHdm6,5&"dO^3@p.$D
-"g(hG%MT6W+J/I&nkQ7bY"B=[gW_EUqlN4(\"B=[gW_EUqlN4(\"B=[gW_EUqlN4(\`5YbDn*
-^"W/_)P:5fRV4239Uj%1iQj!"i$:&-:;]&ProJ!S%/^:^ms:eGp1X%1iQj!"i$:&-:;]&ProJ
-Ypn48)Rj)\Q9LNh!7eAcMr0ZOQtf:W?m7N)F\Ja",>]t9TN]W+[2aa4\HCB&#--bj<1A`9@i0
-=f<,SdP-K/A0aX,#g#hc*=a?d65@i.%G&[*#leIqi,Zh+mZPIb]@e`NV#(^>Yn2(UIFW=-13D
-(b[E@8N85!So,J\qAF.)(8do]V`0fT^,M-Dlu;9!fIj6_8CBfS==81@i0lIE\gan]3QJAJ](@
-iV;Kb3=X'BrEWXe&a[EP.@i,?KQ+Db4e@5\"1Z5+U!o:^>K"7J&j+1s0oGb]@FE>.%mADaoC+
-PB]_%P_^=Mn!$2+m_)@8Jk]2F.B/Sthth@b$(@_8aOd0OlEiTN]Yr%(lseqTW!aK&FLP37L5J
-7Y8leYjje.\38&<#s"qBR&2AEFE\+)<WT43!V>St&Pt&l<iB3]/s_5c[CL3R6+,LamIm'$C,l
-@GEX/W+$rkC^W0TM$NE`Ui9-;:ofTp8F$Nej^fT^+nB:p.c!ic8FTGepSWW=<:)B]*]!@"tLg
-@LBW&c?l[3o:I`[T%Spj-]tSc-<+bqe*QUYHRsWSboOq-.VE=%Bdt#L/bd[oL'Qh^kPh[Ua\8
-\P7%-#NMZAWgMBBfk<Q&#<ZRbTXNet4<;Ves8d2]`<BQ,iKmE9)s8;B\A*JEo1ttkZ&\bVJ7:
-Ag7i/RJa&sRp%;!le7m1lWQ_kX7J2B\=BLJ@C(WhB_k`cb>Y&\1qaWE.LU:c&RBA36ge=)^m=
-=ST!mdfMC$c[#s5(H^bi40"RLGI-o_Cmtm5L)X':ZQ[k<]01)@U`-s8PVnq.%:>+=R;JpX077
-EVel2b)!n@8_:^ms:eGp1eW]^I2S+3L1STD#!`i6CgY/)"oUY=.A#4#g0C.m_,XHfKZ/Y-7Q?
-A>GfFDep`R6idYchTAD2I2oD(JF38aGU@(P>XuioRAq+!65Z$)NmolM7BEFK5)ON'WN&(TGhM
-&Iat#qc-1NdBcpjde\&];ls#h]+sn^'j[6!#dX)-QA>3Z:<!-E"E3[;25IGZR%Fi2L!^Hlf"%
-3Pq%Bb90Pf$IQCLAFL:t=JB(e$Gi27Ni[:l\B^Y(=ERj&CYJ?k?lgprP65!ic8FTGepSWW=<:
-)B]*]!@"0T+9JPD,+ohs!ic8FTGeq^;l]fb/saf]eq%Q?[WLrHcGig&^Fk.R1BZ/a:i1*CRKf
-e:%91eA[CLj')Q5PQ:e_&BjsCblAD^PH>AqN3</bS9Xj*T\Q5hH`muKd^W_#9Sn1K%?`rrL_@
-mQjgUKOaKi>/H<9qJAQM/8DkjT*hu^F_,e)6'K*3W7hNGhtM<a-DJ)50?:iX(F9ue]>g$2.ld
-6eep>IrH5t"W0T[$W2:Y=l+Ld*;d(LtqbSkWZ;o-aTQSf/3jEKt/SB*%NJ4Bt_95BWmK/W\WQ
-$JI"&NiH1/Z;dFtZ\&$*G#Y9"1&B.L9$qP8^U)H)<kb1,;_/N\*C!J@btF"4bWhT\@V#X'3Wt
-i3NsEE[G/D7KCtZ#-)C1g>"qN%9/f9W2>,\F0dUOfGuN6qlR1Vea>.$Wm/bb<!,,_eGp1X%1i
-Qj!"i$:&-:;]&ProJ!S%/^:^ms:eGp1X%1iQj!"i$:&-:;]&Xu\c^2XN7Uqs]/2%41a`5YcG-
-!>V2EY>$K2c+?(TNX9ND%`LF2c+?(TNX9ND%`LF2c+?(nl/>+V)ES+UhXBD0o0nWo^UQ:=fS@
-2nP2hs=B^kcX`G&+&.E8,)`aq<>VDr4oS1?PX4F4-=>b1K3A"C6k$G#N88CR/QnFe4Q_e`m8Q
-9ccY.k$^OL8i3oCu_W!Z#som!/]`E[G;H@\n[*^\ues=+k<KPGN#kY1BD;/Mb#V;ZP?g-:cU\
-E<d,V"bg]`!gN@Z%K4Ms7$ak+/shbh(R/ge1\XYIQG2#!0o/+$L,>9W4B3=,mM=jl<9jag9`e
-;[#-(B!<9jag9`e;[#-(B!<9jag9`e;[#-(D7``0RN2gP$O5:bJdD'm`)g(\?q239Uj%1iQj!
-"i$:&-:;]&ProJ!S%/^:^ms:eGp1X%1iQj!"i$:&-:;]&ProJYpn3WDF)Q522ka)`5YcG-!>U
-QEY>$K2c+?(TNX9ND%`LF2c+?(TNX9ND%`LF2c+?(etZE0Ym`=(6-cQ$[>(pp!\eLXcE'IBVQ
-gO20Q'2%X@>)=XEuHTj^@?Inr7ORF(T9h7BZDQ)F1^C=da$=AC43X,ui'WeYm*GC90<YMd6Ug
-jign-Zbm;ee[,=MDA]i*B3(dr*MpPXp@'",(q1W;et\\1q8D<26-cQ+[FQ9$:b?<\VcqhhLMA
-iU2Utu^C,lCH\q+U[!7eZ3C6JYJ\q+U[YVF\TR=)_b9/VZ4O>35&%HIps"%5C35Qk$g6pNUp"
-B5Ik5W(e0<!,NR2*_:D"%5C35Qk$g6pNUp"B5IkCe?Pn:678.%>,<*YqaeKYD_j6c4*b%5de.
-RC)X$/2c*3Ne`I(9BqX285W'!MS"#@:C]@[FC5,T&bYSI>D/M+0c#j`R1c(`$<U1X)!.tq962
-mmhNWhQ)W7F<nF:Cf2p8Y*0Dj`gZ!Ri]E$0qculE?Z4"B6UU%B=,8FJ$&)?0qrujio8SA'F7$
-T"4Am=B&jaC,qKkC2UODjsC8,(=^AVJ8.*-^M5>hAh6fP)J`7\4iYs7Z"d#;h(5ej'\HmE%Ts
-@Aei?\1"t*N)N)f2#V[2]+jNPbH$\pHeC,rVDeH/%0>0a3S[1K:&1JgdJe`I(9BqX285W'!MS
-"#D:L*#CHAQu0CE.X&%P\M=RTGepSWW=<:)B]*]!@"0T+9JPD,+ohs!ic8FTGepSWW=<:)B]*
-]!@"0T+C\9Lh)B3P&PF4A`IM^A4RUh\2Q#3V3U#OT^OZ^ABRsnpN<lHeeVJ`j:lPaZ#1\N[C@
-eFeoo`o61b[Up5kk,WWce!1<hC<'b8.84T%B:G1#a$fKDD:2hfEXT["2o<`W`s*n#'>]WcYNt
->We]`fk+"E_C\`V?+%1,g[pZF\Rc3tJ"18T6(*HVhIP3G<);&k3@1).V&a9c]So?*-puNeD4,
-Ws43;?8O(p64['Xq'TDDid``ZsRBF-TG*P[G$n'1rUWjr0b*.K*YK6OGUAX6HUMH91h\KMdG?
-UJ/BY_-QB_h+Jr_VDMR=K!"?KPI>$J&(cHX;:?[&#fR`=Nd>29f3U/bR22@TY#0pJObst3&aZ
-N&;5266sqIWEu"MhC5^rD>-(5YT2;pNQ)00/:i-aO[6Wac=/L?`TNYCtlKdEO_4#+qc*sb);-
--,WocA5,ea0'1G^JH]pp9@0]2EtRTG$.U>*)i(4LlW`U9ZZ1DJ9lhVptp)7gR3.DLpE@*5M'U
-"hciLPp&s5WjOK;R35<X2q>Jl=f!";>0i1%kQb)1::3sWG'hM"2-QXk<$MIE5rBjZg/_1bX#G
-;BQ9IitYq=Lled/:`YUS*fc9O6P"B5Ik5W(e0<!,NR2*_:D"%5C35Qk$g6pNUp"B5Ik5W(e0<
-!,NR2*f*W<1Buppn`1N'0nF62*f+"<1>2e#Q?dEPX)WoT\:YV[;MYk,XAbTT\:YV[;MYk,XAb
-TT\:[PWg`i'gX&lh<6aa_N(&f@o<S#9fE@VBApZBU6qT>?s)?S^D0+='(i*M;nl.4)p:*>h;/
-NOPkim(j10)R^R0(\D;@j=?coH![:t=oY:i0CA<iq;b(gsc'4h=pRC710gC5g-f*[gr=$9hG4
-R7pV%*O`:dc+M^:W0T5bWYUPod2(:1fkmaori4NG%"`5XOK!!_\lsNX1&oS.&`cRKM]LZY"4:
-T[N&<:.\Z.Opgb$SbW7DDWRfo\@%9/f"W7DDWRfo\@%9/f"W7DDWRfo\@%9/gMNN%XBi:CMaW
-aVu[N7jG1+D7>c+9JPD,+ohs!ic8FTGepSWW=<:)B]*]!@"0T+9JPD,+ohs!ic8FTGeq^;l\)
-#D?7a2QiO(>0arljQtisG!ah-2%9+8N<#Z9G)[97\%9+8N<#Z9G)[97\%9+8N<#\O9WqH>\>P
-AZi,1Z&.:$[bb#-*Y0"4d7>ES&TY'6-u]d<"W.=X#kb@5&jmX6-&-nZ"HaQaJH)0aoBT(Y+\$
-&HkmI8Z'YY1?nkP;)PO%djR*&jf[k91^%)<:J*7>,mGS"T=cICYB+W#U%SOE)X*jd?E.=U;c1
-dd"P)of+4\NljEmnPD1Or0q%U1M>#hW"Am[I(*MD,^jJ\LdFX?JJh+6K?%aKH"[;b%+<_Eh#&
-Wro)_-dDR!jnh.HN@;ON<O%(WJ6Gp-R8fEo_8NF_$K$T#(l/O[;gb\f@:K9*AB,uju!EZ(1@W
-(8]a6*-G4Y(cT/L>O>H3$NAVJr:b?H<<iom`F^ft)0EeE;9[9XI#--dDnE\g/eN/7rUZ$ZM6a
-cnY[F'AOHS'QBed5:pc,N_PX#G<G/:Tn=;N8IKW&Br9W<RAIWW=<:)B]*]!@"0T+9JPD,+ohs
-!ic8FTGepSWW=<:)B]*]!@"0T+9JPD+uZ89ag_M\Z1QG5)lT&1S,X\f``-/'#NOM:G:oRm-:"
-t=!S)2pWau62>89sdB:rET5d_mDIKAVUD:\C?\DF6jAG<Q,:QDk&b]eJ&:VP:6,aoH.Wn&kq_
-!oY1gX9`BZu#3WM+m\;,hEu'lG>,P>6G;`C'hj(\'V)I5i#:LX-su@^cMu-a":suht9P*%@5q
-sB&9t$:-@(>0bB`0m:ed+ZTmVh<HJ+da1ZNf+1Ing".i5pDO8&^TC%q\pOTD0#!t/T64]_mAu
-_+S]Hq4_(q6/\)lsH`BD/=->-Rf^#>hNM.o7fPej.Q$$bFas<JqKFC(moXe`(Z+Hea4moP:W)
->GY0@*V1CLRjLYUCdm+WGr*V"itaIi^u'eef93Oi<ni!Y#"!ViZka^(5_L+WlX[hO$g-1kW0S
-IINa"3pDF(\s=E`JO\T_i,XA?5>TN]W+[7l*cWrf<_$rkCQW4"0H`\!R;V2sKgCeM14D1QFRC
-e?RH1JeMl!S%/^:^ms:eGp1X%1iQj!"i$:&-:;]&ProJ!S%/^:^ms:eGp1X%1ocneRn.2IH_d
-,"AfOp$4sHseRhBrqqkR&!NL8EeKt<sFT^/@!NL8EeKt<sFT^/@!NL8EeKuG,eQ>HL0^U,co>
-a"M*d_O5ksM`_1/uNeJ@g6?GX>$1Y]oT@YK6p.3MZW]lVXd5_L&7_N`POu3clVj9@\D5]KS]X
-E<MZd8#T[4'%Q>p:i0Ak=0:=DZ5p1mkjK@gj\MJJ3R;g6dSlS6Y4UbF"KLQWk,MRj]RIMGDW^
-o3hP"-(A?)(_-@k]^?>>5dRoNts<HEr5V?#/D+@F[Q+mHH:(^jOLk,k1-f1]Q<Y\*U>Y4e5M$
-BU@CC'g=5.YtmrJt.C,4gkjNVI1FEQ&PArhbYn;<h`b^TN]W+[;MYk,XAbTT\:YV[;MYk,]$.
-32@iILfI#7:C,;7^eYZ_QWe$[kC4HSg#)IeEJ-`(XLk'5j#cIr`J80T?W!8'.C4HSg#)IeEJ-
-`(XLk'5jLeXk'E=6dkWaXZa+uZ=P/BQnPOcodq\q+U[!7eZ3C6JYJ\q+U[!7eZ3C6JYJ\q+U[
-OH4/92fLq+C"$N.[if=h;,)8ZkJ(k?Y$iBk/]a?]<%E<qec`uEaI.ET1OUb-!fi[dQ#.V>hMc
-CZ"*>m)!jYZtpX\MO'^n)fp$??3_OuQsH'=;(AQem&p?40$&U!fLJ8.*.NG?$ECl3'!%&gTqn
-kmX@p(ImdiC4l%<Xn()jA.t>"_//>%0C-r1:%.cD'^kl)rh^p:H#4I!U^`a$rlNsW_EOolNX@
-`!`\IiW_EOolNX@`!`\IiW_EOolNX@`_T#Pbo<@kID1ZW(2NqiOD$i1t)TWep#)IeEJ-`(XLk
-'5j#cIr`J80T?W!8'.C4HSg#)IeEJ-`(XLk'5j#cIr`fT^+f[if=V)TF?O@UlF_Ot=<c3=/Na
-)lPY$:ot\82@33^)lPY$:ot\82@33^)lPY$H)nrZcHo6\bRIt8Jt0qe2=3ufa8@XA0Q'0/A?K
-)e`Gj?]DF#nV7Pts)r2k;m[=<4*FM"&!\Z;U@8G9J3oth-fng8_69Qc=L`p1R3_(ud%/SA+ZR
-X5.ef#a@[9+P+NCQ'^$>Hg6CX(G*e$ca]8UR62&`\;9r-=j=6&9,*$B:rEe:i-i<=uT8p&tiD
-e:i-i<=uT8p&tiDe:i-i<=uT8p&iQU*RtmhaC_LVX[@'^@C/_>ceNhDF2*_:D"%5C35Qk$g6p
-NUp"B5IkCe_>#+0Qpan[rtX++S4-p,p>N"_=*l9r[j4Ggfu+s&hDW>A$U/h.7L0S!skdG":eR
-16d:uWTHcNE,$^7np_TOn%lHcNbZmk<!fZf4@<5?RI-sH,N4joDT/Z$'!D]7k10J,iU=h8qlj
-eK^OQ,3SXhi5KJ2^k;4,cfGiLr\"=:i^9tX^l4*T&Gg8hF2.o]^W?@`%S]bAIg95!Dt`i0_3+
-I:l>:%RSKTa=>GBGO.je;L00EsFoRf8;32MHU%<B#1!R7lC;RXsk+o^U7cZTVgsVDh6nWa.15
-/*S`ON]QA>bU%>Qm-VNpE[b6aW\1s7-l4WN'rNp=iE4\8O[\OhU7$KS*`mjbZDbLK,e]<^&cA
-a7V^@7[FTkOLgYlfN.Dl<kR&?:01:pUG#g<M#W#B/i^EBrJ3<K$h)GN7j&rAW,I2T]n7T_MhS
-6Z%3<[1reoL&fcl@,7jMp\UtjT\:mBWYP)!i?-+<8j;&*_u:FTG.ZRZp=mAhZV)S6s1Z4]rql
-HIJ%)N)pi?)QGGNrA=7@d0/#]l\9N8'gD3]SjMs@;";f>J/Wj^W2T:XQN>>b<(r)N[nP"8e.+`
-%^h]S),@L49BW/[;b.&3'!7fdYg`C;l53]75BHX2$5NV$l2;]I,=9osD=W9Q7$1-,9@ar)HO=
-Y>kDqq=EdP#Z[p_JA_YVT[L2ZeLI0gY(CESTXb'aVS,qt`D:(ik4hg@p60i#O(pf2LrZ%lNCB
-%G0@`]f2<e8KH]k8&$;a_NF4Kur4_%<*%C?hB:Y^T#QQ)!%[n)3WnauHqqlc+Ep36%*W#!mlU
-^&QQ!%kp6MZ9qr@L42\<Rk*MUh/QCD<IDN<8/4J=7pGn%;'ecWb"pm!IB+P_<@j0Vd"h@>uY#
-AY"@)1<)_btRqq;%_QNi4"fVBMW-55#BelPKfbr[:27*;*^JJc)1_l[mW_u]R5P*KH$$RnQBk
-#(h_Q$i1f=nOC"d*W9HP&ZJ!Zfg%8?3Q"g,3<-E_c5n<."H@Jq"B_ejEXL<.q)_IhNV\Ub7,W
-&nU@SMU,9'N/&cV2-E/m9nDRu2)U#glDPtc:\e'J=dI=`ZmXZbq"CH99nK=P*a2a?\#17MVsU
-(c:bOp8h.ehI]gig9-<ctO.8]CF>LcSF?gpUn5e1YhAkZ]."^OO(<R]_)]bRj6H4nJS4V&Zl2
-Q$.@RV$t&oeWFJC9&te25nNik*%\TFg8hR25mr)RL@JO=,GKUO(k<pH@&5_<k3^o0$_:fX\.,
-CMrL&:Y'(I2q%6?jD-NZ:;TAER-_OZ*ZkT/JfB]CK2l3P/bHOsj]n"]0hICtjIrGATKM')!Dq
-o5;1$cR0mdC9Xb8dH="K6JKX&L\Ldh[h5<`*^HP=X5irmlApDl;W./:\#)#)N%\9`tZ9kPkMpC,Ws~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 618 994
-%%EOF
diff --git a/doc/users_guide/figures/cups_my_printer.eps b/doc/users_guide/figures/cups_my_printer.eps
deleted file mode 100644
index 5390f11..0000000
--- a/doc/users_guide/figures/cups_my_printer.eps
+++ /dev/null
@@ -1,647 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_my_printer.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 634 554
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 634 554
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-635 555
-12.000000
-635 555
-1
-0
-0
-256
-000000
-ffffff
-b03060
-d9d9d9
-c0c0c0
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-0000ff
-990066
-ff0000
-ffffcc
-00ff00
-e7e7e7
-6f6f6f
-800000
-333366
-6666cc
-808080
-9999ff
-000080
-222222
-ffff00
-808000
-008080
-429aa7
-00ffff
-00373c
-008000
-ff6633
-ff66cc
-7f7f7f
-ccccff
-ffffbf
-d4d4ff
-bbbbbb
-8080ff
-5151ba
-cc9966
-996699
-33ff99
-0099ff
-1a5f67
-0000ee
-551a8b
-a3a3a3
-8b8b8b
-000033
-000066
-000099
-0000cc
-003300
-003333
-003366
-003399
-0033cc
-0033ff
-006600
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333300
-333333
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339933
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-666633
-666666
-666699
-6666ff
-669900
-669933
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-9966cc
-9966ff
-999900
-999933
-999966
-999999
-9999cc
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-cccc99
-cccccc
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff00ff
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-8c8c8c
-cccca3
-8c8c70
-b5b5b5
-cdc0b0
-eedfcc
-f6e7d4
-716a61
-8b8378
-a6a6a6
-GhVPU8Ts.([][HSeFH8)Lns*n_f=\-Q#:/7PHfie`FpMm+FC#/-U@?7*4Pm&H>d2DKdo^gs4
-N\d&2eoS'EmMN?N?IJ)$!V)("*35!9o&kJFpWF5^Hf^+?_Cj7!d#&^74!]hNKrPq,QKt5;C%8
-c:_kq3In0'a=BJq;!H6IhS_4MjB)"BP'^6MT-%);i7].q4_Lm->8,fGZc8d(:!l2%\3hFV^'*
-8;(%O<Dn`m4"=Oq?3iPgNO=!C8_f=l/I7o=T<:me/$kKFY!gUp%&4UHl<PZN8m8@-33:4.S-_+
-%^f2N]4)lco:%(C,W"&^otd(G`lVQ=-"Ke?-(pM#.2(6HN,fV&/#h'Oht(H1.,`W%^VLF-jTi
-aa'`'AkeBDQ&,s>[Y(?]__">;7XEHJ>uu>tLHBWoHn*QUNcEK/HE8JBWXtfkEQ]C;O%B7M"f4
-M2P;-gR(Z3=k0o[lG#Si3",N1?4S/#&(<(DPHYca=O7#@pC._$>2:9$WWE&CMsR'nHfDumI"r
-7Zqu^t!u-^dLG6i$O!H^dLG6?m6^V0G.[,Hj*mjVLB9oHsVF#S([jpcc+MJQep5YmThMh,>!:
-];JR%l/A;&c!kaerDBt'>EV4]ch6YY$\rgoo")m;#)bE@HY-)Bc8FND:j@EJ=<?U7>-dq#[.F
-muuM7:WsT,\05-W$,cUAjlRkAkRI2D).,Qjo-`otsAIN![gtRA]=ddaL;SVJbbTU+!^dSq!70
-qr-YkgescZ@7<f:lf`;g+"tgG-oT[ic/=fMDbXko'&)V:GR5\\eN]Y>4ah[E4j9J;qYUdQo$a
-fO003$=FPGCnkuBr)0@oWH%*FV>PrA_:B<'XkQJQZP1a%CQrU!(#K<:a9Dd>Zq\RBK(^PYM,N
-lj!Qq&Gh_bCl-%?!?dHX+1'Ea8F]@1>"]64jpR@_UAXe6_XQ,*:Zh,i9Y78[_2R3B=R)oQekY
-PD4E>79R03gR1dM2Y>%O][u9G&]K_"NF4TV*hINIKUSk_-\&3h24t6A!g:g?DlD2nIQV--jl$
-`NqV71-72ll++^BL*.eQFI7P?ph"-0_h'ok,eSp2s4aXI7<ognuMI^?V]*8##Q`_W"K-5+D))
-s7d!k<1YsnFnIlC1<O'c?QVPBq3.a(Q(BH/\Yf#?&Wtqo/L7gJo?s,Cr-S-).kfPf0'S5C0.T
-:bO0RZ2oNpfOV7$%ql/S2]iBBCbp$"D4H,;pX6$.f6"ir<ml<,(>Qh`G*5\CT^8e7Y-cbatld
-D!Z8jh3,WVL,^W@b4%k7*d0m>IX6(m*jcPqiLH4.d=CBR%E<:F2tQ6Wu"#"4ob5.fXsUur)p)
-e@6X[`C$DT]rWJ[b'jb\EN8:Pgj-Q1\iEGJ+.]pAZdk$&t:I-1\r))*kYu"[&<'AQDIlkuX?>
-f9@O5)Lka*Sf_+L4^@`(M#u27(f)Z+-N/q,gEm`;jJgM!ji'5GVIWV.[36Q05"<D>s+Qc>Mgq
-66f-!c*FN%U!bGA@+Nk!Zc.j2H7uDo?J:f_rF72"E1-?)l?PNg-U7j9QUm0bm=EH+aN9W#HHV
-ZNm!5!eRn5:3p4@ngW\3O-b0-SNV'O0GT$"Z-VK!M:OWKjVMWTgF8We'Vp!W&AT_,r]r-S.cD
-=pfk`E&cd8C+0Xc+i_anRM+LA^O\e<bp7FLU2<[%$sT4.^..BEk0(&AO>dk)<f?!W1ViDG.q)
-JBS@sNOOZFNoXL<R/`Kp0a"s$XSu#8FSk=CA`>(PF26-6gmej')lG]dJLHT>j$,)hTE*diB>'
-d=EbhR=fFgtCtZ_qBJba3`Md`W`X(8R^.[%^kj5I\POjZJE=pfO_(HD+1KV'JtN6!djFPPS*9
->eq%adSk`/ZVL\[#"rm^%eLfGCD*aU4\C#JN:gB5[2n\@[>/mOn>"@h;R8;dC@09or:)ECT[O
-n;iH!sQEjD4E'9--Va-]fiKeG>T,PP-'R4uKsl[$ZL4j5ga<"ZL@;jB%o=70=LPC)7/Y;c]B.
-IaeX*t8gq,[J!//nBe!N9;KZDt_."0<FJfe(S"=X#J4j2N]'V$A[<9GD8c*l[dB$QV5j=lK>l
-jmG/1Z8U:<rJ#[h*]Z="FU,DqrX\ko8mW!@(btuidK&8A)@R@*TdngD">C;pdIk6Q/X06RD/>
-*VfEeiCaDsju6c'OdN4g8$P4Y9GFh?`@OS+EG)P4ZEL_Mtqu\(:$dX&iBQon6D0Sp1e?af[\M
-k0$2!cS)WP@;ue=F_i.eG#Q5&;Elq&iq@plh&8KEUV<c!AEfBJiBAj;ReJi7EC$gC8t^7?T"U
-D/<TO\YE:4*(:Z--!MGCQPq(/o$4+Iarb#:6^7*ha045^L2-c'#4l:-s3!"VFlr=Joj0QeU3g
-qWKsSJ&\Y"kEc\QV[.E41I`!9;T79^<'de\4*cbh!/?+m.Y:.&4d<?`9>8KW?1QpV'cM!oY=j
-nNnchZ+Z@Y>:C[HjJ\bG/\HfCiJ6srm3=)DcL156]l72kKFp<Ni^d*o^cKbrqFb.?Aci=%Gzz
-!'UsLa.^gDBoe%LH@9U:gE-S_,O=ab4MpF9h4_,HWt)?0p%?^\W_P2N\5P:%(#EFN1B$7?f,d
-uTZ^0P0l_49J])5r&::5J)@`R2;c0:;3cMnkfrP@cIDRLoA:K3l+bZXJhma_$8??M#jC\,d=6
-!M#;IQuMh;Z<d^=)Vlmp1S95OkZp6U$H.35d.S<<e4Ftm3+OG:WY(+*H1ZnUZ`b+mCUp'U[;H
-sb(?mFe:YBU4n7BdYZ9THe<L$2_[,bqnQrSIYE^-`*Se/"cRZ*`r/AK4g!7%S]$n^(HCpd-N1
-TE1blH)(]JfY8@g'6tmgi09k3l]s7o3-F4,UeBm<1X<->r<Sf1Y6W3->`)@ZPkPQYW[-0RKq(
-M\3Bi>FVD\+g)fgZYu9ec>W&f>ub+gTP)*rK50H,T2H3J?Zd4D.K"&LEhk>)_"dg+[af*&59e
-J*29h-b4K0I3?J5Tm-`U\AaNO$#jW3-i$3*AYl1V<-/[^Se>AtCTa4XNo_`hZrWdXE$\6NM`H
-(Z4eeUDA(mVQLMXsj0g?fn:PD(.C9ApZ4uZ4M!Qg=Ei]D<kd3=KQj2lXM,#A[H)_YHMPq@:g9
-l_=m9$RDQ,WRi]uA9HCKegY]G+h"OIFmAFYI`YE2p%<_$?iIcL74%jQSRijj0hn[m*$FHdIoD
-VoAs6+cC6bE^C0_(*YbS`M^f24^!A%WUn-aDE,.Bdp_H>kVqdT]ps[jTVYlefApld<Ii[GC,k
-<$/P49TeVJ5$Y-q-7Yhs@J+6?IrB)r8_%["[=511O5"uos(-esCZFLr[C>h4_u!2!?#TAo\hF
-ECgT,X3Wn:D\+.$0=7f;'N!c*:Y[OtJ;Pl7FZc\-;1[d1>^^$t2?nLFaJotbYl-+O?1B[^Y\6
-ru^%A;]g?AJMN>Wm/O3YK"8f6G1e6R!@3Y`=2QW1IfqMqat)G`7oKC;091S5"9k\*gp@nf'=Z
-"8KZb&G-?8H=#[[/db=uj]f0,?NF_^(l0Ljhp31k1T=6P!5,u<q]X=Z,pW(iGHE5P/;q[bj;s
-m$-166:E]rg#a:=Y4m42,KKXct=$e-9hIn6"tcR&/@']=;UFd\G)U3,!a/?)5;.TWVORS&0k5
-<no&!CK3iN><Vi<lRF!@j>I^MC0oXUdF%<'c0:tWb%fg]<_Tod@r*s9UGZX5o@;F\?B=n$UWc
-4)H)lDYEFFZkVo7u[;6p[X0@h`n+!1))h5VK#=J;.M2qu%5<k$f0Xn9,ADgo(ghQ>=$.s\>[[
-l1pk*H12g>.$Ec[L4oup<*=mP.do+?,M$d4mMM4URkO(s*Hu]1QpJWGi&+<E`H+K"nNn"$)lm
-1CQI$nV:Wb4?qo^^NAN[f[&/5_D5W.nRj/`h`,=^;Dk4Qicb5m*%7noh\9j^b5")`$7<]b`aG
-R./mMORCkj#B0(2FYk'0=pNd@#1SeK1,YgG^)CSu&5VB7%c`j5AOHp#>K$CU@Mc.l;`lXRj"t
-pW]Y^GIFZl<GV0'9P:ub03`efKfWE7qR5"Y\U*u#6s?e[Xm6S#U.c)uXNp1KS!B3ZYjAEU$KI
-=/s0?rl%IFB%rkkUV8)*`P2CZTjD5=e$3432PFSN>1/(Q2o%?1Nl4sR3mPu=<B?b:^4-sA:mp
-*rrek<8l?;@)?IgkRrL2>8/i?T\90KkQFM@be2hIGZ)NN2/4'4?g&/S%?Q[6Nc[BiZTVnOWEl
-+D$//RHBthl)r,[UD$kR@H:;#nl(@+oraaX2U"X<uF"Oq/:D_,Y?lNGcDZX`V@`iku"`<I6[b
-boH-12eER'eZ)_54Q:bj+H4piTsnq1H,U[4Ti:)U:ojI8A>GgGV`p[uC^#&#6mKO1R/u6LHcU
-^pYK0Q(=gk\*K];[,uJDfW8n;<_*7fZ(=tfrkL%jWI2r4oYmeO^><_'[12&tZo4b_9.<9,'n+
-S6ccFDfO4Au'SM-T4Emh:GHk4(Mn*N4\X"eN2f%qZ0hWid#eWdukH##?\.F#iAp",caGPu3p)
-MdNimA>/e_'Qs_E9h=VXfqAf0nqk<J)D-hN1ot."T6&.B7ts.jfqE]jl*9Aijk*N6BXZ++2Xn
-$n?9+\n!-MOU,iXdnqKgG[s!o"%OtYq<d1Z+Bl/mt];ipG]cPkZMB`ktU,.9h8akU*a?J=I@L
-")?IFt,UZnii,YI2oN[<.1)EprF;aFq`nlZG,9hWobq4gVrYA6,o(1,2]7kJo6;7'"pa]<ZAB
-#.8bKod\iHXhn2'`"c2@#;nG@mT_/<d"J$/l<#r!N%\!!5\_P+d?p?0cPng,+Zl_Mc&e`q<pu
-S^]e.Q&;SX!E:*$YKpo@+6>.msW\oJ>9MD]oU4L==U'0g5O`Tkb%4>WH\[k"h6CWkL.]sY5u`
-naf[gWT#m_:--TpXou(Mnoh&o\$]-f%WTnpRYL#otbg">@R7`DQ*>*9VJSI0HIF%I'R\U_lrB
-Ch$eTMij(#@p*LctEEdD)/C6H?8&YY$@'f7%:KkP=\]`pU%rpFUk1(,dOn(us_n=^!ehF.kA>
-NN:;_a=cO(Q0FZ4j?HX1J#Kg+I?_#-`uE.5<&qg]dh`3B+;QZ.3i+iVM:_YLpTOiFr`>X%0AB
-[5TX_Nr.PmIJmJ@X1.a<;+%Nm41&:/YI\%AY)IL7MQd!Hm0$c<r,NIbG@pO78=F42De@V5f>F
-)=hfQG(4$h='<GgrBp"k_mm:]mC7;C0%38`M]-!oeQ]'2#VotpF/cX4-E/*1@N5$Qbqjc?r2;
-jC_(i%[h#(Wm>Q%.2>UcHT$s<_0bpk#ZJ;YdZL_ZJL?lm)'/sj!JZ)b2!DaQ0.FI9M*3lDUUX
-AH>GB&Phri/r3GI,h3tl4_4@iTHh5uoi>J[4a*M[lC3"0fHe^PCk]kki1L,+jg3#>5LbO&3m.
-IkI;mF%#]%\%]\G$ZN(n=obnQO`>HarMsXsU"[%Uu5<3g<40@m(IER^:-hZ&&Ue1sfa(A270U
-2<LF'eVaXhY-tU:aG"jH8"8*[cd'@!fJ\Ccf.tV7/+)0ee$1/^`msU?BWrpSSD'EC]3i0W]?n
-ml8O%"&g;Y-%Ju*;8>;_B4HFn/_JtZoA=8G?=%W9k6D6k,rj//\P7h`RBU0$YTD,Yb]?'75l[
-oL;;@i>ml$t5A@aK:YWd#*/BGp^)r!CFV\_)nl`d&`IA$j4SZ@V>omOmt2EoQ&0E3.qf+K1AW
-kEp`*q":*Aa*h9>?SZGhhOeIs]c,V:cj`S(@ii<)4.Lt=!M+P.U0eB/$kLl?_oK?,ZHB"CY]T
-]mZqq9#Meul4C3?]?B_3lTEVc7@9:5nVqq&=%e2@.E(l*t5"Q#tO'])2DuLkSjBdjc^QD.Z+)
-/'hmIDf3\^)e88.>V.jKo4,@:GOM6C'sgG#/t#(F#mJ'oq*Ts"$KS>8L@eJ[B"[uW<:=NL1KA
-\c$bYbbfiR(#k]\=C;Tehcs'.,::_UK&oi^'oC\?PRAl"DWm9o=o,)@lsAE-D0WT^Q!`D\*UG
-h)+OBEDMZg&;O3?gQp=T=&9J-*CTc:-K@dE(0=E-Ku"5JrrM?=nTGT=Q@%:McQj?XGO5*g>TD
-o+^8b)gPX=YS`hNAhN%)o4]1"HUq?fO>e#DIg9MNk-!JGT!Hb0D.\@@6V^E*oFEM'Q#G0Vn5U
-si"7Pc&NZ=1nCaP$.K3PPF.NUVnpp1Ej5pU$pZh@gK!_%j:-\'h:Oh$3PrjC00B(l(!giD$?K
-@T/b_FfG:k&hFLaW+<K7&FI)72*KPckFh#*A<Rg(T3j!qGJ\D*:[Vrq0Mon7[g]=O!YsXQ^?V
-et2auX%WiX_+$>ksg.l2"`iL:`HRoo?2ITprAUqJ!UClUO&T=]7Qb!c\dDqOCi.YEY[Pk3G[H
-FnAjlWj8gzzzzzzz4qGeaO(?nCcWgL\&4U*r,t^tJ6@@^S"<3\"0:i:(&l@g]#=Vr"\-Pi96"
-Ks>U^%)j`b8)6.bGt$M26'AP9O9_U^'BJ'uqWAV\&Kck`\\T)q+aQH=."U7<G@O34&8kk1dSM
-Uq_WU^d-&jb@Qu3:Q`AYqh+N+0Cas)16F#c2F2Y@1`Jsr%##/A1(ahEN'>>B$Af#9"2fqXi>l
-eu)C[g#.>*2ieN(@biZ,9BDNd*.BH#Ys"2d]J^:G0bRCjjsH-&*Sn3\Fj\kM%bJ7?;^5^Hf^+
-?_Cfm&h0*zzzzzz\:<_OJOV$/Rs?LgE[R=8F-*:a,5M-1DtDuFVQMpu.bS=<i@3OlDhVh@4!)
-4$rTW+pk)[6.q^2-%]OB71!d+\64#N*B\).XjpE<'Lp'tGR_7peS4b"tG+n!)iaF?h`HW6>\b
-r:VC7csTs`cS&Q>P1b:fKjg*#5[E`:&*]K7I6Q6%EW=W1e8<](-\ZWH81OB2&W[hDY:Kjg2BO
-N6c$M2Jpun%;!B\ZfqaeU:9aoL%K#rg@mp(GMsGT``r<b:6W=a?e8VJO*L)__-bG8aMf7Ij6$
-aWBUaHS6#f]K%UdkJ$\lL7Bl#9e,9OPNND'6NQ8G6D>K)K04UYTN:;#J$W70Q.*asSN`RM"^!
-@<?/K+'Hea*BaLD5+j<CD13SCe9M6?#j;QpzzzzzE$]Z-S,qg`9F$deV?4mB;ZZ!2WIXQT<'Y
-_:.P<&2r@"CgeaGTkdZ=FB.=^9GG5f:jn)>;Z5bmS$?M'ln^HR>HR%IC+PEb%Emk,;j7ukbqm
-E6NnV\nX+\Wl`fmXk)tmf5[1qh**9C/51&UZmb%4-P%%l7e'oE]bU_]1f.[j!".HEKtTK/e>M
-^i`VO>oS0oHdF0a1qs&kpJC'O^-$T?:k:P)A95f"dl0X'[9nN/a'W&8`0>[**l1O+T-V.#af*
-ueSoR:"ck/7s[eDK5LF`qrrpLrg1(5j1IX59CFMF]CB^nIt*$Jgj$D+A)q)BiF37iZhL2-,%.
-0B@S7SCNW<a#JMRU/\KEO1F#anjsYOLR4T2=4#jM=?#t'C<n>L]_%$0\0thZ\jf8C`"7cJ92$
-UF@%pFLefE.R=aI\ZH;#\kHJpQC*_F]@,a%&GHJ1A`/EGqL8<;sb9IG"?aF<U!r8K-*Qcp\Ao
-[r)J8&Q:B,Wi"DQ-,?W.JmM#Un(tuo[4.h%4P/#.[M!Wnl_hpq,Er>h5??@I.NQS>^B(d8!!=
-dd;gM\,M%_%\g4tr_kdBkdS&a-_`D%k++?aA>X@L^V+5[r'D`-clgA^jlXr_:a3ASb-AWBgK]
-!:U#)-XQ'ft-GeQ&?IQtS+I*KsejWfs5k]oeg!V3`JAQ]"0WmtE!`\A,r(aY&V<I`G5m7F/R6
-aBKa&?-g+OH,M>h45)EdQ:4[<,s>Zr8>;k$LgPIs8iP'rRUJ)d;C#,3Ve";mqe"iE-VSQI8FN
-]thXToX"1<5n/mS4=MuKkiEt62_n!J#qoN\salI,'D_<<&UJS+?h65n/j2kR\VATM>i;'%V,J
-FbQjH-dTl2a`i8m=Fja>^=[;3%&4##PEXh0iiJuzz(kLKEeENb"@hMXO9[4T8U(BXgItAc7=B
-C*ss'&mms5>W@.9(QVndl>^d1M'L'_SBHEN'F44uJV;ZHU`uE*FTih!_^6U-YdO8^IDqo+!uP
-V&+PGH5GY@?6utaMZ8@$r1j*8*k?cIhltQQL=!fbO%Ogi;;$EFor=_KoK>)EVXg`Y@Z$n#5tG
-`66],GklK7oHZo)/ieWA`j'$e/trK@ma'Db8g*_t0B%D#D77#A)u1+!QEmSo>r&[.G*Qm8FM]
-dmK4k85S]+MD0<W#]Y!D59c1^/af$bZ3q,e8_k-2#U[*4PN2gR"!LKE+Y=JSr*Rh/jF9RicJ'
-=/Np6_V/i3`;l0t43#bEWed6ZOmu"&^T_p&iY]fH"Sf/<*mfXS4HE'?+OPVQ%FVbQ$q=R/fa(
-Qq4`Su-53jVhlcp-!I6h$R7'IFB-6l6TB^EL(#VQqX=S?K.Q0r=)%rIa\aFL:nnI_QtCr-D8P
-LgR+>5%,H`6YZ'FopmYK$V4&ZH$>+f3a+/MrB=0;.InDkEi<@;JG2UDm\8[Hl;POd4In/#XHY
-eM=a\Nid<1eTMZE/VeSjs*?8q+ogEW!%fI96HjrB3bqYj<MclFuk>^5!T=%.m6qGtL5LW_F#K
-3W>YJK8SS^/T@W)CN5$*!p4qB\6hC"-^MI$c?DZ$mWE7Q)$p9JB;SPUIpW>,+D(:>s=:>\]UW
-i$d%I*ASK+81I?>*%Fk@_nSs1oKiaG/E;Q\_UC+^).c8oRDJ@L3_QAdhNa22jDS2rhG]3iQ/W
-*Ebj-p@fnG8to4ph*]dZInL"'=uXCd\m'r8pcRAfT!bGX!%n]+W7\(iidPlHV$GH/Zln;bVL0
-[R:R?n'^%o3WrtT5DMgk7c$CV2aCUlVLf_"n>]@6$QFj+CfEu*UR:Z\*H!)n:Y7m(EsLr(LD&2
-%8u>AjqCG7"DE)A*7ZuF&aW"6Kkf>(Ul0aaGR_V7ofgMV12AEG=71Kj2!*LE32LT:8Rn58=f=
-O:S0AmL;#*W@rI!JMW88l,BWf&e1W!t2;hAq\KO,Hf$q53<$88kP_GA6<$;'%dC4!9_.'qaBJ
-;A>^bT%2YnV$B1&K(P4QA6m($dbDe%W=&gr#uQ#bo^V><iiJIfZ\\E9V=`TP<P;m&Z8?fj``8
-oe]'-1nOri?dg9K:3P[7TTCY1otM1FCZ.XF]'ogY4Pl'!0#-<I)r]jWkPL.X*\,Ppej*cXD:H
-E!+no`?a<VtB]N4"mW!Gj/dHYYs+Ed]bOoYR+Xq[p/?)Cq`6+Ce*GETM*JE/,sc.E,iIcQTbF
-,8p^$N9DErKGp>n$a"+q#-(YLBU)Uj/VKb@k#*-M6#mRP_;Q<ZAqnDG#h,Z2AVfu4+N?erNlU
-;Pc'9tZ];@K!,9-D!a.n\.%_WG,5Ze]j-km;eQ[8Y2gYK<T\:+>0l?]/+rPY,F#4*#:+gf*$-
-8<4%4oX;`p-6;9:@\rH?.aLCJA!MXs$PT-$3OeYO4m_7AcE`ETm&NkUDA0UV-%(CRT7R@Gh;b
-R)`20"V`6e$mFIB^C4p+)kK(r*IH<85eE?<34%n&;nm%N/'dSnUeYJ5<n=%I7=<2R&8daO8*h
-mE#JEsAq8'MJ[3Ro1K,B@iVk>'f+]aZ<Q^:jW*kp`M_=*5^c'%?Oo/]h=l?`(ITg-/?521LN*
-kQ?'%S\9a>].sSq52_Z93U5J5u*o56g$a3uKq8?-Ni[\n8=XZ"4B+i>GEHHm-VPUMaX?*/tB=
-.p%'oeCC&(:?.W3Z1dkp>'j<'bcq7Y>.j.Xc.Hkp`>Shtd+Q(j7tiI?9eEVg%q%%cS:s)bBE%
-.#Lf^?N0oG`G]kj,"h<#nQVkaH<cKYD-6=D=JT/6V'+EaEa&scLT@6-GIu\ROh0/KLP4Q.NH:
-!H.X/D=>U;=:'g9M>,mE8j+MF8<A*6gpn@#Xt_ED'%0tlUCrUige$.!O#!GDh?&4H%BOP\6d/
-ao2J+?WMK^9O*)U^gI[(Oh*@2ka;Ql)>pC@7ps'GCsSrP^;.O_TTn7fCe?/QDOIOK$PdT-bE:
-9FqqHl7)`(UKgH?>3_pejLt@["F)%B;8jg<s",a]2W-G-,+rDfBqbS?0G;CN8;'"Q1ne$P1Nq
-Se&&YJnj_?2_d._[P"6$V=XF;[7GiIOX"(8$3J^h"sO:I06`_PF209R76k\0.O);\1"[!eU1]
-KEnYGf'@&n4E(`bnNhEX>&8PQ3e-)J!o\^PJFL?b5^6Zdc6L!XDK?\=]-O5fs81+[q![)V.6s
-3R$e.h8`Z9+)iE\uuY-(>gJ"K)PQG5(OJDCt*j[4poW8O"B*j+],4eM<Eq<*5\;h3[=lK.&?n
-$p0"<aMllZRRVCn&tsf?(kRgOS5.'-Pr+NT!.B7p9q?S4aR3Q=/_IHUqNN0[:+6mpuCQVcW(^
-`^+'Xp_P@l'UI46(8PbU5q%*'>HMsaH!*4j0Tdos1\]oM$Bk3K#PIbndTU<a^B#gsNgg578<a
-FZDqBGs/l_l:):K3c6]tXddi!AT7GdJ36j5C-M0#]2PHueeDX3?WRWQ^(?le6fbVa?*XF6$9$
-kl7M@1=j_)5Ao_E/h?ZsV-ZMWrtPq"P%IjsG_W0#=JC9/Yp*62UJInr#")RU?6m9tX,=UP%82
-.qKng?3PGb,QXk/ssI$JiQ''WE_NHq?`Y##+ealG%"XYra*H#BV=+IfHg]V*4^,\bX_4uoEr.
-q1+$p.D,N.\)Q=G]6f3:-_3CbSGqa+S.i<$I[*)^rmin09bK?l"riQQ"j,fAEnoAT#>=78^CI
-UHEI(.j9fN_DNdUeckEg5U@bN64/D'>6:Ts3TCamsPkZh4;/S%F29>@ikugJJ05\B$E.[_^j.n
-%r31<a#/*3ubjYNA]1aAed7W;r'A_Mq3Z;LGukuEEEm2G9sdu:;BX>dB$Q)>K_A%ffX)!gRpB
-E^IU<dMmLLhT>noQ\'4)=E7)E;_d9U5D-E7?\Ht5Fa7LE-(7UYJ#iEndIGkKff"SE9SI:i?hh
-r\HXQF6@nbKRgW&h%OS$%b#JB\7:uY$c*<5/Q_P1^]%M"QF5JZD05jSRNO7`Af6nn2B^(MhO`
-j\b0RB1oCTindf<p%b.-Ykm+#m,CKBi]`3rs/dP&lOU;jR_n7HN<6X6:;6#'i5<fH:\)!!%P1
-^r=<>?/qlk3\P9-U@+%W4J$!28(0T,mOSq,I;pk#;=/3QU-,8kKBf&<T(8WL/u:[Dn".%do"t
-@QM^]0bmN"T8+[=N0s/=uALB)s%gfKQWcb`QEYN3_[FbPEu&>N<`Jf/NSHqZf3(QOE/.&\OW;
-/*?.@.s#ASKJZYM)%3^a.J9hW&9OgK82Sm\5't@=h@.aiX:rVAUa7ZpJVYAY,AF#0FYci8R'7
-2[eF;;I#q["#@ooe?&u%,kuH[o4(?X=fN[uB%H,`9$AQqO]a^="oGAAdlOA+diCN35`%&pD+h
-`6_Gj32X`RoqG-0\QL8Oml%QV0",L@jnnPH<W<:O9m2UFBB[_GRf7KF,]K<=4I(b]!s<j!2*N
-X>dB$'rDk]-S:DP#'RMDB&!]77Cc#3'4_GB-b>dp/T9i?J7NXGoVoq@<s^\<>^@+oLW,O*@l'
-M4T.]4'/a[O2^sj)+L,/*bRe2Er1#PM>L^_d>n*RL@b/<oR@)8]h0GW4i$75ioj8f5\zzzzzz
-zzzzz!*k>$I-'/oh`(k\Eji/TK_W>2cM/]XclO%?=he8Yg&lsfo+r?5HXJ7$2q^E;:]:s)kU0
-g(npl(<rS'+,%i^_A&c_JDJ:8d.Z2]hSV)S%=^&u_X@`=N1#Ckf!I0ZDe=aJ3)5T]euhZ;qr8
-l$-<*RtVtVsaWXPKk)HERGLI*)i10g^-&>HI>o6@#'YS"rN(;]tt1:QX93S^&p'>c'b!24Q(+
-mNAN=(fKK;4!h6(&<+)aTQjdem#64`(zzzzzz!!"t_V,V]9cC)Ff?un#E3PbT%<Kg$FV&s5b.
-FC?[6VrrO'Q[(kJU>'1:`rAkoX\@T`_!q4htS#dGs@;W\040m&4M&]nP]:G]eLHD>ue^i!`24
-JT!Mak&lh%a!XI,hk(++49f66miDl+K#cIl1#k<J^oLY+8TcLDf%AUfE_t!&=9se#5WR!T0%[
-\g0`QsFS!WW3#zzzzz!!!#7=oL3&riIF_c.'=GlC5@'^t#t)j["6cO'>I&[.i7`*T]S6T8_Fl
-<Ju=l&r6'W3\)0rT1WE@;ca15,!.E2W`sdL8Mb"B*mEIg@[BZ[g/u7)m$fqd<N7!N+G6"g0Q"
-&`U>Jl5Ku![MV"Ya8SS<>,MNXh!S>s^<.u*S,fFaHV$qu&Ca8L,LNfb`LBrKb,dd%SeMarl#e
-A"db*T28)UU:c3=8@k;*d()9fgJC"'9Prg"R/pUC8BD7UiNTc:u!%b_u5hdHDJT`<ph>qk5*,
-EM=cJ+*i9gI#dU0uf(J#b2!H]pMG/N!qY1JC,L:=m^mO)0DDp[N3^!iB\"A\egdjMjoO.;T([
-'0%H)(],I5YtS!s+Y\q7$n$6$](8Clel%zzz^s/VCK:e)"oII,^%t6/#!rr<$zzzzzzz!!&Mu
-e^F9CU`s-A;p%)Kf7L&\#qAqKO_72W5L14A'V's/5k(jSN39ANguHbm:9pr>1#$HaF0%^A\_;
-t,T"JSk,rV\=p#u;^aDnIkL$U5eDN!.(mYP<Ng;pFSKiT4n`U""[R(+!p&=6K;iNQS\/BmV;p
-.+(C.a.Ua-5@WoT"Ll<;Fu+5ME&l,)3gLoh46aYl5q=cB!CoPeQc:(MIfpa<\"!Fr8l$:V)Q%
-U`42"c#`ekK03*u]"Z_A182AaO3K"oh"5[V[DDd\cXLY4mPTK(g8_6<_YL#q(Zcj6M77-AqBB
-;e9j;efHg*Q"&bQqdX*O6l#;)FDiB08gG,YMVqZq/)-SY#54*pGag:!k@gnsNHppupJ-8]l=1
-Q&ZStYOD60?CAMV;Z!;(3OnWPdSls>cL%GPWUMhbQc]@Uc88N:;du_..k-e%;VBOCQGs_5EmL
-PJj@X5#7In7l'77qU+N7h86Ps!*=edGi6bH!rH;m!CUSXl5Xca2ddn<uEMDDT5(&(q<H?B).g
--m=@Z&pGL/#0dg=&>cHL6na1VNSEBf\sta=3T*k&4n]rV".JE>EE0IP>B3h.O\Oo"/JEkb`[t
-P8g%u6QqPDW`"CFmH(uZ0=*A7q=aEX?Bgi`4f=68VMMZM'9j)edmP5/3=F+5"GnVIO'?a,sc\
-`M$JlI%Y;H\<//M^4MiBm3tV'bO'91C`(g/hE_NL!msEL3IK-c7Pk<Y;_79@@U#-g!"S<:AW)
-UlHbc.2%5:K1(X'oMhgVGqk$4B#.U#7Hq(8DnP^A6W0T*j48=VoKk`U'8cC,V#5h<B1$)r?+b
-5>)5&!^2DiZR#"tZ,8O"&)<Kf%.-'g/WKQraRSP;P9.7mXoU*9;RJ;+l`Y'>9Wr.V;K20jqTK
-d?2o,uJ!^dU/4!.b6Us,&(>d=RK^'6q/t;'X8[Ar#K5AW">/:o')rpLSoMG"t+VSZJQim\bg.
-#Zs&?X@8Af,?-\pV>Y*1j^2,+b[5I)qd=a.lql+kQjkO.Dgn1nc!!(r9\E-IDjWP_W!_S4mU-
-6ML%gk,.doj6m'?Pm'j@>hg+J4D,>DR9$@'W=g'll^AY>C!?"N_jZ>G"fA5mn&]K;'BUol<Y,
-gr=^*oC&iTL[ZL\h4nL%RYPL2IL8p^E@Eh>a26Srl7`Mb6m-6?3Dt1@U/aOA^7sJKoF/F]CED
-];91r(5%FJ%"jiY*GoTCH!O^q=EXj`F:7s>o2Y?29l2Ht'rX.qDSmZcoV%%=MM?U_Q19@cRX>
-')P*=nkbCS:(kg]MosMS*;Qm7rRqA-g0jB111$nO4'CdlMTS7E,gU<S"t+k2WDZ<nXBR?dg:/
-Aj:[!AOdL)3P9tCGZs\LOY\6B0e`=Pp&_#K8C&4gDj@s2Or18mmo>(66]3<DTGEQ0AY3@%&$6
-P(LF,HY=S*3!T4_0*VB9ECY.C#[O*V(+G8`cJ9%QgcV&F&:>@r.HU9G0sok;/O_($gge-p=#$
-N)WJ"^Ufg<<]Bpd>1-NPW"b5c;gLhc_*h-`4?Q0'H_@f&g.NN!HnS+<*V%g<YRr7^?!]OhfAX
-!XT#EuuC;,in'VmZ?>#n1#^7kd*;p#/]&$3KjHRKqd+?blrk*/H`oo;F6IQHF`(8U[ibnc]QO
-,tD!?ZqFOd\EC0YJVU((Mc.I&G`Q2SnD@93Fg%qNjd%;8_'[PMkrK])MhIVOQGQ'ka#P<[k?o
-"+U.*bi@pOB\'2*&]a#/olYqRDUg&/>eN9W<8_]9U*nsQ?6k(YY>fi9D5">2G$em=ld5EgLie
-Jf1UlgN`W>I%O0P"=`.ubgPdf(9$"bj;u4V?9<*o+EdJXWf&OWa6!W^.`*BqkDqhUtjRR?E4L
-5\be3NAu%JOD]D*6QKM$7cT2sc-s0l63@UoL3kL,D#"l@c!<lDE,4Xq2OLH6m[jf0LBo?PR2M
-,S-ij;J^gPI@"-V=cG<[^gM/!/uKB(QujAC905hFuhEZ"t'_7?CdC8>.?K0*Yg*g+p[G_fQOk
-k5=G"[t=J1s,SH=lEmQ?-&X1P<!'("h5-&-HV?4,2l;>EEbQr841N/c[l^TILA]Cl-LA54;hH
-bE$L=u,9kq0*4Eg2O-Ia0^"L;5cf1U#$gFThJMCZ=GrN_THUJ#$`Uhla/3WD6KCc^N8Q8D6]e
-!fqoGSJ\ik$LAk;6e3Lb(\H>'d1o4n3<kdL`E-I)rWA=^WpH,PHq`\A]\R1n,qU&8CKYqaK4q
--JKcA*?$aS\22VWVbZuM'*OqjU!c$W[rXf\^i5,^*b,idzzzzzzzz!5N7+$NLhp"(2JM6@*#X
-[.M(EfMbl0>3UDAFCe5'LQ:S7NV$+3>"eX5\:BY%bE^NO'RU3?QCG&/YE7TG!n&"iUj#;r>C,
-o:]WQ$@mk/V.X3??Vf'@Bo?5DqOI$"X1rr)`?@0t-ufnm[WnZS:GQiI!R`uc><<U2;c8>S8;<
-Ge&b25GGWGcOmbp!pEUX89AA>o1iYAJXVscd124YH%GoHDpgf'&qKre`tMd4O%Ybb4DO.r_(D
-&c;:RS(DU11kuBP4kPPY7]1Y\MCU?CnoskfErB0tkb`!U*hEtk!aJ5>2l+R#mq/]SVl.$M9OI
-d2g;-mCOFW:9q$0g7njUSb"hUAc6[Z-b,O'002rhn:<DY71KUgIcgFB0^P4k3>koSi4<fs=PI
-eD]+V]Tq?$2HL76]14nCguh]ScVKJqH+?JapUtm%IfB<g/\]"!W;]:[O,_bM/tQm7>J9sa^T$
-k4%kYB(cD=S]e`i^FN%-JQDdKDd[/%Cp6\RilH?ViP_d,C6`p1+_c*,C<//dhhm2>#"X(TZn3
-U=_0>&El!2.6"f<c:i^jVaQ^*)6Y$q=%106@*iKWP`#k[C(>(qYC"D)sr'W[.=3rCH^7<<I\!
-Zo4="2ZZPflP9u]/33-[c?JaX%m:kZb%6B=;T)PAE:KY=-V/(gdc.6pLcjMBo51Hlds#uqN>h
-8M]XFY/BKg^6!I-7@BookrhZ;dCFdbV&$9?2>dm6)rfg!)@Peba67e[o0LB"3c^g%)\]5P9'r
-eCpii2NsLAQ:uUN<pQUuoit&<=Zs70,0Y"1m4FQ(Sl4,f_s2XuatqgAAU:rN]!ZkU`F:"7@6O
-:r?7r"%r:nQ0:J*KJ]n5lgMsnteH.(\EY^2DfrDN'&X4d&jC\=":\Xqe5Sg<RNiFbaD'/`o`e
-O\$3;#ZX0otIoh>#:-TM)3q5Bi&Oc$3BDI)''acZBa29;VslH/tU)%lL._pSgU_PO$CDZfq'?
-&cXdU@#<iRj]mYDH!n+\:+MBKpH=u:kV'eJWo_"#Wcf;K+?RMC?JW\g=]C^mIk/Ust?m6^V0G
-.[\`^5<=`r?:On9J7~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 634 554
-%%EOF
diff --git a/doc/users_guide/figures/cups_printers.eps b/doc/users_guide/figures/cups_printers.eps
deleted file mode 100644
index f08ec0d..0000000
--- a/doc/users_guide/figures/cups_printers.eps
+++ /dev/null
@@ -1,572 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_printers.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 621 416
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 621 416
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-622 417
-12.000000
-622 417
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-e7e7e7
-6f6f6f
-b7b7b7
-eeeeee
-808080
-547098
-800000
-424f63
-000080
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPUBp.Je[Y6#VRe(FdS/7Y#N/Jh#3ACK$'G6?=3K'qE>Fi$5PH+:e,oBe=lB\mtS#kM^!I
-,Lj!1q+HC'.66C'2caC'2caC'2caC'2e7W/W7E]D>UE7T.:'\;ZrlN&Q";q-;cd!T6g/nerPe
-W7i$KB\>2C'UN)ZP"''8T:a[;i!EY`2WL"l*lWhiZRTEB)Pb'+K`M@0QSLD\R4I/=Zn%'?#`>
-d+FtYl[GT:%,[_Zga(lE(OCEnX7*d%PsfP\Er[L3s6HcuiQ*Q5o'EfOUZ#857R)!r&*4E"G/;
-Oa<6/S:quI#]#Q^MF>pWM+<Oq*\X"n3C)^*I5'gGNQ:L)^Oks.gkF9>J\bJdYd%uC'te?:tt%
-#I2OuW@<<bH)P!Q\+2FJK[WEdCF`73B`-W*fe9:Mt/L.!A4Zemo,I#NkrZ<YH$Yk#8ZfZ-(SL
-j,:K5PkQLqSq0h#_Rn'II<7)(s]n>;WB+6=R4>Higu.E_4(lM*#!c7q#+!^tf=#E2X4.&uZ7%
-&#]rM$E+Cr&#]q"&#]q"O7Vfr!70ZT?SDV4(!aq7g<G46T(C^;mF>;(:Z^.*P2lJPP72B22?l
-!Ha1f,lEX7eMFj8gs\%TA:IgYMG@pe%F3Ma_W^3GXk:4esp#dnZfq>*h8(*:E`mU;LkZ.1cPJ
-_Dql[11sdpFe7(H88dE@Y3>/W?[8g=I9Q4S(]-kmd-9=<*Ru)ht;JbVsdg<h7kVLPghTHP4I)
-$'3-cdmoc$;)G&C,IM:/=6#1&>Ff3LYk'OX@eg=jMs1Z_J9@:9d=fC5`]=X6[pdq0;jpJ&W8J
-8N1BPd)F?`]LR@5Ga8fRr$QD3KAeZYs>FoXSZoD-TQT#=mm;H`N.oIos+$VuN:PmnMt-S":L?
-[*c3Ud`2AcVmFTEpdo-m^NQ?Xo`r#S<TgI;2I(SajmW>V72D*4T;OT0NuU]GeY9co@-jEWD71
-rtn5^=ZL#*o.^bVOLrZqoc,d$r:O/hSp[V?b7g(mumle?]nBHB?CD'b1,e0b+V0;0T[3q/gsP
-&<0IDg\n=X2[PD5%BoU`dfWfF'hc<h]M>s1Tl_@lD1)(<W?WSqRemEohr3&;NdBFD.3-[L"NK
-\C*C$L'V"]1@qs2qGeVWENTg6h:n&<4\<Pa)bMu$/,i*9qi8e*CCmhIm3Lpo!_Ob!qI&1Z2.o
-Q3(RsDQJ=s`)"Z>-]j)IrIm*A.FGRTCNK%>a)8Z'e)'NgG=NQliESHgnjS8ODmJ[Ve)'VuAjl
-cPGt("Q(Ou^7c<k@C#N*[dZ@Z#,*p5eWb7k9?lG&aGcouD$HtqY21]Rljt3EJq\nc"P!c@mY7
-n\H6B='hj4-3_H050ho=Gr(@!=a6)6D##4d`11H)!VJLrP$E8JTZ0`_^lUX7*6WD1Q1MTr0g]
-07gcHF2ge,d0,78H*]8<Em#_(M!EL)!%cgT7kupEijUjACmWNg:Fkr9CoT3[HZ*ODsVV];6I#
-_eVdEDR8)2nb`&T^O/X]Y[R=t34ZOh:;q,8gFJd/)[>"I_0$`R-[Fe)dqd,/RFPO@EC@`H94,
-ohkH^KP5h^7D2e0a:sLQh7FadP%_RhAql3oBL!RT0Rb`bNpKp[M9n+K^DB1n2%#-Mb*^W%E+G
-H,"Q)[=ndBXj:(<Pa`;T)bKA?"lJHH1S)D$h3&Ya14<`aG1(+=EoZ;b;*'k<\Lf^FDBlB][e+
-pc)7<!>WT2N$9F8>blYZL2D-UpQ+d"aY'gtMg@qs0rNqmeM@5=T9QI4R&eM`4TgJ[eT'1ll>S
-#*Ptk&%"^N23$6HC[#T'h2*dh"&)&DX/TTPIgFb?*OMbRZsVK`B%ENQ3]?JS"1EB`pLoYOdS7
-trO-C:m1p(,p\PJM6,CHLN4U%b4;0"\;6qbYT0rD9m*QM2arNrLd2Z>+DSPRCb,lo&D3=I&Uc
-.d&"r<,TCJt#L#i[]j'6E`u[Ujn^.]><"LHk&>`unXb9"7VWP$Z2M]nDLOkp(IW7T7epI+S%*
-:qj&Yapfjkr/AcB5EZAaeOFGhITZ,pDR8SFf%LP?4e('%c-#D>qXRk#2s&dTrkKm4;Y"SGhC%
-.Ch7uH2`a%JQ*`ANe*b$)!/-"=Mp!:psGZT?UGHGD7m\s[=X0$cAF>Kl_kBfbZJ`)A0c04b9q
-F8>#`AW,iI4([Gc.b?Tq5S(Omt+Bj)G%`*I<E<c\F@Ga)t4eU1P?eGl@-kF#COGXe_gE+TtIs
-DEkK0@_#*'i%L@FbGW:2lGI50s@D4eBa5$9e.g1;T;EAFAO&,Xs*_g[(FbRUA7S1XLATYdRX1
-!BgW""]ZUgp"AS`8>(g@@h.2DBlONqj/>S++b(/Y</\"!]5Ybkf3QGr3Y=eJ/-MQn,Vu`fn'H
-6Jr)I!<<*"zz*m+7<om8kXigTJbUNdM<F8ia8pg\"7O/o[3=__`T`PpH$o(DTf54RA8%c3H+]
-sW"t\ro9IDW6bYcVeo+caEQBl7.E&EeT!I(Iq.B0-`KW2#FTpP(R]M]BSL9/LrY<1"1Htj/*k
-YXjGX7iRu_q[Ie<?r;4\:0kT=S)hq4dYG:Z%8n">aG\6/=P;_CI[-4=6`$%Uu^QP]\RcW@c?>
-%;SrN7Gie0Ck*Q?-b13Dni!>M;Df6?&R#XuCSG8oo(9DVhRFE]m9(RlQpB(20Pt"bA__UF;I,
-PK300Im#SnRiWm+A50gd<_ZLA9f5YO2F:?WCTTMsHhAAQpi"dYmE5n-"96Jd8V/`aUD#RNPg1
-+=PqR4(9mAL56\qdC8+##KijQt$4]0&mi4%g\-NS8D)Fe,O?MGt0OSe/*$'F$3:2^fg.SR4!l
-*oibQ2ZY/^$1uH+Q6$0dHr,=-of&HBd9[gWFB)$3s523CnESWNE"NT8Bcd#eJ?SP?3MF7(q_;
-Hb3l7-^bF.>HJZ$/\+VTkNg[ObqD)+u'"-A7]7-lbhFtf^)c/-d'^a<iGoPIOY;%qVk,-b"T5
-'(Q('^KcNAssscBdkZlqE^T/]5Om.^[f4<gsqVBu/u_U>]#Q`uB/<hAbJcDJ/.^(>,*irMi7I
-ouGu.q^g6HG.WPEqb.$TSN4]K>LU$X%])[F^JcdI`AOH'AtM[c8m+c'X`eFg;-P:F2.k]7Ip:
-e(nm[i=,)3*df?2!sI48)g:8kb[[Q.<Xq8>=&Y*3d/I-eJRq,5<FdRBQh)6Nj@+$QLbDC5tL_
-M"Z2fBu\IWq$DG(>B0tI8CTgc5s4H(aVJiDsZ4X)Y9qH>ALqACC9Un''])q8s.;;kL:XF&8`U
-15ocl(Rs*JrigXQ/(A#.K#?-H]/WR-caqlp`ldU;`>.0F!eX;>>gJE"SekT26\g_37E965:W8
-,cO3ZC)4I[[Zq;-WM=G,V4hWgn!k("/G/(s!VD0==^P*I&enp\JuS3!pa@I8;.0U,XG8a_T9A
-7kkkT>V&sdd#AGraCmn'>R-,HU&`6^L_TV_C#@S.FA>>/#^7D#2o_d(b0Y.W`i=&3NRkEcI`o
-mTB\T:6]km72=n]!Z]_W=Z,0_sMj^cna@u3-K'\.#2Mk]\_[)H!SId6WDjSZ\h@]X+14o^[d4
-D-[u.J.XZ(CBqeVr#*m+6DqD<_O47[Zn%&hrsU9QgSZ?kAZFWOa9*&h\N\:,8Jh1iCqRgjC]o
-@=^XD$W@/33s)1>9RT27\U]3%B6%5'A!YrJTo/<G>?J7E\\`&kGCn$1.)jO7Rg5D_,jn*ij#M
-Kc-Ki&qV6TFGH(CRf\QcPt"f%%'>5<:o]V:Y%3$!F9j[*a.Uc:h`JDFQlm'\R<_(0`M1>5-/m
-D1-EZ8D5S.ae1;,Uio]2g2[kf`7-1rF.'8@gU;-ppA!l8<NEN=O-SI:794a]1cpS`Od*97Q`3
-i(-XV1JJ[oB,D%l4c<*^`.G(_nkgDa4t7APZ5VPU+"p0'n*o$QqYF*!>SIG+$_hqA\!Ib8f*W
-#+'eb/n:qNIGgZ,gu*lqYeuEC[5#Bb0MhI&5s[rQlEbD;\!P/6ojH=LT-Hk">n:q,+E0(g*CL
-FK3pciE"dq/oF5<-=Q7#$)iLLHPoXX6'N=_Xd<._713Ya49HQjXk3fg.Q]$O2;4+msX6R+$DR
-n:qP<[S`s!1[lRd^)J>qoqNPI3*2dEWNa?Kc]o:t8_7\lEkJg%E%iODUZ<YIrqEo%Y9_inJ#@
-J$"?nm"&hUl*4b@\oTlX4+mmC.aj-Ym8TOoc/aaLkuK*NV;JfdrCE5Y]s@)'eoc;oEjAtm;0l
-F\;Sh/$9oHMaLQ,GVg[]-*4Yg0CK5NNn!VYLc3V=^HB24>/lF]h?c.qoTm]B3-351@*Zj%%9C
-[,2!o92YL%\U4iVm=$2&!s<cepD3$+=j<A3To-r<P,#p2lqG#p5\F_-dU`eEP:n<S\1OYPfpB
-nf`SjcV;/==QbcFkA3ia)>9>GgD4453RBZ<IJ]fg4d\bC%Y3i9nqLPu_-u>[l>O/Gf<]aer%R
-]*^$)n4A,2A+uU%n0)a=3$b37:XCSGJeV[^E[3H.7&3ejOBG:n1mN22d\uX(A1,fik?@?p;2M
-:$-%Ig%!'SJbV.2f30K7Xg6)G.fpC)mUCFu<a"n=#k($,>L]Ck%Q7NM0-mu2:A1=g?'752WoR
-\u(PpM^cDRr?nI\<-pbF=3db;!\cHm;=)s-=iACS(/!oMRa7>WK2@g"54RtP,m&+A8+b%0P8H
-QI9Zauo4MHXgisg=GDHe>Lt^;`>)[(DG=5lXQok<eY=]VMEJe\htAkcm3Bng])#G,gYo7]PZh
-[gEH-)mCG0AZM/2tDOl@ieFe$d$2kdFaAio+rO1RaH!=oSk9R]t47I;F(R4]_esD0f>nuOjof
-=\6Z+)[6hqRCq\\P:SHmrOu,i#MT<GkgpgS1F,/"mmDBZd8#O01J![gAab1TfMsn/\/jl>m;;
-n`9T<<b>s4jpZ?\@:0:;[k)2&7VbnFb.#d!Z*j!eY"CoIESCTi^9+l28k#p[4Ypqd<8!L?;lu
-(\)U#XM?A6RT0=+&."MRU<jIXGq;=!2%:Uq1ip=3h[M'\GB5SC&#ILm054j<Y(Qhm5\\Mm.kI
-lWu%U+JoS[;=HQ?b5N,]is1&@eFW$mRs`a)IKr45"kk?lJ]$j>ogAD=\I2;OF!nCDth)dX]Oo
-<2QdOL>Otp.h0!8jhP5!Gj#)6[mS]4O;oMe>K6urkD1/hkg2$KiB.!3E:gU8$s!k-.jkK^GD/
-ZQpdlh_"h9-,CZ-TLCK.BpiLRAI"]'Z>t\je9C)Drk"(DYTT-(7V)Y;CaJ2;ru3K<\GPSD8ZS
-g='b-%%Xki1tlY`^%IZ07AYj$BpR.=a0q?Ao"NA\FhJ.u'I@+C]fXqro!CAlX]jNmC@b#>UM[
-Aj*IrQ4XMsS.Y9sH'!l#RPgM(":?QX.cD9)^Wa3[F!KQW.9gR_-7D>TkqinTAm&]kj"Bt%k`f
-PWdqii]&74_7r;OL',^l(%I<a\l_]Sj9OCJo8nHkgD.J.;P\Mc'Ci,AL=7_$!bH-a[a]IBMln
-fh.0>=$uOqD=BNV7gbWY9JGW^^3-C4Bb"Zd#YK<HJ2BL,&Sm%4JGt)p5lYTn3kO?:2[hD)qT6
-j)oMIc$]>#*i"ZTj&B*]UH?X3C595aDK6Vsu"1h?7OZ>gD*GjWd(#[%^4-pL3srpWGI>\g@rK
--PVc5A>G4=nahqQB6N$ICRcZXXR"+!_'j4KDgTVg;<#Q5ga[m.q,o2TK,[CgV'<7-,iE..13'
-f!&'jm?&bV-1MG((=\>W&7p`WD/B);BtM76tBIIlj4EOU3<V4qnWcc''_FgTmR^/K@)^?n`s%
-<ZB2jOD?SVmceqo0-NkCqqs0QSMmTgP_1LXWFocnt\^W>^Kg(k15qlpLH3#Os$6OB"0-ub@YG
-u9,boH+-Pd>;lfe9CZekHl(TG[%%-u&5Cjk<L#1;`LKkEJHF?j36tD(Cf[ci\mOmU;QX*Qhef
-S5`o<DQ/j\o=ZoRuP?\BnaZAe]-P9=UU'ANMW*T%UH,CpTa5ngj`$K:/hjWASFG_[`BFa:=@#
-W5a^kb]h9SUoPgO\U2b<PMG'FSg*NBX^1:!p!T/k5:OLuUlDBbgdK_OkF:VNV(t*$fjEdl]S!
-P;[KiQbj4<cgW1DAub-V\:\%Par!b"<38"4,:kaUBNc&JKdDMZKDNru,o4e'#"fO"?chi:4&_
-qq!'G9r?Ca.B<S=)DlnjFQSJf,13Q8gWB_gV,Ckl3>?2zzzzzz!!!"DF3(-=;=LVZ#6$lHXs1
-DfeHQ&+)mQucX>[RME%?4Aj^Z$9XPhp&X>Wc6^s15ORsd#t3#BRa]:>g)>a"7"<<-rif2C`&'
-8H@)5!]l'J4Tn@+%Agi9eJ:#5Vr_RJ]S$>U&-N2D#d8l$FMm4#do5/>j:"kZiF?AT%_7('YY%
-#B!0j8+OgU-'&8Rma,FoDd2f\=>&l8<zzzzzzz!!%O>&H7NI>_H1F&H"h]moYk$(QJN`%oXC8
-VB`#KgkJn"s0em%Ao`,1rE1B9VmZSm#UB@!-b%5hb3I?E[VouJ;Zo@J;k"0g+2#ha+)&IIAH9
-'a.[mLuT;mM"^eCn-S+CJ37T(oF]AHXh_;@0YrYDO6>L)pbqC=B&>R_q]Sd3aLSd*2)zzzzz!
-5L!)+1n$<pipp5^cQK?W>WOc\gH@UF#U?iDVu.O'H?*;`jr/&+?(t]PmWS5m$jdb-fW\L!C)s
-45]"*+[]I"0C4gR07<3/'qLJ0>D-TTio$i]3(Fi@^%?u]sQ2+EHdVj]jGjlJ:a&!*qP#iT"&t
-QLcB7_A,%:"Xf/ZU<]6VGt,P<`tm'(McicVn%[^$t;*JY1+U<c,BmgVf3gWru6EUUJ%.1fYJt
-P<s+o$G/CklM?%'%.7AO-\Au$i/-BK,Oe+j1aRAnGZ#L]zzz!-oE1n8l(2MfAUPk>"5Azzzzz
-zzzB#+VF?NjscC@2d7_=Y,Hb'\r&'lseA_^9b&d@/8^:MTtIR5&XJ;Vf6H;qj>_197_"As9s!
-RC8T!4l>JN9@?_k%XfJ$fT_d:YjbrMWiF9%=7'dg%qS%A2NjO_cGVBTQ:t$[n[6IYQKt-<RGQ
-ZkaSj<4AU_CXLA,8??K,_)./eeKQ<_>&1#j%AV7(-Eg;;Ec[+\VYjD;98]$Dj5RXJ%MdsE?U4
-6d(fGe*?c9ljt?"g2.!2m1g/q/@kna3.S%@0&mJ7YY;+VGP%igcme<`$3*OCVq9^fc!lTa:_h
-.3OS\"AElo[>"7eoBI6_]n0DA-/[\F=OXdGTI.i`Wa9WBb'K*_$cW*ru];gi!GBE3Cf:QpYfL
-mr&oMB?M[4sE>Vd>LJ>f&F7M^=4S@%(k=.Iotpa0;4iV7O^$/PR3e/j*!8<2sbq0N*WJ54Q5#
-28_arA8X_<.d9ou.FA%D`kmHU+/7W;NJYk0;l=59glcTNe(:71/1QZ<_Pfus?BJ9@asNlAgHf
-8?LPeY;R&N.Tr!@F6]F,sDa5#@"g76E,/X84[iTci(2DY*QH,?fpm]/6L**NYhrOOW,X"C=bX
-a<o^FoW[q!m.PoX"EhDJKLGa[SUmVX%-pJet&g'EnbTsZT+"nf(;ij1r10>\SKXuQF^nnp\lC
-OHjQ.h(A:(:C"%PtU2dS@iTOhN?*:.ocOpJKeAb%:n=#F!QWG+VeNL$HVRf@)T]fOd"kVLV[B
-YVM5h-YHbfOV3]@O"):Ha;t/>F@H31e=BOYE5,17"GPrd_PCFtOfB7_E"@q(oL?#u/kB?mQDe
-.,9Oj9bG\5C&2Z%=dWR/r1Npk<E^O1#Dq8EX"nMJgi!pmb-sCuU>13%Z/3m.B'*FZ<SEAfaeo
-AVrTK\US)#mcrY'Q\T-l_#&'t'/^%5k;[66.#GT4PU5;_DUqs9fpp6/.)H34/_X-rq!J_@"2(
-,b0j=MikP%("PFp.8sF7(UR7U5UW\V)\%qP'i^-[pX2Z@^>Ti<:UXq8Qfq*0NpBG=!"Fo7Z/)
-M5g;5L\*i@J-A9X)E[e`5BU8'4K+.K(=]W^\MI[&@VhC;HjT0^G\Wt46@U-Z\APla4[V9>V-H
-W+,r@#'&/ul$WdSGp)>NVW4Ok.,R^ZT6"Y@'jSENguTU9]UKk^kBeEhhCEV[>@%-^d\PMWr,m
-7ER]X'7K_.Q7T.X]I.J^X!"9(VB:EQ>/K[]V,bRa^8Z*KJ$aZ!I58Y4C_4d]VeQTkQc=]`kmU
-V?W1/,:`n)csa1ln5V2nlK%/na?IK!VBD8*b/AQ19BX\1!_Rb:A#U\e6BP9IL7j*8rj99Rr*-
-2^fYN>Xi,>(1K=\sHuSHg-6n,YlR>KV#8mFEb)c&k0V^MpPA_09\:&>9oNPmEX!?TA]/]0e1&
-!g<q.jpB8l`<@,KfN2@+LN1)>uNFiqh)%u+s?GkkCLUXdfreYd9W/4BZ&WJb?6m]'Bk%(or*m
-o='CXTs6eRjiY`C&c"R&G/F`jnfXY%<F0bR#NKmtlpLbc'h7C7AiocpfFAU7[Bc8eQgiJgLu>
-J;"1_C*NllJeGJZ@?9WmXp477K%cO?3K^0(%(1e89.nE#g1]POeE6*$%A.7"FFO#+6"%hb,:k
-LkFD+LgEO/YMYY\`(-UY1"d6s\21.@3UKQ4CgAK+QPTH0r=5V%DiCfh<P;VRA184M%OV(o-]q
-tRVhTauM#-dNn0907BaUU#?gS+8$8T.'2LM\[PdbZ6Ph'IWoka@K(?RcH'"0epguq<??[RH""
-i#&WKt\G`k4RFX$jU[m^N1>Sk6Z\b^)4/qF,=@kn2$F_l_RP]=)K[q`#i8dX<1,M"d]9VSX*m
-_o@@KkHWW$S>.`;UAHi(#I.jfO!Gg'WhNr#*/GnPmE=Qe9Bhqi\$."BDcHoqe2i!!(sFh"?ec
-H]E>]=W)s$BC1-O!u#)V_raIgigo%4bJf&rY1\N>;o-6Y]Tq2g2*/)=i6L-Q84<;[[g<RRh"D
-.Fp=TTFX9g<W,Lrih*E]VB)*CMXT81NO!eJDbDnq5UF-FIbA8icG4;*e3/Xl;CL(ilqcVUE,I
-BgX5A?=s/)<F6SfW_;/14NX3bTOFI6sFiW,8&ulTD]<jk!%h4B.-ZQJHFi#/tqsV"tc:eLW-"
-Z"bUI""eq.SWirGHFmd0Zh,90LOX?+k1MZOE_k;%<U,l7n&Yb'TWk@&KP/V1:K!`nZePM7LIO
-$+4*%r5**kULfaGK.rbPSa#@"'A\STc6M:gu,N>98VDO4@!T#iip;-rQh^7%^92XbY4]`1pi7
-?t&I8#au8$I+Y6fdI<V]"FgeXeTSD,;kUS6QUa/*0fMH"zzzzzzzzzzzzzzzzzzzzzzzzzzzz
-zzzzzzzzzzzzzzzzz!!#sm%D_R;!:V8Z:`FWt;JkS"IHh,$/"]$@fm^+G*+t5)8o:g9[D+e!P
-3Yj?ISr@Z._jetk5=KGNH'^,hA`D1%T(ns]XQV[]'d->C3pbUg:7!pBiD/qoeM>iHAIao_shG
-F#.7m%1%Bake*4XIr:A6*E[KeV&*HK#on&)Gf,`B7-<T0V.D^/6.=&D^,'6r;?'=QhX-F/73<
-+aeq*1@-D&G\J6<`&q7QS`-P&A@:<Ws+F4#%OlNn),cm,**k[ClrY,ZSkEPB/7J[r/Sj11K`f
->B7\<2-k"*SUUP6[G[b43ZaC)5\j>UXfSs+QsXr3gY5OG8VPeT*UcCGAipUsD8S"MNRYEDT-I
-\ZdR!Geg,@b6V`#hY^/uhhj[N-23X`@GMjcB!m7eE88QS4cX3DdbgCU>mi2bCCpoi2nn.5OFe
-J?BBPS?$%,itq2nmAIV)+3\jlVb-58ndd.=AZ8J[FLe(C#:%L0NSRZmH7Cb8V`RM8LlE?>WS9
-A1ink$;dts)9fjeEf$;gA_!6Vs;tURV2KVu9b-S5*M6g3O9u$K?C3q=#,O*Qtg:)o_E?#L3".
-*J\-^IY4"(0WMP>gDclGZ4*/J="\;iWFM8WDN$fX0uRB<Sbgs%E?FDgO"Setg_SFnHl$6'PiW
-s,r$#Y>1V<DG3#=U,Fl11Fn)qUDKOgY/WEBEE)l`@TJ,g'ALY\'[FY+%1;m=[pilB3ij*+cF-
-g]9l5P2)Noe>:$;Yda`XOb)0C!J=6&&Z/kBSK.c`KA.lPDSl\08(GKO^LJZBr1-!(D\E$LcNV
-j!P^S!/f%X(f!'EqR/KTJkaj=%7#:*>%DgTXM>(4Hf8(-eG-1ZcPZ#YfWlHo062/?A=/=Q.kj
-3A'",J%8osNY=[#W9kndm=R@R=[JbJB7ab$[Ct6Y><o(!JB@Yif(d1Z$dhr)ps":+9K"s21b.
-fn(I93"@!c%W.5](Rmg2>q&eX$5Ibk[-OJ`f6[r1&06<0Z*CrOD^ra4g&8)"9Y\2XiiSDrZVh
-+2ImVakY0?~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 621 416
-%%EOF
diff --git a/doc/users_guide/figures/cups_startup.eps b/doc/users_guide/figures/cups_startup.eps
deleted file mode 100644
index e83f6d9..0000000
--- a/doc/users_guide/figures/cups_startup.eps
+++ /dev/null
@@ -1,596 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_startup.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 621 416
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 621 416
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-622 417
-12.000000
-622 417
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-e7e7e7
-6f6f6f
-b7b7b7
-eeeeee
-808080
-547098
-800000
-424f63
-000080
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPUl#,OmZ@sb-PkI90FW\d2XLJ]eH&''4RreX?UYk'MAeeI5jZ/1LQ]<:`A8td&%N>2i*r
-t`K%"LG0$+5>r!O[LU!O[LU!O[LU!O[LU6.Db_qQKj!+U#+*[BPN.5#*kXhJk"3YoVb'..YKh
-4B-1(H8+lFWeFGCN0JnDq8]C5!Or6pW6P2bfqZK6qPXiO##k.q.DDQdn5t;A\;L*OEP!PJ1R<
-0MEr9l2_!O[-$Pa^d`D]d+X:5rDhWlp/KP!EB[Nc)JHR]:aDWKJZ.;'g>%:LJ079d`pO5"9ee
-<U;_ZP1hH5/q+#:Fs>`1c-hf'T%SF2akdQOO]ZrWhd>`+Se)SUJPs?`MO]sAe`is)k6IbD7:n
-#AR>&$d@R^[n.`:,*U:@R.so]7\&M2k?]-m<D.epa";+Z#Ks%d(5]K0^5?/:3e94V_)RlQXA7
-ClEN2&I'm#<81-]#+/0U3PJE#.'[Z;Dn[P0,YJ,.KX1N!aGohWVC..W\JfXq!\6Tf-j_TJgaR
-TJl9fTJgaRTJgaRTJgaR56$!3E%`:2J0B.eU6Br2Rfu$JcYp"q8"ZnjPt/<A`93c/E;7Ff;o$
-3gp<i7OTg^jj(<q'sD3&SqYJQG]m%`<(_ME#AArfgDLZW%j>&=^^RcQJ*)rJ_NL79Kl`O<;/#
-h8"8X6hV=rVKe0QL;tY0q4iEk$oNrYF(`#F#C?C*o5HZVlI16=SuJ&Vu-8$E"(?:99G[s7XEM
-Fj($G)nZf9cRC2EQD(g>M`j\6LFgVZ#lbDc#h5jiUJA_'7;WP;uL`[sBInXno275:`(72Fr60
-h4%Yk;41V'F6$DCls]'+BiUk\\j.fsdsMB.Sp%2U,h>X/L<PF[*:]ooGcSiT!-EMneR$H8[];
-)JGt*GLGY9Z:7p4(B:6hjus%+f^=ZcPM0M4D<o2e1@+FsfJ8@Rj.E2,SW;r*&+eK6\:LnpcF8
-MI<U<LeCe++O&jQc\Pkua6^;%.RCA[o;C--+:c%a4+^X9B!j7);JX(eZ42XN_YCDH*[6Z]3uV
-!GG?>I.YJ=^rV`Pd$=B(^SeonH&=Tr'1maGAYTP;.Pno9b4kbqq[+.LT4)!U-(h\1V]ff`>6t
-3csll+@Z-gp9Pn6ubDiZ<^slCYD7\nFN8-T8ZTXLude2<%cMS9n-9MJIF]Nd@]f:A-\[B,<PJ
-S,3k"1V;'i0/[[=oYrWUQhP/t!LRV[F,!6upN+/;&cW,u`P##*Q:GL;V&](4SQ)B?SmDf[E7-
-'5IGrakEM+r#%#Gesc;If":1Gk2BesoV>6!*i"O"Z(>N[/j'f#igHFD@W7C?DWWb,OY.!u<r2
-L3USH&BWS!h_4\6i*MK4,Q,PXE?1CM'9-$f'$gOn#<jCZ=GeFn+VdHUJjU,a'$[Ad=!l3s]$H
-DAg+g1>F]U[mP7bO*3k2*Y^4S<U'k=:C,A\8>Jf/pG5Q-f(u.CE#GQZh]]N/^tQ\N2s&u;k#&
-@6>][bOqR"&C/O2c+#-9gW9nN$]@(]VQE)Sp*,RNY1iHg60DRLX2m"t_\*!2=I9SERASSP\)b
-T9tmn#rZ:iC.TD.Xf,Xuk(NiP<\F-dO'qFqqE)B.3Yj0<I,W2_2>hP:kEVHs<VqEX7jfMpQ;I
-D&(RoiRFadf(c:8APYq[2Hp^?6=<N)j`ACm=ptY2j7upj$&:stg[oL?\D!ZD13$i&&/7"![O_
-TZ[]IZ$aRYt)[Y#X.FkUL'5[%s@8SYkJh"Ga74mAWQhOlek.Qo5'DXsfK>^FNTUiHAOAh;.pP
-FN$h4\qI0.Dg\:/W:)Fj'h()'8@!G]hS$^Y;fZ-c-Q>pRSYh'RVLi9mR@K!HW4thnNaM,r]%1
-%osVV)D?KEGZ_B<5[?5YAb[sB.V"A4$q4(FK1&3$CV*$-U/CrdX\^`!dK6Hd+m5erWH6+<_&k
-44D\)]8F2C`H'r*:j;%bA)uGI_)ramW)paZZVhgVV.9=kkQTLLIk;0%S__CAZtC.p&A0O)E.U
-g:^YH2DdA*_kKP"Rs:KGm8a=%$f0u\#BZ0r*3LHnOfS'!FfiB(<W6C/>+#r>?,\.kXaZg_IB^
-o@f9!o[_&Z%+dJM\RKnR'qD0f"SSUfE6hr\h!8):e('su\\^q^o_dHr,tjGp!R^`SBW_]/<sm
-3;'&T(%+!oA<o>8%4DppK&=/5,@q'^dipEo+]MaK.k++l58u259F/Rn:`UFnZ.,`[""^C;*H(
--+Rk)idKttn:A>XT-:`X@^_g*5rpJPjSh6m8NWQV>0q<@`1W4%F^S!JF$If8LYgPPrJb@@:.%
-cPQ&GX,4Z-5*Ijj=55?^MT/zz!!$t2Q>]]oo.^94:%S4Y5P<@1hY[nu's$`*ZaFs]C<OVRX'*
-0*cdt,UXgpRSi1':XD6:Kc?'ucf2ndnsmm_G<Y=ni_d7"6Mj:)'sXS/#b?=%YOC#N^(,mW?$g
-h]b$Rj^*L0QVP]rMJmAK@#oWmFgj@V=ACAr-P`!8qfLI"l6--f:2GH<ai14GeWLNK/W,ESEPp
-[oHnn4VdpIM:@`:@8S;tFm]Vi,S*N(oYbFd;1BY&)5GbK)VZlhkk]2<r@5W8OfIcp,f>\9LQ@
-=d)V?K_/@7"A2>VFeJWL7Vu[\r:VfB.BN4'6PGYAN1+<`=G(0>5a!n'^H[TH67NW;_.sDH@@p
-`#&>alD<,bll$nSV69HD^=<"bkhNO89/a/e<d&8d9T-E]ijC.WpQ#3TRV#39R!C1mTX6l]/Is
-!&2TlDXipVe0-8\/YB`H`R[^ds`B11JMVYS1T?;qJ;0=l_eJ``I`$At<&[\^_o&:V^k=o[1pF
-hN$V`VlOb3.98_lt[3-l)W^[2&3`e7lnMqkuY=$Fsfa!1O2+WFj>l?9CXdMCmXk^'dB6`!4?Q
-JFhOm5RME<<3lfm0,<%R=I'ka54#,)nl1MKUFKX-=N6Y*\Q=do"8@A0fj(d$`0[9B,V<FDJ43
-&jol2UJ6+'d)a<#`/&dJ@".?L5knQ$TQss5\LR0m5kfXIW:KH+2pP:$kR1de-?omF:<\*LXTE
-*EcrV[B5rtl\X>Ao<7oK2Yt%#[Tdf.RS=g>Q=<sac'<UaVN_rp%543"h[]XT)RR&kr+YfTmBG
-m5D=kM];1>DL[X)<KIi6_QMqM?8"r+a4G;ls2XZm*"e4.(8]cGH/@7+nF;6m7tc$c(@j1fG4X
-'iX3lSJ&P,J!YY\WDu%M/(COkW1G`TXSabID'H+p3j>/Mt/@NhA9WsZX`C(b_I4Q%<fC"/;Hj
-P\A\'t:f2>q[[O-QHVl8oi0qUo?+;gXl0M+\qWd5J?>\Gq[XDr0ek3[$'Zch+\g-Os[FEc6GA
-)<oIHqBPq`!mEKC<N66e$n8,^H@.j%Xa;gI=t?)QasbF)QYEoe^QQNik2-<pPm85;i/JXhgk+
-AhjrWFQhR#NOo=J`n.II>`@_8CpUlSF\K$a>KFLWnjuDj@r[t2<S*'^e!ld^7<b#ns+IK+C9(
-RgRK#]kbZ<l,X5DcmhchVNeqD^6mq.Lp/b>4:Q^^$-E7[2-lL"/eXIa;$5f%0X)LL02Y.ra1G
-IB59\DI3%^$VA/bNlPpMHed%b`/1;G9^(N@Fr!A+MDgq%u/pXI&hUDDT$,WYk-iN0Q+3Hg)<&
-"1H+#FNEE*+G[hs:><BO+Z73K$V%)Sn2qhs!-(u@QG,m!4>F-QVa',t$U>9MWaE-h4;%o,"4_
-aB5kbFR&(Z"h90e9-T`\"@cY\CYUIVG"O'7800Q'U+rY.*b4lHWQ#=\?j1U*i\LQ=8ItXOFns
--;V$ig'ZTcmB1P/4"I\bMu'#EXiR]O^$(CMfX__I<m)slYrb>?3RTuZk^otGhUO\"fre76Bt9
-4o;iqrFoZ]kEZ,SDDCj*O06Ot9Q]F97)X3Xq<;G,@TrRI!83pt;3hedbG2K:WfrN$>Dn`=JLM
-V\$LkC]5M62'`b;)[S\!_lRK'U%fmSa`*&VqKP&`Wr1Q;oSMTQN"L%HAeRSXdrinB@F6?>ASg
-R-6?+F9^bQ>rp%)jCF0ABhVuRf.pK/fE6BaZ2=o;bh+r%a/=W!n@*]\ISXECNe*&)g5+Li>O0
-HT+]!A_cqDiB$p-]BP]me3TT;"to5_X,4p&Da:.>84:]>e?K2N5[%[\4)V?<,%nH$cf9qDaY=
-G,6,s.H^UU7bE_H\T'Fkm<03`4g-kE0.nd0O;1YYC#%i=gb3qa[S<^rV)]W_ak,BLRVmXpEp8
-gs5,Dr<Lj83pbpptFo/,lP<N^;RHaPjCm\AA"?TlUd.Od?-<H(';n85>?[$_H]gNa$&0RLr2he
-%d-]\.;B1@92?dJc_b-/p1flTOK?cKAQcjb8r97Te0GmPl1"#_OOh&J?IUa,+G-`cH$Pk<;=j
-8I@1>%%$67I&<Y,)jP&)N>,h8gm-:Pi/O4D./>bQ2=3]:RrLSjo=",4OMt3>W@2]1r_?JJdU2
-ZpF'#'$6u?O7+(+:nMilN3aisReV,l:+Iuijj`-lk#de#g4`4+F-f!b'bD,>tX&bn%g'dNO_2
-L(9hHO&ijZ5Q`:Ze<9:+gDb\$6'(k8cDgC;NsJ7+;ua`.8D9e$:&>Njj?,Q<QH,'L+tcZ/BsQ
-XU:tKjI+ss",qEA`(Sn>&,JNJ#P&Jf!1R5T-2QQpqie?jXH!?K_[e*Xs?N&lO]i\[TQnG8-*u
-d)>m!e-H>kcnj[q7toqdN;;g><C&bgB]9\%O'E[a0?UC:Wo5Eq4'#9lLGRV^m7e9t3t_,I^Yaf
-%[W^cF\tB>Y<_N`/QSXMn9<\ZV($jBiQI*AiEML()Ai8q7A=cod<iQ9ZffLNpMf_@@LHDHs;o
-%H6I+D]_O\D_.1\annhQDqT-f28YcQ0,#'L@=$6;iI#sa<VF:SSRMbg[1enGT^"8^8Sb6jlCg
-7/<@:l@>3kMG@PC2+CS16*R6f#h*AV-ANh"Y=fN@hCAgUgUufm*6iZp""t[O-2dG.jFWs*?P$
-;.ne[VQHFfR0=iVHe%KUJD>;=>Gk,<bh:eI.7ZFir<+icA/hlqk)8]2kSlHbgVmuGj!6eLhTd
-t76bu]amPgFV-5i;Af:8I+d]AONg!"AXCuDb0os3jm)>Z>UDuI?7:&/RcWRAH29I[qZaa?hu>
-J"FtfTY$tmIG\gjJ/96:?.]6C;'St3iuQBQH!c'J'RiO0jX%h$m=E8_OQj]Tl*$;%g_N506c"
-?G4O/;5$<BfSUHm"V<IPF94qMUYESCfXZ!!i2j2Q?*L>d5E>sbpS6"[9^-lF,)X4@t17RN])Y
-:S(DbG!(Xb*gZaG&9cXd@Y:bg+Y9ehr+dI'V!6.W$7gi)GkIEHBRg$#E(m-DP`EmJYZ6YLnF"
-U]YafBPTPO=`UsOXd[7E[=.RBU-$aY,4f4Ym9Wh5hofW#`Ku-Np8iPG5d"-@K1fo;p`rR#rXO
-U#N&A57@#Ul9TPTl&C,Rn^a>:qdL_'r#NBVqM6F0S!(^G])@V>pX`crA.baQY2m"f"8#,f`Y9
-"C>nqBbA_QenLVhU;eZ.aP/U-G@M/FrtUhph%AaQ,_\6]V8MSR$Q04o]VY"X;d1Og0-`=hik$
-is63Gml4u[3:/#ph3IbSk-++Sbn'\r+p"O&qm]M[dnc?_*.N,4\ebJZ+L5"0db:9EGD9@1aF"
-l17REM2a8sK<G$b'/E@=2*JD'++&0iqm";X?AH-m@qHrXs):'N*btV`7_8Ko7u-VqL7<lpuVM
-/FmE>@&gr3(j7,CWF^KVI]o&XWh\C?nP&3(q6k_+p=,qLT$pCAU>?5dau_V)if9"sQT@^GS"k
-Of>3E:sgh@qnCR9pSi]OP\*c[=9fG.lC"?.TE@Zl2HV@dP;:fPc$>2@_E>H3g[M2E]na2q-PB
-jBi#ok#""b`&3=UU@NX,25b">E\p&X->!Dm&HLBIsA'>a&:U?%uL#EJ_4peVT8%oOL^>bEAtk
-ZB&Z"#A>^c[&\m#_B>0qQO4LD^HFq$+]$O\mqb235A(=i,%C6pdW_$LaN`=^XpG]LV#Wo#oX0
-$/%<jhKo9!C3eUFI-?+aS.=C6"f6USF753K>[O\?KSWpKI0+:$t?cOA<sINb*-MX:,hg4)[Th
-AuFjbYWs]2UI$ctq:aplZH\r/3Z6Qiq7bUB#Gg24NeEHR0]0q=Wfr@L$iA/&D66nX>YhbtDg&
-0un,:`>Ook[azzzzzz!:\7t,3,AS89K7mG"p*0$!H`^!H(nUi%086N42K0lpA+>BqRPN!7+X-
-5,Mrs4I"2:@ra)[?)G%:\q\pf-F$"BUUFl.Sp)^r)D_H&I2Aj97`IYo<81O9;[c$1hiH82A-A
-65.gsm]%a8dDcRp368!8bcc8LF=L/QZKN+Ia3'QR!I$R$g*Sa?Ul,?%f_FW,pmmb0(DNj`Oi@
-u@nH#8K\ZAeB;LZH4<b@k#A>BcB/?Xu>-_@=KVo9H*8YE.k1"/W;[*[A)BN03,Ef[?UHj'P_t
-C'@`=k>bng`2A8i0RG*IV/1'0'5.\1p*Bm+-PX(R3cW==T1D7,K<?&9lj]hNsn/1p-LnqJ`UU
-s'6/KNfT1ofTEPBtY\8lT5\gS81eG1#c?E#8/BR?;ATD;@Wq.oPZR.LFVu=Qo<@><%HrXJTb!
-c;:"fd8ncJ$#6N1b]?Qsj=-A+_4ug]Z:]=.?!h?Ypq^#sf^`7TMqDV2R*">i^6/)BOq#.R(Y8
-_beN*]G:SiD-*aS"1zzzzzz!!$tJke5Hs\;e(?8+sKZ]qOjDGlnR)2</ft[,[2Uo"A2QM0\FN
-e"ttaPMFMbe^bdCgX4MAcChV<5tAW9M%(pq/5^7_@uI4W[N@k_E;8Jum4M;kPQ5\k$+9^?$FQ
-]b^AS^N*Zb.,Bn/<4MfHkN?^SON)NDWd\P*d,$c2X>4q*-3^D?)$/9E^DjHdO^Uhu$?<,XU*d
-#V^5HDsRH:+S-34;6.5<uqQQLG!k'TXn0MeI19l[VRchh,*6_g,>9hr=qmLTsg[R*gZN)4?$t
-%pd1eNZg^^`I'HL,8SuC*HQgut[C)a*+qmPsCb,G"9,PAgngh"\K#kRME\7"o[7(IW^<0R[b=
-%\6A[\8@01W1R@XKNhB.qo[m@EFpb.,Zd8X[ZO$9KCpjS$"&gOG+7"Aa3<DsNbo5qUK/0f+Z0
-a]>])FjU`T'0Zu&*Fp\!NH\YZ#WJ-#WN2"^aMgH#M0UF]XHj%\o4spLn-+WB8_]q7P28AOa=Z
-_]fOu]A_sJ&f7BO`.'/E)K:*PQW_)J5Y2[.L"HNkNsal"@(%#Vk!JC=Juzzzzz!!'eFin1Aqo
-^IN<-q!LP.W3%LHFsC#PgEDOh`DUd'-<fmFE,,AM(0I,)q5(p6V!dI4<!?=P>E3+FA-OW2:.1
-</+K:@kGI98\[+feKg9AMT0Jo""YVq$Y"N[YK^PFm>]!G9;BS#s8FqbV%Xi;`*&"%;Va=9c^0
-ajo8-JA8MQkUXJYusVD-cC\TJgaQ`@PFsD4Rc:CjENe><ED'4ZW<FaCnB'eU<ot;B!qKD9kni
-\iZdtDH(K54_amN;lK(4af\m.W3$``2Y(n2i]-(rJ.B3T(%pp<)Lpk"q"e6@<M#0L3r34$!,u
-]r[&9aI0TRhNpu+JJi,6?,!<<*"zzzzzi+kXIDS4P[NoaR)\:kPtOq=cEM8BnT"q:G"^?ZY"Z
-3*38*I/Lt<(Tc5SL)bi%.RK[mUSn2:`DBR6>bsa:\nV7n4`f%E%cS3^<N72GD72FEc?NVq`0P
-c8@"RYB)@9VC/bI4pTu0Y0_iJ+ajgOE[IS)6l2J+;09RdG`\\OhrfM%bD,3]K+&)2ck>Ft/;7
--]`gCi"j@GI&5hP\?5=Db4;Ck(dpKgFLmg=QZB4;GE\MBS=j5Ii/8$U(Z$2L8<kAE:Y8.;G&Q
-%2chV]jj2SNsVB_4qNob+=Z^HnfYbTS%n0m0UTW!&j-P!1hf%SZ=P\_9`(75nkP<q-%X,qqGA
-pe]VcX;6hat0?%2;9kqMZ0pB-unzzzzzz56cF<j>H@eXP=#?HS9pnl/Fb5j*('WdX5sKo[.4T
-pEmGEX/`9bXu<f%kMt:bVX,Wors,qp+4ks#j^bc-.//C"qq[KYg_N*;CBpj/X:(**nb1+tb-g
-,$8Rhu'8G7q-D"6F8HJ5"4[GO^#ej!Wfd[orK3%fR%=aqPqIQ&PpNm[:'SZ&uY+)($HEntq<S
-u&l/JW0i,[i`\6hbAC)Dek&DaR.#fh02ehWj[pjLcoHd$2ar$5j\&c;kC'KC*ASk\4uHKLn[J
-qCo-LZG>kdJ<u-PF9+,lY$-qs(57.I:2^LG=m`Y4c)?Pts_mg'/&,7.Fzzzzz!!!#s'[F?;HV
-+DabjfB*6('6i0YW'h5.?a3O7'K7#C8GYjRk;'9TZ8<,MMcDP9-5ccX'mTU8l1m5B"Wd0"bYf
-P2l=dSdR=LUsQ%+cA4A9bbW:da<Q2$'W>b$V9X/2q)9h/kf"$8//eUa-U6KaNA`N8<40!XB,7
-F\EJiK(>]$U=[S&FPXAH<q:jj^kXdc&nY,f##R2O1!NiT9$0dIaSf^0)<$h-[Dr=GA+W7aGJV
-4k6YYWCWk*AQ:1_1\nsm%Jf9NnU>)H_0OuZrg=416=#OS)TV<=s9l282Md!cVC>q17Vr$l]*j
-8n89.a\)c:!)mVBUb_:/4Z_JI%+_c[n[BZekVUJdW[Gk6Df2Pd9QIdL>X0(_mR+bF@<e4u?;s
-_e-l,mCfF62:]EbV:`kX;fn^,^DY?!],'e5g0"?#QOA[eS7TI]0!LY]3%<9eph%De$iLhK2/&
-GqGk-&G,bZE2?g6[MXM*g.Guj2CGFT7NPRaPZ^?,6W50j:/P6C/X-Ee??eOIqFLd`UHN>Ijc-
-hs.5-n7Q:DV<et0%Q2HO+06u>H6Z`R3RVhL^m2ca-a;&^I@a#t*d-4_LnMrSR<Z44C?Wj^%qV
-4ol(0%HN>\7&_[;Yh*.HrOtI$dD?]p'?X+Cin]P@hqYH11Nb8o,WF=B\uBGl^<Kc/&r?O,Xjr
-HBIa6YU#Z.39AI@#A8)dXVj-6J?#!>R1cJPQN[9e"?!\%.i*rI[V,k[E=AT"5/a:'!H$"Z@zz
-zzzzzzpaR]ii9*]s'?&J[#<u;d!<<*"zzzzzzz!&,GTd!s#%;]ZQ&@en?WQ%+Ht;l&2>eauH/
-nKhRG,%&>68t.2q<@?DQ`&JD3SWgKujQcceV'>qs,A6+C`D8-<iIc(?`)U#=>;DTo2O5#Q=I.
-`sA4j-Xk%0_/;sUQWdY*%H#<<RVT/9jO\.2NHSQTa@%7j-f`)8!`O"]Q_MDD3!/C@-,m?q^YA
-l]48Nn)jM;Oce%C*V7Bqm\0b^'AKQ+26![138'$aQ*.IVO=NJSr&hn4`:*7H8!i:P<@rl=NZ4
-sYbK,-4_6*I]jaIT.Uk:h#-5YHP\BI2S<YD_7ap4[L!6PWepaVl52J"\F+W_p+5=,.d^t7.`U
-gM(ja@%ppHc7P;5"F5\!EI-NHA?=PdFbgThs?7a%FS5LtYaRA]g*5*35H(ZU.,[oN6't=io+<
-_e"=T<f".$cfqAk`F=r_9$CW2D,+/<&mcBg>c>)mIaE=!QrR5]RoeaNg;q??nq:KZV!@Q2(iu
-[T#R.W$?!a]3kShCF<%DS1CfP=/Z"-g-WJJIpYS%VEoUI6GAJlX<7b&9-AQ?dHG9+(+[<@\dM
-ST^&f`\^je6THBe5bSBcD!ks?KR@bosi^N1X!/AAPr,aGtLLN*e4Q]]0sUI#\kl*?]os^[rnc
-Bm4K=!(!36lJtA"'9uW/eD4,1,W]&GP6#GD$.PXPqA<nNR.MS$^M$gn!0m0fkeSp'g`N5#r6m
-H\W$!GPLl;=s#GoK[d)[1Gbg9Lmf1n[_A\5E+a7q4YM$r[i8R$f=n#!Y5$Gflnt/7l!.?^mB)
-b>L*\<5MRMH!)U3;`2b@RY;oA[CK-hV,U.ZV^O8S8sW7Q=m(1,&V@8KM[/6fS"1FM;;@EaWF(
-Oaa!nc'U.i"Ds8:ab2/1[AFn%k746,nOQcf@,'0j(/>,g<`%k>u/@>bk78G-i@npfhu-gYSDW
-mi,k1B7D7)g`l_I%(sClFA92SoS2X.6S2ESPmlZ4pB+_+-G6N&re<9`k"Kc0?LR2WFBjVDan?
-$Ht(kPbD83a:VX^G^ojAQl.`SaPfcC=_O`HR03=CtElkk,b?'_128A-3;7?+m$@=&9,Djm7qe
-8urMTI;ons-S`%Vo'A`&Y5?Y6<J%e>j3pX0&rE5N0>8nX<<d($B=IZNfF0c;bfdI\'Yl9@Tj0
-MCXmUWoBiPN?ius_6:fc@H91n]%l3=Wu!Ltqd@%r3a`o@VN3,dip:pocl4D."n(BYLY2Rr)]G
-F[G,\,8>MG1:N@d#cV>,-K#$m%&;]a&b+CD:KpMnO]kA.l<K4N0a9M2&5Z?:7q'sskjf6L<6Q
->>hg='H5-9<Ripl/HL6lIaYe0Q&,Iklk:'M>9eAD=nhrEk..d^qd,h`dL7@4FL@L1l7GI,t3Y
-B`q!Al4MTd+hZ$JcJm$7o;-#8*LUF-1MGb<^-u&\jkW2:I*PJj0h;74%KU?W2f%&olki@<<WN
-8d6'!e*'C@&6`1P9+p(mPuWc,'fNBf<mS4uU$kSeB+U7W0<'S(Y$Q4I^TC=?Rp@'l"tjKW60H
-_,:_QQO./)<BPR@[AE2lU=qZnS2q^,U=u!k-Jq'SqLh1P\Jj2'"nFs;+RD]f[oj=mA8DmTaO+
-t2U:-3]4[q3#Z78^s9KC/dWY"T5C;^&;S?BDR/($)R0O]Z``Qjq+3YJ4O8TRU#]7E:fB9Ltn[
-:eZClB8Ft-`J]`SJ9>T'([*SW1raEeYYlrU*l3GIGp1IWlV55lnOE3/F1nd>8lP"iBEN4\GG*
-ka[p&nfh<TZ;8f:kE^Ia:C#fJUlI&dX(6``W5'Z8b@ISG@`BfqE&i?c#`>K"ERcU9grL%cB8+
-r:o,dJ:V>)UV)6KMh$r?GHF'[nX7C"^`R7>@u6hnBVH+%a1P]3<\f7rMGrB`YuO6FqM`Q/%OB
-dS6ceI$OC5hhL^@eb6-'Md1)uF_c6WgfM3!jahWGzzzzzzhi'c"glE<QGN'9N"*_Y]mBaSK\c
-_\!kGMeSn'R]d$,*9;>:r5)mlpW<@h\^/E)H[u5OlY]q</6HnHlUODkK"em='G$[4N/P@2PZG
-mt+VFA%sk-.d)H_39ZFB+cge+*.C[V@,[L[-N<Joj5[oSr:A6*FJZmo0;"Zd(:-JCGqkh^2W[
-,f@XmA<W9pGbh_nTQ%C@US@G^4]L\YC-UA]:"G<6=0o2!gms/ZCY-A2taZ*NL]L;:QYi?6(I)
-:E!k:iXfoY-qr>r`uV'X"DE9rMDeoRb4:A$R%[4Q,=t02V36ok-K[_L8;8\Z#li,Ki?aHn)(l
-m%9M<20SBS!7]k>.C)aPUfl2Ps]F0AG*^m[heRD_nc(Nfin3#40*I_d<PeKlh*:l0H%^N(5D*
-=sH[99IdZagg?e<@K#=fZBo>:=W^g.Y:'9l*Y\KoGZ"F"N+AqOmfA+]H:PREt&Oru1hUrb6g#
-[B[!'Q,;8JUs6quo.O17$"7p6%&MY^.l?j=Qr1+7[4N;nLOBDE6cDB^YI8o>W"!LRPY+_tQtr
-$FDbQ'.-Srq8DFSMECrWqE-Uj&MZ'l9W@clIqiWS.^(kUDAB:HpDT0[<;rqbO<W(m)e!n;BtC
--Cfi(n>NnJ+\!AeK#PQ2KPNI_E'O0@Yf&6rbO;n)mW%epMJKdPs)+5Rh;-RS`_f.D>jKhJ$7q
-f<;6g.h3>0)WGt\Nia>eQXCA..17db"5p(5e9KO\t2EOt21P9-'-D)hhn!d!8C4?UGgJ0eeD=
-/bYT>\2Z/6DF[:tn,MR?J]S1Hf?>c*aG"g(PKaM84]s0X[<oW1Oq9$R&O=g\`OW0IPCk4/a8[
-V4?kbRW$C#gVQnjC:c@r3U*6B?.drV&f02\#d_f)2(Q*`R4qZ_C6MOi^9++fm5sK;CsiY]oPG
-tVm4t?CbGb02c"o**;=3&\V"CmWe2F*EWgG'L8ubp/DLukif@pd):=QHb53&0_lVsiP/-OJro
-bm!c#Hb6+@'3ZBL\5@^_j,i$j5dNTnaGGoR8FXPq2)0Chja(_<Lss-CA[imD,B!cpm,ZYT8`S
-.j(@5uD]ZVg3^4@[[R]5X55hp549YiT#LitGa60r%_r(dh5A9@G)#~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 621 416
-%%EOF
diff --git a/doc/users_guide/figures/gimp-print-gui-1.eps b/doc/users_guide/figures/gimp-print-gui-1.eps
deleted file mode 100644
index a9319ed..0000000
--- a/doc/users_guide/figures/gimp-print-gui-1.eps
+++ /dev/null
@@ -1,825 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/gimp-print-gui-1.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 590 574
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 590 574
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-591 575
-12.000000
-591 575
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-9a9a9a
-cdcdcd
-b7b7b7
-eeeeee
-808080
-547098
-7393c0
-424f63
-5a7191
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPu4)Z?8[OrK_dcHH6G#pE!6qW3(o,#C`)Z'S)*M`YO51kD<5\$^^4o[c&>+(!n9Egu$\(
-d>!"\-_U.AN'_3+k</m2W">_K6_Q3:?J.=t:ff9er+\77ssO8UTSLo'pG5MA>H^>V[-)#(sa"
-0Gk3&K>H1Ec4T$^pO_p;*7Z8JHTa@Jl'jgsr3B*<':h=FI3)[i04-Pbq>3AGjj?ZH$OJ:kQ^@
-reAM4hrVis(I4;j\XO[lrXju_&VEHF86,qej^m#+W2!D]XVjo2Qp_C,,$5/0?B9W+H.M$At5i
-5D.M>*_[qp3)0pLE>OED</o_H9@`LND_g6T.QV>n)?=pa1cEndqLc8d2lQRrc7l2b?)WSOA67
-'U"ue\_@b&$'C2)":J%I\4YL5NbQ>'I6KghN]A\92fc[9ta_dq7&@IujL/&re\b'mtG&,hEqk
-hgYO!:-0fi.!(BtLcX.aUb_O5'Z3MZ!MAE`lpEIXFjok(ZTas8DSG`ZCeB.^lQl3pe#sF;"4u
-07kI3H-o:V9X=!R4l$.*cmDeFjldtU6=_&bR:ll#r)VK->G*nekmep;>PF!=ZtIn;8JL%R$Ba
-krI^"aZhjR=eku8MZP\`/!AK@g>Id\19/b:`ufLU9t_0"BeC3?G5-7(_7[AQ&HrOmC?3]a)qR
-%-TW\SOd6>,tD<A+&]T#$'ne9..ujJqd6,>Xt^'c>Fj_7.FQ!Um"oH^Xd7lIUP;)'b0D,?!gi
-A9;aY<S]DS'dPEfnp*JIjU(6:o'?^h:#c?)Md@<t+Sket,Bqt*,a'Y[*S]K)-m/V33jp,\d0'
-OKU/??oWO6iGP:$@f\fjuBhOcJdA+=Bdp>YSk?!i"A)DRJS`r<1S`ce+Ra4KiA!VNY-MRneYQ
-"Oh)2fE[rSJo&,B>3-,r^N#_NbdS^^:4'ueUf1\/k"D-Ero1a8"hVF.?Tap=:.G>^e"6)/F?1
-0kSb<Dfdk:+L(Ctp5p?t1m4P8=uM<]NeiaM%mkgOd:&G[tQ-N_br/W/@2dttk^C($n;%@Bn-_
-/u[Xe#=pd:,QE?[0>$Y##(r'?olhgl-pJBV]%7[g4JQg"/]"$0V)soFD;2\;[o*hD8C=o6%Me
-*_%*I-cpm)6YZQC&;=j&9_/u]neoYZ>=l,EOr>q[E*:R4KFK.Wp:2,[@l5V1jLrs9mat3i@;o
-U2I5CR0j@?9&;ll?=u:,SusBlf;ug&TrNCBL;/asW<9IOWB-+cSa1J>3@uW<QAeZmj$e=ZTR7
-02j&T`Eop#HVsWd-=Amb?o=KUjZ'68"fSNKM'_aZjH![)hL655VUKV,8ihf?q(7:SY@_'O4YH
-U/)%UV'\]>l-2J7nT3kYYQTMrPlAEbB)WIT@gfsJ2o';\^T"\bg4XR5B>Eh"](WGi4?9<nX%T
-<]DBaQ6D_T#`e&bdDKX?oli2M,df^=Y*VB[GUO&#7&_W#+Og%QKtiKXR2S0XEk1\3n7W5FBW6
-Y'SX"L&58u?n.]hG0V)soFD;2\;[o*hD8C=o!Rn#"QqfMH3jf.?W<Q%o[U;/HJEbQ!9W&d_S_
-A\[<!0!r>;2U_^iX<!VGdqk:2RghWWCSJ/XT9jfHZsX#;,fOMWtUjAV6`_e#<QKUJiJa:)(GY
-5-<VuGenL%_;=BT(MB(Ug8$Z)F`YYn+dc'b8:<=_:,UZ?SVhE1Q4RM.E_%"iFEr"];I&(@Ja$
--d4jg5CB=D+u1T=:sb]:7[:<TEndZWioMuD#%*+qbQD<]!0h6XqhUf1QhSS1`qUD-NuV]+npG
-H-M+'<?8Rq@-JZN?/=l:,U\YaK?(e="Yk,*nf([OH82WcL/5NIs*3"Zhjg/8#s-ZoX4'&9W&f
-uS6]>QSSGr^C($n;%@Bn-_/u[Xe#=pd:,QE?[0>$Y##(r'?olhgl-pJBV]%7[g4JQg"/]"$0V
-)soFD;2\;[o*hD8C=o!Rn#"QqfMH3jf.?W<R^Fe$%HFI%?5Od`ogGYfWTSFK31Vkk+2E)4uS-
-&VVgTk(>MCjA95FeR3<;qXmpPnO]+76B-Zb`B%V"TK9>O[hQmIM+MooE+2Kg_S54:Cg(Fu''?
-#m8Yc&0>FjYL*3Fm'3n7V6F@%l;1Hq(=N+Hpm"a]cQ&8&t)Wl';LUtM"&8XSUK\X?433dOGrd
-rWBtUsh!3r#K,DrlZtkX&s!&@Qg:IQQ.09:,U[jmY#s[g!k[M3K[:kZAoMjV]+o=A-[KSfi4i
-4*PI<PaNgk#fuT3<oUN-M]@/DNRi4Soq0%^)3n7W!<q.co,aM-%(P*g!Z`@'M'5`d#UgQ76i(
-3)(%)I%c!Rn#"QqfMH3jf.?W<Q%o[U;/HJEbQ!9W&d_S_A\[<!0!r>;2U_^iX<!VGdqk:2Rgh
-W^34OT,A)(G=rY=UL4@iVj##3LfuhkT>T1*?;[L3@iI+m.UY<F#LfXRVGhgqSLS#.[0P0[!iA
-nC0V'\$3jf4AW</qqHSD!??ok\#e#<DG;gU3h.UY<F#LfXRVGhgqSLUSb$)d=alRP&m>6uI=S
-+19&kJBDWG!BRmSLQ&:8Ye#MmtDc_Y,OiR"'t`\c&QbU?oh:aU6A.*`):5s.jYSE`/@`p$]@%
-,nu-/n>@uWHgo&SLcN6e<$9$812ITj.;nK8_PI_0Eq7R.45<h!"P7o<=!\\O;*@FEfpqm:)$'
-mXI*B1e,NrB5Um?6f@%tK/>6#=:!rUm%"7p)S=_@k[<S@.g%BKqVN/-3#7gYS)?FBWRZ;rK;s
-3<NQ9=&Dc/kCeS3U8Nt]<5FKg#E;@b;<WR8!pK*0-A1G]@ONB?6b&(hH.(eFTb!Fh/a0f?gF*!
-%BjX<3kPCn@\k1X\np!4KRjbS$Ka+S5d!]&=U*iNnc:tCM5VYUl^bo^]8fPBo<lL)Im'm)c_@
-hBP%IS""&Q(t=g.CCoQ>e6dde;]1m7TD/gs?5CD/[N@l"%/mniDC<)<edc3[OXm_fKscFB)"_
-NHqP4n$+(YasaS+(FG::64b-!K#aD6jb=[F@QLQK0Ue!*WPgqDl+/?9Eh[5Aqq(u>09WWKfkB
-Kg:1P9*.-HB/[^:,h"[SEJR";Ckd)6_d-V)>nI)br3OYh(3.i#[eJe50p'g1V<K&=Y/1_5b6$
-V#<-4tAd29Y2\q'`?(oda''<Y&5="5f3@?d+[?>eTN=(%PAdTAIH_:\[US>/pBqr)<eAY=%@G
-[&PZ8FluWjd,q(')$[Sg.8bFC3j5BNn16ic^KC-.BfVMs5U7\GK[$0o!e,9sFg%8^()6b)fPk
-;)"MIiZ(afPH*>L7tR2(kChgKW+A.PB9o@/VG,AtXKGB\;"sA&H?e6=<`fT;XT`+gE<0V_#/%
-Rn,%c*"Xc@!rXAmb$gH41ne$K3Y`Vbje.JVG'P4&U<r+1Q8uOYXSm7/daH5@H.M\T4I/`Odj?
-`79heW-`rVG3qPhF#S\mh7#8t-C\]0(I1-.@C+q]Fa?$cGDr"Y*`=Me;%lAg_P8.neh74Bg*E
-1F,=#]aBNJtTFP%`:c5Xb72L&:O'OW$U_&e+V`W;%Zkk)qibZZJ;s-h'Ock9iZ2skXZ&r5<h8
-8(JQtT^;pjmBE>8u@;Zgo.U),7)r\hn<[j7sd!<cU00GJ^G'dVN192*0.Z.3!4h[+@^<6.9F+
-b4oCh1T=!_l[7WH=I>.\]iEc]9-KdLVY2&E,!DVN9=mq']#dbr"D[dNc]\;DX(fA*=']6GLS]
-V<g\(T!A`&\l*ktS5@Woqisp8'kf"dW!=Je:?[I>i-Tq:qd/K5!PIFthh.d%"9-,+n.rf?+b#
-!EoNL#dQhn53e!o;,I%VdZf`u]jlqp)Q']SP3B9#8>kgmCaeimmUMAGo_]/*qP[Qrl8*Ja_R;
-Qb@eg[@B)+m<:IT..>7I#:*>UcLXB\IpQ+FSZ=$(MXP+"q"C!Z!7]VMoDTJMEXTh=N%Sc?m0#
-^&?G%>?;0J?;^<0W8q&faNT?us>/[<O<i@H!`BX/IlGucMW3c9[6CS)1=XY/9K!SY=OV]/+(-
-qXj+KuJ6>4'Q%`+Y1N,<J_"gn#J\[jV.R+!+00h`X66!\BMM+;lh?*4GW!<N!p?:QcP/`LgN]
-:]M@9KY`G(PQDc=LJRFaRP#B&W<$dbCt$A$dg1aF"$M`3YY`><i77u/:4Z"F<8D80+R5j**'W
-Yd"fP1g4oqLQWT[9ilRk4=8](PZSIU4jdL!$MW%bpPNQ7CaIW4<D1D^;hF.@r*jpq;9aW*ffF
-8VH(k"'k?l>]!?N+o\foJLg8\MI$_,lkZP/e+3.B/3r@@CnO;0K2oZ0\RJgA;J9cPG&u50.L9
-aV.MQm9XqDj#b'&lTa;BcKC%IO?1u=&Z$52QI4mFk"8%s$HunFn:)=ZHVhR_E_kNjeR^"d0HC
->e@Rhql`6PI-(\X>7A)h3LNSun^(S)XL,@VpA<L<Xs&9L',\_'gHMh2+5*"/)WeJ?73Rbjn&D
-!ZlXcrYYI\]gj!c;*5GY$qo`>A^3Eh:Of;HO'Z;JU;*MT9Ft(>(*o-9+4aB+1ae5VO=S0&Qq>
-C43])U0JqS_s]E`S^do!X%kK`K,BLjM+Uf4!m00&2$rVd,m$0W(F?1#3[f3Oe36q[#kGPJ6K#
-NfX?4OtP04LS1tfW,V=m$8.SJ&EWoXCJ1"Lq@^hdL\@-kGO'j)<b1n#Rt>"fc:2iFf/=kReQ=
-K@i4L'"=N'YlX+f[16n''KWhtJ_bNo"5;A:W,gan[;#$NBaG;=o[-">@eD,Ap+cGJ.VJ$Pk:e
-o_EC/K]q$]\rY"jO#&;qN4:FpC<31T"[E7Cj"8ki5K#+fDml)5lK1Ln_HJ`,o@Q3]\-2C&'R:
-r?9U,4uB9>.aI1](3RtNCA5=",H&^FFa$=BG;>L5UVDA%OrYFN/=d9+k5J-::)Wl`5P-<g,uh
-j9ITJ/c3Knj;rD%0T/>G-MAlP*WWu0^<WRiB?%>eaff1lV$*-HP&hE,>&V\^^MV'>Go[LWKC<
-P5)3S3N5hSIU7kF*@2NU`T`U\G+;7:Yl,I\r0\F"LN7fiqR8ejV?34GBVCE]]S9)VmYoF1aO`
-XjuIXs3N?Q,'.oBK'I*KiDE^&6(dZnjm9Ig^G9IbCS.7St<P3;/L9Z#9j*dKHY0aDZ,?IR/?h
-O9Ur`>bGT*-:),^J7`$]M.M%5]Ur"dM4oUQBU=aLP0f6f[m@eZ?--9@Y>_)3*q&ejO75okoVp
-E5<o(iFkA)*T`\dJ1DG.3f4mjNjuDO=\2=tkt@dMgX@V=$sQ7MM;D"dGgc=]JpuX#-&.?eV2U
-1mX?S+kA2Ha,8c"7=6:7MF^Jc.%2KksCVGNBn%MB1s2)>:j<'ohZFu1Gb`/OB1U-RNX0bJ!XI
-4Q0ad`s@5/"M2a)4s=j5nlF:Qcjt>B>n$F8C>p`TO$D>'gK5jn)<I_lq!@1nH(;l$,n*^@9Sg
-YV'P4ag*"d\QhZKO)PRX57FohA0-ZXg1=.-q[RteG#t"b$?_'#5_9r*Y4L_0jPYRbT]ePRmA4
-KU>$@_3Md@,T?(!DV>82ZE<d@Su?m.\PeW/UV9p3rd(2S^$?9Et8J(duiP6kA`1@WJ/82!`R+
-m>39oVPTi1LN?sTRSRoZa&o]>;JCbL@O2b'=N3K<7WtFddICKA39fK`q6s&QfR#5CYm7gP+^P
-YL9UL?pBY"?>#s(-\8LS@NEVb-/FVUT;S==f0>_RWO7@ko?pi6P]#"U`kInd>2-)X,T.3b+S0
-*t7]@ELk\nYGD)N>^5#UHguddl&ZM'VZ1<qh#rhmZ`STo0M#1Tj,g]^LV?M`Dp.,mSAh^\s&-
-iLqMXK%8U=750B"]<lRuQ&,g0&M\OQq]V>=#^V\=MeJY[7LD@QC.&,NSRMI:bCDeLX$h<?U+`
-YWB,g;J)Wo2H!*]mtrFFW_#U5nL)ijQ=,YL6!=Z&-g#[L;tIn%8SBf&jCScQHVqWIkOm:5SUK
-s6_N7WXmOWTD!=S<8tt>kY_aK1u(Y;*/[B3'rrQ(mDl>?Qg9"tR89u-7X/3E\H@P:F_VI:WM\
--2YF&G?%DU3q/p-BK)B4=q8i]hQ`)_q"G="KAcL*aLDc'"PnUbm2/"IsL:-C8oH[_W[BWST`W
-AS)3CQ),`OJ3j*ehq^YCbuMKhjP?G98`%oY/8Q;rg39;SH83KgXT:`\,sq!*CR>K*(i(Jqt^`
-=(N;>N!bHqi8)2cLM,3r:/ki?Qm^&0]l*>Dra;,aC[`D==Ff4d)*R:qn-W[iSaS,tIU?#:CQ5
-o9%TM:hoqSe,L46b\IYsU<,`$3dXi5d9F]$A[-(LGL=fK1<]?%kbP.I&:?LiO7"%5"As-]q]u
-l8fq(9HIt^LW;()o=?OIeFNUD%@uK(;Vn5,lVGNe?Ec]<OtdPV#_K+t=c%;TRG4Cj\aK%N:2J
-CUA<(e9SPEabp;1n11s.7="$cmcA/j@km)gV!"FA98S[:]n_mu^%Me4_)Eq_TaaRr&^VM5/Q#
-5Nc4^'i#H8JY"#4^kiGfmqkY85K$'l%"BT*0O/Z+/MA$V'ID27@_Z_dU_7"#(,7J_thZh7`Dn
-V=#N@jR:gXi=.T/"g?m#HKF.hJ'H%7<<Hi3)rdieZ"WHQJ68#gB)k<#Mgc,Ru5!7=$Pq\QDHl
-*C.q<qrU;ZC&mEp+i")JU9"aIu9c*mG#dS^Q-60+&Sn4Kf]_H]sB0Km*_cTJ0Z^<s/2@&bU.`
-S'LPO3rfBe*k8$oC4K(,X<ZC;o5JAZ'h:D,3Z:4B\HLGsiqn%h'cW-[&@pH4\JH&p'TshLO:X
-/>J3*Xl`/4KB3)1.UONOXP9%(XSM<fRI"$2F^YK,MO?fTN%lH4=#2fMWrJj#&G\fY*:q<lqhf
-oXu&&f&](mlMP,`]RS`kp9htluU5S)>5]'PB$%s\!siD`C$I+Vob3NEJ?5;3QcYa]C*J&9)PP
-?Q84o?2!Ye!,;i$@d@o35l*K+R5Mf^qqr'n$\F@01XSZtkGJ/I?)g#`KIUAO34D-\=jI]]pV^
-i/XSOK)?X5_1#42##YG4)1:$)GDnD81SRn+f8)VWY=COlCU!H1?m_?/TZ1F`V1:%3l&1HT\e>
-6'XhtVrkQ-0SP)8"'@8t@/0/T)b3i'20nrpXF'd1je!Xok:Q>)h2d&4\9mGphL51V%hH,kTn>
-4[QkuL#nP@Lq=V@O%rL7pF*K1'^8="m:$WS/[9W7IKcKgP3DnCSEfs0Q\W5*D#L0R&)(rb`5j
-+5&e(ndI1U&cW=$)OmDqCY4\@Hp-="\&pN?uSPh/U'+b]=e(8iNEd$TV6N.qXNOj+$SP1\-"e
-j5I6Qf9ge)jHC>CYI"e,^Sq)Be/MLBG8Z+7[HV9`$mEq:rg:905qu)`XjlL(3lSqMr')]NFhA
-KXREcMc/fH%CB\8IO)UUc8$e-D$O<-?f4;*C!%:TbQG%`sOf$p`&]7ld5@0KogBr9&jIa[u!l
-cQ=3G^RO&.r:o70iVER'XF5_b0XN(:0SJ;*WiZdf1_ckua4VIC>GYMW?7L?Wo=VQGYu-5hl^-
-T\b)%jc3-/RW1'[;/SQq@m>"fK48OQ-n:tsC..Y)ThOA`'hh;I>T_o&)g*o?WUh#6WD+9-N]V
-iQ%OrTh?km-IJ@P1TKOT:.2EhtPN50H?g#EtpH&C%o0Jm4Da-[7=^fi<UM?hd3K.^n4A?''lM
-R3<Wb)3Tsf/Sb\:urKn)4[$*%S:!g5cW,B-oU#aRO]nQh>I<(TKL.o('p[IRf_[#DmqKLbNO+
-7+Qqq]/^5/LB_::C7LVSc2SA\DG;:n>[(0LW4m5S/N,UcH&sm4Da-[Ds%("dC=Y&+7H14'h]#
--aC5rg8EmaOrsJPKr^"/`q&A]FG8sA?949_2MiHF]9c2]NZ36!S(j-F@4[1RI(0'IJ)0MLhVL
-DC\=;HuDGG2"IVAZlc@#*ICoTk,6FRV^/g\QuOkjHmfN2==lr;@#:O85H39XP,Jg!kZUHnn)7
-i)uESMEc2PU=tJioQ,55kE$nSkmc@A'DUOGL=7Ga4rcuL@`7-\.AKuR7nkd?TLsG)sO.`F8?f
-O'94_ob^1a"$4l@,)=nDQlC^IEETMp]YBSiUa6Qs1\<.C+S`(H.V^j?Vj?R/27WWd1+d2@<^k
-aA%>+R'm.3_4,ilij&`glT&lQj0`9mD5W`0@%7N?/$ml"6h:8LNeE6'"P14jNM<5W!U[YuYk;
-e#54i:BDP^J<"^)mM%+=kIp@AXV.H7oSd;?\i[AEQB''F*iG%/]%`_/pe9`]M60^?i*IA40]/
-Df(=0'^>QL8j1HCD:#<,TM4#F7,+mVmY5Z:ZfqdW)N]^(/klLtD<OQh,JkIH3GWSHC$Ks>]Ve
-;K)AaWc:,3qCPF;h9p&\J@o6=F9(k]J9sK=\<uRNM&Xl*A\oK5A&4/HPq)mWoA>H)$6`+n&QM
-KncuV+\s6JPf'G&q2tN@f=h!9%@#HF@D&)gA+J*nGBIHD7]&COl7240\<:NMAXMG3l[!C[?Z'
-7K3']'pq+_>m>lEoK:AFkkb@siG5*Q=H/a+1uOp0FqUPf:>u3_UkGX8#NW:Au+Z;T!2orFi'?
-7QMQpmZ`d='BZ-3bJfnPM!Rj#G@.i:'4?_X3uZe+BI5u*"m!K8)^tg9M/kU(hAK)&bm-<(q![
-!Oi$JPr<cNn83Zt&[Tn5e,O>d5Q+N$mR2NCPqhFZ.3.qgnbD>JUbU[,SPSnC1LJ5.5XVOH1%l
-;".4@qU"e\l1K3:)!cn;K67i6X&BmXKJBu\rA\J^ZH<&*=3a)1.GR)o=I"5_,-Van1f7Gn$TV
-<I#VfoAM@(updYlJg=n1t,(";&%UGmmC&ij"!$,RFgr(4@=63c!F#Aq6K-S\e]4IcBj@)7TIH
-WqEcPR!5'M]dAd&K)86$\(R0NR_Rm4EVS3'1"''eXNrLt&,'=Jt'9INnNgrXh='R]>@(c2nK/
-?$CZ[)$fnR-]QVD)0LYP#.39`epF7r2+8mW!H`Jebg261GQTs*EMDS*<bR&<M5-eZlla'iR0B
-M`>bHn.F*lV$fVR"$d,uj`Thcml]E/u775SMP?sDP&"ll;g3pKJC3bFG)Eh$E4G7rT,_F"lG[
-[Etks7l.fdE)YAN+D0ra.r1cUtbi.2*Bj8FPQtscH9,6Lp?jX8uDr-JTVHBS@eY><$Bjb>iH4
-bM`C\<knFYIQ49-'UV&;3'=jLAJtbW;:Q-;OQsrpZ/'shLl\t)#q;Ib@U-^_qHu6kceiC@r3'
-37GG+t!lflGK!:'Z`rCDsWqp_8!ZS7WWD1R/?)"&AeBct70:$#':Xd?QT:"H'@&kQ=91je+dt
-3qe:*JMEP-M&!\LZ-WMJn'"S_hb2JAV=^F%,Ge+C=%G(UR"j$\]/tT+F;7,DpH@a"i@O8E.^"
-pZG+YgnZP1mIhjVi.=VX(DGD)]43Y]"oa?tMU._9kQ'):)ajeFB%/(a"53k8glMhA=Wk$l@l@
-ffT+`%H0*c,ss6A-(h6Q)8/T0'G&Z@l[(=n&hIF6,!KdUi\/GlWnbo(&:%m#ZPfjSN?e.Hhtc
-3S]Yqq_Rt[>&Tu:.jlu@Kb>iYa5/O56(3+Ls&'A7tmY0g-g8_+K4.6=:$[m5L3=71Q=.9_T;J
-4V38TRQo]QmuW`TbJ[D%pr*25o0Uc"<9bAJpu,N/4b!Gqpb<I]j%e>h!qp@=6:E`=$[/H/6S3
-ggplAD=W+D=>-5n,9-iGFXIiq'ZT\3]rs]58Z_*FH1a=ZK>R^,L@@t*8hu56X]][>`^iUtHZo
-&Yge#CeUpa?n_UG@jVhp#QX>4LaZo9>3ChK@&?HM/J3#tD)`s(9jalGBN4isuicL1M&H$MeJL
-E:tJRS5?T.fIC=WgkCueGi2#ipKeP__4\XJ2SQ%Xl>n6QR4-*340]3@3@5sCJ%_oP;jW'j;+D
-04.Bmda8.#'M2'#0Nqn(0FFr@%r7X5R6XoN"ocr\e3]IcM:#c">9;b.H)Y]*NFsh,2n>=ZC&(
-MJ!KTT;&?'2oHOZFH(<#U$Nq(;kND[qM8+gDM:pPh,Bn0[2;"oc@,"gUpjs7(NC:gqcREst%d
-G[_T$!hNj0Vk!bIU=C]=0<%k'5EAo-]jtqp(&-Xs^;bJ/BkjQ>0g?+gq49!$2bCnJm<l$Jdo6
-pQ:lb?NJBIVJ58Q^:DiBX\C]_%ReeL-l`UB$47OE0Hg1672_<2:n=/3!Cbc$)V/9&&t3*P/&7
-AFk1:$Q[A)1G`tI;+mol'rPF:R[uB9:=_dC$JSFL,kcYg<$uUjH(s,SjX5l'Oa*W$8FKhhG:p
-J'OYEuESWkEm6b9T4!<5>@U7ZT:RTL<)?(juHV9`$mBMWgP<(eJEA:7&4J+(_M(IW_6;M9+fM
-I'UMsJ*4`S]j>OCSUHR0XFr0epu@7+oR*k\"P2.u-?_+Vj7;.!%&Qdf$'1/R^]Ja&[ag$-7s;
-UiSb)AI)58:9A=]&1PohksO8M(-92iSYTC[_dTuf?M4i)c'7FC.]tS-?k)c=3mchR0feuc-J)
-T,VGhhXPueqH=f<P3JjeV<GdTsD2J@YncTI'5=dVnNBPJ8^q$O0[CVH^uC$NTDbRhR#:ua2_p
-2`c-&lJrL4_H.2gjglA:@5;T??%!3YV;oEL^u2D,'s=T2->g&dStI(3ZmLP&#qH)%4JS'Zg"E
->1)6WW62Dhr0-QViF-8#u317'iRdk0\'4]Z9:'\XN+*As28"Ea<VV$:p2./JQ8)no=3qONr3p
-AD.ke!_/=JkmD[$d+/"n]STSU)$9l2T8D$U"o-176Eb%R.\$%L7#2QocPA^m-5hq?Ki'<d[D7
-1mMdXh\7cMq\n$ZLXRF#_d+/_As"X=_&]J)l-pbYG[o/ARNL;$F46h?Hoi!NVaBaF7PbXRP/C
-7c#Z,?93]'I61JK+_)pcrgliQBPM:q%:9VP2lBJ*$3TR*K:gmY*l$XHXE*[)HCT-QuUR^/^TF
-4T5?CqKdK0V-pmYo-K&n!iW78VIGSCDs^c9cBYqm']Xm]#:;fP%&4sk[ItD"sqht.WD>b@k=,
-^f`i-/Ug31J$"Im/)1,oSS4pSR1[6<d#6[en_:t2P#LB?L;h[1mZ1/<'^iX=Pk4S(SoS/oBU<A
-%["#sHm1&$]>("JpLCnV8!h<&7S\7r3'RLjXYVYSlii['<R4'`gUesR(d]I2#%)J*Y%H!d1LR
-$?#Ya+@a8k]iG`!Z&srYs190HcPh]]3@*5g$)#(K%!Z#3XmfC;k9YXUl=p@/59ZY$'M&c3]hn
-.P%U602AUP/X*Wrr]S7bo=CP47cLhr?db!;2E`r1/ihAOB\XS1m$7Tn*KH,2H<\\@T41n'EmI
-sbl\_%ptZ/$jL.1dV(`7bqKrX#Eb'+[AKKR2'iDT0a\+`i5A*DU^*\TsYA,#0p[S!jKp#OGQ@
-St$.0pLqa5iQmUmF)q-M#"kAr,"s@!Ja*@ho?WLn*>Oj1Hag]-c^7H4pJkmsI4f]N<Er*n`8f
-fUK'nP^.suFPGKJAS-Y"k8$<1P!@j7[M#LY'ncGbSB=4a*<N;GX24iO\N[:7Reg5%i2atRpT#
-tM\Vq.P_O2#^5P(C#'H.?6.kF=6G>F>Cac^XJMCR-CuY'3LT_a2S((5?s^n*=$FX=P/eBah^L
-T5(t7"O@'>q/Lc1)UGLO/-mj).0HBdjQajDOSI$=GrM@bX@/EGANUiV3HKV%8a;r;/ac!rW0>
-,X2qd9C%TDolX^\RU'r8[hS^]2WprqjJ04*8F@r5V$V,/[HjK^#kE'3J3.5/I.kDWo-=<:"md
-.^;3ja/n(WpCp@6LZG\?L@HC0Z+dQ&M4%d")='fq,q4IsXqtsO4&WOta7;kZb-=^/BaRn(?G4
-t(d@52:UuV8'"WOtug%f;BLoDfHb]Tg?5)?&]dch=q-9!::j/>%Rs0hBO5SmOEk$O6m8hegKO
-bo6gZnMW+GUi>bP5$eh:c]$if_`3S^>,D*NUGbA`F56I`K[cON*!7D]'&7O2n]gg7MG,\#O#f
-ZL4UTF&GS<I=D?S?XHjuFLaSm[aF>\3@J[Y_=Y!QO?LUYP"TRq`+Q7\R.)&Z[OHa*:b/+N7%Z
-_$dH9)8r46(96R:B3QK=r8%"iD`J-g1MHaCAu!30\8KQU5Y-g7DF4jS1M3jlt;U1=F2kFk8dg
-n45TkYRE[Z:7:NLWBf)M:I1nA_ftnbo'`<aI-#rm6DoK+G%_TZ0Kb\:nRAkVMQKlV$a2B_'@!
-tI:D9QBTHFtqaDRf58L/=McDMp>6Z0:]9/dM!j&eZLmi:E;\I2+M3aI!f>flH6/`/oqI*me."
-j"-e_,!WM'5`hh&/SL5J4Qk/Y;J$?l))uJK4dLu)^PaLVhHuTb+X;"3U(M,>/?3<6]r`M'esD
-:VgC3uHJF6LV#^aV-'2Q'UH:Z[-Ea,&@nuZ.e9`utKC-Dp8"_5TB,@8;i!/OM,9I,T/s]RpXm
-X]ur]U@R7.utdK3'8YZFAWCo&a_ZjoNggoH9kg3'[1k,uq3V#"^0i`i3*BO2R9IEt\SNX$*N-
-#-LV1jM%Kl-Blr9#jK8Vj%+'%+\&;XZo1+>SA,pJ5LI/MLi1$PV3jk!5BO0:UWgE.N<4!=H_6
-U!F[;L+=aI.):-;`Ad4ABdM4gV0@clC?k=;>*]?$L5@Gq:[2^)D%c6;>g3hMVc$,M$477<9/%
-L/Q#(lFR&'qRD5&#j_aKHnB2_+KS:O5m<(?DL%8d%@0JUt$<j^\GfiVc40I_o^G&8ZK45m7se
-OmShJ('Vah[Z*SfIF<W&?O!d:PLkil.ks[RLMfC'c_fS11_O1q*Uc0K]BB1G)Qmo:M[Eu`n/b
-BcFI46''<&uA%'BnRU*0a@:ZB,J.BEZZ(!'.<AH>h)!,BDV06rtM%5^/q<?n=5=l1CsM;YR_s
-o62[E%R_>.2Kj8e(I0>Ql`"P&'cl^**tG2.ZATafH#>r[b,(hh4Vs>4+P4sNjVaqs:bGq&:`(
-M8Itk08W&O_2a"]`We'\V0XaW@Q*gC;D.,Ee$?6"_S?IK+#X.C]D#J0]Oo.UE[n&)rd]-=jc&
-p5Xb`<nGd:+br%e'][DL2rpWgR0E5<c#M4Bc[86c'U11_[\;$I%n,iWN/UceA@'L"DNT'#=j+
-I-)?%r)Ib$IB-;tlFrL`Bqj0u]c_j&O%-D&WQBD_mg6@p/2'piZogsaK]COc.-dM&G5as]N7^
-#:V.==T$]PfD,hpWuO\b@m;Hf))OVdo?6YL"^;g"BbQOhU$XZ%G.PDf/'gq#rb[4qfurjR7bD
-$KV?4=NpH6X+JAU*M@JC/#SaG/FcQ#_IQsiedX*M1lnm_91$O?+"'P;U%1>4lk5!U'$/Tuqk1
-Gd>tQ=M@qUh8,4qYFccQGR1g;M.H$XUnd55?T^AGpHN)IQlgBCT)ek(d5%,9X%VmhPAk(d'Rk
-qf"HW6Zl2i;*4JW?Vp=!QND[#;F!0$Jh:%UQ^Y92TGYE]Q-:K_X]-18LGVg.8A8FoKfYfLYCD
-jJ&rh)KIZPk$CMDu_dq_7SG6e>Eb!7N]e`KVc6kT.di2Rti*8&JjV2Z*c"7uuX@`.'j6W..)U
-s0\W)s:_R*q\f;o=`gUYXhe3+n:GnnrM<d5KIeQn'K1Wj=P=.[5(r,_1%dh`NU@*F--'@R?LS
-p!e+EU`-oI#o*J*H]ni#:>#QI4!R5R9FpLZh(],!Y;i9/iXkFbI3s'1+hCFV)H.de;S##p@nV
-esVqo:'W%])fF#Hb59U.T:X[sj"e!!@;iF%I\4N3hFQp_F+G*s%&,#e@X:r^i?I"jfFPEJj"1
-u5dMR8Pj3Le@YlPR2V[$J=,=1FEQYP['<,)Qi!Q!cr$YcK&l'LW4ZNLM:hpSW\)0/kPF6o@+B
-oBC8GgCto8),KbrMPS%fej2oY(m%'2DNF-/shk#$HOCfmGdOCW-aCjHja-dm1l(h`6"K:5*P_p
-%_Vkf2KBao0L7'REI]G94uFEI,H9W`m`]f@*,*Z)iM7mLdDn[Z)<)IFl9JiKYP0%T!\5Wnn2p
-0OH#!(N"JBRCEjOc3S55Qt/-%,2aCBk_9oq0C9tO$:V)Ts=J7EXB=Mi7!;#I?AXB,Rr!P.g=5
-gH=Whir2HX@>YJ,VKbPXL_8CD#P[TrXT&TDgRM0YULRD7mRXfD%Pd([=Yn#ts&2B^j`clq)8r
-V&&9<(-K\p#-LA/(r_^0uDb\M;)&YtqMZ5]c1SV@/<;3g]Wko?^KF)BkY*&ZV0ob&C=RJM*.E
-.+USrEf+``Y+A6QAI)7P3<VB3nMES=Ak96dF"3S;:M_9X;(7cR<pRUD00DbRpfLl$*j\*BWSV
-8(7+4h%d)H#J8WG]Mmn:\:dYSrC65318QqF8e.`p'NF.8p"4,L/(\I')F4u`R!a$:FYH,(]-i
-V5%J,Br@i/nX89@HXV1@WL64aakq`S-WS.Kd@g<"ms&CNR#j?hUU0,A3BXY%/$V6ac>`33i6@
-#f)e,=[`P1/Ta/r2i+O1T%"&L/]2OS@:]leaTG1hLG8:]D=$Z-Kk_"_H-kpD]1Rr*gEcI*VUm
-pi2N%q8?Y+FeIi#kRs36TO737cJ0P=p5A7D0>s,Ot%K]F'#!JaVp(jMB(-8<X>55=42jj^VNX
-?9_=TR2QDX)A%u8K1(:YKMH^i)3"2BA.#(6P`+["7HR2496*Cjjr(3q]*XqOdAYl@'$Moo.-5
-(RGH!5BN<UD/aGq%[,Cs_9,7mU_k9D;Q3$`u6i_ub-_)',9p#(P!H0@OfcRdG.aXJ!>JuZ?@,
-h\t3#n]!9fn`oJA7U!CQ,g,s'0;LJBBW#(7_GBu*p*LS0iaq?m[^7N;,3:7n4Y[hYW$n"lI@m
-c[W)0@22Xn+ld%g2T7I4.;QS)>Wo>ZR>@^RHH?LE24se3e=,oFhC6Qt*\M8LNQD1u^a6%;8XA
-Wmt1j.0&P6S0,LUk@W7UrbQ2ElD0FQ]Bdi6<4?cMTUXZ@fEPUsAE,$qGLrf)e,MRW`jX:+/7/
-XCJl?POZL`XZ/3aAY'eg9ef@P1I!`0/C'b:Xi%Ygi&$]X;WG6MA=?F8>c`,gN/18LjG.ZPN,+
-+<HX2k2$F:UbWu((s#=.=L#?l>/quM\,+hBb/FIK*1=;[q^*HPqiH#57+nb\nnm`hm"Y$(*n)
-j>7_M";O0U5+'*_;,r6<3AQ#3goWWZY1g;V(bN>Nl"aH\g@g6klB?oeS<IYWSoO$^gmk*^^Yn
-Rp?)(hgY8BN"!?Jbpi%#PG9;DIh>=ASI6aP=rM`q42?SX>L@mc((tgS#X[<][$gL"Er6)q[`l
-,u5X:#6c8Xe!r&!d0Lr`/.EPH-4)S*/sr*"#MbP2+_2$r%C$UOE[40fSI_I"FRKB6Q(m:(m8=
-DQg6p:tNLYCSV\mpu1q%CO#jhhgW5PrfL7/areio>M/!0qM3h[5N*u7s%slt`uA97bE/1b)r*
-*p=V`BI^##g]<s$R9H2jZ&Kd!:h_kasdbd9DeH,[>$oKf]MW`@2RiQG#q3FQ9M[0Ml)HP6AuO
-9k@Lj/r:amX0ctJ'^$h-/W"oO15lf!3<8P0`3a)K"pUjU)?f8W!(Q:%d;D:Er%rq'>+s]'^/f
-Yldq_X7>A"%1=a(!FQQoRmrZK:1gVl)]$D\2(@V;F(F?ke8ruef!`/d+$iO':BYI^bMlnpmmQ
-MadmQ]L`HjF]E[9ilC@#0K#]*;HpOD)30r'28"_/KiTG't=Jd\43[Um1W=eS*I%+L-50(?JG'
-*mC#Xh5H6D9]M,S]$g],>WQTr&a3!N;3:'<>nA7hfBn=/m4<c@!@Ul*?24&c)[$Q%^$4FG/ik
-q2EmkQ%Dm3m@K+b#+"dJkD3k]DIR(DLV:nonS%pdF+=9,]qV\nePV;sXKjd@SpqE:p1i*Kh)3
-nNu?g%uYWKf69D.XiKsT4B\<&N_fQ4<1);nmG,pj9ZSSW8#.J)e.+u<!$VnkeiQ+?A+tP,n&r
-hP!80sfDV3)le1Y'Xd)W1n_N'ZUR<-'BasD)TmM9kf:^3r?)5IA.=k4QNJ]Eb`YbM8X3I8ci.
-II/V\-G'UP5Ur%te`c:'p"ss+G9RR'f=V?H^7n6,i'g@0.G?%D.uQA^QLn)33.^pf)gWMAP?`
-!fD"("$1P?S`,N#0UjApT`=WMB95lu7JHb^It']K:fbG9d#$Q4Rp#Lbp-tq@3[`rhkW5'S@i:
-7\/BW*$:;4L54S1&cL>D8K8cthlK'Cc+gJpBBrD6Q*Vp+,[0b!6_CDqjp*?+CYMqGYT\R/&,Z
-0Wap@K@t-m:(Wa.PQ[>?o83B/=j(K80!R?r(u7A>^,Ya;$"T"3_I[5nI3;P3h6FfraGQt`m38
-]U[sTb]fO2i:X9u)(R#6.miu,A+5j(-A>H@3b]@q46K=:H3c223J0dRE:Xe:p-W%dG`.pMbL_
-SaYZNZeoI[6W\ao2`qMtH,J]t+,^EU*K2Z3LNa4ZrR9B81]K0us5Z/\:Zh]!M9O*5K!Bi0OgI
-0&TR4T?/eW1FQ3]\cOERW%g_0Go0TFGnK0da-$\UmsG$scId[X8#]P:RuVWh"/'q.HH/DS08;
-qW9uf6-$A4i&"\ORgYT`Sal"JJ0fDS-.WZ)L8rTic/l(^$8XQ_@sq\bFV4,[7k?/VMQ(Gp)m:
-7tkn\`CG%n4BXI"Bs=BG#6@c=DrdGOD4@0_i^GO.:%giU_@inR#W-mV=J?cgOSP<*mJb9inu;
-L+B":q1"m*bd+P+7]"[Q\^]E;?QX0d@`4rpt7BHf\"'P&)2o4k>Ai>:8hhTLY)uSIl7B6O%'?
-HeR"tK?POA-a##[Lp&V?:k9gR5mP+Ila3YPZEcd=ZqkGB&YVm0(+/4HrV)>s&TNJ'&0/nC/>^
-h<@2W_L2n'j,,Uj5];G']p"?k<H/kW=c3sQp,a7XrFh0a5?J;jZ#l/:>[*]3drnL_QJ/.9Z1H
-"OZB"s@k4/]#qFOAgH9UoI<GFcVM(^L,W5&TPIW6SI!b3Nf:cV9XnX#<=MRR%M_gr^E#F/sb_
-;Y5baoVQ@is-Lghqm;h$M!3_A$3JAkng^n'B=mW5C>s@r!j00\(BN3,t^tWOL=[`J(2>,NaJO
-lVLM#u_Uu0rYkjF!>SgM(j^(`g,j[^=-oCDZ*1Y-tTa/[N9-UCfYK='f.@eo,=Yj-G!(3M.Nn
-NA-rpI[sCOZ1(lipmKnEDg?"jJOtq$(ar6(k,VDJsH2qR>)TgY4o2&lipl#+o7riq-h>"?gWb
-`qH[k<&B;8G9G]oQ.g>T0'MF-AJ:!Vh@c\aHSh;q2UX&PKOu7q:PiCb/<"`!0h#4bo$33WN_,
-OOWi]r/?@0l[I$`ELanQB;'47nj#uL=Aq*LU=3BA4-hV#le2cm6`PoG<O6:8T@eCgf<P]0HiU
-_ACK`Ql/P6XrK7.50g:5WI/tT$e=W-BR?2>^J0`d^a@nUf<#3Rp_iKiX)],5I>m+`jR-ee_f$
-/IZ:ba$G$jH)8$=nNoOUHMf^U!(M@8,(k@q/SZ-u#3*:8P.:hl&)GI(&fYU]p9;fUV$@Yj?E;
-+t^r?KfrTZ`6S;$X4a=AB:LRZ[,NqR"?/BHhF3=pE)RMG3qeC*S.&FaAsE90X\tp!CWg=NL[!
-+(-rg?%t-F.Ep(sAnXnMh<A<\XukV6<0?'8K@#U6:^W+qpfOrsbeom;(DC(EF$.:bn3\iBX@)
-`nf:._G'3P'VN7I77PMW)o*l!HGg1C9s^@ts_dL#oiEQ2+u%UR-g3hS+OGsfR<r*Z8RG@=]4A
-#`)F!ZtFNHfa7tO\m94l#ZoAiDG+9$0X3eIFUWO<34ItFi!W5B&CAD[F8drj/rF6faNE=(dG+
-/E1:<a*jC4<BhjL#p^)BS(`SLoiR%Wi\c[XNpk&0A#;2=#6>I7=p.WkJJ<iDE)s46&3:u-ZBW
-aG]`4=],V]0fR0%LgmHl=2KIS/p`%o#c<UIt\T"u%50O\Hld5[c6*KcY/u<=8=@C2tJeW!)T(
-dnUR9>Xe!GP/0X.4(9<\OAG_G8U6biTo\;fF]ak\5fP%\K:mKV*j%Li?fMC\:jj0b_)%+9/\4
-PgjA;dG*N0iQl2oVDK0d;M%]`AdQfb!1k!bb35Q,CjQe>j/fm=#NS[9$m6"bsOG//,JI#k9e9
-;_lbEL`Rkhs>Q8fCuPC)"qeh9"`Mp;1/d6jai$5lh/8a[XrE>IV),1cuOI4#-0)")#.X$69>k
-_#P^Q;qk,`l:[@p2OO3TM[:lHF:8mNd+,7k%DMZKp"[;h?=.iiYZ*_'nmt^,pF<=>e9ngJMVU
-IiXh!V!:SWF-H^u`@crb[OL/q&-DnE<$eHeTJAB.bQ[DqkRdRWR^18gdTR@EiSk$QG7cZ[8E`
-SCg3&)eFOTN)jCfF"b=)^`MbcO]jrW$<4o3<-I!iE<b(eFntVO5j@@i^6Hj';dLFJNE'uJ=VO
-!=fmBeI:-'#V&4)er$=VEg,IR-P5T\h'6/2SICHZ4Z--@:tk'Y[*46jXTd-h2e5)?KX&3TI2]
-mohHnF/-$4`k+@T-P=/jDs%fHoDr;HfK0T'-)@HGmQt[?NOT\8*@X8gVY*Q$hiF`^:T&H4LE3
-8+MdU`0MA=]TQq+Y1`7aDY_goj-qQ]]]fJ7P](c'G3Tea1M1>*u(o]lhf/nbcI6Ms=lM!Lp(8
-$3Hq0B0q#I<u@^`N]-pc7RDG6)i2pCI!?]%mn4ZkKeT^h1C-INKC0oEhc`HLG,]<fHpkS9Jpo
-BWQt.ig0to_=:S-(1auMJ=nsq?memgqb@n#'%)M1%d(RV$$ia-h,+-M_:@/o)*Hd4kkr]hNHc
-BF1Jjln+?4]1YdAU<nJ7\@U)T%V0MR'14chqE,@K(/#q4`[L\i][V[j<oIXouqd(FbaMUtA)'
-_'5b@NFoF.Iq,1;X5nS]/N'"JH1'&r>kA;U_@KN^s]hiLCsXV5WV%oY.,:(VU>d7d)u]:(c"H
-goDpX\0KjdSl5Yg>&u0MiRHk+AIg[81&o-M#j[(S3h7%<r7gabt-`EX65c*4!p3(j0e3itZp&
-J>'q@hd*O9g0?#r)[0l,$7/qS#TJ%k`88*.!N*q\STm8&2GpY!LmcmG<A(92f.Z=unAZMfmmD
-3ic1=Hf$+W^gN&+Yg_h/kg_1,?6Q(]5:ts?Kl.Ft2"0<kDanY`Z.:E6g7`QhXZ>TP@OKaI:`&
-?_]!n=oI/pqeaE6=Q#:1If(7N=L>9&9KHO!H01c?HdFD8F<JL*RhrZrt*TSd.g3^u\cH/?H$h
-96&94]!q5]_0\#M=F]L8U3U)iaDE/LN,CNH@Y.:p*@EIAq[Gr,6EBW$`->^Qqt9oLlV(5csOS
-o#aS3)+GbW+kCGJ+:FEtqs2/+Y,ZFF>#Uo8>"Hn'!87quaFc"Q0r3nZ;l]9<p#WiTDk9-1=a>
-6f?nG@lbf&!4W`Uj:PMPhKZdfAk,;o"@4@SQPVMM?d]q4o+BBN(@i">IKD:[kGm+ed22gPm"h
-e9O+o6/U]uYd<X#0e=R6KYr4V$lXBjgRoKPYLWs(&Xbi0a:@tZoPaSm^a'Ie.#d$!BFpu'OtK
-cq5]mLBHSfMt;(=l<iZ'E!q\L+0\KPQ?6il$+TJ7VNcL(tB`pP*pBBT!khtKJXd=[s@`t$E/q
-muB#UUMYB3mmcXo?4<*?G_46FS!s,5)n';Dph/1jd;!r_27'i_-M$SE7[N?(3F\l4/%iucjB=
-he<MXVDfL"mOTjqkIZ>WA'lXKaEi;49"o1R_)/<'5Y)h#Q<?4chM`t0=Zm4g7d4^j0Eh+o($E
-UKo@3T"d4h/+V*Xg"f+K'`d?VPk9R"8&:cJO),(CLt/<c\Q]!NFTgSHPjgNh`=TcO\Bc4TXXM
-&-QL)5URr5oJ@e.!W8'Vl<fRn*q8SLp6IkkS_WfK>!^J)DuKu<#gHN9DD4@*2*-6;K+EB((?W
-n'1h@J3&2:?'m7f"V.=EX^Fm*K2%'ZTkU8t5#WumkI0`D.:;XiXlII))QFTMlt?(AosqX*$7+
-*nk_2i`J4T`V?pS7DC11ao'^ahIrnl4sL:C?*+*%k+7AK,Z(8ruI'L/kP^;3aH0)!V-SD^<mn
-\eG3<FlcE`=rLj4n$;FEILd"nGg[2cq:>&4L/*USO6s<,6Wu>lBg+%0&!`i(tj8V2A.`Zfpnm
-%mq3KR%M2a)D_BZ1s6WB17]B$th6hLBn.lZL*Dk7jcAV'!?o[<0!-pC="JgYP#RDC<fGTi^Xe
-R_qM/Kpqc_=e+?2@cT"!7Fg_02^3jj$S]&NSlNkUo?f(![MO+^:8DK8GJ_d/R(,"kHP>]/,aP
-u)0)rP`ng.e:q],G@TRcS/5!6ukE*?"$r>oR056jgZ[X5TATsFi(iSl\"n'109#^X^/-gH]=^
-MO1m_352P`=HYVbPq/TNp:#"(SD'Iq`4ER*INHW'0(1(GN@D0j#:WT7)A]"="((66@S$I&p8J
-[-8(86F?:-2pb'Dj*lS#c2o3oKNP&#d4./<]Da\GV?K]Z^kp&He:KXTR8':Q[RP".Rrb!qQh>
-rW(5ghcb"ML$!n9Y,^IlD]H*tOpfBr<aJ\IF/DqgbPDqPT6I;5_mXKTUZG^P@poFDpWZh36%:
-PEX0rpE9f+IXDDbF<<bGS\Qke-U%7s[f7t)f0?eJq:=f?rnU07nm-b;Y1FbPbA[:;o&LR/0At
-^Cj]`QF?ClOl+3rC&?,(kZq814fr6]V,*2co*Qi8`EQ0GYt(ldaDW$q:7.JABYHjn#=?'$Vn'
-+b*#ae&P8DD-^RKaqah<:;_)nRh6`=2_r0BtTNmVd;<,&)-eMh`JB^")cqTs5WhHh;oZu-#Fm
-:S(sUjp>,gIhKhFD,"j"+q&\b\T"q4irH"X]q/:g>kIogIZ9L@;!98BD0CMZU*fTDao^NRYUa
-TOmI_>)ZVHQT6Wpf;?gt<:.8LGD?5[-f7Cfl3/`oL7SP,_`\o,OjO"Vc!TIpCU,e=4;k(Q0)!
-*=Pm1^n*@mK3dDfU1-n*7q_>J_0jO?(Q@:)I9bP7%uC+oZke.c%dfqDVaVVp=el1BD/[O"3XM
-\43]*WGG'.,i&uY?9rmtNVYJ:&QoQp-D9+I+^rei6ZO)!7qHrk*D\U%ClgrlsgYhP@'Vc.;?[
-k*O*Qqi<hF:*FTniZ$P56IDSo'g"h(Lh:2W:4J#l#G;eTu`)mF4P2Gf;WH6.\FlN71-)8qNKb
-!:5=9XcOUKLjEW^eP"G5R74279kq?r<@a6U`5r[%F#0nQYO)9`4;Rp05(8hOW5ttSI^fIR1fB
-JN@M60D4,c8q(U;Ma\[9))8V&dt:_,Ds)\TT6h(u(]$SJ"/_3b(q_\"=IVns;SOIYdhlBUm.<
-dVm#'8(Yp@T/(GS_?EMk>:HgtX@g$dVl*sfhE,#8AF50)8;,r*4e/8W]t!G]@61ed6g98&/.-
-0,riNLti]mAfFF>o.(Q5;jK#gu)YuQ6_S#\CuZBF94Vs+P)9bo*JE\'oY[E$dm10&pBq^A!`?
-n*'^BBT(39;_lbZ#kjKWk$7/rp/P+^QEW4V"IJLQ0i8a"\7a4[[g?k!?/+>V?-Q?+c?nX\k#b
-A9'YlM5(Z@S@1G[EkZ,3ESj'Ab:HMBj%+@BdF2]'8k_\Q_U"\?9VGhguQ;7&X@qQR)\G^@gKN
--N!gCG\9:\n,gBV=-a'Ga2^JZ<"Zo&$4t>2)7*odInULoN#7]d6@Mp1PkFCgQYMMNfC<alRlZ
-[&dQ!cQ`B@;pD;^b'/p"d1VZBa"4K,n4EqigZg&c7[J=>7If*g&uJTS1n8*mNl@71d)\FQ9:(
-6VP`[AtrY2d036m"F1B-D!Q,IC5bp:DF:\j]5acp:n;VRbsh@c\aHShN3\i72]8fV2)8m(*%G
-NE::BC_tnC\fgqZ-9pnT0or1DBJa=M>_O#h_aQJ[i`S'C!OZ=<.@fig>3I>;gU@fm,/aoU;=t
-U>K814A`DdH7R>nl9h\Zi>e>,*>".&r_5&ic_T]m8$.EBDWAn)7IUXgDjP*b`n^6UCVdm]@:O
--/$VGl>:PU\2\7&HGa!lETLCc8gL?\[+nQ]$hA(+7c8cBLQCC7/l&+XVJ8X_pA+[XX7al,fcm
-Gj5L&NpN"<0I`?uK-eNS60JHcBUcQ5&qtJkEK'!gbV8Si*MjB;;MS.q@1n,:_8(0F92Q<`WKT
-)7l4im8NEmoE]ZM^h(DX-TrVW<R>Ib@`kI#aE0830?OPHaJZEY9'0f7<=!6hOXm`.SB6:E9A,
-Wob-G($"t1(!!f<JZnGYT>qrI`<52'ZW8R0CUMjTElu<KiB>%$?uiY(_&Qr\gd8g8WcqkcIs^
-GknLP=,tt4,1tbuTdZpPl;HaH+XsK9q(t4O62\G02<,A'm(c\V'7k8*e:4FBj5]-Q6nMh+Y%!
-3KHMiaH.h[IIBd(qT7^=9G`4XP;`:15j?kZZJ-esdTK7GQQ:0qD9S*g_bYKYjN/Ps%FnI"^<W
-KViIV$!O=MS?5`2UE(&?Z)a]7*!$1F*)X^TKmQ2p2l?i+M:-chOu$5UX:KU,.BbjJ=_9&fa)-
-/rQqi]UZ>!ra*Z7*2(c*ar<66KA>b/Pg+X\!NWPF]P(ni^<.pOS!/8[987)aJ,7.3Ru]M[/l1
-BA<TD+Fh*R8KPSki&fNUr1Ac*80`XBbk]qF@pB$7Z>JZl,I5O9cq+>KT*$U4-:#u_Bg['e'K$
-_@kI$#%7(o;ioj\(N'L.08ZD8kgNV'h@6mhQEPf<S/U7[a'lL;/mP'W?]Q=5>jHr5_6HR&"8V
-+HOVBME8>K[[333^ns2..4]0`,!"feAG@MC++'B%r2amH;tH-`'Y:U!pK!fU_U'^m06lnt53>
-UQaG#eF'p.B=k>LYA(:N,`A-aMLmu^:N3gIA%!V+a4cuP[.?!ZFZOH8Va[\MSNA6"9!F$O,bM
-6aOZ<%$_]a+,X'J"?UT_rU]mJuhd[/\$C-InZTp*4D7+.OFp$GRc]f]IZI8O*4-]u-"AMjNk'
-OJpt24XT<EdqO7cK6uIkqUPAZ'e>j$=r$$m&7"61-26_3W_?*q$A#c2G0k^Dp'%[AUES'KNL"
-#^(<,sP9u")/JN?%W^8(14qQ3-7AID8>1RXZCdY+0a8#upSW4I)7X!ptnlGNb>YD$BBrSN6h2
-L]dC"`l?,c9%1@"[9,/CV<bqj%]VlJdG1^V/LZr(t7:L3UZ,*cpN0^O<BF8X@q%17bFQ3jijg
-ku7i8WHFCuV^e'/Xd`i^<P`clh'CIK$Dpbf-CIV/0V)B+a`OOlDfg<b1qM[3GHUr"(Q1H(l02
-Iu%Wpn!^O<BFT^oO!3n8cFe.t`U)DI`9K'?6e4IlsfQ/_T^]4]+[pr+IRVaD8sGWs4:=n+\)n
-_h]q/XT9j?ok\!e#<QKU!mNEP!*1D:<nma<.d?]WP(=_#p.9-cAq-gK72.H[?CD4FP=^e0qE'
-pFCI;u&54IKdgj39@QNlfO/%meIC0acqLP@*lBi+S0jX8_FB\'G:c^]9lth/p9W&fqP"m3,5S
-)*<g"5#2-^%6!IW=W=O@UtKNp0Mqh9\`\85:ZENf$T+S1^a6-fHbMG(cF58M!LXk%-TAIcO'^
-]4E]T5*mFDl*ND9SkaC?lLPUCP"s]PXmV(7:-6=1kbNPcnLWoM*2_31YVYONgn9NH0:g=sPNf
-FV4@s10'Qat'A1($J*T<-&11N=+GZpOE4aG4GcJWdU<P1;sX#iDO47*G`N)a-LqWsSE2./I"S
-TY:9'@UZNpgWHoo<VpfeUZo&FP7o37An_K4pdd'EHY$R)XN;UD?'PTk:,W%PI"a[eURasg4JQ
-g"/]"$0V)soEHW=7[mP,)*QQk#&8Wb&6bs8KFCI;u&54IKdgj39@QNlfmHBf23FthjDkE#QP:
-/DhmFgBr'NQU4#=^^Vj?^C+5c.Hh>1+jJ.4hIp4/Qh/j6sK(8gboCd7KR)[H6'rSSIXR3oR\"
-UUeSbdO`kH?0K\%YU<G0qFc5k1NjXS9S_l>F$,md_H,Qq`n=q:a-4qC'[CQ`3ZX-qg#_EC3!s
-n3GdQm<I9Yiuh+'o>D2Gnl-WV!7?=pLL+?l2g]0L`-AH&TIb;,XB7^?k;Z!=Gt:?Ag_oYsS&?
-!nJ>h$Q2+3g+>QjA)]US[*6JbHNRq;[moI4"XO_W@Xa'JPM5(f"mbL42C8RG3e/ST%<=?A,gS
-%9i2cVj=/q8$BXLOK:Q,`7HLIa(&p&ZBKCtre*1jrn0R&`d]"j-+OfQ_"]#.TSTY:9'@UZNi&
-J?WB?,+o!QWm$4ZfN>%6-&A/XT9j?ok\!e#<NkB?,"83s<UWELbhp_1i"L'^QB)-`5?&_/s-I
-m1;r=VUH#PT[Te-\Pa\WBqtT'$^IIQa$S]i@lcIWTA/r'Ee+hhn$FSZl'/naM!CJ.*2C++ZR@
-u.>YN>lF=K0l<mtcpZZG]/II)s()q<:Bhs8/Bm.s'<ROBgl<i&_TVQCT(2MKIoGBQZXI:*e\6
-ofXtZp*Xt/h0Nf675Vi\$S:Ag7985BcgHR4&t0qlZ4SWgQh"K$6J6^d]$sUgid>NFP6sLd`MD
-ehj/D:,5]Cs6EHn[.0*eCd]*2u0qJ#h24`Q(FNSI)XO&C:dN+3?2.ssOg'9P#:<UlmXLd3p6U
-:f4m@I(RcAq.r%r<6=V9`\?Zg?bs;l-`t<>D]bgm1]0_WP*mSTn\Q4f2-eelfs\qkLGsr6*#.
-3f,03M<VB)<_B:D$&cenANG7-i$i'2dgj39@QNlf*,!msm$LO*i&J?WB?,+o!=)*%"k0FT9W,
-=,3n5?KVoQ`JI9FYZ=n+\)n]92D&Lta9L?tKHn)G2pmd/YZku7b^;d1rHC9Sd@mANema*]G8;
-[rFgVqi=^*:pG&:,P"C3bdpQYo\hf<!0!rgLDt/C;=q+HRu$m%@Bn-O2Z4@_3T2C9`n3tifmN
-%nd_DV+Q[/R.*sr!61J&-:8kUTqL^Sp<an-OM=dXM["-DCW]P<JnKp:3%j`8_VfaRj&'f9#M6
-5teZ;2f(,Rl4PAcZjC4,Mr\L%pg':eKG6;`^a&+I4N@P3_=rS[1lKm`Gp\SK60n-/-a</FtT4
-U(YsV8#MXL/9;3;EdKk/%Nnf0SJjPScFIQ?MR-eRXi08`[&fr*@ND!HqdeH;mHIT:]V#:rdNg
-Bei_Hm/=a,$_Vj1peVt'p=AH?b-H\qTIEX/YboIelhVe$N&/M$]u.$]:_SfQ9o-/)"iAIUN`#
-.8PVZ]E0j`3bZ%TMs\"0qD@>h8i>B=5J(O;r)6V52u'Rg3Ae6feK$uU8?\FW3qH0Jm(4s2\EJ
-?Z-,T46q-P!kjrDu;jP((\IG+P(EmOZeXdf1BdJeb.P>c)-6@H6r,qGi=<]gBe#<Pl7OO<_2t
-=Cf's;U*`tGpm0qE&uA98H<EtaTq<q/4pE@d5:(=T5e7n0E9\VXf[(=T5e9W,>>@QN%I?Zb!n
-31Dni@kjNhYTGo_*T<BH`H8*\#=c*)e#<OFVm]toeUZo6(/1VE0V-pl6mi1iF/QB6JPJ:a07N
-oYS'`",QB)FYK>CqL(sa2Q$1H7(_0?7tkmN.6BSc#gi%3)[["0ArqC7d^XVfe;[;0BcP=Y_D6
-X*e5a,eZ=?#%q)q7&TDk8i:7b'4+=dV5,58d,O??u3jGolQphX?/-TU=MUVZTI]uNj0&GhheU
-*0V'%B"Oi446SP&J3s=#hYsU49(cqlLM6TE%SJXEke*5&qA#=V=%``\fU@GdBM@7=e2$@ALI;
-/I->.Y8XXuOC"M`[W]YDhY",GrqmEWe+g%);.^:6*R\[p(olSafZ]s-+HeM4N!b-ZdB(<)4lP
-DhTuV[F5f<km=Wo?bR8Gi,NNbVPFnFC"AeL,(1ofM5AZ5TL>^;JGjO.3gmaA6R#=.20<kTURU
-LYUf@%7bcb<<itp2/#uRQunHhC2:)SbSdn*c:f$e?$Mi8:FMCtY$M<XZN3$(+@9;C(9Hs3A(Q
-_V\lhKrLlh8bpY:PdiU$+m`Kd]%iK,J-YC(sST8F<&p8S_A71c0-F1F=MHW9W&!QGj+5@d*)*
-Q?(Of#-(T(b"K'W]U-pBlTW5L^aSO1W'S^`%-Aln#,<N_`H?-)?HLZ6lPAhGpSJoqU)-Ap?"<
-/[`RNCStXl@U(`,p=Nf\)d#Tb_<Gku=%)q=PQDZbrs0[/2:[`cK*r3iFa(.iqKa]Pq=@IGlT9
-@67RA5iHZUV_8s\gBo=Kfkut,_:TZ"-cQWn8#J_PlXW+NXJ4/g\l6V8McFk.0Ns(m`7Q5nR81
-.en;KkGIsmm'_]Lb,g7?Jue]AVerB4P>0/&G_m3?,%lLO\$]j7<iYJ3Uh[2teWe`H6'9W.82N
-9R\^9W.82N9R\^9W.82N9R\^#GKVHPSYjb(%?!VX4edu;7fOCS]%fF@'e&^fVB<q7]pn;.gk_
-;S*;2UB-^M`m'"CWC3k4:MF5`^eD:bAk$&lb'@l@m<DgBM#!-<g6lhgdN`BPh8Asdbf:H=13h
-+rs_r>'GU(=)b(HE"GOi<lL_Jt)(<Fki,/.4NH;hZ]N:a&GkkN0$!+P3JS/0.$PR5gLHXH-;U
-PI!ECdS&(Ud%sYl?Y>Z4,eL5>_gsj1rO/e^D5M`?.'5:U]=cAUZWItR+Y!^3V>Y2TVLW]n6Bm
-O0U/TXdD;3_Y,3d(DlR^kR<>Tdc*(UfORI['jBjS;dGaFcMIC?^cFmJ%Mr#oh#-3mt.<YPFQY
-'Y5)6<q!]::3Ki^!7OUmc`m\d[06)cLhu_=oD<*Y\@X7h3qTkMl[f$XLlmV/nao=IfrW3DYYT
-d(\J%pQ$TqeMUMbj'g&UflRZ@6mX1$%c02N\:!Ii"%92lWXV$9C7J^)!p6T.c%^1@@;-Y!0ME
-<D*Na5)eTccLQ=@X`IF3HU4=k0*=`KRB0BCSU4neoh(YOpp/<7l]WAX5ZUX<FHS811\%Tk0sp
-Gh;FKVg#[:Vqh8oa0)-KSVenT^9E3hZm.Vs:U5#3[F]PCW2!;Q%VBW>os*q.kH;%Gh5Qq8U,o
-T\$:_POl!;T#kLa#[/s^gHo%=_>*G:f>f+`PGcfJJ.R+I=PVe,DhZXX>hMJK@Nh'9]'d:!3LQ
-E04KIM8!s#.q0uMt2I,ZFg#o*4]'sB@lsD=P_Yqo]"tY3b=b`_2d_)Wf)%CQ]IY341ie9`!TL
-L<:o23=uqN%I\`1[G)%Yglu[Q6BV[`OjAr^CGR?M!'25=[UMtpTMJU",f.>D=:fK8>_/s-I[=
-q_tq?>?IFc/b4q0PE>.hp/[QqhLPPN*Y5jmN@)YAgh;d>Oh7@h%'0PHdJ/S[RC7j6Tg!l*UDC
-ELbiW0V,Ye0K'WH7/70YUV1]3R&e#E@QHBBPA%0Hdu!=RqD=Ib4Y#;5fu?>mf3'euQqhf_/tG
-?Y:=*Q7&pE;HAU_s5Irrh[#\Ru1f_\]G3h-$neUA/)_DF9Y3m%6+EL^<ml[1UhPtjb$;R*<s9
-[6p\q6Y6aElM[;!epBGfKcA*RM)1>pm%qBA?1T;NNVm+?nIq,me`i:>ENDm9f2:Pk_)_X$])o
-qaR88VO8C`H^W?9CEaY-<+$(.>ZOfY%pj9M8XJ:t]QJ_7W?KC?M4n,',7(5.hchS7-)4e)!'q
-*rrG"8-Y:=\YE3Aol2d>UgHh+8<h>Sbmnm"\?u#2B$f;r(#EJuQ%O3Ndf`#93#^:?Cdm4e/:d
-VU!Kd;_/<O\*W?BmDppYGBJf%l/hY/==KfH\A.,43Yf`B#<Jus:@[]7Zi\uh_LA;ETR!`ef&t
-,G<r'G^)6W5jQ5f%P%p[eCFK3)NnIk%2QH)??]$KVHhB/:V9fF`lL#lFD2r1HZS`5@MWI]+h%
-JDZbKDV276])WIc-EQha=^JGQdn(-4kZA5f9r1mGlDf"KtZ01`$;p1MeC]+CatE-PuW3EfD1Y
-UIWX;sJ*5t#&^(:)l):H*.Qg'ZmHb6?T1rTMcZ=8F^i\<0_O+(K_0"E1_O+(K_/sF9@BFKJQb
-O=jS[RFX4Uun^H\\r:>,jpHqr3f!o]7._ft7a#&'NT24T$q_M=KrJFCOSJ9IIgi_/s/Q&1'@l
-(lq"7:6-6$1Dkp8b=;bh_-er6$jM@#@-e)Q[T>.h'Fnu_@([m-=unDU$jM@#?n`E+#(sa"0YV
-5eg\`A-]bf5U-9CO^Y*I2np7?DR)mJMSWPjF1HdB=;%=%-(cgC,.]a]5NQd>'d[_3,pl'K``m
-C'\;30qb6(BqqS=a;a&<j]HoeTrLQ^V1`Ii9bBsZ!>"6?Re]MDZ6$s2E&8/le<!]hVJGVbN0-
-',&C8MI#Xc"hN$Gdm%-uJ<q=A3GBJ<q_SP!]J7H-;@:!b)%8eU1:gCO$8[n'Q$EY$!G'/3p_S
-P!]J7H.fI*!M9U1RGGh;d3>\%YimO)D-Y%c6%H*6[H%gq0N3WE`P?f5sWs2goN>7;UcHi/a5h
-<""h8(M,X-(Tt?la/J"k\71Ab3!XrG9W)'Mgq230Vk**J@_"&<1jorTpHA<3I>2hV\_#P841K
-[#HPZkIS!FDD',iqRfqij>+nC5!O!D7gNGOYiY<eMgDZ(X?,h?(02RR_ts/)Q-:S]Y/V)rRu^
-89uZmZUE!s)=uKCngq#Ge?i.ShMhj7^a>GQYg$:gkksG/_\s0#"<a%Bc"+]*p0UXs3Z'4m0WA
-^CLl12HQrJU[!7=PUskLk[%m=Q)VK;aSg]"9[a^u+4j[p)[5YT!cf=OZFaG>,/tRem(!GDgIB
-r1mh)V$ZI2,DPduN,q\TdQhFK01LPW!:)h?Id^-W+COg!naIGe?i.T#eU'IF>*2;d9(K\@i@(
-7QQf("`*L^9eLpj9r,:MBQ2G0]A;3`s)IGf>"[[@`Q5L:p51ac@2hAbaR2o-GPNG2=`l6P)i+
-^EHE5fViqSRLD[/7HHQ-p;3mi_qWh6W4'K7^7Ys_nnVA>+;m8_NmptK'2;r>nKBl=(`H26S_M
-.KD:?GD%>BlOlGc*j2![`@:jqO[P45"0f;E7i@[$R2jWd)g*cXV!Ep(0]?o<Sd6@>@-44EU`Z
-[i6[gOldttNM7e7)e.Jm,B@l/<>@68dhp6_[[fM98SOD>qDElZfY[%.:>Bb6BNk`j3m/mT3DZ
-c#U:>(Q(h*=p]pZ$@n(<>=pqO[P45"U)?E*-+&D\G]26.WU-2p_XY;<ikZ>I4#Qf`(YM?/JT<
-c_kGp".o>MQOgjsp;D^Y#CjB[Vd2S>pIhEqj$2Yu*G'R:n=2/HAr^K$m58ir48@iI3cTMm\@i
->rl'K``mC'\;E;!O?8oT,1WkAiQqZaP(U=s*2(^pV$_-er6$jM@#=T8?7-i"\~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 590 574
-%%EOF
diff --git a/doc/users_guide/figures/gimp-print-gui.eps b/doc/users_guide/figures/gimp-print-gui.eps
deleted file mode 100644
index 599c3eb..0000000
--- a/doc/users_guide/figures/gimp-print-gui.eps
+++ /dev/null
@@ -1,851 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/gimp-print-gui.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 590 574
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 590 574
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-591 575
-12.000000
-591 575
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-9a9a9a
-cdcdcd
-b7b7b7
-eeeeee
-808080
-547098
-7393c0
-424f63
-5a7191
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPu]lW4)ZKPM3l1,Q+B=`q;OcgmNrX3MCN:S6^]#OXUkJi>i-Xu+$cIr4_D2a")Vq;3E*I
-#NVer*WB'6fB>]lia_G/q.HJWAD@G2p0[J!jG>5QN9^JH/9L.OFTe?\OQ5ZEgbkX0Ts,'e<=d
-=Ku>SMA7XBXB>;H`9C6]I<AR#.iginG3nNVPVA>gI1&l_`T]2UgZ_8,=3C*#(G/qQoZQJ)lgd
-Z9HsuY6MMeAZEe1[cMj9W]e)+;p=3BT^`_GtM50<7/VoJ9?E;C"&jL19G=1je^_6<J+$P^Y@e
-B0XH"'-G4aN;h-*&1IJ8[c3I:*3%Y:@6u80ZnCX5:`7]n*E]Ll`>8Eo001,1[RuEcbFip]S)L
-:2CU92E9Us.$If%N9P(k-S2,5JR!Ol&=S>X3dVh]0oh2K)a#;]oM:7beWQbuW_r;-[1%fl-S6
-iiFEKZSK'+Ngr-*Qm-g0:\spO!3\-St9>b%QA?X6d^3gQ$,!a5YUJQuQT3\"\l*jBe8nf=,1C
-:RR4Vb9+2m.?'SjU+$p[IA?JB"hsu10.;rN$O#1hW,`1[VZVb&G*7?oS$jG<Rq;kp1?6q(:@&
-e:$:a)#okb^Eg8;gjM,Cthdshh!/5BJD>ruUES8srf+f30%J<Q\4.p4cA1<LH%EVdY-dkA;X.
-MlRHf](D[Cl))=I<dP'iFJtTnjgn\[DWDn\d;..0im4C/%`^?p,Fc_:<\OC9&"%n)*?lsI]7c
-RiaaROK?,r10thd9CnP#]@PQ&*b:^![jI7Q-*DXiJbY'NGc2+E.6WKZ-Q=+\nJ99lfB6kHXb"
-gXPHHT(8;gI-"fMZXhjh'T56s6LSN.'Hd4/d7P'?c=oXcVpUk"VE4qL03X:8JWk</GR"N>)2c
-CRhCN=I_F;,Bj0T4&WZ::6cGC:7[9%-tr39^3HnB[<Wj$]NC]X]T4^P/5C'=`tpCa_!)5dMIu
-PYpu:Bh3.6q+oIgt-&rT[eq92Igln(W13&MG/P<g`p9uZ+&&;sIcYrEVsCRj$KbM'tiVE7l5f
-]#<I3DRUiRU7GDHJND(4'1.gi^D3X:<.MgXn*N4Y.IBKVE7l5f]#;.ERJb0gZ?_G2RYT-=If#
-Q_03A1V2['%,VL2d8+ci_*YtZ%`Iu^K,@@Yib=gT+M3DUbWTKM?dFAt,q6`#ZSb<jE:AIP"Bm
-GP\_t#_?iPafLGgjAI$n%jgij>nj_eJ_`(G+$jR`UbgZs[m)PLMUQ:cdlA>?1`'rcS:3jMg-c
->FbDP[5bGa,@?\T<Fb]L4*pd/i5(f/4fl5rW8<Pf'>\*sg/lkY:@bT5dhZJjL&.-F4'J`G<4n
-Wb0h6^R*):VKFLi6cI:]6uau5<.+]cs*Aa#&hQ5;Le$ThEPRKbebS-0cHVgW,8S4r7L>85i>2
-G-%k'a*]RE.Z7LB5DSA=*DT?<Cac2At7pO)f;K.:1\ME?oU_7/5H)b%QL`Ya;:r1MWLtU;G1q
-tQ<hTH=*j4`IOFN?/Pc2c+hck?6,_c)9X-SA2hUL<k=Q[tS4G2+qTWE[gptkQ(+57]hZ[8r)/
-PX$=5)<d6t1/aD[+tXcBU;r30CjqS1;q#]A0sF`YKqbQ^rG!P?mT]Bk*&7M+rqD.MaCa=Ibh;
-`Q95<Vl!pC15NoKWE>Z!@W?-4(+4aaE7uo4TXq#7LMAR*a3B[;0;ra&U$-NI?aa]B\I$I:>J>
-0Tj&qmCl8[lY]$qL+3>3pOA#=II*P_BB(KoI.7FA!7l<CPf5:B`UUcn-Nl#7CcP*J"DbWF2.E
-kPD.:<BdV3+_2!c*B*".cR9C5K2mme)lD4:/YrH8tXV%QL8#BE#'gaeMsi$nd`#aL02#J:-"+
-*iY##?lLKM56e5&=\tqNP[^EiDV)qa>SAg=qV<oQ.MDoAQD.g`-ZsD4*;Ar7MVA9`e2ANq$,d
-U2Aa@b@D]5sgd=e&%,g*ng@.>^KuT%0IAEP'YGZ*XFdQ.E:cGiVJ.QW]hR:3OFP[XJBTp#FQY
-fh.c:D'@A20H?TcS5)Rt_hlppYHsd7a33@Cr<"RR(+X,iB(^e]%61W@[heF;l#7CcP&52JRA%
-Tcrs9MZe%W)WPB,coXktQ\Ms3_iT4D!hUUc^`LUV`1K?-W2`S%Ll@%CDi%!'KMZ"'EA>-U%)j
-FhM^a$,(I@W=0E$0--e@W=/Z`Moh=S.&kHC+9uHK63+%TlO$@?'`IO.%TC?R*/lm0$E6bPV3+
-dnRrG9QGpro(8kbU=e(F[EGAO?`Q9MDVe0LCS;_JjSB?-3bd>9rW=S*k@&Bu4lZR,E:/R=raX
-@D5M<-Bnq:"VGenqEm"Z'Ef@r$7)<)-;V`Q9N`a,*!Y=;$q!5Wko^,8M#0%&jd!X'hg*@-%BS
-r(HX%MR"d.7QGR%-f2.D9HG]S`YFDhYW6RLqGf5u<E,\Q=_>TdQZ@th/5AYpZmhT%`A'_bYh3
-?qe;*Tp0On8Y?.j\g'P1F;N,n]Z*QoNN1ZDAM<Xg$$7s1-#Jsjaoqc:npVjsJ4Mj%"u@Z%Mi/
-'GBAWP#rm(!Lb7@UFOb<gZ:7askK=3#Ugk33c@Z!S]Z9J=0#4j!^iEiVN(g/uL,@iae;6pmq%
-V!E7/oX$(&q[(%T#KW]opY(@An.XVGIPuEoYEAG[NGfA@M=2DJ]ML&D@-_je6R[%H(15a&M=]
-lLfURVN`HX?q<FBKA,UKF%TQ"=qj9(t;n5(p.-QXt.lb*OmL_4f&X3#T[^7Ptp=P<g`p9uZ+&
-OKNRaLc*X`<i")ZG@dV1/P[R^j)c]%VMR:pDOG@FXF;6u]QB4`JT>fN863^Oc=aVi=I_u2]@3
-%qn)K<BMc8kNGIk*VI=1SUic0"g8/Zr5`G&[^M\E/(kMKBQ4-kX-eW,\M.DpA9BH%\5W4gla9
-snh]`[SZGB!p+eZ5tBj^ZA+(Ri.R8j4?:n7oQ[h[NC\dCN6@-g'oF*_rA&,ClK*,*>s.hU+(U
-jl)B&9#q%'F;6NYt-J.Egk^"`!8_^Lp.H=AkCAr'-:@dCIAoZO32H4in]o!?^N3n0]-9'8VXL
-rNV-`46ZbLI,5-/>#"FU]'dhJo@rX)D`R><5NO=_;[-?ZsK3R-dc':+Roh<jJ8'&=h18!f96h
-Bpe.ndn6-48Q4.t?%Wer4VK3TbFL/#r7O*=:\H&EP:=dtS]%n*&:.h4Ru1noZ!q"8Z;VL$$)d
-]b^=oRT^03TIXu*Q)fN't[D?6YOV#gBiA-\Xq-0>%J[BPTgE<mda"pIoU@B;1Y7^]T(-b+ON:
-NhM?B5srnAt2OtZ>4DgV>[]:Co>_A/t:jIi5?%'Xi<r,@<(!s[`9h,VNr6$LJbLDqNT`4(#-j
-[Z8:N?D7,Yob1sM,D*s4`X_"s_Vh4jfm[_=r-6$o=5tYJR_g0>4.`p]"Z<3VH-bIimQ+gCk/5
-?tY<oq+VSX<NL=r*#pj^`SHZI1[idp[2Vp,/ubVja$_bK3qXC2s<ENidoa9!+:bQRcS-lbp!=
-m/I5]pGdT3@WAE)`MpCMS8*'o3,P-$f?n"G'ju$]aiWJJ?22=?Vn$l3h_#(7S8*(*3,Q(VmPs
-UD6i/i'8a<,@P,-lQdPQM>>QCC(WIs)J"'k;NDm31m.=UadpkKe6nr).-CasX^7:Ii"&VVQ#q
-9F`c;k><U,iM>Da(TI-?GMjddF6)?)SlfZ#E;A%..k:i!9/>T?k@.N&ddtsi!RnSkVO^+_,A(
-#^@T!bib)!];=&V3+8W.02LUN"Vre/!LD)gBH?=&)e-2iaU''#geYm?7$<i]SlET@R^kDi?PR[
-%2<=toK%di?R9P?E81jSo=L@VkoHZ&&!,Y]AU`Mn+`gYnBS`t-MHNOToR<7f3hWp1Y%P*Cuil
-Yp8NF"[[8&P)>X;mfl)Of#Fi.Y&*f_PS=ILq2h@Br\/,2<A<S^gG<2@iEqYPWSRs4VbD6Sc!!
-n&m![U4doa=)iAl!4De+JZhB6@%pL#BI]=Ht>/5<eF_)qcJVt$UTh4fYWEehTP_`K[_.-5Lpl
-4*3E00358DPTXXSf"'m1KFrnAf$mT0iU]/ftEc@!tjb45>P\ZX/\kq-c-36Mnrm0JcJh0l(^(
-#B.V]El(hHMPJ6g[DQ#QfM8k4`Ndi_,L4+R!A*H6nhdhBKT1W1POi$p^^dC$MA)>*JOMd^HY=
-d(4m)X><3qG!!ZA3^?R"ngm?I+Wi8R3$3Eo<H"D_7%O2fLl1J[bp<sY`qb<.gaO4Gj6c4@e__
-h_u$-=89ak*KmSS=!?'0mQ+5=-DTC3o3/BU'_&GCD6hEZ$<!J.YgthKMS!P:H%<,B/lPjg_B$
-F0U0I3X][sscYY-k<mG(eF0+pt5K0>']bEK$XJ5W?=X:A<$i4ZuLbrMJa,0&#]m@UVbLS5iWp
->R;oPLTfags*/Nt^!'cDm^R3DRVrm(bdhP6pNRe/_f26cKA!\C.n,H7>.<2guqcK&9j[r:p17
-<(.+K\'u--'<U5hU>SZY$#P=^r(*b/-NPFt.Q_#T2NhXJFARb^`=no-W%uW@LXSXY4R/qX=2C
-TQ7?s6d*hHWYnq9/I-;:+&[)`*fC7J7AD=(`]d`#XE3G)iX6u^QUnBVUUf1";OO"WW6(Ku?)G
-c7a]f8,a(q*t-6VH"4C+/h;I^)%h?ibEh5,*JuN3`I(hV=MQ*o(Z(e(V1i]\>tpdc:[V2HB`\
-d=+8UKZ>FT]4QTqYcqaD9e5)f`i^^GJ;BCZE-&`,-(nMg4fLS,,+sFs%50k=SHLe>$P9>i%5W
-hA<blp,GN5Q%RKmoG[-rM!mH')9tj%AEaE^EL`**t^<3Xqqk>.V'91:A5OeXg"Dg^TNSG2bKX
-<.g8o-hKbZn3'#.I4t6+!8d6un%hol!WQOPGRIo[&AQ"]@P.#+97:(*M9YMp51#HhmK:(Gl6m
-f-$?>gUPK0=:6touB-m(>M6OR\YcJ4eEJb>;alG_Ice=g!dBIZ7@XD3CVDEDDWLD.&]5Rg+_O
-mAUp%u3rq%u*"bjq1to5/j.[4?>\3]ojplI/XH0QdISQN?VI:-[[qk/XE#p;>c8@ULcbrN0ZS
-W"\COT-Hd96IZ!sl4Q<!YcXZr'M3l=ELDA3qQJs"d'_hC#=km51EhU\hmk#b*ItG"1ifTS#l]
-qPK-W!no3NWeLGL@<VRT#WJAQN$)Q#T^q4=`XB*@K+j[)qc9DqS^UdE@!:22A:LYaoUdZ3)>j
-*OrA(Il8;Grore3h%Na<5S46QGd<!Gf^dKB3_-VBE?Zf+5/BQN!!r^7n=_()J,t&mPUtkJEXA
-!L:]mrHQClH4!%e46O<@ZHP8UU4KYMRnBo/]KD%<4f)StCm?F0jal-h"F$As^*p&"0_fAk?hY
-[2=\QH"^9Z@K=f?_a1=gOod[gVIE@1E6U3^-?hH;89nQ3+q3cDji;_e[E8c7IH2Sf<K#Pj2-I
-Mb>)F/[p1nN<-\Q'$ej#O$iE[nX9EFL^^V'b.g9+'A"J_N\4JaDA,&L1CE>ocC0RRDc`UMomX
-3Y=$J9UKX8D81KaGnQp[92AL6Ll?47g+Y(WtA2HHZl53=FB8$]BP70k)7S)@P,l[gCYbhoJ-u
-+A*,dn1GK^cX\3Z%2P\IL(5kt!u*&unK]*Da`s>-*Bo6Z6;"[b8!VohA8gjG%eDjbSC#GIm5E
-Q$gBfk1L;O>ge:0lF(9!f1-:u<'<TG\DnasjgnVAKS(@`^FAqGma=qE+05:jBrWD=@hTMU5oF
-H_k8F=[qY"q:b!p^$"eY8?.ahc=pt*O])O>N4_*G"O"2$dOLCE-MRL!DYr<'qn8.;3a-E;QBK
-IiNngY/EDs_+tC5oU:P6I<[6>JQ4DGp`"F*A;;HN9mXgHU`XN`1f<@=A)ljdMK?RA>HQKUu!S
-c='$'2%B_]MXHWIG\RGnY+@duVUN:8SZ<ME24t0i@rr";>LBZ)jVf[t%#L.^HDsGq@H37EluE
-$W9p1#Rr10Y:>5U_ghn\QLBFee=/s1TWRSS4D_>*[WQ(@Z<sF-e;$'p[1b=Gn*qZ)%oO,o6mX
-2F\ie>2Z6](g6I^dHh-qp0X'D2I&u"T`9XO4V`CE4\$``Wjg$]Uu;:9mqmDO?6G/"m]Zu+Z;2
-hu6L_"R:nprI^HpO>Dt!_R-`#K&`4dW6c6+R5Lcel^@<8nG'+#Zd)C/Z@5Fk/IOm['`gF.ZUM
-k1@H7:_@qi+Bi:(>b0(%*^_H6+0(pCX00hT^8(kK"Nd`2?#=1$]]^pm,G<f,WR0]F8cjjQ%?]
-BcR6<loia&U#m6(r>9g.oaf&diEJL!qX#'I-A+8lAiKm&,R8i!<ruD'uE+TqC*d?hU]ck_h.6
-T;-4*fhj.Ep9/e[am^f7_Tr;19Um;Fi<@q8oEH'HT7P+UP#Fo*%VT:8a]O;r$8X39hf<dp0V_
-Yhq3oAUVqN^;*\R3j.i_u1jfLYu$?5h3;_Ol\KTiS*N]gn.HDr3Y[uQXX?c$KSE&&G[B>H:kq
-A`F'`geDd:>R)B76I/MkTkREW6ip?c0sFW8u/(n;&E8CL4]]J>"uF*,tb+ajGpMLREDrZGnd2
-<,SEsE4skXp`?KQgPdSu`REoaS:?%\8.=Uu03Pa3Of]/oiOsPFQ;p%Nqa#']=8l!3DZp?1Y0(
-Bag)P[ec<Rt9P0*4ak)5r[`-mLhd^lX/b=!pd=E.gB>/<hXc[8S`uBZq-.ftI"YGuPtm*/2;h
-j9CT`58MXbPg]gl_^L]\res>:CrS3H].=8Bd%u?*r'a"_Eb/sAi83ujqO\NZgrtm%/^dV8@?;
-s572D0t%u$;ifM6NNf=*`1/l"/rJ9,g<K)#P7*N:=62/"st2nltb0d+an,$AeN5J3g`PRDlLK
-k2Js%bb8G@:Si\=>30_EVbimQ5euq8r^l&PptO^NbelVAtJK`_5@j8Qm*UDZu)]WNg!-s8U9Y
-+BBXU:.e$;rN.j!H[Wq#VZ[!N&:)"H)LZ0%t/oE>(-6H:dFqbO3ZZoM;-4r;!QP\Z)G@P)Rjs
-2M+7%)uU8Y.n^&U/`mp#;RElk54TA"6_lcY`n]A3$LAGQ!;Pi2\#7VdWoXTi+HkG9fpKUkUtA
-JO=\hA7G4V/E40nmW*a%^[N\::+EI%>B^ci@U1gJ,9G*AV-5TRd#Gfh'GgsrcD6MPpGnj90#pl
-%Z(5"Y4o`OE#KVOlf&.h@hUX'MCBLKck-Hl(PUPq;_0-`A_9hcUnO+%!rGZ0GP?fE(!i7%IMI
-^!Q%Y;c7+lcdGnM@)UcM0:+I1^s#5McQ_LYluf_pL&<B'q'J2<1&oUPl</0RWtkK-;?FcurLD
-8Ob2.)"..p7o7EU^c(+M?Z],7p7BUUN0DD]"P[WGH&''a_3qU3;i3^>X!g+IXsHSk!sht?P(/
-TCjEShHgdX3Hi"4(""G7ppBQRNf?n]0%r31B2=P\^0YshVf8epGW^`.Sj(J`-M:t>5be<oU"Z
-I<ek6((0_@k"f.e&#kMQ>1gOVfjG`CB^WEk-J9I;j,._2]WB_e&dRc/CCdL>m-OHi/2\Y.`+g
-o.VX)MWk=%LW8UX3^cGn!k;l=*iAjK$jcnm6THIoY9AAgmeg2[H7a*#N_B=Wr>hkghF.ROj5,
-Z89RDt+=cF\a.Bg&NUeFJ97/`O/;I!0+l$8]d'IK*S<Y"\Co.dIDi--6DQhSu;-Qd8-cK]eGW
-dUJG=d?Tm;;(e$E(RI2[B%5K1/f?=^1,LK.Y#PqXF5\S&ac.qN$PE*noYLkIllpHaFC[HNE2o
-_>e8`X2\CGDn2CG;9#H,#mZSUV%LmlTuh;F4nk9`J;mGY;e:^P1J=H&Hk2uigX>O(,9R#g&[M
-T<Sg!]VAa)NS8-IV8;\Ll4To,1#Q[PJQm;HL5"R%iA!Lmd8*oD+o)BN2CYY?Sqi"J-WMN7h+A
-jc[3=BBM;I2<6LHKFRtu5=c&h]LB=@TP?'',CCd>gk-Ms6F&M;0o7O@g0V,)T0:H%#[)bbBMc
-H9oI=4C1H/&Q4O\cK8L0rrmd=7`5q7o(&15h0UHsio&otHjs:6WfcM>-\pf^uehp"eMc>VrKh
-%iL;nLC,Ed]stQh;g:VIL%G+q?;J'c]<Rn`S-j/dMTRPQB%=oYc8b2H+^I`#FZH(bC6:g*DK%
-D":'U1`IGJCtN2('.T&.'1(T:7V-W1Q2XugZ9*5=q09,Z&\l?.q"EAYgnUI2HNdV$$2rcEY]R
-u\Zg_6rG8kP_=UU$E/CrLcCD%u4C"`,hVd-i`10#$kXUkWJ:P_A)IYFttAiD8M-t/%Z!FD)3>
-@CH-GqT3XWY+SQuGLVoV?^^kb@4XXKnPfK9alYh1>)Ok5MRlcOQ*(ODM-_jmB<,%;>C9EI$;j
-d>CJed;XVXNBQ8N_oa-1?;MpMYM%o;AMdGn2cIs/3Uq4ZrE*+$T\mVl0EaTRrG`Qks55nW-L1
-GnRXNrL<PI4j3uq/sD"RJ#8MPdl,G@3_s\IYn]7+2Bc@13#1ehN`/-i8JF?NGf.YaD*QsI+$1
-?m$(N7Wa:aA_=e*bg)+?Lh#+4R5d"%<L.1KcAp0Gh._k@>2%#>`jUX:YR[bU]ViTB8]:OdZ$#
-7I[6Q_0lKo^SjVNt6cis"ckYWaY+=:NR6O`j]('M%1@^g(Hm`,OH0l*T4<rTsVj<]'7H\ocZF
-o#Js%8pW!2OGW*4F\I!YG7nG8J%lE48nSQ@Ff-.NW@Jc2Q`p#$\6nu.Hi":U@mQ)thk6_19Q0
-lCB3K]gDQrt+O#<2mNZf"W/H?tsM"[DtMj4!t9oD>//qY9])pB1b[f\eRp<Qd!'Tlut5n&$+c
-"]=`1o'DbC=IpO.7RC:pa\f#]DYSD5H#Ep$Bagmh0#`f`9T8N7Kpt',FH@kqk8M[%`<=/F`\b
-aH>!$2p$=I`edSQr]5PXL*l01u>:EP<5+9),'TDj0:a.FFPns?8HYd-?SK=iP?r_.L?pqDeqK
-CKdYRi<MJOU.RPNfFc']igkIS?R^.L@8M(%,aniDj#pZ1d2+T'K[.<ia)>>KCtU&_c30XkY2W
-%`Fs/"W1j"=J\B&P%Jo-T4ukCSrkm3'St8,4D)Zk+5Q15@TC0IBqVtB@'suG<5`t=#'AfbQQO
-lh<EYOHEp,ONf:l!P5GC5q3h"1\fEPa[a5;m2-i*c\qduEhi;Iqq`Ii9@Q`IVB$];#*S4eI`S
-Xt]=bbBrg@-A`temNpJIis&iirVbDfTIkqEI.tNdGh4%oh`j5OI$eEeDF&PrI]26</q!-I@O>
-!W6FRbd/e*hbik`;]*%0G*QLZF@%]=sDF;"4G7)>6Oq9^@9m\B)`=*9ql/kVPt9DNVV2'DZk6
-dMZULG=h%lh<-L`Q,6/4A=pjT?.Z>3h&l)"^a;ckY(:WJ`ZM]C+!h)qDdmdmmVIds0SOU4$3*
-6Ee*uP;DA/`jG)N!E&iHhlRT0Ke.Nu\_DBh>[mCi";1s'2p"cGW,T/mu),G9dH0P[4N"jZtZ_
-.=U(,Sdj(o15f#qp9DZ,dOA`f>N\M.1*@Bd]p%_2cS*]oL-WC-t0,>6V-o>4d(*3$jFPM??UT
-KB[=nLs,r0S.g@L321lYCJS?'7a[$`E?[bo(FmDPOe[m`H!meRp(f,B'3QNeFY3p/(Ci&;Dba
-;j(Wn6L!DNIr+"*e7Rn"QHe?\,n.GIU)Y&%m2Mg3I5LC\g[:;^Mu9:3F,Fe1Z5OidRH7@6'tL
-gDjV:)4<^M9In=T*fBcVeZkU,pF7ooT]hu.>FXbfa&cjfTA>6n0@hs^>lK]UF@g!QQ\&BJ)(:
-,=P4fYA-!(A\2OQ`1q5hA5p"D_+%B+$.8A5)O!E(1fYNV4DsSY0r($+jqa3EA&Y@$P=E#6jo+
-.uK@s1e5`L2dJ!KB[P]+P@2`P!$29dV-hpfQ0DrWO-:j&sV)GTP,+FujKpl(k.Vq/q4OcqYF;)
-%6_*;a:q2M:<02SS0S;e@WNA\&Cms4oSYE*kCM@]2dW@T8b72AK8O]:FR1_7j,^3<`L33(jdX
-T7pA:"WN1cg-U50Z=5<CX"<HD'g1_nTp<e%-;]I=";mr6WSP-Fe%Zk>da>OrkcV;b%p\_bf,o
-@"k&jAe2qjiOdK!-p%Y`-S!2#[S*(D6$MO-(LM]u(D\75P(b1kLT>Nni,)@9)FG\r15;$\Dm7
-,JRe0N@9[3k5%o*qOVdC`2K1k4/#_s(4u&Zk97OuaXQ7lCias2*$d7rE[9$V$2a/OE]OLJh-Q
-\PM)so;-Q<V:PJZaUNM79pTo>YM)r^S9R#*c]j![KoKnD1g^r"TXi`Y7`?Pq"=?$n7IiaL`9#
-S)#ll3"!V,4_GR@Q1q'*U(Jl@i)ti^_8$S@CSAP:2\Qe7"N=V'qD(?_G$8EIr[E7T(VtFkDgp
-;R'&LpdlEStBI#S9!,ADKH\'-Qin/JL*LK0rPIe[Ae;MuY"7;>3Ya5fb+]2R5LlP^[\q74TYt
-du_BJdUu?#IK%nl.<?J)Q/!i_'tTo@OjsbgYd^ZT+@mP!d!8[dj4Hbq]UfOd6Ub9`6>HZVY-<
-#lDXS1M`]m'LUt9#)].u_0g8kmL-u9@krV!7.@q+M%0O!$U8c`a3cC"gk3b/N4'"m6IKR5)JU
-W3mKAj)D$X.tG@6>ao=,%&Ga*@e55.rol8m6d)9+dtip53/JWFr8Sn/es]$cl[K3K[+*g@RZ/
-oaiE-BKu-\hMdGR!o])$ZJ400'<WU'=uE7=Us01]6.hJ+J4:0MF9(TlWnkr/]BnB0pps.48&R
-fp[h\=:?l_]mg?,OVB$Y*T2jChb-32#`KC^N3^fP[bm3>`'DL5P!o[,noc<],?\H-T_D)BG`E
-0P[`a"J*.gF7\1ZBua3F86>C_9DC8'M7'.,<=nEnVpO$TTD?iclNr[+"IHd(lCF4,oF^`tdJe
-[uM>mY//5MB6RN=Fd-O:*/gJ\P2piD=('j[.WS:uqB"e8@06p:G\:b;\\uP2/\*!:Ua(V@G/X
-9pajXG'n5mbhVr]b*1(-QJ-&7<id?nUQ?$MrfbK$sZC_XKE(Mp"*VnZuQP@_qm3`bUMmNGMkj
-fA">8ssfjY[oi(/miWYS3"s%6d6fQ%mV^@Vq:!pr^2fJ:)tD's%DV9mVN6S0-$D\I6op$MK_?
-`RU@s^f5>hkM7cro7?NH`8Wn'[@0'hRB:4b;W-AGuBIo_731c2X:/K]!?[ET,8G%pI5DI=`LF
-p>LV68]^A]N;9cA3o5>[`u`CT>K/>&^[fP;B&_Z22=Ii7(buSKi0t0ai4a)\:;CiFS/*C+NsB
-:m,iR)Tn"3I7<1%N+fpcBVL2K*AI5I2nep^PNat(_='80-`6q6II^4nTEXm'E59Rp(2sYO@La
-cXrTL!-.K7+sVR1i]W1CBAXink%WQL_(nT1k$1bD^%67=KL[!(^kc`ZbpHgk9Ij*YA4cq\*8I
-N!"^4]-rOR\t;.r`VV:/0^``O81U5Q1#k\f7]AI6)#&f5T>`pil5Hu]1=b';a,U]7up!UkDm>
-YUU51a;$/m_i,&G@T'`n%DOlV/*N)N$?&=nG)P(A?GRU*'bHmClr\WcrVrcRoC="UgjosA1)(
-WC"-n[5J?*;.c%&^?91+t.<U]oS<kb<rEbi_D@k(Y)V$)g2p2Sg3]rI``d":ErskropHQ(@e/
-dWr^IIrp6?^8.?)a#;qQhfPc,MV$>@$ud4(V_7T-eEG/MSS3t?77utC_AH'o7D:;&KM%#Z`OD
-YUmQ4PKSUQ7!32d[N+;H+J-JD3Og)((lm)!o@pd]G%,#/`0gl%kJ^M4:WD0"t-3,+7dAY.]bS
-Ed]Nd'clNH$1[u)t_'"(1TQZ@gIijSLNAm!\)O`oWb>+99ikIGLES2E*R4Zlb5)T,:.YDMMi'
-HE";O^#1-dK0a7=>EZ;I)Bl.`..lZCDD9=FlQ<!lYX@T*b[9VRoP:aA`\*S51>K9;]&:gkr`?
-GGAe;]E%Mb>l4Kn@W5:%DVX6LP2eb,0QGWq)VIk]N330M",*O:5b!2<K@JBp=955Xk=u2<;l*
-`Oj,]V$W5&;bZRH4@$fAquLK_i+/oG9SI[6`l#IY_3@Ee!Mu+BBKFNhOu#^oJb03,0-s61R\i
-[a-?JHa"^bb6NF@+b*=/]o[%1kol;Y;KS+1$/>!kh232rl1GRQQgBu2QI/IE/_O&mL[SE),l#
-9Jes=4*E7:GI$dLIk0;VUUi_&(%8mL)`)50$#nh.fdN_!#h1=hbb-5GWs\s0$pp$)V3-PZSD<
-o?"sHWR4O>BZ8cudPFDIYSmS3=Sst_7fN13ZW[gJ#C31-J:i\PF,mkJI1cmO/YmZ,FpPl(),/
-4,t<T7\5(NQ0B:hVJ(fV!L*.D7U^'c2V#7!OB0`.-jDSZ'_l7\<WL:/,u=3-C4E6aLX(ZLKoP
-M$U>#)S*!h1gZ+,<^?muMF0*jMOKGn9GXLO:_Jne!f)Y[d_crdD]hB%PY8D3ai'ZD-Q`(CVc3
-'\JuVDB!J/?#Gam+-_/lXAU/IRg".h&=S`>q?N=]N0Q\t%B0E<(UL,emeU5J**9@ZEJWk6M)H
-?&Pub,@\[;'X=5WY[<?jkkp:Tb9'mU<<5KIU?e_c!p/-Meb>K2"n1^)DDBPBjJNdo47IZ3mY-
-rrbaY%cHh4/1r`M>kSs[NH(p@4.5Q<^OrWT3W=E/nGc(D?Ee,%\XET[Ef2.JPQDu*2(Li:Wg$
-A&0Ke.UAGu5WZgs&)GKf![ZN/Tj2Qn`@=7q_G[3mY.MaBD1=#aU;Q"\=)1mGoO&:^<]XZs>)f
-Z:N*.+B+%o0tuEe+8d>)7tR%J(/Q'VU[375.M1.*R[+A3`akW=d'#BcKW?WCiM9p:SU`Kq!cd
-KoEAb7M=.X5;<--`=oXVmT?L`i8+eFX**,JuP\\cB@EL0#*Yqm/:TYNr24XN9d6m>oidCGX,i
-/0PY;AjpYEDI^rUeha2V1t(43XgXF_Q1N'jjaKrPjqKn(E.H6.?6FsCaZ=K`*e=rGUJgE,Sm<
-?ZMf;90)j2oiUU7+39Z"3M(NEu3G;"#ViW_;16dCIir$:<3eNt'0eUHP_e-XjM9G(cPH!TB^/
-Q<sW;=o`ZTP.<_<'2^kT.\O.>ko`YJ&9^qd9C%TDon/^\Z4Tq8`O0J,c-jrV(g?GGp>tq2^#a
-S#L1mB32/3>/prA.urNJL44/<P<FuS,kgEjQm4Qg*MjDp+U.4%j(+Ca35;eX"#Ihi4;!tc&Z6
-3D`-ft<^*@\\E>2c3-q=GLk!QA9p):Rb>eR\$6TUh-;R1i]Q(<u=K7kS*RChmGg'7rY:K]cmo
-K53H5')amPDF/SD@F%jU'q!eZr;jmFt$33Ne8+%5_g/0?Bh<N:LhmLUCl(+Y+nd:.%q51S=4G
-"NNsb+[<#kXYiE<]QWJ)0=(iOIYppc&S2!&3`Y_)$Mj36mfM5k(=*CC]3XXFMdL&b=rsf5Gp4
-n1W]>+V7)8CW*U_ciK*]YuEG7;dcN6T1\JQX9/eoE`$(hUTE>5Yj_8'^qictFq=.Ki6NgQMo4
-*.Ohn4MA<o,(7[5GMS0mO0fQKbKrWD<7js2Xs].Vl/7e(b7:'E*iA,K>eHG@&1,IL.?mmt:)!
-</:eVN31I+M]oT7m230Qnpa>'=8Hl@$:<@Q^6<fEdn=bBAo:R<[J.<2rm^:E@_;-CVgVYIG5Q
-R<p1R3mhjk;]Fl3G:W/Pr"P`rS,uHRq'SK/hJ,!&rN1kP?Mt#2KPDD5F!UrjB[3?OJL)4'q_6
-*Y+lTLSG:@Zi6Bdk/H>Ag#!9r=\.1MF2djTCqp;9`EI*=,fhT0.A9$lscOQO^9RUl/n-Q!l`V
-D8[4#mUjc+9Vq(3.'M),OeNkG[m$M^_r=YITuk%dHGI3_<'dkq/UIB^-[JNDHF<Dm#J"MV9]$
-Yi(UtQqCjQFKr-HOaC#l"l+X**H>Q]:E,delgjE';Y@0c\=%?Gp@pa@SfP9);Aog%*i60GNI-
-+JVRVQF`">aLJFOuIWt]'"3JeU!M2MDNI=NN=bYAD,cVY.jOW#`4FgrOAgmKn*%)W?O;JpcC'
-[u*]dFAua:GWL7C'*-sJ)e'qRL^FfaeO."BspatGA9Inr]"aG\.jp*Tr#DD7D9d(&5HNmfc`p
-hj7+fA-0+NIllp8T-.nEBBt@[p@F']GUc0WeBC)NQ0N5"*C8$9$[EquKoqfKTBAAUuSUd2"Gu
-.?@P_J1c5UUe2%?QcAn_h[ReJ3f+:#fI):1-.\$.,!-K6I+@Mt6AJK>]i+$70?MPE$;,Xj.9-
-<LNMF6V%<YQqjY<HX23Ol=ob]a/SD#m$pU?VW*MUn&9N6_j4TfE6iT(R\lTFe?S1g;$CourK(
-CEO;3n9?6E3:WV<#.liQ=/^[SL&O6/:n6<BQ3%ap"+bR:uY]>R@*&DCp:JZd5g2"A?s^[aK,K
-A?3p@HZI0h^OQ^PfTR5)JZ0^1c<(*'aY3oS61di>FB,*S[PFS717SR0[7ql;LZJ+o'ESX(/sR
-DYl$n7iEXSRNEQ]OdSe!l2%I(g;AtVu*b^?SJN4r=N^_SkLnfIieFe3("@?T^Tkl1GTVYBCnt
-;i?qJ]RW<84PDhE$L2])ss0hH[b*\sgHJ%)Mi'HLr5c+sZi%*mHqAPi&IJ=Rdt^.^1Ye<-l`n
-_A(T9O@IV)S-lC+E>lJ*E9]:+/tmM;`$sb?SAo"]3aEtTm'@9.\%-m@"+m?j>#I>I(T)>-aW)
-rHS<"tmk.?Zp,KVq94KRnt#U`09:cf8Aif:uW)I]!m$`k):*rTA!D6QC@`>jl8=-o:K1Vr"]D
-d42XC)m!F@#E9Wq'6m=L,?;qPId<$;kDh=37TqN%&_DAm(e!<K`fZQT5g!=!!Y,XFs;JD)HI^
-K6mFb_K]^9VgkN9jfKhKF8j_5<?m2:Z(5>$*<T.$_]AYD'`7$Dt4dq)K#L[Rqn1[H4HlR1kb"
-TGU0V0npfSMDo]"Z1uAo,UY^f!"]pOofkh:D/`[`>@ZQEq3!qFu1@>&2=(m_Cf)RV.E+7uE%D
-YY8^i<.&H5Z?&G/>EW\!aA`\>PD6O4m_uG/;IMV-)6H6#m`5F%*?&i;Lic.r/uk;#CU'I??4J
-#^]`AQW".t512/+EhJ)6e2;:s>"4+)CRiPK],.]0_mM&@g*c)0&Gd2Qsn`i7EL405Pt";RBHJ
-rFTnl`$l'7F5qP7];CnVJ8:h7s:.W\Z^jfRd3NTC#NHWE&,<c%<2q>Yh=;*g5'#$Dnm4)K_$&
-lOJdo\aO0YDcKA%]Vhh;DT*H;fN1#X"8hT<'4M.n?5l$u9/NY1P`bFpG_5YVr.+osUFVJ2GM]
-0:gciS9e>>C47S;_%O*&c7]<'-q%f3FdA$Pp9#4=S.8S4&)B,Z9oL#Ul\-7)Y;-1E9Y+]pcUR
-!IP./on^eg*,)6phP6Hl?_,9jQqViXV46>YF72X0Pd[PH=lL;n7Q@!%.8EfW@&P?NSXA_LE0l
-<S>Poo4.S)7^e%rl\_F2<J6m?#d+oI]_ed4i4>gO`K.c@9/*rX:eYL$JR/P#hUEZP12S6\+)$
-C]tA[Q3bjC?['%4^4G8KX?>p,GJ,0$48sKBt>tG:*-=1)3.=?ICpU].<58bZtHP>;<ik"+<8;
-:F^3F)3)Dd"lZ%"o@"St[@eH]&`fXQH.a:BcT[SRMH*8p9qcBuRe`CRAEt=K%SKo@=`@8-3S=
-IUOR&oplEQSHWE'@N/1)=AVcTD_*"_KLKKEIoo.1I/T-8aX9]oEa<j3)'PQK!e)1c0s&eE18V
-.8FJ0\huk?[9:k@M2P>E+qRAW[Sp3Cep-."]#H,qp3/J'oU+e<m"9&AEt5YR^Se%O\bDn>;R%
-J9jA@r-ENYk\)5f_m*8;1`he@,#/tt&:g'9]I(7==&@h2*C(67jX5'"\=io8$A53tCiS:gr&6
-OKJYM]dU>c,-2f<'g>`Y-'B1YIrWEgZ`8@*BED[?Hdc/2t+j+UJ>8N@#IslU1K\6!I:=j_:C_
-D1[m9/m*7&t+<#gn!i$%e]o-E[@g+-\O"m$cLdIpBQsi5&Xc%VGT\Xu#H]5cTF%&$[#7!Q=P%
-%tQe5:d?KjGBT0$u1mH,X+GL:?,L0G:c69mJF:HX%$`m@Spr[,"G@0f_Xn>oqeea3g:;NWP4N
-"QWsT7US;dOI^k%/U^<\_X)fo7JCF_mR`:/E^MS*1X82OVW^'2VfpBXEF`c2MYn[Y/s!uIet=
-67ZD.S]Qsj+5'e#u<bH$I!@8-33`)EjpaYThYlbTi+cs#ZtcVE.L@#Bl1aXJ$?MPdoDUd_1".
-1pYDWJk+^AE8'$1QUM-:DdILQ(^!l0]N>Sno,RVO]*!pkh\`L']l-9$VtA5N<`O'?G3oQbna&
-\^IIl%C]-8\icD>s>fr<l"]P=&apoYpi-]^@<Bd67DO4-]I]`mIGI08VSsCS#84SZsS1::;7V
-I[T'dld^OTBO&nr4u:;'KN@<9qgu2o1tB4M(%>:s0@&Eh"Vk%s)RC-)WpCn<YZ[<d$f*7%t&k
-jEAkHPGRVLEE#QQ,'Ql+aY]j?r*4!@U^48*!TPqc;pN%<427>nYak:F@^4\OMKha&5C>iI\Am
-19f153BiFmt_lZL@Ydn*37nnT6nV&+CCO&-RM1#*)Cdio$).>*pScDA\G<QT><mX$,0>H#nS\
-_'bC-5eq-kSACmRX//tDLs#]\"PUI:']`H4QA8o0P[LlKL<##3E])pVdno<*BVS"DqP:W0f0l
-1&MTc+,&i/W\:9#._u5!;Hk.=X4o"d`":lT,O8[,5pjGK,&H,&hhL#e;'/]$)k0UD@_HW'V`0
-XGSWrA?]9T2Qko0c7hUcN3V+!Xba)obrb?;>EW`Rm:;LD3R8V@u2ib3m51$;f,XHcuqG@Q_IK
-TsD;%E[M<On*f`5!2qt%kmjtM&)Z8oIg>H"inFufG<aG(>5>l0EY!NPhgL!(s$utimluUqr9t
-b/i%d]aIY5[PhTOoSHn]efq24-QBAWY*G[X.\dc$k44WJ0Y0#n\kl)CLd3_luu%Yp2,T?qVq\
-dmmE8<a&M!,+V/i9c;HnI+]2M[R99(u^Wrn&._$$6Oeu]C.%qOtZUBHV^"@;LfBn]*H-NT5+'
-_`Y6!oY9L3]][s>Ms-=X30o]0,+Vl<siqQ9N9ql'9C)nZ^NY_nuN8S^'!15PPg*oVPWSdBB^'
-XqXb8jH%-Q%1)Lm1#N]RTr9^h%_!r==G^$'Dh%XPT.U\c_c")#R^GL616I#75UQD]"W-?G3q]
-)GCaE!N&;r1b]H#R0_?AMf)3+NHrs\e$5V"JC=P]ZP3<_Yam2:+Ldp<TLbBOgCJr6GlV1Q0W*
-_$iR>hr&1i,,rUBf6fmB?emt\a8H`S*??pk=(!3'n9dd-XYeE%7,)QfEWljK+e!FU[K0d9^Li
-g2VScR]-mhnp<CgfkbOcLnhhra?:L+l)FTS)WbhHVFHMguu'f1+A7bf>F0O("E^S4`S<c(KHK
-r(LUKRcE]K-Sm<hD8*j(hn9BoGab)Jd^_88)0Xl]/DMU.lTEN8Z0SC`<Z4+RN8se=;VF.`Bmt
-U<"mcO*OpI[AA`HV@WLi.B<,qQ.0VuG_I=G&*hI[N8*3!Yo)Rjc8g2("ue>iG\S"!>a73/t_M
-0j;0V!bQ"]<o^RHVQZN/XrLu?o2(8J0&^>+a0<dXelP)Y61X@^e["e5T.k'o7kKRpYBfDd@,g
-eYQiPlgj$!s9ZKrt,**[,cEZTeG8sU1$!et_$%6=p6SR[^R0V>97@/0?kB@'D`7K:8Qq"Qi;d
-AV`iTGP67n)sYiqtE4FY&cXLKqWSP,2r%pe"U(`o]1f%Sqdm]rNP1Oa*D.D+`Lm?dPB"QGY@R
-]?^\?)ca.,9B<48lQ!0!3Q]#Pi9"B0-&5?1eFKXnrS6nQ55")!5l8&bF:s9nS,DT&Ad$tX8W"
-Bg>W4hXP'CYr!j)R1SGV9Mm9/)e%QV.`cJOY"qX$Laae1&Qea2Zc[&,H1W?2kK='elbm(\.;V
-R:@.&YI=YX5O@:@=+)ubq!s;J]t2.@:X9u*f@+N*hhSi#0Yg^0kX[EEE9DXm$E!rtlBhA,i`i
-+I9QcVdp9ZDH.dtZEHcI*^:=Y=t3-CL!Va`Q&49/!nTV#iVfoKNuVl:2L(k@i5](75ZV1.Q70
-_++KN#!<%V>L8[LZQ)@1[#lV>`\C<HbDG"'96SX0;E+YO[F9bfM;S$(*!1!l1$&>CAp"L-@Q/
-OlFiPc(,XNoZD'HTX7Nt@a!\nV&%Fjrr($+Y!um8T>/b0dK@ip&2q^ZjME@k=G0EL@)5iAZUq
-D^76jf#ViT.)\WT3g@j8_s1kKC-[:9t88YJT5rr=V!+*,(-k$p%Scq;$#Cj3`3M6,U=H,TU>J
-!NbN=PK,\lk'P9sgg=Ng9ckp*cq[tS!F5OWMVo//&lNC_^Y_C/CT4$7-32NF.h>j%Sem6_a@J
-BYAV\0c,>aLd9RUP5AU.Q/YUZue#>W8(.[/VgSOs4+76X%,jcq>X<[[/dH$6JH-0CjuOJW//L
-Jt/<:cmLhpHN*hn$,Zl!Ee@=hVY*Y"3U_2a8,U?rq(Y'LSitLhRjs.g]KpE#IY<0T3r-UpIES
-)4^87m@de^UoM!"YLIFKg^Dl#=dq(!Is"rTO-.]M'N-b"j4(37$,f&qKk3.>nb.)N-'?`.*/S
-SR8`(@0!WqfN:ERG.Flb(c5S][nQ%Zk<N46@M(d0M3ugL5'ioK#9:*#`V8j+MIQ/[icM:emnV
-Pm:663ltSY]M78j5::m&I8\5@q844ua+$?uq3$(&3"E?BH0&P7e;364^:q=S#rZJV(H7@@+I:
-I^.UC)PlSpUT7,-Y<9R)qD18IC-Co8#D<"HmT_Pt.03u(f>\MoDc1-d.W9X2/-5,SA`dJ0<eq
-Y0H`It`.C?FhZUW;?bsj[:(#pAMJ=i4%oX]"e+OHD3gJ%!ar'`(-MkpuF<P@/@>H,E+K1#gWF
-eENBP<OQB>]ZD?<3cRGAb[-TQqVQ7)j1fM&E8qBLcrM2#JLK!'8di3.!;<+Y9B\O<Ojfq^kQl
-RBsN`%@SpIqOkknp<dN*a7GcXn/*V_7\3\RGn"FD>9S*Icu90b!pL`t-%9&-aOH]a"4=Gm0ku
-i9bq(Lp!$?qtKQ7pNOOPq]RYMVDna305f0VH?1qJ4)Qgino;+;GQtSDLqA)(C=A1>@%057RTR
-ua:A[U1?Lb^iGrV<,0c2CO0gD@9LZ27lf@N[[?$,/'//W8VJP2"C/61!(+tS!O/LSQM<1uu@I
-XoW>EY1rp\hDS]il$tSPHj:V>[Mu%$iAhm+XeXY'RWW??'KjO%]0n`'!T'@6#^bs39bSESiC<
-e8Nh%RoO@e4PS64G)0GrfJ.s@=&]',n(G_)8L*EFu#o9M+:S<[DZ&6/X^*PCErCuA.YDENg_,
-(3%#4L9"j1(KV_VOPBo`[>_7UW(ekKtMu*1V+#/WJQ_&o_S/Tj6u7#b4lX)Kl.BBYlEk-JZ;3
-GlJWJ(9$f`?JIp:,>KV@DTu9Q14<=Ao4T=-9;.!J2FJm@3*2N^k@/[oF+k\;W?O0=):%:Djc=
-@=4>@:X&lP0h)pcp$H2u^ae8T.u%Y9h6(bCMQ^DDkr2^Y1AS5dDH=^*OAS29b_.d#-K9^sq:d
-*!-dTmJp>9IGHAXF*1Ig$:$7_/qB!]S=G[c0tqO%pm`5.K72(-9-c$]M,2E5VYFbH^`a8&#Q(
-K(UcakAeai^i1nEf(qFm/jAZClP]h@Z3%7#M!`!ggO*[agb&d2q0k'l"MXTH]g0$OjG1R#_fa
-IlbbTDjuEgpKd*md1$C!HtlqujbZbRMVbn9BU.h,/hipk&+DNa/),$GB/!m6sF@!ET2iI$jMS
-oF+V.?@&368l(>>rk-hnHZ:.j(Q^b=&Y's7H,[gE:2su@"!Ah%&V`i?LD`oJ(L;\+Di1P#a$U
-P[+\acsn-k)C-B-`9kX*AK,ISUI&JX0`5$1^STJH.ZqI#F$,pj`rm?ZS5<R=pK7?=p<'?q.:r
-(]G_n_p2<d'eO=*(Obl<>n=:PmS=aRP>7W!*f.N$!>KjlBBI=3/hI\C5_XY5Kg%Le7@XZHUUI
-e#p[`Japu&MJ9%+R*_l/<ekTSTCn52dLMun`^?bYUTbu?tTLulDGL:dF]Z:0WBeUAtDU]*/6h
-m&oE+%c9rXDn&r@m`_)hi_h'Pu\0#`h8irdiYrI=T]9JQh\E"_T[ZZlb%D8jC8Un,f51mjkWF
--9/ED2]RPhmdq@CCmu"p""d8<OmW*B,2NVlJ-X@i0%=eq*9bhkV[njFF1o&8#r$EV*I<nm(t)
-qVcVZct!=imOH[XP.>b(aKiT%ip$H"7oe7#]sB/TDbqulXg*JnJ*==TtuMeLgYho?dGcPP'&#
-6AQe+8;VJ$r;5kM_A/?2T='UM;UD>5N$A;A0[cU&ZhDT&6`qt;S.;anG#1*ihk())^&9BW-c2
-OQWJgK<s*[RL;Vrn#?>pOM?eV,O&$jiSt>*9V`lXOP"#O?DC1"*GLOZQ0Y%=Ti7O6_)`ZR4#'
-dho]);6U!WHJ2E:ES`h$r`2ThdiP"X^g2X`cacCd3a\\r7i'@2!:7UHo7Hg$Qbtf7V[n/o`Gu
-/,!mf!%i>lnckHMZnJW>?4D[^QHN&is711a(]l5jD"%\G&:VoZ_*^I&hW*)Fa+"%5OEQAM!S@
-hE*"INB^aI(Rd0K,pY[T?jEo+X[Ts+Q8LgR$X#:Ej^3$HJ?#Cq]]K3#R6O.D=.*+^Xj*#o&Z%
-*4(mdZ)4A1qNY>]7@p`\@R'/onL-hJiOZG"&Kti93=6bS9i@bDqPZ(5VYt6M#h94i!@Cb,6\6
-%I=1C6HM[Ed*sUq7!mAal<kKTeV19p8-gQ!^99GhQC9=sam(jFb"Ua`>e9A\KBIC1&JC93ZNs
-5Z'5s$)K*VXj%[b;#mU$"/_0][u.liSAF1qS#(l4T+t`NCgJA8W5lr%1lA#h5+uj@d4WpYW]=
-)CYYgcHn]J!N#Z:eojC`lDaeCIf^C;i=oArLnIe<&imb($Va'gqecrd>l"pIHAe<l$Wa-+^tB
-:NT^Ch6hh,OaLV28D4'C6<ejX)+;4YT"LH]t`7PjCbS].e9?G0h7'bYZhC!#Nj<-qH>H2i'\k
-3D=scLhO(G,UqHC(>tW=G[JAeHK^"r]Sn/+2MgrQlc-c@,usk65MX_M\FHVmm-3$`<P6cPrAC
-R=9>E1Dnn=7;[dHg$#7>Hb5o'<jt><R5r=pl\*gAhXR%Gf[1gRB;GWZEKQ]G#H@Y+9rZm!_jp
-H5EAcr)qb:'rRa*cGK5]p<AK&I?.`NX/>!C[\r4V+n+IQ@l)LE@W7TUGWu5s\?n,s^V+,F]#3
-e.$/bb?nadYCC]:5hU_:]*-A85gI_5_s^O(=U3E)+,;4o;`sMgT,MtOG6(q$=&p\<&P`Y>b,<
-.m7A&$#/:ckGI"H#0$A#edF['"UEUW;F(">DG'J$e(OMEX":>"@r-=DB8IhVHAW7?X<*5V90>
-'@\[0RQ*t!Ko]2Te^p!X[1</&U/5\"#S'6\js6\"LSjVb:XC;_7r5ScOFk>6WB_l*]as$>M5Q
-tXRSAl;;(c__"[d=>P+Sdi3C2k`4GC-e^[mR:;-GnmH%("GAj-?&%;:ZR[hFGj^:,;hrTN]S&
-(LW`5Z*PnFY't58I4@?oqeY3T(&6&_]i9=)Y?h8=9Vu+F].sn.dV\%6:efhL^2#q[>'UC#;GJ
-j@29P\eekXij^<%<3n6aX>XXE'sk"345iH;R!S8k!&YP#WBa5[:gZp%n<ed)=-mhi-Hfs7K2l
-spLk+%p>b)&]kDg4pK7P,;-[Q3?&P*I,5QdRJ$.mXr]ERdp8niN++b.;>[ociEcusF_YL!Z'H
-1g<L!(,np_Jk,VC8n8W<s/4O`50=GH&oQ'@S?h-qO?>p$;UCiAZK<*X(NQU"&p7!U'Y'&i!c(
-Ef@ZFA&)S=8Xb3JaBTW5a4Gfh?^V(OPD1h8rWusrIJlX_REVL8j.&#tK^B##5*Y];lj$;$_<)
-SdnHN\*Y%U*X,A9n8O\!U<K>X?VYo`ghqHjaOLq$`o[A7/E29?Ic"k)/p14a=js43lU/:?mOI
-;;l:GI'"*g\dKAThf5N6m$FKg-0gQorA8aTJ7jaGbc<p-LLB"5qek<gDm'CuIX(:NUNX6=K+G
--3:,hXuJTc?$GR)si%-fd1b5FkZGc8.!'#,TNdlT=Dgka;'oXYoF&YSUpj:3oM$H]rnHA,mV@
-6a2!d2`*[340J2gmU(5$"f]0VU]\_YElV+V(?E!k:gKJ'oY*DiDG&Xh/_N>%rfJ^90hdorUXS
-%Po]&q(VAo9DdN0*Y[bt*nR-t=D0'A#SkT5%5G6hNL3F0\We:"NJ1aBokMQken0u(GiRie?;I
-C0Hhk1Z["dcE!TrJ/'q3;1SeBK;N\1i9Ym;_4W?&URa&Go1?K#.hb]M<?+aZjc`QndjI3OVTW
-"Jf!EX>IoVaS.BX/bG\7B/&R7!(IKlBqEV%_:a<_KDue&]6a,l:VGV1YBP,4*sD0G!HkFOc^1
-9`?>k&j/c!cn!%gL8hVRr&B/fQtB/bJB;\8m!do5b@rreeU%!K0G)o/A\_frr/iRn=s[pIDR+
-3k'LmtOp4#/_s7o:$o83P.f9$eTg9Gmc4BS$S_NK_&mVDE*$:n\Q]gHuGN/2DMra3Dp#H<Lg@
-)7k1']CkGY)`M&&VYoioCVdT)B#L1[]oAC.Nr#$&bJ&Bo%<&i&L)VbR1hY[K*MV*/8:R2u>)Y
-AXm@#^cf]sIS@@-`:4+8>NuDB;%r#p7"$o`"3+n.%^/lN(Z%b7Kd5!'%N%Yj'F%&s0^&2'?s#
-#juVce$CJ72gB]@E&R6Z>o1IEh&oH)jXVVRgJ5&TV1OoAZHI&q8$\\/iiu%]jcmZ;'@9+9*%/
-1jfe"q'%T_Tk9">U"Xt*S2:#V"gP8D5%9N1/kT%"7&?/S(<P<D@e3eR/JNoqs;_$iN[a2P1MJ
-@MdUC[ie?d12mu>1B==72g]Zkq-%r'=0[#P:^dkWm2!IeEQq8s7PRTlS&8A[2qKM8q:HRIu12
-KA&B5&pLqf+="aqmG^89oXukRDj&BaGAYolC.pM!IqJPYFOd#\O2#[77^K`G1Yta9,UQ$aagB
-9j2M@qr82HT4=Gh":9VV@"RS;l!i[UVB>qr'Y%fb,[Y_o<<be%[M^l10mbG!d(dm.)/*e')mk
-e3NS]RNeL^h62&rnqCgF9f:=LR^FbT-\e-aeZ<:V.OTO:7Ja6Ym?Mj<Bh&STn0/[>>V0Y;/%`
-lG32M'po8G]O?[lB/l(A">qB=Q?TaW-3K76Gp*&1ftr)CHT-S@qI[W8T/WcD-^4=*j6msKOeP
-TO?X0rA^qY`Cj;P,>_,im_5Ae5"Z8'&d)aJ*ei:jH"d#?([Y5j[iHn7AOO-;7$0IC96!6P*K#
-DS.A\ok%&J[<22/)<uk4)-"dN^jeI!nKW01tQ(@)b<]_<f[an2.7l*+&l[M(rr)_<A1haRdd`
-cmas+7BE<;=aQTE/f1dmsT+91g6KN-+$!dO?f_-fPDPkR2YYg-D_P'Bk8TMtOFZNK#+)VnlVX
-Na[mbo^G[ODi)H4\SSC=kRf/e4SX1$nM(;`>!q75THSRN\&q2iO_^30i`IdgN9__eH`X>Ljc`
-u2MCad%QGo`1`8]9O[a\&e>k(dmPZ4^EoGT?Seufk96N:)Rk#>jTeRNU+<"ApQQ`+Wf.L/f)M
-Et@@/amA:i\eCq(8p<#AL@jd/92X<+o67[\<P44![?Iu.9kb&U45`Br\V:9,bJd,9f;6.0:rH
-:En$o7C?MJ'`8]9O[_rKi)dSRPN\;Ob=Q7g(aMhka.A#*Le7Y.X=aV_`LN7HQ+8%ckr-V^U(?
-h41O-=s+cI=::Iko6:h@b`FF4mk)K4eGf#,N-c4AMm!;b,:T-%2Q#QuK3K&_<?W'4$P,`ZmKC
-Qs?">@=AV4=%=da:XojmHMLEcH8lqX4-o8^b.GgI39^pIgfT\;A@cKK+JdmcN@("We$,kBjUu
-9^-#(bWPLCT\Zcn^++f7;#X34<(je&8j3k2V.LG!Q#Q<g:K9T`!7i"Y3d6Kf,t#bSXHV%M!7O
-)6EaF,#ef%$X@/dQ04L(ChXNVO3_\HUTcI*>a>`dEj<ZS"$pJk.E0U.PD`I7JV8)5^9h;B]h7
-%#[[p67i4^1HT,Od0bRsraBj3jO+I7_L/*>Qn=X:Fo`6Ke$1lN=&8*3&q<0:!1VoTX,S<EA!b
-ZKUL/>g&+r(Se!JaL/['5IkRo8(.QC1?%D^Wl=;r%#2=If(5EbjEdHHUi!86A0?X'fsGl2'?U
--5*lA'q;!R-4Ys]UE_#m]0DAmcl2s/*[aFq^rGoX(u_:dbttMC%^'X@jdpUp0rZpL8rZ,,bXJ
-'<[Aeg4[[#YTitTK'ECFl;;OUQ)'i.X1+(=gWUMCc%5qb++Zc*LHkQcfSljE+_7fYuD`&(q<K
-R:WLDGCS4&uGT_<-)3-]FVU<U`3)rQUq>=\4pmu`G(AW\#o#X,D/LXi(2%a<Jo'[=,c"+;NOM
-hBn@_s0LB7T=1C*G1KUoFVbnXa8AnhFbtCDePoXh#mR&HY-!PXiWJ2o=O:BN3Z";P_dk&\aif
-pICNJK&fkqZ_dboaZYKM7VS466tG_PL+u%mr"XN:O'.0Ea#YMBd:e$\04fUtg2mjZ@aOY[j^\
-fO<V.Q5ft(dOf(C*G0(I?(=/A3O7&)dbs&;VEin8Y`NFOXl;_s%\.9+3Nu-kR/5%UU)?Hq76-
-*IiS-u3nhp$\aUp!RFSaRBhau-!Y2(>"Ikj5Y8)&\7GA[0/G'2_#7;eO8ioZ](j:;kD*3QN5<
-Qj2q^*Y52I&''!pR?tV&S5Kg#Gmh$PbS6;'6A5jNk'NsKW&9I-n()=.n5A5?TYOj`OM8n;akF
-\M475$)D]og'8-&MA8uomZ2uD>^Tjl3!R+.he[7^`rD;2iCEqKe:m7IP:0':5<'nAWELgh2_/
-ROG3WY`\IKHDq)n".P\'0A$Z)<<i8nN'h+gNCh!XbeVA0t;V_hhA(A9%I?AUEg/)44gDi)Hj=
-pCN83ai]@(Sc#P%Ps1JbP14HnK[npSbH@5"7if_2F;hI$n&2NEDC`F9NB1!e0^[KVc./9rl8%
-!5a4oe&RD6F;Z(3G*MmPIo`T#CW8;gDP/5D1_ZoHUTimbJ/Mc3n4:5t1=37Z"-e@8&-;dCqLN
-Jk/'eYP'l%Qo\&449ZUIs\HK&Pe)lNB#@W1OjbV@["s(MT*[[(8n$=EAE?hWMs!i%&2d(lrbd
-/Nth>iHll_.kVsT0;MsW^`B>a/`tpD;Z>1p*-\GNkRYo)++Pkt_Y?fTH27IUL(+4`VKMur9j8
-g;p4(i2G1.YJ+2)]IcJl<V$B5o\_`Q@,hU0*p::+_@Bal:gEm"Z7THrV3aidmfflGsM.0jel*
-S5r,u<6bt<41h,U`Q96>il(BkoYAtKHIWcN838Qtil]pt8.Ekiiae-oE+1Sd;e^lJ_MM9J$``
-4)*/d`gdL&`#X/)+aEK^"95qBRKS/\YkOC3(n9\RODN`U]olr_u@34[R>Z,N[gBa6"_bHY]:'
-6>^"X\!<^.GJ6fT.WmEh.^kD5n6fGSHM](NUF1-W?p42-eXeaNMfI1d%br21l'OW9_!/Hc?+6
-\n'mf=(p>o7qs5k/#-g-jS6?VbPJsLiGqh:dIWcJSK34Wp:+](>3&TRc+?6cKFquHXFG*TAIt
-,L!"AZ(hS]/\n2DM52=I]e/EG?s=-\L&64.Bm7U=_RiRqL?I=@[pb'XT8(-]:o]@WA\5[3ue<
-Mc5P^%&Z55WE<&Eq^dAi==HM;j*7Io=rgh>)!)I"#L0OS/PZLaLf=:N>#LE*b\:f)n$o,l:5W
-o*M,gM.na%f%#2'M7I$`;qB)4oa<LfMS*pkB@UrlhiGq<PnQ]/q+/5E=jhDd5Iqdr";Y,FJnMA
-%M2>F#L7ZdRN@3&-m+gm7;D44W4Dc.Li&PANh;%6Cq<dc.@TSL*rCEG@k0CFApZJ'4iO29f[d
-;-9-dekXc%X4>3*V`(?1b&.AXHY9YO.,%70JQ'taCm_YBEAC(#[SsUQVlGJ4"e6R1C4f`\>*/
-G]G3e_c%dS=:\URdmPLUQY3oZ.)!%gqMBuMUJC.G[<nWt\Oj2<^2dscN199T7]PA.ftMpi%Kg
-BDD5C/HNW(8hqek1MUT4,]:gCn=q]Za2V/`$Rr2'oS8A/5ApYia`UiB4pi&=qmH=BCkIn'^I0
-ONe/%ciad%D;(PHXV\[82A8u?]8iUZ[T;uM.<Ar9d>+-m4I4Q]$D2m#ql#SqXSX(+$j.4ne1/
-@Y'&lsKl[:@^QHtJYaUZJlLN)R7m[Ml("cHaf^qeS*$4(?,7hbE?VC4.OVNE)<UFmW/QBkrCN
-VY%FTcHbG!Kri.J<R^+\la7RL<a3uY:98PTH$P?+4$/@!(UD2,WkXhNCFe`*<H2KEM"+bjg,=
-@s\$ND#FWiX0,ld.JR7U6is7hPX<B*tk&DGW/c-O\pe:k!'lup6;gE<QUPW.ieKp1K^/5BKl-
-JL!(r4qUPX`+tj5u[Y?XZAP%;\uaEAX>WF9_7Uam\rh5WG[UF544<W2X,8lcAq9PgRcC++R?]
-"XSG_q=8ZXP.\'UQEO%Rk/1\,lZ,:&:UKX0oVV!M/Mc5OCEO%R3-oTDSl.K40$tAhpR\$(haW
-NJrWi9*j$t=3k.MaCakW%snJ+g1D\7aq#pu4`_Bb-EeKh6:1b4kGFMll?7MT*[[(8n$=EAC'D
-342_`YZ!`O`Q95CiRH.]fI7ociae-L`^tEY:\@g*-\GNkRNBZ3A.XYtdplON$t=3kH7Xu<6$C
-2g3"/'#M,R^%W]MoP6)r*d+L(Os"m'6r3$Dc<k(?m.<m#;>Z2CH,Zm;,\1**s;GS<j66a8dn>
-$"&hi"i5UZ4g!7p`rd*nt_H>-id"R-W]*%P[@<]9$'`Z(8q'5=LKt/fn<:Dc7ISZ.kaRX4,_Q
-[Bnd;EoGfbi9569AZuVd4>JRQ#ERG?4<iR/B:6flY/6d+;(8mG'+&84)%?tupQ1cZ8@CtQ1)S
-BGcSFSsJZLUc1P;Ji$`G)/*`2WSu.\cu'jh7%,+73J/SDL?(G0780.BDi;6V;j/T:Nr8V)6e!
-R/mc)JJ"e;q_7C\k(T<.:8YA(33AEW/N]9#]^$h<IBU'UYiFcNnKa%!ZT,(OL46&+e\WdDN&^
-'k0NF14jXbnU9KP30]\2aQ$so%_JlD=dQslEQlmtm^jlF)69KP2AkHX[FD!+p%30qP*+K'r-e
-'F$@GHB58[W3pr*R!GQO;#NgQ-PBVFfb.V[W*jq+3WYSO;#O2HuA;8O(E;dLrH@XYq/WSkmF=
-hdb38%+3WYSOD]#H/]fF`bMm%DRi'[T/5?DS3&MG/P<g`p9uZ+&&;sIcWSh<@`/^D:<(]-XP[
-F@d`SQQNEbt\f`JPB\<ifE.o#sN+i>qeXXF(>kneWfWp(g]AQ\'pn=D8rlT)=jb<a/_[?#m\l
-@6:alcT/GSe]R,LV9^c<CGJ%k:Xj[1G.:_$##`Gie$N"E6Wp\"=['%0M*>+tai]oY$rADN::=
-_HAJ_WA:0(O4Mj'DA`StF)7BngTBi-EV<a$2qPEcp&iaelSYrGm#;(PHq>P@=L2'(!%oV1Ggo
--#_3.r,-j35%0EbSl6H#ZdJd:lDI6oQMh3:JMb)[`/TYE\R;n.l]P(gpqTJqSgUNAGoH`qFS&
-GP8MN;i5pokdT^49XU]Z_3#tiHs3!@<#p-Q`0o(p/`,'dj=T247a_I^eO:"bE#5dR136Ape+f
-;$B"t)nU\eulpV2@2YJ(6<608n9[V2A4I$1<@CJ^F*M#nPO3S2)ZPMH+81@F\-hVZY-,i8eFs
-XNu/qAVsQqb*a;6cDoj`(8h7,q`&"Af18!RA9H(ucoof4[lBq5FF[<=b&0;2=;e#WAS6!DZCD
-D"N_6ui?eO['Z'@:_^''AC!MtC3F&Z(C*b9\1a%B&eH=LNVABU!9S.71;-b\0in&1`urD$SV[
-%1=dF;3ETH*ZgG%d4Yb%OI%^F-bDRlq2>M2UtR!DOA3=c-!AV[W#ur$eWUCQ'2VQZ1;.2J"1W
-BA8uqS;M&=9;-ne$i@I_W>!=lF:6)Yb-]8]i4,_)"8rI/ql.Emr>'ZF>$E$%e;_'M&<oIT.8j
-fjC=_U`.)(/o0]Tp1+]=O$]iD1AiAnSHR3Vc*:G7U)"bEn#`o?>jN])5=!ZRZaXoe-rU`bgp'
-])5=AijAT:=e&NM`G,&SZT,'$Mpq)1AoV!'8&8oiO;BF^Q/qDf<lQB7`OLm6-^L#1Cbe/i-GM
-7fE`F\n<XQ%fN"[_6&R0C_IkRGF[^YFuEX\J*nV48*hfM^?;6<#[?&Y7h^o:GQ9K4bd.^i8&@
-f<*^VcULUm;C6ij_-X$LWY\p>(ejco$1D&\:=N?/+,4:8indg$^H0;`[ZQ&e[$]]<i.i-*J*;
-sEFa?tO&O'?fc@!g&k*FTjV4cI=c<M^>hA5^OX`H_QIXGBo/_V+ek(G)S/(ddA`Z:`g-JkQJ&
-Bs(Ufo<Ze`0VJ.VcM"/%\\+4kk(LPoI$oU5gcp1<!<)Gu;mE0ASP!b?8hWQ0hQ.]"CEqK]-`(
-@Ie%gkb#9JbqZ$(m\$,0+;qB3@*tN-:+Umohdrq(?s3G,IDMeH?#aYe+YS^^=D#.li[u&A=[)
-tgBK(?rnY5`mWD^WN@lS>@WEa]dY-WL%gA.8'CkpL)22:LOCgi3fD[e5acLS_JZ%)Z*0C\grb
-i1*k.drT>Na3I-UEDc*>DEkjA'?oD?.Bpmnk%E9Z[=&MHU^!Z7\=jt9`=Qp`=N)N$Sdu"EFLF
->>+o-BG7F"^I[<\eC&=B[?'h[4.[r!K_Fg\'9/opIZ?DeYlT.$\iDdFA`LCI'RVoTXL"lBnW^
-C+B>BY/.#kp?obJeL]k'D*R;Nk)+VC]]+ZM_J7<;V*HeoFHuDKJ!Pji]<;aj_cB\^#R5IG^6P
-'f]d*E2pXWg1i'RH,Wp/_;C-^]Ut_(=1ks,4J]']lmd0u[N;?`ns.W9:9;1.Xh/u?343q#LQi
-ON331`OfijnJer=i^]C)nUS2sEk;7<d$1qcn*_%)#pQXXrL?V4C%R)ni&I8-#/LTG)215h@8W
-N!,pX1r&4)OG\HQf!WV]0_gs@%<Z8-c\6HbO7h;?K($#UG!B1.r3'm@p3SD/5A:qB(P@iMoBE
-)$aY,%/&gMTqh80C_+L\5+kp`bXV5c@=I^p;>N3T0f[AbiEQVd[.^:&&k`K=a`ldV3=I^p;W]
-)R!6Rd6+'c\s9EE;D_PL:IHHA$6'o>]Ln-C(pb0?O!GW='AY'_<T.f<+Z2)I2I3&YjM!8!1+$
-J;b8HQ5p_g7rp;`'.CP4.iWH-Y,U?DkH>R58N*%-Dl`2O2R4*rEqk)0j-FBn)7"7o_?li,OV"
-:Y8:*>\H%3-nB175T9oO,(_5VOIV*)WnmpUFG%O[QBht0"VFI_V$mKb2O`VFr5:S]k<MX+hBg
-hh%$%YI^Y3gjT7S?-O^;oNohV(K%%3[NV?,]Bouc`PnrXHlO[I*u-q>YR-?!iP=+<Z]Q.b,3<
-VrDR7'em%\:%bn;4s';19H@#74.p8jBMS-]?"\p@g3l#IKFg>Y8dgFe,'"ZIcN;C4OX-b,S>1
-NB7c>ZKhQYjN0:L*-N4.3:9I0hm<lu[3@qjcR*mVlWiC7_C4djXM*G,emsqa,8U,.P`;?+'%W
-4r<aNCrQ9pB=NB5/iSHiHCeD4I](V:(8o*B5>I361VXUX,J(=2L0L3CXft0<`ETt"6d##<WO;
-cOc"Fr",N<gn>%j0`6_%=A_p)h(Woe/jh&<OXm=&IZVj1_2gASl>:+O<CeEk$ja[oce-Xq)LI
-CJ?Zlq?bOSBg7pA`DR5T>[ufpN4aDbE1k#)&i_iJ''`RH$3Y:ZI5ILS?0(G(+1Ua8d-Rm<q_[
-h:4"h&X]RkL[XPSm`JPB\<ifE.@`=3>/+(E_r=rAI-on`J_TEZ@a4?8OXB;`:`JPB\<ifE.@`
-=3>.oou`FRB':[_+8n]M1A.N,.hOD0aI=]FE<Zl.#:?D0aI>]FFG.?bS+qh=<JFQ[\b=]QVKQ
-+CG!,g[a&MDhFS&jm/+^'`4uEQrPXTh<t,e,jerG960[q2TVk&50I;J936#F:O*n;DYa-4P,"
-AQ5u-P4R=&FX<ZQUKT45MTYo.=!-bU4BE9am7Y9c2TGoPgD/t^6%244ZL9SZGN\FN3MXR&QUP
-ht-*^6[jDj_^)X\U8hJ+LYb)XR`t$b,^iB;^m'[f3"&>h?H!*b@fNjX5R$K=K65.o'/ph>CBp
-!G<>Z][5]%XC%&-\;gmW)X5(`0=3"l6b_^E5a(oZM$Idkb7\!YiSQM2C1!O(X`dNpIGb6-S9R
-AY"C>n`Op<H:M2_AT7;]76sluKiSA%H.7Y[t;=PAQr_[]$L`XmZ6;[`1,0WO/H#2k=K)/:XWN
-D7McM8_]Td,u2GZE,K3&6N;<nhF!XMjGV^5em`pDelC$:dhhFKh?MYBd[_qm@TLd0g",9R/^L
-1S-=;^,[Pl<=q?PU0)0Ug7AoVRb]T#[p[`W*F0BJA*.(9;K<aPY=\);NohF!XM[!-[1S8+Y-/
-:Xtkb&&.HVI!D;EGDI8VS0<gi++Bq<ArR.]FD.K:<_Yofi6\sGeAeaO(n'a9:W"G[?YZ7Qa]8
-(d8#s-_-2?J2OD2+-W8fOD/n$K]A:(@J%tQ]P4EftF0`2W?J26r<2%?Jg$L*O/t_5YX):@O"1
-H1ThW]2B3<!7G[3.smDhB#K-i0L*qO7G\]RcReMs5OCpL%f9?;2=XJ!]I_o_gmCGoPh3QS4sE
-b7#,sGlq*PibBO(>q<NmO2'0:*Vt4+U:^qUgrn:a&^+oKaUO+bbckZXKUkif*KRtqosHDB05l
-I_qsnb*g,L=Sqa["[]Z-4BKB)EJI>>P/?'i#dNbpj4h;te'))fQ:5OQOV?%_2+Ed_67dEC8e-
-\PFg_MfG<qW$GYG%u!o?*<YCp[]NhD33eHijqo2<s;%SU2M.m>-(U0ag^Z[X3'eMhs'tII6S6
->h?J8fQX;n'gZ>[Ll];$i/P^-hbIY[7FSnL4has-C6([]0)u=5O/T6Pt[\H&nMj#a])4.fu^@
-]UXjgA=L#&u\q>)M#(^8UT\#jYZ1H!aNr<ifE.@`=3>.or`RZ!t\0'e@u;%r&h0IK~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 590 574
-%%EOF
diff --git a/doc/users_guide/figures/gimp-print-new-printer.eps b/doc/users_guide/figures/gimp-print-new-printer.eps
deleted file mode 100644
index 2256de5..0000000
--- a/doc/users_guide/figures/gimp-print-new-printer.eps
+++ /dev/null
@@ -1,440 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/gimp-print-new-printer.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 248 72
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 248 72
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-249 73
-12.000000
-249 73
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-9a9a9a
-cdcdcd
-b7b7b7
-eeeeee
-808080
-547098
-7393c0
-424f63
-5a7191
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVQ=$a,(8&-^G(r\mu(@RU'rI*u^i;suRSUlt6g$cPZ-@i0r/R+&]IB-\ISZOMV,C?#RIr%I
-%+C%%\7er#,&m<7G_:BTJ1d68QIj0QOM(`\HPCKSJcm;QLg/f`QeH)F^IG\dW5D0'[k*csCe"
-/V"A7bl=%O#Q%T:F(Gg37Ka/1-2Q=DnTKFOaJoW_2BB/,J_HW3o]@omWTZ9U$qrg_8/i(KI[J
-iKG,s=+'?076fGA`ot8TgL1-J21AaPl[*67_nnQHPbE*BW2X2(5fWAsU\9q#f22C]$KSt8n5Q
-R3'49.!6Y(DQIedJ[]aVH4nE5KZ2rTo*Fk^fXQ&UqEe%X@L>^Fjc0VB1c%_UX-`"!.i'$!<!f
-`I3.tE'14F!^D3T8krkCLDos<an_mU>?%_DksN.=kHhQ1_7Kq2UefA&EMiu3O6YPf1LC8$.g>
-G?3drE*F<(l*Y`e6PW^cZQC<"$!&Pb=Ek2AZ$:hmLN@<oB<?'GCC>?Dq!)achC'2J?!E6d'C<
-9F_NqMbI~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 248 72
-%%EOF
diff --git a/doc/users_guide/figures/gimp-print-print-color-adjust.eps b/doc/users_guide/figures/gimp-print-print-color-adjust.eps
deleted file mode 100644
index 28770d9..0000000
--- a/doc/users_guide/figures/gimp-print-print-color-adjust.eps
+++ /dev/null
@@ -1,605 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/gimp-print-print-color-adjust.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 386 406
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 386 406
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-387 407
-12.000000
-387 407
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-9a9a9a
-cdcdcd
-b7b7b7
-eeeeee
-808080
-547098
-7393c0
-424f63
-5a7191
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVP5]l*/WQ7eRT-)q602p8X?"hLmW'UhYj'lGd)!sbKnGlp-APE!2*VP9W)-aOg5P7;UfV.
-[;dDB];=3&C#C^K":0IOs7.[UdPK[;=##,u`CkCAl^bV<*koKnY57KnY57KnY57KnY57KnY57
-KnY57KnY57KnY5WAN:^%V^]>AQ1h8(jjOZVFbKqQ<`Q?Ok,ZqD\Y]W!>trB%]O0Wc5(72fQ_5
-RE&T++Cc11OM#sl=ZmV-*iX.Bm9REV_?hu=;0?kPtl3Y.D!!ZIS1F7&jGD%m<tc8DSLmVo*qn
-an]J:uE3f4"6Y:$k0YbR5s)&ocp8Oh%Mq;+G_)'DiOk;D+Cu3rf9=]0H-u_WC-nHTWRe@!&kh
-_OYZU"^juhC$ONE%l-Pe!NVg8)@5-t*=!<d+!OI%C#f0,s4m3q>X+`)dD86)q&/C8dGS8&I+V
-<#25M*<7aY+MKE(GG6IZ,^XFNbD5obsH44;iPd9-?WNhgfEK2:g,1:`,NEH=al'5gEAmW\bct
-=Co&5/sZ)s`p&S6TgTOZKIZOd4\^Q8)_XV1@26!5^is4??m$h.,"'m_"9OJRDIaBVbfdHPrt.
-eDY0N4ZND^MQU/sik1\?%F*hY+]6!UO%XDX]:^<5<Xlgkkq(E2E?)2eK6Yq`gF#l=A!?n6aP;
-UIHe7mL*@YqV';EuB#l-4FD2ejJ*HOOH,q-Z;uiA)m7FQ-5&lF^^PRY@qr.^CK">D;A2^1'A/
-U^fdbYj!`#1P_RJcVap;kj03[^jMkJAm]DmDY;R/_+8OJ)k.XK-l$=\aRN"1sD1d:?CFSkoU@
-%])";4Qm'V,J<JR">C7f%_29/.sQI51rcU?8U$0Hf"&D25W\hO4H:l%.".#\NSTdsZ;g!c3jH
-,)'Bg(S$^6.6Y:2?'#@j1o9Mi"DYu.4f5PK5mb6%o@>+EH'j!#<G9*0Ei"D,dNL^EI9U&\%oq
-9gmD+q]Jg"5K0?7^8<!C,FPc[BBccU;%]+?dH^4B_sLDKPg9(.H_H\HJ;"H;eaCKE<Z4EYP*,
-cCWeNS.PQ;DSI!AK%KqNf];/UJ'$PhOeD:l6e(I-iG<[::$pas3](;TUFd/)<!p$/Qi8UL$k?
-NqIM9UM-`%a!*rcC'-m'H-@*"b!='po"c$T@@sK+5.p.f(9[pVP#nU[.01h=;=TWR3F9"Zf8_
-KBbDI*C4P/%Z:#TID9[9#0(6RPT:Ah;!aYVI#2"j?!EF`A*!*MYMk[,sr&iS14K%:'mY^0^El
-e7O>>42M#.E$8cgIJb?^J!s'C0UdA9N6qnE7\"`@Lo7)[N\BKYfa<fQSOF2,B4Bu]bDajjRls
-qF@U+,R=*M#gV-8[+7\is<R2M:&^r7DuK/'UgHi!?XHE:E_ODH`ZM@N_..*^$aEB"GE,%LoD/
-28^[VfLSH<-7Q8^Zl*X7&Y"f3K#W,m%J.OBf#>%RAlU,);(;dPg080g[G.Jj?,hA&>^_Z>06Y
-P"MJO$[!lV-#%[Y3:-X/.&/\D/mJBrOoZ(o68<cf^9$+g[i,IY=gT_>7munJ/4q"e#,KPYg3(
-cjiYjT)%'T%;\od-u7Q\`p22_?&PAZ^>Y#F*pOF\5)romSHU0V$'+"GIrUH4VG8&9=I]mjQKf
-!$Pn$cYUKV.Is5#pO<;Ya3eH<b,-_?,O.Y(e%Q_pAE?I!2U%s25'0rhRVLt)BHV$Sk,)!a9VW:
-%-jtoG*8RG@*iV!+U!?T*igdAU68#C2Pt7fH9dd5ARCE.oO$LQR'TFaJl_Ss*/4cddq;Y"?7O
-n//d8aM<3YSf^Q&nrdpbM;P=[K0c"qi,HjJnC&C\7(&rs4_IIfABRc[Xg-I.$q&T1'=dAh'^#
-oq1TOW<joJ>d,H)S4/RO*!cLcKeL/5`.DkN-`X6HT.c??K9o'A"@+pl1eM+?k9[Y_kte??@H3
-PY8`T?sJ,Y!sYP?/oc/%2OJ)]Y_S[:fi3MJ/ij+sQqEb>B4__EE)0F4GHBho#*.qhHF7S9.@C
-gmNq8N7moUiV3B]URpk@$,u9P!'e#?i:UrDuT2irk+*UrqOO+T>07=h#WAY7:<`N[1sfQSXR[
-a1+73u!"be[$R9BXDj-nNTa9BlAbG]!XUn14REh0PRkVbe>nUb*'jVa.=k`]Kf?aK[mV;q5q"
-*Y>h<2C7rk,cL!Y`E/[4DHK8hs,)a5%.)]C#?B">YP_LrZeGRMNjnUMdFUAN#`TbrNB5h\Bd-
-2mn:/,1HK=8.gp5q';QMkp=4;pu_225B!?g"tc`2*$`mE1iobATI>H$hu=9Z(_MNI=S33=(b;
-QWO8W)1hmGZ6::"N1\AHHa<)R:X:nAI`23VR6V<V<Zj@I`JZ*Tb,/]%$PrU@-I?+N_8,D*iW>
-Z'j8KILJ@"Z4)]eK!A"(8f0\F"b*_"f(ghmp)?>SY<=5$X^N3LFFQd/:b3&a9j?jbFi65Zm6\
-i(b4:5d),%gbRhZ(6+$[mGmdJ"`7u12.98FkA*,CV_Lg]Xn#`^Rb3'5I`?+-iSuJ@Z,@j3l/<
-Z/8'I<2o*+$JhW\6L?6_;Q'q-6i76!$u'hGfr#>i8YLGr_cMIIZKD1)!Z>FQ;6q7G[.0E]8P=
-<SX*V%a+-rBkM)"LeJDJ8^<,_ic#H`'BsO8dSVqHh&.`AoZqT'+QP[BV:.jk3^m(1lbVK-+>,
-MY"Mgg+#oL7<[?d&n;R\tdAhXHi$D]g5$"R&t2CZo0Lq5G3,8+.b,D,P&_QaI5Ai3JO18/A48
-?3TE#mNDT"4W(V!'tg'Tk54D<-(VQ'f::Qr)I'<TnH5u1'EgMQ(=/e=d>+:le6;_.]$qk9J%H
-C@(As#K2<kbNgYj5%>:h2N>qV+DV,_;6GaWpE60Xfl$Ot]Gr::3!AHM6ke^CIV6GD?PmUT\Q2
-\FS$<ecV?(0k)l0#_t?7V4nj9ESD3L^Fe'pSC`4]It"Nk=/l%9S?0*^b?U,6N!17oYo7>ZRRX
-8(+B7).9+f/@&MXlC[ANQcjb=f-[>$8nAtSeS#,!6mPe,<$a<g3:_ss'V]1Z;O_drVU#+N'W>
-Y^%.D.\TJX\YSkBpTd>e9/fc1f>68csUQrM)Jj@G8<"#Do!%`_%\3U0DADg1b@rfA#GKZn.B*
-]]=iNiK!m19!u>m:m+i9kHrKH>OB`>trZ2=e.<(=g(g'IVG=D.QAk'RJ0/qC(\]As1q1K>Z-Q
->>UE*C6>I*F$@&@qUq,Cd?W4lDBp]XGS"A6oS'5EW>(tF!0H3.4RHRWr/n1^NOX>';6rN:KVa
-?3s=,t?B<L+[OWmtfCO5*D2)b,_o%!=o07nQKF'/c2rUX<U?-qT#H.^)um/]\'.Bu[kd,?VeN
-1I.$<C^#o,Dq`h7-5MMO$Ft%]Y9%[O'MET]Q4IDf*:m[1Q8J@^6u&ukUNdCb2R/,S;2o2;X&_
-#3LJi<J$:ph=Zf]?SR.[mE?NWQ:n7Cp]R7*ug''b@bA[nXt1"@[4QR0Qa<a[INAqX:@n,E[3Y
-%h.lDP]9cU"\#n(\_&#5#Ctbg9@HG$T7EY<$;)k&9%uuF2tKd6T<E>cYR?@EJ>Xg,n;.hmYk8
-DB)Kr#:9R[bY8js:7_Ps772+,$9]h6jYZftU1)lQkae]j]/Z"u,*d&PB;"!ls7+h]7&7gB2o&
-o_.;PT1_!sg6+&KFJNa+Gt]dAn7fJLE18rb+>;ZS9i3%)HsuMQ_:_l]k*>brR-p?ti-%e#Sj?
-U/K(Ecs;fGID]-^>SUDgA>2O,K\RDg7t&pkc)GIkf+ONj/>[8'V.9`q=isn%n,E[3!8p4'>u`
-Nde$bc]Amsu8(q[T3[jYDYU0HBWE\rgA9.]En,t+u0dAQcgjAYDk+CkYDiQ#T:aD[JL:#VHfM
-EN[E'=53DB9n/Foc.'s/SSiJrUm-E^M9(l]>\BB#jc1"ICmMIXhueVfsM,B'Fn%k$ciZqaUhQ
-)n9m^Z4O^lGMTcWWc/O!sD^HH@f91IIckgT9R;UXlAsTMApps$k]*q;1W@`e,',uTt2>Y_OBS
-e8c6NAj4Ir6*(Pn.FtT?&?99pSLf@`p'a`2L$>G<i'<oP6s7[sVOiYOs1'orPHe4U[&(E.kR&
-oi)24?*]5l7cBj\5Z2?Q\`BP$e-.?F(!gD^F"l9P'$XKiaEg\V<_8_S3T=kWHGcCp1\[qMI#Y
-IQiBi6NE!Y*lBi^QkWgjgNm!Z))pO<<T.-NJo:\0jUJu#+Y@f02'-Pb%'qben)OHoJ&S?[i]_
-[mb1XP7KWm^c_KBmS@._r5!VK8F;Q+G]5[f2YY6Y%0&UdYu$mkpD+mb#8"&=m8QDc:M@g\0YB
-nU)+*O0"R4E=cUKWGL9UGg^1U>QpUJYhN)6>KnJ><pFVLuRMHK\[KL.Bmmja\=FaL88"f3\g+
-FgYS!S-4\lm-`(+0LMK'Y*Lg1fCq$$Y/XhgX6,NP@Fn%Yc-u&pN`%9kbB,/(lB($6Yd\<ACga
-M;,\b?XZe"8`Woi2[aB%'tArk-4'Kd'.FkEgkJ8*O^tB-;_P?:V*Y=[ER`<KH%-mYL!2Om/=0
-sI%o&$V321+_k!lCW]B,?<Yd+bADDq&l^#li&"p@l:2(JdrdfarjYbug]Br28M4mK^m!QP6d1
-tQ;b6o+?C.Dj#4Bbkid/3oSqR]R9i/E[CEj^BR7RFQ@V3Jq`8-'ahdnU3BC.;XsIAO:Pq*":o
-@asSANrV2#4O[GlZ&R,:S(/RCP9`/YZQ^S\4+<)f(7AMJ&>u?lOM(Vd0+"i^o;H?aT`!F[lm[
-LQDJW^GV`CNWoD#69".qS+D^BfUm-U[Yc-2Y[hbj#7Nq6o2\&P15aD*sN\Y_%hD6F8$Ej[,14
-Q+AOF%!P@Nd"]QCO?%2U,g69g%tB`ZIj@W1\Y,<TWL_6hjKUS1Jf^3H6j'a!OP4s=998kb7:,
-Jd>Y@[]%K4Y,@q>VQs+!T``g4UM#7T*P+=ihr/;U*%ibV\p>XJ0%l,#q2@:D&*g+h`L,HJ`s&
-)3K<=rW8%VaIsOok?h+/`8KZ#qIEKofY;Z!eIpp8^ia$f+D*p[JfX'h/n>T4FePu?d2seE*6e
-:/g:X2eDkG6jZ8T.*O]f+-'=N(10cQ(N9nhOq5l2skqE6N"hgM(>\1M'/]]g%9Im:&<mG`tgi
-fppc;75R[*FVD9,r8RQb.;cH_np)_im@li$P@c.7!sW6<t_d&]"g#B'7rPDi2I\2r(LFAZ!*=
-K.pk&DXPk(R[';dGO7CrpIEJ#Hrn,Zo4C3WhsL\>WR:bIq1hQi_bUI</S.f?]JnZ0GXRh=5%+
-U24tUM,pG-Lp6MQg$H8GeBQ'X1V7*;B5YZt,Af"Kb:_Ni796@IUtd/F0>kQFrs:F474dfPT)i
-)g!DM&u?6Aj(0&8Muc):Ln$g:g8f1I11RYj9IEKatm4O9XQKq-tn0_.fC>Q+Tip_0&!>*/dJD
-&1K4%5T+"K-a\4&[R3<bcZ63UYg[G.JKRC7sDbkt"/rf"7iFc0M,<\Y\m7`'tAJT]p.\B_<Es
-f,_KJVoZ-%826e!+SN2t6.$*4qK2Y&!+Gcl3Jkg%7d'<?EcLW5NKU'FR=TOA$;JPLQQaM>0m/
-TSW:jW^N6)h)&7W8kJn"r!pc!b.so)3m[_%BN=39OJH7TIVU^BWQknZ#S5m%E&*qYZ`n@/IB\
-<1MOYi_2B@qt,$NBM\)WbE:CM3Sq]'HuOIIO;W"l6dcs95A9Tb!#pnOY-WG]fUh":F/>/0`Ab
-&t0Ao7fUC3;--^g&O[d63[Tpa"AS\/'+OHXdJMFkEYL,l@-FiWsu+pflji2C$[p)]A&J(2+[,
-SZ$+%AqX:@_2[Fc:/.?5#<)'S3P3[]G`<*@X-:4nX.DK*4TiZAeX)d#/@ojdPIU,H'&=RL:DR
-uaHL&6<W(j[QM?H/mkZ3"mo>8B>F$o+:.*g2b:M;VQ6U0)M0MO"2USV7U_g8/ciKe@J"Msk$*
-?0V9A;.LLWoe^8lG=JX2$d?&%V^Te:g<YPHP\!>h-k%A>L9i.G4'BDg67=*BlK5RVRpU*:DQ^
-,d]"+NPT5\k"F+^)A9u!RikF;,8D41Z9K-If7MW,DOquq3YEm.:V6f=B9Io7CD"WQud-\IW!E
-2K]#0^^1F"7ckLkSLB0+LHu=78l*9Tga;!'5@@/k-l:]_LDH,6`BoTVs2q[KW!cH5N+0SlH5g
-^Ia]HK(0%G)f&^:!4AiW_.5YgVB%3W/`UO24/BJ64*Z*ZNKpIOtY6kt@UdXfqAUhFk^u[Jf^:
-U96oT^%]^]$iLJ%YnQl-6W`s%i80/.(KicI[usbohcqJq;:_*0)A'W%9-d-*NJqdNp39[,WtI
-VLfOJdhadLNRB#a\k]R[%FUa<qPmI`="+-t=[XB;hqTj.0R(G5l5&&L?p*([2d\Yl$@k\*>'E
-1'8P_)EoC*F<fU*.nJ@Zj2DVKX?7j+)mF;`S<56-<!qDY\CAC3_CWmhDcYUn#,+PG"@9bTQ3.
-\fn+JVKBQUkS#;(S0<]@"F(76jEjL<2[QTE?!^<L`NWu,UTE[88!H^17F0!2"RB7%.PPJGX!B
-E8s'Z^GjNUG9Q#;O""6_'d!_!^05/4#hfamHX0a@4h/s0D-UfN5"jR?aV*pa.gg4XqT`BleR)
-tAVc++u'ba1^h0VhFW-M#4)85_!>f*LI.2W1uT1g`ME=\5k`Qe0i'VoT[jU6)?&M?GUaA=du8
-l^uT/Fc*1m#7He$Q+@MIg.;?A\[j9/[1o1+aFQmU[Aq;oi0@251DM(=Tb&@jbD8e]KJ!ugUdH
-g;L4JEHHaK2%@R1KBJ+FVB'K?_&7UJS3mA*gS`?He3o]g5T3`r2K77A0mV@,M'U#;_a`GK^>=
-,B?Uh%s82=-Y)i:^^gAWL[$cYQ8\-=(4j^dYS[K8.fHq`nn!G>+/SM]0p..qB_l<9f`l#IkmE
->V4GBS"N_sd^SRQBio[`..qM;nKoiL469pLD9lFrfDshLp[-6H;l704=L^XM9*g,\d2FB/8Om
-sibTJAlW`o3;J;YjW4B*E!a1EItElFP+0Ria*r9Mod%X3!PTrJC1(e8Y)IHOaN$"dK72#V3t*
-M28+tW[hb6g+BG3Oh;RWd`)?p6*)8r&:J(WLXL?S(Q$PV93TQ!.OmruPo-udTsldB3Z4_4K%g
-#=r[#7<DI?05^.-1/AXj9,:JOBm\YaeQjCgsZl<F\MR'%"5B/RWO(A-OVQ*ae$]?nl@Hteu:G
-.0^-8PJQ9C$[bRp(Kob&!gnkaJdfNF(d_C%jNY6b`NZ8BQ#ac)KfcITU+Ypr/.V,k)O0";lUm
-;hi,R(VsM2tFNb4GA]Lq56`Ju^G-ICRk(J9<Q),g0qfQQ+G96ut]@n0u+#PciKFP+TN)J`4Ou
-oM%04!8?T+U_e8B#=#q%S=QFiND$;]+Lq3!nV@i?Sot/#9lK5>C?(DSh6Y,2J:C-;lA9<0j>e
-9aGWM^C\k\&C]#pd8gMnWQ^<\A4O"3Q>lK5m5^Dh=hVc+Ct)m2m+QfmRPgk*hsq.X8iNZ-d(0
-o<B[MUGU"/(AqD3!*6G)>))1LY2<kn?BPpPf36<Bi3b(HLOLb&]WV9>]/P-dcc]O!an]5YCq-
-p0.EAoAlI-d1&;'YSgJK@TPhRJg*_m9M2f_HmpW2PNQlEi;3d>adsa+@sY&>+5FFFYBGT>aeI
-6atSW-3#%Wi[*:`b!,a/ZC&<q'.#F6_8Q2NcdO#5*+(hOnSa*^0@:G*sJ<-n^Hmf'q<(1Le>8
-g)A!^Q6JO`Y<\7F]D(?RBcei_0ek2%IMYI24]Nq?SK@"G1&QgFJm@"[,BTM;Q/**NEAo@PWpB
-"?.P+')jF#S*a"HGT9.%Nm5;j\8t5=A;mI]</UU>6?:iLrs49?ZhYS0G]kP5,7:to_Z@D3Kjk
-^H_iU7@dI:ss"r(N(M3:7-J9./>qg*TjTK%tq@h;Td,mA!r4$MunEXXeA0d??<Oa7>LEK!E-d
-9)qeE("E'Z5(`fRJGpW*j+rL;,d:D(g#aj;"65%_\]\(7QG0Dp`#G6KbNNABc<ZF9@!]JE(?3
-*^^(X6DHKJ@oT%]_57]!+&PaHq!d\i')+7pV"=qQ%3ROYipO<<4]+`iC5FhDXs6CBqpJ(pB$P
-ja?^i;=TS-";f68&u,M,FL77T#UBl/,Dfrc:=<aKPbsK(J$l'"9#(c<5bWU+kd;PaF.\a--Oo
-gY%*>;A`9`M'a]equ%Uf"Hp3qTkITSVC0kjo*3+I'qIcJn=V?:.gX09'OBDF)9-P\l$mdrV!$
--NH375jCSJX^)I:7q`0#Wj)GnpSE(NK)l&>$sku:]F4#1h78W$EC#l8DQs!*Un,q6A?7;762n
-4m?qK4056aPh]E+GD`"`rC1dd(qE+^j3s-JMkR]AJ(41\01pI0V7JhL>Rj/fpmbK%+_7'Hk2"
-1__Y6C+iJUQVhd"1.gd4!&STmIs$n32aoW!kLbbDj86.G6L1fVeU4X$sAI6>-nY4HiC_4UCUu
-t(hE("Y8#R-j8_A1l2\$olaj2pEXP4B["!bseo'IKk)4!55rCI;2n^nsLlk*9i]r?$Th#UA)K
-(Sm.$kWqs=LN*55%0&0*#37mgFePXU2F.p@#cK_B/no2frJ[4riW02b$J(H)6H=__:K7Ck5m.
-06W:3W>ad6YE1[8`%$4i9iMT[;oIY$nd.(C%gTdM[9@0N*3>/glM!"'`"BXJ[48iWl=%-B=<5
-GH<Y-Ffn\okb7.fCTr'0u`!*B\gT.jJ1Z6eq;cC/0=g1r7!\aR)CJt41Rn6[-dU;"JR5"XHDg
-=Pc,#4$G<_F9i`qbO&8*W6GdDUEH)!b<0>XQa6/fL+<Dd$dK_'s;32!S.8>dMm@eP1IV/X2Qt
-86CPEnRVDY,XiE-P7D%1t09=`b#I!3!?`rt.eDDA33!%UVua$PFUnTt9MSB3>3dL7bXA7HI0A
-"@sf'8ttN)7Gs!AIo"C/$S%1c!#N/@9$D_b"k;!F!N:LC*"/#9.LptE:W<uH#SV?MQ]b0\qu%
-UfTZe]<Lt$^7`[5FuAHjY5cb]uk_'aI:K]<FXNtq*352oFU`]RY(N:[St.>BX5^&`ejcUgYL@\
-%.B%PTHVZH3&BnTILgkp0:q+UU1]:.eYk=BJ[-=BJ[-=BJ[-=BJ[-=BJ[-=BJ[-=Pfa!H\Jj*
-^OHgjk.OlEHNh1O\+&89S*.O_SF6?Pf>djh59E5K2ZteChW'auh?sHM?(r&>rj?Zir9`qPp&=
-Wf]g1N1CHPgRAe<J4X0^P.hA1^`s5QI6ci?@?p>2tT5d42;7g6_@`qSl9&?I_Ufq6Mr%n#:,s
-5-HmnB;\OKtHLc$ZS]1fKS*G^)7%mpC@_L9$tt>^fC^oLVRt%39>)6ZVU2\I5;!V#lLM,mE`e
-FNWgpRhp_AOY:]dm&2Y9P$`1+[-Qo@MZHlk[JK]7g#WD]jm63m64!JnHHq/8h!mc5C&U@TB*$
-,1]>sRn:N+b!_1`9/M`p12?CN\q`&;%rKP&CH=>(6==FhrtZGfVSQ>7LYL'A\=/6gt/&<GAm/
-rN/HVp9M.Kd6@DKhKlX%>nHr.8!&-bcq9eq"3Gn,<du6;4ToR(YEW*:d%s)_^As1SD_EsLhrd
-R@()E57#kNjU(Zl=;0(62#BU]%@4<io"XWTTP*ms$:U=F/=&Tp^Z?!Y$I(L<SY"pC"%o[,qne
-i]](MY2.ah*2$\5S&/I"Q#X>Lj&+7F7WjVCncoGZSc6<3<Y,0O*h6:DpKZ^$%^Y,nfF:aFZcC
-Z%Dg557#s[=gn(Wd%Tb=$&GWFSYri*i(TZ0NmMUU8Kj^a&O!30;LtqMAJq<YU"Q$j8GQW9=>=
-,PI&rY@P4mP`7)Fmb^k2tIj+F%[Jcmp5PQUg[1q0iU@BG)9o">>jbnq[b^_%FjfnVEbI6/*(r
-jq3"aH*>KX%j]@DC0d2se@L$SW=epL,@Y(i@:<SQ@:@iQ0W2:#@8:P&nm6Z2D6lNr;p(WY'a2
-`0D0sFf0XG@J6M:Z#j"GO3&@BS/]r.1Yjo>rHVt><JW"7+u)V+KQ&:?GMb8rX>:I.hWnsE@%+
-+jH18tWJB%4'R5[POW[a>sIdfLBM.TEPVd4\V2Y"ckVeGC4pKi#N()k*1<:#'F50eTY).GgD.
-q3MipeLRl;P;ZBHNV2nlJ3Ml^ZE(V4a/osY`[bGmG8D\-gq?%%F8m<+oPdW4%?>9U,F%TS;=S
-=#a,ALMO8(>,_f=IVl"q^B^Qq+N8J9aP"\*75T.J:,u5Ol+I5k+Q&Ns:3eGXV5[baUo64JKk=
-n=!YH<qfW6e^Y2F(4m&UEVWcZOggc)[KkQ6dWrGhD2oe/pVe@\K4)7F<qSVpY?lr,nFo@\n^^
-FMgDKo/pR6jTJce@/i4.ZhQm(+&7.0h-NbI%9FLqP+'*QN(H3=;5np'maU(o'cS`lIQ0TYFO^
-cX6n,OuAc,HAf`^*#CE3EdKO7LAc2"Dq(fQq-e"jLmIP5EIR[W-)Mi;=!f?V+0B!O,/LDAP^0
-*U=P$D7'4XZXUEip!&9OjGsj.gQq,YLRr4jh;K(sR*BedYjq5:6#ae-S'F*\l?9M`ZeT\[fej
-KSc*W(WEO2tOCcQtNm?_-m-Joq@m]cU,M8S7]?f\]3BI4ts#/lopq<JI/H#b!j@&?O8,(kOV8
-jGrt7)QY(6[Y!mLIHD+^,U6KPs*GX24W'PVF<Ck'?^O@E^WCpmH\(+2j_/p-hZlI%'HlNMI3<
-g=c0>fbbTgk.Qq,Z;I!_h)prjsl@:<SQ@:<SQfon+fZuoePC$Y=rHUM_W6((ZoSC/,Ta2BETr
-;Sps3M*Zlc"Irqh:qaiLRWfU+aEqXg/dt^&A10(eD!s8pY^+!%)F['8"YIMCOoF<r/%o:AS#_
-*U5b@P]@8tKJg7"j4:+;(SC4gkc16%*QK<NeUUTZZ(]o1/SC2"KDlS-\jP'F[b:j(uIL(p&Xk
-qe,Xs$n3aUfEt!cKsEGH7/U3&IOT-NmYS3F2s,0sO4Z#/R>GNHJN7o,aA%XZI_RdT^VX;YM"2
-8';tP?3oCLVt>gh5hcWq!eM3oF%VJq!p5_&Vt:)4HYlf5+CS#Zlb]1?f&bXZNPK1%.16O,SqM
-AWXUF`V>*nte(UVEe@NH-QLfP','9D>lo(ZEP<(l_Z3i-Fb4S[ipqJY7&4T=6O"U&]2:$4AmO
-$*Db&A/SYl)=<Qo9rm%K/D*5n\/MmEfUdEc(&G$4JLXC3(7cT-bSgqA;6b.@"3OPh1K*@hqiQ
-Phu=E7fUo6eD<#Z=n$Tj&]T%`_&0)13ec#@l^_#jO7.,:aNlYGmE($fnn4"+f[Wt91&2\MqSI
-o^!U;eas"$t9<"mQ!ULt5pEcO`4d8U(UK?6F13,MIAWjq7E-cQh.k($6,(D7AanOM'1Wo`l,l
-&[a78,ALMu^!m=8jq4l&Yj=rK8(>+(O/R2HYB<.c$m=[E0oouO_3+>F*e+Q7\,),e;bFr:rt%
-<lP/d\kgH;4.R7)CQi5i>T3[u2uqW:U3GA(j)dT\m(3XCa]:P>M&&ZtF3[B+!jh0oXS_=@alU
-(7dN*^A]5>9E"a:*/#AXY9nWSk1K&N5jZbCrC+Di,B6P%p=J(<j:$b\`5gVK3d6[m1k3tgS3o
-1GXTa"r><3Q*79Yhp"^0!o+jd`O%6Q0h[.+4*J.dQi!%!p&KM)Z]H7aWLd$@%f4O[\''9e60$
-GPT?,"#%#^kbHZ*:I:Yct@9Zmr9<@3/a`;b+$.FWCU:[TQ^nah;fpK0o'bHKN#KgkO`sp(&!l
-eqG8\?&ftXokF)b+Rj-gM77hM\`S0Q\+^tjn1SP_<_2#``-YnKgO&]+]a$1_!XK]nM:\12Gg4
-L.&9s7W8Y:UM>9h&R<qWdAGiCA`!l;@3+g<HgRZD:=+H12*Yk@N\hWA0kRrE10i-B+n"-;l=j#
-%Ij->dpi-;sl/HfBJsE#<iC@t7s.YIS7\Rn!(oXX@uQ:"T;HqogVsJ[bLG]^8)T!BSLh#e]Q>
-g*6aXNX16up9,JJm/5s^?Y25"CC4B^I5_:OrNqbEodFtJ=V.[%%EAW<6PsslnnPr21'kPHoeb
-N;)hQ)C1nJC:$J*Jc&.j4N63u-agpR%7ZQQdHeaH^.%DbY(X)RDG(4q:ocuqnNOFh]8oEkjFM
-?W<6_$;+8p/l[!"Y43&1"6B`b3@N,k8jc\):@#BDP=9@_0ST32(=Qp#/RI$W4CT%Ap^k9qL-)
-UlM18Ve]4]Mn(6K+9'ga0JbSjL*2q!LIX=KKCM;Q-JjZr6hCf#XP+usE0a%p$)aMdDJ+/9hgM
-;.rq4E)?Hu")-5:ZD>PM9+S$O[=M$O[?c?VT8:F0Zd0_Z&/K[]PXFL#pD;n<'C2GBib#n:_Go
-$(d<4G>/s,Vh?4,>o81EKct^;*?7J[k5#jF"2;n_JD_POopR*1_;S^S+kS5ZhWKD#*"q):'S`
-9'@0g$QL7iZlIg;J8'5r$A>AcQ=o*X?&DX;Ef==noGNdO(t]]Nh:G-lDc^7Mu=6f:+HR4%'j6
-=:;Ig(QF!=1>6ZRqj55F5+k5?9NT"#PBPUDn17Qq>:7:=KX+/gKLE74h?<fgD\!`LLC"JO'0I
-mKOD@G*8PB;nogO0Saa'e[1<P/Io-Jp//.]"S6e9\?amG>SF>!l[s$]4l,LU#o[FBWJ[_M2j_
-cSND@]`cCXB47kBlm_XW;XJ?L]37i"1.&&9uBFK786nW4/V.QY/]*02fRM"7cI9B^,Ycn9E4"k
-%M:t>J,91W997E;q<JaK"lP"Zo?t/pc62&Zn;bQlbX4?/dt&3iZEjBk2"M8_-Z7%6Z=0.gD0n
-sI$OF:_4cQS/?K:Id(1n6XU@MC\pQTlntoUEIYTI*`utC(5*q#b~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 386 406
-%%EOF
diff --git a/doc/users_guide/figures/gimp-print-setup.eps b/doc/users_guide/figures/gimp-print-setup.eps
deleted file mode 100644
index 5556c77..0000000
--- a/doc/users_guide/figures/gimp-print-setup.eps
+++ /dev/null
@@ -1,463 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/gimp-print-setup.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 293 196
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 293 196
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-294 197
-12.000000
-294 197
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-9a9a9a
-cdcdcd
-b7b7b7
-eeeeee
-808080
-547098
-7393c0
-424f63
-5a7191
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPU%@X%7%#0uC?d_-/STF/)nrjWlTLcl\gYHV0VWKa(Uu3k`a^d/p9Vr^kVUXLSs5U\X&k
-j^$;.<aYY,6m$BiulJ?c)R'ZO\@+NmKB/'r3AJSNBZW2'U>^##S!Y$t[<-<`-^;H;^Ii5[9He
-_MT/aVBedq91&D'fW[1f,t8':$[r+Ar:BeO)C'eG?RW@8Pjmdb*[U:?"spQZ:]_MSO>"_i'*t
-[J.A_=3JY86j.`P7KY;I/VMEj`^dE5`d$!.XZ@Yl'hUZCEkn!6NK;Id24PiSa,&r;Ok7?GNlT
-S2/*D+a'8#>-6DPu<3-O^T^7]G/Y1=aMT7/F:nHN1V9F3-)PtXD0Cs\@mJhPg64SlTJ'b[jNt
-.l@4^ZmnfT=mndVJ1a=:M)'u%gPeMat+T4t*-m1AY5,^u.\tIfmPW>2.9g0==7\s>hdR9>,qN
-lFA"nG!aNg#fOqNh7aGr.J^V-MI$mQ$En2J_(k9&aLgM5?/@HMpKgdYN0?SD^pJJPr9BV-te^
-e\@=ibp_tU1HKHJ;DV59%V\C)r?9EV8O5hf-lJkbTJT4>;YBg]!I@Mh-=\Tngq[`'&uG.FjfR
-H7PSfZ/a"MjDs3_KOK_(Q&04DM5/#O)OkXLE\0Zo-h%#E^pW>t/0idk6(WS9C`Xe(^c8m=G+L
-\mG#VPM\U1b>JsqNjf'g%_DiP_]rEmqmM:DACGaG#.66\*RIR/<gPhTSk<LNS)#,.Dbo-lNQ,
-Gk$HW@#pgC9YjV,Eg=<]a.03YS4!4`g,=;-Xdc;&p9#&j>1F7j^+FFB^O"uqTj_d\I/<`$o@$
-C_eUaRnjD3W!<%8%gk^V>#qn8@JLr6c>Sc5ik<MW)W2isglDR?F]YL?6sM5j[CO9:QW;!TT?E
-&6?Hr2C23mQ:,=!2_;A1"R3<%keI$Q%R*c_*8h>&35G"a^E9;W&>/S@TnL2*-oKT\-1C+'-*g
-`O65ad10,[;V6Rg8Q%Krg@]S].U"f2J)M=4S>XB#j-M:XH(L;aRYh3_)2C>>@/-2B!dKOQ1t*
-Mp#F;bC+T:a-dUOqQ+!UJgZ..9*4Np/9UHfW0#,nM?tDKY3/hUqLjbV)'UjX0$!0e/ctrPkma
-FTqpLKF@#qi;)1a5kmis-`\1mM`XPUu]$PNrOr1JZF=_8gG5:nZ5.I8Cdbf)1c8^BXj-SERY+
-c8i53HJ@s.#;0j-NlMAga[IP28!9BV\HHRu^o;6cid5K'+e,8l[*W`d(2,jl;[-;nOt>!Hb#W
-s7&apM,?4g]CXMCc:DaKddu/hH'L0O@[%pT:f8@L"Eq79&>a10?_[PoES>t`/=QPdr@hrX30V
-J6:B.1jG=jQ_]'!gS6,fbq[4<I-#M8@S^IRPWqYJ/%#$WTS>#:j>+/9&L8Eg^8/Vq!&hX.]/.
-0WHrPS!coND@T8;P8[abnQCgbcI'*M^<n/s8)774lH0D9VgNjC#q/PV)KX4CYXisn<=n;c1]T
-_nbkH(s!JU2"\,Mob3.fMU;g+kMaOkb-W5Fd5;T;u-'QG]17:f_e%W2-e#K638c(EJ;EDK,PE
-!dhN07$n8s<(tV7"HA0M5oP$;8d7>\,.DqbR@V[k8sePH-.0j-1`0LelB-.rg>k-Rf'CB3i4t
-"5C^m/kiarGlW5,M_FCoJ70J@#*`.$D[=-[(Aa8q\4.nnF8.M/aWq0R;("'uCaKr*1Ye3=-1Q
-1^fJBXM2(n&f`]^TZfX3I2-CGj>R8BbPBhe&-PX=4qnhpUOY:&#VDco]f%,3NE-'"lOQ?In2-
-(fgp'_>`gmHu/jjFO8+P[_P(?!\-DMC;J2#$\I$r1trGj2-F4(R!49?K5/]hO)CgA?OR"Z6,n
-Vnnmiq<fLF4h'a/;Ro#PA7VQO..URO)8sH]XUH4i;-BlP^17:f_PK@>jR7nrka^d/p9QedTr\
-928Ig2B0g9GHLS^Sn,6eeU6P\r:pm93-LD&T5`)5Rr`V%VUL;R8h7,a@"$eu$s>S=nB]YaX9D'
-%YbT<g-BAjB#Q$7]F>[2c0o<WkqE.2;GIFpP!n1C+>nki:qf`eo8[`Vf.fSePnd?_?)p3=$S2
-Q8>iQlh)I8<W3j!#ajGpnes"(cPWgCXW`[D`\HSh\2,7&,)eZ$i3dUs7JQs`X;c;W,\C3#1DZ
-i6TAu!<!97*&+g.U\;orrF69#n&^;qq2Z25=,[bp\iZ1J/tEDFUVQYI]lp9>eo:gAS1D:hjcJ
-R8R8Fop;Pa1.iiJ8gV%l,obEJqGR7smO'D\~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 293 196
-%%EOF
diff --git a/doc/users_guide/figures/gimp_image.eps b/doc/users_guide/figures/gimp_image.eps
deleted file mode 100644
index dad8a6c..0000000
--- a/doc/users_guide/figures/gimp_image.eps
+++ /dev/null
@@ -1,1024 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/gimp_image.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 338 287
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 338 287
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-339 288
-12.000000
-339 288
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-9a9a9a
-cdcdcd
-b7b7b7
-eeeeee
-808080
-547098
-7393c0
-424f63
-5a7191
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVMt4d4W&Q8V:DC%V])?:7;H2d&Psi#:;k+dSJQCXc-.3D!2',!\fh>D=Cj+tBH6$?/K&Xt
-`r1GU5](AMilYeeq1"Z\6^HZhlu\4O6#(9N?:ZA]Ai4m*'W"PK>)<"E<f)rcmiQrp]Zc^OQ33
-s"!p@fAo`"qYSktI80_1s*XZ3P5^ukP<XK\mpEj%,p]&:rVF;!jNm)ba1mi1ra1-X8cK6,$1I
-mGOu3!f]-d)A./l.gRE9[i&,"O=igoE1)]`E6C%@&$cUaLPnudh?c!U8RIt"ru1@;9[rXgMBs
-7!f"1&_5G`?O,`fAG]ls5\4hh#2)M3#R5EXc<ubRc*.s#_"&aIlWZerpV!udR_mfC*`bI*lCN
-`K_oiQ.7sN^O`YX<d9lhh^J7\3)#qQG3]S;LDfH13l)6B;Pbb\%^Hg43G:*@XkJk,j\H%-P@n
-b1Or[j0#QV%$D44l4]V3=,GI.12bl!O-%s1K\c;uR^VK-X1jn43AEga22,a(#uYs2+%!ognqO
-r])4&ESFc^rp^Jt4sB0gO)2X^iRRrm4urqEs7U.lq?cWh"d7`-f"XEf8U;a;ol%U02YiCtdJl
-=i9^p*#,>%q1l.>!4MZ3VJX'^'B)Kk;:H.RQ<C&VcAqK!q\qq&UOld(Y,>4lN]s,DEb_;BbBq
-X6XAd[u_/"FmaKGPQ,?cf]SFmV_1Y\TcXmQOKGNL2?)MXrk5@J,%h/qE'o(jN10RP@a=9b[p?
-1*m468#5mcI6h%CF(S/5&peY;Bgu.\lns:=`DYuGBP^K?W"TI5Khuc&i_W*"2TC?*3S>lED%/
-LM4O.RGB^o*14GE)LXE,4M>&*2O,f!n1UOF'*HH[49/'3/1hj6r1YOVGBK]jCV[E?eH=c$)**
-6JLKUO,HPJ>'M/kd,VTapHlrmB?rBYGd4F#$dibJWIqd,LaO1Gbi(<_L\&P4JtVm$+_9d&ZT;
-@^Gc5HBoiIH=8*@_K)@J"a9epo8236)T`pr0,Gl0,A_gu&1Ii;.hM8]:aZirTY`=MN-lTeu(C
-[2LBjkG]#-L'UXRY%?)1f&g((Q67lcuaIFjrmF3#8;5f`N0/KFsJE<A)O'l`giU*PajBT6REd
-X`c$qW-SMYb0I\Z0Dg/j%V:*//-^0]3K>+FF`nrrS(8#>`"\nf`#bq_UP?nOLj(WoVPV[dP3]
-fNN*Q"Q.AAol/dXb]GZFl=@`hlJ2D!YCE%d!=brut#^IlP&D[.rsX8GkMC(H[b-Oo+re+b[/$
-,:c*Vj8q(_Z.qB(-3o`C<7X+.Z;7LZ`cG5PX2$`nj90ImP06BTP(MK>.:pQ[lN6AA#;.Nfg^g
-j;$,oFVK!7RC4[B^$4T=:*:i[HVohacpnNN%tUi0a0:HhcrD$F'qC3mOk-henND]V,LU`gO<9
-lj-P/p]D9`B<oo6@RuuNe60CAb:;BUXTgS!UU5a>m5nNHt#dIQX`(nQnm]#"4nYoC+2Hipf&8
-:5>q9(Htq/!Pro!tM*)2X11^)=ZGokfqMjOI./XePN,0EC'A?jDZGt-l,95i]GCPc.f'CBP/m
-Y9`M#BI9/P2H#6=m0]E^/hJQkEuQDMW>*.93Z%n0A72EDDAX5YJiRG_s(:[6h;5R51Z*eC5A2
-Ak'nY</s.?_Lf4\Hgi@(d:0)@*VrWt87g?C)%VSaX)3fcRd$A,Y<!e)Ml"'9>j@@dmCc*&9@q
-%YMtBKgWMn>]m(/CQU26U5lY-4hPe*dsbWm$J:gL'Kb`(lW?uSu&ndS?t-rX_4of1Aqq8j(C6P
-%jpI$8-'>]kVQqIm+CmYUn1S<\nE?gr;&93ilMH!BDSl;p.A_&RtajB0HHL&#02?MJl2FA?#r
-Ud@O*qa/hU._6?o%JAs(=.@,aMI):1B3JrG9$<0FM5RL=$/K0m!Rs[0jC-7fqlm$mpkek9SJca
-%7qMuF]mt!2?YK.nbM*POaX_!4SP'23]DHt?7(qs2QCa)5Mu!Z/D'Tnms+$G&W6/Uu]XN/!0c
-+b-BR,g)F7:SWX*@V>XuLZg.iM/B2!Q;t=`:Sfm0fJ[_3rcM7`hVQ(nWM.7BQ_&<MqD/k_M\;
-9Z+lh;-29WC@<r?IV2:'.*,a9IH)aJb,#4<J7Q$XB#R6NP#q&GH8_S&)-/ma=dM%*MP(D4:\Q
-$37Sf5Y)#@_@R;f+7:O2fk`?K[f?S(>[5<g-]nsm8HAp;MWM5!T=JYc?W24=\km6Tm.1W;s^P
-[(4NXT(n%\N;_,7=X3o,#eq]a#E_ZqT-g33[>^ts-Y%T1!$)2l$Loi(o%$aS<*-al9_\0VJ4C
-"-+ke0Bm[M%?ReMoLS^VI!4>RUD&87O%c7'og0PMU1JUh>b31LHAZ%kHj-Q1#P`6Y%>oBra&A
-?MuYNWuA<dSbcQ]6G-Sg;@o4jNI:TBDt3f>e_YMDQJn46+RVj_1tEVs7.V43-MSpDTk_pbGpO
-lfo#k_PQq=UF4HZ6H`Xe6krJAl(3cY]fCJlrk9-9P[9Blk!2*ea2D\B1dh\Ng)i.R)P"(3M:O
-BG/QE0N5iqR8)nV5J26aJudb?o,T?=#Q9H@[+"6a$b?BoO[\^H'mq`F*\C^m.5@!VV=peYn?!
-a1Hljd(]T/`5+qa2pJ9qO8GORmi>cIs3,g.<nlA/&+^fQ"3pf:/Y_5NJ>fE(,@64;k9,t'Yb!
-iWX4YPc%8#5$gIf?5\UAco^gTVLc037^:i-gXr)=b#!eRj4IUBW=7pcj?\Nrf&3BJdqAA&Rqo
-mV[j(>!ol>]nL.t;PYEGq#'J3/(PEu64YbMDK0kqB4(4K>GEBZ*)J`9ti$)H8L^+2G7a1TAc(
-`S;*<AYX`bqDCmV\H:'(IME&c#gqrQl5LD)q`g%07K-3uC++%V4/!'^2%67@X^m@>ch,b`=*<
-7f6He*r2\/pU:A6-88A'2Blc1sUq2J5C"tCA@PL#9H\J#^G#!(h#G';!-%PlRiW]6adV-<(Vr
-&]i1q#kCRM5q_6Tqb'fU[rDl(Y.**ml2EHb`Xb@9_G)uT-[=>0i[QGNViQ6NYe5fHSK-bKYtj
-?R(4e"Jn5VVQWSWT97Quj6b'MEe&Ue!!kM?9W.j`BBE3m(*TQj0eDFc7bi<>aB&ZMi.5SlZ5G
-Q,4M3:/iXK'_dWN'n%7c>U'.O/\77G7EJa,cAF(aH(#cn"iFNj8cuFf,"a8it:6NSJpl'o\W-
-f.3>k>(H;fL5TO/02AF'H^gp`nFL7s(+9,OI"$@F&;#f+q[7eY#1Zl#T3.NeFO]ZEk0lAtl']
-^as4$%([92QmB.cY(lGuJf93IGH<QDqW([\nWnbC+SK4RD*b;,Nk;E%3nZ8^#g6lr3FB;E%`Z
-\(<n*Ii/g88bAj(fCe7G:r"_s3pEY6IIV3'd\Nd7_RK3`>?kOQdp<I(^T+\]Ji<DlYW6hrNg(
-KoW:R(_\g,.gn)^GS:c9Sk.qa^q?9XE+r#(I-0dq_5=M&2Q,*0A(q;1Q))cNm8Ckk,Zp8gZ/s
-H4Y<:#u8:`[uFDF+a]cJDUM[70T1S_UnM3Y.rGF#!@P!mVLEW)tu%;p--OLmG`2TfToWDt^p9
-hs;l^/D,&S[%n5Xl+Ip.a4*MS*3#HAM+rp!#L!,<?#GH))<U8jolMdak;qDKO\4BlA13/;/:+
-.Y@b#tTH9ePGFJH9%m7Yp[6O4Nrq0@*FSUUTS,TUYrPK-4ZMPP`V"SDUJEGA'Aq5N,[G&?'B:
-#4_Kl,:#mVj[.Vj^l*$NN&GndL;obSRf)&bYF@&QCXm0%rTUL=DH2\.%)Mr7k(6;d29/F8'XG
-OF)j_0HukQHN$5qS,,qZ)0:7:aUU@Q\9P;T)%oMcfpq<`dr,`IRphQ*d;E.JI$<&*]$VFST[O
-/cK>Q2XK/Lan.rg%JGp3n0'9u_(li8[mO/m$7pAYrSSKBeQNL>Ft,M5Z@jStJa&_FGE[.t5Qb
-+j9oq(AXTqJL5!'.I*XoANF4TTp=of55N0EUacCM=r`PHp[6l`(&r!R7\PKXVr04eDW&8JA8H
-!NWms^Ud^^NHEJonRE^Pk)gBP;r)[h.W-X4jbhT;7&Yc!M`119`gNG`j.ph+4ZBm)2BRqmjYh
-FG=&KGg?UDWo+l<o8rVU['K0U:FCL*a0>Q[j]K\[i_+NV/J$BrOI$T?EY`GNPtMr78"7[A6aE
-K!p##4D-Ec(ADVgC@a,j=0!['B<o^qd7!m9W?%B^B*k*E$,GDGGo5S7Uopi"Yb2m1P8[:n61%
-VU=<+bhgdk%kZTh,Z0c1r@.5(*iGa#Y.1e>"qh/H'AC<X6Iu*Q4Y!!(e91ksib*5e_?FA,7*3
-_SmI*KWO+ZVIbafY5PX14/1NLndGn_,gDgUZ#\J95,k0J+"'^(;:ja\MobU:<_+fI?.Z)ZG]1
-WHC)A`9H+VJ[f8O+e_m'9>\]8#$&a3<V8gF;-<L-r+L:G`6fHrUmP6Q0GaHu([)[p7[PZ)ere
-,>i9`D(fFDB>\]maLg7WQ4+_1fTOYV,#"Ep&!8hCl>OOL/kcfm8s1uQga#l+`k>5QL0k+hC/1
-?q47G"bbuV^C'7$,Vq+Jd=q./tLT=FWi2G!I:-UD<;Hr3lB+``,bGNsug@+"S/R*FZN!;pt>F
-'Vl:4<trrCdk/[.d_,Uh1$e725>mM5tmk!%/,6du=VrZMH#U=JN!,&KAUA1o=8S`@ToldPR:4
-\W^C>XN5&/@_3*(&Fd#hYB%$(WtNAEEcnd>[TkFN?E.5-ho=DF<6k?jRVejhB^5-_NU#bo\f/
-aYA`)-)=HPs!/r,W0%\.Yr+p)]&C;6U@Q$cQ.)05[jR4KL<Qo<2G2[(i,[C`q5Qd--2T9.Vso
-4$!C+E\g'YYd<\<UmKo=oMF"b,Q)sKd+Si0CitBo3;2W"b#KV0#*+u74tc^^B.2dXjFVsV981
-npHn'i\/HIDd)(bo*m0<^H#%o0YuFnYKIsQ/%15&%>/=DBKMHITglccfKWNA.F50QfR99:2qI
-]Bqb[-66.P]1SLS?o>([V=!VpC#Q'&;B?q)hFTFD4s[AZrL/J6[V?hhP?+*VXpB.(p>@0-PEd
-[h+5J+jB$mKqSlP=M>1=`f3c3nVq`ai'p&:.StHUI1<&#7uJ.&mE!\teTO-:CS61+RD97WVTL
-V*!tQqk&tNd=VN$%1m+-tQRR(3^c!H<N9DVas+C0bu%E7sa]Jr(t\JOC>&9S=Lh5-a#OXE.\<
-:u8rME(,U%INh-SKpRC4a$qJ!kQjno7]U60Om^jE-6F;!p9)@<_]N^6ZEB_EApO'_U(+.]''[
-o[&E5^b%%jZL:Z)sk,<^/WhWSKl,N.f9[u$-7sDkF&3(a'j-mE9r(Qc9lW)\;h!puB2r]XL`J
-'fJ/87JdXU`^S(\^Ke>N_Ss:B6T9jPML(LRS3gIFb8)s5orjU`Viiq+`dEQ'K>G#tQV.6"hE#
-=r-lpRVD?"L^mP`-kr*WND&b^%ddIK7gj04HkeGPlBG'NrJRf57)qPgQdpued#/JKN^f0t,!1
-#lTQW-"LlDmMUWUd1WaVh\C64cC\M[;X'.A?W=j)6:oRVq"a0#S;O6s3dJ+WAXOcu:`3=AF5M
-ai+9?$SK%HFcgA9/l"_U;j`BHApN_\Cl^^e</U\E7,UgT2)%8U6,hfZjEf_O"$OYpndhT(6G&
-VVOs(1O78,+n1KJngoe@fos(]nVjF28aD<J]Ond2"4SV<;^3/RP;#N;qP-X(WR7;\k&B&0fr.
-W^X58-2VMkCCTF>n&"bY]Cu*;+45rA<G1QY87]1Bre4+iq)rh[YOdnL^E>dtS(XfFg@q$ELe6
-2\K\:R,u0$=(i.RC[^A>XB7H<RQ`u&#:O01H#pAbY;Y^k<I.**(957p;H8YCfWG;S%T1^4_!q
-EH6pXasYjmi>KK4+53o,6bCfdrbQ1`AS+:fo6=!-Q0iR6H;^RVc^]OpbqSBp67<9$e4:f'^42
-iK@p*E)4g3H_U=a'"Y*eC0Yfe#5cpa0)c>P-Zp8A_IgZkTi&AG%B]1^I49-_mR4DMON]Cc(QT
-s\^B9M"MtZp.t=-S;F4_fJVXCP^,0^X3-jW"g+VE$e>dfYPYhago'L0R$ah]<*JNQ&(B:LAs8
->NXVs?4dA="t#RqY#HH81)PUDpaK?%GXE>qEUKOriq(HL8_Bg<1;i):Oe3]e,XHP/fK$pbWmE
-P\X!'N&9sd`&O<[mn@k/['cjr[iThOBdILtFiV/I79:];1LGQZ2$8tL)7QHBcc5;l(TW5/Sui
-o*F_P\SR20l6erP9+IjZ^o]NHfH5`<VA`s[`905>VhFReQ9P&6mc.i0(E'PP\Si\+kKMLWk/d
-U@</D+/O<8ku4\I[X0c>/Ij:Qc1.dP5qOmD'u0K-A,[k"&`E2(OLB9&J@59>qHghY2r3GSfZC
-nUFd2I+P45\jgQbjUl_du$uYZRgW/?tBdLJ!V*E+kh4LL$c'j44#(aKJ[;?=>>LfP3SHrrETQ
-qI+ACnoaN+J[G!lTaqoWhsj\5Q#?qI!t#T@cQ3>n0Oea**Z_W`5FIGK.Y-.\^s':!PZR:$?nF
-aX9.13jHsd>/[%$8&OdD\!rn*D*sH;]\5/rImmIS\#a.=I=A,l;pjk(2G[a)p'G#9CN+%M/a_
-mu_.].!:3<g?>oHXY:$#Xn)3e]?VtD,j9"Kq_NZ$**G3ZSYogfIccAcSTU2)OY=eUrN-Pt[5B
-!(C$JK\It^*iYi(I'`E:P/;&Z@(=R0CLp/H!1M7Q^UaK-?VMf[,mumI`p#B"@&Qah#$sbS^@j
-+(WUV"-gJ#_6>JXYXbKVFMGb294J@g;>ADmB/75DT;^Q;Y?K,+lOhBBDpK<XDbZG=:a8(\nUL
-fe]]=2*EEu8"qZ7MuX)p;+&(2>Sdbo83Ec[_1<4,A>TC4_DX]$\OQ*1c<;_t322X$16m$(JBn
-Y]F6]XkCrR=IL547KlM7IjYTRd5f@obX?_N$^!q:[+7JL>%bGrjfFt1'/b,6p"Q=bZ&!09&H)
-am/*a.c15Lih89h_BOp/IhRjMjLeG%t13sK-EdFsR[\=jidaSg94<`qcBn:gY4?gQa,C;KtR1
-Wm/+[j,2U_;&MK/[e?I,1f8#H$6;Z1prE%hem(6/Vhu9J3tE9nh?>2q:>cL4SJtfDAFX`MVVW
-mUB\k76>=;Le>VY#,qSCnc"csebeDe["khLV#Z3p_UPc]*qRY;i8aNVI<=(9NYFKk&`p17K.8
-"&XD9],D98>,XQ42K&X%]-BeWoo%o>;a-V!G)+e`BdlHScBkkK&?o^AsO#qe*uuM2TeaXP.@q
-^[IngQ="Kt17")B<TB(MXlL/0g<R-d[LR#toH8%e@9WKkgO#Efh$n^SK/Q,^XDKe+lrskg8`=
-8aUu&(cl^R;.J"=imiaB61BsN-ugQhEFn8EUh.`[PYS3I^W]Vc'IoXPUW?Djp)<6c\"IMMdM_
-'VZAheX.[_hg5o=/K\\QsNHT[PeLm+ud8*Sl#c_i`i--H)/`a&m@UP,\MK<g\sl4fB]fPi!gi
-1gU;5REPf/OXd6Yh!L@Z[!CceJgBT]82fM?,E)nYk8=+&u^TleI\P?5hS'k9)n>L`ViU\lWeZ
-T<KK+M"(L/9#=`M9S=NtCooA2QL,6UTgKH]6QY*6[gX&'?Ibfc=0M3Y&0:71,W3V]K"(<bXai
-*e/QcHb4O8fY)aF>O75;THFnSo-1k6]&L1i(Hc/br2r0+EI!g0Hg2LYY";Qq7:$TB>U3Pm^nj
-\@s0,P*Y_.'25.s1I$:-u'okjdXb%kV@8tE%.Bbjfq25L*X\WAbnPmEk`!Ab[GfBYb`5ZCsI>
-`i*^k\H7^I^cs7W=+cfg$^6$X;d#:)dZt%qA)3Jk.tb8J5^9Eq%t^1-!f/<a)hM<SKE<.s8CE
-c@e&RIlZYS+^:fpBCHb'da8GW-DdVsNGOoN6$f^SdIe`:'l20oZBM'i?#;]^VU:0BUGI:ucC%
-C"6+?u'=eXTiU3q/#OV21&u+->@+.tnBp?K>&`GYQjnXdM'Z3QZ,Ad2-Q4TZeWRLJ1S7:k*'8
-[!sFeZ9#(Wo@ktkDI7Wik.VqkYQkJm'Idf(D=SG4"j9e'_[A-de!YusCW'q[W&NFHdc9W0WY%
-Ebm_&p&k0nhUG(.&JZ<4d7p7i1CLYs6&"hWCTJ,K*?e*!pkIlA+"5(3;(L\L7E^%hU*O5I[]h
-+_1!-^#F[3kb)=.+Ra=\tVB[D-OGm%Q]O,69)R8ip?i<W(":-X,-sU_PP`AKpIm-X;#AoK6aa
-BY.e0"Er.jVPkfYoGAs[q<Sgh6^Zs(>>D4C92kV4>+obW!$LG5:')ON\3eUZb/G*2!L@+8@<n
-0bG[mBdH60g7iZT&_o.^pp@HGYAXIXEfM-n"rSds"$hHh[B&W\iVh55jHra7ld/^OGqI7o9Q$
-:LCd7nR(D>Va%g1?3Za2G+XU/&ITb]Akf?Ri7\g;PrMXa+gVIbq1jmtEpBf'&qJfQ6Ft6lU6m
-?[Iu6(K(">(AckO%ATnA^[0(A4beIc?EO;<FR'"W@AL97YA@]Vs`QGN63[9\XJWTq;7,tT<!*
-^m7Z*d:>@HY?kH*]Z+uHbZ#7]r9u9[X'a>eP$r0*.bdfM*"8P4FMXa5l9^0mpCMCmPWW2ErZ!
-l]C4j)qs*4&+2>M&]m]kH]9!!gn\sn_X7njXn8rY0Fa$ar6aPW_/>EMe7&:Xa%5Wj4qSC/02`
-\/.Lnr]%\b%V>q7@ZtktUT\P9@VO.ZXlLV5dSZ]`]>Ibj48'(03^<1jk!rg!f*rL3qCk8lncX
-.$)M[Ga$Y38in;Q3d@@.gBpR]FVE_@0-p18;>Ge!g[\SshO!"66'PuDi`L%M1@N>oS4%@hD5R
-=gQ'atRT)S6HoC%2'm]"8F\n/U(s6eFHn%ZParp&=#5MY*ZrV$3eIsC_Ul1<Zms7$$dHoJHlZ
-Heg16ObE#Ke,sc+T]hKRL"AGgrte]FtU5fk`=3iF6V[R%-#NkS>F=*:41br_I2#n=qfmh-doE
-&Mf_b0DCHL>f;jm%SG-"jp68"2QVgHa[@His*+5.um<[umUeOM0ZS'=g6![nlkglOEQ+Ihs^h
-m/il>8"m:I<-c2M^]3f;oSQ+Dd05AY=KS9RhFS?efH5Mq;@YGQ6j,gP)#IVhb$8T0ERIMPU:<
-X/B@VfDjU;O0>/4hS+77;7Q7%6Y'g=<c,GA9O?.Qe9J>KTM%Yi*4/JZ3+S]>+tZVS@/OF<l\K
-7fd8/loBV'o)T3JA`U4Ti/?3pjo_=5FPFkL*6^X-9p,qCNoO7[XVMRW*7C7en&'nhn9`5E%M(
-53!inE(o'K83IM`*`$Ynd4r?OKd"\M0JM5HD0itV5fq.NEsc>bYo,O(Q4j:;B[KG-tg;!]RKn
-N+.g7Dp>bK%[kGJo;/#nk3:u%IVml6qrl=j&ZQ[>."5AFd7%l)AI4uk69ArdrV<M'hNP3^qD8
-crrFlsek[E^o`pO&=b+;$2k``2Za\>/FNI**8&98+9iT.R6Y=.rA%N:P>DarIp\b,Ro2;"NMa
-abudEefl82.h3;I>hCi3/4+Si;gGAq8d%)ijK2OjXRitmiR4WN3)K_%)^7#qdaqE[DNXf4mlp
-`g5J?pmj1F'"KIa6UpJ*R25JMR>8d,+Q[pQlGh8b!X:44M$FSGG+EP=LWER&qTq6Y?I)m<=D>
-P21Z;3\S&i"lU#S0P$gp+;G7Q1p%n8>/V5'LUrn]KF2o#d**#c(+HHiDOfm1=.Ldr0>p3)FUW
-0M]\?1Je#(k8'HoI9#Ba"8>pWV-ZjMu4tnm$%=;ck)JOfM-3N&UJOT427V1/\ZjDZd%mRdXod
--!tj$.tl:B#Jf<4`lpl.rt$rqQ#-hqncZ^:o$in_Ns>"6Ks!s8Dg20MetF;5Z"KdUu;W)JqGJ
-?&HduW3<%@`kJ/)_`UZ4hG<Snp`#/Q#-gpJ0_\oF>d^P.f#+.r5iUeG&(_f0KB$!<c":q@jml
-nt'3!9J(WR?M#N4Z&4Jum:MiWrBK'f<^Y2Q!!ig3^C<aK^Wf>`Iq;j^AjM"+d'gk^o=qt0FGp
-EK@@Y?ntns8#4[o]`jBILhA:n^[$opHQB<r]gDXh>dC7+gJ99oC%0V02C$=E\s4IU#<u8&?To
-`B@/"qoT[;qBG%CQ-kB6"C:Ja?9'dj9S]!$Q;f2DIZuBElBBgC9Cpst'B*3.ungXh;0Tutf9p
-j*CCO:]16&2_D3X2$E1+7*2Vb,*.C*ZItkp3HErD_BODe$+G,rkbkrTf.s8P^/3?Tt$0pT4Rp
-,&',9RbtlH8G265Ih?VkorD/tro)nLG=$Im9Q.j/RThUj-fhjDRP*hc)%VS^UP-%GV5kn1^*-
-O4#ZH2N8oaLHnc:#LM,ge!@d];a8ZXYUQB>o=-uHmbq&u&_1?Yi)(G7jn1%d8uluY_e:-gATg
-)CBNB!J\0eE]1:`_X\Up/Xq@4(fd^8PC9RDMpEJ_fr;VLl-j=24oXHjri!hQ!2sl2LR%p4.je
-Q_]b)tIg^#q+)4YqkMq1pgFH]o7Q[e%r_&:`]0M=92@5l$E`E\]kWX4sQND_.AA1<&3j690\8
-^$\V%!Q2b/\Lg>>aUAb_+c2^$*mE*R"<'9WPtd8Mm(*dgWCIgiJnq[2/1jZ[5/jrARAKW]&6+
-9O`;!?3D@t*i<1rC2<V>_@fC/ak[E#('A9%cn0-A^BR+k$6Q/WHjcK)&J$L:g)a\i0bRA,X$9
-ha/5r&@d7FsJ,6@20%j:*<j7hlIEp:iuZVuGGXpVsjT>7;6=aV.5k*ml@pg'sdPE8sqddinT5
-FmdpFi,6Ymc+/-Pm088@#.;41kZ<_`]d:5_hW(HjoGc9&bb,Ae8O9DjS<^mp8S+o@Bk@n"-%l
-d0V?)"jL//kVu?WrJq:nm%_C@&IO.:g;"W.YH,c"dD,lB*k_6%q+VnEYds?WXJ%_?&=s%Tpj#
-+<LbldNMp,SX`Rp9q09-J"Z'iPl1P;1dL-2pGrZ.NmC4;X4-d>eeB-*meD]Zr5X?+_o@U$F/N
-N6Di:-J7)hc:-l#U?%l-p*R3)_U?&c%<O%/G+EK4[1cVK]c(H^E%++$iR2;7:%5BWD4)KadIV
-;"qib!>]:#bb9._4Je^u:C=[[?)FWEo;Eq5$#Z>;2VBiVdt@%r>u&Q00,oC,VBWm&(rAm&,d%
-I317mo[knd[nF_-.Tq^,X*g6olW2/;]PEie<T_rUAo/si=2RNl7g8WS8`W?YoIP-*6i*URlD*
-\CUt435C4*GErf*76X:E3nOqsG+%"E#HG/"5fb1]^*^N.DEbSIGMmEl6l5N/7dehA0M/$$0Ei
-R,\?`Zl=Ml;V']i/;SD1GV;.30edp;8H491CS#Zlcp"D;`7oWQp+tRWY-T]!bA!+gD6;6oum0
-Tc75,kV:.YF]urT'J)Rml$D#rK3>>D260uPadI0`'1]d&ioqO5'>I#boA%eU>u*AQIq1PU)^-
-YO1N?<g0lH(dYkTh*C!;6'+&S@cL<ZFud.3H>,oT$neWUA&?aaX@kKL@R-]3Y`2".etl1Ed6!
-s[D)p8@TH*YllBNK?:aC9G,jM+B^3Z0u-lS!Kr!#,F:O[C5=2l;D^Oe73o+jBgW?,%(-mp7aR
-(Rfg4.HB;LFTg%:hFGP4BO0s\8enm`XV+.^\^PV&[jjJ8$SEr@lN#2p:8&Pr:1@2DK09]5g`S
-NcpJKDnQPrF4B(E4H0N]Y_*BM(`U>-G:/kG6mXI,d5@KHp)2ETB^3.Ut!fE#k"CGUf_lg<Gn$
-[:_dh-dPiQ5KUB&:Fc+O(IB?mJgPaC8_8ck`'3:pFZMs@&UUm#D>ND]!?EVspk`_\?FZ5OYF9
-UTb$p3d^8N`]W[ap";&)@pVmTo5RcHIN8e%Ql33np1W`'&6(#=QlWn1mXpCI^__uo4."A_ij"
-eGZL_E)Nb-e1'kYr]1s[Q&Jb9U&"AClLc(Qhf&_QL+%gBrtqpPb\iLd`#`+Fim=5`1n+g"OS;
-I;\lcX`KRY%%lq$ISY7cJ3-ADG%QZE$ZHe]$WtI;h[a'2D\TRcRR^%cfo0XmfrF#R3m$4s/80
-pfZr_f!=<6nasNZ70(5g^6n9Z*OO:ef[I9J`(eTak<l=;-7R20mXt?0W\h[d^_sMH#%*SG1BJ
-Fd1/]i`SsoZZlIA;lJ+R7`cFFY:nD:[lT/;JoBK7`RPU+G,Btu4o2&gN`.+P@F`?JkeX)a'oK
-Xm$;U`c4aRs`jN<pp6FHAN7HYW#UYV$![8/&kcuBSpeRg*7c1qET-uF7p'CE2<q!,579$-<KP
-@0ES=F:SG+q>/jYH@I4M?G_5r,]Q#VN![>p7<LE!l<3`fQRfS7?a-[kl^LQn4,G'X3G,tC0GX
-gTX>Dag8EL;e'CpqCX3dEDjWF#GX6@!gHbdr>Z/m?d6b1Fl`6cIgic_Ur+t>:'sfY<J(5dChc
-2Hh1"RgAHa_QfN>c#39`(X2$O+La<JugLW&C%,S;u6;nVuKXlMSBJ;J;,;Qb9PU7#MgHVJbYm
-96Dl@FQ6RW>h$omnFZ=SS0<5T0nCM=?U9qa9dP+35_!Jt/1Qh/r]Q,.0A8K4UTAW!'a'Ac15h
-IlTBEPG1W;#0@Y(+,GW3jj,tV$7I8Ye\EFC@NPquiD^F^aHf$`#2ai[+^?`$+WgZMdteVcm+M
-kBCiGuI![QLNrc)Bqq[Zq//lY@!LID\UpO`SSbASchb98l1UVb)o,"+Uq8R7iW77:Bk^f'C+#
-WDD_:b!M-nJq5[\q&q]pf+,U]!]ncBZ'&-d@djMfE[)S2Z%:WEChjGt`3W)eJ'NLKsgNIZk9:1
-%qT7G?mLHWNEE_%[*7ofuC,n<AT12l7dW8C4#33Z5="osu+806p[";KTJX/T1Te-ke8VZs5SE
-&L@pp!?[m,+Zh1,e-tX(R44mU=P]6WO3=53-J31`,C7nr$I[B$#/XP3c!rdD8\*(GVbQ2b2q<
-T7;526?@Sr&HdJV`mk5D6]pqc`Le_jgKI1M]Tu-oYnnT+X3MXQkpYL$7au$#sD\d,F)NlMlXj
-:71dTuI0:pMWe<5Lq^U-q/;8_E8M6L>Gq$<\R3bgM=b-XY@0q]C2Xg*TNHR\g_/[R&JR=QOmC
-+&TnuEaN+oRp::dU#rXZ8XFLt$=Crml[Vo4U.SbR?<l*dDYkt\1U;H?IBpEUYmn9]QSkdg3\.
-RER\u%T<IPLiJ,:@HO#D4P9Z;dUn'W6SdT//g3g$<l4KKhkS&+*bfB5E4<OGni*aoW=:CN'@H
-.DTjaX7F8)"q?oD-@HZD"`9aiptf?ja*"A$_\I7.[RX*KoiYS\rjgpl(3Mk9;/5q0(duC9?g/
-_^0d#M*K6>0D.9uf)'?Aa0&ND9V9s:L[%coj>PMZ!&2*?NW>q.8K5Qmpd[V3rM8D4Y1=1<cnT
-XT!8q<9)l2<A7Z#ahVcZG]noD-QirDIs81"`r@$M,+794Q8mSRNZch&7Vsaq]5F3q;6!TcuN$
-j]k=Y6>e2Ce5X=d4KDMmPjI+\)X,"0@NPq<'O=bcB&WrL>n\A'p&te.Kbl'D]eK+QjEat36p6
-D<;5^+GIDFhnf:,Z%0K7o#&V]."NEE+*-%7ZI6;E9u?#MVT6&qtP@25E`S$N0$\tgsD2cSe&$
-;HT3iVm(cbT9?3O/h&Srn6pGT+`McSSF.]OSqLVFR<OuIU^=K=U%*q$s]lp^om>Y;i0pq`a`i
-r;`6%eG3G_=!X^&M?DBJ3/=qG83>c,K[`dB+k[P4:-8P%D2`"94egCRWn!CAgBH<^G8aN+'ge
-WUB_?L#H7),!_Ug$o=f1;BUp;`E9rb^,,bJ[`b.62E"IVI?&Q)PGcmnd^:k5Kt)VjHE,YE8uM
-9W&Y\ed<4%`)UBKk"4$mI26lo#+,^99QnQo-ll5'Duj.9S-?30nB>8G&(Rf[JDe.V;&SnNQ:_
-Tf\kL'CjX^75R5P?c.NF;P.VD)E2SX8qcXrT2_pFC15P[^uCpWhf3`U;Gar7(Gl/7;0A2MJT*
-e-!9[>dK'3_k9mj!#$2ARiWW!89gFqX*qB6d4"7>_sZ\^k3!DUeL%)&M#2'P<.3*damnc,C=#
-InFKc7EL$j[BEh0Tn.+.1N<YWUdk6F:SA`44>:"fXXh#!p:#[i!M=W%J!L@C3Wo2FMa+mA;$a
-DjITD:Rh?`*&4aC4'GO*^>7EVu5LChRr_WNjpfo]ueXdafU2q6"E"`T2I]B735'25*!oSC2dM
-dCJ.aIX.>fmIEB`9DR2,/SU_L!c#hFSebVC[nMpB(qL;jd%.M<K,-X-crMR(RT3ZRQF4>_NQ>
-.@`]`=^^_!_g^!j'5e':L$h!&#=89.T3RP%h,SAeY(_$UW.naLdsBQC<!e-l5%;$?1dQ\@URd
-DKBu&b^(Tn^_BJO\NsF5)GnZ_ca]"7:3P?*RG=;UAF!Fl>f#i6kfXol^5gnSa*Rl8Gh(uX,8B
-*!<Y3c1hPiZ6:`9hj&DgQ-/1jqh!-"0ocf/Gk\k0<cQC[nk`8*2qL"9[L!ZEq;g$9&8Z1D(nN
-G>^h(l?`r#3_h%VrG$T]NtaGuOZBVd(,l^<#4>"4tnrB-0ai=#$T\oq:LtbEfJ+apJ7+"g=(r
-X6P]I3[u<-[+H>O;IXSG3jI?'mM:ZE:d^B4`dt?K\#/\+6mX*U:ZorB1i+cG_3lLPYt=SgTNS
-OZs/PN/9LuMt@oK<\"l5h55b_)iB6"ul&_R7;X>j)W#AN?POBKu]T5@ZQ<X6f>ef;L>$D\2'm
-U]\1]bCu,:Nn!N3XDD#dalX,`r'SDAjUVK$aDeaNBqE(Q7F/p7FK4jN^60GHDW_oFIT>[,fdD
-fJ``*,5%^NGTkl-UOnPSP>t:\4F%#\do,t*rW/R<+Htf,Q,??D.NC7iGH.()g"W_n)Ai%[((8
-5UgoQ$'e$9fk!I?;DQQ`at?piiDQ&3I@Yd\7?,SK_$cG/tPV\d;r"mk7^"kP>Y)n%'j#M'<kO
-;1r4D>"q%e12mnc`+Jd1Ao*0pFRQWOdG)aQU6-n9Z*UfW1;lY>E?JF@Vp5pNj%*`L<O3]=Gl5
-d"JYl'G1Xg5"^=E"Mqu[O=cYU.V=GjA`h"a:2V^'2[+2F_$endS.IT>Hu[4!).@'!P,NInDOK
-C$19n9(U9&"&NpqE2H[@Bb!Ri%]m7?ogfV^&fcS$$'NNhCilTg=ZaOVBW/^j<QX+8*Vk)Y><1
-,hJ+77J2P:d4&T=RYB8q62"clO_["`mS8gI#JY<kN,U$Q4=_PkD;Du2jF2b:hQjA9S0)\dOs#
-g&*pE*F&Re62?HDnI,.qAh\bSgY?@`OnAC(7*Y6Qn^u;M65B0KlM9%rl:;^1R)&&l;&FBhlZW
-N#N<;qem077e'sgN&77m=E1/"a;k9bWPNq5PX`<u31(<`H^L6CXH5qq*^RT$QsIp=61>W?LQQ
-$\B$-tO6s_L"=37:I.U4HPkl[HS/8Ot6X3HpJp`(Y!SYj!'VFV_5CX0'_i3GaKoX7/6Q;f:6q
-,"5M"=(K!_t"!$2.fHZI*$@d=$glrL#n].X-*1EYu*3ID8?`2b7Y(.Hbf>'P)L.4SDnBrYrTU
-M?ELo@1P@?'>b123_[m\iGo#OV@gQi1;nl$e\"<n]]HVGKgO4XH>dQnQqkp+a2d*JuR`pZ,!D
-\>eD>%&1(T5AYF/60\GX`8?@&O]T*$f2lD0Q+i.2mc-O;I.O)aar"j?2sUM`Qo-:?AQ/aA"*W
-0SiFQpK+"M\6e,h;PHM!#Da-#dL!p),p`5>pgl,ug39I&/ttc\[]>8QZ_SLM5I'H875tm.SB[
--I/QPO>V19.flPV3KB\[q?QhJVQjt`4K$$!L9VT,2c8$2q1g4p="#oc<Q5gc3K=GFG#e%FE7U
-9lhO8B$s<A8rGA+aHcs]-k9bUfO-e<ZI-rV8tsE.l'%e%>;B`alQ]D)pqfTPKPJ5UGn[P'!k)
-A2\S+HK"EOi(,)Z%]h[E&b/kUY&^@5;U7p8E[OCd:jCgJ<GK>q8Q!4F<nq[_HiVm*9M95eWnn
-M460[Jh.Z]/lTCM9uP\Yr9F)`pn_<qYjeqt1@?)<#2m3:ruIrJu1&W(/Oq\l&F#:7<Q@bD8Bj
-dOq(BF@iVtX2lW':j[iejSEmQ@H5Sn7ddE]WrU]N!NOXJ+l\Q=9"@PARkhR6A5sf;QJbA^=F-
-?^>^Hc0KmAjCH%6RY266B@i(m0,KY:93C@f[aGGSE[Or26mP]]t^d'9`X)s>`^;9UbamZ6a*g
-2pTS`2n$Bgd^?:1G6D;ghkH/6'j%64j3.+!5ArPLT"sA;A"3Xhs9s(KUrICj[])nJg\tZPZ4-
-1e(bW%DPgYg*/Yh>#?:<5M40<Z\Mm+-IFE#Ahk8nfRa*[_hAM?:M`=Sb1)L7#F9^1/AR'VdeH
-0hLdmg7B1(]"KA$s*A\6+6_/N^!eL(P:\ifZ_Yca\">nRh(m!I?X]0P*^k[?q]W#=p<[(amPX
-,:SunMpWqoHfB*b70*$<:U!P;.]hbunjOoh+F94>M??S@>c*r;B/8;'`DY0R(F.>]VD[hX=`6
-TC!1chX\4/^fEueA"d@-Ar[)Gmep9W=ijJ)YGp`i\VLc/tfG7iXtS!X-%oZ?RB<[^>IM/<N?;
-!Nk@VG3[Uoq7W1QBjq1&f\5c)WDVglIZqn,Zr^t\[:PnI#[Ot6=^G%1sP3CEW4U'Y,^$?.b/o
-HD1Q_TC5`gjF!FFu"DH/^95DeQ3iH4$:ne#fg@=imT,lh.FW?J"kj`fkoVA7%D*LlH3d]fEU,
-rg"W4-PQ:#L[I"'ou4T-`Z3M:.SS$Jp7`2f8W:D$I>C2s:s`nr6@(S&Db;?"7Z=0s[0Lbr.n/
-)h+P:W*XU`bc0srBS.nM*=E2!N>MXMFrQM"IX6AX?+61Z4!-[*<]tmOI;bR1JE;SEij:CSNLj
-h5&Ta#Scnc?30SmG8=aECNlTIdRSU5d^R'XG\'@drJW/Cr,9q6a^LC,!#m)Z4H[A)YT[*dChP
-a:uC&]Vj^@7H!(>gDW=8igh^1o+%PX,4sQLpg^f]G["/VoL.sRs5.WfPP-+q0;hI[#Ncf:-6b
-R(pWbA-),JcZ4b!'4,)VMRnIU"5l6*G($G%TRR&s@c;I;]l9s/7c91+>79"@$Q^TsmF$r!k7p
-AC<CuYr3GlY6`0@!*<A%gV@E9#(3n`qM[_eH^gNupICZu`=Ze)K04T,aKL/o.BAR`0o1(-eFn
-I-`\(d3hqYLUS8NH%=iI4W83bgRq._*^cZ+mMY,"qAcV2A]\V^Uk2*9%fBQ78O@AlKZ;"M[N)
-i`*g%>pqCX%@">a)\amd`g<3<ilaKLSs^dcSCY&E-ddlOm#Ec%%u-8(?r"^q72a%t.#:H^aKM
-BLZXf)uYX83qJ]V9J0_kUmU&s)na4hV[<;$UO#I6Du5oNMmF/@XU38Z.;I9TE_Bi2?M_mO*(D
-RE-@B9V.N*gd=Hs[>.,[1`JK(=aPOblD^)W5PhT5iF4IBj4C2fP)%l//maM7hc$r2g9[D0Ub0
-nFTKW$hJ>FD)ID'l!K_1?'-&%/+j?ifLZ>^[7W%IUjB#AO\X+ketgraLfBi.@>23V#mu-'j&p
-aEUNkEHt7SCE>n(6di`rW.j9"\M=%T8A7DmK^`?RF_g,.eGf"O<I[Nb6h.^^>;16P>;0^@8JR
-@k1ho@b;0<:/'GnG#c!tR>V?Zd!U3G`jQSN'(">ouK%V5et^P?d-EN%aem5$NqZ:r`L2_u`5a
-g\Bj/Qsln@M+;l8ZlT:i1b>KUl5I7+;DC[9TGg3M*81Re@nuG#Ke1h=5dS?!TqII#rlGD1I0c
-,dL4b>`4'.VH=Z39HtR%K2ArQ6CRGCW#^,bCeL-B7!`Fk+c7E=r0*4ltr)-nG;9_I8q>UBgV*
-\'&V=uJ>no7Xc+YB#*i9OM08.=Q:l&tYBX^rj6Qk(0h(:YC+4,mCn^b0k+4$fJmm=\sC3n8[f
-J3IgPrEb]bOdK%J9Ot\J31(>pNI\VDP*Vm0/*`I6[%p?aJSg?Z:)e3.\APgF_=\\ebX`/YB4(
-Il7LSHYT`p(H.A8oJjh8o;@[eWAQ1h>g?ATM`SP:7SM)CSICp$+V&W3hPQq"bFE2$dBhC6.M0
-m'<iHd.@k6H#La*=9?6HsUL1W*'_pT@1-PrT.XCr!;jjo)*g`p&slne;37&9.!0-e]I'&f$'F
-Qho<qee%"[7Tcui#Y[,'a:f!]$BG&E4lD)o.GBbB[``o=Xl)g$<3+Jr9@#DSfZX\>F],BVdD.
-:u'7"WESd[sCj+rG%lf:fN:aE)U$(J??4U`XZ,-+TR,pIOf`#N1ir6K-2O&fE)C7kUKJ9^@f/
-U#BVkjdg=Ti`2P;s5[qd)G4`r&cB>QbimeM_sRQ(>G=d6pAS<cf^<FKC!2C7gX"6a7JsbCc6;
-EV$Ji5H9Z/+)aTQJMF>eKdRa<MW2;#pKj.9:&.^<;@&j+s)On.5OEZ0Ij3OfGi8"&gu%M",_7
-kVsZ4;;9P.^bs;%Wu%aHOIZP@bm.,,2FjqCn$@E[n&fC2Q`:*nNAa^04#\*@4:I<Mh41hoLl]
-YOEN,O8QO;;6[?478/"?l*$Y6X1T3u!Is1Nr*+uS!R3>>]=B5/*'CDkr4Ii[!LT"X[WI#QgUL
-&eZj:RJQEMH[e99Rqd_F8TE].:*#_KHV.kZ+QNs!hX[W6JDk>$:g0hG[_+*c:Y?JQU@[6^O+m
-$<\tLD4Yh[ACfGq`o<Y3WRfB7"bEoJctop<X[[?$kNZMV>t:5CKAgu3JNMM3N9asAK9kG0i=*
-O^MqEaR'-hhaW.Ad^^,qFuB5$>(j6[U^]=)*i[aQT;0n)#`HY1Ti:$d]d;;N$7/\EC.R,L=A[
-.pJ9;,hmm`?20c"EjF@h(o];JCO\<BnJq+7+c)j5T\qQm8i4hEM=ZZ)r!oH)^e0<B;:2NT;7C
-d]An:Lor-NAY2Ub;39>'Q&7*4G5?I-P3cCr'K;,+Sk.!3Kj_%qK;Q#_o-p'm-20+%(gNU<u4T
-QmPb,'%0^>o7A(0ZpnSWM@pm-V>tGJ@\&eG388H03Wq"#akl1M^srmVH$OV]i)1f!/l4:UZZ1
-'r`/B\48]?gZdM^)]:j55b.:c/DW3G*TG^G(1C[un$4[7/f'pn)7nIh@eMWeS&Q!d)^61PXbp
-J<9Au/1,AL@cJJ<6i4A>"4K^tI$C:e$JSg5<j#!?<QLt5g9Q);Ss4#<4DWF<]</oLO$qI1(s%
-!A'7?TrD1&$d,nTf<jNFEWpPKU!Z]=(N@*c_:W(_iUW[M3-JekUQm.8[*V7chfPZa1&Os$-OV
-'QT31J7odk`<J`6WWFaMDj@N^U!+q`a$@Ana/MZ]BKSD*B:+L;JDgm[=5uUtbhY^(b?f=o&c"
-4J]'@lue&ZXC9Pr=3ES3V,/eH%UOp\QRiZVS7q!IZlk3Hjm>UEWD.Gd6hQ%2#SlFa*@Jc^6'L
-:M2aT8#;`p.D9Pf][0,)(EidQSgSaUfh`K#F/uIH?m>(hIPNA"pU&F$<P8gfV4pY92qI(Lr.k
-\NAr#q`,b:='YF]7M*Z:hL^nj+U[SJD-D=Aaa<Lsk,n/7rD&Cnr:(2WJFL36>p?d%':LMC8\=
-EtLf]!EP5k@,jdU[?naL>JRCH5Bq8LdUrCCsX+F'5CH@Fp=9ecVE*ZCa]`P>/e?gZ>5&DhW-G
-)qr$CQdABrr!E%5OamG<n?Ln1>R$D4SoTmm'H[dZuc"/'A0N,;k!*?&.k9PYob!RedM8QjO-8
-"O7!N)XD@>7Jp!jo*i?'dl^3I-RHKJ[dUKs!iMlD`2CSTmieG&I=K<FT]/XkXpf#]nL[G<>EG
-'KAHAE5p:U\5e<XWLRs*i[8j\@feR(PnFId:PGmAl?)O]9m%i0k9U1bi9.p\,YLC4E[cC76Wi
-2tUglZYYbd7^7qSk=SH5P,.huWIOWVfu#a]Qk:P(Fq)[h([lcKN$<raV].bPc4Dp`0%\08ng,
-DonYhO/Z)#@MkZCJ0=0PD\90EGO9J7um1i'&tn<C=Ap*<>R2iqVhA70(+!m.TZ:"<gDBV->Va
-\`7`1e$^q(5A;t\mAQ?ph/Ws_PeMA_C[E>>$!s6pA+9C*-/cNOD7.,@LK"ofPT#t$--Qtq5K0
-cu6[0\G]]g_o`!$,A)di&]f&8g\kR'4>68DT$De2\#!@8toi"JH=27'=TcNW\p6C)r$S8p>B&
-Q*BP"A^Of3f3N#0^Wlto)r`K<j)Wed]\Nig*$#[fjFEg9(@`c=V:*)KCb"goY*DXgmUrlS_ce
-cUc</)iasi]WFT8P,FI[\UUjicF3ju$!B"o*e8f0j_-_XM/!1"1p"X:>+W==Xj.E6-We'VZs%
-bKXJ.tE6=4e+3u@LYY1"6U8;Gk1hW>_s*P\76>M"ueU9E<G%,SZW.8k0=mrOnlg<qGa!8+9(?
-5Zb6q2Gj,!,Zh#P'UkpcKS/L'q0n;Zr?EKFD5!iO:R]!0#J(6287o(%T^b+r/9Qd[\Bn#-G'n
-.b2)Iq<X3YWXb?3EK$""d%jq@_6[Ia]^>M!/-$!Ri#U\sTQ2#nuG:&dkuBI+`^4$;4KcYpXoQ
-QdOmh'7rWH7VK.j=dr2pM!lU1`eADPK4@EM=\W6p`'9Yh\n9sj(U5gO$C@XFafA\3AnBaoEf$
-2hcfAF.(V00Nd1a=5Hd+#4ln=&+[DA@FB!\YMNT8S'[8HZ<fZktOliU@W>RG^\^BTe&>lAECY
-.Aqm_$H7F:lIr[-j3`K'i85S>.?C&o@1_g!@"gH(;g4pqTD&Wr$5;Y]D9),Y*!od_j3<@PU"I
-QN/@W@LTW'aVbJ:1nF*C!'ftTG$l;cdb/HWJ0EnGfa.4@uO=k\3r@=\Wj\-N*Y\r2RX7`VAe(
-%I/>*Y1iZ(%"JV+\1^UHQR09UA,#5##JFLVZd7-0,J\6O_MR&jm2Y-<<`$P"&Eh-FEGp'#<#M
-?1p#mD'g_O0r,4h`jFeu2a//*qo>'kQ&RjPWKnC\$egbMU*iR>XqTf!$FMgV&.>C_-4L!mXQ@
-M^lsHk^:<3\T86tr4,dm,U9^Y4-a6h)R@`HW"?CqF#3_W#Qo?c-?C-Sesj-X%Te,(f/M+.`e"
-(2pp?q=X0#MgIZ<RAXZgKr"$Y=!L<k>KUJU6RL^``+*q*+_=GA'u!4T)OZU4V.Du`kb5N^iZg
->Cm)4Fiel.X@*p:9b&a-#fe;I`D=dT[YXp;#pFh_PE^uU6E_jAe19+Pn+&ie([C0ttkr=SdU"
-#Hi8Br7bM4I$c(8HP:R\CtT<-Q%X0J#nO8#Eq"aML_5FMo1\LK%PQB6?[f2f9rW2n'c*%;3,1
-8TJI-Bc+chMpK7jfLd?36CZOAiWFNt^@s<VD[9_Vd-DC8C&Am9rg]e?0]Ii[I0\"@AoP-YaR+
-8`j-<f"/Rcs(/j^Fq1#a8f-hV5Z6$hrb@_)DVDs!uAUX;:**VXo#d1Q.0a6sZ4T_e3Rh;.b7o
-?1iD3Hh2PRh%D'<X6Li[F\qgV+d=q/%/nuSD$;W+sDkHqu_&ujIRXq%F%3DL_/Y@CX7I?nnNC
-8$otf'8DW8CPJN&-e4!mX2tDmgr?J-Ii\2"kg&=YWksZmuX!P[A`iT[T9<:1tEQ`o/(/(VUrK
-MK]BZZFrB7u7\RSG1\f8@V`Aa(R^`Iup.)E%5YH\AUJ9)!f=LqeUuouTqIX`jFdWHR]sWH9\8
-2>(\n!/D4DFUV%#SNp`pD%qJGS6_(U3-)$VMNnT)`tuW\Q0?/`D2cCon237)B5,t/FPZb8P6Z
-`5lua.#Z_=XdPhC?/b^L#>#\%f=;V<lMdS+qs?EpRQEjkG4.jUhhR"E9m4.M&jkhL0LQ<ABLO
-qRe-0_Au)I;B+O!3#&J9BAcndCQD_2su\rrA[3q2hEcPA=>F'0_-dBis(uR)bf[%41mXUZ9'*
-(:r(L64l%!#@b6YZFr[&0SM^JaNRmEs#;SHVhe7!E^/Ro2+PJYS-cdNm^7]bF[e[ZJ(pSjH1$
-;@=jaVu[kIDr\JO=c5fQBd"#F?L:f:Q8Q[?uat=?\Cf%=QL'cs1M$"a2+D.$@7ElF;IF(2<2+
-N(AJ6b9I2:37Gg_o&6,'+7=Z$>NUUl=aAH2UI]T'eEc\27cmD#7W:a7+2aj-R;>^O6Y0'$C%!
-?5c'kIsSue!uK$(dPWjO"h1`Z3E`3de&bnJ%P.5HC>]g:g&S>c+`k/E!H#F'EF8[hQ]0Wi.IR
-6<:L#h`TAhE'2W<6.XSl@6e#k!@$IKTt,`803ZS*-DFf\+OW,MhSNbn'nBWGBt3L9Z]<f4h-0
-7>3k^dg=P4Jq(stT4UlD2&hbuWLTfK!B-_Cn;$,+@3GZp$`//6o`mE,?k,\boFQpL;;E-J@06
-@D(au1I69AAFZ!LA,t$Z+06=42>UGe'>*?-1d:,>)d.d.#,uCD+aug_[2Q5`LZRW47o@!s8Lm
-(<upT0T%-)XAcWGJtXK/!^KK>p=n!ZG<VA$9T6&?]bEnsq66.GiBN6=N0#=IU*GTN0HNtA^lc
-4hOO",.MKgJk[>7"C&6L$>&0I\BE:bHdE9Q%a*FC@HIK)@B0e'Rni/eGK0#FI*CH9WujT\ge`
-#rkMNDs>1F!0EuJ1qm(MGe8(f=[T_SA%Mp&7)bF=i3Bic^-RPe9+k'":f.='inZa6&mG"%C;5
-SEUtRnnu*;5I`5j21k.L&G!*WS*j%V-/&qW!d6p-,8@[="@12&p3Ao2$9%YV1<#l[oT"knG':
-[Yk\GeP<dE!(BOqDqsW0\$^HW"Npoo,3_f^9M5Kq@%JZB=p;TPpn')&(3FaP$5=#G6^El%nsU
-\fm2T"FXdDFdiB]7D;A`XTh<ejoL!*_ScHL%(g;3)9g6Gb&C!)h]D*GK`]MA0k<-[2=#?_,ml
-'L<EBg^p9bm8os6M65*:UDhtT:LK>jqF)'l"eoX*T%;_D3)D*33E8$b#_cd9D+BR[b-;333b;A
-%'n4U(jE"BpBOJlS9d\Q&J9Piq+[=)6dC!t>)_T/j0-!$W(^.fMq8pMHL[L6j%?<KGj_n1tb#
-AfK_cCqVK6Fjf`^dRr^B].*;F5l94Q1kt_ED?ioV$m\oc$6uG[j4-1B7,K8\)dR_7[Rq`_@7.
-uLb6K2=-lPHh9L(12aPF!$2n(]K3+c8d4UoIrD(,>!W&&n8S;"2H%p,in5$GcUD%tN!1k%EKm
-#3nD`*^9o?g>#uR7^]eT4P+SKYV'7S(2'reo3+Mg]ROFLsRJ+bnG7Ao0F5'6lokHS)gd6WfhD
-N,,B,jOY_OR!LIMm[d)t`knQJ_d`]>.+=\#'#[k-S!e;%CXHs*R'p7OC@2!++WgJk%!5uCc@_
-+TPYa7j9oSMIAEL[YefKa!8F"UJ1jY;/rfp%M]q5Y-oU>EfXiK=j3"sq]*)]Qls'Gti1qtm56
-/7]OdLu>&K)dI]K?.R.Kf=,gp0Bu*HY3'n%K4qp%XcVl:K8@]c-2a0r\DX/dMgk^`]d1dZUh9
-mn<XHEF?PU<Jqf&rp.MY6F6$lZ9(``H<5\-"cQ;>Y%2r'6]CV5OqU?EaD5A7Y=GJ`rB.;seKZ
-SJeKM`^Op0^(cR=?N3_WlZ'\?V[[-mDIt,&K$V,R*_fIfNe.O/PG(iMNKq`KM/`4LlVG86*#H
-e>0!f.IZ<;99/9p4(^ITr`eQFE0HkNhd"+i4n@eE4CkEJ`I1CH6<X7!NKu0i@!5M+HS'i;068
-<9A'HVIKC)oXp))*Ul%`KA3e;X*l,g,mA[-fR4^nl^SW)D#/]n<UmVemucN61D23k#qX33P]1
-o_D.4TueZtmFRojXPu0rMBFrgcD`1RqruTPn*QHNbOS?CfK8gnLOOnLkO%r!lE9B%gB_c;'GI
-T#r)08J\TF%e825ro!"^aWI5C?-c&"h<V1[RqrG!Za]%iO='5l96:s<%7\YZ%';HR^6%<O>g^
-=*0TW&R:a.]-?N.,AhMA-AX4.XZ.p"%s0!Bq)\+=4k[ISN#UmB2m+9'UMK_dHLHKrp!>%_\iF
-T#S'Aj`"&f9WBCO$r;,h&,dko\KD:.E3]M+Bg!:kidflpE>Wl&POF7nb=,[F%-kNXnELH].Q5
-GBbi?MTEnpHY04k.EO5e\>glpPM;]ehE*fJUpc@C]-qV$>01<\3nd0*4]\BUsi2E>$^R+sE2-
->PW*?k`]].AXu\ZDlMS^I>0W1UPPB`=uA1D&rUV(!"OOoJ#PI-JfG5p^Ic8;C$sZ1Xq$&!kB$
-(h0V&9(UOE30=u6S]0=nMZDg@_GMO<kXd(hfVi<R>AV?XIAL\%QH"V&u3@U+_l-e>?@L&Sk37
-H3!AVZ7-)P4i0E$X*KV>`#t-Y^'iJ>QqWI8?M())bufEd%*scGH3QV4!IkJ$;ol#nbsoq6"Lr
-5V<n(;:%.3h[HC$f;0mWf+%DhTFj.L0p)jr*-'jc)j(e]7ku-J<OnfWAJ+WIG87RnsXp;HN4W
-%T:UoF\]`\#X'D6j>e;UNFnE&$im!k;$J$$:XukD%WqUK`jnC]_Ji163!Ufa%.r4!;/\^mo*3,
-%bp#_O$sVq,%.djZo5T"^f<MJDY-qmFV^[(15:LD<n0%8N.3@43/7de<'%E1^tcH2H>j[*c*l
-I>IhdV<J6n3(a(EfqR8fCj'OK95PIgE8*S-84;SPXYkXEm@u:aalL(I4@bZj4Xn=8"p2oJ6V6
-d9*1hJal.1tGKc_2/aZhML0</0B"$o<q;gWo'KaVD7,L&`!1*d[a!O+;Mf67X\2?61'1Q>VN'
-`A*%OT%=gL%W73;kp<,'NQ5%2@U^^T[+JD17E+uX+roP,:T'g*^ACPKrA8isN@(A6S5@'b%P0
-6APBf7P/U7@Oc8N-nMu?58jdV"WE2-N([VLl1UM:$PArW[B3C:eMgVSC*"lqHO@c%e'i7"8\d
-?KG\&Tqqd,=RIk?R=pW)@YWlkJrW@*4ABmD[K7QS.s8sqif2R$(o)K-6rSJ1=Wq&,j<tbI&Q*
-(]:bRZ;mIm>at6<X<dS11!NaPPk7hSOR;sj^),aCO\MPPX=T)'43:!lt/K,8^R[>A/[O4MrZg
-!9ZXntj$?rgE=NJ-Vco\*emi,d+1h=:#F&$U2Qg?otIqbHXeg%4tj1B':G]f8Aki:5YhMl.9e
-#>F;0g(3;[Bg#\&7IU\EjKS$jR+@5@7S#fa#a7ReIbJs0`4]1-`/8<b`FZ9T.'mtC'TNX8,7`
-ee;=5-eW#N=[+!0N4HZWL\ic9NhI')79Y5@:PaT8>sDjWDqS4mNcnmOFb"%R+6B:HFa"T;r:W
-Lm38pW%WY9q8(T>fN?MO4K-<(DB6]Y=%_O"\('!*nst\Xg?S)VaDc7DJm\LBD%jG=nap?gY+s
-*7]13?5i6]]DfcT/D$27\'&2Y%C4Y"cQ,S`BFDl-a_`(bj!EBS`ds<65?QamPC.-4,*o`ggOA
-=ABm%VcD[-g><&EeS(.,e(]?JM0KR@_b1-MJD^U$u:HdWSh'aZ*'SW7<&EjcGiA@`bfT*?\\/
-SI/4uCirq^VD,Q?Y\qN;1^-B_Jr;+BjIdj,rd2pmBjYT(!-TnoppsR5;V*_jU;:s&eXL9\/2i
-u/WXT/T:PU:Y5T4-2nY/kc0>q%"Tufu@j,H\X[`?&@g[a9`%j7k=BEif:Y!*(H,p5Y;ijpIQ-
--F&_dB]JBF+@.:\;0k3%Gl(@+5sJrH'3%r,dGN_C];C=c2a`d%CXu4;qfOV[bW)$1G+HsS*5@
-C)oJ9D(N6R=P-MFM"?X2d[^fYMTs9u%RiY%*N>n4W=!,DE2,bn_Wgle0#uhtl6%.ML%7u!<8<
-Gej<8V!:HbZIP[kbnYHPll_7Sa%+)r/QJ5cOj0H/c+'")qu^j?^':Fbd=_f"DDN0o+NNAP2][
-;m[0cU.!P_=F,dmE2d`6PLP952kLZiOt\I#PcnO^TZpR-\ZE<*`@=.8XM@WPe*4Sc2Vf%KV+h
-&[,-am-lTDu;WD+\]^I5K:*pW^(/?U=?p7*LeI=#OO-kD[m@3Y"96TPeR%jWYDrbXtJLD/dRG
-qIKWEi?c>W/to?<K:Jn6A8(bM>^f4"aA"126^X<fWUEop=r@Zi8V)DFPeegl'/0$92!Nji"1E
-A(Rd;5-:RnoX3h;C-;V*.X!1)0C&LEB>M2$Sm,HSWh-ELoXQA6VSY+1j(jmS)U)?3>L:Rer/[
-m7iDXA235eSr6F.(`L<9ib,qiauVlH$%KS-R\Oe#)GtKE,o!1MeE?'Me!slXm]s=LH/?bLf@U
-9^J/!6kJWa<u%`"m<Xtj'$>^'I-hMV->aeLDFBTp)lWpgJt94Jh+,4EK&EADgdbn@4r^dsUpI
-iHclU;Y0O]s#2;0\.:tb8GW^S`0I^7+gMe5`U;)ZDu@qe#qc7o$lN`>jk\I,BSOKa$K1"P33_
-9;c7$#hR53I?8i'ic^[s(J"BgSMlU;eWVM#X2H9;<qn_RVPj[>(;PAfs_-Rc.4\d3-T%ok.^9
-V-?n6r^/D,5o,5DL$-KgS&D.h(p8'HL4tXtiqfTWk62fY3,`h?K-Uh1ENOfIqgXHJP@/8Gh55
-L`Q.,F-R=`IMA2`C&mRq`+G3X&*\V[oW\BtiJCs4\?jmA%$n^>XUQDT;p,$J/aBOnN71Iofto
-oL&5$_Z'Xc.FB0bFjM=B;)mpTJ<k3&KPi"q:j@%-f=1Gd*R;)I`!?P:IZP7D?ml30m'`j%<82
-ra'QdpQphm8B_F:\mCE:-'aB\Kn*DQ4JE=(SsG$qLXQ3OQ2C[8tpT@c=K)d_N;e[Welp8CG[j
-09gU7]P[1VVN%aC:dXM_,agA;NW<u'1J"Cnl>;956*''m9AV090#s#>^?G:dH!:n-1^g8#0>m
-s:mE!djX/EIpfY]_-j[^EH\NM^#A3A/U]I$%Cn4fbZ_)0BK^Ahtf0hH.<a'<3jLOA]M-(%Qn.
-?O&E<YV[Y*bG;b]5*E6oS0C(o9=*X`<FRFtFZVq5tZL0.e`oj.tOj9KK^.#4lR[,d(mT<n>Lo
-1_l,:=Ws?MrU+q1H$mU.r*W_I&onNF.K"kJ>il4`)(Ak>+:F1GDHWggSAJ]1mFcg9-&l:-ARI
-8)9!^lX[-*jT?U1+`Re4"@kmXP9a\6IiTQ]9$9F3=_7Wg6O@DRmNqU/Z`n`=)aD;WrllmJfI(
-7Tdt=EN[V1STkHZ1):<BRA8j$Y/1*L![qV-H0<T.J@I3.JAFfdR7&mL>D,;*`P-i7!a?GIW3O
-:lsH7`VdenI^6FNn"?noQCgo)[RObYT"ZH=r(1.sMQU#:6Q-OYP[e.*_Z%!?6.-KDa>#>Gs75
-rA`9NJS>\_jKFPuM8:0Fu]j.nESA\pIQ^VO*"V#EE#F!"@MB%obm01mXB^SHcO=+tp8mMQ@a)
-:_mDtd;4Q/G7^"(]utN4'T4X4iFErC4@]:O2@t<B_%RKZpD<`S1Z/d@W<?lIU8F,ndLBnHp+8
->KjX0!He5R/S=**s9S>NL:hnj)a;#3+[RCTM2ZeohW0/(7V(=)tCm!qI[e]>Y)CJ7[%UDqqn5
-]?7NRXtN6+kgJ`K(Xck<=LnLC9)L8HS[1B`]b#0#=]@@ZOE]Vih2P,E5qhh-VTrViNF.1\5#`
-fp]rb"N,4WCLIqZsEr#coDnsN(g%J;e^X@sZl!UG9^uR9_!_"jV<LIs[@$g)k"kH--CtGu<7E
-BG"TCM2]SasRn%2b!n"Q4%fVGJd.:C#GNDD"mYM4an`6Kh"]QCtQHja<n_e`c3G`O(.ariqB#
-YU&-4Dm#c_8n6Qt!K(b6Ctr*KX$<"$Or2KcSZqM-!Nl3R8so8<I4Tj6gd;:g[\@IM/]JrNEk3
-=(k*%d0`L)ncMbGosI8'D.esB&S>=<3K-SZ(kX>c$u*nqpGkHqC,7Et+/r,dk_CTj4Km6,ZVX
-O3R+`fV:)m7q\tMt<%JH,=[IU1J>jD?0C^>6$3[;NXQWPCZ;<6K,&dNYq%J_)KR=XXu[3RF'H
-5pAe8:4]**)W?Z_H&2p)PkMns3-&JB<6Q@<"75s:G;if-W>DCUM@WduJbPK;rM0%^I;fC?crX
-L[a(*r<=WnSE`(A"lW:9uiGK^]hBHeS2^7e/unaUE5ZJ$SZj>(oWar27_27,DB\=#h`X_<\%k
-kCr`+-qg7F"]]l=4p8AtAY+I%]3KCK2k:rDojFcIZ+"[gYVgVmr]%kO9bA(6T)maOrR9qi%n1
-ma<M+-`d)?TE+qpVfQ0lg`gb4O%j2m_J1@'8SiWT9@0OacX4+9ZDEqf?sJfe*+cnWt9=GQ]_h
-26P\QH5M"Tud^nBqg_tfW)K$l%,;qZfu\SmiLIV2>!Rf`6SG=%.LXRU*g:$X*G%PTBK7;2C%t
-6SOQADiD9mRUX/`"KX/cjMd_T;EF\,SNn&=8l,5btB/+%3L`S/fV_5>+k0CkA>*Ce7*09!VkN
-9?X-l_mHL'/jq7%B@A(G6GD^UZrk3KE>oU5TR.\5\(-[pnmbq?L,MLX6@WK]omY1L%^Y<Jp%8
-i#pX+CN_ih]EG^W8//G&4,dR7LO'Z'Ok:;;aYpV[dB)Lj83?$]FKmtV]/+Z+Q7<h_<R,imMoe
-Ak]^:ps;tXWr$.[Dem/C4;FK@qKf:j=t<f>:1Zcr4uOOQc)Ra>GS:I@<Y;I?pJqiol#H?)VS`
-hOUo"jQ\t;G<9909Oma_H]L>a7_j6?$jCN`"]rm1(<NE;[966BO<f--`FiH\?C4sgeqCUhU&`
-RZQ3qohWqfM,Z[`t\rain8qsT^,c7@^M.2N&LA"jd%2G=JS;2ttl8$0&7Gst)-RFq0boT%`l6
-H_OUDn"_XW/:j+0+mNI#-^U5k;aji5=(MP*_el9@8e<MVZJObP?$7It@(?F*u/tB^B]RrR>_'
-Z(>DFO5b!rO/RM!E88Ss>i5u_iI1k(h="-E%f++6>$)9nrTf-BE'9rVFG\CGEM<"X1KehROpG
-QnTNr/P7OJZ0MGU9U4k6VMlOa%fH_EH&Z6Z+oFJ,:FcPuX3q=L>,&#22f4]1r,3X[C]d;PKb$
-=aAp7=%.]i-`#g^"C$.h;-r%ODjsn21B_XpjTK[eU.1Z8+Mr^0:qUm2P9GEbcqS^)D?g>o>>t
-T;O??Hq49o?@08C<b<1=+\I*Ap1)u\^\hM?@JskHJb9aTc%qcB\8V064;s<Se0nEFRYo5m37P
-iPc[#i`>nOYqMZM%1i[_6#T$g9:Y-Un"+!LY@VLpU_UM@I5&85!'4S4<U;JsJ(^rq>c`YEd<b
-Sj'os5B#plrlHJ%T6u2_EN;LJgTU`]O'=0gdhc7K+[7$_GkuI+"aRY*/J@XF+ErU-=;*<CBXX
-'E$^r-.U4S4&n$hk/AEKhU3u>0g1u*o'.U%0Jp*f#sAoDM2GVd/_9>K<"X?p4[CYdd.7HZ*^W
-T+*Y;W()Ek+PC!?OFO^#A\Bh0tH`80:q#MNBdXB;uV"_8c,#BcfKnrT'A-*g=Poice!g<QhNZ
-[.dLQbK,:17ac?V@-[e_7^K&[c`S')44!5n4$3kD=&[E)bVl-gE=IAnHe0h1o/,;UY-+7MWWF
-t.rfjc^Di-6[pjB5V94t8MAo*T9M.fSBgmsg<icZ;nSSRA$?'."Eoh:(@.h'?f/>'pY=gO3p\
-H2@2TO:IKX8Y4rhoQ_K\'*KNj)dRBIa@a..ds$2+Ia/=,*2,6grTZD8Oh\VZr`kcjs,D6koW>
-SunY+:DNiR.=\Y!EIh*'H)4[l:$?p$Et.SRG1BL72(M&D['1">BR.&gnJZ1!pEISAm3N9n0OW
-2SbH=3Gl]3)T=?pm\lF27;=8'IY3PTBpe/:SA6>$+EM2PBp,jP^T^o%N<NK:Q6a`lNt,O./a!
-sdSspHR[XB*DkWl/Y7Y&Y01Kef+8KAN*>$u^r"M1sh^iCkbW@rsE?iBRC5)l.N&a%o78D97*A
-?s"f/#ZPjHXRei0SePPWQSb<KBs0a8;(m9ubP:eL(J0Ln=Op"PjTk,n8u&kO4I@T%iMt#oSl"
-C]$Xsq:[G5V#=K#IA[l7$?7HE%%"S)Z0$D*h^Y7u3Y`Q\Xe58kQ&%$=$R7XTi(fUNDil!+=l4
-lIIe!)%@O`eis645#X?;8U?!(n6%WGp0\QQ.<S/b$VO3hJG(+e&$TV?o99&0ADd$YWNOZU\3'
-87E'H9"D`WD6Ah;IA>,O6XiW%Nn&J^__/3cc<fA]lNkbql*lYl_?On]1$aH/Ed_*RT=+,RoV2
-75R/d2^/,7><];1`Vm1OA*+o:t_4!K9Y&$jbg@=^_$W7l=)2ftL3YqCj8JZ@ql,7bn+j^6&;g
-@_fd+W22;<[>B3)dO"\[nWdlL:4'p&V]"RP04]F`1OVbQFPgT<dn4[:\pcra48o.$),eF1Ota
-`ZTri0BAl'n-Q$DG@-N2hOfhX_-c+!E4R+IMY9">f5l3^Y*KDlrIE^"Vs2JP)oP^X5rP!86GM
-??q=,l,`C9_`/5.qbRdg<+It-+=8q.mfOQV]*Gr16$lc,oEeo4o/#UckN,o[E!?&j)6madYMD
-K+`cW9P!,lP2PjnLs%q;a-kEVr^c&QGqAZ%`^cHoSBe+G48/>hAq)qRP$M_b6+\%(O,k_>JTA
-BTO8SJQb3(ZK2Cq!iT9Bl@MoZrm\37+X)>\BSs%#4*iI'ETig6j@'=,FK_:s"=hMC<VDR&W]&
-;<j1iCXuq5QS?S?<1mj8;ZZc3q$J?Q8s(Vk^6V;/WmS=R@QCPD43j\\2=Io/NLdH,[^>O%/^M
-b1t4[Eh=OWbsN6:FH1bV(lnk\eVAL8oSqDjS[Loe!+!e^b"J/'GH(r+T<=4Yaa:W]]QHdNYis
-oZ?\lGe41)\+>ZBt2lGB+)Lq,`A,^Z2No>BhB?.\>d-UWt189Z]t04baXiN4ZNB's3/K_2Po#
-E:1p042GXs20/rK_XtY57q_W,sTMdOnbS23*k*Q.Z7&A@Ee7p`a8Y4Mrq-;2eMi8BOI8C#!^p
-f4d4Imj/ZVs(7h9&q[tKckM+0VjLYuQrtW81)!,^dP)@m"<?'N\)V^cLggO0C0K\himGo/q([
-+XY:5&l7h[(0SWN/Gpg7loBj$h;nF?kO#\Xin-m'DTO>518?cdPOO9T.h^/-jcBNsgFu@HqHK
-\pc/o.biF[XMnXm^dcShQVX3shtm2I!u\X2*V7<b+J/&a&;A_kh2Bki=bHO6e6f\j4;82TdHu
-jY>dCP!dck`=8$u4m;Ca!=VOVa_:8fM'+pUDHkp,PkJNTG5&o!.p*Y*_+7g=:"/G+Q5GVVu]$
-"[s,JBanq&/TTl`q]5k>2jJZ=s;!15&`Tn-\WLg$AXOt_bR$(@_N47?.WXJ,lYpEioJg./jf?
-omE$A%L-"[T*=g\,OWLZ$.;=f>S=LUZknEk`OjRqV$"<mj2uNG!qEh,4XS;REZ?4cCoolquW"
-qJhdlb.(/6%PtLc.Dd/jam"p7kWV:2>uY_j>Dl:Ys)"U'7_,)kdsp9>[T>)?g*qV@"O@O7Gdi
-a./9DSeiT(Bn6[,;]%jLfA@Vj@.Dd(b+]OqhX:AXi_LRi6I!l,^O?'5=Gc#5YS0e4e[i]db2G
-0O2tNBF]75sDg?d[>Vsf/]F^49nV`)end2$Z(02Q3P5hqQQa>_SamDA,!%cKa?_$s?%[DYdl:
-jKO;M_1#e1+`?BmA@'U.1.(/9m6B@nFZ8@r%uV.?#ju-oeE#/Noa'gIMXV3V[GN%qNtLumJKW
-Q^W"]Ci[XS+(2_NTdHFWOc!7[5Pl!$[F@>Vjl,F9`SdUbEF2jtRUZl35n,8hK:.7Y3p]KeaEq
-$PCj-0S.3::7tGNJ:KH<r%bb&AmA8LIPRGPgLR(T2F?ftG'?KQi/dE>,5$(JdH*rV,($\#7[h
-PIqqJ?#n?Ndek6Ef])FZf2(Nn?"3nue+DS1,Wsagf9-dO(p?_dmb4!\Ts&#b]43n:)#WFRj9k
-^UC46k$?(L93*WP$j^7MfR/8LGAM%(@G6t4^o:"s^(V#Q*-RHS2T+1*CL\UX^,K<=cgcupW("
-UZY<foA"shk6bG3j@p7<$a*uj+;XWa$.gj/gX/%]C"=TR/u$CZ9B[n+4!+EI,B"F@YtQ2TS2D
-0UI4GLo-p1_'?oPAS4'@XYCE&##Hf6qiU5#Y0$'$0BPVNV?'lsI!P&5)+m$[8_+P_$e!K-^Sh
-%mqX4A,]e_9Ws:<#I-I0*A$!e<341k#T74KBDRd&k,B+^74.;o"Vb&KFV7ri[(ee(f^NJ?em#
-4'@`qn)L<uI[LH4H&3?ImIUC'JP?,GQ(,Mh2eGm05jgc/X&OsAb_]]GmIbT':(u^Y]\h3Q.`&
-O@[!M=S=95U>W0Aip/>O+O=E&?1jc`jgX-VU)Wsd+f?]$\?P[R2gM@?m&>pkF`ML__XPL)+L5
-iRD&]L^T1m8E\W7)=8LZ[AeFdcdm_9.BBE/hWS^i0_tCDV@&T$hTX-k+=s(o]'?d'f7JA,QS\
-[r)3W6FF*Mq`S`*8M@"7e7nN/Jr)^\W<9XUmW%$$u;FD_k(8&i+h1P]LRg(hCpu$ssI6=,t8e
-4JdK$'^p))Ql>\aEO593+AthIRU0SF@jVhq^teA.5*+Qi2KY-8cYe"j4/o,V6g*Fk9c&bU1B"
-ef5lK6`Ub;(26ba<UBWh25LsG^e;Y1U3V0&BmPd?e\%<l?$]CToPJThVZ]*ho6X6C*`!rWYIQ
-7t<-jiO`]qeQr/!XRL7lu2/5-R.D_W*FE7f^4q.2Fu<\Ak9pBUYmS^4@D%hjO_*`R-MjE9o<.
-$N>,E,^Xe88%cBp6il,_S3!"s!EPb3E1dM]Ga,jK:VbSGs<bVhMcGaE.@t+Asra3?jW\;4_]J
-PVfG68ML$ahaTPLAN+c@m0iCS9p%"KShuRG=U.g!S8[rWP?ptA.oI$E^*TdRuGNpbWl-7-d-)
-YBoV[rk,.;Y9%pqe,srU;@$LmpE#_DFF^55lQ%E-MFM5Ci*=%Lt.@+\SZP"MF@N:#kKq+dEE7
-Ah`Z_B#Oe]$8h:_`1B-qpg?@H2Ec\)24_s06;ctXF:%ka8kj/W,L7;;>sFifVUmb.EDE(3SPR
-(#Vf>8`[>!0nV4&N"2SGWm!2E9f2I])(@eX,QaJ^4L"sbc/V*]T?MUm*jbWr#$W)P:fM($oQ(
-[.]U81C:Y-Tc76]3!H(*RI;t!3P]h?Au?IOIuS_<h3[?.b[!4j5tpt4B.7a>(kqFmk4cXl:72
-WFIRUP&**DNj+HuGI.?`TH-f7^TAE9Er#u,1d(Z7:,7(qur0n`UQ+Lr_M_:\;c-M.*3@F>E[Z
-KIgEE(8(;)^\X;jB[pWWG`#"9S(/arpgp:SC(qm\TSuY7qMJ^<;S`f]^<rb^E*2Q8MOk]P(6O
-[?'F*ngCO^/edE!VWEK1s*TI+h^s:brZ5hlbg%SQm\rAi`D^KR3-fjCF%r)Nf\A^h9K&_p8CS
-oGA515;eF-.*1D3"48#LI[drL,TFEVbNH8PW9A#SVO-FaoAJ^h>^:]ERa>faSUO$i7@K5#:M!
-PPFJI\-*?b92TOiqJdZo0.[bpG"Xd@5@^Y=NGq96WVJqM_\N#0ALSRNT`$`R)9FIK5I/,HRo4
-n8j/d5B^L&c"YU%+W!+Zf&YEo]k.a=Dn")U=4a2;hTrj$WHN(+T''4^0e=VF]:):Qkk>a8bS,
-=!KVp:38:6%^)auGO4NOIo/-`8?SYs($(h<BdfVFXuC?0pLfSa5pHZp@Ze9:JV'Gt0kk*$ZjQ
-j"lWgI!0gF/huR3o.E-$\i32[ZWJ*A>HJN`5<scLk]!-[YmhfZPT#;EW#%0^VlESj7CK#?\rm
-k$I+%4S@]5OdXBW?&O\22!`,<'UjuGZ0o0b+kiESW4/mQ?cMpe4CL[rQJcMaZNLlICHMf-i_4
-6P"PmN@;Ib$Tn*%[S5N2k'c?o:M,%FW*((>u3fs>d37>eL4ih&Qm\R<%+0/<`lW`J9D`(<3qr
-lTYKBfjl"d"i`e)GP:?l<i;g3Ue,L;crpAG)4>)+kPQXA(DWDH7C&mKaWW2VRaWjY4#]t)00A
-_8_T73UM1'e[$3cn\.([tY=LKp@%9]1S$,'28)/0\3Y]GJf[\#$qmV`(24Re)S=i5_$6$t-7:
-;i?#D]"(2Cp#Z+KbNaf,5U*Um+,*bJ*2[CX/Os61Ia;D.F_k>C<B@cW"-P?/gU9i%ReAKB/mk
-jNC%nNZ=5W\BX%eG&QI.%H!HAjpo\``.k>t)T69=,"XDAqY1c?I$%jJ5>r5Y9@:PT0/":e>a=
--e6.Ia<#]?l[OqEqmP'U84Up;(4B]`&p\h$ZB6Sqc&c/iU,4W+VQj!8GVb^UMG-ql1\&K-C/"
-99[m2/?d:7L5Ol0aFTd39pZh#+(?6(hj)>X>o^+N&5ohe=q4q=>St+8_2Uq(&Qfh*:nr9&1hr
-l^sJPB`T(IGX@?.S;g$'s%DgILrCCKfG1r(j4mOsk^]5#u;7T;jriken4G*sN*6"lJhZ`bi7@
-ka>m6U'$EEGrRjX2cU>O4_bZkB]]L`TQ*Y]0n@'.lO-shO+L"S%-MJ0^hNO4't9F.6nNNPHWK
-"WQcj&TdQcTl_AQ?bVAMR^RSGK!QUq$[o08_EYAi?/[[1QS%gJ*#&?R:>Z9;H*4CrS9;?FPA0
-)r2Wcltp*=ous8/TQ:*oKMSb%>!&6&T_D"W`@nTd7?-5$e.G'Ta;,AAtFsu#"!q@FiH$PMruI
-GrtXZ/`[e4I^EftFfco%P98:Mm^hNNj.8Y`O8ip8gURK0DRre0h[@@'VbS4[PLZ#I0@&W_8p-
-nsYq==p[/lSK`e@duR:'E8&DKetCZ"l:3Go^e=W2n:mlWR=l!_?,/N#u;k89N,A>-thp8=&l>
-60W+8G&.SQbBJ%g9ih%0GEM4C?NcR/ad8<ASTgWKqm6=_\oZ3#h'2&%OJ*R+DSU/D&1?<$1"@
-i.Z2Q#h?t3F!VM00=!W[AkhXkE"60"qqFIJ>lB$'WfrL6h_m92kmpA$f-3Ss<>J#sGtcdCk[9
-AKF66&iXHW5S[]bh9=?-RpK^D=<:QMEQ>`j/NWU+c7@I>8HX^l]hUODGZR3mHTjXkO0uXe%./
-L]rpjj;UR+3;n6X$Cd$Atn\]6/XS7b@]tNGhf!F8A/=p;qRTTIUYhf>N3n2aCSqWc')KFX"Ki
-Oj&*+<nh'@ZsPPpl6i;DV="1JS*SN;tV0f&;"]*r`&&%cAgG/r9+2TZ+6^2/n5l?.Z65i1S8-
-^:E-;D9uL_N7n(IpWC;;%9siTV=f7U[CLXFSH$/^^RI4654X$Q;R4KkgpL#pm%`SeIC8h38pM
-/,gFW?@0T#4I\(@+YKd8jIW$J(Op\C'tcZcSm7R=4W'9beIo9rh5OuKe447%I?bbM.8_XK6j2
-AR?A^eH3U`1PJOc?)W=o(me(:-O0ukDLUjH/I`L_5s0eOWK()CKfFrn;s.*J\cqX\`qp$36T)
-mqeYrE5`'qQfDOr(T7#jk5[JX<;L/_BZeTZ,Ic3Qm;$RWb/SA")[u*=ms5AWR;NfI%HuNuZIs
-CR:A4Y:eZO09?=\W<*oiE;j@:hOe=r->`Gd$D);$qHfg8j@MPiB6\J"ndIl]SD62/9#f<C((.
-<EU#I<>?,lOIo+.cn&T3J[V^ufW;>pX6/*;lXd.Ug=CFh2Odk^r$h5C5m$DKm=TKVZe8%42Rt
-biC(t)FSX'.;B>sI&`bVa*Yb;4S5a05<<aN#WVR=YV=lH*7l.hI13c7Jaan+Qfi1+5FCfLdA;
-RYf>MSC/K^9.KjXg;O^O_;3m<X@&((>Q-m\@#=Up.;.;)c$'Kq_^@$>$4:>pE@:6lnX_e'uJ2
-""+,c*Re*.5^Nr%5=gYJ#+1@kR_#V',1lOk$?l1?b'9$:7A#RGF`^!uIMqk@VcBV%G5+0Iobp
-9X6h*6XK/Ztc@C#(c@M\a[JcW?jN??*9kg8o+GcGmoIY+DTDM0`%*7<5]K^UKj%s%b8UA<Zb&
-Ip_TCMg[Kuhlg_@'oI`aZC3fg4]Y\@P^4Oe:BM;6lg(R,[b)JM]%Lu"Trf'La>Rj7!^#9"el(
-.[U4JoJ'm4iVE$OHr7``"]rcPF>n^.5U,L#s2%hs._8>AQRkD6jc8U(2COHakT2%3lC>$K:JB
-<Q[I[sqgU(&]FW3FHJPa`;QB%dBBrq-$V;roq'WC9#S)p,d302`j*>^l[Gm`uDZUB&@`[^rFT
-lq?(Y>)sW;T/'a4MNfRr_iikUalTL7LXT\@*m`)Kc3+*^s[>Zd.B$l4C:h/l:EmeMt,KCpiWb
-Cq]H]I$MFjakdF&Dg8*[N]8kBZT^pk;o8DSj?D[%C(B(:tt.k3AsOGtj:nq+=VrQNVH=N?\I+
-<fmm6Z)/3#etpYQPJ10qlseeaR#.d7T?VbNTPFGjeWJF+n-X_]h%HPnd;ukNq/Ff,%G&$EJGu
-0tMPsZ:i4eMbX7O(4<L8.Y9/2Z46_c]K+i?ico[m/jLVp#e`0_Te?pd'uEu-.HZ1rId_B>XM$
-S[?mq@Z4t]/3KHenL4"N)/tC.m/]e(KaHVGRQQ+ZQ7JKDZU`)!L'Ac_9ELnfQ7"PD#n"qVH9n
-`>uu,PL;pZCk7ji,$.hlh)akG?A'2h,UWi_=_c#gXccqh<\)X%FFW\6K\sH,iAkn\b8UFKrlb
-<$_T?&+RjEbrYjT+m3IJ$N]8!qp?ED]Zl5%5=f:cB.:S)dA7>PkgNho;cc,f'VYKuP0P0g/E+
-dlptu"V%te>f?$:#"q]nY:m9.d9Z@]Y+%8S]l`ENfomW:Eu>6>B%<s44S]!AZ<!1BJ9/5.=7@
-[o_,9a%]iJcWJuQII'2e!f-r";Zs4W;Qe\+o,IWteEbkd#hb]>*Y0,q-"2fW%<_]2&^^upoa_
->(<Y\N9q3[%l'^W_'#Qoh9?9.[@XoRBf"%B(3,MXm;AM.WOiCFXidS3tj/RbGpOXl(4RuAZ9d
-'2HqEA[6%<&Xj1;C/$1[0VdKtkZ+3Ad=PrSC&<.%EZGr%)aTQpjV01%9X*%?`$Qd4iHoGrU%L
-*9>oK':LBV)0U/.$XNobHh/]I-n&@Baqeg9^8);PuaOFc?YEcJ.&k,rhQ+f73tG"$:$D,7;YZ
-?Ctjtg*GFGdLe0@b_`Hh+C"j:(b@T@$iXlf=],LX`YXhUCQ;0A*dpZUN:@c!/S(->F!AZ?G9'
-HWrffRXNB6MW5B3aVa1Ed%B"#LH:>[LlWJ'i1b^:=(Ylc)I$:aai'W)M<;iS9"1%;%[@meObq
-Xg?C]l3L5;otA'6=n_*aCaH;-(3:1R)?Leg0KsrR\qRJ5^52_9_?6+@M[u7p\.jI"#>7+`Q)4
-U?PZ&2MWijs(^W9G7Ed9VrWjgBYs]82g+*#nUpD[G&l>;@H;X\@3HAEV[T"(e.:^X4`lV>$)>
-ku(ON"R,)I#ncfP70SB$F%)JZ-n&@&[9U:-HCd@h'tX\o-jV5K29`;F4SZCAr5PdY1,T82`o0
-eMi%=Pe20Rju=Ok-8&5KXAm7V-`5><?7!o5:UmEnNb0"ACA4f6DI<&KceF7%=t-VL!]S'>5^\
--[ZuB]6_dOn`$.r-]Nn@L$H=rN[@*:>]K0<o3"CFc7Rc@Dq`$l29<4qVI\3,Yl&_BUnr/8Tfb
-8UiC$UuMe1mq*j\7A3+#m60=Y%/cSKXMiFRnD]_Q$c?OeAJgd&bB/#1<(Fma!i3/L$Us9*OP=
-G1XhV)$5$GGn2$X?[$3CN;8O#NPrO'g8nYG*JG.mNfjk_!;P]c-_lg$5l*Ss^33V_^<5Y[J79
-%6I)5`\Xkt%(o:P>G'"gp)Sj8]1/1MrO'Mq\K2UN3siMWKYTBCQS?aN%Iuer7WcGeSELH-qkO
-,\Y>fYlicF9\L>]i:W3&UD*r/!EVkQ.N?NpbIA`1=CWS_[$l8?Hpp[OiWR/'RG"!_V&]$3+b)
-Mj3?YM`8nmCKpgdnE5^G>aH\l=2Z\C9tp[7k7[/()bmN&b[FE1E!aCP*KIueuE()0X`cjaH!8
-<,[hjoWVZ+@N(=:)i!%Jj)QWXLWn%a(8.\"f[0s`MLWje;76s>Ydp@*M8<E!:'?R\H'@:A<@S
-Q+fRcI's&EU=6VE`K[knAO/sSok!!UpXiLc-92gBoAGKNC6<k!3bf.BeU$a(`BEW,!dBG3f\C
-WQp'IAtfO$W'5DU;$"X=5ik!<"k$H3hm24a(kK=jil:=%6Me]oC3k6Wt>bj*A[57>I9SRX#.S
-m+q=4e=QqX)"u/eT"%f`%*90W@5.hD"do['N;."\RGYsCD5'WfhZD37(PJ0k8"@@S$k<&d#2^
-K*MhZ[QhBrrUGd4j?UtlijiI5_mBLisJZ7=8`7cq>jJ<76-G/<&s#7t3l].hEES"^^8'GH:BK
-4g)ilGKsB$?/iKjs%LpoDdU$Yu`3T(eK#<iFb1=]V9e@(MED&&o+6Nc_Je!in;*XUL<Ni4S@m
-O^R`NocK)_Q=3*\(`=Ngrb"L%D]E4a2E[jJd`C\CqU/LoKaU!Ra#kP5Va%7/X2&IOp!,E`4'(
-_(QJghpL@?ZkFNhSb7b\p*BX<_%TU14_%0$!e:,5Vm%aiFf^JnFelOm`H`s88OrC7871,;+9&
-[e&XKAc9&F,qEW\_R6hN%55N/@&$SS001f'Knc#e=TQEr.r5*E^\H8)*=b5'1!VfeQj=ZKnc`
-Pk=[VFG$B7QmPg"5c,,uNmWBUT]T\VB#kG]kOqrF[f7qoniAYpp%h-"(5E$JG9#Sm7M>/WN<+
-nD*<J*oF','0M[3@?U;i3GmIeMk=#:Wd=Zd%VDfCJs"i52(>22`o',!-N'eb>kA2/;9Ia_JHo
-5f+r)`89K(+m#(qLoKf/mIK,KQPaICsY(K;?AE-_p6l,3$<0YXNaa&pP8LT)qd=6HF*]eKEaA
-:.%N2O[[l*5oK\c"4Yl(]Pr4MRD;AF^'<-KL'&>"h*`7ei-+"R!OaOHH>e&K+ND=Q2d>,JBfR
-9!P;b^sn6Sf@:Bu2V\J$&l$@93V/*ps8!gaRt(.5F/QoKV>o!+Sc=Ti2Gl*i)Vq=(Vj(N:NEh
-M0OX<6kVU84.N,.GN0$#@hd3bYeZ/%es88r[L\^.\_jjE>fX<BMK088'!^NaQP!Mh=<Y"+X8T
-Yo/J/2T+jNjC"nZY#81_+4>YM-l'A$<:P"_TjoXe"-Pd]#L*b_&WO'1Zp[4W66Pm4t6$j62DV
-CRh!jePt2LeSG>80k<JA%*,f^t;Sb\i&`-sfo1.59P7Gk%X@^?5-U/t]5Y4KQlL\AX=e@K3+r
-6GqPU($8Qqa;h?`&U'2jQX-\p5r'WhG*/C)Aa/J9r4qXE6ecIju>"3Y#*lTi,jH+u_bW,f<m6
-7<Y4^0@8)oQk^*=\qh4VR,Jp.5S;%SKapl'*43"r$I\ebs#Uu`K%\M*IHS%#<ut-C:j8!#]Wp
-GN],TQnmN&qDP6@B9SE;G1.(/5C1^bcR%cce,J@&*%/TJOu-]o]e08YDLO/aZ$d\J-%*JpIJn
-I]qa_Mq:=Dkod,&6_u2C$R)/Mj-5bG)g:/9(rpsASFI9"QQ)BpbW.FM`?4[-RjZ.V4'=UmA(N
-_Z76G(M'3GpS:%?B>Y&ND1`0=1mg2N$L^MS!DLk1k=4/k3R`.8UE4kdSLUI-2@WL]k#L=9J5E
-\f;K?E`oZ<[6#8LiOM*OP`iIPpls^iWH_)>1dHPZe-:0232>(kK/V)O?O'EJ5J_oSBj[#t7,:
-?3D()9_h"!T<aFb3#,LA(WCs$@72GME$fmYl-lU^.W&^jj9_E:,[sOU6jmDD+d"H4D2(McAh"
-j.@#%F')Cr$-.1MtE51*2:<Rn"%5`8$JU-`:W-LeR+&fNQNj#nU:bT@>D$d^:.0X9`,;N7_:E
-j`">49q.sJa!$3hhRfbR5ccJg%CI/-()%'M#OS6&h0YU8QGeHZi4f3V3:Ti7^*3t"sl'>V*5Y
-MUr]"L'T*<g/9-]U0_)YK,%'>7m*a*R;tsqbM5Nq?fuh95_:E-bd@Hst+d\0n#'Bf-.A#s#Ho
-djq%[i="0(Eoo:>0/AWAYt/i&P+YMlqhLn-RS?PQ.eJ7.R9(!j+5#jq4OKrcg:JT_#3eiRnYS
-ns#XZ1fY1HWJM-KPU&;aU-BQUi_q?'-LO=(,Z6>F$W;%77S=sjQ!QkZSqaq7NN=s?;CTR`/r`
-XK0i"[q)gil]T*f$:674!%qi!o&;1o^&in$bH4];N!KClM)*eMmQm_slb6^??h"_iPE+\pL\h
-!-YM?):>&5oKIs'reRc/PaGB%38G9$d!rl9<RYkd(V`D-q\Ia'q$@E"Y[8_5GH;+;PB,<=9]J
-KAN18t]V+@3?:n)FkfSe"]HaDDTg6"&j\i.T#Dl&sUdVcG+6Pkk0sf8N@FctJRd/GZ)OZAn'i
-`/,d_1T1R<(7MpTKr+5Y1?\pE9-pMCB^N\,`qUjHn+V*,4>O;GeRt?(BTeP@_^Q@ArYh-V;IC
-cUFYF<+G?pFF"*7-(W<g;0":-)1?cT:d>YkWQ6[J4tEI7@IhSYV+FHFa%$2rLl/#eE<E8'\4?
-I2/osQMWg*LI)5\:`*@]^0\1h[#<*d>[d2"a/ndCO[LE44lF9rQP1iikOdW_XUDR1S@otV]`]
-=0q<4V^Ya:?Y_2GZ]h5kq\LHc;0TT7V7:J>mA&7pe4jb2=MXM8)V2;<LV)HTZ8_Z#BS,eq=T,
-EBlg(Jq*SXj/npf9BS=@"e0P$l'U5=i+F6Z%7($!S'4NGdon`FDoPrr$Ohd;=+7hhYBh5q%;<
-*M3Zs,TRB%Vk0R2#5`Ugh,,fe+*Lnq#<g;UeAbMPj+LI@rAT%f=i['2L5rjXEt>PV,TMW&,ko
-)@@_P4p2ba\YE'3>*'*bjji8194ps+7.]A'@8ojQ:=F(D`Lj<#h8,MOE)tA>,bTu6faq^44VK
-7l5#b&C<>\HjEI;N?]dWbfZ_#65.B-cjq]KMYmF28$8N#P<PP\1LB:ATOL;`i*'_@UF$nJ5M,
-*aC7g793oRIk9\4!Dob;iTjo@R=$mLTj@&l^MZVHFH`<miF>W^Dgn((NOEV)C/5]-!qmpk@^s
-GJk2RDk&\VA^0ah%TNS3Z.81]>rJ=,Oba)+52;O%fDJdQK:rV+L;^%,gV#Z?YK/!aV60.''%[
-9F8'M*XV'e:Jn3%CbkB(C]!)rj[e&7pr<ibs&L=,uGH<5,a*SHhZ259C<a%5iM`adUDZ7.*rd
-QG278_SKW/+4AL0+^Hlp^PeW=qgE"C"4WrS3`?9FV_7R%3`XS-@J]ti/'\"CS7J"tN(m<l,03
-B3NBb0eQC-45i8(V685j<dkB%o-aChf!]/#+s#u!cPQBP[E!1.U9=.3!d\j_OAP,rb-dd^!h8
-sX.,4PIZjs513RGN^:CEp)H4Z;Ke(2CV(*$b6X;qXQ&$*1(VV's;bMDNh;YGacC*MWpB5`8*F
-I]t5X7<L?,oCi`21Oo3<0-l$bck?S:Vf.kFCkqC3"S(/K^hHETg_'u6,#>j[8Hsl%>.N0^C-A
-c<LO\5/1RV`s_imV^#A)&W`U[grX8sLThHI:)V_SJtfW!eA#AW!JY);?3fMB2.aN)rH>7?1a;
-\L_?mYo^GEUbrA=HcEarao]^:VF/-4<Sj`!T]U^%nd=8++oV<QU`PQtn8]o@W1o4pF(Z*K/X,
-s)45HP5:BMZDr5oebB/sg"5g$TjAfmmE6PH(PMJ?<^9T,9tB,/FDW[diYAJ.Ot[8BW&9VlmSD
-)s-u=RoK+hkGRS2Dg'9HmAoqHqeY5dd5q`KXSfO9LNlj_F%tr6(@ToL8^nY*agg1>kD>nHela
-Z^/HW+j]\2T.Ut`gq8c/*Sg2Z2+I,=LQjX5LPWele`4-):e+'iE'sd#PV_j16fk.*S><Wf4Z*
-bll.7gY`8d@<,KfT,?Q!S1(!(Tp>EJ!.g'GFrq3u#gSV9X;-^_7qg!;,WBN[W$sWV3/[-\dQ?
-3)*%U!uA9"8sG7QZlFTC'f7_e\]9l:9.cBgE71]gL:f%9S+oINEgLgs5hL)dBn=`t91V93%;D
-f\IWVobMc^*35iq,_J%k*9cb(0b7PZn#g.XWO'"/CWkS.q\hk"n!7P6&P!RN%B\nS"?a]=&D*
-_&CeXq/'mAPedheX.S=JtE#,`R7)F&ZmB?1elDS9gOgB&!7QZob>-&G`$;=dp#;pUYNW.F1'6
-9<_]EBo7l?.oZVTD.VRf];8KW"<E'P4fBK+p,LU^*Qg:5^1n^O]=i!ZGR1,a=P#JYZ41'C`S3
-@O7hW^jD6l(WU%X\d:h#]1hUsd#186I6IT'5$07be*#@SJKjJ-RXE,F<c<`'.o'n.]Q)d6p(=
-QCI0^W,/:T;,q5U;+4$GOQ&J"96We#ia\icG8=S!H^_!jJT9,:*p>B_:K-1>>c;HU-OH\:^]D
-uR]aiK:%mkS<0;ZWU77p=!:+ie&R>EP+2VZ@iHB]f'h%a_:p)AqJPGjjY+JqV%ZNI@@<g?`WI
-%0p$[TUg3ohl_%o#?`ZD8r2<RN/<%dMQp-D_E(lV+qcS;+e6,A96V/aj`.[gS;P_cAA`0*@>;
-&@ld,HE,K@'C$&"V(ZKMT88`gcW]<,[W0hreSV.#U4ZUr(!U6/aDEY,dV$d(A;bK0E_[PgiJe
-g<P*Jg-.X[OSCXA-ocMC3.EV>O__jilc?@eqFMPd;E#gjh7eUmSAh,$Xr,G="`phF.B6P2P,S
-69.)$a-^gah\qd&3\AHG:!EW/Z:'1o9>5h,<>j3:b[2hL21MrqiOuDSYk+ejd,q2fMN:)f,5#
-SZl)=aJAUMKW$14t,*2^Bg`ut>nZ7.Y_c963rOYiPiip6,X/67k$>>@6Zd)K1Z4.;Ud0&'Hl:
-.m7=le?b6Si#m@f1@?]Paou`2&2?N_i2_5,;F+2HQ7qr&f@>DSP[S!f)(Mm2j2>FBfQZ#eG8>
-ck>O0mTV'aMH`@aS";=3.B9tbu9:dq<*pj0*>4MTkop_`u-!ZqkL4):&UpK%XhEs38pVh=Q*B
-(WVIK&WsgOK.4ZJE64hdZK'l?:odft@"(?anS1Tt$=UKQLeRs17?\o%$!Sh,_!l4%/OI]$=W/
-\,U<UI9pL"]t<,CIe/*,RQ.l9Gje#RoCu>3lTG\kYBP?&mToeOD=lr_efap#icdH6h#^LKd0c
-ZLoX"9!WF=0>h1O4hFc^q;43rPdf396_O1fZQ3)G+lcs/]gY!D88#&19MEk"@)[_tG(rd)1+Y
-4Th#QMgFg8:/$'%en$"mUMpZh,cmgkBW]738>Tuqg:'Hj?5]sHb[Zq%FeHMQP^"Ts"Emf:gYC
-5+E`2uTgV%:0*S::gugosk0`"td+'4:oq-"_I4"f?q!HAumc1^jo_&S^=2ne<o@Ii%H[+PRq>
-8a_AGu,OD0>_WoCgf'Fo/c;lf?pSrpC_D^].m$hS.5,-V2!AlLhm^GMdZBr@b5GA[^fdRtL>`
-8A"V]^\c%*mseInK[e<H$L)IKnJ0L0pTjeOO?V]khTF:l^C]"#]Y+!njTk4-gYo9,^jYV-%+:
-DVIcQY.T03k9oq+D?e]";mguGO'o@BN%S\Y2P6V(o@rPj'MefaWdYP#_)?Jb/Q;K$iU*IQ/c[
-63e:9IjIT61cm&]p5e'>in6WdQ?_l^O[h^9(sM-i`[G6jQ2.i83MaQngg<@8m1JAHM>2L32H9
-ZnHG_Lm.k7ThANO\;6/Omc/.9+H2piKf_Qk!L%L:[n(kb?'kAD?FR:%5T<CN6Z-Z]FpC"_-c\
-Af:W2/!+@X+q$pWbpM!U8lL4p^BS]a#Zc$B>@/r@pjp&R's3AXBk1i4f=k&M!AiHM4-tGMUPe
-n[+25K94qR%dE7[eq`EC8CpZ5!2RfUrEDNZ0m+SVDVkPXY2@=P6i%P1FQLIDO=nC3s)LXfa1m
-.(k5F`YWHb!.Ur;`9qk_5<IWroV=%?hAoET[+\(=:Agqu9+];OD1:TKR0Q0H=BGtfr?A:*=5]
-Tl9b^3f>1T7(Lge4KSM%as*Y4*qJf;9unIVlnjfI3tc)n\s742b<&jF3h>/>E__RDXm?EUq_%
-XO'hdJQBHI\d(aEqGq]0Xhom3kl'Yl6-4aprO?VudYE8atQh:^M[t4/TTdlW3o2fM)J*l^=nb
-2ieQ;]H/^&>"2l?.I0T!SA[dd^T>~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 338 287
-%%EOF
diff --git a/doc/users_guide/figures/gimp_startup.eps b/doc/users_guide/figures/gimp_startup.eps
deleted file mode 100644
index a472b9e..0000000
--- a/doc/users_guide/figures/gimp_startup.eps
+++ /dev/null
@@ -1,483 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/gimp_startup.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 141 219
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 141 219
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-142 220
-12.000000
-142 220
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-9a9a9a
-cdcdcd
-b7b7b7
-eeeeee
-808080
-547098
-7393c0
-424f63
-5a7191
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPT4`VK''#tqk'.Rt\;W`AQ@AeGZL!FcCT4"k\4#g.!8<FO)!g-Im7^[/U*+@7i(j)ObkC
-XaPI'3h0Z7HR&DuSSfBE7$G>ZGgrP9A5"ZlCr/(!ZW8k!jD9%E&r$)pA@[^;;RpJ:-J9/Yj8M
-'F"(%&iBF#UJ<-Fk(ZrbMu(FcP:DHtl;]I00qTQ9O!.ANAMtZRQ$:''7)Em)Bs`&jG7cd(X`@
-_e0MM`D?.fpUbcG_&94O3:JVaH0W28FV"c`3!S-J+iMVL_N(k&DB!XgT&A=ko0K"3gF/IdYeE
-iQuFmkWaE?/!N")pOB)GaeAB8O,>s'r6o!:7M5AOf"l&F6!KC>I_Ep4<2Y/LG]%=dKIfVS0RJ
-lo3jInZCF_Ykq>Ea3p<):DB*"k4Uj[CJN=5^]Z*'Q*A,1PeVk[^To#n:^OjJ9%T>gScfe<M4=
-)XOj'$FP.=Dofd\Q#'&i<F*a%%H%L`E07d(DUV$Gm2\&gnZO`X/(@.VeX`Z1u*!2pd-72aj*b
-/8/FCL64C%173eCL_K:VM);?2?m,t?:ubKjHC^BZe`G2E?'h0mOl%ijMZtq04/N./]LLqJdS*
-fDTdc[GlrU;b.6&mg_Ec,o^i+`eW(%G>8:K*2V"*@jBu'.8Y,rFGglo]:mFg^\G]B`E_Q=ktP
-jqeW+2t<IE0NOd?l0=nN9+03*l4gcnLP-c;/!t+F3Qh$S8*riBI]$/j,]if>D.hqM,X6bH-Au
-s(?Tn>bt$4ke8M:W+%'Q#q6C:9$6#*%pS+o;piGL"R_S32q-APEa4a%U5bB@RSrU]AmA\Q@I!
-mi#>`'CTj$d[&TSR*PLCJ!hbu8i;)Od%/dXY52bp7EbR5IoZRU.R?Z;gZ\..Lhcc_U)]$aFl'
-a'hkc:(rt5ABgXX353l%)@uj_[5Q/cUs=8S*%2CmKk[nc$X:1]b%WVf1S0`I-nT/r4H<`.]J3
-H]P/\kd3YG5jTWp$O$-#!>g/MI9(O&(-dt+0KmmX#h'FPfrBgAS9;`"Vhbk'X-'hN7O_!DG'g
-EI1Icn4@BV)0(t6ZuC?BMpoeM8YYGGN$M4)MNp^.,$qqNb1hO=6YXo,'lOS7b\Yc0I63@Y7>,
-YBX"1(U[DL>0="#_%i!nt?tc)gZkYDt)R#-L,L%?89^R+JO.q?UBL&=1$I)CdQM'aU4dtQM3G
-\YHDF56taUoO4`Q(HuYunlm4:/otJg?=&\T"g>R&:Yq.knBgGQG^`aHE@@)"A]_bYhcaY`ZaG
-eWNCc/EJ1;DLVu!fh0a/h:oWf%9m)D0%S'tO.nXaMfU_ANGbX=hb-JK\&e<R]^,1K)pLn#Ge^
-oHQ8Ilqfm@SDj[E?=e#q(u)A4ihQ"YsZPh?8h;L:OZEU.:c>#W:+XA)_iN!<6">`.TMZZFq`R
-S[F-b+dj13(ahcd:9P7p)C_<cV7QrA=/YeieE$:9psP/Q;HU5%sAqQfac#s9h#fU/@8GVkF=G
-On`2M9mL!VkKeP-N>Ojgf["7a&6jtJP*DM4WOs\"QE80e-XjT\A6t(\ek8:k.M(g[4p?cSI]\
-c\&e6(HF;[Z9gQXRH6_eE`[PTRZ&Z*q,U=r9S)@Ff0\652So2eW=&[F>KBf4lO.]+:Ut8JpU/
-"_Ll=bleKHU'-Ih.kj5>)0jIe;&c^b`GsB`G6N`bK.4Rg'9+ulC1HFX2g5G2W]?^EN0@9V;gE
-G(pd_Hp:=$Q"9[heVn66mH2XgLTpdXj6UgXW9=gHiH4JG8Sjj3\a>FKjOFB]Y@%YaG_:Sk&RB
-POZrkpKs31hp!K0sN*MZNUePc_=;.m&6#]8=GR-U8<_@*T_]N72k2kdl;o]0V##0TqTou1g44
-:;9jR\NF1&-,3fsr%6>6MD*;.5iWpcC>*p%QWf]cI;=Z,oTG`9r#R^b1+-/8uC#ms<C./0P>1
-"gTajJJ6U$:'4Z)Wap70t44DcFCn\NT#=KVSW$NN?-R.:(]tW>:6V)"<6=UbU2uo5/Z1VHc?i
-X>iBGT,F(dT@[c#fI+Sh1mU"\11Gc30!!]K.a:pTc!eOHWr<4E9I<K#@8n.,SdmQ6AOR6B9&I
-^D5jkt=(:ImE$qp$k[,L_A=gJlAm^mJJ;/!%7`F6SLRd%0LG#.&]f7#ZIL?98,hr=.5H.V5u2
-k$8*43MDRe8r<uC%1-@"O5`G#j((>Rcenf(Z]gI>l<6:mi5'5K"6mG`ni6:OCTR+oks%?28_s
-'0MY"AN-\-ESn?st=h1'VjO"NDP\Vm<\'a#"XGNi:SP;I[QI<Q.p8W>frRCg@Up4B'#1H%U%#
-:un$VmVUbO.oTK#Yi/3Xp$FNCJmT1JXjrLo2@P5!O]8V4&u2j<^18+>.=gG#-&N;/Uu00hU!j
-0165tBS-=lkIn<n&qB?S1n"K@I<GTs"R*YR0kdEBEEJ1!^ah7P6N63d$;KQ[&8O+:Eg-n\:#7
-KQVjfe%rlD-e'HW<AFddDD@d5!<qc0O@IP2N:Rlh=VH^0=l&na&cQH8,H4]EE88&;lrqG]J(X
-YV\kHq,#[1;X$H;<KA=,-ON^HNnaVqH4hJO0U@*7N-Wo5iAlY!nP'jWNgp3#i?<GH><<0ZMWa
-CDb(^76eYQ#E5(('BU!I^iQ;&:4T^qEe#4QMR&)2)':Q4s<I5FHb.Bj+>9'fDm621'2Q1)sch
-E(@/)$$GrH+J;5PsrB:%LQ@`e*N*:$F'pfa_,Nd,MOA/l,C^B$.2MBT2pP%/[rGrI24?o_VpD
-3'?U)IK+*?+&8SF5'h*,c(RAoI/qsfp\P%J"gHgshaAE)0pl2Fo6C9E^>2#&Xu%<h&,SPh'#:
-)^6)(:VA=DR<k-@--radYT=D7P]cpo%K2JB$PIWm89l;QOFBs?jZpS?aGT2D),^INA41Xd])&
-;:O]HWK]af&k?Z6Jm&TPG([dMbj):%-*>bF(V:aXJek?ic+[Hg@Wct:Z7otBKY`cN97Gpq`FP
-O-hQ:]'L<p@^BmVUmsreJMR&;b;@%mR)dFbhZjZg_$pa"LRsS$+5)k$5;Sdhb&rnlT@r4RhQp
-(A:./U47`Al@T5=0Fb'4W-ALh<l)PepQBPQlImIZ:,mDBlo!7Ir,.%9a*=M1a\/I=!N)\s-3.
-^?^5h8E4$H'#Fe*iuG=(T8H4<Z27L6*E>\k9lf6gBgd:!C&WpoT<gGfe>7bFns@8aI;13j(lQ
-.n'a9I,SL':T3:7d$^0+.YN&^QW[FHWtjZXDL_FnS&rYT_OY#!4l>]kb*3;0TJdnjP&):pg`5
-5R25"n+`o_PDIe#`\`Zq!Tm@J,di5Z7a,t"td7+IB#N%YV'6NUTBB+QNYe8l>`s8K2,UL?Ubu
-+e&UE#BG4oJ:>@(b5r6`\Kf$gs:?0p'o?h5\bjFhs1hbFC+[%qMr4qq<dp5MjiQq,=o1MWXYH
-MlJD]sQ*o]aRV?R#rm,1"RW,>LqRJiFR@$.;)Wq([bJLTcM4[!@ShI!RS^Pe1s+CBI"oLE]GN
-<RN3D';[u7SL4$i%;;Kj,We.cD4ZsG'ZYKIS'kn1Rc6<KD7JK9<%!..$r-+f<L]W"Mc#u1`NS
-m!,//,Mhdj3A(jgKae/]>QFfJ"OkM1nN`Djnkh>##2YuHtMAQ7gZlni&m_;t-ioVj\D'lB*MJ
-"#W\>L>.>8Nb>LNO(UA2N]CFZAGDID.9-KUR$4OSaGC*d2\Y<C$'T#cV)/gLUm'ob^=6iM);,
-0Fe^rYc%=u9"URr-#d3Q"o;^7=!W,T:dJ~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 141 219
-%%EOF
diff --git a/doc/users_guide/gimp-edition.sgml b/doc/users_guide/gimp-edition.sgml
new file mode 100644
index 0000000..6834bbd
--- /dev/null
+++ b/doc/users_guide/gimp-edition.sgml
@@ -0,0 +1,58 @@
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+<!ENTITY title SYSTEM "title.sgml">
+<!ENTITY history SYSTEM "history.sgml">
+<!ENTITY gimp SYSTEM "gimp.sgml">
+<!ENTITY cups SYSTEM "cups.sgml">
+<!ENTITY utils SYSTEM "utils.sgml">
+<!ENTITY gfdl SYSTEM "gfdl.sgml">
+]>
+<book>
+
+ <bookinfo>
+ <title>The User's Guide to the Gutenprint - GIMP Edition</title>
+ <date>April 7, 2002</date>
+ <pubdate>April 7, 2002</pubdate>
+ <author>
+ <firstname>Andy</firstname>
+ <surname>Stewart</surname>
+ </author>
+ <copyright>
+ <year>2002</year>
+ <holder>Andy Stewart</holder>
+ </copyright>
+ <legalnotice>
+ <para>The User's Guide to the Gutenprint - GIMP Edition, Copyright
+2002, Andy Stewart.
+ </para>
+
+&title;
+
+<chapter><title>GIMP Edition</title>
+
+ <caution><title>PLEASE NOTE</title>
+
+ <para>
+ This manual includes a subset of chapters from a more complete
+manual entitled <emphasis>The User's Guide to the Gutenprint Top
+Quality Printer Drivers</emphasis>. To obtain the complete manual, go
+to the <ulink url="http://gimp-print.sourceforge.net">Gutenprint
+Project</ulink> home page.
+ </para>
+ <para>
+ This version of the manual has been specifically packaged in this
+way in an attempt to better suit the needs of people interested only
+in using the Gutenprint software with
+<ulink url="http://www.gimp.org">GIMP</ulink> (GNU Image Manipulation Program).
+ </para>
+
+ </caution>
+
+</chapter>
+
+&history;
+&gimp;
+&gfdl;
+</book>
+
+
+
diff --git a/doc/users_guide/gimp.sgml b/doc/users_guide/gimp.sgml
index 75eb803..d8e5ae3 100644
--- a/doc/users_guide/gimp.sgml
+++ b/doc/users_guide/gimp.sgml
@@ -1,5 +1,5 @@
- <chapter id="ch-gimp-and-gimp-print"><title>GIMP and Gimp-Print</title>
+ <chapter id="ch-gimp-and-gimp-print"><title>GIMP and Gutenprint</title>
<sect1>
<title>Running the GIMP</title>
@@ -154,7 +154,7 @@ When either the <guibutton>Print and Save Settings</guibutton> button
or the <guibutton>Save Settings</guibutton> button is clicked,
the settings are saved in a file called
<filename>~/.gimp-1.2/printrc</filename>. The user is cautioned about
-hand editing this file since it is generated by Gimp-Print (although
+hand editing this file since it is generated by Gutenprint (although
it was the only way that the author found for removing bogus entries
created while playing with the <guibutton>New Printer</guibutton> button).
</para>
@@ -190,7 +190,7 @@ for a wide array of Postscript, inkjet, and laser printers. After you
have selected a printer, you will see the printer command displayed.
</para>
<para>
-The Gimp-Print software does all of the necessary conversion of the
+The Gutenprint software does all of the necessary conversion of the
image to be printed into the language of your printer. It is
unnecessary and undesirable for any other sofware to manipulate this
data. (This is why the command contains the "-l" switch or the "-o
@@ -246,7 +246,7 @@ perforated parts of the paper which will be removed after
printing the photo. By selecting the proper scaling percentage,
printing can be constrained to the 4x6 part of the paper which will
remain after the perforated sections are removed. The author has
-saved this setting using this feature of the Gimp-Print software.
+saved this setting using this feature of the Gutenprint software.
</para>
</sect3>
@@ -384,18 +384,6 @@ space and prints more slowly, but does not require significantly more
processing time.
</para>
</sect4>
- <sect4><title>Interleave</title>
- <para>
- Certain Epson printers (older models mostly) support a printing
- mode called <emphasis>Interleave</emphasis>. This mode uses
- special software within the printer to improve the print quality.
- Interleave print modes will usually produce better quality
- output than non-Interleave modes, with only a small performance
- penalty. If Interleave is not listed at your chosen
- resolution, fear not. In those cases, the non-Interleave print
- modes offer similar printing quality improvements.
- </para>
- </sect4>
<sect4><title>DMT</title>
<para>
DMT is an acronym which stands for <emphasis>D</emphasis>ot
@@ -876,7 +864,7 @@ Adjust</guilabel> window will close when the
<guibutton>Save Settings</guibutton>,
<guibutton>Print</guibutton>,
and <guibutton>Cancel</guibutton>. The <guibutton>About</guibutton>
-button will show information about the Gimp-Print software, such as
+button will show information about the Gutenprint software, such as
the version number, authors names, project web site, and software
licensing. After clicking on the <guibutton>About</guibutton>, read
the information, and then close the window by pressing the
diff --git a/doc/users_guide/history.sgml b/doc/users_guide/history.sgml
index 9f5bd29..2782f2b 100644
--- a/doc/users_guide/history.sgml
+++ b/doc/users_guide/history.sgml
@@ -6,13 +6,13 @@ This software package was first written by Michael Sweet of
initially worked only as a print plugin to the GIMP (GNU Image
Manipulation Program). In the summer of 1999,
Robert Krawitz (the current
-Gimp-Print project leader) purchased an Epson Stylus Photo EX printer
+Gutenprint project leader) purchased an Epson Stylus Photo EX printer
to feed his photography hobby. Finding no existing printer drivers, Robert
-adapted Mike's Gimp-Print plugin to his six-color printer, and by the end
+adapted Mike's GIMP Print plugin to his six-color printer, and by the end
of the year released version 3.0 of the Gimp-Print software, which was
included in version 1.1 of the GIMP. The intention was for this to be
the stable plugin in version 1.2 of the GIMP while development of the
-Gimp-Print plugin continued for later release.
+GIMP Print plugin continued for later release.
</para>
<para>
Robert put the Gimp-Print development tree on SourceForge starting
@@ -101,8 +101,8 @@ team hopes to include the following:
</itemizedlist>
</para>
<para>
-The entire Gimp-Print team hopes you will really enjoy using this
-software! For more information, please consult the GIMP-Print project
+The entire Gutenprint team hopes you will really enjoy using this
+software! For more information, please consult the Gutenprint project
<ulink url="http://gimp-print.sourceforge.net">web page</ulink>.
</para>
</chapter>
diff --git a/doc/users_guide/html/HTML.manifest b/doc/users_guide/html/HTML.manifest
deleted file mode 100644
index d09e506..0000000
--- a/doc/users_guide/html/HTML.manifest
+++ /dev/null
@@ -1,21 +0,0 @@
-book1.html
-c29.html
-ch-gimp-and-gimp-print.html
-x85.html
-c447.html
-x456.html
-x548.html
-x562.html
-c570.html
-gfdl.html
-x642.html
-x652.html
-x656.html
-x662.html
-x698.html
-x703.html
-x707.html
-x711.html
-x714.html
-x717.html
-x722.html
diff --git a/doc/users_guide/html/gfdl.html b/doc/users_guide/html/a630.html
index 1b639d3..5900395 100644
--- a/doc/users_guide/html/gfdl.html
+++ b/doc/users_guide/html/a630.html
@@ -1,25 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>GNU Free Documentation License</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="PREVIOUS"
-TITLE="Gimp-Print Utilities"
-HREF="c570.html"><LINK
+TITLE="Gutenprint Utilities"
+HREF="c568.html"><LINK
REL="NEXT"
TITLE="APPLICABILITY AND DEFINITIONS"
-HREF="x642.html"></HEAD
+HREF="x640.html"></HEAD
><BODY
CLASS="APPENDIX"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -28,7 +34,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -36,7 +42,8 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="c570.html"
+HREF="c568.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -49,7 +56,8 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="x642.html"
+HREF="x640.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -62,81 +70,12 @@ CLASS="APPENDIX"
><H1
><A
NAME="GFDL"
->Appendix A. GNU Free Documentation License</A
-></H1
-><DIV
-CLASS="TOC"
-><DL
-><DT
-><B
->Table of Contents</B
-></DT
-><DT
->0. <A
-HREF="gfdl.html#AEN637"
->PREAMBLE</A
-></DT
-><DT
->1. <A
-HREF="x642.html"
->APPLICABILITY AND DEFINITIONS</A
-></DT
-><DT
->2. <A
-HREF="x652.html"
->VERBATIM COPYING</A
-></DT
-><DT
->3. <A
-HREF="x656.html"
->COPYING IN QUANTITY</A
-></DT
-><DT
->4. <A
-HREF="x662.html"
->MODIFICATIONS</A
-></DT
-><DT
->5. <A
-HREF="x698.html"
->COMBINING DOCUMENTS</A
-></DT
-><DT
->6. <A
-HREF="x703.html"
->COLLECTIONS OF DOCUMENTS</A
-></DT
-><DT
->7. <A
-HREF="x707.html"
->AGGREGATION WITH INDEPENDENT WORKS</A
-></DT
-><DT
->8. <A
-HREF="x711.html"
->TRANSLATION</A
-></DT
-><DT
->9. <A
-HREF="x714.html"
->TERMINATION</A
-></DT
-><DT
->10. <A
-HREF="x717.html"
->FUTURE REVISIONS OF THIS LICENSE</A
-></DT
-><DT
-><A
-HREF="x722.html"
->How to use this License for your documents</A
-></DT
-></DL
-></DIV
+></A
+>Appendix A. GNU Free Documentation License</H1
><P
>Version 1.1, March 2000</P
><A
-NAME="AEN635"
+NAME="AEN633"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
@@ -151,7 +90,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN637"
+NAME="AEN635"
>0. PREAMBLE</A
></H1
><P
@@ -184,6 +123,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -194,7 +134,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="c570.html"
+HREF="c568.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -202,7 +143,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -210,7 +152,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="x642.html"
+HREF="x640.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -219,7 +162,7 @@ HREF="x642.html"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
->Gimp-Print Utilities</TD
+>Gutenprint Utilities</TD
><TD
WIDTH="34%"
ALIGN="center"
diff --git a/doc/users_guide/html/c29.html b/doc/users_guide/html/c29.html
index 38c2000..d20e203 100644
--- a/doc/users_guide/html/c29.html
+++ b/doc/users_guide/html/c29.html
@@ -1,25 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Project History</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="PREVIOUS"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="NEXT"
-TITLE="GIMP and Gimp-Print"
-HREF="ch-gimp-and-gimp-print.html"></HEAD
+TITLE="GIMP and Gutenprint"
+HREF="c61.html"></HEAD
><BODY
CLASS="CHAPTER"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -28,7 +34,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -36,7 +42,8 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -49,7 +56,8 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="ch-gimp-and-gimp-print.html"
+HREF="c61.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -62,8 +70,8 @@ CLASS="CHAPTER"
><H1
><A
NAME="AEN29"
->Chapter 1. Project History</A
-></H1
+></A
+>Chapter 1. Project History</H1
><P
>This software package was first written by Michael Sweet of
<A
@@ -74,13 +82,13 @@ TARGET="_top"
initially worked only as a print plugin to the GIMP (GNU Image
Manipulation Program). In the summer of 1999,
Robert Krawitz (the current
-Gimp-Print project leader) purchased an Epson Stylus Photo EX printer
+Gutenprint project leader) purchased an Epson Stylus Photo EX printer
to feed his photography hobby. Finding no existing printer drivers, Robert
-adapted Mike's Gimp-Print plugin to his six-color printer, and by the end
+adapted Mike's GIMP Print plugin to his six-color printer, and by the end
of the year released version 3.0 of the Gimp-Print software, which was
included in version 1.1 of the GIMP. The intention was for this to be
the stable plugin in version 1.2 of the GIMP while development of the
-Gimp-Print plugin continued for later release.
+GIMP Print plugin continued for later release.
</P
><P
>Robert put the Gimp-Print development tree on SourceForge starting
@@ -183,8 +191,8 @@ team hopes to include the following:
>
</P
><P
->The entire Gimp-Print team hopes you will really enjoy using this
-software! For more information, please consult the GIMP-Print project
+>The entire Gutenprint team hopes you will really enjoy using this
+software! For more information, please consult the Gutenprint project
<A
HREF="http://gimp-print.sourceforge.net"
TARGET="_top"
@@ -197,6 +205,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -207,7 +216,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -215,7 +225,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -223,7 +234,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="ch-gimp-and-gimp-print.html"
+HREF="c61.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -232,7 +244,7 @@ HREF="ch-gimp-and-gimp-print.html"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TD
+>The User's Guide to Gutenprint - Complete Edition</TD
><TD
WIDTH="34%"
ALIGN="center"
@@ -242,7 +254,7 @@ VALIGN="top"
WIDTH="33%"
ALIGN="right"
VALIGN="top"
->GIMP and Gimp-Print</TD
+>GIMP and Gutenprint</TD
></TR
></TABLE
></DIV
diff --git a/doc/users_guide/html/c447.html b/doc/users_guide/html/c443.html
index d8dcce6..cf645f7 100644
--- a/doc/users_guide/html/c447.html
+++ b/doc/users_guide/html/c443.html
@@ -1,25 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
->CUPS and Gimp-Print</TITLE
+>CUPS and Gutenprint</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="The Gimp-Print Graphical User Interface"
HREF="x85.html"><LINK
REL="NEXT"
TITLE="CUPS Printer Installation"
-HREF="x456.html"></HEAD
+HREF="x452.html"></HEAD
><BODY
CLASS="CHAPTER"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -28,7 +34,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -37,6 +43,7 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="x85.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -49,7 +56,8 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="x456.html"
+HREF="x452.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -61,66 +69,49 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="AEN447"
->Chapter 3. CUPS and Gimp-Print</A
-></H1
-><DIV
-CLASS="TOC"
-><DL
-><DT
-><B
->Table of Contents</B
-></DT
-><DT
-><A
-HREF="c447.html#AEN449"
->Introduction</A
-></DT
-><DT
-><A
-HREF="x456.html"
->CUPS Printer Installation</A
-></DT
-><DT
-><A
-HREF="x548.html"
->Configuring your Printer in CUPS</A
-></DT
-><DT
-><A
-HREF="x562.html"
->Using CUPS from the Command Line</A
-></DT
-></DL
-></DIV
+NAME="AEN443"
+></A
+>Chapter 3. CUPS and Gutenprint</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN449"
->Introduction</A
+NAME="AEN445"
+>3.1. Introduction</A
></H1
><P
-> CUPS is an acronym which stands for <I
+> CUPS is an acronym which stands for <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>C</I
+></SPAN
>ommon
-<I
+<SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>U</I
->nix <I
+></SPAN
+>nix <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>P</I
+></SPAN
>rinting
-<I
+<SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>S</I
+></SPAN
>ystem. It is assumed that the reader has
-properly installed the CUPS software and the Gimp-Print software.
+properly installed the CUPS software and the Gutenprint software.
This section will discuss adding a printer to CUPS that uses a
-Gimp-Print printer driver, as well as how to modify the various
-settings supplied by Gimp-Print. This will be a rather quick
+Gutenprint printer driver, as well as how to modify the various
+settings supplied by Gutenprint. This will be a rather quick
explanation, as the CUPS software is quite well documented, and it is
not my intention to attempt to duplicate the CUPS documentation here.
</P
@@ -131,6 +122,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -142,6 +134,7 @@ ALIGN="left"
VALIGN="top"
><A
HREF="x85.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -149,7 +142,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -157,7 +151,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="x456.html"
+HREF="x452.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
diff --git a/doc/users_guide/html/c570.html b/doc/users_guide/html/c568.html
index f1c142b..edbf2fa 100644
--- a/doc/users_guide/html/c570.html
+++ b/doc/users_guide/html/c568.html
@@ -1,25 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
->Gimp-Print Utilities</TITLE
+>Gutenprint Utilities</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Using CUPS from the Command Line"
-HREF="x562.html"><LINK
+HREF="x559.html"><LINK
REL="NEXT"
TITLE="GNU Free Documentation License"
-HREF="gfdl.html"></HEAD
+HREF="a630.html"></HEAD
><BODY
CLASS="CHAPTER"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -28,7 +34,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -36,7 +42,8 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="x562.html"
+HREF="x559.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -49,7 +56,8 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="gfdl.html"
+HREF="a630.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -61,38 +69,47 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="AEN570"
->Chapter 4. Gimp-Print Utilities</A
-></H1
+NAME="AEN568"
+></A
+>Chapter 4. Gutenprint Utilities</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN572"
->escputil</A
+NAME="AEN570"
+>4.1. escputil</A
></H1
><P
-> <I
+> <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>escputil</I
+></SPAN
> is a command line utility which
allows the user to perform a variety of maintenance tasks on Epson
Stylus inkjet printers. These tasks include head alignment, head
cleaning, nozzle check, printer identification, and retrieval of the ink
level from the printer. In order for many of the
-<I
+<SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>escputil</I
+></SPAN
> functions to work, the user must have
read/write access to the raw printer device (typically /dev/lp0,
/dev/usb/lp0, and the like). In general, these operations should be
performed by the root user. As always, the user must insure that the
-directory containing the <I
+directory containing the <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>escputil</I
+></SPAN
> utility is
-listed in the $PATH environment variable, or that the full path is
+listed in the &dollar;PATH environment variable, or that the full path is
specified on the command line. The examples in this section will
assume the former.
</P
@@ -102,24 +119,39 @@ CLASS="CAUTION"
></P
><TABLE
CLASS="CAUTION"
-BORDER="1"
WIDTH="100%"
+BORDER="0"
><TR
><TD
+WIDTH="25"
ALIGN="CENTER"
+VALIGN="TOP"
+><IMG
+SRC="../images/caution.gif"
+HSPACE="5"
+ALT="Caution"></TD
+><TH
+ALIGN="LEFT"
+VALIGN="MIDDLE"
><B
>Caution</B
-></TD
+></TH
></TR
><TR
><TD
+>&nbsp;</TD
+><TD
ALIGN="LEFT"
+VALIGN="TOP"
><P
-> The <I
+> The <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>escputil</I
+></SPAN
> utility was designed for use
-ONLY with Epson Stylus inkjet printers supported by the Gimp-Print
+ONLY with Epson Stylus inkjet printers supported by the Gutenprint
software. It is possible that damage MIGHT occur to your printer if
this utility is misused or if it is used with a printer other than an
Epson Stylus inkjet printer. It is the sole responsibility of the
@@ -132,9 +164,12 @@ user to insure that this utility is suitable for the task at hand.
><P
> In this section, specific examples of common usage will be
presented. A summary of the command line switches can be
-found in the <I
+found in the <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>escputil</I
+></SPAN
>(1) man page.
</P
><DIV
@@ -142,14 +177,17 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN584"
->Determining Ink Level</A
+NAME="AEN582"
+>4.1.1. Determining Ink Level</A
></H2
><P
> Perhaps the most basic function performed by
-<I
+<SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>escputil</I
+></SPAN
> is that of determining the amount of ink
remaining in the printer. To do this, the user must know the name of
the raw printer device. This is usually /dev/lp0 for a printer
@@ -172,12 +210,6 @@ URI". The author's USB printer is listed as "Device URI: usb:/dev/usb/lp0".
specified as /dev/usb/lp0. To get the ink level for this printer,
issue this command and notice the output.
</P
-><TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
><PRE
CLASS="PROGRAMLISTING"
>
@@ -198,9 +230,6 @@ under certain conditions; type 'escputil -l' for details.
Light Magenta 70
</PRE
-></TD
-></TR
-></TABLE
><P
>The user would substitute their own raw printer device for the one
shown in the example after the "-r" switch. Notice that the printout
@@ -216,23 +245,17 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN593"
->Error During Ink Level Determination</A
+NAME="AEN591"
+>4.1.2. Error During Ink Level Determination</A
></H2
><P
> What? The example above did not work? An error message was
printed? What does it mean? There are several possibilities,
depending on the specific error message. If the error message is
"Invalid argument" (see following example), the problem is that the
-kernel is not configured with the CONFIG_PRINTER_READBACK option enabled.
+2.4.x kernel is not configured with the CONFIG_PARPORT_1284 option enabled.
- <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
+ <PRE
CLASS="PROGRAMLISTING"
>
# escputil -r /dev/lp0 -i
@@ -246,9 +269,6 @@ under certain conditions; type 'escputil -l' for details.
Cannot read from /dev/lp0: Invalid argument
</PRE
-></TD
-></TR
-></TABLE
>
Another possibile cause for error is that the raw printer device
@@ -264,8 +284,8 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN597"
->Nozzle Check</A
+NAME="AEN595"
+>4.1.3. Nozzle Check</A
></H2
><P
> On an inkjet printer, there are several small holes on the
@@ -287,12 +307,6 @@ or spaces in these lines, then the corresponding nozzle is clogged and
the print head must be cleaned. However, if there are no gaps, the
nozzles are clean.
</P
-><TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
><PRE
CLASS="PROGRAMLISTING"
>
@@ -306,17 +320,14 @@ under certain conditions; type 'escputil -l' for details.
Running nozzle check, please ensure paper is in the printer.
</PRE
-></TD
-></TR
-></TABLE
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN602"
->Clean the Print Head</A
+NAME="AEN600"
+>4.1.4. Clean the Print Head</A
></H2
><P
> If the printed output is showing gaps where there should have
@@ -330,12 +341,6 @@ printers present, the desired printer must be specified with an
additional "-P printer_name" switch, where "printer_name" is the name
of the desired printer.
</P
-><TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
><PRE
CLASS="PROGRAMLISTING"
>
@@ -349,9 +354,6 @@ under certain conditions; type 'escputil -l' for details.
Cleaning heads...
</PRE
-></TD
-></TR
-></TABLE
><P
> Nothing will be printed on the paper. The printer will make
some noise as it cleans the print head. Wait until the printer is
@@ -373,8 +375,8 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN608"
->Align the Print Head</A
+NAME="AEN606"
+>4.1.5. Align the Print Head</A
></H2
><P
> To insure the highest quality printouts, the print head must
@@ -382,9 +384,12 @@ be in proper physical alignment. One can check and realign the print
head by running this interactive alignment test.
</P
><P
->The <I
+>The <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>escputil</I
+></SPAN
> utility must know the exact printer model in
use. One may specify the model on the command line using the "-m"
switch, or the utility can detect the printer model if the user passes
@@ -403,18 +408,30 @@ CLASS="CAUTION"
></P
><TABLE
CLASS="CAUTION"
-BORDER="1"
WIDTH="100%"
+BORDER="0"
><TR
><TD
+WIDTH="25"
ALIGN="CENTER"
+VALIGN="TOP"
+><IMG
+SRC="../images/caution.gif"
+HSPACE="5"
+ALT="Caution"></TD
+><TH
+ALIGN="LEFT"
+VALIGN="MIDDLE"
><B
>Caution</B
-></TD
+></TH
></TR
><TR
><TD
+>&nbsp;</TD
+><TD
ALIGN="LEFT"
+VALIGN="TOP"
><P
>This utility lets you align the print head of your Epson Stylus inkjet
printer. Misuse of this utility may cause your print quality to degrade
@@ -439,12 +456,6 @@ line. (To obtain a list of printer models, issue the "escputil -M"
command). Of course, your responses will vary and should be
substituted for the responses shown in the following example.
</P
-><TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
><PRE
CLASS="PROGRAMLISTING"
>
@@ -538,20 +549,11 @@ About to save settings...succeeded!
Your alignment settings have been saved to the printer.
</PRE
-></TD
-></TR
-></TABLE
><P
> The following example shows what will happen if an unprivileged
user attempts to align the print head by specifying the raw printer
device on the command line.
</P
-><TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
><PRE
CLASS="PROGRAMLISTING"
>
@@ -566,21 +568,12 @@ Attempting to detect printer model...
Cannot open /dev/usb/lp0 read/write: Permission denied
</PRE
-></TD
-></TR
-></TABLE
><P
> This next example illustrates the results obtained when the root
user issues an alignment command while specifying the raw printer
device. Note that the output is truncated and only shows the printer
detection output.
</P
-><TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
><PRE
CLASS="PROGRAMLISTING"
>
@@ -596,17 +589,14 @@ Attempting to detect printer model...Stylus Photo 870
Please read these instructions very carefully before proceeding.
</PRE
-></TD
-></TR
-></TABLE
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN624"
->Printer Identification</A
+NAME="AEN622"
+>4.1.6. Printer Identification</A
></H2
><P
> The printer identification command will query the printer for
@@ -616,12 +606,6 @@ Substitute your own raw printer device in place of the /dev/usb/lp0
shown in the example. The output will vary depending on the precise
printer model.
</P
-><TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
><PRE
CLASS="PROGRAMLISTING"
>
@@ -637,25 +621,25 @@ MFG:EPSON;CMD:ESCPL2,BDC;MDL:Stylus Photo 870;CLS:PRINTER;DES:
EPSON Stylus Photo 870;
</PRE
-></TD
-></TR
-></TABLE
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN628"
->More Information</A
+NAME="AEN626"
+>4.1.7. More Information</A
></H2
><P
> For more detailed information about the command line switches
-accepted by the <I
+accepted by the <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>escputil</I
+></SPAN
> utility, please consult
-the man page which is supplied with the Gimp-Print software. The user
+the man page which is supplied with the Gutenprint software. The user
may also issue the "escputil --help" command to get a listing of supported
command line switches. The command requires no special privileges to execute.
</P
@@ -667,6 +651,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -677,7 +662,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="x562.html"
+HREF="x559.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -685,7 +671,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -693,7 +680,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="gfdl.html"
+HREF="a630.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
diff --git a/doc/users_guide/html/ch-gimp-and-gimp-print.html b/doc/users_guide/html/c61.html
index 174da29..00e31af 100644
--- a/doc/users_guide/html/ch-gimp-and-gimp-print.html
+++ b/doc/users_guide/html/c61.html
@@ -1,14 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
->GIMP and Gimp-Print</TITLE
+>GIMP and Gutenprint</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Project History"
HREF="c29.html"><LINK
@@ -17,9 +17,15 @@ TITLE="The Gimp-Print Graphical User Interface"
HREF="x85.html"></HEAD
><BODY
CLASS="CHAPTER"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -28,7 +34,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -37,6 +43,7 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="c29.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -50,6 +57,7 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="x85.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -62,34 +70,15 @@ CLASS="CHAPTER"
><H1
><A
NAME="CH-GIMP-AND-GIMP-PRINT"
->Chapter 2. GIMP and Gimp-Print</A
-></H1
-><DIV
-CLASS="TOC"
-><DL
-><DT
-><B
->Table of Contents</B
-></DT
-><DT
-><A
-HREF="ch-gimp-and-gimp-print.html#AEN63"
->Running the GIMP</A
-></DT
-><DT
-><A
-HREF="x85.html"
->The Gimp-Print Graphical User Interface</A
-></DT
-></DL
-></DIV
+></A
+>Chapter 2. GIMP and Gutenprint</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN63"
->Running the GIMP</A
+>2.1. Running the GIMP</A
></H1
><P
> This section assumes that you have the GIMP version 1.2 installed
@@ -98,26 +87,17 @@ some type that you desire to print. To get started quickly, log into
your system, start the X window system, and bring up your favorite terminal
window. At the $ prompt, type:
- <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
+ <PRE
CLASS="PROGRAMLISTING"
>
$ gimp &#38;
</PRE
-></TD
-></TR
-></TABLE
>
This should start the GIMP for you. If it does not, check that
you have installed the GIMP properly, and that its binary is located
-in one of the directories listed in your $PATH environment
+in one of the directories listed in your &dollar;PATH environment
variable. On the assumption that this worked, the screen should now
look something like this:
@@ -134,10 +114,7 @@ NAME="AEN67"
CLASS="MEDIAOBJECT"
><P
><IMG
-SRC="figures/gimp_startup.png"
-ALT="Startup window for The GIMP"
-></IMG
-></P
+SRC="figures/gimp_startup.png"></P
></DIV
></DIV
>
@@ -172,10 +149,7 @@ NAME="AEN78"
CLASS="MEDIAOBJECT"
><P
><IMG
-SRC="figures/gimp_image.png"
-ALT="A Sample Image displayed by The Gimp"
-></IMG
-></P
+SRC="figures/gimp_image.png"></P
></DIV
></DIV
>
@@ -188,6 +162,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -199,6 +174,7 @@ ALIGN="left"
VALIGN="top"
><A
HREF="c29.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -206,7 +182,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -215,6 +192,7 @@ ALIGN="right"
VALIGN="top"
><A
HREF="x85.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
diff --git a/doc/users_guide/html/docbook.css b/doc/users_guide/html/docbook.css
deleted file mode 100644
index b42fb27..0000000
--- a/doc/users_guide/html/docbook.css
+++ /dev/null
@@ -1,20 +0,0 @@
-.BOOK .TITLE { text-align: center }
-.BOOK .SUBTITLE { text-align: center }
-.BOOK .CORPAUTHOR { text-align: center }
-.BOOK .AUTHOR { text-align: center }
-.BOOK .AFFILIATION { text-align: center }
-.BOOK .EDITEDBY { text-align: center }
-.BOOK .EDITOR { text-align: center }
-.BOOK .GRAPHIC { text-align: center }
-
-.ARTICLE .TITLE { text-align: center }
-.ARTICLE .SUBTITLE { text-align: center }
-.ARTICLE .CORPAUTHOR { text-align: center }
-.ARTICLE .AUTHOR { text-align: center }
-.ARTICLE .AFFILIATION { text-align: center }
-.ARTICLE .EDITEDBY { text-align: center }
-.ARTICLE .EDITOR { text-align: center }
-.ARTICLE .GRAPHIC { text-align: center }
-.ARTICLE .ABSTRACT { margin-left: 0.5in;
- margin-right: 0.5in;
- font-style: italic }
diff --git a/doc/users_guide/html/figures/cups_admin.png b/doc/users_guide/html/figures/cups_admin.png
deleted file mode 100644
index 464fcc4..0000000
--- a/doc/users_guide/html/figures/cups_admin.png
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/figures/cups_admin_device.png b/doc/users_guide/html/figures/cups_admin_device.png
deleted file mode 100644
index b258263..0000000
--- a/doc/users_guide/html/figures/cups_admin_device.png
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/figures/cups_admin_make.png b/doc/users_guide/html/figures/cups_admin_make.png
deleted file mode 100644
index 1948ba7..0000000
--- a/doc/users_guide/html/figures/cups_admin_make.png
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/figures/cups_admin_model.png b/doc/users_guide/html/figures/cups_admin_model.png
deleted file mode 100644
index b476a75..0000000
--- a/doc/users_guide/html/figures/cups_admin_model.png
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/figures/cups_admin_success.png b/doc/users_guide/html/figures/cups_admin_success.png
deleted file mode 100644
index edebafe..0000000
--- a/doc/users_guide/html/figures/cups_admin_success.png
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/figures/cups_config_printer.png b/doc/users_guide/html/figures/cups_config_printer.png
deleted file mode 100644
index 1f980dc..0000000
--- a/doc/users_guide/html/figures/cups_config_printer.png
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/figures/cups_my_printer.png b/doc/users_guide/html/figures/cups_my_printer.png
deleted file mode 100644
index d8441c8..0000000
--- a/doc/users_guide/html/figures/cups_my_printer.png
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/figures/cups_printers.png b/doc/users_guide/html/figures/cups_printers.png
deleted file mode 100644
index 4d45d1c..0000000
--- a/doc/users_guide/html/figures/cups_printers.png
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/figures/cups_startup.png b/doc/users_guide/html/figures/cups_startup.png
deleted file mode 100644
index 22d01d0..0000000
--- a/doc/users_guide/html/figures/cups_startup.png
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/figures/gimp-print-gui-1.png b/doc/users_guide/html/figures/gimp-print-gui-1.png
deleted file mode 100644
index 1c083bb..0000000
--- a/doc/users_guide/html/figures/gimp-print-gui-1.png
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/figures/gimp-print-gui.png b/doc/users_guide/html/figures/gimp-print-gui.png
deleted file mode 100644
index a9739fb..0000000
--- a/doc/users_guide/html/figures/gimp-print-gui.png
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/figures/gimp-print-new-printer.png b/doc/users_guide/html/figures/gimp-print-new-printer.png
deleted file mode 100644
index 39dd681..0000000
--- a/doc/users_guide/html/figures/gimp-print-new-printer.png
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/figures/gimp-print-print-color-adjust.png b/doc/users_guide/html/figures/gimp-print-print-color-adjust.png
deleted file mode 100644
index 5ab1a33..0000000
--- a/doc/users_guide/html/figures/gimp-print-print-color-adjust.png
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/figures/gimp-print-setup.png b/doc/users_guide/html/figures/gimp-print-setup.png
deleted file mode 100644
index e406c0b..0000000
--- a/doc/users_guide/html/figures/gimp-print-setup.png
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/figures/gimp_image.png b/doc/users_guide/html/figures/gimp_image.png
deleted file mode 100644
index 9193558..0000000
--- a/doc/users_guide/html/figures/gimp_image.png
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/figures/gimp_startup.png b/doc/users_guide/html/figures/gimp_startup.png
deleted file mode 100644
index b6335e1..0000000
--- a/doc/users_guide/html/figures/gimp_startup.png
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/book1.html b/doc/users_guide/html/index.html
index 2365338..4563d68 100644
--- a/doc/users_guide/html/book1.html
+++ b/doc/users_guide/html/index.html
@@ -1,16 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TITLE
+>The User's Guide to Gutenprint - Complete Edition</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="NEXT"
TITLE="Project History"
HREF="c29.html"></HEAD
><BODY
CLASS="BOOK"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="BOOK"
><A
@@ -22,35 +27,32 @@ CLASS="TITLEPAGE"
CLASS="TITLE"
><A
NAME="AEN2"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</A
+>The User's Guide to Gutenprint - Complete Edition</A
></H1
><H3
CLASS="AUTHOR"
><A
NAME="AEN6"
->Andy Stewart</A
-></H3
+></A
+>Andy Stewart</H3
><P
CLASS="COPYRIGHT"
-><A
-HREF="ln12.html"
->Copyright</A
-> &copy; 2002 by Andy Stewart</P
+>Copyright &copy; 2002 Andy Stewart</P
><DIV
><DIV
CLASS="ABSTRACT"
+><P
+></P
><A
NAME="AEN16"
></A
><P
-></P
-><P
-> The Gimp-Print Top Quality Printer Drivers (hereafter
-called Gimp-Print) are a set of printer drivers written to
+> The Gutenprint Top Quality Printer Drivers (hereafter
+called Gutenprint) are a set of printer drivers written to
take advantage of the full capabilities of a wide range of
printers. These drivers should work on any POSIX compliant operating
system (e.g. Linux, Solaris, IRIX, etc). This document will explain how to
-use the Gimp-Print software to achieve high quality printouts from the
+use the Gutenprint software to achieve high quality printouts from the
<A
HREF="http://www.gimp.org"
TARGET="_top"
@@ -65,7 +67,7 @@ TARGET="_top"
System).
</P
><P
-> Please note that in addition to using the Gimp-Print software as a
+> Please note that in addition to using the Gutenprint software as a
print plugin for the GIMP, and as a set of printer drivers for CUPS, this
software can also be compiled and used with the
<A
@@ -82,16 +84,16 @@ TARGET="_top"
software.
</P
><P
->Regardless of whether the Gimp-Print software is used with the GIMP,
+>Regardless of whether the Gutenprint software is used with the GIMP,
CUPS, Ghostscript, or Foomatic, the print quality and printer settings
-remain the same. However, use of the Gimp-Print with Ghostscript and
+remain the same. However, use of the Gutenprint with Ghostscript and
Foomatic is not covered in this document. These topics may be covered
in a future revision of this document.
</P
><P
-> This document corresponds to version 4.2.0 and later of the Gimp-Print
+> This document corresponds to version 4.2.0 and later of the Gutenprint
software. This document will serve as a guide to the user, and as such
-will not explain how to install Gimp-Print, CUPS, GIMP, Ghostscript,
+will not explain how to install Gutenprint, CUPS, GIMP, Ghostscript,
Foomatic, or any other related software.
</P
><P
@@ -120,6 +122,30 @@ TARGET="_top"
></P
></DIV
></DIV
+><DIV
+CLASS="LEGALNOTICE"
+><P
+></P
+><A
+NAME="AEN12"
+></A
+><P
+>The User's Guide to Gutenprint - Complete Edition,
+Copyright 2002, Andy Stewart.
+ </P
+><P
+> Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+Version 1.1 or any later version published by the Free Software
+Foundation with no invariant sections, no Front-Cover texts, and no
+Back-Cover texts. A copy of the license is included in <A
+HREF="a630.html"
+>Appendix A</A
+>.
+ </P
+><P
+></P
+></DIV
><HR></DIV
><DIV
CLASS="TOC"
@@ -135,51 +161,51 @@ HREF="c29.html"
></DT
><DT
>2. <A
-HREF="ch-gimp-and-gimp-print.html"
->GIMP and Gimp-Print</A
+HREF="c61.html"
+>GIMP and Gutenprint</A
></DT
><DD
><DL
><DT
-><A
-HREF="ch-gimp-and-gimp-print.html#AEN63"
+>2.1. <A
+HREF="c61.html#AEN63"
>Running the GIMP</A
></DT
><DT
-><A
+>2.2. <A
HREF="x85.html"
>The Gimp-Print Graphical User Interface</A
></DT
><DD
><DL
><DT
-><A
+>2.2.1. <A
HREF="x85.html#AEN130"
>Printer Settings</A
></DT
><DT
-><A
-HREF="x85.html#AEN234"
+>2.2.2. <A
+HREF="x85.html#AEN230"
>Preview</A
></DT
><DT
-><A
-HREF="x85.html#AEN258"
+>2.2.3. <A
+HREF="x85.html#AEN254"
>Position</A
></DT
><DT
-><A
-HREF="x85.html#AEN330"
+>2.2.4. <A
+HREF="x85.html#AEN326"
>Size</A
></DT
><DT
-><A
-HREF="x85.html#AEN357"
+>2.2.5. <A
+HREF="x85.html#AEN353"
>Image/Output Settings</A
></DT
><DT
-><A
-HREF="x85.html#AEN430"
+>2.2.6. <A
+HREF="x85.html#AEN426"
>Printing and Saving Settings</A
></DT
></DL
@@ -188,80 +214,80 @@ HREF="x85.html#AEN430"
></DD
><DT
>3. <A
-HREF="c447.html"
->CUPS and Gimp-Print</A
+HREF="c443.html"
+>CUPS and Gutenprint</A
></DT
><DD
><DL
><DT
-><A
-HREF="c447.html#AEN449"
+>3.1. <A
+HREF="c443.html#AEN445"
>Introduction</A
></DT
><DT
-><A
-HREF="x456.html"
+>3.2. <A
+HREF="x452.html"
>CUPS Printer Installation</A
></DT
><DT
-><A
-HREF="x548.html"
+>3.3. <A
+HREF="x544.html"
>Configuring your Printer in CUPS</A
></DT
><DT
-><A
-HREF="x562.html"
+>3.4. <A
+HREF="x559.html"
>Using CUPS from the Command Line</A
></DT
></DL
></DD
><DT
>4. <A
-HREF="c570.html"
->Gimp-Print Utilities</A
+HREF="c568.html"
+>Gutenprint Utilities</A
></DT
><DD
><DL
><DT
-><A
-HREF="c570.html#AEN572"
+>4.1. <A
+HREF="c568.html#AEN570"
>escputil</A
></DT
><DD
><DL
><DT
-><A
-HREF="c570.html#AEN584"
+>4.1.1. <A
+HREF="c568.html#AEN582"
>Determining Ink Level</A
></DT
><DT
-><A
-HREF="c570.html#AEN593"
+>4.1.2. <A
+HREF="c568.html#AEN591"
>Error During Ink Level Determination</A
></DT
><DT
-><A
-HREF="c570.html#AEN597"
+>4.1.3. <A
+HREF="c568.html#AEN595"
>Nozzle Check</A
></DT
><DT
-><A
-HREF="c570.html#AEN602"
+>4.1.4. <A
+HREF="c568.html#AEN600"
>Clean the Print Head</A
></DT
><DT
-><A
-HREF="c570.html#AEN608"
+>4.1.5. <A
+HREF="c568.html#AEN606"
>Align the Print Head</A
></DT
><DT
-><A
-HREF="c570.html#AEN624"
+>4.1.6. <A
+HREF="c568.html#AEN622"
>Printer Identification</A
></DT
><DT
-><A
-HREF="c570.html#AEN628"
+>4.1.7. <A
+HREF="c568.html#AEN626"
>More Information</A
></DT
></DL
@@ -270,69 +296,69 @@ HREF="c570.html#AEN628"
></DD
><DT
>A. <A
-HREF="gfdl.html"
+HREF="a630.html"
>GNU Free Documentation License</A
></DT
><DD
><DL
><DT
>0. <A
-HREF="gfdl.html#AEN637"
+HREF="a630.html#AEN635"
>PREAMBLE</A
></DT
><DT
>1. <A
-HREF="x642.html"
+HREF="x640.html"
>APPLICABILITY AND DEFINITIONS</A
></DT
><DT
>2. <A
-HREF="x652.html"
+HREF="x650.html"
>VERBATIM COPYING</A
></DT
><DT
>3. <A
-HREF="x656.html"
+HREF="x654.html"
>COPYING IN QUANTITY</A
></DT
><DT
>4. <A
-HREF="x662.html"
+HREF="x660.html"
>MODIFICATIONS</A
></DT
><DT
>5. <A
-HREF="x698.html"
+HREF="x696.html"
>COMBINING DOCUMENTS</A
></DT
><DT
>6. <A
-HREF="x703.html"
+HREF="x701.html"
>COLLECTIONS OF DOCUMENTS</A
></DT
><DT
>7. <A
-HREF="x707.html"
+HREF="x705.html"
>AGGREGATION WITH INDEPENDENT WORKS</A
></DT
><DT
>8. <A
-HREF="x711.html"
+HREF="x709.html"
>TRANSLATION</A
></DT
><DT
>9. <A
-HREF="x714.html"
+HREF="x712.html"
>TERMINATION</A
></DT
><DT
>10. <A
-HREF="x717.html"
+HREF="x715.html"
>FUTURE REVISIONS OF THIS LICENSE</A
></DT
><DT
><A
-HREF="x722.html"
+HREF="x720.html"
>How to use this License for your documents</A
></DT
></DL
@@ -349,12 +375,12 @@ CLASS="LOT"
></DT
><DT
>2-1. <A
-HREF="ch-gimp-and-gimp-print.html#AEN67"
+HREF="c61.html#AEN67"
>The Startup Window for The GIMP</A
></DT
><DT
>2-2. <A
-HREF="ch-gimp-and-gimp-print.html#AEN78"
+HREF="c61.html#AEN78"
>A Sample Image Displayed by The GIMP</A
></DT
><DT
@@ -384,47 +410,47 @@ HREF="x85.html#FIG-GIMP-PRINT-COLOR-ADJUST"
></DT
><DT
>3-1. <A
-HREF="x456.html#AEN460"
+HREF="x452.html#AEN456"
>The CUPS Startup Window</A
></DT
><DT
>3-2. <A
-HREF="x456.html#AEN470"
+HREF="x452.html#AEN466"
>The CUPS Printers Window</A
></DT
><DT
>3-3. <A
-HREF="x456.html#AEN479"
+HREF="x452.html#AEN475"
>The CUPS Admin Window</A
></DT
><DT
>3-4. <A
-HREF="x456.html#FIG-CUPS-ADMIN-DEVICE"
+HREF="x452.html#FIG-CUPS-ADMIN-DEVICE"
>The CUPS Admin Device Window</A
></DT
><DT
>3-5. <A
-HREF="x456.html#AEN498"
+HREF="x452.html#AEN494"
>The CUPS Admin Model/Driver Window</A
></DT
><DT
>3-6. <A
-HREF="x456.html#FIG-CUPS-ADMIN-MODEL"
+HREF="x452.html#FIG-CUPS-ADMIN-MODEL"
>The 2nd CUPS Admin Model/Driver Window</A
></DT
><DT
>3-7. <A
-HREF="x456.html#AEN530"
+HREF="x452.html#AEN526"
>The CUPS Admin Success Window</A
></DT
><DT
>3-8. <A
-HREF="x456.html#FIG-CUPS-MY-PRINTER"
+HREF="x452.html#FIG-CUPS-MY-PRINTER"
>The CUPS Window for Your Printer</A
></DT
><DT
>3-9. <A
-HREF="x548.html#FIG-CUPS-PRINTER-CONFIG-WINDOW"
+HREF="x544.html#FIG-CUPS-PRINTER-CONFIG-WINDOW"
>The CUPS Printer Cofiguration Window</A
></DT
></DL
@@ -435,6 +461,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -456,6 +483,7 @@ ALIGN="right"
VALIGN="top"
><A
HREF="c29.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
diff --git a/doc/users_guide/html/ln12.html b/doc/users_guide/html/ln12.html
deleted file mode 100644
index 1f8242f..0000000
--- a/doc/users_guide/html/ln12.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<HTML
-><HEAD
-><META
-NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
-REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
-REL="NEXT"
-TITLE="Project History"
-HREF="c29.html"></HEAD
-><BODY
-><DIV
-CLASS="NAVHEADER"
-><TABLE
-WIDTH="100%"
-BORDER="0"
-CELLPADDING="0"
-CELLSPACING="0"
-><TR
-><TH
-COLSPAN="3"
-ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
-></TR
-></TABLE
-><HR
-ALIGN="LEFT"
-WIDTH="100%"></DIV
-><DIV
-CLASS="LEGALNOTICE"
-><A
-NAME="AEN12"
-></A
-><P
-></P
-><P
->The User's Guide to the Gimp-Print Top Quality Printer
-Drivers, Copyright 2002, Andy Stewart.
- </P
-><P
-> Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License,
-Version 1.1 or any later version published by the Free Software
-Foundation with no invariant sections, no Front-Cover texts, and no
-Back-Cover texts. A copy of the license is included in <A
-HREF="gfdl.html"
->Appendix A</A
->.
- </P
-><P
-></P
-></DIV
-><DIV
-CLASS="NAVFOOTER"
-><HR
-ALIGN="LEFT"
-WIDTH="100%"><TABLE
-WIDTH="100%"
-BORDER="0"
-CELLPADDING="0"
-CELLSPACING="0"
-><TR
-><TD
-WIDTH="33%"
-ALIGN="left"
-VALIGN="top"
->&nbsp;</TD
-><TD
-WIDTH="34%"
-ALIGN="center"
-VALIGN="top"
-><A
-HREF="book1.html"
->Home</A
-></TD
-><TD
-WIDTH="33%"
-ALIGN="right"
-VALIGN="top"
->&nbsp;</TD
-></TR
-></TABLE
-></DIV
-></BODY
-></HTML
-> \ No newline at end of file
diff --git a/doc/users_guide/html/stylesheet-images/caution.gif b/doc/users_guide/html/stylesheet-images/caution.gif
deleted file mode 100644
index 9cc2e15..0000000
--- a/doc/users_guide/html/stylesheet-images/caution.gif
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/stylesheet-images/home.gif b/doc/users_guide/html/stylesheet-images/home.gif
deleted file mode 100644
index 55e1d59..0000000
--- a/doc/users_guide/html/stylesheet-images/home.gif
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/stylesheet-images/important.gif b/doc/users_guide/html/stylesheet-images/important.gif
deleted file mode 100644
index 25e40c7..0000000
--- a/doc/users_guide/html/stylesheet-images/important.gif
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/stylesheet-images/next.gif b/doc/users_guide/html/stylesheet-images/next.gif
deleted file mode 100644
index 8c502e7..0000000
--- a/doc/users_guide/html/stylesheet-images/next.gif
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/stylesheet-images/note.gif b/doc/users_guide/html/stylesheet-images/note.gif
deleted file mode 100644
index 7322e8e..0000000
--- a/doc/users_guide/html/stylesheet-images/note.gif
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/stylesheet-images/prev.gif b/doc/users_guide/html/stylesheet-images/prev.gif
deleted file mode 100644
index 0894d9e..0000000
--- a/doc/users_guide/html/stylesheet-images/prev.gif
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/stylesheet-images/tip.gif b/doc/users_guide/html/stylesheet-images/tip.gif
deleted file mode 100644
index f062955..0000000
--- a/doc/users_guide/html/stylesheet-images/tip.gif
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/stylesheet-images/toc-blank.gif b/doc/users_guide/html/stylesheet-images/toc-blank.gif
deleted file mode 100644
index 6c65e3a..0000000
--- a/doc/users_guide/html/stylesheet-images/toc-blank.gif
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/stylesheet-images/toc-minus.gif b/doc/users_guide/html/stylesheet-images/toc-minus.gif
deleted file mode 100644
index 40ebe61..0000000
--- a/doc/users_guide/html/stylesheet-images/toc-minus.gif
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/stylesheet-images/toc-plus.gif b/doc/users_guide/html/stylesheet-images/toc-plus.gif
deleted file mode 100644
index 3e9e7d5..0000000
--- a/doc/users_guide/html/stylesheet-images/toc-plus.gif
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/stylesheet-images/up.gif b/doc/users_guide/html/stylesheet-images/up.gif
deleted file mode 100644
index e899a27..0000000
--- a/doc/users_guide/html/stylesheet-images/up.gif
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/stylesheet-images/warning.gif b/doc/users_guide/html/stylesheet-images/warning.gif
deleted file mode 100644
index a587079..0000000
--- a/doc/users_guide/html/stylesheet-images/warning.gif
+++ /dev/null
Binary files differ
diff --git a/doc/users_guide/html/x456.html b/doc/users_guide/html/x452.html
index 76cb3ca..ce48444 100644
--- a/doc/users_guide/html/x456.html
+++ b/doc/users_guide/html/x452.html
@@ -1,28 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>CUPS Printer Installation</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="UP"
-TITLE="CUPS and Gimp-Print"
-HREF="c447.html"><LINK
+TITLE="CUPS and Gutenprint"
+HREF="c443.html"><LINK
REL="PREVIOUS"
-TITLE="CUPS and Gimp-Print"
-HREF="c447.html"><LINK
+TITLE="CUPS and Gutenprint"
+HREF="c443.html"><LINK
REL="NEXT"
TITLE="Configuring your Printer in CUPS"
-HREF="x548.html"></HEAD
+HREF="x544.html"></HEAD
><BODY
CLASS="SECT1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -31,7 +37,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -39,20 +45,22 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="c447.html"
+HREF="c443.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
->Chapter 3. CUPS and Gimp-Print</TD
+>Chapter 3. CUPS and Gutenprint</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="x548.html"
+HREF="x544.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -65,8 +73,8 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN456"
->CUPS Printer Installation</A
+NAME="AEN452"
+>3.2. CUPS Printer Installation</A
></H1
><P
>This explanation will use the web interface provided by CUPS. First,
@@ -81,7 +89,7 @@ following screen should appear within your browser.
><DIV
CLASS="FIGURE"
><A
-NAME="AEN460"
+NAME="AEN456"
></A
><P
><B
@@ -91,10 +99,7 @@ NAME="AEN460"
CLASS="MEDIAOBJECT"
><P
><IMG
-SRC="figures/cups_startup.png"
-ALT="The CUPS Startup Window"
-></IMG
-></P
+SRC="figures/cups_startup.png"></P
></DIV
></DIV
><P
@@ -112,7 +117,7 @@ have not yet configured any printers.
><DIV
CLASS="FIGURE"
><A
-NAME="AEN470"
+NAME="AEN466"
></A
><P
><B
@@ -122,10 +127,7 @@ NAME="AEN470"
CLASS="MEDIAOBJECT"
><P
><IMG
-SRC="figures/cups_printers.png"
-ALT="The CUPS Printers Window"
-></IMG
-></P
+SRC="figures/cups_printers.png"></P
></DIV
></DIV
><P
@@ -138,7 +140,7 @@ You will then see the Admin screen (shown below).
><DIV
CLASS="FIGURE"
><A
-NAME="AEN479"
+NAME="AEN475"
></A
><P
><B
@@ -148,10 +150,7 @@ NAME="AEN479"
CLASS="MEDIAOBJECT"
><P
><IMG
-SRC="figures/cups_admin.png"
-ALT="The CUPS Admin Window"
-></IMG
-></P
+SRC="figures/cups_admin.png"></P
></DIV
></DIV
><P
@@ -177,10 +176,7 @@ NAME="FIG-CUPS-ADMIN-DEVICE"
CLASS="MEDIAOBJECT"
><P
><IMG
-SRC="figures/cups_admin_device.png"
-ALT="The CUPS Admin Device Window"
-></IMG
-></P
+SRC="figures/cups_admin_device.png"></P
></DIV
></DIV
><P
@@ -200,7 +196,7 @@ CLASS="GUIBUTTON"
><DIV
CLASS="FIGURE"
><A
-NAME="AEN498"
+NAME="AEN494"
></A
><P
><B
@@ -210,10 +206,7 @@ NAME="AEN498"
CLASS="MEDIAOBJECT"
><P
><IMG
-SRC="figures/cups_admin_make.png"
-ALT="The CUPS Admin Model/Driver Window"
-></IMG
-></P
+SRC="figures/cups_admin_make.png"></P
></DIV
></DIV
><DIV
@@ -222,31 +215,52 @@ CLASS="CAUTION"
></P
><TABLE
CLASS="CAUTION"
-BORDER="1"
WIDTH="100%"
+BORDER="0"
><TR
><TD
+WIDTH="25"
ALIGN="CENTER"
+VALIGN="TOP"
+><IMG
+SRC="../images/caution.gif"
+HSPACE="5"
+ALT="Caution"></TD
+><TH
+ALIGN="LEFT"
+VALIGN="MIDDLE"
><B
>Caution Regarding USB Printers</B
-></TD
+></TH
></TR
><TR
><TD
+>&nbsp;</TD
+><TD
ALIGN="LEFT"
+VALIGN="TOP"
><P
->CUPS versions 1.1.11 and later <I
+>CUPS versions 1.1.11 and later <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>REQUIRE</I
+></SPAN
>
the user to insure that the desired USB printer is powered on
-<I
+<SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>AND</I
+></SPAN
> physically connected to the USB bus
-<I
+<SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>BEFORE</I
+></SPAN
> starting the CUPS software.
</P
><P
@@ -260,7 +274,7 @@ simply plug in the USB printer and power it on after CUPS has started.
started, there will not be a USB printer shown in the
list of devices on the CUPS Admin Device Window (see
<A
-HREF="x456.html#FIG-CUPS-ADMIN-DEVICE"
+HREF="x452.html#FIG-CUPS-ADMIN-DEVICE"
>Figure 3-4</A
>). In this event, stop the CUPS
software, properly connect and power on the USB printer, and restart
@@ -269,7 +283,7 @@ the CUPS software.
><P
>From the list of devices shown in the CUPS Admin Device Window
(see <A
-HREF="x456.html#FIG-CUPS-ADMIN-DEVICE"
+HREF="x452.html#FIG-CUPS-ADMIN-DEVICE"
>Figure 3-4</A
>), a clever user might
attempt to avoid this issue by selecting
@@ -309,11 +323,11 @@ supported for each printer, as denoted by the initials in parenthesis.
(en) would be for English, (da) for Danish, (sv) for Swedish, (fr) for
French, (no) for Norwegian, (pl) for Polish, and (en_GB) for British
English (see <A
-HREF="x456.html#FIG-CUPS-ADMIN-MODEL"
+HREF="x452.html#FIG-CUPS-ADMIN-MODEL"
>Figure 3-6</A
>). Also take note
-of the Gimp-Print revision for the driver, and ensure that it is
-indeed the version of Gimp-Print which you have most recently
+of the Gutenprint revision for the driver, and ensure that it is
+indeed the version of Gutenprint which you have most recently
installed. Once you have made the proper selection, click on the
<SPAN
CLASS="GUIBUTTON"
@@ -333,16 +347,13 @@ NAME="FIG-CUPS-ADMIN-MODEL"
CLASS="MEDIAOBJECT"
><P
><IMG
-SRC="figures/cups_admin_model.png"
-ALT="The 2nd CUPS Admin Model/Driver Window"
-></IMG
-></P
+SRC="figures/cups_admin_model.png"></P
></DIV
></DIV
><DIV
CLASS="FIGURE"
><A
-NAME="AEN530"
+NAME="AEN526"
></A
><P
><B
@@ -352,10 +363,7 @@ NAME="AEN530"
CLASS="MEDIAOBJECT"
><P
><IMG
-SRC="figures/cups_admin_success.png"
-ALT="The CUPS Admin Success Window"
-></IMG
-></P
+SRC="figures/cups_admin_success.png"></P
></DIV
></DIV
><P
@@ -377,16 +385,13 @@ NAME="FIG-CUPS-MY-PRINTER"
CLASS="MEDIAOBJECT"
><P
><IMG
-SRC="figures/cups_my_printer.png"
-ALT="The CUPS Window for Your Printer"
-></IMG
-></P
+SRC="figures/cups_my_printer.png"></P
></DIV
></DIV
><P
>After clicking on your_printer (epson_870 in this example), a window
will appear similar to that shown in <A
-HREF="x456.html#FIG-CUPS-MY-PRINTER"
+HREF="x452.html#FIG-CUPS-MY-PRINTER"
>Figure 3-8</A
>.
It would probably be a good idea at this point to click on the
@@ -394,7 +399,7 @@ It would probably be a good idea at this point to click on the
CLASS="GUIBUTTON"
>Print Test Page</SPAN
> button to ensure that
-everything is working properly. Take note of the Gimp-Print revision
+everything is working properly. Take note of the Gutenprint revision
printed on this screen and confirm once again that it is the expected
revision.
</P
@@ -404,6 +409,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -414,7 +420,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="c447.html"
+HREF="c443.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -422,7 +429,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -430,7 +438,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="x548.html"
+HREF="x544.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -439,13 +448,14 @@ HREF="x548.html"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
->CUPS and Gimp-Print</TD
+>CUPS and Gutenprint</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="c447.html"
+HREF="c443.html"
+ACCESSKEY="U"
>Up</A
></TD
><TD
diff --git a/doc/users_guide/html/x548.html b/doc/users_guide/html/x544.html
index 9c8abbf..c787a27 100644
--- a/doc/users_guide/html/x548.html
+++ b/doc/users_guide/html/x544.html
@@ -1,28 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Configuring your Printer in CUPS</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="UP"
-TITLE="CUPS and Gimp-Print"
-HREF="c447.html"><LINK
+TITLE="CUPS and Gutenprint"
+HREF="c443.html"><LINK
REL="PREVIOUS"
TITLE="CUPS Printer Installation"
-HREF="x456.html"><LINK
+HREF="x452.html"><LINK
REL="NEXT"
TITLE="Using CUPS from the Command Line"
-HREF="x562.html"></HEAD
+HREF="x559.html"></HEAD
><BODY
CLASS="SECT1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -31,7 +37,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -39,20 +45,22 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="x456.html"
+HREF="x452.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
->Chapter 3. CUPS and Gimp-Print</TD
+>Chapter 3. CUPS and Gutenprint</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="x562.html"
+HREF="x559.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -65,12 +73,12 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN548"
->Configuring your Printer in CUPS</A
+NAME="AEN544"
+>3.3. Configuring your Printer in CUPS</A
></H1
><P
>With reference to <A
-HREF="x456.html#FIG-CUPS-MY-PRINTER"
+HREF="x452.html#FIG-CUPS-MY-PRINTER"
>Figure 3-8</A
>, click
on the <SPAN
@@ -79,7 +87,7 @@ CLASS="GUIBUTTON"
> button. A partial
screenshot of the printer configuration window appears in
<A
-HREF="x548.html#FIG-CUPS-PRINTER-CONFIG-WINDOW"
+HREF="x544.html#FIG-CUPS-PRINTER-CONFIG-WINDOW"
>Figure 3-9</A
>.
The contents of this window will vary depending on precisely which
@@ -87,10 +95,21 @@ printer you selected when you configured CUPS for your printer. The
screenshot shows the selections made by the author for his printer.
The individual selections will not be explained in detail here, as
they are the same selections which are available when using the
-Gimp-Print plugin to the GIMP. These selections are explained in
-detail in various sections of <A
-HREF="ch-gimp-and-gimp-print.html"
->Chapter 2</A
+Gutenprint plugin to the GIMP. These selections are explained in
+detail in various sections of the <SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>GIMP and
+Gutenprint</I
+></SPAN
+> chapter of <SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>The User's Guide to the
+Gutenprint Top Quality Printer Drivers</I
+></SPAN
>.
</P
><DIV
@@ -106,10 +125,7 @@ NAME="FIG-CUPS-PRINTER-CONFIG-WINDOW"
CLASS="MEDIAOBJECT"
><P
><IMG
-SRC="figures/cups_config_printer.png"
-ALT="The CUPS Printer Configuration Window"
-></IMG
-></P
+SRC="figures/cups_config_printer.png"></P
></DIV
></DIV
></DIV
@@ -118,6 +134,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -128,7 +145,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="x456.html"
+HREF="x452.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -136,7 +154,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -144,7 +163,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="x562.html"
+HREF="x559.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -159,7 +179,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="c447.html"
+HREF="c443.html"
+ACCESSKEY="U"
>Up</A
></TD
><TD
diff --git a/doc/users_guide/html/x562.html b/doc/users_guide/html/x559.html
index 60e2cb6..ac9a1fd 100644
--- a/doc/users_guide/html/x562.html
+++ b/doc/users_guide/html/x559.html
@@ -1,28 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Using CUPS from the Command Line</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="UP"
-TITLE="CUPS and Gimp-Print"
-HREF="c447.html"><LINK
+TITLE="CUPS and Gutenprint"
+HREF="c443.html"><LINK
REL="PREVIOUS"
TITLE="Configuring your Printer in CUPS"
-HREF="x548.html"><LINK
+HREF="x544.html"><LINK
REL="NEXT"
-TITLE="Gimp-Print Utilities"
-HREF="c570.html"></HEAD
+TITLE="Gutenprint Utilities"
+HREF="c568.html"></HEAD
><BODY
CLASS="SECT1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -31,7 +37,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -39,20 +45,22 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="x548.html"
+HREF="x544.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
->Chapter 3. CUPS and Gimp-Print</TD
+>Chapter 3. CUPS and Gutenprint</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="c570.html"
+HREF="c568.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -65,14 +73,14 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN562"
->Using CUPS from the Command Line</A
+NAME="AEN559"
+>3.4. Using CUPS from the Command Line</A
></H1
><P
> It is possible to use the CUPS printing system from the command
line. While this document will not delve into all of the specifics of
the CUPS command line interface, there are portions of this interface
-which are specific to the Gimp-Print software.
+which are specific to the Gutenprint software.
</P
><P
>The command line is in some cases a more convenient way to generate
@@ -80,20 +88,14 @@ printed output (e.g. when printing from a script). However, most
people (including the author) cannot easily predict what a command
line option of "-o stpCyan=1350" will do to the output. It is
therefore a good idea to use the GIMP to view the image and the
-Gimp-Print plugin to preview these settings before relying on the
+Gutenprint plugin to preview these settings before relying on the
command line.
</P
><P
>When using CUPS from the command line, the command will have this
general format:
- <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
+ <PRE
CLASS="PROGRAMLISTING"
>
lpr -P my_printer_name \
@@ -102,23 +104,14 @@ CLASS="PROGRAMLISTING"
/path/to/printfile
</PRE
-></TD
-></TR
-></TABLE
>
When typing the command directly onto the command line, put all of the
command line options on one line, and do not type the "\" characters.
-The list of possible options which are specific to Gimp-Print,
+The list of possible options which are specific to Gutenprint,
followed by some of the supported choices, are shown below:
- <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
+ <PRE
CLASS="PROGRAMLISTING"
>
-o PageSize=&#60;...| A3 | A4 | A4 | ...&#62;
@@ -139,14 +132,22 @@ CLASS="PROGRAMLISTING"
-o stpYellow=&#60;0...4000&#62;
</PRE
-></TD
-></TR
-></TABLE
>
-For more detailed information, consult the appropriate sections of <A
-HREF="ch-gimp-and-gimp-print.html"
->Chapter 2</A
+For more detailed information, consult the appropriate sections of the <SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>GIMP and
+Gutenprint</I
+></SPAN
+> chapter of <SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>The User's Guide to the
+Gutenprint Top Quality Printer Drivers</I
+></SPAN
>.
</P
></DIV
@@ -155,6 +156,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -165,7 +167,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="x548.html"
+HREF="x544.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -173,7 +176,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -181,7 +185,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="c570.html"
+HREF="c568.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -196,14 +201,15 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="c447.html"
+HREF="c443.html"
+ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
->Gimp-Print Utilities</TD
+>Gutenprint Utilities</TD
></TR
></TABLE
></DIV
diff --git a/doc/users_guide/html/x642.html b/doc/users_guide/html/x640.html
index 621c57b..e1ce43b 100644
--- a/doc/users_guide/html/x642.html
+++ b/doc/users_guide/html/x640.html
@@ -1,28 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>APPLICABILITY AND DEFINITIONS</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="UP"
TITLE="GNU Free Documentation License"
-HREF="gfdl.html"><LINK
+HREF="a630.html"><LINK
REL="PREVIOUS"
TITLE="GNU Free Documentation License"
-HREF="gfdl.html"><LINK
+HREF="a630.html"><LINK
REL="NEXT"
TITLE="VERBATIM COPYING"
-HREF="x652.html"></HEAD
+HREF="x650.html"></HEAD
><BODY
CLASS="SECT1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -31,7 +37,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -39,7 +45,8 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="gfdl.html"
+HREF="a630.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -52,7 +59,8 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="x652.html"
+HREF="x650.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -65,7 +73,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN642"
+NAME="AEN640"
>1. APPLICABILITY AND DEFINITIONS</A
></H1
><P
@@ -138,6 +146,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -148,7 +157,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="gfdl.html"
+HREF="a630.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -156,7 +166,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -164,7 +175,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="x652.html"
+HREF="x650.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -179,7 +191,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="gfdl.html"
+HREF="a630.html"
+ACCESSKEY="U"
>Up</A
></TD
><TD
diff --git a/doc/users_guide/html/x652.html b/doc/users_guide/html/x650.html
index 25fde10..5f204ae 100644
--- a/doc/users_guide/html/x652.html
+++ b/doc/users_guide/html/x650.html
@@ -1,28 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>VERBATIM COPYING</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="UP"
TITLE="GNU Free Documentation License"
-HREF="gfdl.html"><LINK
+HREF="a630.html"><LINK
REL="PREVIOUS"
TITLE="APPLICABILITY AND DEFINITIONS"
-HREF="x642.html"><LINK
+HREF="x640.html"><LINK
REL="NEXT"
TITLE="COPYING IN QUANTITY"
-HREF="x656.html"></HEAD
+HREF="x654.html"></HEAD
><BODY
CLASS="SECT1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -31,7 +37,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -39,7 +45,8 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="x642.html"
+HREF="x640.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -52,7 +59,8 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="x656.html"
+HREF="x654.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -65,7 +73,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN652"
+NAME="AEN650"
>2. VERBATIM COPYING</A
></H1
><P
@@ -88,6 +96,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -98,7 +107,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="x642.html"
+HREF="x640.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -106,7 +116,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -114,7 +125,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="x656.html"
+HREF="x654.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -129,7 +141,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="gfdl.html"
+HREF="a630.html"
+ACCESSKEY="U"
>Up</A
></TD
><TD
diff --git a/doc/users_guide/html/x656.html b/doc/users_guide/html/x654.html
index 78f15ca..17bac2f 100644
--- a/doc/users_guide/html/x656.html
+++ b/doc/users_guide/html/x654.html
@@ -1,28 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>COPYING IN QUANTITY</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="UP"
TITLE="GNU Free Documentation License"
-HREF="gfdl.html"><LINK
+HREF="a630.html"><LINK
REL="PREVIOUS"
TITLE="VERBATIM COPYING"
-HREF="x652.html"><LINK
+HREF="x650.html"><LINK
REL="NEXT"
TITLE="MODIFICATIONS"
-HREF="x662.html"></HEAD
+HREF="x660.html"></HEAD
><BODY
CLASS="SECT1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -31,7 +37,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -39,7 +45,8 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="x652.html"
+HREF="x650.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -52,7 +59,8 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="x662.html"
+HREF="x660.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -65,7 +73,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN656"
+NAME="AEN654"
>3. COPYING IN QUANTITY</A
></H1
><P
@@ -112,6 +120,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -122,7 +131,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="x652.html"
+HREF="x650.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -130,7 +140,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -138,7 +149,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="x662.html"
+HREF="x660.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -153,7 +165,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="gfdl.html"
+HREF="a630.html"
+ACCESSKEY="U"
>Up</A
></TD
><TD
diff --git a/doc/users_guide/html/x662.html b/doc/users_guide/html/x660.html
index d76ee2e..37fa01c 100644
--- a/doc/users_guide/html/x662.html
+++ b/doc/users_guide/html/x660.html
@@ -1,28 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>MODIFICATIONS</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="UP"
TITLE="GNU Free Documentation License"
-HREF="gfdl.html"><LINK
+HREF="a630.html"><LINK
REL="PREVIOUS"
TITLE="COPYING IN QUANTITY"
-HREF="x656.html"><LINK
+HREF="x654.html"><LINK
REL="NEXT"
TITLE="COMBINING DOCUMENTS"
-HREF="x698.html"></HEAD
+HREF="x696.html"></HEAD
><BODY
CLASS="SECT1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -31,7 +37,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -39,7 +45,8 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="x656.html"
+HREF="x654.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -52,7 +59,8 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="x698.html"
+HREF="x696.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -65,7 +73,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN662"
+NAME="AEN660"
>4. MODIFICATIONS</A
></H1
><P
@@ -218,6 +226,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -228,7 +237,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="x656.html"
+HREF="x654.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -236,7 +246,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -244,7 +255,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="x698.html"
+HREF="x696.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -259,7 +271,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="gfdl.html"
+HREF="a630.html"
+ACCESSKEY="U"
>Up</A
></TD
><TD
diff --git a/doc/users_guide/html/x698.html b/doc/users_guide/html/x696.html
index 3fb386d..6646123 100644
--- a/doc/users_guide/html/x698.html
+++ b/doc/users_guide/html/x696.html
@@ -1,28 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>COMBINING DOCUMENTS</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="UP"
TITLE="GNU Free Documentation License"
-HREF="gfdl.html"><LINK
+HREF="a630.html"><LINK
REL="PREVIOUS"
TITLE="MODIFICATIONS"
-HREF="x662.html"><LINK
+HREF="x660.html"><LINK
REL="NEXT"
TITLE="COLLECTIONS OF DOCUMENTS"
-HREF="x703.html"></HEAD
+HREF="x701.html"></HEAD
><BODY
CLASS="SECT1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -31,7 +37,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -39,7 +45,8 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="x662.html"
+HREF="x660.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -52,7 +59,8 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="x703.html"
+HREF="x701.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -65,7 +73,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN698"
+NAME="AEN696"
>5. COMBINING DOCUMENTS</A
></H1
><P
@@ -97,6 +105,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -107,7 +116,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="x662.html"
+HREF="x660.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -115,7 +125,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -123,7 +134,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="x703.html"
+HREF="x701.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -138,7 +150,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="gfdl.html"
+HREF="a630.html"
+ACCESSKEY="U"
>Up</A
></TD
><TD
diff --git a/doc/users_guide/html/x703.html b/doc/users_guide/html/x701.html
index aedff67..19dedb7 100644
--- a/doc/users_guide/html/x703.html
+++ b/doc/users_guide/html/x701.html
@@ -1,28 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>COLLECTIONS OF DOCUMENTS</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="UP"
TITLE="GNU Free Documentation License"
-HREF="gfdl.html"><LINK
+HREF="a630.html"><LINK
REL="PREVIOUS"
TITLE="COMBINING DOCUMENTS"
-HREF="x698.html"><LINK
+HREF="x696.html"><LINK
REL="NEXT"
TITLE="AGGREGATION WITH INDEPENDENT WORKS"
-HREF="x707.html"></HEAD
+HREF="x705.html"></HEAD
><BODY
CLASS="SECT1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -31,7 +37,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -39,7 +45,8 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="x698.html"
+HREF="x696.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -52,7 +59,8 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="x707.html"
+HREF="x705.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -65,7 +73,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN703"
+NAME="AEN701"
>6. COLLECTIONS OF DOCUMENTS</A
></H1
><P
@@ -87,6 +95,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -97,7 +106,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="x698.html"
+HREF="x696.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -105,7 +115,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -113,7 +124,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="x707.html"
+HREF="x705.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -128,7 +140,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="gfdl.html"
+HREF="a630.html"
+ACCESSKEY="U"
>Up</A
></TD
><TD
diff --git a/doc/users_guide/html/x707.html b/doc/users_guide/html/x705.html
index f7a2a34..a27a409 100644
--- a/doc/users_guide/html/x707.html
+++ b/doc/users_guide/html/x705.html
@@ -1,28 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>AGGREGATION WITH INDEPENDENT WORKS</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="UP"
TITLE="GNU Free Documentation License"
-HREF="gfdl.html"><LINK
+HREF="a630.html"><LINK
REL="PREVIOUS"
TITLE="COLLECTIONS OF DOCUMENTS"
-HREF="x703.html"><LINK
+HREF="x701.html"><LINK
REL="NEXT"
TITLE="TRANSLATION"
-HREF="x711.html"></HEAD
+HREF="x709.html"></HEAD
><BODY
CLASS="SECT1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -31,7 +37,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -39,7 +45,8 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="x703.html"
+HREF="x701.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -52,7 +59,8 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="x711.html"
+HREF="x709.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -65,7 +73,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN707"
+NAME="AEN705"
>7. AGGREGATION WITH INDEPENDENT WORKS</A
></H1
><P
@@ -91,6 +99,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -101,7 +110,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="x703.html"
+HREF="x701.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -109,7 +119,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -117,7 +128,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="x711.html"
+HREF="x709.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -132,7 +144,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="gfdl.html"
+HREF="a630.html"
+ACCESSKEY="U"
>Up</A
></TD
><TD
diff --git a/doc/users_guide/html/x711.html b/doc/users_guide/html/x709.html
index c9178e4..c0dd979 100644
--- a/doc/users_guide/html/x711.html
+++ b/doc/users_guide/html/x709.html
@@ -1,28 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>TRANSLATION</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="UP"
TITLE="GNU Free Documentation License"
-HREF="gfdl.html"><LINK
+HREF="a630.html"><LINK
REL="PREVIOUS"
TITLE="AGGREGATION WITH INDEPENDENT WORKS"
-HREF="x707.html"><LINK
+HREF="x705.html"><LINK
REL="NEXT"
TITLE="TERMINATION"
-HREF="x714.html"></HEAD
+HREF="x712.html"></HEAD
><BODY
CLASS="SECT1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -31,7 +37,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -39,7 +45,8 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="x707.html"
+HREF="x705.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -52,7 +59,8 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="x714.html"
+HREF="x712.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -65,7 +73,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN711"
+NAME="AEN709"
>8. TRANSLATION</A
></H1
><P
@@ -86,6 +94,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -96,7 +105,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="x707.html"
+HREF="x705.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -104,7 +114,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -112,7 +123,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="x714.html"
+HREF="x712.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -127,7 +139,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="gfdl.html"
+HREF="a630.html"
+ACCESSKEY="U"
>Up</A
></TD
><TD
diff --git a/doc/users_guide/html/x714.html b/doc/users_guide/html/x712.html
index eaf6708..f7313d9 100644
--- a/doc/users_guide/html/x714.html
+++ b/doc/users_guide/html/x712.html
@@ -1,28 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>TERMINATION</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="UP"
TITLE="GNU Free Documentation License"
-HREF="gfdl.html"><LINK
+HREF="a630.html"><LINK
REL="PREVIOUS"
TITLE="TRANSLATION"
-HREF="x711.html"><LINK
+HREF="x709.html"><LINK
REL="NEXT"
TITLE="FUTURE REVISIONS OF THIS LICENSE"
-HREF="x717.html"></HEAD
+HREF="x715.html"></HEAD
><BODY
CLASS="SECT1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -31,7 +37,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -39,7 +45,8 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="x711.html"
+HREF="x709.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -52,7 +59,8 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="x717.html"
+HREF="x715.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -65,7 +73,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN714"
+NAME="AEN712"
>9. TERMINATION</A
></H1
><P
@@ -83,6 +91,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -93,7 +102,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="x711.html"
+HREF="x709.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -101,7 +111,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -109,7 +120,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="x717.html"
+HREF="x715.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -124,7 +136,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="gfdl.html"
+HREF="a630.html"
+ACCESSKEY="U"
>Up</A
></TD
><TD
diff --git a/doc/users_guide/html/x717.html b/doc/users_guide/html/x715.html
index 37b1e60..68e1489 100644
--- a/doc/users_guide/html/x717.html
+++ b/doc/users_guide/html/x715.html
@@ -1,28 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>FUTURE REVISIONS OF THIS LICENSE</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="UP"
TITLE="GNU Free Documentation License"
-HREF="gfdl.html"><LINK
+HREF="a630.html"><LINK
REL="PREVIOUS"
TITLE="TERMINATION"
-HREF="x714.html"><LINK
+HREF="x712.html"><LINK
REL="NEXT"
TITLE="How to use this License for your documents"
-HREF="x722.html"></HEAD
+HREF="x720.html"></HEAD
><BODY
CLASS="SECT1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -31,7 +37,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -39,7 +45,8 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="x714.html"
+HREF="x712.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -52,7 +59,8 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="x722.html"
+HREF="x720.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -65,7 +73,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN717"
+NAME="AEN715"
>10. FUTURE REVISIONS OF THIS LICENSE</A
></H1
><P
@@ -94,6 +102,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -104,7 +113,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="x714.html"
+HREF="x712.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -112,7 +122,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -120,7 +131,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="x722.html"
+HREF="x720.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -135,7 +147,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="gfdl.html"
+HREF="a630.html"
+ACCESSKEY="U"
>Up</A
></TD
><TD
diff --git a/doc/users_guide/html/x722.html b/doc/users_guide/html/x720.html
index 8b3ac32..aa1afe7 100644
--- a/doc/users_guide/html/x722.html
+++ b/doc/users_guide/html/x720.html
@@ -1,25 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>How to use this License for your documents</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="UP"
TITLE="GNU Free Documentation License"
-HREF="gfdl.html"><LINK
+HREF="a630.html"><LINK
REL="PREVIOUS"
TITLE="FUTURE REVISIONS OF THIS LICENSE"
-HREF="x717.html"></HEAD
+HREF="x715.html"></HEAD
><BODY
CLASS="SECT1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -28,7 +34,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -36,7 +42,8 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="x717.html"
+HREF="x715.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -59,7 +66,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN722"
+NAME="AEN720"
>How to use this License for your documents</A
></H1
><P
@@ -67,7 +74,7 @@ NAME="AEN722"
a copy of the License in the document and put the following
copyright and license notices just after the title page:</P
><A
-NAME="AEN725"
+NAME="AEN723"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
@@ -98,6 +105,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -108,7 +116,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="x717.html"
+HREF="x715.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -116,7 +125,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -136,7 +146,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="gfdl.html"
+HREF="a630.html"
+ACCESSKEY="U"
>Up</A
></TD
><TD
diff --git a/doc/users_guide/html/x85.html b/doc/users_guide/html/x85.html
index 5f78ca5..8c2395c 100644
--- a/doc/users_guide/html/x85.html
+++ b/doc/users_guide/html/x85.html
@@ -1,28 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>The Gimp-Print Graphical User Interface</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
-TITLE="The User's Guide to the Gimp-Print Top Quality Printer Drivers"
-HREF="book1.html"><LINK
+TITLE="The User's Guide to Gutenprint - Complete Edition"
+HREF="index.html"><LINK
REL="UP"
-TITLE="GIMP and Gimp-Print"
-HREF="ch-gimp-and-gimp-print.html"><LINK
+TITLE="GIMP and Gutenprint"
+HREF="c61.html"><LINK
REL="PREVIOUS"
-TITLE="GIMP and Gimp-Print"
-HREF="ch-gimp-and-gimp-print.html"><LINK
+TITLE="GIMP and Gutenprint"
+HREF="c61.html"><LINK
REL="NEXT"
-TITLE="CUPS and Gimp-Print"
-HREF="c447.html"></HEAD
+TITLE="CUPS and Gutenprint"
+HREF="c443.html"></HEAD
><BODY
CLASS="SECT1"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
+SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -31,7 +37,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
->The User's Guide to the Gimp-Print Top Quality Printer Drivers</TH
+>The User's Guide to Gutenprint - Complete Edition</TH
></TR
><TR
><TD
@@ -39,20 +45,22 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="ch-gimp-and-gimp-print.html"
+HREF="c61.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
->Chapter 2. GIMP and Gimp-Print</TD
+>Chapter 2. GIMP and Gutenprint</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="c447.html"
+HREF="c443.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -66,7 +74,7 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN85"
->The Gimp-Print Graphical User Interface</A
+>2.2. The Gimp-Print Graphical User Interface</A
></H1
><P
> Now that the GIMP is displaying your picture, put your mouse over
@@ -118,7 +126,7 @@ the major sections of this document:
><LI
><P
><A
-HREF="x85.html#AEN234"
+HREF="x85.html#AEN230"
>Preview</A
></P
></LI
@@ -139,21 +147,21 @@ HREF="x85.html#AEN130"
><LI
><P
><A
-HREF="x85.html#AEN258"
+HREF="x85.html#AEN254"
>Position</A
></P
></LI
><LI
><P
><A
-HREF="x85.html#AEN330"
+HREF="x85.html#AEN326"
>Size</A
></P
></LI
><LI
><P
><A
-HREF="x85.html#AEN430"
+HREF="x85.html#AEN426"
>Printing and Saving Settings</A
></P
></LI
@@ -173,10 +181,7 @@ NAME="FIG-GIMP-PRINT-GUI"
CLASS="MEDIAOBJECT"
><P
><IMG
-SRC="figures/gimp-print-gui.png"
-ALT="The GIMP Print GUI showing printer settings"
-></IMG
-></P
+SRC="figures/gimp-print-gui.png"></P
></DIV
></DIV
><DIV
@@ -192,10 +197,7 @@ NAME="FIG-GIMP-PRINT-GUI-1"
CLASS="MEDIAOBJECT"
><P
><IMG
-SRC="figures/gimp-print-gui-1.png"
-ALT="The GIMP Print GUI showing image/output settings"
-></IMG
-></P
+SRC="figures/gimp-print-gui-1.png"></P
></DIV
></DIV
><DIV
@@ -204,7 +206,7 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN130"
->Printer Settings</A
+>2.2.1. Printer Settings</A
></H2
><DIV
CLASS="SECT3"
@@ -212,7 +214,7 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN134"
->Printer</A
+>2.2.1.1. Printer</A
></H3
><P
> Click on the <SPAN
@@ -258,7 +260,7 @@ the settings are saved in a file called
CLASS="FILENAME"
>~/.gimp-1.2/printrc</TT
>. The user is cautioned about
-hand editing this file since it is generated by Gimp-Print (although
+hand editing this file since it is generated by Gutenprint (although
it was the only way that the author found for removing bogus entries
created while playing with the <SPAN
CLASS="GUIBUTTON"
@@ -272,7 +274,7 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN148"
->Setup Printer</A
+>2.2.1.2. Setup Printer</A
></H3
><P
> Before any useful printing can occur, the user needs to associate
@@ -302,10 +304,7 @@ NAME="AEN153"
CLASS="MEDIAOBJECT"
><P
><IMG
-SRC="figures/gimp-print-setup.png"
-ALT="The Setup Printer Window"
-></IMG
-></P
+SRC="figures/gimp-print-setup.png"></P
></DIV
></DIV
>
@@ -318,7 +317,7 @@ for a wide array of Postscript, inkjet, and laser printers. After you
have selected a printer, you will see the printer command displayed.
</P
><P
->The Gimp-Print software does all of the necessary conversion of the
+>The Gutenprint software does all of the necessary conversion of the
image to be printed into the language of your printer. It is
unnecessary and undesirable for any other sofware to manipulate this
data. (This is why the command contains the "-l" switch or the "-o
@@ -336,7 +335,7 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN163"
->New Printer</A
+>2.2.1.3. New Printer</A
></H3
><P
> In the previous sections, the user selected an existing printer
@@ -369,10 +368,7 @@ NAME="AEN168"
CLASS="MEDIAOBJECT"
><P
><IMG
-SRC="figures/gimp-print-new-printer.png"
-ALT="The New Printer Window"
-></IMG
-></P
+SRC="figures/gimp-print-new-printer.png"></P
></DIV
></DIV
>
@@ -403,7 +399,7 @@ perforated parts of the paper which will be removed after
printing the photo. By selecting the proper scaling percentage,
printing can be constrained to the 4x6 part of the paper which will
remain after the perforated sections are removed. The author has
-saved this setting using this feature of the Gimp-Print software.
+saved this setting using this feature of the Gutenprint software.
</P
></DIV
><DIV
@@ -412,12 +408,15 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN179"
->Media Size</A
+>2.2.1.4. Media Size</A
></H3
><P
-> The term <I
+> The term <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>media</I
+></SPAN
> refers to paper, card stock,
envelopes, or whatever you have put into your printer onto which
something will be printed. Click the arrow to the right of the
@@ -436,13 +435,19 @@ vary depending upon the printer model you have selected.
</P
><P
> Some printers support arbitrary (within limits!) paper sizes.
- These printers will let you select <I
+ These printers will let you select <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>Custom</I
+></SPAN
>
- or <I
+ or <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>Roll</I
+></SPAN
> paper sizes. When you select such a
printer, one or both of the <SPAN
CLASS="GUILABEL"
@@ -458,7 +463,7 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN189"
->Media Type</A
+>2.2.1.5. Media Type</A
></H3
><P
> The type of media onto which your image will be printed should be
@@ -484,17 +489,20 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN194"
->Media Source</A
+>2.2.1.6. Media Source</A
></H3
><P
> The <SPAN
CLASS="GUILABEL"
>Media Source</SPAN
> box allows the user to
- choose the paper source, sometimes called <I
+ choose the paper source, sometimes called <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>Input
Slot</I
+></SPAN
>, that the paper will be fed from. Many printers
only have one available input source (such as the standard paper
tray), in which case this entry will be grayed out. If your printer
@@ -510,7 +518,7 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN199"
->Ink Type</A
+>2.2.1.7. Ink Type</A
></H3
><P
> Some printers offer a choice of different types of ink or ink
@@ -529,7 +537,7 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN202"
->Resolution</A
+>2.2.1.8. Resolution</A
></H3
><P
> Click on the arrow to the right of the
@@ -551,19 +559,28 @@ CLASS="SECT4"
CLASS="SECT4"
><A
NAME="AEN206"
->DPI</A
+>2.2.1.8.1. DPI</A
></H4
><P
-> DPI is an acronym which stands for <I
+> DPI is an acronym which stands for <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>D</I
+></SPAN
>ots
-<I
+<SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>P</I
->er <I
+></SPAN
+>er <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>I</I
+></SPAN
>nch. This term refers
to the number of dots that your printer will print in a space of one
inch (approximately 2.54 cm). This is highly dependent upon the
@@ -586,7 +603,7 @@ CLASS="SECT4"
CLASS="SECT4"
><A
NAME="AEN212"
->Draft or Fast Economy Draft</A
+>2.2.1.8.2. Draft or Fast Economy Draft</A
></H4
><P
> When this text appears next to the resolution, it refers to the
@@ -603,7 +620,7 @@ CLASS="SECT4"
CLASS="SECT4"
><A
NAME="AEN215"
->Unidirectional</A
+>2.2.1.8.3. Unidirectional</A
></H4
><P
> When printing an image, you have probably noticed the print
@@ -628,19 +645,25 @@ CLASS="SECT4"
CLASS="SECT4"
><A
NAME="AEN219"
->High(est) Quality</A
+>2.2.1.8.4. High(est) Quality</A
></H4
><P
> With lower quality print modes, one may see an effect where
the printed image looks like it has rows of stripes with a small
separation between the stripes. This effect is called "banding" and
-is undesirable. In the <I
+is undesirable. In the <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>high</I
+></SPAN
> and
-<I
+<SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>highest</I
+></SPAN
> quality modes, the printer will make more
passes over the same part of the page in order to improve quality and
(reduce or) eliminate banding. This requires more temporary disk
@@ -654,42 +677,29 @@ CLASS="SECT4"
CLASS="SECT4"
><A
NAME="AEN224"
->Interleave</A
-></H4
-><P
-> Certain Epson printers (older models mostly) support a printing
- mode called <I
-CLASS="EMPHASIS"
->Interleave</I
->. This mode uses
- special software within the printer to improve the print quality.
- Interleave print modes will usually produce better quality
- output than non-Interleave modes, with only a small performance
- penalty. If Interleave is not listed at your chosen
- resolution, fear not. In those cases, the non-Interleave print
- modes offer similar printing quality improvements.
- </P
-></DIV
-><DIV
-CLASS="SECT4"
-><H4
-CLASS="SECT4"
-><A
-NAME="AEN228"
->DMT</A
+>2.2.1.8.5. DMT</A
></H4
><P
-> DMT is an acronym which stands for <I
+> DMT is an acronym which stands for <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>D</I
+></SPAN
>ot
- <I
+ <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>M</I
+></SPAN
>odulation
- <I
+ <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>T</I
+></SPAN
>echnology.
This term refers to a print mode used by certain Canon printers
to improve the quality of the printed output. Unfortunately,
@@ -705,8 +715,8 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN234"
->Preview</A
+NAME="AEN230"
+>2.2.2. Preview</A
></H2
><P
> Notice in the upper left of the window is a preview of your image.
@@ -744,9 +754,12 @@ is the first part of the media to enter the printer.
><UL
><LI
><P
-> Clicking and dragging the <I
+> Clicking and dragging the <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>left</I
+></SPAN
>
(primary) mouse button moves the image around the page as you would
expect; the image moves with the mouse. </P
@@ -754,9 +767,12 @@ CLASS="EMPHASIS"
><LI
><P
> Clicking and dragging the
- <I
+ <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>middle</I
+></SPAN
> mouse button moves the image around the
page in a finer fashion, such that each pixel of mouse movement
moves the image by one point (1/72 inch). This allows very fine
@@ -765,9 +781,12 @@ CLASS="EMPHASIS"
><LI
><P
> Clicking and dragging the
- <I
+ <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>right</I
+></SPAN
> (secondary) mouse button moves the image
around the page much the same as with the left button, but the image
will only move in units of the image size. Thus, if the image is
@@ -779,9 +798,12 @@ CLASS="EMPHASIS"
></LI
><LI
><P
-> If you hold down the <I
+> If you hold down the <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>shift</I
+></SPAN
> key
on the keyboard when you click and drag the mouse, the image will
only move in the horizontal or vertical direction (depending upon
@@ -805,16 +827,16 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN258"
->Position</A
+NAME="AEN254"
+>2.2.3. Position</A
></H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN260"
->Orientation</A
+NAME="AEN256"
+>2.2.3.1. Orientation</A
></H3
><P
> The Orientation menu allows the user to choose the orientation
@@ -880,8 +902,8 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN276"
->Automatic Centering</A
+NAME="AEN272"
+>2.2.3.2. Automatic Centering</A
></H3
><P
> There are three buttons that deal with centering an image. The
@@ -926,8 +948,8 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN285"
->Manual Settings</A
+NAME="AEN281"
+>2.2.3.3. Manual Settings</A
></H3
><P
> You will notice that there are six boxes that contain numbers
@@ -941,8 +963,8 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN288"
->Left</A
+NAME="AEN284"
+>2.2.3.3.1. Left</A
></H4
><P
> The number appearing in the <SPAN
@@ -970,8 +992,8 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN295"
->Right</A
+NAME="AEN291"
+>2.2.3.3.2. Right</A
></H4
><P
> The number appearing in the <SPAN
@@ -999,8 +1021,8 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN302"
->Right Border</A
+NAME="AEN298"
+>2.2.3.3.3. Right Border</A
></H4
><P
> The number appearing in the <SPAN
@@ -1028,8 +1050,8 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN309"
->Top</A
+NAME="AEN305"
+>2.2.3.3.4. Top</A
></H4
><P
> The number appearing in the <SPAN
@@ -1057,8 +1079,8 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN316"
->Bottom</A
+NAME="AEN312"
+>2.2.3.3.5. Bottom</A
></H4
><P
> The number appearing in the <SPAN
@@ -1086,8 +1108,8 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN323"
->Bottom Border</A
+NAME="AEN319"
+>2.2.3.3.6. Bottom Border</A
></H4
><P
> The number appearing in the <SPAN
@@ -1117,16 +1139,16 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN330"
->Size</A
+NAME="AEN326"
+>2.2.4. Size</A
></H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN332"
->Slider Bar and Spin Box</A
+NAME="AEN328"
+>2.2.4.1. Slider Bar and Spin Box</A
></H3
><P
> The slider bar can be moved as desired by the user. Notice
@@ -1150,21 +1172,30 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN336"
->Scale by Percent or PPI</A
+NAME="AEN332"
+>2.2.4.2. Scale by Percent or PPI</A
></H3
><P
> One may choose to scale the image by a percentage, or by PPI,
-which means "<I
+which means "<SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>p</I
->ixels <I
+></SPAN
+>ixels <SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>p</I
+></SPAN
>er
-<I
+<SPAN
+CLASS="emphasis"
+><I
CLASS="EMPHASIS"
>i</I
+></SPAN
>nch". Click the radio button
next to the word to set the desired scaling factor.
</P
@@ -1191,8 +1222,8 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN344"
->Use Original Image Size</A
+NAME="AEN340"
+>2.2.4.3. Use Original Image Size</A
></H3
><P
> By clicking this button, the image will be scaled to as close
@@ -1222,8 +1253,8 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN351"
->Width and Height</A
+NAME="AEN347"
+>2.2.4.4. Width and Height</A
></H3
><P
> These boxes show the size of the printed image in either inches
@@ -1239,8 +1270,8 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN354"
->Units</A
+NAME="AEN350"
+>2.2.4.5. Units</A
></H3
><P
> The units can be set to inches or centimeters by clicking the appropriate
@@ -1255,8 +1286,8 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN357"
->Image/Output Settings</A
+NAME="AEN353"
+>2.2.5. Image/Output Settings</A
></H2
><P
> By clicking on the tab labeled <SPAN
@@ -1284,16 +1315,16 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN364"
->Image Type</A
+NAME="AEN360"
+>2.2.5.1. Image Type</A
></H3
><DIV
CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN366"
->Line Art</A
+NAME="AEN362"
+>2.2.5.1.1. Line Art</A
></H4
><P
> This setting tells the printer driver to generate color
@@ -1308,8 +1339,8 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN369"
->Solid Colors</A
+NAME="AEN365"
+>2.2.5.1.2. Solid Colors</A
></H4
><P
> This mode produces color which is considerably more accurate
@@ -1327,8 +1358,8 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN373"
->Photograph</A
+NAME="AEN369"
+>2.2.5.1.3. Photograph</A
></H4
><P
> This mode produces the most accurate colors and tonalities at a
@@ -1342,8 +1373,8 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN376"
->Output Type</A
+NAME="AEN372"
+>2.2.5.2. Output Type</A
></H3
><P
> The user is given the choice of color, black and white, and
@@ -1358,8 +1389,8 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN379"
->Adjust Output</A
+NAME="AEN375"
+>2.2.5.3. Adjust Output</A
></H3
><P
> Clicking on this button causes the <SPAN
@@ -1389,10 +1420,7 @@ NAME="FIG-GIMP-PRINT-COLOR-ADJUST"
CLASS="MEDIAOBJECT"
><P
><IMG
-SRC="figures/gimp-print-print-color-adjust.png"
-ALT=">The Print Color Adjust Window"
-></IMG
-></P
+SRC="figures/gimp-print-print-color-adjust.png"></P
></DIV
></DIV
><DIV
@@ -1400,8 +1428,8 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN391"
->Brightness</A
+NAME="AEN387"
+>2.2.5.3.1. Brightness</A
></H4
><P
> Adjust the brightness of the image. A setting of 0.0 gives a fully black
@@ -1416,8 +1444,8 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN394"
->Contrast</A
+NAME="AEN390"
+>2.2.5.3.2. Contrast</A
></H4
><P
> Adjust the contrast of the image. A setting of 0.0 gives a solid gray for the
@@ -1429,8 +1457,8 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN397"
->Cyan, Magenta, Yellow</A
+NAME="AEN393"
+>2.2.5.3.3. Cyan, Magenta, Yellow</A
></H4
><P
>These three options allow specification of the cyan, magenta, and
@@ -1444,8 +1472,8 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN400"
->Saturation</A
+NAME="AEN396"
+>2.2.5.3.4. Saturation</A
></H4
><P
>Adjust the brilliance of colors. A setting of 0.0 results in pure grayscale.
@@ -1461,8 +1489,8 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN403"
->Density</A
+NAME="AEN399"
+>2.2.5.3.5. Density</A
></H4
><P
>Adjust the amount of ink deposited on the paper. If you have chosen the
@@ -1486,8 +1514,8 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN407"
->Gamma</A
+NAME="AEN403"
+>2.2.5.3.6. Gamma</A
></H4
><P
>Adjust the gamma of the image, over and above the printer-specific
@@ -1502,8 +1530,8 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN410"
->Dither Algorithm</A
+NAME="AEN406"
+>2.2.5.3.7. Dither Algorithm</A
></H4
><P
>The recommended dither algorithm is <SPAN
@@ -1577,8 +1605,8 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN424"
->Set Defaults and Close</A
+NAME="AEN420"
+>2.2.5.3.8. Set Defaults and Close</A
></H4
><P
> When the <SPAN
@@ -1604,8 +1632,8 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN430"
->Printing and Saving Settings</A
+NAME="AEN426"
+>2.2.6. Printing and Saving Settings</A
></H2
><P
> At the bottom of the Gimp-Print window, there are five buttons labeled
@@ -1632,7 +1660,7 @@ CLASS="GUIBUTTON"
CLASS="GUIBUTTON"
>About</SPAN
>
-button will show information about the Gimp-Print software, such as
+button will show information about the Gutenprint software, such as
the version number, authors names, project web site, and software
licensing. After clicking on the <SPAN
CLASS="GUIBUTTON"
@@ -1675,6 +1703,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -1685,7 +1714,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="ch-gimp-and-gimp-print.html"
+HREF="c61.html"
+ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -1693,7 +1723,8 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="book1.html"
+HREF="index.html"
+ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -1701,7 +1732,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="c447.html"
+HREF="c443.html"
+ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -1710,20 +1742,21 @@ HREF="c447.html"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
->GIMP and Gimp-Print</TD
+>GIMP and Gutenprint</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="ch-gimp-and-gimp-print.html"
+HREF="c61.html"
+ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
->CUPS and Gimp-Print</TD
+>CUPS and Gutenprint</TD
></TR
></TABLE
></DIV
diff --git a/doc/users_guide/title.sgml b/doc/users_guide/title.sgml
index 9a741de..12d83b6 100644
--- a/doc/users_guide/title.sgml
+++ b/doc/users_guide/title.sgml
@@ -1,19 +1,3 @@
- <bookinfo>
- <title>The User's Guide to the Gimp-Print Top Quality Printer Drivers</title>
- <date>April 2, 2002</date>
- <pubdate>April 2, 2002</pubdate>
- <author>
- <firstname>Andy</firstname>
- <surname>Stewart</surname>
- </author>
- <copyright>
- <year>2002</year>
- <holder>Andy Stewart</holder>
- </copyright>
- <legalnotice>
- <para>The User's Guide to the Gimp-Print Top Quality Printer
-Drivers, Copyright 2002, Andy Stewart.
- </para>
<para>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
@@ -26,19 +10,19 @@ Back-Cover texts. A copy of the license is included in <xref linkend="gfdl">.
<abstract>
<para>
- The Gimp-Print Top Quality Printer Drivers (hereafter
-called Gimp-Print) are a set of printer drivers written to
+ The Gutenprint Top Quality Printer Drivers (hereafter
+called Gutenprint) are a set of printer drivers written to
take advantage of the full capabilities of a wide range of
printers. These drivers should work on any POSIX compliant operating
system (e.g. Linux, Solaris, IRIX, etc). This document will explain how to
-use the Gimp-Print software to achieve high quality printouts from the
+use the Gutenprint software to achieve high quality printouts from the
<ulink url="http://www.gimp.org">GIMP</ulink> (GNU Image
Manipulation Program) and
<ulink url="http://www.cups.org">CUPS</ulink> (Common Unix Printing
System).
</para>
<para>
- Please note that in addition to using the Gimp-Print software as a
+ Please note that in addition to using the Gutenprint software as a
print plugin for the GIMP, and as a set of printer drivers for CUPS, this
software can also be compiled and used with the
<ulink url="http://www.ghostscript.com">Ghostscript</ulink> software
@@ -48,16 +32,16 @@ url="http://www.linuxprinting.org/foomatic.html">Foomatic</ulink>
software.
</para>
<para>
-Regardless of whether the Gimp-Print software is used with the GIMP,
+Regardless of whether the Gutenprint software is used with the GIMP,
CUPS, Ghostscript, or Foomatic, the print quality and printer settings
-remain the same. However, use of the Gimp-Print with Ghostscript and
+remain the same. However, use of the Gutenprint with Ghostscript and
Foomatic is not covered in this document. These topics may be covered
in a future revision of this document.
</para>
<para>
- This document corresponds to version 4.2.0 and later of the Gimp-Print
+ This document corresponds to version 4.2.0 and later of the Gutenprint
software. This document will serve as a guide to the user, and as such
-will not explain how to install Gimp-Print, CUPS, GIMP, Ghostscript,
+will not explain how to install Gutenprint, CUPS, GIMP, Ghostscript,
Foomatic, or any other related software.
</para>
diff --git a/doc/users_guide/users-guide.pdf b/doc/users_guide/users-guide.pdf
index 0a3cbd2..f5a5c25 100644
--- a/doc/users_guide/users-guide.pdf
+++ b/doc/users_guide/users-guide.pdf
Binary files differ
diff --git a/doc/users_guide/users-guide.ps b/doc/users_guide/users-guide.ps
deleted file mode 100644
index d794f2e..0000000
--- a/doc/users_guide/users-guide.ps
+++ /dev/null
@@ -1,14972 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
-%%Title: users-guide-eps.dvi
-%%Pages: 56
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 612 792
-%%DocumentFonts: Helvetica-Bold Times-Roman Times-Bold Times-Italic
-%%+ Courier Helvetica Helvetica-Oblique
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -o users-guide-eps.ps users-guide-eps.dvi
-%DVIPSParameters: dpi=600, compressed
-%DVIPSSource: TeX output 2004.02.29:1955
-%%BeginProcSet: texc.pro
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: 8r.enc
-% @@psencodingfile@{
-% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry",
-% version = "0.6",
-% date = "22 June 1996",
-% filename = "8r.enc",
-% email = "kb@@mail.tug.org",
-% address = "135 Center Hill Rd. // Plymouth, MA 02360",
-% codetable = "ISO/ASCII",
-% checksum = "119 662 4424",
-% docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX."
-% @}
-%
-% Idea is to have all the characters normally included in Type 1 fonts
-% available for typesetting. This is effectively the characters in Adobe
-% Standard Encoding + ISO Latin 1 + extra characters from Lucida.
-%
-% Character code assignments were made as follows:
-%
-% (1) the Windows ANSI characters are almost all in their Windows ANSI
-% positions, because some Windows users cannot easily reencode the
-% fonts, and it makes no difference on other systems. The only Windows
-% ANSI characters not available are those that make no sense for
-% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
-% (173). quotesingle and grave are moved just because it's such an
-% irritation not having them in TeX positions.
-%
-% (2) Remaining characters are assigned arbitrarily to the lower part
-% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
-%
-% (3) Y&Y Lucida Bright includes some extra text characters; in the
-% hopes that other PostScript fonts, perhaps created for public
-% consumption, will include them, they are included starting at 0x12.
-%
-% (4) Remaining positions left undefined are for use in (hopefully)
-% upward-compatible revisions, if someday more characters are generally
-% available.
-%
-% (5) hyphen appears twice for compatibility with both ASCII and Windows.
-%
-/TeXBase1Encoding [
-% 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
- /.notdef /dotaccent /fi /fl
- /fraction /hungarumlaut /Lslash /lslash
- /ogonek /ring /.notdef
- /breve /minus /.notdef
-% These are the only two remaining unencoded characters, so may as
-% well include them.
- /Zcaron /zcaron
-% 0x10
- /caron /dotlessi
-% (unusual TeX characters available in, e.g., Lucida Bright)
- /dotlessj /ff /ffi /ffl
- /.notdef /.notdef /.notdef /.notdef
- /.notdef /.notdef /.notdef /.notdef
- % very contentious; it's so painful not having quoteleft and quoteright
- % at 96 and 145 that we move the things normally found there down to here.
- /grave /quotesingle
-% 0x20 (ASCII begins)
- /space /exclam /quotedbl /numbersign
- /dollar /percent /ampersand /quoteright
- /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
-% 0x30
- /zero /one /two /three /four /five /six /seven
- /eight /nine /colon /semicolon /less /equal /greater /question
-% 0x40
- /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
-% 0x50
- /P /Q /R /S /T /U /V /W
- /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
-% 0x60
- /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
-% 0x70
- /p /q /r /s /t /u /v /w
- /x /y /z /braceleft /bar /braceright /asciitilde
- /.notdef % rubout; ASCII ends
-% 0x80
- /.notdef /.notdef /quotesinglbase /florin
- /quotedblbase /ellipsis /dagger /daggerdbl
- /circumflex /perthousand /Scaron /guilsinglleft
- /OE /.notdef /.notdef /.notdef
-% 0x90
- /.notdef /.notdef /.notdef /quotedblleft
- /quotedblright /bullet /endash /emdash
- /tilde /trademark /scaron /guilsinglright
- /oe /.notdef /.notdef /Ydieresis
-% 0xA0
- /.notdef % nobreakspace
- /exclamdown /cent /sterling
- /currency /yen /brokenbar /section
- /dieresis /copyright /ordfeminine /guillemotleft
- /logicalnot
- /hyphen % Y&Y (also at 45); Windows' softhyphen
- /registered
- /macron
-% 0xD0
- /degree /plusminus /twosuperior /threesuperior
- /acute /mu /paragraph /periodcentered
- /cedilla /onesuperior /ordmasculine /guillemotright
- /onequarter /onehalf /threequarters /questiondown
-% 0xC0
- /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
- /Egrave /Eacute /Ecircumflex /Edieresis
- /Igrave /Iacute /Icircumflex /Idieresis
-% 0xD0
- /Eth /Ntilde /Ograve /Oacute
- /Ocircumflex /Otilde /Odieresis /multiply
- /Oslash /Ugrave /Uacute /Ucircumflex
- /Udieresis /Yacute /Thorn /germandbls
-% 0xE0
- /agrave /aacute /acircumflex /atilde
- /adieresis /aring /ae /ccedilla
- /egrave /eacute /ecircumflex /edieresis
- /igrave /iacute /icircumflex /idieresis
-% 0xF0
- /eth /ntilde /ograve /oacute
- /ocircumflex /otilde /odieresis /divide
- /oslash /ugrave /uacute /ucircumflex
- /udieresis /yacute /thorn /ydieresis
-] def
-
-%%EndProcSet
-%%BeginProcSet: texps.pro
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
-exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub
-dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
-ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict
-end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{
-dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1
-roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def
-dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}
-if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}
-def end
-
-%%EndProcSet
-%%BeginProcSet: special.pro
-%!
-TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
-/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
-/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
-/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
-/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
-X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
-/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
-/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
-{userdict/md get type/dicttype eq{userdict begin md length 10 add md
-maxlength ge{/md md dup length 20 add dict copy def}if end md begin
-/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
-atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
-itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
-transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
-curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
-pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
-if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
--1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
-get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
-yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
-neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
-noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
-90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
-neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
-1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
-2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
--1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
-TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
-Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
-}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
-save N userdict maxlength dict begin/magscale true def normalscale
-currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
-/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
-psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
-psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
-TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{
-psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
-roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
-moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict
-begin/SpecialSave save N gsave normalscale currentpoint TR
-@SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{
-CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
-closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
-sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
-}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
-CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
-lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N
-/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end}
-repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N
-/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX
-currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY
-moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X
-/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0
-1 startangle endangle arc savematrix setmatrix}N end
-
-%%EndProcSet
-%%BeginProcSet: color.pro
-%!
-TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
-setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
-}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
-/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
-setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
-/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
-known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
-/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
-/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
-setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
-setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
-0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
-/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
-setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
-0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
-0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
-0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
-/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
-setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
-setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
-0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
-/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
-setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
-0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
-0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
-0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
-/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
-setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
-/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
-0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
-0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
-0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
-setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
-0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
-/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
-setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
-0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
-1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
-/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
-setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
-0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
-DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
-setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
-setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
-setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end
-
-%%EndProcSet
-TeXDict begin 40258431 52099146 1000 600 600 (users-guide-eps.dvi)
-@start /Fa 134[45 45 65 45 45 25 35 30 1[45 45 45 70
-25 45 1[25 45 45 30 40 45 40 45 40 7[65 2[65 65 55 50
-60 1[50 65 65 80 55 2[30 65 65 50 55 65 60 60 65 5[25
-1[45 1[45 1[45 1[45 45 45 45 25 22 30 22 2[30 30 5[37
-34[{TeXBase1Encoding ReEncodeFont}58 89.6638 /Times-Roman
-rf /Fb 138[51 25 46 2[51 3[20 2[20 3[51 1[46 13[66 2[66
-71 1[71 66 4[25 2[56 61 66 1[61 61 65[{TeXBase1Encoding ReEncodeFont}19
-91.3242 /Helvetica-Oblique rf /Fc 134[46 46 66 46 51
-25 46 30 51 51 51 51 76 20 46 20 20 51 51 25 51 51 46
-51 51 1[51 5[61 1[86 1[66 56 61 2[61 71 66 76 51 2[25
-66 71 56 61 66 66 61 61 6[25 5[51 51 1[51 51 25 25 30
-25 2[30 30 20 4[32 31[46 2[{TeXBase1Encoding ReEncodeFont}59
-91.3242 /Helvetica rf /Fd 133[60 66 66 93 1[73 40 66
-47 1[73 73 73 106 33 66 33 33 73 73 1[66 73 66 73 66
-9[113 1[86 73 80 86 1[80 93 86 100 3[33 86 4[86 86 86
-8[66 66 66 66 66 66 66 66 2[33 46[{TeXBase1Encoding ReEncodeFont}46
-119.552 /Helvetica-Bold rf /Fe 133[72 2[112 80 88 48
-80 56 1[88 88 88 128 40 80 1[40 88 88 48 80 88 80 1[80
-11[104 1[96 104 1[96 112 104 120 88 2[40 104 2[96 104
-104 104 104 9[80 80 80 80 80 80 80 1[40 40 43[88 2[{
-TeXBase1Encoding ReEncodeFont}46 143.462 /Helvetica-Bold
-rf
-%DVIPSBitmapFont: Ff cmsy10 12 2
-/Ff 2 34 df<007FB912E0BA12F0A26C18E03C04789A4D>0 D<1AF0A3861A78A21A7C1A
-3CA21A3E1A1E1A1F747EA2747E747E87747E747E1B7E87757EF30FE0F303F8007FBC12FE
-BE1280A26CF3FE00CEEA03F8F30FE0F31F8051C7FC1B7E63505A505A63505A505AA250C8
-FC1A1E1A3E1A3CA21A7C1A78A21AF862A359347BB264>33 D E
-%EndDVIPSBitmapFont
-/Fg 133[50 50 1[72 50 55 28 50 33 1[55 55 55 83 22 1[22
-22 55 55 28 55 55 50 55 55 10[66 72 61 66 72 1[66 78
-72 83 55 66 1[28 72 1[61 1[72 72 66 66 17[28 1[33 42[50
-2[{TeXBase1Encoding ReEncodeFont}44 99.6264 /Helvetica
-rf /Fh 129[54 1[54 1[54 54 54 54 54 54 54 54 54 54 54
-54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 1[54 2[54
-2[54 1[54 1[54 54 54 54 54 54 54 54 54 54 54 54 54 1[54
-54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54
-54 54 54 54 54 54 54 54 54 1[54 54 54 54 54 1[54 54 1[54
-33[{TeXBase1Encoding ReEncodeFont}81 89.6638 /Courier
-rf /Fi 134[44 44 1[44 50 28 39 39 1[50 50 50 72 28 1[28
-28 50 50 28 44 50 44 1[50 11[72 55 50 61 1[61 1[66 83
-55 2[33 72 72 61 1[72 66 1[61 7[50 50 50 50 50 50 50
-50 50 50 1[25 33 45[{TeXBase1Encoding ReEncodeFont}48
-99.6264 /Times-Italic rf /Fj 134[50 1[72 50 55 33 39
-44 1[55 50 55 83 28 1[33 28 55 50 33 44 55 44 55 50 7[72
-1[100 1[72 66 55 2[61 1[72 94 66 2[39 78 78 61 1[72 72
-1[72 7[50 50 50 50 50 50 50 50 50 50 28 25 33 3[33 33
-37[55 2[{TeXBase1Encoding ReEncodeFont}54 99.6264 /Times-Bold
-rf /Fk 134[115 115 2[126 69 115 80 1[126 126 126 184
-57 1[57 57 126 126 69 115 126 115 126 115 11[149 126
-138 2[138 1[149 172 126 2[57 149 161 126 1[149 149 1[149
-12[115 115 115 115 2[57 69 45[{TeXBase1Encoding ReEncodeFont}41
-206.584 /Helvetica-Bold rf /Fl 106[28 27[40 40 58 40
-40 22 31 27 1[40 40 40 62 22 40 1[22 40 40 27 35 40 35
-40 35 10[58 58 49 44 1[58 44 1[58 1[49 4[58 44 1[58 53
-53 58 14[40 40 40 22 20 27 20 4[27 39[{TeXBase1Encoding ReEncodeFont}46
-79.7012 /Times-Roman rf /Fm 86[76 46[44 50 50 72 50 50
-28 39 33 50 50 50 50 78 28 50 28 28 50 50 33 44 50 44
-50 44 1[50 2[28 2[72 72 94 72 72 61 55 66 72 55 72 72
-89 61 72 39 33 72 72 55 61 72 66 66 72 92 44 56 56 1[28
-28 50 50 50 50 50 50 50 50 50 50 28 25 33 25 2[33 33
-33 1[83 50 1[41 33 29[55 55 2[{TeXBase1Encoding ReEncodeFont}83
-99.6264 /Times-Roman rf /Fn 134[55 1[78 55 61 33 55 39
-1[61 61 61 89 28 2[28 61 61 33 55 61 55 1[55 7[66 3[72
-61 66 72 78 66 2[83 61 2[28 72 78 61 66 72 72 72 72 8[55
-55 55 55 55 55 55 55 2[28 33 28 2[33 33 28 39[{
-TeXBase1Encoding ReEncodeFont}52 99.6264 /Helvetica-Bold
-rf /Fo 134[96 1[134 1[105 57 96 67 1[105 105 105 153
-48 2[48 105 105 57 96 105 96 1[96 7[115 1[163 115 124
-105 115 124 134 115 134 124 143 105 124 1[48 124 134
-105 115 124 124 124 124 7[96 96 96 96 96 96 96 96 96
-96 1[48 57 42[105 2[{TeXBase1Encoding ReEncodeFont}55
-172.154 /Helvetica-Bold rf /Fp 134[138 2[138 151 83 138
-96 1[151 151 151 220 69 2[69 151 2[138 151 2[138 11[179
-151 2[193 165 8[193 2[179 22[83 5[69 39[{TeXBase1Encoding ReEncodeFont}
-24 247.895 /Helvetica-Bold rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-
-%%EndSetup
-%%Page: 1 1
-1 0 bop Black 0 TeXcolorgray Black Black 487 677 a Fp(The)70
-b(User')-15 b(s)69 b(Guide)g(to)g(the)90 999 y(Gimp-Print)h(T)-20
-b(op)71 b(Quality)d(Printer)1446 1321 y(Driver)l(s)1322
-2666 y Fo(And)m(y)49 b(Ste)m(war)s(t)p Black Black eop
-%%Page: 2 2
-2 1 bop Black 0 TeXcolorgray Black Black -2 579 a Fn(The)28
-b(User')-6 b(s)28 b(Guide)f(to)h(the)g(Gimp-Print)e(T)-8
-b(op)28 b(Quality)f(Printer)h(Driver)o(s)-2 708 y Fm(by)c(Andy)h(Ste)n
-(w)o(art)-2 967 y(Published)f(April)g(2,)h(2002)-2 1097
-y(Cop)o(yright)f(\251)g(2002)h(by)f(Andy)g(Ste)n(w)o(art)-2
-1376 y(The)h(Gimp-Print)e(T)-8 b(op)25 b(Quality)f(Printer)h(Dri)n(v)o
-(ers)e(\(hereafter)j(called)f(Gimp-Print\))f(are)i(a)f(set)f(of)h
-(printer)-2 1505 y(dri)n(v)o(ers)e(written)h(to)h(tak)o(e)g(adv)n
-(antage)f(of)h(the)g(full)f(capabilities)g(of)h(a)g(wide)f(range)h(of)g
-(printers.)f(These)-2 1635 y(dri)n(v)o(ers)f(should)h(w)o(ork)h(on)f
-(an)o(y)g(POSIX)i(compliant)e(operating)g(system)f(\(e.g.)i(Linux,)f
-(Solaris,)h(IRIX,)-2 1764 y(etc\).)g(This)f(document)g(will)g(e)o
-(xplain)f(ho)n(w)h(to)h(use)g(the)f(Gimp-Print)g(softw)o(are)h(to)f
-(achie)n(v)o(e)g(high)h(quality)-2 1894 y(printouts)e(from)i(the)f
-(GIMP)h(\(http://www)-6 b(.gimp.or)n(g\))21 b(\(GNU)k(Image)g
-(Manipulation)e(Program\))i(and)-2 2023 y(CUPS)h(\(http://www)-6
-b(.cups.or)n(g\))22 b(\(Common)i(Unix)g(Printing)g(System\).)-2
-2203 y(Please)h(note)g(that)f(in)g(addition)g(to)g(using)g(the)h
-(Gimp-Print)f(softw)o(are)g(as)h(a)h(print)e(plugin)f(for)i(the)g(GIMP)
--11 b(,)-2 2332 y(and)25 b(as)f(a)i(set)e(of)h(printer)g(dri)n(v)o(ers)
-e(for)i(CUPS,)h(this)e(softw)o(are)h(can)g(also)g(be)g(compiled)e(and)i
-(used)g(with)f(the)-2 2462 y(Ghostscript)f(\(http://www)-6
-b(.ghostscript.com\))20 b(softw)o(are)25 b(and)g(with)f(the)h(F)o
-(oomatic)-2 2591 y(\(http://www)-6 b(.linuxprinting.or)n(g/foomat)o
-(ic.htm)o(l\))19 b(softw)o(are.)-2 2771 y(Re)o(gardless)24
-b(of)h(whether)g(the)f(Gimp-Print)g(softw)o(are)h(is)f(used)h(with)f
-(the)g(GIMP)-11 b(,)25 b(CUPS,)h(Ghostscript,)d(or)-2
-2900 y(F)o(oomatic,)g(the)i(print)f(quality)g(and)h(printer)f(settings)
-g(remain)g(the)h(same.)f(Ho)n(we)n(v)o(er)l(,)g(use)g(of)h(the)-2
-3030 y(Gimp-Print)f(with)g(Ghostscript)f(and)i(F)o(oomatic)e(is)i(not)f
-(co)o(v)o(ered)g(in)h(this)f(document.)f(These)i(topics)f(may)-2
-3159 y(be)h(co)o(v)o(ered)f(in)g(a)i(future)e(re)n(vision)g(of)h(this)e
-(document.)-2 3339 y(This)h(document)g(corresponds)g(to)g(v)o(ersion)g
-(4.2.0)g(and)h(later)g(of)g(the)f(Gimp-Print)g(softw)o(are.)h(This)-2
-3468 y(document)f(will)g(serv)o(e)g(as)h(a)g(guide)f(to)h(the)g(user)l
-(,)f(and)h(as)g(such)f(will)g(not)h(e)o(xplain)e(ho)n(w)h(to)h(install)
--2 3598 y(Gimp-Print,)e(CUPS,)j(GIMP)-11 b(,)25 b(Ghostscript,)e(F)o
-(oomatic,)h(or)h(an)o(y)f(other)h(related)g(softw)o(are.)-2
-3777 y(Andy)f(Ste)n(w)o(art,)h(the)f(author)l(,)h(is)f(the)h(founder)f
-(of)h(the)g(W)-8 b(orcester)25 b(Linux)f(Users')h(Group)-2
-3906 y(\(http://www)-6 b(.wlug.or)n(g\))22 b(in)i(W)-8
-b(orcester)l(,)25 b(Massachusetts,)e(USA.)j(The)e(group)h(w)o(as)g
-(founded)f(in)g(July)-2 4036 y(1997)g(and)h(has)f(approximately)g(140)g
-(people)h(on)f(its)g(mailing)g(list.)f(Monthly)g(meetings)h(are)i(held)
-e(and)h(all)-2 4165 y(are)g(in)l(vited.)-2 4345 y(In)g(terms)f(of)h
-("code",)f(this)g(is)g(the)h(author')-5 b(s)24 b(\002rst)h(contrib)n
-(ution)e(to)h(the)h(open)f(source)h(community)-6 b(,)22
-b(and)-2 4474 y(de\002nitely)i(his)g(\002rst)h(e)o(xperience)g(with)f
-(DocBook.)h(Constructi)n(v)o(e)e(comments,)g(praise,)i(w)o(ords)f(of)-2
-4604 y(encouragement,)g(and)h(the)g(lik)o(e)f(will)g(be)h(most)e
-(appreciated)j(if)e(e-mailed)h(to)f(the)h(author)-2 4733
-y(\(mailto:andyste)n(w)o(art@attbi.com\).)p Black Black
-eop
-%%Page: 3 3
-3 2 bop Black 0 TeXcolorgray Black Black -2 579 a Fl(The)20
-b(User')l(s)e(Guide)i(to)g(the)g(Gimp-Print)f(T)-6 b(op)19
-b(Quality)h(Printer)g(Dri)n(v)o(ers,)f(Cop)o(yright)g(2002,)g(Andy)g
-(Ste)n(w)o(art.)-2 708 y(Permission)h(is)g(granted)g(to)g(cop)o(y)-5
-b(,)20 b(distrib)n(ute)g(and/or)g(modify)f(this)h(document)g(under)g
-(the)g(terms)g(of)f(the)i(GNU)d(Free)-2 838 y(Documentation)i(License,)
-g(V)-9 b(ersion)19 b(1.1)g(or)g(an)o(y)g(later)h(v)o(ersion)f
-(published)h(by)f(the)h(Free)g(Softw)o(are)f(F)o(oundation)h(with)f(no)
-g(in)m(v)n(ariant)-2 967 y(sections,)h(no)g(Front-Co)o(v)o(er)f(te)o
-(xts,)h(and)g(no)f(Back-Co)o(v)o(er)h(te)o(xts.)g(A)g(cop)o(y)g(of)f
-(the)h(license)i(is)e(included)g(in)p 0 TeXcolorgray
-20 w(Appendix)f(A)p Black(.)p Black Black eop
-%%Page: 4 4
-4 3 bop Black 0 TeXcolorgray Black Black -2 647 a Fk(T)-17
-b(ab)n(le)58 b(of)g(Contents)p 0 TeXcolorgray 396 879
-a Fj(1.)25 b(Pr)n(oject)h(History)p Black Black 17 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-0 TeXcolorgray 11 w(1)p Black 0 TeXcolorgray 396 1029
-a(2.)f(GIMP)f(and)h(Gimp-Print)p Black Black 17 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(1)p Black 0 TeXcolorgray 596
-1178 a Fm(2.1.)f(Running)g(the)h(GIMP)p Black Black 8
-w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(1)p Black 0 TeXcolorgray 596 1308 a(2.2.)f(The)h(Gimp-Print)e
-(Graphical)i(User)g(Interf)o(ace)p Black Black 2 w(.)p
-Black Black 1 w(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(2)p Black 0 TeXcolorgray 795
-1437 a(2.2.1.)f(Printer)h(Settings)p Black Black 5 w(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(4)p Black 0 TeXcolorgray 994
-1567 a(2.2.1.1.)f(Printer)p Black Black 3 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(4)p Black 0 TeXcolorgray 994 1696 a(2.2.1.2.)g(Setup)h(Printer)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black 0 TeXcolorgray 11 w(4)p Black 0 TeXcolorgray
-994 1826 a(2.2.1.3.)f(Ne)n(w)g(Printer)p Black Black
-16 w(.)p Black Black 1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black 0 TeXcolorgray 11 w(5)p Black 0
-TeXcolorgray 994 1955 a(2.2.1.4.)g(Media)g(Size)p Black
-Black 23 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(6)p Black 0 TeXcolorgray 994 2085 a(2.2.1.5.)g(Media)g(T)-8
-b(ype)p Black Black 22 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(7)p Black 0 TeXcolorgray 994 2214 a(2.2.1.6.)24
-b(Media)g(Source)p Black Black 18 w(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(7)p Black 0 TeXcolorgray 994
-2344 a(2.2.1.7.)g(Ink)h(T)-8 b(ype)p Black Black 18 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(7)p Black 0 TeXcolorgray 994 2473 a(2.2.1.8.)24
-b(Resolution)p Black Black 17 w(.)p Black Black -2 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(7)p
-Black 0 TeXcolorgray 1193 2603 a(2.2.1.8.1.)g(DPI)p Black
-Black 14 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(8)p Black 0 TeXcolorgray 1193
-2732 a(2.2.1.8.2.)g(Draft)h(or)g(F)o(ast)f(Economy)g(Draft)p
-Black Black 21 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black 0 TeXcolorgray 11 w(8)p Black 0 TeXcolorgray
-1193 2862 a(2.2.1.8.3.)g(Unidirectional)p Black Black
-21 w(.)p Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(8)p Black 0 TeXcolorgray 1193 2991 a(2.2.1.8.4.)g(High\(est\))g
-(Quality)p Black Black 21 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(9)p Black 0 TeXcolorgray 1193 3121 a(2.2.1.8.5.)g(Interlea)n(v)o
-(e)p Black Black 4 w(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(9)p
-Black 0 TeXcolorgray 1193 3251 a(2.2.1.8.6.)g(DMT)p Black
-Black 3 w(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(9)p
-Black 0 TeXcolorgray 795 3380 a(2.2.2.)g(Pre)n(vie)n(w)p
-Black Black 2 w(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-0 TeXcolorgray 11 w(9)p Black 0 TeXcolorgray 795 3510
-a(2.2.3.)g(Position)p Black Black 21 w(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(10)p
-Black 0 TeXcolorgray 994 3639 a(2.2.3.1.)g(Orientation)p
-Black Black 18 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black 0 TeXcolorgray 11 w(11)p Black
-0 TeXcolorgray 994 3769 a(2.2.3.2.)g(Automatic)f(Centering)p
-Black Black 8 w(.)p Black Black 1 w(.)p Black Black -1
-w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-0 TeXcolorgray 11 w(11)p Black 0 TeXcolorgray 994 3898
-a(2.2.3.3.)h(Manual)g(Settings)p Black Black 21 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(11)p
-Black 0 TeXcolorgray 1193 4028 a(2.2.3.3.1.)g(Left)p
-Black Black 8 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(12)p
-Black 0 TeXcolorgray 1193 4157 a(2.2.3.3.2.)g(Right)p
-Black Black 3 w(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(12)p Black 0 TeXcolorgray 1193
-4287 a(2.2.3.3.3.)g(Right)g(Border)p Black Black(.)p
-Black Black 1 w(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(12)p Black 0 TeXcolorgray 1193
-4416 a(2.2.3.3.4.)g(T)-8 b(op)p Black Black 21 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black 0 TeXcolorgray 11 w(12)p Black 0 TeXcolorgray
-1193 4546 a(2.2.3.3.5.)24 b(Bottom)p Black Black 24 w(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(12)p
-Black 0 TeXcolorgray 1193 4675 a(2.2.3.3.6.)g(Bottom)g(Border)p
-Black Black 22 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black 0 TeXcolorgray 11 w(13)p Black 0 TeXcolorgray
-795 4805 a(2.2.4.)g(Size)p Black Black 3 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(13)p Black 0 TeXcolorgray 994 4934 a(2.2.4.1.)g(Slider)h(Bar)g
-(and)g(Spin)g(Box)p Black Black 22 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black 0 TeXcolorgray 11 w(13)p Black
-0 TeXcolorgray 994 5064 a(2.2.4.2.)f(Scale)i(by)e(Percent)i(or)f(PPI)p
-Black Black 6 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(13)p
-Black 0 TeXcolorgray 994 5193 a(2.2.4.3.)f(Use)h(Original)f(Image)g
-(Size)p Black Black 14 w(.)p Black Black 1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black 0 TeXcolorgray 11 w(14)p Black 0 TeXcolorgray
-Black 3695 5692 a Fi(4)p 0 TeXcolorgray eop
-%%Page: 5 5
-5 4 bop 0 TeXcolorgray Black 0 TeXcolorgray Black 0 TeXcolorgray
-994 579 a Fm(2.2.4.4.)24 b(W)l(idth)g(and)h(Height)p
-Black Black 12 w(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black 0 TeXcolorgray 11 w(14)p Black
-0 TeXcolorgray 994 708 a(2.2.4.5.)f(Units)p Black Black
-8 w(.)p Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(14)p Black 0 TeXcolorgray 795
-838 a(2.2.5.)g(Image/Output)f(Settings)p Black Black
-21 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-0 TeXcolorgray 11 w(14)p Black 0 TeXcolorgray 994 967
-a(2.2.5.1.)h(Image)h(T)-8 b(ype)p Black Black 3 w(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(15)p Black 0 TeXcolorgray 1193
-1097 a(2.2.5.1.1.)24 b(Line)g(Art)p Black Black 8 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(15)p Black 0 TeXcolorgray 1193
-1226 a(2.2.5.1.2.)g(Solid)g(Colors)p Black Black 22 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(15)p Black 0 TeXcolorgray 1193
-1356 a(2.2.5.1.3.)g(Photograph)p Black Black 14 w(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(15)p Black 0 TeXcolorgray 994 1486 a(2.2.5.2.)g(Output)f(T)-8
-b(ype)p Black Black 25 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(15)p Black 0 TeXcolorgray 994 1615 a(2.2.5.3.)24
-b(Adjust)f(Output)p Black Black 5 w(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(15)p
-Black 0 TeXcolorgray 1193 1745 a(2.2.5.3.1.)h(Brightness)p
-Black Black 21 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black 0 TeXcolorgray 11 w(16)p Black
-0 TeXcolorgray 1193 1874 a(2.2.5.3.2.)g(Contrast)p Black
-Black 11 w(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black 0 TeXcolorgray 11 w(16)p Black
-0 TeXcolorgray 1193 2004 a(2.2.5.3.3.)g(Cyan,)h(Magenta,)f(Y)-10
-b(ello)n(w)p Black Black 7 w(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(16)p Black 0 TeXcolorgray 1193 2133 a(2.2.5.3.4.)24
-b(Saturation)p Black Black 14 w(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-0 TeXcolorgray 11 w(17)p Black 0 TeXcolorgray 1193 2263
-a(2.2.5.3.5.)g(Density)p Black Black 14 w(.)p Black Black
--2 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black 0 TeXcolorgray 11 w(17)p Black 0 TeXcolorgray
-1193 2392 a(2.2.5.3.6.)g(Gamma)p Black Black 8 w(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(17)p
-Black 0 TeXcolorgray 1193 2522 a(2.2.5.3.7.)g(Dither)g(Algorithm)p
-Black Black 3 w(.)p Black Black -2 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black 0 TeXcolorgray 11 w(17)p Black
-0 TeXcolorgray 1193 2651 a(2.2.5.3.8.)g(Set)h(Def)o(aults)f(and)h
-(Close)p Black Black 12 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(18)p Black 0 TeXcolorgray 795 2781 a(2.2.6.)f(Printing)g(and)h(Sa)
-n(ving)f(Settings)p Black Black 10 w(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-0 TeXcolorgray 11 w(18)p Black 0 TeXcolorgray 396 2930
-a Fj(3.)h(CUPS)g(and)g(Gimp-Print)p Black Black 3 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(20)p Black 0 TeXcolorgray 596 3080 a Fm(3.1.)f(Introduction)p
-Black Black 6 w(.)p Black Black -2 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(20)p Black 0 TeXcolorgray 596 3209 a(3.2.)g(CUPS)i(Printer)f
-(Installation)p Black Black 3 w(.)p Black Black -2 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(20)p Black 0 TeXcolorgray 596 3339 a(3.3.)f(Con\002guring)g(your)h
-(Printer)g(in)f(CUPS)p Black Black 8 w(.)p Black Black
-2 w(.)p Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(26)p
-Black 0 TeXcolorgray 596 3468 a(3.4.)g(Using)g(CUPS)i(from)e(the)h
-(Command)f(Line)p Black Black 19 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black 0 TeXcolorgray 11 w(27)p Black
-0 TeXcolorgray 396 3618 a Fj(4.)h(Gimp-Print)g(Utilities)p
-Black Black 16 w(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black 0 TeXcolorgray 11 w(30)p Black
-0 TeXcolorgray 596 3767 a Fm(4.1.)f(escputil)p Black
-Black 14 w(.)p Black Black -1 w(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(30)p Black 0 TeXcolorgray 795 3896 a(4.1.1.)g(Determining)f(Ink)i
-(Le)n(v)o(el)p Black Black 12 w(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(30)p
-Black 0 TeXcolorgray 795 4026 a(4.1.2.)f(Error)h(During)f(Ink)h(Le)n(v)
-o(el)f(Determination)p Black Black 19 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(31)p Black 0 TeXcolorgray 795
-4156 a(4.1.3.)g(Nozzle)h(Check)p Black Black 11 w(.)p
-Black Black 1 w(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(32)p Black 0 TeXcolorgray 795
-4285 a(4.1.4.)f(Clean)h(the)g(Print)f(Head)p Black Black
-14 w(.)p Black Black 1 w(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-0 TeXcolorgray 11 w(33)p Black 0 TeXcolorgray 795 4415
-a(4.1.5.)g(Align)g(the)g(Print)h(Head)p Black Black 20
-w(.)p Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(34)p Black 0 TeXcolorgray 795 4544 a(4.1.6.)f(Printer)h
-(Identi\002cation)p Black Black 19 w(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(38)p
-Black 0 TeXcolorgray 795 4674 a(4.1.7.)f(More)h(Information)p
-Black Black 6 w(.)p Black Black -2 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(38)p Black 0 TeXcolorgray 396 4823 a Fj(A.)g(GNU)f(Fr)n(ee)i
-(Documentation)g(License)p Black Black 10 w(.)p Black
-Black 1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black 0 TeXcolorgray 11 w(39)p Black
-0 TeXcolorgray 596 4972 a Fm(0.)e(PREAMBLE)p Black Black
-17 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(39)p Black 0 TeXcolorgray 596 5102 a(1.)g(APPLICABILITY)j(AND)d
-(DEFINITIONS)p Black Black 18 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-0 TeXcolorgray 11 w(39)p Black 0 TeXcolorgray 596 5231
-a(2.)g(VERB)m(A)-11 b(TIM)25 b(COPYING)p Black Black
-23 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black 0 TeXcolorgray 11 w(41)p Black 0 TeXcolorgray
-Black 3695 5692 a Fi(5)p 0 TeXcolorgray eop
-%%Page: 6 6
-6 5 bop 0 TeXcolorgray Black 0 TeXcolorgray Black 0 TeXcolorgray
-596 579 a Fm(3.)24 b(COPYING)i(IN)f(Q)o(U)l(ANTITY)p
-Black Black 14 w(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(41)p Black 0 TeXcolorgray 596
-708 a(4.)f(MODIFICA)-11 b(TIONS)p Black Black 23 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(42)p
-Black 0 TeXcolorgray 596 838 a(5.)24 b(COMBINING)i(DOCUMENTS)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(44)p Black 0 TeXcolorgray 596 967 a(6.)e(COLLECTIONS)i(OF)f
-(DOCUMENTS)p Black Black 17 w(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(45)p Black 0 TeXcolorgray 596 1097 a(7.)f(A)l(GGREGA)-11
-b(TION)25 b(WITH)g(INDEPENDENT)f(W)o(ORKS)p Black Black
-23 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(45)p Black 0 TeXcolorgray 596 1226 a(8.)g(TRANSLA)-11
-b(TION)p Black Black 11 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(46)p Black 0 TeXcolorgray 596
-1356 a(9.)24 b(TERMIN)m(A)-11 b(TION)p Black Black 20
-w(.)p Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(46)p Black 0 TeXcolorgray 596 1486 a(10.)24 b(FUTURE)h(REVISIONS)h
-(OF)g(THIS)f(LICENSE)p Black Black 3 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-0 TeXcolorgray 11 w(46)p Black 0 TeXcolorgray 596 1615
-a(Ho)n(w)f(to)g(use)h(this)f(License)g(for)h(your)g(documents)p
-Black Black 8 w(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(47)p
-Black Black 3692 5692 a Fi(6)p Black eop
-%%Page: 1 7
-1 6 bop Black 0 TeXcolorgray Black Black -2 647 a Fk(List)57
-b(of)h(Figures)p 0 TeXcolorgray 396 879 a Fm(2-1.)25
-b(The)g(Startup)f(W)l(indo)n(w)g(for)h(The)g(GIMP)p Black
-Black 12 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(1)p Black 0 TeXcolorgray 396
-1009 a(2-2.)g(A)g(Sample)f(Image)h(Displayed)f(by)h(The)g(GIMP)p
-Black Black 9 w(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black 0 TeXcolorgray 11 w(2)p Black 0 TeXcolorgray
-396 1138 a(2-3.)g(The)g(Gimp-Print)f(Graphical)g(User)h(Interf)o(ace)h
-(1)f(\(GUI\))p Black Black 24 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(3)p
-Black 0 TeXcolorgray 396 1268 a(2-4.)g(The)g(Gimp-Print)f(Graphical)g
-(User)h(Interf)o(ace)h(2)f(\(GUI\))p Black Black 24 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-0 TeXcolorgray 11 w(3)p Black 0 TeXcolorgray 396 1397
-a(2-5.)g(The)g(Setup)g(Printer)g(W)l(indo)n(w)p Black
-Black 22 w(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black 0 TeXcolorgray 11 w(5)p Black 0 TeXcolorgray
-396 1527 a(2-6.)g(The)g(Ne)n(w)f(Printer)h(W)l(indo)n(w)p
-Black Black 15 w(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black 0 TeXcolorgray 11 w(6)p Black 0 TeXcolorgray 396
-1656 a(2-7.)g(The)g(Print)f(Color)h(Adjust)f(W)l(indo)n(w)p
-Black Black 9 w(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(16)p
-Black 0 TeXcolorgray 396 1786 a(3-1.)h(The)g(CUPS)h(Startup)e(W)l(indo)
-n(w)p Black Black 9 w(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(20)p Black 0 TeXcolorgray 396 1916 a(3-2.)h(The)g(CUPS)h(Printers)
-f(W)l(indo)n(w)p Black Black 12 w(.)p Black Black -2
-w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(21)p Black 0 TeXcolorgray 396 2045 a(3-3.)g(The)g(CUPS)h(Admin)d
-(W)l(indo)n(w)p Black Black 19 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(21)p Black 0 TeXcolorgray 396 2175 a(3-4.)i(The)g(CUPS)h(Admin)d
-(De)n(vice)i(W)l(indo)n(w)p Black Black 15 w(.)p Black
-Black -2 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(22)p
-Black 0 TeXcolorgray 396 2304 a(3-5.)g(The)g(CUPS)h(Admin)d(Model/Dri)n
-(v)o(er)g(W)l(indo)n(w)p Black Black 23 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-0 TeXcolorgray 11 w(22)p Black 0 TeXcolorgray 396 2434
-a(3-6.)i(The)g(2nd)f(CUPS)i(Admin)e(Model/Dri)n(v)o(er)f(W)l(indo)n(w)p
-Black Black 23 w(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(24)p
-Black 0 TeXcolorgray 396 2563 a(3-7.)i(The)g(CUPS)h(Admin)d(Success)j
-(W)l(indo)n(w)p Black Black 4 w(.)p Black Black -2 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black
--1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black -1 w(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-0 TeXcolorgray 11 w(24)p Black 0 TeXcolorgray 396 2693
-a(3-8.)f(The)g(CUPS)h(W)l(indo)n(w)d(for)i(Y)-11 b(our)25
-b(Printer)p Black Black 15 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black -1 w(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black -1 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black 0 TeXcolorgray 11 w(25)p
-Black 0 TeXcolorgray 396 2822 a(3-9.)g(The)g(CUPS)h(Printer)f
-(Co\002guration)f(W)l(indo)n(w)p Black Black 19 w(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black -1 w(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black -1 w(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
-Black Black(.)p Black Black(.)p Black Black(.)p Black
-Black(.)p Black Black(.)p Black Black -1 w(.)p Black
-Black(.)p Black Black(.)p Black Black(.)p Black 0 TeXcolorgray
-11 w(27)p Black Black 3695 5692 a Fi(1)p Black eop
-%%Page: 1 8
-1 7 bop Black 0 TeXcolorgray Black Black -2 647 a Fk(Chapter)58
-b(1.)f(Pr)l(oject)h(Histor)r(y)396 944 y Fm(This)24 b(softw)o(are)h
-(package)h(w)o(as)e(\002rst)h(written)f(by)h(Michael)f(Sweet)i(of)f
-(Easy)f(Softw)o(are)396 1073 y(Products)h(\(http://www)-6
-b(.easysw)g(.com\))21 b(and)k(initially)e(w)o(ork)o(ed)i(only)f(as)g(a)
-i(print)e(plugin)f(to)i(the)396 1203 y(GIMP)g(\(GNU)g(Image)g
-(Manipulation)e(Program\).)i(In)g(the)f(summer)g(of)h(1999,)f(Robert)
-396 1333 y(Kra)o(witz)h(\(the)f(current)h(Gimp-Print)f(project)h
-(leader\))g(purchased)g(an)g(Epson)f(Stylus)g(Photo)396
-1462 y(EX)h(printer)f(to)h(feed)g(his)f(photography)f(hobby)-6
-b(.)24 b(Finding)g(no)g(e)o(xisting)f(printer)i(dri)n(v)o(ers,)396
-1592 y(Robert)g(adapted)g(Mik)o(e')-5 b(s)24 b(Gimp-Print)g(plugin)f
-(to)i(his)f(six-color)g(printer)l(,)g(and)h(by)f(the)h(end)g(of)396
-1721 y(the)g(year)g(released)h(v)o(ersion)d(3.0)i(of)g(the)f
-(Gimp-Print)g(softw)o(are,)h(which)f(w)o(as)h(included)f(in)396
-1851 y(v)o(ersion)g(1.1)f(of)i(the)f(GIMP)-11 b(.)24
-b(The)h(intention)e(w)o(as)h(for)h(this)e(to)h(be)g(the)h(stable)e
-(plugin)h(in)g(v)o(ersion)396 1980 y(1.2)h(of)g(the)f(GIMP)h(while)f
-(de)n(v)o(elopment)f(of)i(the)g(Gimp-Print)e(plugin)h(continued)g(for)h
-(later)396 2110 y(release.)396 2289 y(Robert)g(put)g(the)f(Gimp-Print)g
-(de)n(v)o(elopment)f(tree)i(on)f(SourceF)o(or)n(ge)i(starting)e(with)g
-(v)o(ersion)396 2418 y(3.1,)h(and)f(quickly)g(found)g(a)i(group)e(of)h
-(lik)o(e-minded)e(people)i(who)f(w)o(anted)h(to)f(print)g(high)396
-2548 y(quality)g(output)f(on)i(ine)o(xpensi)n(v)o(e)d(inkjet)i
-(printers.)g(One)h(of)g(the)g(main)f(goals,)g(which)g(w)o(as)h(not)396
-2677 y(e)o(xpected)g(to)f(be)h(met)f(until)g(late)h(in)f(the)h(v)o
-(ersion)f(3.1)g(c)o(ycle,)h(w)o(as)f(to)h(write)f(a)i(Ghostscript)396
-2807 y(dri)n(v)o(er)e(so)h(that)f(printing)f(w)o(ould)h(not)h(be)f
-(restricted)h(to)g(the)f(GIMP)-11 b(.)25 b(Imagine)f(Robert')-5
-b(s)396 2936 y(surprise)25 b(when)f(Henryk)h("Buggs")f(Richter)h(wrote)
-g(one)g(within)e(days!)396 3116 y(In)i(July)f(2000,)g(not)g(more)h
-(than)g(a)g(year)g(after)g(Robert)h(bought)d(his)h(Epson)g(Stylus)g
-(Photo)h(EX,)396 3245 y(he)g(w)o(as)g(in)l(vited)f(to)g(the)h(Linux)f
-(Printing)g(Summit)f(hosted)h(by)h(V)-13 b(A)24 b(Linux)g(Systems.)g
-(In)396 3375 y(preparation)h(for)g(that,)f(he)h(spent)f(long)g(hours)h
-(printing)e(out)h(test)h(images.)f(Robert)h(went)f(back)396
-3504 y(to)h(the)f(Gimp-Print)g(v)o(ersion)g(3.0.9)g(release,)h(which)g
-(seemed)f(lik)o(e)h(such)f(an)h(adv)n(ance)g(at)g(the)396
-3634 y(time,)f(and)h(w)o(as)g(\003oored)g(at)g(ho)n(w)f(f)o(ar)h(the)g
-(project)f(had)h(come)g(in)f(four)h(months!)f(Output)f(that)396
-3763 y(had)i(been)g(considered)g(impressi)n(v)o(e)d(with)i(using)g(six)
-g(colors)h(w)o(as)f(put)h(to)f(shame)g(by)h(four)396
-3893 y(color)g(output.)e(That)i(should)e(gi)n(v)o(e)h(you)g(an)h(idea)g
-(what)g(six)f(color)h(and)f(v)n(ariable)h(dot)f(size)396
-4022 y(printers)h(can)g(do.)f(It)h(also)f(illustrates)g(what)g(a)h
-(group)g(of)g(committed)e(people)h(can)h(do.)396 4202
-y(Robert)g(came)g(a)o(w)o(ay)g(from)g(the)f(Printing)g(Summit)g(with)g
-(a)h(lot)f(of)h(ne)n(w)f(ideas,)h(and)g(in)396 4331 y(No)o(v)o(ember)f
-(2000,)g(Gimp-Print)g(v)o(ersion)f(4.0)i(w)o(as)g(released,)g(the)f
-(culmination)f(of)i(9)g(months)396 4461 y(of)g(w)o(ork)g(by)f(the)h
-(team.)f(The)h(quality)f(w)o(as)h(already)g(tremendously)e(impro)o(v)o
-(ed)g(o)o(v)o(er)h(what)g(the)396 4590 y(softw)o(are)h(could)f(do)h(at)
-g(the)f(Printing)g(Summit.)396 4770 y(The)h(team)g(started)f(serious)g
-(w)o(ork)h(on)f(v)o(ersion)g(4.1)h(in)f(December)h(2000,)f(and)h(v)o
-(ersion)f(4.2.0)396 4899 y(w)o(as)h(released)g(in)g(No)o(v)o(ember)e
-(2001.)h(Despite)h(the)f(f)o(act)h(that)g(v)o(ersion)f(4.2.0)g(is)g(a)h
-("minor")396 5029 y(release)h(o)o(v)o(er)e(v)o(ersion)f(4.0,)i(there)g
-(are)g(v)n(ast)f(impro)o(v)o(ements:)p Black 3695 5692
-a Fi(1)p Black eop
-%%Page: 2 9
-2 8 bop Black 0 TeXcolorgray Black 2681 67 a Fi(Chapter)24
-b(1.)h(Pr)l(oject)e(History)p Black Black 396 579 a Fl(\225)p
-Black 97 w Fm(The)i(dri)n(v)o(er)e(is)i(b)n(uilt)e(as)i(a)g(shared)g
-(library)-6 b(,)24 b(making)g(it)g(much)h(easier)g(to)f(use)h(by)g
-(higher)496 708 y(layers)g(of)g(softw)o(are)p Black 396
-888 a Fl(\225)p Black 97 w Fm(The)g(packaging)f(system)g(no)n(w)g
-(follo)n(ws)f(GNU)i(standards)p Black 396 1067 a Fl(\225)p
-Black 72 w Fm(The)g(print)f(quality)f(\(in)i(particular)l(,)g(color)f
-(accurac)o(y)-6 b(,)25 b(a)g(well-kno)n(wn)f(weakness)g(in)h(4.0\))f
-(is)496 1197 y(e)n(v)o(en)g(better)p Black 396 1376 a
-Fl(\225)p Black 97 w Fm(Impro)o(v)o(ed)f(performance)p
-Black 396 1555 a Fl(\225)p Black 97 w Fm(Man)o(y)h(more)g(options)p
-Black 396 1735 a Fl(\225)p Black 97 w Fm(More)g(supported)g(printers)
-396 2093 y(Releases)i(of)f(Gimp-Print)e(ha)n(v)o(e)i(been)g
-(historically)e(numbered)h(in)h(a)g(f)o(ashion)f(similar)g(to)g(that)
-396 2223 y(of)h(the)g(Linux)f(k)o(ernel,)h(where)g(major)f(releases)h
-(are)h(denoted)e(by)h(the)f(\002rst)h(digit)f(\(in)h(this)e(case)396
-2352 y('4'\),)i(while)g(minor)f(releases)h(are)g(denoted)g(by)f
-(subsequent)g(digits)f(\(such)i(as)g('4.2.0'\).)f(Ev)o(en)396
-2482 y(numbered)h(minor)e(releases)j(are)f(considered)g(stable,)f
-(while)g(odd)h(numbered)f(minor)g(releases)396 2611 y(are)i(considered)
-e(de)n(v)o(elopment)f(releases)i(\(whose)g(stability)e(may)h(v)n(ary)h
-(for)g(an)o(y)f(gi)n(v)o(en)396 2741 y(release\).)396
-2920 y(This)g(project)f(is)h(by)g(no)g(means)f(\002nished.)h(In)g
-(future)g(releases,)g(the)g(de)n(v)o(elopment)e(team)i(hopes)396
-3050 y(to)h(include)f(the)h(follo)n(wing:)p Black 396
-3329 a Fl(\225)p Black 72 w Fm(implementation)d(of)j(proper)g(color)g
-(management)p Black 396 3508 a Fl(\225)p Black 72 w Fm(impro)o(v)o(ed)e
-(dithering)p Black 396 3687 a Fl(\225)p Black 72 w Fm(impro)o(v)o
-(ements)f(in)i(performance)396 4046 y(The)h(entire)g(Gimp-Print)f(team)
-g(hopes)h(you)f(will)g(really)h(enjo)o(y)f(using)g(this)g(softw)o(are!)
-h(F)o(or)396 4175 y(more)g(information,)e(please)i(consult)f(the)g
-(GIMP-Print)h(project)g(web)g(page)396 4305 y
-(\(http://gimp-print.sourcefor)n(ge.net\).)p Black 3695
-5692 a Fi(2)p Black eop
-%%Page: 1 10
-1 9 bop Black 0 TeXcolorgray Black Black -2 647 a Fk(Chapter)58
-b(2.)f(GIMP)h(and)g(Gimp-Print)-2 1167 y Fo(2.1.)47 b(Running)i(the)f
-(GIMP)396 1383 y Fm(This)24 b(section)g(assumes)g(that)h(you)f(ha)n(v)o
-(e)h(the)f(GIMP)h(v)o(ersion)f(1.2)g(installed)g(and)h(w)o(orking)396
-1512 y(properly)f(on)g(your)g(computer)l(,)f(and)i(that)e(you)h(ha)n(v)
-o(e)g(an)g(image)g(of)g(some)g(type)g(that)g(you)f(desire)396
-1642 y(to)i(print.)f(T)-8 b(o)24 b(get)h(started)f(quickly)-6
-b(,)24 b(log)g(into)g(your)g(system,)g(start)g(the)h(X)g(windo)n(w)e
-(system,)396 1771 y(and)i(bring)f(up)h(your)f(f)o(a)n(v)n(orite)h
-(terminal)f(windo)n(w)-6 b(.)23 b(At)h(the)h($)g(prompt,)e(type:)665
-1988 y Fh($)54 b(gimp)f(&)396 2450 y Fm(This)24 b(should)g(start)g(the)
-h(GIMP)g(for)g(you.)f(If)i(it)e(does)g(not,)h(check)g(that)f(you)g(ha)n
-(v)o(e)h(installed)e(the)396 2579 y(GIMP)i(properly)-6
-b(,)24 b(and)h(that)f(its)g(binary)h(is)f(located)h(in)f(one)h(of)g
-(the)f(directories)h(listed)f(in)g(your)396 2709 y($P)-9
-b(A)e(TH)25 b(en)l(vironment)e(v)n(ariable.)i(On)f(the)h(assumption)e
-(that)h(this)g(w)o(ork)o(ed,)h(the)f(screen)396 2838
-y(should)g(no)n(w)g(look)g(something)f(lik)o(e)h(this:)396
-3167 y Fj(Figur)n(e)i(2-1.)e(The)i(Startup)h(W)n(indo)o(w)e(f)n(or)f
-(The)i(GIMP)396 5112 y
- currentpoint currentpoint translate 1 1 scale neg exch neg exch translate
- 396 5112 a @beginspecial 0 @llx
-0 @lly 141 @urx 219 @ury 1410 @rwi @setspecial
-%%BeginDocument: figures/gimp_startup.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/gimp_startup.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 141 219
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 141 219
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-142 220
-12.000000
-142 220
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-9a9a9a
-cdcdcd
-b7b7b7
-eeeeee
-808080
-547098
-7393c0
-424f63
-5a7191
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPT4`VK''#tqk'.Rt\;W`AQ@AeGZL!FcCT4"k\4#g.!8<FO)!g-Im7^[/U*+@7i(j)ObkC
-XaPI'3h0Z7HR&DuSSfBE7$G>ZGgrP9A5"ZlCr/(!ZW8k!jD9%E&r$)pA@[^;;RpJ:-J9/Yj8M
-'F"(%&iBF#UJ<-Fk(ZrbMu(FcP:DHtl;]I00qTQ9O!.ANAMtZRQ$:''7)Em)Bs`&jG7cd(X`@
-_e0MM`D?.fpUbcG_&94O3:JVaH0W28FV"c`3!S-J+iMVL_N(k&DB!XgT&A=ko0K"3gF/IdYeE
-iQuFmkWaE?/!N")pOB)GaeAB8O,>s'r6o!:7M5AOf"l&F6!KC>I_Ep4<2Y/LG]%=dKIfVS0RJ
-lo3jInZCF_Ykq>Ea3p<):DB*"k4Uj[CJN=5^]Z*'Q*A,1PeVk[^To#n:^OjJ9%T>gScfe<M4=
-)XOj'$FP.=Dofd\Q#'&i<F*a%%H%L`E07d(DUV$Gm2\&gnZO`X/(@.VeX`Z1u*!2pd-72aj*b
-/8/FCL64C%173eCL_K:VM);?2?m,t?:ubKjHC^BZe`G2E?'h0mOl%ijMZtq04/N./]LLqJdS*
-fDTdc[GlrU;b.6&mg_Ec,o^i+`eW(%G>8:K*2V"*@jBu'.8Y,rFGglo]:mFg^\G]B`E_Q=ktP
-jqeW+2t<IE0NOd?l0=nN9+03*l4gcnLP-c;/!t+F3Qh$S8*riBI]$/j,]if>D.hqM,X6bH-Au
-s(?Tn>bt$4ke8M:W+%'Q#q6C:9$6#*%pS+o;piGL"R_S32q-APEa4a%U5bB@RSrU]AmA\Q@I!
-mi#>`'CTj$d[&TSR*PLCJ!hbu8i;)Od%/dXY52bp7EbR5IoZRU.R?Z;gZ\..Lhcc_U)]$aFl'
-a'hkc:(rt5ABgXX353l%)@uj_[5Q/cUs=8S*%2CmKk[nc$X:1]b%WVf1S0`I-nT/r4H<`.]J3
-H]P/\kd3YG5jTWp$O$-#!>g/MI9(O&(-dt+0KmmX#h'FPfrBgAS9;`"Vhbk'X-'hN7O_!DG'g
-EI1Icn4@BV)0(t6ZuC?BMpoeM8YYGGN$M4)MNp^.,$qqNb1hO=6YXo,'lOS7b\Yc0I63@Y7>,
-YBX"1(U[DL>0="#_%i!nt?tc)gZkYDt)R#-L,L%?89^R+JO.q?UBL&=1$I)CdQM'aU4dtQM3G
-\YHDF56taUoO4`Q(HuYunlm4:/otJg?=&\T"g>R&:Yq.knBgGQG^`aHE@@)"A]_bYhcaY`ZaG
-eWNCc/EJ1;DLVu!fh0a/h:oWf%9m)D0%S'tO.nXaMfU_ANGbX=hb-JK\&e<R]^,1K)pLn#Ge^
-oHQ8Ilqfm@SDj[E?=e#q(u)A4ihQ"YsZPh?8h;L:OZEU.:c>#W:+XA)_iN!<6">`.TMZZFq`R
-S[F-b+dj13(ahcd:9P7p)C_<cV7QrA=/YeieE$:9psP/Q;HU5%sAqQfac#s9h#fU/@8GVkF=G
-On`2M9mL!VkKeP-N>Ojgf["7a&6jtJP*DM4WOs\"QE80e-XjT\A6t(\ek8:k.M(g[4p?cSI]\
-c\&e6(HF;[Z9gQXRH6_eE`[PTRZ&Z*q,U=r9S)@Ff0\652So2eW=&[F>KBf4lO.]+:Ut8JpU/
-"_Ll=bleKHU'-Ih.kj5>)0jIe;&c^b`GsB`G6N`bK.4Rg'9+ulC1HFX2g5G2W]?^EN0@9V;gE
-G(pd_Hp:=$Q"9[heVn66mH2XgLTpdXj6UgXW9=gHiH4JG8Sjj3\a>FKjOFB]Y@%YaG_:Sk&RB
-POZrkpKs31hp!K0sN*MZNUePc_=;.m&6#]8=GR-U8<_@*T_]N72k2kdl;o]0V##0TqTou1g44
-:;9jR\NF1&-,3fsr%6>6MD*;.5iWpcC>*p%QWf]cI;=Z,oTG`9r#R^b1+-/8uC#ms<C./0P>1
-"gTajJJ6U$:'4Z)Wap70t44DcFCn\NT#=KVSW$NN?-R.:(]tW>:6V)"<6=UbU2uo5/Z1VHc?i
-X>iBGT,F(dT@[c#fI+Sh1mU"\11Gc30!!]K.a:pTc!eOHWr<4E9I<K#@8n.,SdmQ6AOR6B9&I
-^D5jkt=(:ImE$qp$k[,L_A=gJlAm^mJJ;/!%7`F6SLRd%0LG#.&]f7#ZIL?98,hr=.5H.V5u2
-k$8*43MDRe8r<uC%1-@"O5`G#j((>Rcenf(Z]gI>l<6:mi5'5K"6mG`ni6:OCTR+oks%?28_s
-'0MY"AN-\-ESn?st=h1'VjO"NDP\Vm<\'a#"XGNi:SP;I[QI<Q.p8W>frRCg@Up4B'#1H%U%#
-:un$VmVUbO.oTK#Yi/3Xp$FNCJmT1JXjrLo2@P5!O]8V4&u2j<^18+>.=gG#-&N;/Uu00hU!j
-0165tBS-=lkIn<n&qB?S1n"K@I<GTs"R*YR0kdEBEEJ1!^ah7P6N63d$;KQ[&8O+:Eg-n\:#7
-KQVjfe%rlD-e'HW<AFddDD@d5!<qc0O@IP2N:Rlh=VH^0=l&na&cQH8,H4]EE88&;lrqG]J(X
-YV\kHq,#[1;X$H;<KA=,-ON^HNnaVqH4hJO0U@*7N-Wo5iAlY!nP'jWNgp3#i?<GH><<0ZMWa
-CDb(^76eYQ#E5(('BU!I^iQ;&:4T^qEe#4QMR&)2)':Q4s<I5FHb.Bj+>9'fDm621'2Q1)sch
-E(@/)$$GrH+J;5PsrB:%LQ@`e*N*:$F'pfa_,Nd,MOA/l,C^B$.2MBT2pP%/[rGrI24?o_VpD
-3'?U)IK+*?+&8SF5'h*,c(RAoI/qsfp\P%J"gHgshaAE)0pl2Fo6C9E^>2#&Xu%<h&,SPh'#:
-)^6)(:VA=DR<k-@--radYT=D7P]cpo%K2JB$PIWm89l;QOFBs?jZpS?aGT2D),^INA41Xd])&
-;:O]HWK]af&k?Z6Jm&TPG([dMbj):%-*>bF(V:aXJek?ic+[Hg@Wct:Z7otBKY`cN97Gpq`FP
-O-hQ:]'L<p@^BmVUmsreJMR&;b;@%mR)dFbhZjZg_$pa"LRsS$+5)k$5;Sdhb&rnlT@r4RhQp
-(A:./U47`Al@T5=0Fb'4W-ALh<l)PepQBPQlImIZ:,mDBlo!7Ir,.%9a*=M1a\/I=!N)\s-3.
-^?^5h8E4$H'#Fe*iuG=(T8H4<Z27L6*E>\k9lf6gBgd:!C&WpoT<gGfe>7bFns@8aI;13j(lQ
-.n'a9I,SL':T3:7d$^0+.YN&^QW[FHWtjZXDL_FnS&rYT_OY#!4l>]kb*3;0TJdnjP&):pg`5
-5R25"n+`o_PDIe#`\`Zq!Tm@J,di5Z7a,t"td7+IB#N%YV'6NUTBB+QNYe8l>`s8K2,UL?Ubu
-+e&UE#BG4oJ:>@(b5r6`\Kf$gs:?0p'o?h5\bjFhs1hbFC+[%qMr4qq<dp5MjiQq,=o1MWXYH
-MlJD]sQ*o]aRV?R#rm,1"RW,>LqRJiFR@$.;)Wq([bJLTcM4[!@ShI!RS^Pe1s+CBI"oLE]GN
-<RN3D';[u7SL4$i%;;Kj,We.cD4ZsG'ZYKIS'kn1Rc6<KD7JK9<%!..$r-+f<L]W"Mc#u1`NS
-m!,//,Mhdj3A(jgKae/]>QFfJ"OkM1nN`Djnkh>##2YuHtMAQ7gZlni&m_;t-ioVj\D'lB*MJ
-"#W\>L>.>8Nb>LNO(UA2N]CFZAGDID.9-KUR$4OSaGC*d2\Y<C$'T#cV)/gLUm'ob^=6iM);,
-0Fe^rYc%=u9"URr-#d3Q"o;^7=!W,T:dJ~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 141 219
-%%EOF
-
-%%EndDocument
- @endspecial 396 5112 a
- currentpoint currentpoint translate 1 1 div 1 1 div scale neg exch
-neg exch translate
- 396 5112 a Black 3695 5762 a
-Fi(1)p Black eop
-%%Page: 2 11
-2 10 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black 396 758 a Fm(At)h(this)f(point,)
-f(you)i(should)e(use)i(the)g Fg(File)p Ff(\000)-16 b(!)p
-Fg(Open)25 b Fm(menu)f(option)g(to)g(open)h(your)g(f)o(a)n(v)n(orite)
-396 888 y(picture.)g(W)-8 b(e)25 b(will)f(print)g(this)g(picture)g
-(shortly)-6 b(.)24 b(Y)-11 b(our)24 b(picture)h(should)e(be)i
-(displayed)f(ne)o(xt)g(to)396 1017 y(the)h(GIMP)g(startup)f(windo)n(w)
--6 b(,)23 b(perhaps)i(looking)e(similar)h(to)g(the)h(follo)n(wing)e
-(\(sssh!)h(Don')n(t)g(tell)396 1147 y(an)o(ybody)g(the)g(secret!\):)396
-1426 y Fj(Figur)n(e)i(2-2.)e(A)h(Sample)g(Image)g(Display)o(ed)g(by)g
-(The)h(GIMP)396 2741 y
- currentpoint currentpoint translate 0.5 0.5 scale neg exch neg exch
-translate
- 396 2741 a @beginspecial 0 @llx
-0 @lly 338 @urx 287 @ury 3380 @rwi @setspecial
-%%BeginDocument: figures/gimp_image.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/gimp_image.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 338 287
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 338 287
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-339 288
-12.000000
-339 288
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-9a9a9a
-cdcdcd
-b7b7b7
-eeeeee
-808080
-547098
-7393c0
-424f63
-5a7191
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVMt4d4W&Q8V:DC%V])?:7;H2d&Psi#:;k+dSJQCXc-.3D!2',!\fh>D=Cj+tBH6$?/K&Xt
-`r1GU5](AMilYeeq1"Z\6^HZhlu\4O6#(9N?:ZA]Ai4m*'W"PK>)<"E<f)rcmiQrp]Zc^OQ33
-s"!p@fAo`"qYSktI80_1s*XZ3P5^ukP<XK\mpEj%,p]&:rVF;!jNm)ba1mi1ra1-X8cK6,$1I
-mGOu3!f]-d)A./l.gRE9[i&,"O=igoE1)]`E6C%@&$cUaLPnudh?c!U8RIt"ru1@;9[rXgMBs
-7!f"1&_5G`?O,`fAG]ls5\4hh#2)M3#R5EXc<ubRc*.s#_"&aIlWZerpV!udR_mfC*`bI*lCN
-`K_oiQ.7sN^O`YX<d9lhh^J7\3)#qQG3]S;LDfH13l)6B;Pbb\%^Hg43G:*@XkJk,j\H%-P@n
-b1Or[j0#QV%$D44l4]V3=,GI.12bl!O-%s1K\c;uR^VK-X1jn43AEga22,a(#uYs2+%!ognqO
-r])4&ESFc^rp^Jt4sB0gO)2X^iRRrm4urqEs7U.lq?cWh"d7`-f"XEf8U;a;ol%U02YiCtdJl
-=i9^p*#,>%q1l.>!4MZ3VJX'^'B)Kk;:H.RQ<C&VcAqK!q\qq&UOld(Y,>4lN]s,DEb_;BbBq
-X6XAd[u_/"FmaKGPQ,?cf]SFmV_1Y\TcXmQOKGNL2?)MXrk5@J,%h/qE'o(jN10RP@a=9b[p?
-1*m468#5mcI6h%CF(S/5&peY;Bgu.\lns:=`DYuGBP^K?W"TI5Khuc&i_W*"2TC?*3S>lED%/
-LM4O.RGB^o*14GE)LXE,4M>&*2O,f!n1UOF'*HH[49/'3/1hj6r1YOVGBK]jCV[E?eH=c$)**
-6JLKUO,HPJ>'M/kd,VTapHlrmB?rBYGd4F#$dibJWIqd,LaO1Gbi(<_L\&P4JtVm$+_9d&ZT;
-@^Gc5HBoiIH=8*@_K)@J"a9epo8236)T`pr0,Gl0,A_gu&1Ii;.hM8]:aZirTY`=MN-lTeu(C
-[2LBjkG]#-L'UXRY%?)1f&g((Q67lcuaIFjrmF3#8;5f`N0/KFsJE<A)O'l`giU*PajBT6REd
-X`c$qW-SMYb0I\Z0Dg/j%V:*//-^0]3K>+FF`nrrS(8#>`"\nf`#bq_UP?nOLj(WoVPV[dP3]
-fNN*Q"Q.AAol/dXb]GZFl=@`hlJ2D!YCE%d!=brut#^IlP&D[.rsX8GkMC(H[b-Oo+re+b[/$
-,:c*Vj8q(_Z.qB(-3o`C<7X+.Z;7LZ`cG5PX2$`nj90ImP06BTP(MK>.:pQ[lN6AA#;.Nfg^g
-j;$,oFVK!7RC4[B^$4T=:*:i[HVohacpnNN%tUi0a0:HhcrD$F'qC3mOk-henND]V,LU`gO<9
-lj-P/p]D9`B<oo6@RuuNe60CAb:;BUXTgS!UU5a>m5nNHt#dIQX`(nQnm]#"4nYoC+2Hipf&8
-:5>q9(Htq/!Pro!tM*)2X11^)=ZGokfqMjOI./XePN,0EC'A?jDZGt-l,95i]GCPc.f'CBP/m
-Y9`M#BI9/P2H#6=m0]E^/hJQkEuQDMW>*.93Z%n0A72EDDAX5YJiRG_s(:[6h;5R51Z*eC5A2
-Ak'nY</s.?_Lf4\Hgi@(d:0)@*VrWt87g?C)%VSaX)3fcRd$A,Y<!e)Ml"'9>j@@dmCc*&9@q
-%YMtBKgWMn>]m(/CQU26U5lY-4hPe*dsbWm$J:gL'Kb`(lW?uSu&ndS?t-rX_4of1Aqq8j(C6P
-%jpI$8-'>]kVQqIm+CmYUn1S<\nE?gr;&93ilMH!BDSl;p.A_&RtajB0HHL&#02?MJl2FA?#r
-Ud@O*qa/hU._6?o%JAs(=.@,aMI):1B3JrG9$<0FM5RL=$/K0m!Rs[0jC-7fqlm$mpkek9SJca
-%7qMuF]mt!2?YK.nbM*POaX_!4SP'23]DHt?7(qs2QCa)5Mu!Z/D'Tnms+$G&W6/Uu]XN/!0c
-+b-BR,g)F7:SWX*@V>XuLZg.iM/B2!Q;t=`:Sfm0fJ[_3rcM7`hVQ(nWM.7BQ_&<MqD/k_M\;
-9Z+lh;-29WC@<r?IV2:'.*,a9IH)aJb,#4<J7Q$XB#R6NP#q&GH8_S&)-/ma=dM%*MP(D4:\Q
-$37Sf5Y)#@_@R;f+7:O2fk`?K[f?S(>[5<g-]nsm8HAp;MWM5!T=JYc?W24=\km6Tm.1W;s^P
-[(4NXT(n%\N;_,7=X3o,#eq]a#E_ZqT-g33[>^ts-Y%T1!$)2l$Loi(o%$aS<*-al9_\0VJ4C
-"-+ke0Bm[M%?ReMoLS^VI!4>RUD&87O%c7'og0PMU1JUh>b31LHAZ%kHj-Q1#P`6Y%>oBra&A
-?MuYNWuA<dSbcQ]6G-Sg;@o4jNI:TBDt3f>e_YMDQJn46+RVj_1tEVs7.V43-MSpDTk_pbGpO
-lfo#k_PQq=UF4HZ6H`Xe6krJAl(3cY]fCJlrk9-9P[9Blk!2*ea2D\B1dh\Ng)i.R)P"(3M:O
-BG/QE0N5iqR8)nV5J26aJudb?o,T?=#Q9H@[+"6a$b?BoO[\^H'mq`F*\C^m.5@!VV=peYn?!
-a1Hljd(]T/`5+qa2pJ9qO8GORmi>cIs3,g.<nlA/&+^fQ"3pf:/Y_5NJ>fE(,@64;k9,t'Yb!
-iWX4YPc%8#5$gIf?5\UAco^gTVLc037^:i-gXr)=b#!eRj4IUBW=7pcj?\Nrf&3BJdqAA&Rqo
-mV[j(>!ol>]nL.t;PYEGq#'J3/(PEu64YbMDK0kqB4(4K>GEBZ*)J`9ti$)H8L^+2G7a1TAc(
-`S;*<AYX`bqDCmV\H:'(IME&c#gqrQl5LD)q`g%07K-3uC++%V4/!'^2%67@X^m@>ch,b`=*<
-7f6He*r2\/pU:A6-88A'2Blc1sUq2J5C"tCA@PL#9H\J#^G#!(h#G';!-%PlRiW]6adV-<(Vr
-&]i1q#kCRM5q_6Tqb'fU[rDl(Y.**ml2EHb`Xb@9_G)uT-[=>0i[QGNViQ6NYe5fHSK-bKYtj
-?R(4e"Jn5VVQWSWT97Quj6b'MEe&Ue!!kM?9W.j`BBE3m(*TQj0eDFc7bi<>aB&ZMi.5SlZ5G
-Q,4M3:/iXK'_dWN'n%7c>U'.O/\77G7EJa,cAF(aH(#cn"iFNj8cuFf,"a8it:6NSJpl'o\W-
-f.3>k>(H;fL5TO/02AF'H^gp`nFL7s(+9,OI"$@F&;#f+q[7eY#1Zl#T3.NeFO]ZEk0lAtl']
-^as4$%([92QmB.cY(lGuJf93IGH<QDqW([\nWnbC+SK4RD*b;,Nk;E%3nZ8^#g6lr3FB;E%`Z
-\(<n*Ii/g88bAj(fCe7G:r"_s3pEY6IIV3'd\Nd7_RK3`>?kOQdp<I(^T+\]Ji<DlYW6hrNg(
-KoW:R(_\g,.gn)^GS:c9Sk.qa^q?9XE+r#(I-0dq_5=M&2Q,*0A(q;1Q))cNm8Ckk,Zp8gZ/s
-H4Y<:#u8:`[uFDF+a]cJDUM[70T1S_UnM3Y.rGF#!@P!mVLEW)tu%;p--OLmG`2TfToWDt^p9
-hs;l^/D,&S[%n5Xl+Ip.a4*MS*3#HAM+rp!#L!,<?#GH))<U8jolMdak;qDKO\4BlA13/;/:+
-.Y@b#tTH9ePGFJH9%m7Yp[6O4Nrq0@*FSUUTS,TUYrPK-4ZMPP`V"SDUJEGA'Aq5N,[G&?'B:
-#4_Kl,:#mVj[.Vj^l*$NN&GndL;obSRf)&bYF@&QCXm0%rTUL=DH2\.%)Mr7k(6;d29/F8'XG
-OF)j_0HukQHN$5qS,,qZ)0:7:aUU@Q\9P;T)%oMcfpq<`dr,`IRphQ*d;E.JI$<&*]$VFST[O
-/cK>Q2XK/Lan.rg%JGp3n0'9u_(li8[mO/m$7pAYrSSKBeQNL>Ft,M5Z@jStJa&_FGE[.t5Qb
-+j9oq(AXTqJL5!'.I*XoANF4TTp=of55N0EUacCM=r`PHp[6l`(&r!R7\PKXVr04eDW&8JA8H
-!NWms^Ud^^NHEJonRE^Pk)gBP;r)[h.W-X4jbhT;7&Yc!M`119`gNG`j.ph+4ZBm)2BRqmjYh
-FG=&KGg?UDWo+l<o8rVU['K0U:FCL*a0>Q[j]K\[i_+NV/J$BrOI$T?EY`GNPtMr78"7[A6aE
-K!p##4D-Ec(ADVgC@a,j=0!['B<o^qd7!m9W?%B^B*k*E$,GDGGo5S7Uopi"Yb2m1P8[:n61%
-VU=<+bhgdk%kZTh,Z0c1r@.5(*iGa#Y.1e>"qh/H'AC<X6Iu*Q4Y!!(e91ksib*5e_?FA,7*3
-_SmI*KWO+ZVIbafY5PX14/1NLndGn_,gDgUZ#\J95,k0J+"'^(;:ja\MobU:<_+fI?.Z)ZG]1
-WHC)A`9H+VJ[f8O+e_m'9>\]8#$&a3<V8gF;-<L-r+L:G`6fHrUmP6Q0GaHu([)[p7[PZ)ere
-,>i9`D(fFDB>\]maLg7WQ4+_1fTOYV,#"Ep&!8hCl>OOL/kcfm8s1uQga#l+`k>5QL0k+hC/1
-?q47G"bbuV^C'7$,Vq+Jd=q./tLT=FWi2G!I:-UD<;Hr3lB+``,bGNsug@+"S/R*FZN!;pt>F
-'Vl:4<trrCdk/[.d_,Uh1$e725>mM5tmk!%/,6du=VrZMH#U=JN!,&KAUA1o=8S`@ToldPR:4
-\W^C>XN5&/@_3*(&Fd#hYB%$(WtNAEEcnd>[TkFN?E.5-ho=DF<6k?jRVejhB^5-_NU#bo\f/
-aYA`)-)=HPs!/r,W0%\.Yr+p)]&C;6U@Q$cQ.)05[jR4KL<Qo<2G2[(i,[C`q5Qd--2T9.Vso
-4$!C+E\g'YYd<\<UmKo=oMF"b,Q)sKd+Si0CitBo3;2W"b#KV0#*+u74tc^^B.2dXjFVsV981
-npHn'i\/HIDd)(bo*m0<^H#%o0YuFnYKIsQ/%15&%>/=DBKMHITglccfKWNA.F50QfR99:2qI
-]Bqb[-66.P]1SLS?o>([V=!VpC#Q'&;B?q)hFTFD4s[AZrL/J6[V?hhP?+*VXpB.(p>@0-PEd
-[h+5J+jB$mKqSlP=M>1=`f3c3nVq`ai'p&:.StHUI1<&#7uJ.&mE!\teTO-:CS61+RD97WVTL
-V*!tQqk&tNd=VN$%1m+-tQRR(3^c!H<N9DVas+C0bu%E7sa]Jr(t\JOC>&9S=Lh5-a#OXE.\<
-:u8rME(,U%INh-SKpRC4a$qJ!kQjno7]U60Om^jE-6F;!p9)@<_]N^6ZEB_EApO'_U(+.]''[
-o[&E5^b%%jZL:Z)sk,<^/WhWSKl,N.f9[u$-7sDkF&3(a'j-mE9r(Qc9lW)\;h!puB2r]XL`J
-'fJ/87JdXU`^S(\^Ke>N_Ss:B6T9jPML(LRS3gIFb8)s5orjU`Viiq+`dEQ'K>G#tQV.6"hE#
-=r-lpRVD?"L^mP`-kr*WND&b^%ddIK7gj04HkeGPlBG'NrJRf57)qPgQdpued#/JKN^f0t,!1
-#lTQW-"LlDmMUWUd1WaVh\C64cC\M[;X'.A?W=j)6:oRVq"a0#S;O6s3dJ+WAXOcu:`3=AF5M
-ai+9?$SK%HFcgA9/l"_U;j`BHApN_\Cl^^e</U\E7,UgT2)%8U6,hfZjEf_O"$OYpndhT(6G&
-VVOs(1O78,+n1KJngoe@fos(]nVjF28aD<J]Ond2"4SV<;^3/RP;#N;qP-X(WR7;\k&B&0fr.
-W^X58-2VMkCCTF>n&"bY]Cu*;+45rA<G1QY87]1Bre4+iq)rh[YOdnL^E>dtS(XfFg@q$ELe6
-2\K\:R,u0$=(i.RC[^A>XB7H<RQ`u&#:O01H#pAbY;Y^k<I.**(957p;H8YCfWG;S%T1^4_!q
-EH6pXasYjmi>KK4+53o,6bCfdrbQ1`AS+:fo6=!-Q0iR6H;^RVc^]OpbqSBp67<9$e4:f'^42
-iK@p*E)4g3H_U=a'"Y*eC0Yfe#5cpa0)c>P-Zp8A_IgZkTi&AG%B]1^I49-_mR4DMON]Cc(QT
-s\^B9M"MtZp.t=-S;F4_fJVXCP^,0^X3-jW"g+VE$e>dfYPYhago'L0R$ah]<*JNQ&(B:LAs8
->NXVs?4dA="t#RqY#HH81)PUDpaK?%GXE>qEUKOriq(HL8_Bg<1;i):Oe3]e,XHP/fK$pbWmE
-P\X!'N&9sd`&O<[mn@k/['cjr[iThOBdILtFiV/I79:];1LGQZ2$8tL)7QHBcc5;l(TW5/Sui
-o*F_P\SR20l6erP9+IjZ^o]NHfH5`<VA`s[`905>VhFReQ9P&6mc.i0(E'PP\Si\+kKMLWk/d
-U@</D+/O<8ku4\I[X0c>/Ij:Qc1.dP5qOmD'u0K-A,[k"&`E2(OLB9&J@59>qHghY2r3GSfZC
-nUFd2I+P45\jgQbjUl_du$uYZRgW/?tBdLJ!V*E+kh4LL$c'j44#(aKJ[;?=>>LfP3SHrrETQ
-qI+ACnoaN+J[G!lTaqoWhsj\5Q#?qI!t#T@cQ3>n0Oea**Z_W`5FIGK.Y-.\^s':!PZR:$?nF
-aX9.13jHsd>/[%$8&OdD\!rn*D*sH;]\5/rImmIS\#a.=I=A,l;pjk(2G[a)p'G#9CN+%M/a_
-mu_.].!:3<g?>oHXY:$#Xn)3e]?VtD,j9"Kq_NZ$**G3ZSYogfIccAcSTU2)OY=eUrN-Pt[5B
-!(C$JK\It^*iYi(I'`E:P/;&Z@(=R0CLp/H!1M7Q^UaK-?VMf[,mumI`p#B"@&Qah#$sbS^@j
-+(WUV"-gJ#_6>JXYXbKVFMGb294J@g;>ADmB/75DT;^Q;Y?K,+lOhBBDpK<XDbZG=:a8(\nUL
-fe]]=2*EEu8"qZ7MuX)p;+&(2>Sdbo83Ec[_1<4,A>TC4_DX]$\OQ*1c<;_t322X$16m$(JBn
-Y]F6]XkCrR=IL547KlM7IjYTRd5f@obX?_N$^!q:[+7JL>%bGrjfFt1'/b,6p"Q=bZ&!09&H)
-am/*a.c15Lih89h_BOp/IhRjMjLeG%t13sK-EdFsR[\=jidaSg94<`qcBn:gY4?gQa,C;KtR1
-Wm/+[j,2U_;&MK/[e?I,1f8#H$6;Z1prE%hem(6/Vhu9J3tE9nh?>2q:>cL4SJtfDAFX`MVVW
-mUB\k76>=;Le>VY#,qSCnc"csebeDe["khLV#Z3p_UPc]*qRY;i8aNVI<=(9NYFKk&`p17K.8
-"&XD9],D98>,XQ42K&X%]-BeWoo%o>;a-V!G)+e`BdlHScBkkK&?o^AsO#qe*uuM2TeaXP.@q
-^[IngQ="Kt17")B<TB(MXlL/0g<R-d[LR#toH8%e@9WKkgO#Efh$n^SK/Q,^XDKe+lrskg8`=
-8aUu&(cl^R;.J"=imiaB61BsN-ugQhEFn8EUh.`[PYS3I^W]Vc'IoXPUW?Djp)<6c\"IMMdM_
-'VZAheX.[_hg5o=/K\\QsNHT[PeLm+ud8*Sl#c_i`i--H)/`a&m@UP,\MK<g\sl4fB]fPi!gi
-1gU;5REPf/OXd6Yh!L@Z[!CceJgBT]82fM?,E)nYk8=+&u^TleI\P?5hS'k9)n>L`ViU\lWeZ
-T<KK+M"(L/9#=`M9S=NtCooA2QL,6UTgKH]6QY*6[gX&'?Ibfc=0M3Y&0:71,W3V]K"(<bXai
-*e/QcHb4O8fY)aF>O75;THFnSo-1k6]&L1i(Hc/br2r0+EI!g0Hg2LYY";Qq7:$TB>U3Pm^nj
-\@s0,P*Y_.'25.s1I$:-u'okjdXb%kV@8tE%.Bbjfq25L*X\WAbnPmEk`!Ab[GfBYb`5ZCsI>
-`i*^k\H7^I^cs7W=+cfg$^6$X;d#:)dZt%qA)3Jk.tb8J5^9Eq%t^1-!f/<a)hM<SKE<.s8CE
-c@e&RIlZYS+^:fpBCHb'da8GW-DdVsNGOoN6$f^SdIe`:'l20oZBM'i?#;]^VU:0BUGI:ucC%
-C"6+?u'=eXTiU3q/#OV21&u+->@+.tnBp?K>&`GYQjnXdM'Z3QZ,Ad2-Q4TZeWRLJ1S7:k*'8
-[!sFeZ9#(Wo@ktkDI7Wik.VqkYQkJm'Idf(D=SG4"j9e'_[A-de!YusCW'q[W&NFHdc9W0WY%
-Ebm_&p&k0nhUG(.&JZ<4d7p7i1CLYs6&"hWCTJ,K*?e*!pkIlA+"5(3;(L\L7E^%hU*O5I[]h
-+_1!-^#F[3kb)=.+Ra=\tVB[D-OGm%Q]O,69)R8ip?i<W(":-X,-sU_PP`AKpIm-X;#AoK6aa
-BY.e0"Er.jVPkfYoGAs[q<Sgh6^Zs(>>D4C92kV4>+obW!$LG5:')ON\3eUZb/G*2!L@+8@<n
-0bG[mBdH60g7iZT&_o.^pp@HGYAXIXEfM-n"rSds"$hHh[B&W\iVh55jHra7ld/^OGqI7o9Q$
-:LCd7nR(D>Va%g1?3Za2G+XU/&ITb]Akf?Ri7\g;PrMXa+gVIbq1jmtEpBf'&qJfQ6Ft6lU6m
-?[Iu6(K(">(AckO%ATnA^[0(A4beIc?EO;<FR'"W@AL97YA@]Vs`QGN63[9\XJWTq;7,tT<!*
-^m7Z*d:>@HY?kH*]Z+uHbZ#7]r9u9[X'a>eP$r0*.bdfM*"8P4FMXa5l9^0mpCMCmPWW2ErZ!
-l]C4j)qs*4&+2>M&]m]kH]9!!gn\sn_X7njXn8rY0Fa$ar6aPW_/>EMe7&:Xa%5Wj4qSC/02`
-\/.Lnr]%\b%V>q7@ZtktUT\P9@VO.ZXlLV5dSZ]`]>Ibj48'(03^<1jk!rg!f*rL3qCk8lncX
-.$)M[Ga$Y38in;Q3d@@.gBpR]FVE_@0-p18;>Ge!g[\SshO!"66'PuDi`L%M1@N>oS4%@hD5R
-=gQ'atRT)S6HoC%2'm]"8F\n/U(s6eFHn%ZParp&=#5MY*ZrV$3eIsC_Ul1<Zms7$$dHoJHlZ
-Heg16ObE#Ke,sc+T]hKRL"AGgrte]FtU5fk`=3iF6V[R%-#NkS>F=*:41br_I2#n=qfmh-doE
-&Mf_b0DCHL>f;jm%SG-"jp68"2QVgHa[@His*+5.um<[umUeOM0ZS'=g6![nlkglOEQ+Ihs^h
-m/il>8"m:I<-c2M^]3f;oSQ+Dd05AY=KS9RhFS?efH5Mq;@YGQ6j,gP)#IVhb$8T0ERIMPU:<
-X/B@VfDjU;O0>/4hS+77;7Q7%6Y'g=<c,GA9O?.Qe9J>KTM%Yi*4/JZ3+S]>+tZVS@/OF<l\K
-7fd8/loBV'o)T3JA`U4Ti/?3pjo_=5FPFkL*6^X-9p,qCNoO7[XVMRW*7C7en&'nhn9`5E%M(
-53!inE(o'K83IM`*`$Ynd4r?OKd"\M0JM5HD0itV5fq.NEsc>bYo,O(Q4j:;B[KG-tg;!]RKn
-N+.g7Dp>bK%[kGJo;/#nk3:u%IVml6qrl=j&ZQ[>."5AFd7%l)AI4uk69ArdrV<M'hNP3^qD8
-crrFlsek[E^o`pO&=b+;$2k``2Za\>/FNI**8&98+9iT.R6Y=.rA%N:P>DarIp\b,Ro2;"NMa
-abudEefl82.h3;I>hCi3/4+Si;gGAq8d%)ijK2OjXRitmiR4WN3)K_%)^7#qdaqE[DNXf4mlp
-`g5J?pmj1F'"KIa6UpJ*R25JMR>8d,+Q[pQlGh8b!X:44M$FSGG+EP=LWER&qTq6Y?I)m<=D>
-P21Z;3\S&i"lU#S0P$gp+;G7Q1p%n8>/V5'LUrn]KF2o#d**#c(+HHiDOfm1=.Ldr0>p3)FUW
-0M]\?1Je#(k8'HoI9#Ba"8>pWV-ZjMu4tnm$%=;ck)JOfM-3N&UJOT427V1/\ZjDZd%mRdXod
--!tj$.tl:B#Jf<4`lpl.rt$rqQ#-hqncZ^:o$in_Ns>"6Ks!s8Dg20MetF;5Z"KdUu;W)JqGJ
-?&HduW3<%@`kJ/)_`UZ4hG<Snp`#/Q#-gpJ0_\oF>d^P.f#+.r5iUeG&(_f0KB$!<c":q@jml
-nt'3!9J(WR?M#N4Z&4Jum:MiWrBK'f<^Y2Q!!ig3^C<aK^Wf>`Iq;j^AjM"+d'gk^o=qt0FGp
-EK@@Y?ntns8#4[o]`jBILhA:n^[$opHQB<r]gDXh>dC7+gJ99oC%0V02C$=E\s4IU#<u8&?To
-`B@/"qoT[;qBG%CQ-kB6"C:Ja?9'dj9S]!$Q;f2DIZuBElBBgC9Cpst'B*3.ungXh;0Tutf9p
-j*CCO:]16&2_D3X2$E1+7*2Vb,*.C*ZItkp3HErD_BODe$+G,rkbkrTf.s8P^/3?Tt$0pT4Rp
-,&',9RbtlH8G265Ih?VkorD/tro)nLG=$Im9Q.j/RThUj-fhjDRP*hc)%VS^UP-%GV5kn1^*-
-O4#ZH2N8oaLHnc:#LM,ge!@d];a8ZXYUQB>o=-uHmbq&u&_1?Yi)(G7jn1%d8uluY_e:-gATg
-)CBNB!J\0eE]1:`_X\Up/Xq@4(fd^8PC9RDMpEJ_fr;VLl-j=24oXHjri!hQ!2sl2LR%p4.je
-Q_]b)tIg^#q+)4YqkMq1pgFH]o7Q[e%r_&:`]0M=92@5l$E`E\]kWX4sQND_.AA1<&3j690\8
-^$\V%!Q2b/\Lg>>aUAb_+c2^$*mE*R"<'9WPtd8Mm(*dgWCIgiJnq[2/1jZ[5/jrARAKW]&6+
-9O`;!?3D@t*i<1rC2<V>_@fC/ak[E#('A9%cn0-A^BR+k$6Q/WHjcK)&J$L:g)a\i0bRA,X$9
-ha/5r&@d7FsJ,6@20%j:*<j7hlIEp:iuZVuGGXpVsjT>7;6=aV.5k*ml@pg'sdPE8sqddinT5
-FmdpFi,6Ymc+/-Pm088@#.;41kZ<_`]d:5_hW(HjoGc9&bb,Ae8O9DjS<^mp8S+o@Bk@n"-%l
-d0V?)"jL//kVu?WrJq:nm%_C@&IO.:g;"W.YH,c"dD,lB*k_6%q+VnEYds?WXJ%_?&=s%Tpj#
-+<LbldNMp,SX`Rp9q09-J"Z'iPl1P;1dL-2pGrZ.NmC4;X4-d>eeB-*meD]Zr5X?+_o@U$F/N
-N6Di:-J7)hc:-l#U?%l-p*R3)_U?&c%<O%/G+EK4[1cVK]c(H^E%++$iR2;7:%5BWD4)KadIV
-;"qib!>]:#bb9._4Je^u:C=[[?)FWEo;Eq5$#Z>;2VBiVdt@%r>u&Q00,oC,VBWm&(rAm&,d%
-I317mo[knd[nF_-.Tq^,X*g6olW2/;]PEie<T_rUAo/si=2RNl7g8WS8`W?YoIP-*6i*URlD*
-\CUt435C4*GErf*76X:E3nOqsG+%"E#HG/"5fb1]^*^N.DEbSIGMmEl6l5N/7dehA0M/$$0Ei
-R,\?`Zl=Ml;V']i/;SD1GV;.30edp;8H491CS#Zlcp"D;`7oWQp+tRWY-T]!bA!+gD6;6oum0
-Tc75,kV:.YF]urT'J)Rml$D#rK3>>D260uPadI0`'1]d&ioqO5'>I#boA%eU>u*AQIq1PU)^-
-YO1N?<g0lH(dYkTh*C!;6'+&S@cL<ZFud.3H>,oT$neWUA&?aaX@kKL@R-]3Y`2".etl1Ed6!
-s[D)p8@TH*YllBNK?:aC9G,jM+B^3Z0u-lS!Kr!#,F:O[C5=2l;D^Oe73o+jBgW?,%(-mp7aR
-(Rfg4.HB;LFTg%:hFGP4BO0s\8enm`XV+.^\^PV&[jjJ8$SEr@lN#2p:8&Pr:1@2DK09]5g`S
-NcpJKDnQPrF4B(E4H0N]Y_*BM(`U>-G:/kG6mXI,d5@KHp)2ETB^3.Ut!fE#k"CGUf_lg<Gn$
-[:_dh-dPiQ5KUB&:Fc+O(IB?mJgPaC8_8ck`'3:pFZMs@&UUm#D>ND]!?EVspk`_\?FZ5OYF9
-UTb$p3d^8N`]W[ap";&)@pVmTo5RcHIN8e%Ql33np1W`'&6(#=QlWn1mXpCI^__uo4."A_ij"
-eGZL_E)Nb-e1'kYr]1s[Q&Jb9U&"AClLc(Qhf&_QL+%gBrtqpPb\iLd`#`+Fim=5`1n+g"OS;
-I;\lcX`KRY%%lq$ISY7cJ3-ADG%QZE$ZHe]$WtI;h[a'2D\TRcRR^%cfo0XmfrF#R3m$4s/80
-pfZr_f!=<6nasNZ70(5g^6n9Z*OO:ef[I9J`(eTak<l=;-7R20mXt?0W\h[d^_sMH#%*SG1BJ
-Fd1/]i`SsoZZlIA;lJ+R7`cFFY:nD:[lT/;JoBK7`RPU+G,Btu4o2&gN`.+P@F`?JkeX)a'oK
-Xm$;U`c4aRs`jN<pp6FHAN7HYW#UYV$![8/&kcuBSpeRg*7c1qET-uF7p'CE2<q!,579$-<KP
-@0ES=F:SG+q>/jYH@I4M?G_5r,]Q#VN![>p7<LE!l<3`fQRfS7?a-[kl^LQn4,G'X3G,tC0GX
-gTX>Dag8EL;e'CpqCX3dEDjWF#GX6@!gHbdr>Z/m?d6b1Fl`6cIgic_Ur+t>:'sfY<J(5dChc
-2Hh1"RgAHa_QfN>c#39`(X2$O+La<JugLW&C%,S;u6;nVuKXlMSBJ;J;,;Qb9PU7#MgHVJbYm
-96Dl@FQ6RW>h$omnFZ=SS0<5T0nCM=?U9qa9dP+35_!Jt/1Qh/r]Q,.0A8K4UTAW!'a'Ac15h
-IlTBEPG1W;#0@Y(+,GW3jj,tV$7I8Ye\EFC@NPquiD^F^aHf$`#2ai[+^?`$+WgZMdteVcm+M
-kBCiGuI![QLNrc)Bqq[Zq//lY@!LID\UpO`SSbASchb98l1UVb)o,"+Uq8R7iW77:Bk^f'C+#
-WDD_:b!M-nJq5[\q&q]pf+,U]!]ncBZ'&-d@djMfE[)S2Z%:WEChjGt`3W)eJ'NLKsgNIZk9:1
-%qT7G?mLHWNEE_%[*7ofuC,n<AT12l7dW8C4#33Z5="osu+806p[";KTJX/T1Te-ke8VZs5SE
-&L@pp!?[m,+Zh1,e-tX(R44mU=P]6WO3=53-J31`,C7nr$I[B$#/XP3c!rdD8\*(GVbQ2b2q<
-T7;526?@Sr&HdJV`mk5D6]pqc`Le_jgKI1M]Tu-oYnnT+X3MXQkpYL$7au$#sD\d,F)NlMlXj
-:71dTuI0:pMWe<5Lq^U-q/;8_E8M6L>Gq$<\R3bgM=b-XY@0q]C2Xg*TNHR\g_/[R&JR=QOmC
-+&TnuEaN+oRp::dU#rXZ8XFLt$=Crml[Vo4U.SbR?<l*dDYkt\1U;H?IBpEUYmn9]QSkdg3\.
-RER\u%T<IPLiJ,:@HO#D4P9Z;dUn'W6SdT//g3g$<l4KKhkS&+*bfB5E4<OGni*aoW=:CN'@H
-.DTjaX7F8)"q?oD-@HZD"`9aiptf?ja*"A$_\I7.[RX*KoiYS\rjgpl(3Mk9;/5q0(duC9?g/
-_^0d#M*K6>0D.9uf)'?Aa0&ND9V9s:L[%coj>PMZ!&2*?NW>q.8K5Qmpd[V3rM8D4Y1=1<cnT
-XT!8q<9)l2<A7Z#ahVcZG]noD-QirDIs81"`r@$M,+794Q8mSRNZch&7Vsaq]5F3q;6!TcuN$
-j]k=Y6>e2Ce5X=d4KDMmPjI+\)X,"0@NPq<'O=bcB&WrL>n\A'p&te.Kbl'D]eK+QjEat36p6
-D<;5^+GIDFhnf:,Z%0K7o#&V]."NEE+*-%7ZI6;E9u?#MVT6&qtP@25E`S$N0$\tgsD2cSe&$
-;HT3iVm(cbT9?3O/h&Srn6pGT+`McSSF.]OSqLVFR<OuIU^=K=U%*q$s]lp^om>Y;i0pq`a`i
-r;`6%eG3G_=!X^&M?DBJ3/=qG83>c,K[`dB+k[P4:-8P%D2`"94egCRWn!CAgBH<^G8aN+'ge
-WUB_?L#H7),!_Ug$o=f1;BUp;`E9rb^,,bJ[`b.62E"IVI?&Q)PGcmnd^:k5Kt)VjHE,YE8uM
-9W&Y\ed<4%`)UBKk"4$mI26lo#+,^99QnQo-ll5'Duj.9S-?30nB>8G&(Rf[JDe.V;&SnNQ:_
-Tf\kL'CjX^75R5P?c.NF;P.VD)E2SX8qcXrT2_pFC15P[^uCpWhf3`U;Gar7(Gl/7;0A2MJT*
-e-!9[>dK'3_k9mj!#$2ARiWW!89gFqX*qB6d4"7>_sZ\^k3!DUeL%)&M#2'P<.3*damnc,C=#
-InFKc7EL$j[BEh0Tn.+.1N<YWUdk6F:SA`44>:"fXXh#!p:#[i!M=W%J!L@C3Wo2FMa+mA;$a
-DjITD:Rh?`*&4aC4'GO*^>7EVu5LChRr_WNjpfo]ueXdafU2q6"E"`T2I]B735'25*!oSC2dM
-dCJ.aIX.>fmIEB`9DR2,/SU_L!c#hFSebVC[nMpB(qL;jd%.M<K,-X-crMR(RT3ZRQF4>_NQ>
-.@`]`=^^_!_g^!j'5e':L$h!&#=89.T3RP%h,SAeY(_$UW.naLdsBQC<!e-l5%;$?1dQ\@URd
-DKBu&b^(Tn^_BJO\NsF5)GnZ_ca]"7:3P?*RG=;UAF!Fl>f#i6kfXol^5gnSa*Rl8Gh(uX,8B
-*!<Y3c1hPiZ6:`9hj&DgQ-/1jqh!-"0ocf/Gk\k0<cQC[nk`8*2qL"9[L!ZEq;g$9&8Z1D(nN
-G>^h(l?`r#3_h%VrG$T]NtaGuOZBVd(,l^<#4>"4tnrB-0ai=#$T\oq:LtbEfJ+apJ7+"g=(r
-X6P]I3[u<-[+H>O;IXSG3jI?'mM:ZE:d^B4`dt?K\#/\+6mX*U:ZorB1i+cG_3lLPYt=SgTNS
-OZs/PN/9LuMt@oK<\"l5h55b_)iB6"ul&_R7;X>j)W#AN?POBKu]T5@ZQ<X6f>ef;L>$D\2'm
-U]\1]bCu,:Nn!N3XDD#dalX,`r'SDAjUVK$aDeaNBqE(Q7F/p7FK4jN^60GHDW_oFIT>[,fdD
-fJ``*,5%^NGTkl-UOnPSP>t:\4F%#\do,t*rW/R<+Htf,Q,??D.NC7iGH.()g"W_n)Ai%[((8
-5UgoQ$'e$9fk!I?;DQQ`at?piiDQ&3I@Yd\7?,SK_$cG/tPV\d;r"mk7^"kP>Y)n%'j#M'<kO
-;1r4D>"q%e12mnc`+Jd1Ao*0pFRQWOdG)aQU6-n9Z*UfW1;lY>E?JF@Vp5pNj%*`L<O3]=Gl5
-d"JYl'G1Xg5"^=E"Mqu[O=cYU.V=GjA`h"a:2V^'2[+2F_$endS.IT>Hu[4!).@'!P,NInDOK
-C$19n9(U9&"&NpqE2H[@Bb!Ri%]m7?ogfV^&fcS$$'NNhCilTg=ZaOVBW/^j<QX+8*Vk)Y><1
-,hJ+77J2P:d4&T=RYB8q62"clO_["`mS8gI#JY<kN,U$Q4=_PkD;Du2jF2b:hQjA9S0)\dOs#
-g&*pE*F&Re62?HDnI,.qAh\bSgY?@`OnAC(7*Y6Qn^u;M65B0KlM9%rl:;^1R)&&l;&FBhlZW
-N#N<;qem077e'sgN&77m=E1/"a;k9bWPNq5PX`<u31(<`H^L6CXH5qq*^RT$QsIp=61>W?LQQ
-$\B$-tO6s_L"=37:I.U4HPkl[HS/8Ot6X3HpJp`(Y!SYj!'VFV_5CX0'_i3GaKoX7/6Q;f:6q
-,"5M"=(K!_t"!$2.fHZI*$@d=$glrL#n].X-*1EYu*3ID8?`2b7Y(.Hbf>'P)L.4SDnBrYrTU
-M?ELo@1P@?'>b123_[m\iGo#OV@gQi1;nl$e\"<n]]HVGKgO4XH>dQnQqkp+a2d*JuR`pZ,!D
-\>eD>%&1(T5AYF/60\GX`8?@&O]T*$f2lD0Q+i.2mc-O;I.O)aar"j?2sUM`Qo-:?AQ/aA"*W
-0SiFQpK+"M\6e,h;PHM!#Da-#dL!p),p`5>pgl,ug39I&/ttc\[]>8QZ_SLM5I'H875tm.SB[
--I/QPO>V19.flPV3KB\[q?QhJVQjt`4K$$!L9VT,2c8$2q1g4p="#oc<Q5gc3K=GFG#e%FE7U
-9lhO8B$s<A8rGA+aHcs]-k9bUfO-e<ZI-rV8tsE.l'%e%>;B`alQ]D)pqfTPKPJ5UGn[P'!k)
-A2\S+HK"EOi(,)Z%]h[E&b/kUY&^@5;U7p8E[OCd:jCgJ<GK>q8Q!4F<nq[_HiVm*9M95eWnn
-M460[Jh.Z]/lTCM9uP\Yr9F)`pn_<qYjeqt1@?)<#2m3:ruIrJu1&W(/Oq\l&F#:7<Q@bD8Bj
-dOq(BF@iVtX2lW':j[iejSEmQ@H5Sn7ddE]WrU]N!NOXJ+l\Q=9"@PARkhR6A5sf;QJbA^=F-
-?^>^Hc0KmAjCH%6RY266B@i(m0,KY:93C@f[aGGSE[Or26mP]]t^d'9`X)s>`^;9UbamZ6a*g
-2pTS`2n$Bgd^?:1G6D;ghkH/6'j%64j3.+!5ArPLT"sA;A"3Xhs9s(KUrICj[])nJg\tZPZ4-
-1e(bW%DPgYg*/Yh>#?:<5M40<Z\Mm+-IFE#Ahk8nfRa*[_hAM?:M`=Sb1)L7#F9^1/AR'VdeH
-0hLdmg7B1(]"KA$s*A\6+6_/N^!eL(P:\ifZ_Yca\">nRh(m!I?X]0P*^k[?q]W#=p<[(amPX
-,:SunMpWqoHfB*b70*$<:U!P;.]hbunjOoh+F94>M??S@>c*r;B/8;'`DY0R(F.>]VD[hX=`6
-TC!1chX\4/^fEueA"d@-Ar[)Gmep9W=ijJ)YGp`i\VLc/tfG7iXtS!X-%oZ?RB<[^>IM/<N?;
-!Nk@VG3[Uoq7W1QBjq1&f\5c)WDVglIZqn,Zr^t\[:PnI#[Ot6=^G%1sP3CEW4U'Y,^$?.b/o
-HD1Q_TC5`gjF!FFu"DH/^95DeQ3iH4$:ne#fg@=imT,lh.FW?J"kj`fkoVA7%D*LlH3d]fEU,
-rg"W4-PQ:#L[I"'ou4T-`Z3M:.SS$Jp7`2f8W:D$I>C2s:s`nr6@(S&Db;?"7Z=0s[0Lbr.n/
-)h+P:W*XU`bc0srBS.nM*=E2!N>MXMFrQM"IX6AX?+61Z4!-[*<]tmOI;bR1JE;SEij:CSNLj
-h5&Ta#Scnc?30SmG8=aECNlTIdRSU5d^R'XG\'@drJW/Cr,9q6a^LC,!#m)Z4H[A)YT[*dChP
-a:uC&]Vj^@7H!(>gDW=8igh^1o+%PX,4sQLpg^f]G["/VoL.sRs5.WfPP-+q0;hI[#Ncf:-6b
-R(pWbA-),JcZ4b!'4,)VMRnIU"5l6*G($G%TRR&s@c;I;]l9s/7c91+>79"@$Q^TsmF$r!k7p
-AC<CuYr3GlY6`0@!*<A%gV@E9#(3n`qM[_eH^gNupICZu`=Ze)K04T,aKL/o.BAR`0o1(-eFn
-I-`\(d3hqYLUS8NH%=iI4W83bgRq._*^cZ+mMY,"qAcV2A]\V^Uk2*9%fBQ78O@AlKZ;"M[N)
-i`*g%>pqCX%@">a)\amd`g<3<ilaKLSs^dcSCY&E-ddlOm#Ec%%u-8(?r"^q72a%t.#:H^aKM
-BLZXf)uYX83qJ]V9J0_kUmU&s)na4hV[<;$UO#I6Du5oNMmF/@XU38Z.;I9TE_Bi2?M_mO*(D
-RE-@B9V.N*gd=Hs[>.,[1`JK(=aPOblD^)W5PhT5iF4IBj4C2fP)%l//maM7hc$r2g9[D0Ub0
-nFTKW$hJ>FD)ID'l!K_1?'-&%/+j?ifLZ>^[7W%IUjB#AO\X+ketgraLfBi.@>23V#mu-'j&p
-aEUNkEHt7SCE>n(6di`rW.j9"\M=%T8A7DmK^`?RF_g,.eGf"O<I[Nb6h.^^>;16P>;0^@8JR
-@k1ho@b;0<:/'GnG#c!tR>V?Zd!U3G`jQSN'(">ouK%V5et^P?d-EN%aem5$NqZ:r`L2_u`5a
-g\Bj/Qsln@M+;l8ZlT:i1b>KUl5I7+;DC[9TGg3M*81Re@nuG#Ke1h=5dS?!TqII#rlGD1I0c
-,dL4b>`4'.VH=Z39HtR%K2ArQ6CRGCW#^,bCeL-B7!`Fk+c7E=r0*4ltr)-nG;9_I8q>UBgV*
-\'&V=uJ>no7Xc+YB#*i9OM08.=Q:l&tYBX^rj6Qk(0h(:YC+4,mCn^b0k+4$fJmm=\sC3n8[f
-J3IgPrEb]bOdK%J9Ot\J31(>pNI\VDP*Vm0/*`I6[%p?aJSg?Z:)e3.\APgF_=\\ebX`/YB4(
-Il7LSHYT`p(H.A8oJjh8o;@[eWAQ1h>g?ATM`SP:7SM)CSICp$+V&W3hPQq"bFE2$dBhC6.M0
-m'<iHd.@k6H#La*=9?6HsUL1W*'_pT@1-PrT.XCr!;jjo)*g`p&slne;37&9.!0-e]I'&f$'F
-Qho<qee%"[7Tcui#Y[,'a:f!]$BG&E4lD)o.GBbB[``o=Xl)g$<3+Jr9@#DSfZX\>F],BVdD.
-:u'7"WESd[sCj+rG%lf:fN:aE)U$(J??4U`XZ,-+TR,pIOf`#N1ir6K-2O&fE)C7kUKJ9^@f/
-U#BVkjdg=Ti`2P;s5[qd)G4`r&cB>QbimeM_sRQ(>G=d6pAS<cf^<FKC!2C7gX"6a7JsbCc6;
-EV$Ji5H9Z/+)aTQJMF>eKdRa<MW2;#pKj.9:&.^<;@&j+s)On.5OEZ0Ij3OfGi8"&gu%M",_7
-kVsZ4;;9P.^bs;%Wu%aHOIZP@bm.,,2FjqCn$@E[n&fC2Q`:*nNAa^04#\*@4:I<Mh41hoLl]
-YOEN,O8QO;;6[?478/"?l*$Y6X1T3u!Is1Nr*+uS!R3>>]=B5/*'CDkr4Ii[!LT"X[WI#QgUL
-&eZj:RJQEMH[e99Rqd_F8TE].:*#_KHV.kZ+QNs!hX[W6JDk>$:g0hG[_+*c:Y?JQU@[6^O+m
-$<\tLD4Yh[ACfGq`o<Y3WRfB7"bEoJctop<X[[?$kNZMV>t:5CKAgu3JNMM3N9asAK9kG0i=*
-O^MqEaR'-hhaW.Ad^^,qFuB5$>(j6[U^]=)*i[aQT;0n)#`HY1Ti:$d]d;;N$7/\EC.R,L=A[
-.pJ9;,hmm`?20c"EjF@h(o];JCO\<BnJq+7+c)j5T\qQm8i4hEM=ZZ)r!oH)^e0<B;:2NT;7C
-d]An:Lor-NAY2Ub;39>'Q&7*4G5?I-P3cCr'K;,+Sk.!3Kj_%qK;Q#_o-p'm-20+%(gNU<u4T
-QmPb,'%0^>o7A(0ZpnSWM@pm-V>tGJ@\&eG388H03Wq"#akl1M^srmVH$OV]i)1f!/l4:UZZ1
-'r`/B\48]?gZdM^)]:j55b.:c/DW3G*TG^G(1C[un$4[7/f'pn)7nIh@eMWeS&Q!d)^61PXbp
-J<9Au/1,AL@cJJ<6i4A>"4K^tI$C:e$JSg5<j#!?<QLt5g9Q);Ss4#<4DWF<]</oLO$qI1(s%
-!A'7?TrD1&$d,nTf<jNFEWpPKU!Z]=(N@*c_:W(_iUW[M3-JekUQm.8[*V7chfPZa1&Os$-OV
-'QT31J7odk`<J`6WWFaMDj@N^U!+q`a$@Ana/MZ]BKSD*B:+L;JDgm[=5uUtbhY^(b?f=o&c"
-4J]'@lue&ZXC9Pr=3ES3V,/eH%UOp\QRiZVS7q!IZlk3Hjm>UEWD.Gd6hQ%2#SlFa*@Jc^6'L
-:M2aT8#;`p.D9Pf][0,)(EidQSgSaUfh`K#F/uIH?m>(hIPNA"pU&F$<P8gfV4pY92qI(Lr.k
-\NAr#q`,b:='YF]7M*Z:hL^nj+U[SJD-D=Aaa<Lsk,n/7rD&Cnr:(2WJFL36>p?d%':LMC8\=
-EtLf]!EP5k@,jdU[?naL>JRCH5Bq8LdUrCCsX+F'5CH@Fp=9ecVE*ZCa]`P>/e?gZ>5&DhW-G
-)qr$CQdABrr!E%5OamG<n?Ln1>R$D4SoTmm'H[dZuc"/'A0N,;k!*?&.k9PYob!RedM8QjO-8
-"O7!N)XD@>7Jp!jo*i?'dl^3I-RHKJ[dUKs!iMlD`2CSTmieG&I=K<FT]/XkXpf#]nL[G<>EG
-'KAHAE5p:U\5e<XWLRs*i[8j\@feR(PnFId:PGmAl?)O]9m%i0k9U1bi9.p\,YLC4E[cC76Wi
-2tUglZYYbd7^7qSk=SH5P,.huWIOWVfu#a]Qk:P(Fq)[h([lcKN$<raV].bPc4Dp`0%\08ng,
-DonYhO/Z)#@MkZCJ0=0PD\90EGO9J7um1i'&tn<C=Ap*<>R2iqVhA70(+!m.TZ:"<gDBV->Va
-\`7`1e$^q(5A;t\mAQ?ph/Ws_PeMA_C[E>>$!s6pA+9C*-/cNOD7.,@LK"ofPT#t$--Qtq5K0
-cu6[0\G]]g_o`!$,A)di&]f&8g\kR'4>68DT$De2\#!@8toi"JH=27'=TcNW\p6C)r$S8p>B&
-Q*BP"A^Of3f3N#0^Wlto)r`K<j)Wed]\Nig*$#[fjFEg9(@`c=V:*)KCb"goY*DXgmUrlS_ce
-cUc</)iasi]WFT8P,FI[\UUjicF3ju$!B"o*e8f0j_-_XM/!1"1p"X:>+W==Xj.E6-We'VZs%
-bKXJ.tE6=4e+3u@LYY1"6U8;Gk1hW>_s*P\76>M"ueU9E<G%,SZW.8k0=mrOnlg<qGa!8+9(?
-5Zb6q2Gj,!,Zh#P'UkpcKS/L'q0n;Zr?EKFD5!iO:R]!0#J(6287o(%T^b+r/9Qd[\Bn#-G'n
-.b2)Iq<X3YWXb?3EK$""d%jq@_6[Ia]^>M!/-$!Ri#U\sTQ2#nuG:&dkuBI+`^4$;4KcYpXoQ
-QdOmh'7rWH7VK.j=dr2pM!lU1`eADPK4@EM=\W6p`'9Yh\n9sj(U5gO$C@XFafA\3AnBaoEf$
-2hcfAF.(V00Nd1a=5Hd+#4ln=&+[DA@FB!\YMNT8S'[8HZ<fZktOliU@W>RG^\^BTe&>lAECY
-.Aqm_$H7F:lIr[-j3`K'i85S>.?C&o@1_g!@"gH(;g4pqTD&Wr$5;Y]D9),Y*!od_j3<@PU"I
-QN/@W@LTW'aVbJ:1nF*C!'ftTG$l;cdb/HWJ0EnGfa.4@uO=k\3r@=\Wj\-N*Y\r2RX7`VAe(
-%I/>*Y1iZ(%"JV+\1^UHQR09UA,#5##JFLVZd7-0,J\6O_MR&jm2Y-<<`$P"&Eh-FEGp'#<#M
-?1p#mD'g_O0r,4h`jFeu2a//*qo>'kQ&RjPWKnC\$egbMU*iR>XqTf!$FMgV&.>C_-4L!mXQ@
-M^lsHk^:<3\T86tr4,dm,U9^Y4-a6h)R@`HW"?CqF#3_W#Qo?c-?C-Sesj-X%Te,(f/M+.`e"
-(2pp?q=X0#MgIZ<RAXZgKr"$Y=!L<k>KUJU6RL^``+*q*+_=GA'u!4T)OZU4V.Du`kb5N^iZg
->Cm)4Fiel.X@*p:9b&a-#fe;I`D=dT[YXp;#pFh_PE^uU6E_jAe19+Pn+&ie([C0ttkr=SdU"
-#Hi8Br7bM4I$c(8HP:R\CtT<-Q%X0J#nO8#Eq"aML_5FMo1\LK%PQB6?[f2f9rW2n'c*%;3,1
-8TJI-Bc+chMpK7jfLd?36CZOAiWFNt^@s<VD[9_Vd-DC8C&Am9rg]e?0]Ii[I0\"@AoP-YaR+
-8`j-<f"/Rcs(/j^Fq1#a8f-hV5Z6$hrb@_)DVDs!uAUX;:**VXo#d1Q.0a6sZ4T_e3Rh;.b7o
-?1iD3Hh2PRh%D'<X6Li[F\qgV+d=q/%/nuSD$;W+sDkHqu_&ujIRXq%F%3DL_/Y@CX7I?nnNC
-8$otf'8DW8CPJN&-e4!mX2tDmgr?J-Ii\2"kg&=YWksZmuX!P[A`iT[T9<:1tEQ`o/(/(VUrK
-MK]BZZFrB7u7\RSG1\f8@V`Aa(R^`Iup.)E%5YH\AUJ9)!f=LqeUuouTqIX`jFdWHR]sWH9\8
-2>(\n!/D4DFUV%#SNp`pD%qJGS6_(U3-)$VMNnT)`tuW\Q0?/`D2cCon237)B5,t/FPZb8P6Z
-`5lua.#Z_=XdPhC?/b^L#>#\%f=;V<lMdS+qs?EpRQEjkG4.jUhhR"E9m4.M&jkhL0LQ<ABLO
-qRe-0_Au)I;B+O!3#&J9BAcndCQD_2su\rrA[3q2hEcPA=>F'0_-dBis(uR)bf[%41mXUZ9'*
-(:r(L64l%!#@b6YZFr[&0SM^JaNRmEs#;SHVhe7!E^/Ro2+PJYS-cdNm^7]bF[e[ZJ(pSjH1$
-;@=jaVu[kIDr\JO=c5fQBd"#F?L:f:Q8Q[?uat=?\Cf%=QL'cs1M$"a2+D.$@7ElF;IF(2<2+
-N(AJ6b9I2:37Gg_o&6,'+7=Z$>NUUl=aAH2UI]T'eEc\27cmD#7W:a7+2aj-R;>^O6Y0'$C%!
-?5c'kIsSue!uK$(dPWjO"h1`Z3E`3de&bnJ%P.5HC>]g:g&S>c+`k/E!H#F'EF8[hQ]0Wi.IR
-6<:L#h`TAhE'2W<6.XSl@6e#k!@$IKTt,`803ZS*-DFf\+OW,MhSNbn'nBWGBt3L9Z]<f4h-0
-7>3k^dg=P4Jq(stT4UlD2&hbuWLTfK!B-_Cn;$,+@3GZp$`//6o`mE,?k,\boFQpL;;E-J@06
-@D(au1I69AAFZ!LA,t$Z+06=42>UGe'>*?-1d:,>)d.d.#,uCD+aug_[2Q5`LZRW47o@!s8Lm
-(<upT0T%-)XAcWGJtXK/!^KK>p=n!ZG<VA$9T6&?]bEnsq66.GiBN6=N0#=IU*GTN0HNtA^lc
-4hOO",.MKgJk[>7"C&6L$>&0I\BE:bHdE9Q%a*FC@HIK)@B0e'Rni/eGK0#FI*CH9WujT\ge`
-#rkMNDs>1F!0EuJ1qm(MGe8(f=[T_SA%Mp&7)bF=i3Bic^-RPe9+k'":f.='inZa6&mG"%C;5
-SEUtRnnu*;5I`5j21k.L&G!*WS*j%V-/&qW!d6p-,8@[="@12&p3Ao2$9%YV1<#l[oT"knG':
-[Yk\GeP<dE!(BOqDqsW0\$^HW"Npoo,3_f^9M5Kq@%JZB=p;TPpn')&(3FaP$5=#G6^El%nsU
-\fm2T"FXdDFdiB]7D;A`XTh<ejoL!*_ScHL%(g;3)9g6Gb&C!)h]D*GK`]MA0k<-[2=#?_,ml
-'L<EBg^p9bm8os6M65*:UDhtT:LK>jqF)'l"eoX*T%;_D3)D*33E8$b#_cd9D+BR[b-;333b;A
-%'n4U(jE"BpBOJlS9d\Q&J9Piq+[=)6dC!t>)_T/j0-!$W(^.fMq8pMHL[L6j%?<KGj_n1tb#
-AfK_cCqVK6Fjf`^dRr^B].*;F5l94Q1kt_ED?ioV$m\oc$6uG[j4-1B7,K8\)dR_7[Rq`_@7.
-uLb6K2=-lPHh9L(12aPF!$2n(]K3+c8d4UoIrD(,>!W&&n8S;"2H%p,in5$GcUD%tN!1k%EKm
-#3nD`*^9o?g>#uR7^]eT4P+SKYV'7S(2'reo3+Mg]ROFLsRJ+bnG7Ao0F5'6lokHS)gd6WfhD
-N,,B,jOY_OR!LIMm[d)t`knQJ_d`]>.+=\#'#[k-S!e;%CXHs*R'p7OC@2!++WgJk%!5uCc@_
-+TPYa7j9oSMIAEL[YefKa!8F"UJ1jY;/rfp%M]q5Y-oU>EfXiK=j3"sq]*)]Qls'Gti1qtm56
-/7]OdLu>&K)dI]K?.R.Kf=,gp0Bu*HY3'n%K4qp%XcVl:K8@]c-2a0r\DX/dMgk^`]d1dZUh9
-mn<XHEF?PU<Jqf&rp.MY6F6$lZ9(``H<5\-"cQ;>Y%2r'6]CV5OqU?EaD5A7Y=GJ`rB.;seKZ
-SJeKM`^Op0^(cR=?N3_WlZ'\?V[[-mDIt,&K$V,R*_fIfNe.O/PG(iMNKq`KM/`4LlVG86*#H
-e>0!f.IZ<;99/9p4(^ITr`eQFE0HkNhd"+i4n@eE4CkEJ`I1CH6<X7!NKu0i@!5M+HS'i;068
-<9A'HVIKC)oXp))*Ul%`KA3e;X*l,g,mA[-fR4^nl^SW)D#/]n<UmVemucN61D23k#qX33P]1
-o_D.4TueZtmFRojXPu0rMBFrgcD`1RqruTPn*QHNbOS?CfK8gnLOOnLkO%r!lE9B%gB_c;'GI
-T#r)08J\TF%e825ro!"^aWI5C?-c&"h<V1[RqrG!Za]%iO='5l96:s<%7\YZ%';HR^6%<O>g^
-=*0TW&R:a.]-?N.,AhMA-AX4.XZ.p"%s0!Bq)\+=4k[ISN#UmB2m+9'UMK_dHLHKrp!>%_\iF
-T#S'Aj`"&f9WBCO$r;,h&,dko\KD:.E3]M+Bg!:kidflpE>Wl&POF7nb=,[F%-kNXnELH].Q5
-GBbi?MTEnpHY04k.EO5e\>glpPM;]ehE*fJUpc@C]-qV$>01<\3nd0*4]\BUsi2E>$^R+sE2-
->PW*?k`]].AXu\ZDlMS^I>0W1UPPB`=uA1D&rUV(!"OOoJ#PI-JfG5p^Ic8;C$sZ1Xq$&!kB$
-(h0V&9(UOE30=u6S]0=nMZDg@_GMO<kXd(hfVi<R>AV?XIAL\%QH"V&u3@U+_l-e>?@L&Sk37
-H3!AVZ7-)P4i0E$X*KV>`#t-Y^'iJ>QqWI8?M())bufEd%*scGH3QV4!IkJ$;ol#nbsoq6"Lr
-5V<n(;:%.3h[HC$f;0mWf+%DhTFj.L0p)jr*-'jc)j(e]7ku-J<OnfWAJ+WIG87RnsXp;HN4W
-%T:UoF\]`\#X'D6j>e;UNFnE&$im!k;$J$$:XukD%WqUK`jnC]_Ji163!Ufa%.r4!;/\^mo*3,
-%bp#_O$sVq,%.djZo5T"^f<MJDY-qmFV^[(15:LD<n0%8N.3@43/7de<'%E1^tcH2H>j[*c*l
-I>IhdV<J6n3(a(EfqR8fCj'OK95PIgE8*S-84;SPXYkXEm@u:aalL(I4@bZj4Xn=8"p2oJ6V6
-d9*1hJal.1tGKc_2/aZhML0</0B"$o<q;gWo'KaVD7,L&`!1*d[a!O+;Mf67X\2?61'1Q>VN'
-`A*%OT%=gL%W73;kp<,'NQ5%2@U^^T[+JD17E+uX+roP,:T'g*^ACPKrA8isN@(A6S5@'b%P0
-6APBf7P/U7@Oc8N-nMu?58jdV"WE2-N([VLl1UM:$PArW[B3C:eMgVSC*"lqHO@c%e'i7"8\d
-?KG\&Tqqd,=RIk?R=pW)@YWlkJrW@*4ABmD[K7QS.s8sqif2R$(o)K-6rSJ1=Wq&,j<tbI&Q*
-(]:bRZ;mIm>at6<X<dS11!NaPPk7hSOR;sj^),aCO\MPPX=T)'43:!lt/K,8^R[>A/[O4MrZg
-!9ZXntj$?rgE=NJ-Vco\*emi,d+1h=:#F&$U2Qg?otIqbHXeg%4tj1B':G]f8Aki:5YhMl.9e
-#>F;0g(3;[Bg#\&7IU\EjKS$jR+@5@7S#fa#a7ReIbJs0`4]1-`/8<b`FZ9T.'mtC'TNX8,7`
-ee;=5-eW#N=[+!0N4HZWL\ic9NhI')79Y5@:PaT8>sDjWDqS4mNcnmOFb"%R+6B:HFa"T;r:W
-Lm38pW%WY9q8(T>fN?MO4K-<(DB6]Y=%_O"\('!*nst\Xg?S)VaDc7DJm\LBD%jG=nap?gY+s
-*7]13?5i6]]DfcT/D$27\'&2Y%C4Y"cQ,S`BFDl-a_`(bj!EBS`ds<65?QamPC.-4,*o`ggOA
-=ABm%VcD[-g><&EeS(.,e(]?JM0KR@_b1-MJD^U$u:HdWSh'aZ*'SW7<&EjcGiA@`bfT*?\\/
-SI/4uCirq^VD,Q?Y\qN;1^-B_Jr;+BjIdj,rd2pmBjYT(!-TnoppsR5;V*_jU;:s&eXL9\/2i
-u/WXT/T:PU:Y5T4-2nY/kc0>q%"Tufu@j,H\X[`?&@g[a9`%j7k=BEif:Y!*(H,p5Y;ijpIQ-
--F&_dB]JBF+@.:\;0k3%Gl(@+5sJrH'3%r,dGN_C];C=c2a`d%CXu4;qfOV[bW)$1G+HsS*5@
-C)oJ9D(N6R=P-MFM"?X2d[^fYMTs9u%RiY%*N>n4W=!,DE2,bn_Wgle0#uhtl6%.ML%7u!<8<
-Gej<8V!:HbZIP[kbnYHPll_7Sa%+)r/QJ5cOj0H/c+'")qu^j?^':Fbd=_f"DDN0o+NNAP2][
-;m[0cU.!P_=F,dmE2d`6PLP952kLZiOt\I#PcnO^TZpR-\ZE<*`@=.8XM@WPe*4Sc2Vf%KV+h
-&[,-am-lTDu;WD+\]^I5K:*pW^(/?U=?p7*LeI=#OO-kD[m@3Y"96TPeR%jWYDrbXtJLD/dRG
-qIKWEi?c>W/to?<K:Jn6A8(bM>^f4"aA"126^X<fWUEop=r@Zi8V)DFPeegl'/0$92!Nji"1E
-A(Rd;5-:RnoX3h;C-;V*.X!1)0C&LEB>M2$Sm,HSWh-ELoXQA6VSY+1j(jmS)U)?3>L:Rer/[
-m7iDXA235eSr6F.(`L<9ib,qiauVlH$%KS-R\Oe#)GtKE,o!1MeE?'Me!slXm]s=LH/?bLf@U
-9^J/!6kJWa<u%`"m<Xtj'$>^'I-hMV->aeLDFBTp)lWpgJt94Jh+,4EK&EADgdbn@4r^dsUpI
-iHclU;Y0O]s#2;0\.:tb8GW^S`0I^7+gMe5`U;)ZDu@qe#qc7o$lN`>jk\I,BSOKa$K1"P33_
-9;c7$#hR53I?8i'ic^[s(J"BgSMlU;eWVM#X2H9;<qn_RVPj[>(;PAfs_-Rc.4\d3-T%ok.^9
-V-?n6r^/D,5o,5DL$-KgS&D.h(p8'HL4tXtiqfTWk62fY3,`h?K-Uh1ENOfIqgXHJP@/8Gh55
-L`Q.,F-R=`IMA2`C&mRq`+G3X&*\V[oW\BtiJCs4\?jmA%$n^>XUQDT;p,$J/aBOnN71Iofto
-oL&5$_Z'Xc.FB0bFjM=B;)mpTJ<k3&KPi"q:j@%-f=1Gd*R;)I`!?P:IZP7D?ml30m'`j%<82
-ra'QdpQphm8B_F:\mCE:-'aB\Kn*DQ4JE=(SsG$qLXQ3OQ2C[8tpT@c=K)d_N;e[Welp8CG[j
-09gU7]P[1VVN%aC:dXM_,agA;NW<u'1J"Cnl>;956*''m9AV090#s#>^?G:dH!:n-1^g8#0>m
-s:mE!djX/EIpfY]_-j[^EH\NM^#A3A/U]I$%Cn4fbZ_)0BK^Ahtf0hH.<a'<3jLOA]M-(%Qn.
-?O&E<YV[Y*bG;b]5*E6oS0C(o9=*X`<FRFtFZVq5tZL0.e`oj.tOj9KK^.#4lR[,d(mT<n>Lo
-1_l,:=Ws?MrU+q1H$mU.r*W_I&onNF.K"kJ>il4`)(Ak>+:F1GDHWggSAJ]1mFcg9-&l:-ARI
-8)9!^lX[-*jT?U1+`Re4"@kmXP9a\6IiTQ]9$9F3=_7Wg6O@DRmNqU/Z`n`=)aD;WrllmJfI(
-7Tdt=EN[V1STkHZ1):<BRA8j$Y/1*L![qV-H0<T.J@I3.JAFfdR7&mL>D,;*`P-i7!a?GIW3O
-:lsH7`VdenI^6FNn"?noQCgo)[RObYT"ZH=r(1.sMQU#:6Q-OYP[e.*_Z%!?6.-KDa>#>Gs75
-rA`9NJS>\_jKFPuM8:0Fu]j.nESA\pIQ^VO*"V#EE#F!"@MB%obm01mXB^SHcO=+tp8mMQ@a)
-:_mDtd;4Q/G7^"(]utN4'T4X4iFErC4@]:O2@t<B_%RKZpD<`S1Z/d@W<?lIU8F,ndLBnHp+8
->KjX0!He5R/S=**s9S>NL:hnj)a;#3+[RCTM2ZeohW0/(7V(=)tCm!qI[e]>Y)CJ7[%UDqqn5
-]?7NRXtN6+kgJ`K(Xck<=LnLC9)L8HS[1B`]b#0#=]@@ZOE]Vih2P,E5qhh-VTrViNF.1\5#`
-fp]rb"N,4WCLIqZsEr#coDnsN(g%J;e^X@sZl!UG9^uR9_!_"jV<LIs[@$g)k"kH--CtGu<7E
-BG"TCM2]SasRn%2b!n"Q4%fVGJd.:C#GNDD"mYM4an`6Kh"]QCtQHja<n_e`c3G`O(.ariqB#
-YU&-4Dm#c_8n6Qt!K(b6Ctr*KX$<"$Or2KcSZqM-!Nl3R8so8<I4Tj6gd;:g[\@IM/]JrNEk3
-=(k*%d0`L)ncMbGosI8'D.esB&S>=<3K-SZ(kX>c$u*nqpGkHqC,7Et+/r,dk_CTj4Km6,ZVX
-O3R+`fV:)m7q\tMt<%JH,=[IU1J>jD?0C^>6$3[;NXQWPCZ;<6K,&dNYq%J_)KR=XXu[3RF'H
-5pAe8:4]**)W?Z_H&2p)PkMns3-&JB<6Q@<"75s:G;if-W>DCUM@WduJbPK;rM0%^I;fC?crX
-L[a(*r<=WnSE`(A"lW:9uiGK^]hBHeS2^7e/unaUE5ZJ$SZj>(oWar27_27,DB\=#h`X_<\%k
-kCr`+-qg7F"]]l=4p8AtAY+I%]3KCK2k:rDojFcIZ+"[gYVgVmr]%kO9bA(6T)maOrR9qi%n1
-ma<M+-`d)?TE+qpVfQ0lg`gb4O%j2m_J1@'8SiWT9@0OacX4+9ZDEqf?sJfe*+cnWt9=GQ]_h
-26P\QH5M"Tud^nBqg_tfW)K$l%,;qZfu\SmiLIV2>!Rf`6SG=%.LXRU*g:$X*G%PTBK7;2C%t
-6SOQADiD9mRUX/`"KX/cjMd_T;EF\,SNn&=8l,5btB/+%3L`S/fV_5>+k0CkA>*Ce7*09!VkN
-9?X-l_mHL'/jq7%B@A(G6GD^UZrk3KE>oU5TR.\5\(-[pnmbq?L,MLX6@WK]omY1L%^Y<Jp%8
-i#pX+CN_ih]EG^W8//G&4,dR7LO'Z'Ok:;;aYpV[dB)Lj83?$]FKmtV]/+Z+Q7<h_<R,imMoe
-Ak]^:ps;tXWr$.[Dem/C4;FK@qKf:j=t<f>:1Zcr4uOOQc)Ra>GS:I@<Y;I?pJqiol#H?)VS`
-hOUo"jQ\t;G<9909Oma_H]L>a7_j6?$jCN`"]rm1(<NE;[966BO<f--`FiH\?C4sgeqCUhU&`
-RZQ3qohWqfM,Z[`t\rain8qsT^,c7@^M.2N&LA"jd%2G=JS;2ttl8$0&7Gst)-RFq0boT%`l6
-H_OUDn"_XW/:j+0+mNI#-^U5k;aji5=(MP*_el9@8e<MVZJObP?$7It@(?F*u/tB^B]RrR>_'
-Z(>DFO5b!rO/RM!E88Ss>i5u_iI1k(h="-E%f++6>$)9nrTf-BE'9rVFG\CGEM<"X1KehROpG
-QnTNr/P7OJZ0MGU9U4k6VMlOa%fH_EH&Z6Z+oFJ,:FcPuX3q=L>,&#22f4]1r,3X[C]d;PKb$
-=aAp7=%.]i-`#g^"C$.h;-r%ODjsn21B_XpjTK[eU.1Z8+Mr^0:qUm2P9GEbcqS^)D?g>o>>t
-T;O??Hq49o?@08C<b<1=+\I*Ap1)u\^\hM?@JskHJb9aTc%qcB\8V064;s<Se0nEFRYo5m37P
-iPc[#i`>nOYqMZM%1i[_6#T$g9:Y-Un"+!LY@VLpU_UM@I5&85!'4S4<U;JsJ(^rq>c`YEd<b
-Sj'os5B#plrlHJ%T6u2_EN;LJgTU`]O'=0gdhc7K+[7$_GkuI+"aRY*/J@XF+ErU-=;*<CBXX
-'E$^r-.U4S4&n$hk/AEKhU3u>0g1u*o'.U%0Jp*f#sAoDM2GVd/_9>K<"X?p4[CYdd.7HZ*^W
-T+*Y;W()Ek+PC!?OFO^#A\Bh0tH`80:q#MNBdXB;uV"_8c,#BcfKnrT'A-*g=Poice!g<QhNZ
-[.dLQbK,:17ac?V@-[e_7^K&[c`S')44!5n4$3kD=&[E)bVl-gE=IAnHe0h1o/,;UY-+7MWWF
-t.rfjc^Di-6[pjB5V94t8MAo*T9M.fSBgmsg<icZ;nSSRA$?'."Eoh:(@.h'?f/>'pY=gO3p\
-H2@2TO:IKX8Y4rhoQ_K\'*KNj)dRBIa@a..ds$2+Ia/=,*2,6grTZD8Oh\VZr`kcjs,D6koW>
-SunY+:DNiR.=\Y!EIh*'H)4[l:$?p$Et.SRG1BL72(M&D['1">BR.&gnJZ1!pEISAm3N9n0OW
-2SbH=3Gl]3)T=?pm\lF27;=8'IY3PTBpe/:SA6>$+EM2PBp,jP^T^o%N<NK:Q6a`lNt,O./a!
-sdSspHR[XB*DkWl/Y7Y&Y01Kef+8KAN*>$u^r"M1sh^iCkbW@rsE?iBRC5)l.N&a%o78D97*A
-?s"f/#ZPjHXRei0SePPWQSb<KBs0a8;(m9ubP:eL(J0Ln=Op"PjTk,n8u&kO4I@T%iMt#oSl"
-C]$Xsq:[G5V#=K#IA[l7$?7HE%%"S)Z0$D*h^Y7u3Y`Q\Xe58kQ&%$=$R7XTi(fUNDil!+=l4
-lIIe!)%@O`eis645#X?;8U?!(n6%WGp0\QQ.<S/b$VO3hJG(+e&$TV?o99&0ADd$YWNOZU\3'
-87E'H9"D`WD6Ah;IA>,O6XiW%Nn&J^__/3cc<fA]lNkbql*lYl_?On]1$aH/Ed_*RT=+,RoV2
-75R/d2^/,7><];1`Vm1OA*+o:t_4!K9Y&$jbg@=^_$W7l=)2ftL3YqCj8JZ@ql,7bn+j^6&;g
-@_fd+W22;<[>B3)dO"\[nWdlL:4'p&V]"RP04]F`1OVbQFPgT<dn4[:\pcra48o.$),eF1Ota
-`ZTri0BAl'n-Q$DG@-N2hOfhX_-c+!E4R+IMY9">f5l3^Y*KDlrIE^"Vs2JP)oP^X5rP!86GM
-??q=,l,`C9_`/5.qbRdg<+It-+=8q.mfOQV]*Gr16$lc,oEeo4o/#UckN,o[E!?&j)6madYMD
-K+`cW9P!,lP2PjnLs%q;a-kEVr^c&QGqAZ%`^cHoSBe+G48/>hAq)qRP$M_b6+\%(O,k_>JTA
-BTO8SJQb3(ZK2Cq!iT9Bl@MoZrm\37+X)>\BSs%#4*iI'ETig6j@'=,FK_:s"=hMC<VDR&W]&
-;<j1iCXuq5QS?S?<1mj8;ZZc3q$J?Q8s(Vk^6V;/WmS=R@QCPD43j\\2=Io/NLdH,[^>O%/^M
-b1t4[Eh=OWbsN6:FH1bV(lnk\eVAL8oSqDjS[Loe!+!e^b"J/'GH(r+T<=4Yaa:W]]QHdNYis
-oZ?\lGe41)\+>ZBt2lGB+)Lq,`A,^Z2No>BhB?.\>d-UWt189Z]t04baXiN4ZNB's3/K_2Po#
-E:1p042GXs20/rK_XtY57q_W,sTMdOnbS23*k*Q.Z7&A@Ee7p`a8Y4Mrq-;2eMi8BOI8C#!^p
-f4d4Imj/ZVs(7h9&q[tKckM+0VjLYuQrtW81)!,^dP)@m"<?'N\)V^cLggO0C0K\himGo/q([
-+XY:5&l7h[(0SWN/Gpg7loBj$h;nF?kO#\Xin-m'DTO>518?cdPOO9T.h^/-jcBNsgFu@HqHK
-\pc/o.biF[XMnXm^dcShQVX3shtm2I!u\X2*V7<b+J/&a&;A_kh2Bki=bHO6e6f\j4;82TdHu
-jY>dCP!dck`=8$u4m;Ca!=VOVa_:8fM'+pUDHkp,PkJNTG5&o!.p*Y*_+7g=:"/G+Q5GVVu]$
-"[s,JBanq&/TTl`q]5k>2jJZ=s;!15&`Tn-\WLg$AXOt_bR$(@_N47?.WXJ,lYpEioJg./jf?
-omE$A%L-"[T*=g\,OWLZ$.;=f>S=LUZknEk`OjRqV$"<mj2uNG!qEh,4XS;REZ?4cCoolquW"
-qJhdlb.(/6%PtLc.Dd/jam"p7kWV:2>uY_j>Dl:Ys)"U'7_,)kdsp9>[T>)?g*qV@"O@O7Gdi
-a./9DSeiT(Bn6[,;]%jLfA@Vj@.Dd(b+]OqhX:AXi_LRi6I!l,^O?'5=Gc#5YS0e4e[i]db2G
-0O2tNBF]75sDg?d[>Vsf/]F^49nV`)end2$Z(02Q3P5hqQQa>_SamDA,!%cKa?_$s?%[DYdl:
-jKO;M_1#e1+`?BmA@'U.1.(/9m6B@nFZ8@r%uV.?#ju-oeE#/Noa'gIMXV3V[GN%qNtLumJKW
-Q^W"]Ci[XS+(2_NTdHFWOc!7[5Pl!$[F@>Vjl,F9`SdUbEF2jtRUZl35n,8hK:.7Y3p]KeaEq
-$PCj-0S.3::7tGNJ:KH<r%bb&AmA8LIPRGPgLR(T2F?ftG'?KQi/dE>,5$(JdH*rV,($\#7[h
-PIqqJ?#n?Ndek6Ef])FZf2(Nn?"3nue+DS1,Wsagf9-dO(p?_dmb4!\Ts&#b]43n:)#WFRj9k
-^UC46k$?(L93*WP$j^7MfR/8LGAM%(@G6t4^o:"s^(V#Q*-RHS2T+1*CL\UX^,K<=cgcupW("
-UZY<foA"shk6bG3j@p7<$a*uj+;XWa$.gj/gX/%]C"=TR/u$CZ9B[n+4!+EI,B"F@YtQ2TS2D
-0UI4GLo-p1_'?oPAS4'@XYCE&##Hf6qiU5#Y0$'$0BPVNV?'lsI!P&5)+m$[8_+P_$e!K-^Sh
-%mqX4A,]e_9Ws:<#I-I0*A$!e<341k#T74KBDRd&k,B+^74.;o"Vb&KFV7ri[(ee(f^NJ?em#
-4'@`qn)L<uI[LH4H&3?ImIUC'JP?,GQ(,Mh2eGm05jgc/X&OsAb_]]GmIbT':(u^Y]\h3Q.`&
-O@[!M=S=95U>W0Aip/>O+O=E&?1jc`jgX-VU)Wsd+f?]$\?P[R2gM@?m&>pkF`ML__XPL)+L5
-iRD&]L^T1m8E\W7)=8LZ[AeFdcdm_9.BBE/hWS^i0_tCDV@&T$hTX-k+=s(o]'?d'f7JA,QS\
-[r)3W6FF*Mq`S`*8M@"7e7nN/Jr)^\W<9XUmW%$$u;FD_k(8&i+h1P]LRg(hCpu$ssI6=,t8e
-4JdK$'^p))Ql>\aEO593+AthIRU0SF@jVhq^teA.5*+Qi2KY-8cYe"j4/o,V6g*Fk9c&bU1B"
-ef5lK6`Ub;(26ba<UBWh25LsG^e;Y1U3V0&BmPd?e\%<l?$]CToPJThVZ]*ho6X6C*`!rWYIQ
-7t<-jiO`]qeQr/!XRL7lu2/5-R.D_W*FE7f^4q.2Fu<\Ak9pBUYmS^4@D%hjO_*`R-MjE9o<.
-$N>,E,^Xe88%cBp6il,_S3!"s!EPb3E1dM]Ga,jK:VbSGs<bVhMcGaE.@t+Asra3?jW\;4_]J
-PVfG68ML$ahaTPLAN+c@m0iCS9p%"KShuRG=U.g!S8[rWP?ptA.oI$E^*TdRuGNpbWl-7-d-)
-YBoV[rk,.;Y9%pqe,srU;@$LmpE#_DFF^55lQ%E-MFM5Ci*=%Lt.@+\SZP"MF@N:#kKq+dEE7
-Ah`Z_B#Oe]$8h:_`1B-qpg?@H2Ec\)24_s06;ctXF:%ka8kj/W,L7;;>sFifVUmb.EDE(3SPR
-(#Vf>8`[>!0nV4&N"2SGWm!2E9f2I])(@eX,QaJ^4L"sbc/V*]T?MUm*jbWr#$W)P:fM($oQ(
-[.]U81C:Y-Tc76]3!H(*RI;t!3P]h?Au?IOIuS_<h3[?.b[!4j5tpt4B.7a>(kqFmk4cXl:72
-WFIRUP&**DNj+HuGI.?`TH-f7^TAE9Er#u,1d(Z7:,7(qur0n`UQ+Lr_M_:\;c-M.*3@F>E[Z
-KIgEE(8(;)^\X;jB[pWWG`#"9S(/arpgp:SC(qm\TSuY7qMJ^<;S`f]^<rb^E*2Q8MOk]P(6O
-[?'F*ngCO^/edE!VWEK1s*TI+h^s:brZ5hlbg%SQm\rAi`D^KR3-fjCF%r)Nf\A^h9K&_p8CS
-oGA515;eF-.*1D3"48#LI[drL,TFEVbNH8PW9A#SVO-FaoAJ^h>^:]ERa>faSUO$i7@K5#:M!
-PPFJI\-*?b92TOiqJdZo0.[bpG"Xd@5@^Y=NGq96WVJqM_\N#0ALSRNT`$`R)9FIK5I/,HRo4
-n8j/d5B^L&c"YU%+W!+Zf&YEo]k.a=Dn")U=4a2;hTrj$WHN(+T''4^0e=VF]:):Qkk>a8bS,
-=!KVp:38:6%^)auGO4NOIo/-`8?SYs($(h<BdfVFXuC?0pLfSa5pHZp@Ze9:JV'Gt0kk*$ZjQ
-j"lWgI!0gF/huR3o.E-$\i32[ZWJ*A>HJN`5<scLk]!-[YmhfZPT#;EW#%0^VlESj7CK#?\rm
-k$I+%4S@]5OdXBW?&O\22!`,<'UjuGZ0o0b+kiESW4/mQ?cMpe4CL[rQJcMaZNLlICHMf-i_4
-6P"PmN@;Ib$Tn*%[S5N2k'c?o:M,%FW*((>u3fs>d37>eL4ih&Qm\R<%+0/<`lW`J9D`(<3qr
-lTYKBfjl"d"i`e)GP:?l<i;g3Ue,L;crpAG)4>)+kPQXA(DWDH7C&mKaWW2VRaWjY4#]t)00A
-_8_T73UM1'e[$3cn\.([tY=LKp@%9]1S$,'28)/0\3Y]GJf[\#$qmV`(24Re)S=i5_$6$t-7:
-;i?#D]"(2Cp#Z+KbNaf,5U*Um+,*bJ*2[CX/Os61Ia;D.F_k>C<B@cW"-P?/gU9i%ReAKB/mk
-jNC%nNZ=5W\BX%eG&QI.%H!HAjpo\``.k>t)T69=,"XDAqY1c?I$%jJ5>r5Y9@:PT0/":e>a=
--e6.Ia<#]?l[OqEqmP'U84Up;(4B]`&p\h$ZB6Sqc&c/iU,4W+VQj!8GVb^UMG-ql1\&K-C/"
-99[m2/?d:7L5Ol0aFTd39pZh#+(?6(hj)>X>o^+N&5ohe=q4q=>St+8_2Uq(&Qfh*:nr9&1hr
-l^sJPB`T(IGX@?.S;g$'s%DgILrCCKfG1r(j4mOsk^]5#u;7T;jriken4G*sN*6"lJhZ`bi7@
-ka>m6U'$EEGrRjX2cU>O4_bZkB]]L`TQ*Y]0n@'.lO-shO+L"S%-MJ0^hNO4't9F.6nNNPHWK
-"WQcj&TdQcTl_AQ?bVAMR^RSGK!QUq$[o08_EYAi?/[[1QS%gJ*#&?R:>Z9;H*4CrS9;?FPA0
-)r2Wcltp*=ous8/TQ:*oKMSb%>!&6&T_D"W`@nTd7?-5$e.G'Ta;,AAtFsu#"!q@FiH$PMruI
-GrtXZ/`[e4I^EftFfco%P98:Mm^hNNj.8Y`O8ip8gURK0DRre0h[@@'VbS4[PLZ#I0@&W_8p-
-nsYq==p[/lSK`e@duR:'E8&DKetCZ"l:3Go^e=W2n:mlWR=l!_?,/N#u;k89N,A>-thp8=&l>
-60W+8G&.SQbBJ%g9ih%0GEM4C?NcR/ad8<ASTgWKqm6=_\oZ3#h'2&%OJ*R+DSU/D&1?<$1"@
-i.Z2Q#h?t3F!VM00=!W[AkhXkE"60"qqFIJ>lB$'WfrL6h_m92kmpA$f-3Ss<>J#sGtcdCk[9
-AKF66&iXHW5S[]bh9=?-RpK^D=<:QMEQ>`j/NWU+c7@I>8HX^l]hUODGZR3mHTjXkO0uXe%./
-L]rpjj;UR+3;n6X$Cd$Atn\]6/XS7b@]tNGhf!F8A/=p;qRTTIUYhf>N3n2aCSqWc')KFX"Ki
-Oj&*+<nh'@ZsPPpl6i;DV="1JS*SN;tV0f&;"]*r`&&%cAgG/r9+2TZ+6^2/n5l?.Z65i1S8-
-^:E-;D9uL_N7n(IpWC;;%9siTV=f7U[CLXFSH$/^^RI4654X$Q;R4KkgpL#pm%`SeIC8h38pM
-/,gFW?@0T#4I\(@+YKd8jIW$J(Op\C'tcZcSm7R=4W'9beIo9rh5OuKe447%I?bbM.8_XK6j2
-AR?A^eH3U`1PJOc?)W=o(me(:-O0ukDLUjH/I`L_5s0eOWK()CKfFrn;s.*J\cqX\`qp$36T)
-mqeYrE5`'qQfDOr(T7#jk5[JX<;L/_BZeTZ,Ic3Qm;$RWb/SA")[u*=ms5AWR;NfI%HuNuZIs
-CR:A4Y:eZO09?=\W<*oiE;j@:hOe=r->`Gd$D);$qHfg8j@MPiB6\J"ndIl]SD62/9#f<C((.
-<EU#I<>?,lOIo+.cn&T3J[V^ufW;>pX6/*;lXd.Ug=CFh2Odk^r$h5C5m$DKm=TKVZe8%42Rt
-biC(t)FSX'.;B>sI&`bVa*Yb;4S5a05<<aN#WVR=YV=lH*7l.hI13c7Jaan+Qfi1+5FCfLdA;
-RYf>MSC/K^9.KjXg;O^O_;3m<X@&((>Q-m\@#=Up.;.;)c$'Kq_^@$>$4:>pE@:6lnX_e'uJ2
-""+,c*Re*.5^Nr%5=gYJ#+1@kR_#V',1lOk$?l1?b'9$:7A#RGF`^!uIMqk@VcBV%G5+0Iobp
-9X6h*6XK/Ztc@C#(c@M\a[JcW?jN??*9kg8o+GcGmoIY+DTDM0`%*7<5]K^UKj%s%b8UA<Zb&
-Ip_TCMg[Kuhlg_@'oI`aZC3fg4]Y\@P^4Oe:BM;6lg(R,[b)JM]%Lu"Trf'La>Rj7!^#9"el(
-.[U4JoJ'm4iVE$OHr7``"]rcPF>n^.5U,L#s2%hs._8>AQRkD6jc8U(2COHakT2%3lC>$K:JB
-<Q[I[sqgU(&]FW3FHJPa`;QB%dBBrq-$V;roq'WC9#S)p,d302`j*>^l[Gm`uDZUB&@`[^rFT
-lq?(Y>)sW;T/'a4MNfRr_iikUalTL7LXT\@*m`)Kc3+*^s[>Zd.B$l4C:h/l:EmeMt,KCpiWb
-Cq]H]I$MFjakdF&Dg8*[N]8kBZT^pk;o8DSj?D[%C(B(:tt.k3AsOGtj:nq+=VrQNVH=N?\I+
-<fmm6Z)/3#etpYQPJ10qlseeaR#.d7T?VbNTPFGjeWJF+n-X_]h%HPnd;ukNq/Ff,%G&$EJGu
-0tMPsZ:i4eMbX7O(4<L8.Y9/2Z46_c]K+i?ico[m/jLVp#e`0_Te?pd'uEu-.HZ1rId_B>XM$
-S[?mq@Z4t]/3KHenL4"N)/tC.m/]e(KaHVGRQQ+ZQ7JKDZU`)!L'Ac_9ELnfQ7"PD#n"qVH9n
-`>uu,PL;pZCk7ji,$.hlh)akG?A'2h,UWi_=_c#gXccqh<\)X%FFW\6K\sH,iAkn\b8UFKrlb
-<$_T?&+RjEbrYjT+m3IJ$N]8!qp?ED]Zl5%5=f:cB.:S)dA7>PkgNho;cc,f'VYKuP0P0g/E+
-dlptu"V%te>f?$:#"q]nY:m9.d9Z@]Y+%8S]l`ENfomW:Eu>6>B%<s44S]!AZ<!1BJ9/5.=7@
-[o_,9a%]iJcWJuQII'2e!f-r";Zs4W;Qe\+o,IWteEbkd#hb]>*Y0,q-"2fW%<_]2&^^upoa_
->(<Y\N9q3[%l'^W_'#Qoh9?9.[@XoRBf"%B(3,MXm;AM.WOiCFXidS3tj/RbGpOXl(4RuAZ9d
-'2HqEA[6%<&Xj1;C/$1[0VdKtkZ+3Ad=PrSC&<.%EZGr%)aTQpjV01%9X*%?`$Qd4iHoGrU%L
-*9>oK':LBV)0U/.$XNobHh/]I-n&@Baqeg9^8);PuaOFc?YEcJ.&k,rhQ+f73tG"$:$D,7;YZ
-?Ctjtg*GFGdLe0@b_`Hh+C"j:(b@T@$iXlf=],LX`YXhUCQ;0A*dpZUN:@c!/S(->F!AZ?G9'
-HWrffRXNB6MW5B3aVa1Ed%B"#LH:>[LlWJ'i1b^:=(Ylc)I$:aai'W)M<;iS9"1%;%[@meObq
-Xg?C]l3L5;otA'6=n_*aCaH;-(3:1R)?Leg0KsrR\qRJ5^52_9_?6+@M[u7p\.jI"#>7+`Q)4
-U?PZ&2MWijs(^W9G7Ed9VrWjgBYs]82g+*#nUpD[G&l>;@H;X\@3HAEV[T"(e.:^X4`lV>$)>
-ku(ON"R,)I#ncfP70SB$F%)JZ-n&@&[9U:-HCd@h'tX\o-jV5K29`;F4SZCAr5PdY1,T82`o0
-eMi%=Pe20Rju=Ok-8&5KXAm7V-`5><?7!o5:UmEnNb0"ACA4f6DI<&KceF7%=t-VL!]S'>5^\
--[ZuB]6_dOn`$.r-]Nn@L$H=rN[@*:>]K0<o3"CFc7Rc@Dq`$l29<4qVI\3,Yl&_BUnr/8Tfb
-8UiC$UuMe1mq*j\7A3+#m60=Y%/cSKXMiFRnD]_Q$c?OeAJgd&bB/#1<(Fma!i3/L$Us9*OP=
-G1XhV)$5$GGn2$X?[$3CN;8O#NPrO'g8nYG*JG.mNfjk_!;P]c-_lg$5l*Ss^33V_^<5Y[J79
-%6I)5`\Xkt%(o:P>G'"gp)Sj8]1/1MrO'Mq\K2UN3siMWKYTBCQS?aN%Iuer7WcGeSELH-qkO
-,\Y>fYlicF9\L>]i:W3&UD*r/!EVkQ.N?NpbIA`1=CWS_[$l8?Hpp[OiWR/'RG"!_V&]$3+b)
-Mj3?YM`8nmCKpgdnE5^G>aH\l=2Z\C9tp[7k7[/()bmN&b[FE1E!aCP*KIueuE()0X`cjaH!8
-<,[hjoWVZ+@N(=:)i!%Jj)QWXLWn%a(8.\"f[0s`MLWje;76s>Ydp@*M8<E!:'?R\H'@:A<@S
-Q+fRcI's&EU=6VE`K[knAO/sSok!!UpXiLc-92gBoAGKNC6<k!3bf.BeU$a(`BEW,!dBG3f\C
-WQp'IAtfO$W'5DU;$"X=5ik!<"k$H3hm24a(kK=jil:=%6Me]oC3k6Wt>bj*A[57>I9SRX#.S
-m+q=4e=QqX)"u/eT"%f`%*90W@5.hD"do['N;."\RGYsCD5'WfhZD37(PJ0k8"@@S$k<&d#2^
-K*MhZ[QhBrrUGd4j?UtlijiI5_mBLisJZ7=8`7cq>jJ<76-G/<&s#7t3l].hEES"^^8'GH:BK
-4g)ilGKsB$?/iKjs%LpoDdU$Yu`3T(eK#<iFb1=]V9e@(MED&&o+6Nc_Je!in;*XUL<Ni4S@m
-O^R`NocK)_Q=3*\(`=Ngrb"L%D]E4a2E[jJd`C\CqU/LoKaU!Ra#kP5Va%7/X2&IOp!,E`4'(
-_(QJghpL@?ZkFNhSb7b\p*BX<_%TU14_%0$!e:,5Vm%aiFf^JnFelOm`H`s88OrC7871,;+9&
-[e&XKAc9&F,qEW\_R6hN%55N/@&$SS001f'Knc#e=TQEr.r5*E^\H8)*=b5'1!VfeQj=ZKnc`
-Pk=[VFG$B7QmPg"5c,,uNmWBUT]T\VB#kG]kOqrF[f7qoniAYpp%h-"(5E$JG9#Sm7M>/WN<+
-nD*<J*oF','0M[3@?U;i3GmIeMk=#:Wd=Zd%VDfCJs"i52(>22`o',!-N'eb>kA2/;9Ia_JHo
-5f+r)`89K(+m#(qLoKf/mIK,KQPaICsY(K;?AE-_p6l,3$<0YXNaa&pP8LT)qd=6HF*]eKEaA
-:.%N2O[[l*5oK\c"4Yl(]Pr4MRD;AF^'<-KL'&>"h*`7ei-+"R!OaOHH>e&K+ND=Q2d>,JBfR
-9!P;b^sn6Sf@:Bu2V\J$&l$@93V/*ps8!gaRt(.5F/QoKV>o!+Sc=Ti2Gl*i)Vq=(Vj(N:NEh
-M0OX<6kVU84.N,.GN0$#@hd3bYeZ/%es88r[L\^.\_jjE>fX<BMK088'!^NaQP!Mh=<Y"+X8T
-Yo/J/2T+jNjC"nZY#81_+4>YM-l'A$<:P"_TjoXe"-Pd]#L*b_&WO'1Zp[4W66Pm4t6$j62DV
-CRh!jePt2LeSG>80k<JA%*,f^t;Sb\i&`-sfo1.59P7Gk%X@^?5-U/t]5Y4KQlL\AX=e@K3+r
-6GqPU($8Qqa;h?`&U'2jQX-\p5r'WhG*/C)Aa/J9r4qXE6ecIju>"3Y#*lTi,jH+u_bW,f<m6
-7<Y4^0@8)oQk^*=\qh4VR,Jp.5S;%SKapl'*43"r$I\ebs#Uu`K%\M*IHS%#<ut-C:j8!#]Wp
-GN],TQnmN&qDP6@B9SE;G1.(/5C1^bcR%cce,J@&*%/TJOu-]o]e08YDLO/aZ$d\J-%*JpIJn
-I]qa_Mq:=Dkod,&6_u2C$R)/Mj-5bG)g:/9(rpsASFI9"QQ)BpbW.FM`?4[-RjZ.V4'=UmA(N
-_Z76G(M'3GpS:%?B>Y&ND1`0=1mg2N$L^MS!DLk1k=4/k3R`.8UE4kdSLUI-2@WL]k#L=9J5E
-\f;K?E`oZ<[6#8LiOM*OP`iIPpls^iWH_)>1dHPZe-:0232>(kK/V)O?O'EJ5J_oSBj[#t7,:
-?3D()9_h"!T<aFb3#,LA(WCs$@72GME$fmYl-lU^.W&^jj9_E:,[sOU6jmDD+d"H4D2(McAh"
-j.@#%F')Cr$-.1MtE51*2:<Rn"%5`8$JU-`:W-LeR+&fNQNj#nU:bT@>D$d^:.0X9`,;N7_:E
-j`">49q.sJa!$3hhRfbR5ccJg%CI/-()%'M#OS6&h0YU8QGeHZi4f3V3:Ti7^*3t"sl'>V*5Y
-MUr]"L'T*<g/9-]U0_)YK,%'>7m*a*R;tsqbM5Nq?fuh95_:E-bd@Hst+d\0n#'Bf-.A#s#Ho
-djq%[i="0(Eoo:>0/AWAYt/i&P+YMlqhLn-RS?PQ.eJ7.R9(!j+5#jq4OKrcg:JT_#3eiRnYS
-ns#XZ1fY1HWJM-KPU&;aU-BQUi_q?'-LO=(,Z6>F$W;%77S=sjQ!QkZSqaq7NN=s?;CTR`/r`
-XK0i"[q)gil]T*f$:674!%qi!o&;1o^&in$bH4];N!KClM)*eMmQm_slb6^??h"_iPE+\pL\h
-!-YM?):>&5oKIs'reRc/PaGB%38G9$d!rl9<RYkd(V`D-q\Ia'q$@E"Y[8_5GH;+;PB,<=9]J
-KAN18t]V+@3?:n)FkfSe"]HaDDTg6"&j\i.T#Dl&sUdVcG+6Pkk0sf8N@FctJRd/GZ)OZAn'i
-`/,d_1T1R<(7MpTKr+5Y1?\pE9-pMCB^N\,`qUjHn+V*,4>O;GeRt?(BTeP@_^Q@ArYh-V;IC
-cUFYF<+G?pFF"*7-(W<g;0":-)1?cT:d>YkWQ6[J4tEI7@IhSYV+FHFa%$2rLl/#eE<E8'\4?
-I2/osQMWg*LI)5\:`*@]^0\1h[#<*d>[d2"a/ndCO[LE44lF9rQP1iikOdW_XUDR1S@otV]`]
-=0q<4V^Ya:?Y_2GZ]h5kq\LHc;0TT7V7:J>mA&7pe4jb2=MXM8)V2;<LV)HTZ8_Z#BS,eq=T,
-EBlg(Jq*SXj/npf9BS=@"e0P$l'U5=i+F6Z%7($!S'4NGdon`FDoPrr$Ohd;=+7hhYBh5q%;<
-*M3Zs,TRB%Vk0R2#5`Ugh,,fe+*Lnq#<g;UeAbMPj+LI@rAT%f=i['2L5rjXEt>PV,TMW&,ko
-)@@_P4p2ba\YE'3>*'*bjji8194ps+7.]A'@8ojQ:=F(D`Lj<#h8,MOE)tA>,bTu6faq^44VK
-7l5#b&C<>\HjEI;N?]dWbfZ_#65.B-cjq]KMYmF28$8N#P<PP\1LB:ATOL;`i*'_@UF$nJ5M,
-*aC7g793oRIk9\4!Dob;iTjo@R=$mLTj@&l^MZVHFH`<miF>W^Dgn((NOEV)C/5]-!qmpk@^s
-GJk2RDk&\VA^0ah%TNS3Z.81]>rJ=,Oba)+52;O%fDJdQK:rV+L;^%,gV#Z?YK/!aV60.''%[
-9F8'M*XV'e:Jn3%CbkB(C]!)rj[e&7pr<ibs&L=,uGH<5,a*SHhZ259C<a%5iM`adUDZ7.*rd
-QG278_SKW/+4AL0+^Hlp^PeW=qgE"C"4WrS3`?9FV_7R%3`XS-@J]ti/'\"CS7J"tN(m<l,03
-B3NBb0eQC-45i8(V685j<dkB%o-aChf!]/#+s#u!cPQBP[E!1.U9=.3!d\j_OAP,rb-dd^!h8
-sX.,4PIZjs513RGN^:CEp)H4Z;Ke(2CV(*$b6X;qXQ&$*1(VV's;bMDNh;YGacC*MWpB5`8*F
-I]t5X7<L?,oCi`21Oo3<0-l$bck?S:Vf.kFCkqC3"S(/K^hHETg_'u6,#>j[8Hsl%>.N0^C-A
-c<LO\5/1RV`s_imV^#A)&W`U[grX8sLThHI:)V_SJtfW!eA#AW!JY);?3fMB2.aN)rH>7?1a;
-\L_?mYo^GEUbrA=HcEarao]^:VF/-4<Sj`!T]U^%nd=8++oV<QU`PQtn8]o@W1o4pF(Z*K/X,
-s)45HP5:BMZDr5oebB/sg"5g$TjAfmmE6PH(PMJ?<^9T,9tB,/FDW[diYAJ.Ot[8BW&9VlmSD
-)s-u=RoK+hkGRS2Dg'9HmAoqHqeY5dd5q`KXSfO9LNlj_F%tr6(@ToL8^nY*agg1>kD>nHela
-Z^/HW+j]\2T.Ut`gq8c/*Sg2Z2+I,=LQjX5LPWele`4-):e+'iE'sd#PV_j16fk.*S><Wf4Z*
-bll.7gY`8d@<,KfT,?Q!S1(!(Tp>EJ!.g'GFrq3u#gSV9X;-^_7qg!;,WBN[W$sWV3/[-\dQ?
-3)*%U!uA9"8sG7QZlFTC'f7_e\]9l:9.cBgE71]gL:f%9S+oINEgLgs5hL)dBn=`t91V93%;D
-f\IWVobMc^*35iq,_J%k*9cb(0b7PZn#g.XWO'"/CWkS.q\hk"n!7P6&P!RN%B\nS"?a]=&D*
-_&CeXq/'mAPedheX.S=JtE#,`R7)F&ZmB?1elDS9gOgB&!7QZob>-&G`$;=dp#;pUYNW.F1'6
-9<_]EBo7l?.oZVTD.VRf];8KW"<E'P4fBK+p,LU^*Qg:5^1n^O]=i!ZGR1,a=P#JYZ41'C`S3
-@O7hW^jD6l(WU%X\d:h#]1hUsd#186I6IT'5$07be*#@SJKjJ-RXE,F<c<`'.o'n.]Q)d6p(=
-QCI0^W,/:T;,q5U;+4$GOQ&J"96We#ia\icG8=S!H^_!jJT9,:*p>B_:K-1>>c;HU-OH\:^]D
-uR]aiK:%mkS<0;ZWU77p=!:+ie&R>EP+2VZ@iHB]f'h%a_:p)AqJPGjjY+JqV%ZNI@@<g?`WI
-%0p$[TUg3ohl_%o#?`ZD8r2<RN/<%dMQp-D_E(lV+qcS;+e6,A96V/aj`.[gS;P_cAA`0*@>;
-&@ld,HE,K@'C$&"V(ZKMT88`gcW]<,[W0hreSV.#U4ZUr(!U6/aDEY,dV$d(A;bK0E_[PgiJe
-g<P*Jg-.X[OSCXA-ocMC3.EV>O__jilc?@eqFMPd;E#gjh7eUmSAh,$Xr,G="`phF.B6P2P,S
-69.)$a-^gah\qd&3\AHG:!EW/Z:'1o9>5h,<>j3:b[2hL21MrqiOuDSYk+ejd,q2fMN:)f,5#
-SZl)=aJAUMKW$14t,*2^Bg`ut>nZ7.Y_c963rOYiPiip6,X/67k$>>@6Zd)K1Z4.;Ud0&'Hl:
-.m7=le?b6Si#m@f1@?]Paou`2&2?N_i2_5,;F+2HQ7qr&f@>DSP[S!f)(Mm2j2>FBfQZ#eG8>
-ck>O0mTV'aMH`@aS";=3.B9tbu9:dq<*pj0*>4MTkop_`u-!ZqkL4):&UpK%XhEs38pVh=Q*B
-(WVIK&WsgOK.4ZJE64hdZK'l?:odft@"(?anS1Tt$=UKQLeRs17?\o%$!Sh,_!l4%/OI]$=W/
-\,U<UI9pL"]t<,CIe/*,RQ.l9Gje#RoCu>3lTG\kYBP?&mToeOD=lr_efap#icdH6h#^LKd0c
-ZLoX"9!WF=0>h1O4hFc^q;43rPdf396_O1fZQ3)G+lcs/]gY!D88#&19MEk"@)[_tG(rd)1+Y
-4Th#QMgFg8:/$'%en$"mUMpZh,cmgkBW]738>Tuqg:'Hj?5]sHb[Zq%FeHMQP^"Ts"Emf:gYC
-5+E`2uTgV%:0*S::gugosk0`"td+'4:oq-"_I4"f?q!HAumc1^jo_&S^=2ne<o@Ii%H[+PRq>
-8a_AGu,OD0>_WoCgf'Fo/c;lf?pSrpC_D^].m$hS.5,-V2!AlLhm^GMdZBr@b5GA[^fdRtL>`
-8A"V]^\c%*mseInK[e<H$L)IKnJ0L0pTjeOO?V]khTF:l^C]"#]Y+!njTk4-gYo9,^jYV-%+:
-DVIcQY.T03k9oq+D?e]";mguGO'o@BN%S\Y2P6V(o@rPj'MefaWdYP#_)?Jb/Q;K$iU*IQ/c[
-63e:9IjIT61cm&]p5e'>in6WdQ?_l^O[h^9(sM-i`[G6jQ2.i83MaQngg<@8m1JAHM>2L32H9
-ZnHG_Lm.k7ThANO\;6/Omc/.9+H2piKf_Qk!L%L:[n(kb?'kAD?FR:%5T<CN6Z-Z]FpC"_-c\
-Af:W2/!+@X+q$pWbpM!U8lL4p^BS]a#Zc$B>@/r@pjp&R's3AXBk1i4f=k&M!AiHM4-tGMUPe
-n[+25K94qR%dE7[eq`EC8CpZ5!2RfUrEDNZ0m+SVDVkPXY2@=P6i%P1FQLIDO=nC3s)LXfa1m
-.(k5F`YWHb!.Ur;`9qk_5<IWroV=%?hAoET[+\(=:Agqu9+];OD1:TKR0Q0H=BGtfr?A:*=5]
-Tl9b^3f>1T7(Lge4KSM%as*Y4*qJf;9unIVlnjfI3tc)n\s742b<&jF3h>/>E__RDXm?EUq_%
-XO'hdJQBHI\d(aEqGq]0Xhom3kl'Yl6-4aprO?VudYE8atQh:^M[t4/TTdlW3o2fM)J*l^=nb
-2ieQ;]H/^&>"2l?.I0T!SA[dd^T>~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 338 287
-%%EOF
-
-%%EndDocument
- @endspecial 396 2741 a
- currentpoint currentpoint translate 1 0.5 div 1 0.5 div scale neg
-exch neg exch translate
- 396 2741 a -2 3473 a Fo(2.2.)47
-b(The)h(Gimp-Print)g(Graphical)f(User)h(Interface)396
-3689 y Fm(No)n(w)24 b(that)h(the)f(GIMP)h(is)g(displaying)e(your)h
-(picture,)h(put)f(your)g(mouse)g(o)o(v)o(er)g(the)h(picture)g(and)396
-3818 y(click)g(the)f(right)h(mouse)f(b)n(utton.)f(A)i(menu)f(will)g
-(appear)-5 b(.)25 b(Choose)g(the)f Fg(File)p Ff(\000)-15
-b(!)p Fg(Pr)q(int)26 b Fm(menu)396 3948 y(option.)e(This)g(will)g
-(cause)h(the)g(Gimp-Print)e(GUI)i(windo)n(w)f(to)g(appear)h(\(see)p
-0 TeXcolorgray 26 w(Figure)g(2-3)p Black(\).)396 4077
-y(Mo)o(v)o(e)f(the)g(mouse)g(cursor)h(o)o(v)o(er)f(the)h(v)n(arious)e
-(parts)i(of)g(the)g(Gimp-Print)e(GUI)i(windo)n(w)-6 b(,)23
-b(and)396 4207 y(notice)i(that)f(if)h(you)f(lea)n(v)o(e)h(your)f(mouse)
-g(in)h(one)f(place)i(for)f(a)g(short)f(time)g(without)f(clicking)396
-4336 y(an)o(y)i(b)n(uttons,)e(a)i(small)f(box)g(appears.)h(This)f(box)g
-(contains)g(helpful)h(te)o(xt.)e(These)i(small)f(box)o(es)396
-4466 y(are)i(called)f("tooltips")d(and)j(are)g(intended)f(to)h(remind)f
-(you)g(about)g(the)h(function)f(of)h(each)g(part)396
-4595 y(of)g(the)g(graphical)f(interf)o(ace.)396 4774
-y(The)h(ne)o(xt)f(se)n(v)o(eral)g(sections)g(will)g(continuously)f
-(refer)j(to)p 0 TeXcolorgray 24 w(Figure)f(2-3)p Black
-25 w(and)p 0 TeXcolorgray 24 w(Figure)g(2-4)p Black(.)g(The)396
-4904 y(dif)n(ference)f(between)g(the)f(tw)o(o)g(\002gures)h(can)f(be)h
-(seen)g(in)f(the)g(top)g(right)g(corner)h(of)f(the)g(windo)n(w)-6
-b(.)396 5033 y(Notice)25 b(that)f(there)h(are)h(tw)o(o)e(tabs,)g(one)h
-(which)g(reads)g Fg(Pr)q(inter)k(Settings)d Fm(and)f(another)g(which)
-396 5163 y(reads)g Fg(Image/Output)k(Settings)p Fm(.)c(Notice)g(also)f
-(that)h(the)f(windo)n(w)g(is)g(di)n(vided)f(into)h(se)n(v)o(eral)396
-5292 y(major)h(sections)e(which)i(directly)f(map)h(to)f(the)h(major)f
-(sections)g(of)h(this)f(document:)p Black 3695 5692 a
-Fi(2)p Black eop
-%%Page: 3 12
-3 11 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black Black 396 579
-a Fl(\225)p Black 0 TeXcolorgray 72 w Fm(Pre)n(vie)n(w)p
-Black Black 396 758 a Fl(\225)p Black 0 TeXcolorgray
-72 w Fm(Printer)h(Settings)p Black Black 396 938 a Fl(\225)p
-Black 0 TeXcolorgray 72 w Fm(Image/Output)e(Settings)p
-Black Black 396 1117 a Fl(\225)p Black 0 TeXcolorgray
-72 w Fm(Position)p Black Black 396 1296 a Fl(\225)p Black
-0 TeXcolorgray 72 w Fm(Size)p Black Black 396 1476 a
-Fl(\225)p Black 0 TeXcolorgray 72 w Fm(Printing)h(and)h(Sa)n(ving)f
-(Settings)p Black 396 1934 a Fj(Figur)n(e)i(2-3.)e(The)i(Gimp-Print)f
-(Graphical)g(User)g(Interface)h(1)f(\(GUI\))396 3967
-y
- currentpoint currentpoint translate 0.4 0.4 scale neg exch neg exch
-translate
- 396 3967 a @beginspecial 0 @llx 0 @lly 590 @urx 574
-@ury 5900 @rwi @setspecial
-%%BeginDocument: figures/gimp-print-gui.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/gimp-print-gui.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 590 574
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 590 574
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-591 575
-12.000000
-591 575
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-9a9a9a
-cdcdcd
-b7b7b7
-eeeeee
-808080
-547098
-7393c0
-424f63
-5a7191
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPu]lW4)ZKPM3l1,Q+B=`q;OcgmNrX3MCN:S6^]#OXUkJi>i-Xu+$cIr4_D2a")Vq;3E*I
-#NVer*WB'6fB>]lia_G/q.HJWAD@G2p0[J!jG>5QN9^JH/9L.OFTe?\OQ5ZEgbkX0Ts,'e<=d
-=Ku>SMA7XBXB>;H`9C6]I<AR#.iginG3nNVPVA>gI1&l_`T]2UgZ_8,=3C*#(G/qQoZQJ)lgd
-Z9HsuY6MMeAZEe1[cMj9W]e)+;p=3BT^`_GtM50<7/VoJ9?E;C"&jL19G=1je^_6<J+$P^Y@e
-B0XH"'-G4aN;h-*&1IJ8[c3I:*3%Y:@6u80ZnCX5:`7]n*E]Ll`>8Eo001,1[RuEcbFip]S)L
-:2CU92E9Us.$If%N9P(k-S2,5JR!Ol&=S>X3dVh]0oh2K)a#;]oM:7beWQbuW_r;-[1%fl-S6
-iiFEKZSK'+Ngr-*Qm-g0:\spO!3\-St9>b%QA?X6d^3gQ$,!a5YUJQuQT3\"\l*jBe8nf=,1C
-:RR4Vb9+2m.?'SjU+$p[IA?JB"hsu10.;rN$O#1hW,`1[VZVb&G*7?oS$jG<Rq;kp1?6q(:@&
-e:$:a)#okb^Eg8;gjM,Cthdshh!/5BJD>ruUES8srf+f30%J<Q\4.p4cA1<LH%EVdY-dkA;X.
-MlRHf](D[Cl))=I<dP'iFJtTnjgn\[DWDn\d;..0im4C/%`^?p,Fc_:<\OC9&"%n)*?lsI]7c
-RiaaROK?,r10thd9CnP#]@PQ&*b:^![jI7Q-*DXiJbY'NGc2+E.6WKZ-Q=+\nJ99lfB6kHXb"
-gXPHHT(8;gI-"fMZXhjh'T56s6LSN.'Hd4/d7P'?c=oXcVpUk"VE4qL03X:8JWk</GR"N>)2c
-CRhCN=I_F;,Bj0T4&WZ::6cGC:7[9%-tr39^3HnB[<Wj$]NC]X]T4^P/5C'=`tpCa_!)5dMIu
-PYpu:Bh3.6q+oIgt-&rT[eq92Igln(W13&MG/P<g`p9uZ+&&;sIcYrEVsCRj$KbM'tiVE7l5f
-]#<I3DRUiRU7GDHJND(4'1.gi^D3X:<.MgXn*N4Y.IBKVE7l5f]#;.ERJb0gZ?_G2RYT-=If#
-Q_03A1V2['%,VL2d8+ci_*YtZ%`Iu^K,@@Yib=gT+M3DUbWTKM?dFAt,q6`#ZSb<jE:AIP"Bm
-GP\_t#_?iPafLGgjAI$n%jgij>nj_eJ_`(G+$jR`UbgZs[m)PLMUQ:cdlA>?1`'rcS:3jMg-c
->FbDP[5bGa,@?\T<Fb]L4*pd/i5(f/4fl5rW8<Pf'>\*sg/lkY:@bT5dhZJjL&.-F4'J`G<4n
-Wb0h6^R*):VKFLi6cI:]6uau5<.+]cs*Aa#&hQ5;Le$ThEPRKbebS-0cHVgW,8S4r7L>85i>2
-G-%k'a*]RE.Z7LB5DSA=*DT?<Cac2At7pO)f;K.:1\ME?oU_7/5H)b%QL`Ya;:r1MWLtU;G1q
-tQ<hTH=*j4`IOFN?/Pc2c+hck?6,_c)9X-SA2hUL<k=Q[tS4G2+qTWE[gptkQ(+57]hZ[8r)/
-PX$=5)<d6t1/aD[+tXcBU;r30CjqS1;q#]A0sF`YKqbQ^rG!P?mT]Bk*&7M+rqD.MaCa=Ibh;
-`Q95<Vl!pC15NoKWE>Z!@W?-4(+4aaE7uo4TXq#7LMAR*a3B[;0;ra&U$-NI?aa]B\I$I:>J>
-0Tj&qmCl8[lY]$qL+3>3pOA#=II*P_BB(KoI.7FA!7l<CPf5:B`UUcn-Nl#7CcP*J"DbWF2.E
-kPD.:<BdV3+_2!c*B*".cR9C5K2mme)lD4:/YrH8tXV%QL8#BE#'gaeMsi$nd`#aL02#J:-"+
-*iY##?lLKM56e5&=\tqNP[^EiDV)qa>SAg=qV<oQ.MDoAQD.g`-ZsD4*;Ar7MVA9`e2ANq$,d
-U2Aa@b@D]5sgd=e&%,g*ng@.>^KuT%0IAEP'YGZ*XFdQ.E:cGiVJ.QW]hR:3OFP[XJBTp#FQY
-fh.c:D'@A20H?TcS5)Rt_hlppYHsd7a33@Cr<"RR(+X,iB(^e]%61W@[heF;l#7CcP&52JRA%
-Tcrs9MZe%W)WPB,coXktQ\Ms3_iT4D!hUUc^`LUV`1K?-W2`S%Ll@%CDi%!'KMZ"'EA>-U%)j
-FhM^a$,(I@W=0E$0--e@W=/Z`Moh=S.&kHC+9uHK63+%TlO$@?'`IO.%TC?R*/lm0$E6bPV3+
-dnRrG9QGpro(8kbU=e(F[EGAO?`Q9MDVe0LCS;_JjSB?-3bd>9rW=S*k@&Bu4lZR,E:/R=raX
-@D5M<-Bnq:"VGenqEm"Z'Ef@r$7)<)-;V`Q9N`a,*!Y=;$q!5Wko^,8M#0%&jd!X'hg*@-%BS
-r(HX%MR"d.7QGR%-f2.D9HG]S`YFDhYW6RLqGf5u<E,\Q=_>TdQZ@th/5AYpZmhT%`A'_bYh3
-?qe;*Tp0On8Y?.j\g'P1F;N,n]Z*QoNN1ZDAM<Xg$$7s1-#Jsjaoqc:npVjsJ4Mj%"u@Z%Mi/
-'GBAWP#rm(!Lb7@UFOb<gZ:7askK=3#Ugk33c@Z!S]Z9J=0#4j!^iEiVN(g/uL,@iae;6pmq%
-V!E7/oX$(&q[(%T#KW]opY(@An.XVGIPuEoYEAG[NGfA@M=2DJ]ML&D@-_je6R[%H(15a&M=]
-lLfURVN`HX?q<FBKA,UKF%TQ"=qj9(t;n5(p.-QXt.lb*OmL_4f&X3#T[^7Ptp=P<g`p9uZ+&
-OKNRaLc*X`<i")ZG@dV1/P[R^j)c]%VMR:pDOG@FXF;6u]QB4`JT>fN863^Oc=aVi=I_u2]@3
-%qn)K<BMc8kNGIk*VI=1SUic0"g8/Zr5`G&[^M\E/(kMKBQ4-kX-eW,\M.DpA9BH%\5W4gla9
-snh]`[SZGB!p+eZ5tBj^ZA+(Ri.R8j4?:n7oQ[h[NC\dCN6@-g'oF*_rA&,ClK*,*>s.hU+(U
-jl)B&9#q%'F;6NYt-J.Egk^"`!8_^Lp.H=AkCAr'-:@dCIAoZO32H4in]o!?^N3n0]-9'8VXL
-rNV-`46ZbLI,5-/>#"FU]'dhJo@rX)D`R><5NO=_;[-?ZsK3R-dc':+Roh<jJ8'&=h18!f96h
-Bpe.ndn6-48Q4.t?%Wer4VK3TbFL/#r7O*=:\H&EP:=dtS]%n*&:.h4Ru1noZ!q"8Z;VL$$)d
-]b^=oRT^03TIXu*Q)fN't[D?6YOV#gBiA-\Xq-0>%J[BPTgE<mda"pIoU@B;1Y7^]T(-b+ON:
-NhM?B5srnAt2OtZ>4DgV>[]:Co>_A/t:jIi5?%'Xi<r,@<(!s[`9h,VNr6$LJbLDqNT`4(#-j
-[Z8:N?D7,Yob1sM,D*s4`X_"s_Vh4jfm[_=r-6$o=5tYJR_g0>4.`p]"Z<3VH-bIimQ+gCk/5
-?tY<oq+VSX<NL=r*#pj^`SHZI1[idp[2Vp,/ubVja$_bK3qXC2s<ENidoa9!+:bQRcS-lbp!=
-m/I5]pGdT3@WAE)`MpCMS8*'o3,P-$f?n"G'ju$]aiWJJ?22=?Vn$l3h_#(7S8*(*3,Q(VmPs
-UD6i/i'8a<,@P,-lQdPQM>>QCC(WIs)J"'k;NDm31m.=UadpkKe6nr).-CasX^7:Ii"&VVQ#q
-9F`c;k><U,iM>Da(TI-?GMjddF6)?)SlfZ#E;A%..k:i!9/>T?k@.N&ddtsi!RnSkVO^+_,A(
-#^@T!bib)!];=&V3+8W.02LUN"Vre/!LD)gBH?=&)e-2iaU''#geYm?7$<i]SlET@R^kDi?PR[
-%2<=toK%di?R9P?E81jSo=L@VkoHZ&&!,Y]AU`Mn+`gYnBS`t-MHNOToR<7f3hWp1Y%P*Cuil
-Yp8NF"[[8&P)>X;mfl)Of#Fi.Y&*f_PS=ILq2h@Br\/,2<A<S^gG<2@iEqYPWSRs4VbD6Sc!!
-n&m![U4doa=)iAl!4De+JZhB6@%pL#BI]=Ht>/5<eF_)qcJVt$UTh4fYWEehTP_`K[_.-5Lpl
-4*3E00358DPTXXSf"'m1KFrnAf$mT0iU]/ftEc@!tjb45>P\ZX/\kq-c-36Mnrm0JcJh0l(^(
-#B.V]El(hHMPJ6g[DQ#QfM8k4`Ndi_,L4+R!A*H6nhdhBKT1W1POi$p^^dC$MA)>*JOMd^HY=
-d(4m)X><3qG!!ZA3^?R"ngm?I+Wi8R3$3Eo<H"D_7%O2fLl1J[bp<sY`qb<.gaO4Gj6c4@e__
-h_u$-=89ak*KmSS=!?'0mQ+5=-DTC3o3/BU'_&GCD6hEZ$<!J.YgthKMS!P:H%<,B/lPjg_B$
-F0U0I3X][sscYY-k<mG(eF0+pt5K0>']bEK$XJ5W?=X:A<$i4ZuLbrMJa,0&#]m@UVbLS5iWp
->R;oPLTfags*/Nt^!'cDm^R3DRVrm(bdhP6pNRe/_f26cKA!\C.n,H7>.<2guqcK&9j[r:p17
-<(.+K\'u--'<U5hU>SZY$#P=^r(*b/-NPFt.Q_#T2NhXJFARb^`=no-W%uW@LXSXY4R/qX=2C
-TQ7?s6d*hHWYnq9/I-;:+&[)`*fC7J7AD=(`]d`#XE3G)iX6u^QUnBVUUf1";OO"WW6(Ku?)G
-c7a]f8,a(q*t-6VH"4C+/h;I^)%h?ibEh5,*JuN3`I(hV=MQ*o(Z(e(V1i]\>tpdc:[V2HB`\
-d=+8UKZ>FT]4QTqYcqaD9e5)f`i^^GJ;BCZE-&`,-(nMg4fLS,,+sFs%50k=SHLe>$P9>i%5W
-hA<blp,GN5Q%RKmoG[-rM!mH')9tj%AEaE^EL`**t^<3Xqqk>.V'91:A5OeXg"Dg^TNSG2bKX
-<.g8o-hKbZn3'#.I4t6+!8d6un%hol!WQOPGRIo[&AQ"]@P.#+97:(*M9YMp51#HhmK:(Gl6m
-f-$?>gUPK0=:6touB-m(>M6OR\YcJ4eEJb>;alG_Ice=g!dBIZ7@XD3CVDEDDWLD.&]5Rg+_O
-mAUp%u3rq%u*"bjq1to5/j.[4?>\3]ojplI/XH0QdISQN?VI:-[[qk/XE#p;>c8@ULcbrN0ZS
-W"\COT-Hd96IZ!sl4Q<!YcXZr'M3l=ELDA3qQJs"d'_hC#=km51EhU\hmk#b*ItG"1ifTS#l]
-qPK-W!no3NWeLGL@<VRT#WJAQN$)Q#T^q4=`XB*@K+j[)qc9DqS^UdE@!:22A:LYaoUdZ3)>j
-*OrA(Il8;Grore3h%Na<5S46QGd<!Gf^dKB3_-VBE?Zf+5/BQN!!r^7n=_()J,t&mPUtkJEXA
-!L:]mrHQClH4!%e46O<@ZHP8UU4KYMRnBo/]KD%<4f)StCm?F0jal-h"F$As^*p&"0_fAk?hY
-[2=\QH"^9Z@K=f?_a1=gOod[gVIE@1E6U3^-?hH;89nQ3+q3cDji;_e[E8c7IH2Sf<K#Pj2-I
-Mb>)F/[p1nN<-\Q'$ej#O$iE[nX9EFL^^V'b.g9+'A"J_N\4JaDA,&L1CE>ocC0RRDc`UMomX
-3Y=$J9UKX8D81KaGnQp[92AL6Ll?47g+Y(WtA2HHZl53=FB8$]BP70k)7S)@P,l[gCYbhoJ-u
-+A*,dn1GK^cX\3Z%2P\IL(5kt!u*&unK]*Da`s>-*Bo6Z6;"[b8!VohA8gjG%eDjbSC#GIm5E
-Q$gBfk1L;O>ge:0lF(9!f1-:u<'<TG\DnasjgnVAKS(@`^FAqGma=qE+05:jBrWD=@hTMU5oF
-H_k8F=[qY"q:b!p^$"eY8?.ahc=pt*O])O>N4_*G"O"2$dOLCE-MRL!DYr<'qn8.;3a-E;QBK
-IiNngY/EDs_+tC5oU:P6I<[6>JQ4DGp`"F*A;;HN9mXgHU`XN`1f<@=A)ljdMK?RA>HQKUu!S
-c='$'2%B_]MXHWIG\RGnY+@duVUN:8SZ<ME24t0i@rr";>LBZ)jVf[t%#L.^HDsGq@H37EluE
-$W9p1#Rr10Y:>5U_ghn\QLBFee=/s1TWRSS4D_>*[WQ(@Z<sF-e;$'p[1b=Gn*qZ)%oO,o6mX
-2F\ie>2Z6](g6I^dHh-qp0X'D2I&u"T`9XO4V`CE4\$``Wjg$]Uu;:9mqmDO?6G/"m]Zu+Z;2
-hu6L_"R:nprI^HpO>Dt!_R-`#K&`4dW6c6+R5Lcel^@<8nG'+#Zd)C/Z@5Fk/IOm['`gF.ZUM
-k1@H7:_@qi+Bi:(>b0(%*^_H6+0(pCX00hT^8(kK"Nd`2?#=1$]]^pm,G<f,WR0]F8cjjQ%?]
-BcR6<loia&U#m6(r>9g.oaf&diEJL!qX#'I-A+8lAiKm&,R8i!<ruD'uE+TqC*d?hU]ck_h.6
-T;-4*fhj.Ep9/e[am^f7_Tr;19Um;Fi<@q8oEH'HT7P+UP#Fo*%VT:8a]O;r$8X39hf<dp0V_
-Yhq3oAUVqN^;*\R3j.i_u1jfLYu$?5h3;_Ol\KTiS*N]gn.HDr3Y[uQXX?c$KSE&&G[B>H:kq
-A`F'`geDd:>R)B76I/MkTkREW6ip?c0sFW8u/(n;&E8CL4]]J>"uF*,tb+ajGpMLREDrZGnd2
-<,SEsE4skXp`?KQgPdSu`REoaS:?%\8.=Uu03Pa3Of]/oiOsPFQ;p%Nqa#']=8l!3DZp?1Y0(
-Bag)P[ec<Rt9P0*4ak)5r[`-mLhd^lX/b=!pd=E.gB>/<hXc[8S`uBZq-.ftI"YGuPtm*/2;h
-j9CT`58MXbPg]gl_^L]\res>:CrS3H].=8Bd%u?*r'a"_Eb/sAi83ujqO\NZgrtm%/^dV8@?;
-s572D0t%u$;ifM6NNf=*`1/l"/rJ9,g<K)#P7*N:=62/"st2nltb0d+an,$AeN5J3g`PRDlLK
-k2Js%bb8G@:Si\=>30_EVbimQ5euq8r^l&PptO^NbelVAtJK`_5@j8Qm*UDZu)]WNg!-s8U9Y
-+BBXU:.e$;rN.j!H[Wq#VZ[!N&:)"H)LZ0%t/oE>(-6H:dFqbO3ZZoM;-4r;!QP\Z)G@P)Rjs
-2M+7%)uU8Y.n^&U/`mp#;RElk54TA"6_lcY`n]A3$LAGQ!;Pi2\#7VdWoXTi+HkG9fpKUkUtA
-JO=\hA7G4V/E40nmW*a%^[N\::+EI%>B^ci@U1gJ,9G*AV-5TRd#Gfh'GgsrcD6MPpGnj90#pl
-%Z(5"Y4o`OE#KVOlf&.h@hUX'MCBLKck-Hl(PUPq;_0-`A_9hcUnO+%!rGZ0GP?fE(!i7%IMI
-^!Q%Y;c7+lcdGnM@)UcM0:+I1^s#5McQ_LYluf_pL&<B'q'J2<1&oUPl</0RWtkK-;?FcurLD
-8Ob2.)"..p7o7EU^c(+M?Z],7p7BUUN0DD]"P[WGH&''a_3qU3;i3^>X!g+IXsHSk!sht?P(/
-TCjEShHgdX3Hi"4(""G7ppBQRNf?n]0%r31B2=P\^0YshVf8epGW^`.Sj(J`-M:t>5be<oU"Z
-I<ek6((0_@k"f.e&#kMQ>1gOVfjG`CB^WEk-J9I;j,._2]WB_e&dRc/CCdL>m-OHi/2\Y.`+g
-o.VX)MWk=%LW8UX3^cGn!k;l=*iAjK$jcnm6THIoY9AAgmeg2[H7a*#N_B=Wr>hkghF.ROj5,
-Z89RDt+=cF\a.Bg&NUeFJ97/`O/;I!0+l$8]d'IK*S<Y"\Co.dIDi--6DQhSu;-Qd8-cK]eGW
-dUJG=d?Tm;;(e$E(RI2[B%5K1/f?=^1,LK.Y#PqXF5\S&ac.qN$PE*noYLkIllpHaFC[HNE2o
-_>e8`X2\CGDn2CG;9#H,#mZSUV%LmlTuh;F4nk9`J;mGY;e:^P1J=H&Hk2uigX>O(,9R#g&[M
-T<Sg!]VAa)NS8-IV8;\Ll4To,1#Q[PJQm;HL5"R%iA!Lmd8*oD+o)BN2CYY?Sqi"J-WMN7h+A
-jc[3=BBM;I2<6LHKFRtu5=c&h]LB=@TP?'',CCd>gk-Ms6F&M;0o7O@g0V,)T0:H%#[)bbBMc
-H9oI=4C1H/&Q4O\cK8L0rrmd=7`5q7o(&15h0UHsio&otHjs:6WfcM>-\pf^uehp"eMc>VrKh
-%iL;nLC,Ed]stQh;g:VIL%G+q?;J'c]<Rn`S-j/dMTRPQB%=oYc8b2H+^I`#FZH(bC6:g*DK%
-D":'U1`IGJCtN2('.T&.'1(T:7V-W1Q2XugZ9*5=q09,Z&\l?.q"EAYgnUI2HNdV$$2rcEY]R
-u\Zg_6rG8kP_=UU$E/CrLcCD%u4C"`,hVd-i`10#$kXUkWJ:P_A)IYFttAiD8M-t/%Z!FD)3>
-@CH-GqT3XWY+SQuGLVoV?^^kb@4XXKnPfK9alYh1>)Ok5MRlcOQ*(ODM-_jmB<,%;>C9EI$;j
-d>CJed;XVXNBQ8N_oa-1?;MpMYM%o;AMdGn2cIs/3Uq4ZrE*+$T\mVl0EaTRrG`Qks55nW-L1
-GnRXNrL<PI4j3uq/sD"RJ#8MPdl,G@3_s\IYn]7+2Bc@13#1ehN`/-i8JF?NGf.YaD*QsI+$1
-?m$(N7Wa:aA_=e*bg)+?Lh#+4R5d"%<L.1KcAp0Gh._k@>2%#>`jUX:YR[bU]ViTB8]:OdZ$#
-7I[6Q_0lKo^SjVNt6cis"ckYWaY+=:NR6O`j]('M%1@^g(Hm`,OH0l*T4<rTsVj<]'7H\ocZF
-o#Js%8pW!2OGW*4F\I!YG7nG8J%lE48nSQ@Ff-.NW@Jc2Q`p#$\6nu.Hi":U@mQ)thk6_19Q0
-lCB3K]gDQrt+O#<2mNZf"W/H?tsM"[DtMj4!t9oD>//qY9])pB1b[f\eRp<Qd!'Tlut5n&$+c
-"]=`1o'DbC=IpO.7RC:pa\f#]DYSD5H#Ep$Bagmh0#`f`9T8N7Kpt',FH@kqk8M[%`<=/F`\b
-aH>!$2p$=I`edSQr]5PXL*l01u>:EP<5+9),'TDj0:a.FFPns?8HYd-?SK=iP?r_.L?pqDeqK
-CKdYRi<MJOU.RPNfFc']igkIS?R^.L@8M(%,aniDj#pZ1d2+T'K[.<ia)>>KCtU&_c30XkY2W
-%`Fs/"W1j"=J\B&P%Jo-T4ukCSrkm3'St8,4D)Zk+5Q15@TC0IBqVtB@'suG<5`t=#'AfbQQO
-lh<EYOHEp,ONf:l!P5GC5q3h"1\fEPa[a5;m2-i*c\qduEhi;Iqq`Ii9@Q`IVB$];#*S4eI`S
-Xt]=bbBrg@-A`temNpJIis&iirVbDfTIkqEI.tNdGh4%oh`j5OI$eEeDF&PrI]26</q!-I@O>
-!W6FRbd/e*hbik`;]*%0G*QLZF@%]=sDF;"4G7)>6Oq9^@9m\B)`=*9ql/kVPt9DNVV2'DZk6
-dMZULG=h%lh<-L`Q,6/4A=pjT?.Z>3h&l)"^a;ckY(:WJ`ZM]C+!h)qDdmdmmVIds0SOU4$3*
-6Ee*uP;DA/`jG)N!E&iHhlRT0Ke.Nu\_DBh>[mCi";1s'2p"cGW,T/mu),G9dH0P[4N"jZtZ_
-.=U(,Sdj(o15f#qp9DZ,dOA`f>N\M.1*@Bd]p%_2cS*]oL-WC-t0,>6V-o>4d(*3$jFPM??UT
-KB[=nLs,r0S.g@L321lYCJS?'7a[$`E?[bo(FmDPOe[m`H!meRp(f,B'3QNeFY3p/(Ci&;Dba
-;j(Wn6L!DNIr+"*e7Rn"QHe?\,n.GIU)Y&%m2Mg3I5LC\g[:;^Mu9:3F,Fe1Z5OidRH7@6'tL
-gDjV:)4<^M9In=T*fBcVeZkU,pF7ooT]hu.>FXbfa&cjfTA>6n0@hs^>lK]UF@g!QQ\&BJ)(:
-,=P4fYA-!(A\2OQ`1q5hA5p"D_+%B+$.8A5)O!E(1fYNV4DsSY0r($+jqa3EA&Y@$P=E#6jo+
-.uK@s1e5`L2dJ!KB[P]+P@2`P!$29dV-hpfQ0DrWO-:j&sV)GTP,+FujKpl(k.Vq/q4OcqYF;)
-%6_*;a:q2M:<02SS0S;e@WNA\&Cms4oSYE*kCM@]2dW@T8b72AK8O]:FR1_7j,^3<`L33(jdX
-T7pA:"WN1cg-U50Z=5<CX"<HD'g1_nTp<e%-;]I=";mr6WSP-Fe%Zk>da>OrkcV;b%p\_bf,o
-@"k&jAe2qjiOdK!-p%Y`-S!2#[S*(D6$MO-(LM]u(D\75P(b1kLT>Nni,)@9)FG\r15;$\Dm7
-,JRe0N@9[3k5%o*qOVdC`2K1k4/#_s(4u&Zk97OuaXQ7lCias2*$d7rE[9$V$2a/OE]OLJh-Q
-\PM)so;-Q<V:PJZaUNM79pTo>YM)r^S9R#*c]j![KoKnD1g^r"TXi`Y7`?Pq"=?$n7IiaL`9#
-S)#ll3"!V,4_GR@Q1q'*U(Jl@i)ti^_8$S@CSAP:2\Qe7"N=V'qD(?_G$8EIr[E7T(VtFkDgp
-;R'&LpdlEStBI#S9!,ADKH\'-Qin/JL*LK0rPIe[Ae;MuY"7;>3Ya5fb+]2R5LlP^[\q74TYt
-du_BJdUu?#IK%nl.<?J)Q/!i_'tTo@OjsbgYd^ZT+@mP!d!8[dj4Hbq]UfOd6Ub9`6>HZVY-<
-#lDXS1M`]m'LUt9#)].u_0g8kmL-u9@krV!7.@q+M%0O!$U8c`a3cC"gk3b/N4'"m6IKR5)JU
-W3mKAj)D$X.tG@6>ao=,%&Ga*@e55.rol8m6d)9+dtip53/JWFr8Sn/es]$cl[K3K[+*g@RZ/
-oaiE-BKu-\hMdGR!o])$ZJ400'<WU'=uE7=Us01]6.hJ+J4:0MF9(TlWnkr/]BnB0pps.48&R
-fp[h\=:?l_]mg?,OVB$Y*T2jChb-32#`KC^N3^fP[bm3>`'DL5P!o[,noc<],?\H-T_D)BG`E
-0P[`a"J*.gF7\1ZBua3F86>C_9DC8'M7'.,<=nEnVpO$TTD?iclNr[+"IHd(lCF4,oF^`tdJe
-[uM>mY//5MB6RN=Fd-O:*/gJ\P2piD=('j[.WS:uqB"e8@06p:G\:b;\\uP2/\*!:Ua(V@G/X
-9pajXG'n5mbhVr]b*1(-QJ-&7<id?nUQ?$MrfbK$sZC_XKE(Mp"*VnZuQP@_qm3`bUMmNGMkj
-fA">8ssfjY[oi(/miWYS3"s%6d6fQ%mV^@Vq:!pr^2fJ:)tD's%DV9mVN6S0-$D\I6op$MK_?
-`RU@s^f5>hkM7cro7?NH`8Wn'[@0'hRB:4b;W-AGuBIo_731c2X:/K]!?[ET,8G%pI5DI=`LF
-p>LV68]^A]N;9cA3o5>[`u`CT>K/>&^[fP;B&_Z22=Ii7(buSKi0t0ai4a)\:;CiFS/*C+NsB
-:m,iR)Tn"3I7<1%N+fpcBVL2K*AI5I2nep^PNat(_='80-`6q6II^4nTEXm'E59Rp(2sYO@La
-cXrTL!-.K7+sVR1i]W1CBAXink%WQL_(nT1k$1bD^%67=KL[!(^kc`ZbpHgk9Ij*YA4cq\*8I
-N!"^4]-rOR\t;.r`VV:/0^``O81U5Q1#k\f7]AI6)#&f5T>`pil5Hu]1=b';a,U]7up!UkDm>
-YUU51a;$/m_i,&G@T'`n%DOlV/*N)N$?&=nG)P(A?GRU*'bHmClr\WcrVrcRoC="UgjosA1)(
-WC"-n[5J?*;.c%&^?91+t.<U]oS<kb<rEbi_D@k(Y)V$)g2p2Sg3]rI``d":ErskropHQ(@e/
-dWr^IIrp6?^8.?)a#;qQhfPc,MV$>@$ud4(V_7T-eEG/MSS3t?77utC_AH'o7D:;&KM%#Z`OD
-YUmQ4PKSUQ7!32d[N+;H+J-JD3Og)((lm)!o@pd]G%,#/`0gl%kJ^M4:WD0"t-3,+7dAY.]bS
-Ed]Nd'clNH$1[u)t_'"(1TQZ@gIijSLNAm!\)O`oWb>+99ikIGLES2E*R4Zlb5)T,:.YDMMi'
-HE";O^#1-dK0a7=>EZ;I)Bl.`..lZCDD9=FlQ<!lYX@T*b[9VRoP:aA`\*S51>K9;]&:gkr`?
-GGAe;]E%Mb>l4Kn@W5:%DVX6LP2eb,0QGWq)VIk]N330M",*O:5b!2<K@JBp=955Xk=u2<;l*
-`Oj,]V$W5&;bZRH4@$fAquLK_i+/oG9SI[6`l#IY_3@Ee!Mu+BBKFNhOu#^oJb03,0-s61R\i
-[a-?JHa"^bb6NF@+b*=/]o[%1kol;Y;KS+1$/>!kh232rl1GRQQgBu2QI/IE/_O&mL[SE),l#
-9Jes=4*E7:GI$dLIk0;VUUi_&(%8mL)`)50$#nh.fdN_!#h1=hbb-5GWs\s0$pp$)V3-PZSD<
-o?"sHWR4O>BZ8cudPFDIYSmS3=Sst_7fN13ZW[gJ#C31-J:i\PF,mkJI1cmO/YmZ,FpPl(),/
-4,t<T7\5(NQ0B:hVJ(fV!L*.D7U^'c2V#7!OB0`.-jDSZ'_l7\<WL:/,u=3-C4E6aLX(ZLKoP
-M$U>#)S*!h1gZ+,<^?muMF0*jMOKGn9GXLO:_Jne!f)Y[d_crdD]hB%PY8D3ai'ZD-Q`(CVc3
-'\JuVDB!J/?#Gam+-_/lXAU/IRg".h&=S`>q?N=]N0Q\t%B0E<(UL,emeU5J**9@ZEJWk6M)H
-?&Pub,@\[;'X=5WY[<?jkkp:Tb9'mU<<5KIU?e_c!p/-Meb>K2"n1^)DDBPBjJNdo47IZ3mY-
-rrbaY%cHh4/1r`M>kSs[NH(p@4.5Q<^OrWT3W=E/nGc(D?Ee,%\XET[Ef2.JPQDu*2(Li:Wg$
-A&0Ke.UAGu5WZgs&)GKf![ZN/Tj2Qn`@=7q_G[3mY.MaBD1=#aU;Q"\=)1mGoO&:^<]XZs>)f
-Z:N*.+B+%o0tuEe+8d>)7tR%J(/Q'VU[375.M1.*R[+A3`akW=d'#BcKW?WCiM9p:SU`Kq!cd
-KoEAb7M=.X5;<--`=oXVmT?L`i8+eFX**,JuP\\cB@EL0#*Yqm/:TYNr24XN9d6m>oidCGX,i
-/0PY;AjpYEDI^rUeha2V1t(43XgXF_Q1N'jjaKrPjqKn(E.H6.?6FsCaZ=K`*e=rGUJgE,Sm<
-?ZMf;90)j2oiUU7+39Z"3M(NEu3G;"#ViW_;16dCIir$:<3eNt'0eUHP_e-XjM9G(cPH!TB^/
-Q<sW;=o`ZTP.<_<'2^kT.\O.>ko`YJ&9^qd9C%TDon/^\Z4Tq8`O0J,c-jrV(g?GGp>tq2^#a
-S#L1mB32/3>/prA.urNJL44/<P<FuS,kgEjQm4Qg*MjDp+U.4%j(+Ca35;eX"#Ihi4;!tc&Z6
-3D`-ft<^*@\\E>2c3-q=GLk!QA9p):Rb>eR\$6TUh-;R1i]Q(<u=K7kS*RChmGg'7rY:K]cmo
-K53H5')amPDF/SD@F%jU'q!eZr;jmFt$33Ne8+%5_g/0?Bh<N:LhmLUCl(+Y+nd:.%q51S=4G
-"NNsb+[<#kXYiE<]QWJ)0=(iOIYppc&S2!&3`Y_)$Mj36mfM5k(=*CC]3XXFMdL&b=rsf5Gp4
-n1W]>+V7)8CW*U_ciK*]YuEG7;dcN6T1\JQX9/eoE`$(hUTE>5Yj_8'^qictFq=.Ki6NgQMo4
-*.Ohn4MA<o,(7[5GMS0mO0fQKbKrWD<7js2Xs].Vl/7e(b7:'E*iA,K>eHG@&1,IL.?mmt:)!
-</:eVN31I+M]oT7m230Qnpa>'=8Hl@$:<@Q^6<fEdn=bBAo:R<[J.<2rm^:E@_;-CVgVYIG5Q
-R<p1R3mhjk;]Fl3G:W/Pr"P`rS,uHRq'SK/hJ,!&rN1kP?Mt#2KPDD5F!UrjB[3?OJL)4'q_6
-*Y+lTLSG:@Zi6Bdk/H>Ag#!9r=\.1MF2djTCqp;9`EI*=,fhT0.A9$lscOQO^9RUl/n-Q!l`V
-D8[4#mUjc+9Vq(3.'M),OeNkG[m$M^_r=YITuk%dHGI3_<'dkq/UIB^-[JNDHF<Dm#J"MV9]$
-Yi(UtQqCjQFKr-HOaC#l"l+X**H>Q]:E,delgjE';Y@0c\=%?Gp@pa@SfP9);Aog%*i60GNI-
-+JVRVQF`">aLJFOuIWt]'"3JeU!M2MDNI=NN=bYAD,cVY.jOW#`4FgrOAgmKn*%)W?O;JpcC'
-[u*]dFAua:GWL7C'*-sJ)e'qRL^FfaeO."BspatGA9Inr]"aG\.jp*Tr#DD7D9d(&5HNmfc`p
-hj7+fA-0+NIllp8T-.nEBBt@[p@F']GUc0WeBC)NQ0N5"*C8$9$[EquKoqfKTBAAUuSUd2"Gu
-.?@P_J1c5UUe2%?QcAn_h[ReJ3f+:#fI):1-.\$.,!-K6I+@Mt6AJK>]i+$70?MPE$;,Xj.9-
-<LNMF6V%<YQqjY<HX23Ol=ob]a/SD#m$pU?VW*MUn&9N6_j4TfE6iT(R\lTFe?S1g;$CourK(
-CEO;3n9?6E3:WV<#.liQ=/^[SL&O6/:n6<BQ3%ap"+bR:uY]>R@*&DCp:JZd5g2"A?s^[aK,K
-A?3p@HZI0h^OQ^PfTR5)JZ0^1c<(*'aY3oS61di>FB,*S[PFS717SR0[7ql;LZJ+o'ESX(/sR
-DYl$n7iEXSRNEQ]OdSe!l2%I(g;AtVu*b^?SJN4r=N^_SkLnfIieFe3("@?T^Tkl1GTVYBCnt
-;i?qJ]RW<84PDhE$L2])ss0hH[b*\sgHJ%)Mi'HLr5c+sZi%*mHqAPi&IJ=Rdt^.^1Ye<-l`n
-_A(T9O@IV)S-lC+E>lJ*E9]:+/tmM;`$sb?SAo"]3aEtTm'@9.\%-m@"+m?j>#I>I(T)>-aW)
-rHS<"tmk.?Zp,KVq94KRnt#U`09:cf8Aif:uW)I]!m$`k):*rTA!D6QC@`>jl8=-o:K1Vr"]D
-d42XC)m!F@#E9Wq'6m=L,?;qPId<$;kDh=37TqN%&_DAm(e!<K`fZQT5g!=!!Y,XFs;JD)HI^
-K6mFb_K]^9VgkN9jfKhKF8j_5<?m2:Z(5>$*<T.$_]AYD'`7$Dt4dq)K#L[Rqn1[H4HlR1kb"
-TGU0V0npfSMDo]"Z1uAo,UY^f!"]pOofkh:D/`[`>@ZQEq3!qFu1@>&2=(m_Cf)RV.E+7uE%D
-YY8^i<.&H5Z?&G/>EW\!aA`\>PD6O4m_uG/;IMV-)6H6#m`5F%*?&i;Lic.r/uk;#CU'I??4J
-#^]`AQW".t512/+EhJ)6e2;:s>"4+)CRiPK],.]0_mM&@g*c)0&Gd2Qsn`i7EL405Pt";RBHJ
-rFTnl`$l'7F5qP7];CnVJ8:h7s:.W\Z^jfRd3NTC#NHWE&,<c%<2q>Yh=;*g5'#$Dnm4)K_$&
-lOJdo\aO0YDcKA%]Vhh;DT*H;fN1#X"8hT<'4M.n?5l$u9/NY1P`bFpG_5YVr.+osUFVJ2GM]
-0:gciS9e>>C47S;_%O*&c7]<'-q%f3FdA$Pp9#4=S.8S4&)B,Z9oL#Ul\-7)Y;-1E9Y+]pcUR
-!IP./on^eg*,)6phP6Hl?_,9jQqViXV46>YF72X0Pd[PH=lL;n7Q@!%.8EfW@&P?NSXA_LE0l
-<S>Poo4.S)7^e%rl\_F2<J6m?#d+oI]_ed4i4>gO`K.c@9/*rX:eYL$JR/P#hUEZP12S6\+)$
-C]tA[Q3bjC?['%4^4G8KX?>p,GJ,0$48sKBt>tG:*-=1)3.=?ICpU].<58bZtHP>;<ik"+<8;
-:F^3F)3)Dd"lZ%"o@"St[@eH]&`fXQH.a:BcT[SRMH*8p9qcBuRe`CRAEt=K%SKo@=`@8-3S=
-IUOR&oplEQSHWE'@N/1)=AVcTD_*"_KLKKEIoo.1I/T-8aX9]oEa<j3)'PQK!e)1c0s&eE18V
-.8FJ0\huk?[9:k@M2P>E+qRAW[Sp3Cep-."]#H,qp3/J'oU+e<m"9&AEt5YR^Se%O\bDn>;R%
-J9jA@r-ENYk\)5f_m*8;1`he@,#/tt&:g'9]I(7==&@h2*C(67jX5'"\=io8$A53tCiS:gr&6
-OKJYM]dU>c,-2f<'g>`Y-'B1YIrWEgZ`8@*BED[?Hdc/2t+j+UJ>8N@#IslU1K\6!I:=j_:C_
-D1[m9/m*7&t+<#gn!i$%e]o-E[@g+-\O"m$cLdIpBQsi5&Xc%VGT\Xu#H]5cTF%&$[#7!Q=P%
-%tQe5:d?KjGBT0$u1mH,X+GL:?,L0G:c69mJF:HX%$`m@Spr[,"G@0f_Xn>oqeea3g:;NWP4N
-"QWsT7US;dOI^k%/U^<\_X)fo7JCF_mR`:/E^MS*1X82OVW^'2VfpBXEF`c2MYn[Y/s!uIet=
-67ZD.S]Qsj+5'e#u<bH$I!@8-33`)EjpaYThYlbTi+cs#ZtcVE.L@#Bl1aXJ$?MPdoDUd_1".
-1pYDWJk+^AE8'$1QUM-:DdILQ(^!l0]N>Sno,RVO]*!pkh\`L']l-9$VtA5N<`O'?G3oQbna&
-\^IIl%C]-8\icD>s>fr<l"]P=&apoYpi-]^@<Bd67DO4-]I]`mIGI08VSsCS#84SZsS1::;7V
-I[T'dld^OTBO&nr4u:;'KN@<9qgu2o1tB4M(%>:s0@&Eh"Vk%s)RC-)WpCn<YZ[<d$f*7%t&k
-jEAkHPGRVLEE#QQ,'Ql+aY]j?r*4!@U^48*!TPqc;pN%<427>nYak:F@^4\OMKha&5C>iI\Am
-19f153BiFmt_lZL@Ydn*37nnT6nV&+CCO&-RM1#*)Cdio$).>*pScDA\G<QT><mX$,0>H#nS\
-_'bC-5eq-kSACmRX//tDLs#]\"PUI:']`H4QA8o0P[LlKL<##3E])pVdno<*BVS"DqP:W0f0l
-1&MTc+,&i/W\:9#._u5!;Hk.=X4o"d`":lT,O8[,5pjGK,&H,&hhL#e;'/]$)k0UD@_HW'V`0
-XGSWrA?]9T2Qko0c7hUcN3V+!Xba)obrb?;>EW`Rm:;LD3R8V@u2ib3m51$;f,XHcuqG@Q_IK
-TsD;%E[M<On*f`5!2qt%kmjtM&)Z8oIg>H"inFufG<aG(>5>l0EY!NPhgL!(s$utimluUqr9t
-b/i%d]aIY5[PhTOoSHn]efq24-QBAWY*G[X.\dc$k44WJ0Y0#n\kl)CLd3_luu%Yp2,T?qVq\
-dmmE8<a&M!,+V/i9c;HnI+]2M[R99(u^Wrn&._$$6Oeu]C.%qOtZUBHV^"@;LfBn]*H-NT5+'
-_`Y6!oY9L3]][s>Ms-=X30o]0,+Vl<siqQ9N9ql'9C)nZ^NY_nuN8S^'!15PPg*oVPWSdBB^'
-XqXb8jH%-Q%1)Lm1#N]RTr9^h%_!r==G^$'Dh%XPT.U\c_c")#R^GL616I#75UQD]"W-?G3q]
-)GCaE!N&;r1b]H#R0_?AMf)3+NHrs\e$5V"JC=P]ZP3<_Yam2:+Ldp<TLbBOgCJr6GlV1Q0W*
-_$iR>hr&1i,,rUBf6fmB?emt\a8H`S*??pk=(!3'n9dd-XYeE%7,)QfEWljK+e!FU[K0d9^Li
-g2VScR]-mhnp<CgfkbOcLnhhra?:L+l)FTS)WbhHVFHMguu'f1+A7bf>F0O("E^S4`S<c(KHK
-r(LUKRcE]K-Sm<hD8*j(hn9BoGab)Jd^_88)0Xl]/DMU.lTEN8Z0SC`<Z4+RN8se=;VF.`Bmt
-U<"mcO*OpI[AA`HV@WLi.B<,qQ.0VuG_I=G&*hI[N8*3!Yo)Rjc8g2("ue>iG\S"!>a73/t_M
-0j;0V!bQ"]<o^RHVQZN/XrLu?o2(8J0&^>+a0<dXelP)Y61X@^e["e5T.k'o7kKRpYBfDd@,g
-eYQiPlgj$!s9ZKrt,**[,cEZTeG8sU1$!et_$%6=p6SR[^R0V>97@/0?kB@'D`7K:8Qq"Qi;d
-AV`iTGP67n)sYiqtE4FY&cXLKqWSP,2r%pe"U(`o]1f%Sqdm]rNP1Oa*D.D+`Lm?dPB"QGY@R
-]?^\?)ca.,9B<48lQ!0!3Q]#Pi9"B0-&5?1eFKXnrS6nQ55")!5l8&bF:s9nS,DT&Ad$tX8W"
-Bg>W4hXP'CYr!j)R1SGV9Mm9/)e%QV.`cJOY"qX$Laae1&Qea2Zc[&,H1W?2kK='elbm(\.;V
-R:@.&YI=YX5O@:@=+)ubq!s;J]t2.@:X9u*f@+N*hhSi#0Yg^0kX[EEE9DXm$E!rtlBhA,i`i
-+I9QcVdp9ZDH.dtZEHcI*^:=Y=t3-CL!Va`Q&49/!nTV#iVfoKNuVl:2L(k@i5](75ZV1.Q70
-_++KN#!<%V>L8[LZQ)@1[#lV>`\C<HbDG"'96SX0;E+YO[F9bfM;S$(*!1!l1$&>CAp"L-@Q/
-OlFiPc(,XNoZD'HTX7Nt@a!\nV&%Fjrr($+Y!um8T>/b0dK@ip&2q^ZjME@k=G0EL@)5iAZUq
-D^76jf#ViT.)\WT3g@j8_s1kKC-[:9t88YJT5rr=V!+*,(-k$p%Scq;$#Cj3`3M6,U=H,TU>J
-!NbN=PK,\lk'P9sgg=Ng9ckp*cq[tS!F5OWMVo//&lNC_^Y_C/CT4$7-32NF.h>j%Sem6_a@J
-BYAV\0c,>aLd9RUP5AU.Q/YUZue#>W8(.[/VgSOs4+76X%,jcq>X<[[/dH$6JH-0CjuOJW//L
-Jt/<:cmLhpHN*hn$,Zl!Ee@=hVY*Y"3U_2a8,U?rq(Y'LSitLhRjs.g]KpE#IY<0T3r-UpIES
-)4^87m@de^UoM!"YLIFKg^Dl#=dq(!Is"rTO-.]M'N-b"j4(37$,f&qKk3.>nb.)N-'?`.*/S
-SR8`(@0!WqfN:ERG.Flb(c5S][nQ%Zk<N46@M(d0M3ugL5'ioK#9:*#`V8j+MIQ/[icM:emnV
-Pm:663ltSY]M78j5::m&I8\5@q844ua+$?uq3$(&3"E?BH0&P7e;364^:q=S#rZJV(H7@@+I:
-I^.UC)PlSpUT7,-Y<9R)qD18IC-Co8#D<"HmT_Pt.03u(f>\MoDc1-d.W9X2/-5,SA`dJ0<eq
-Y0H`It`.C?FhZUW;?bsj[:(#pAMJ=i4%oX]"e+OHD3gJ%!ar'`(-MkpuF<P@/@>H,E+K1#gWF
-eENBP<OQB>]ZD?<3cRGAb[-TQqVQ7)j1fM&E8qBLcrM2#JLK!'8di3.!;<+Y9B\O<Ojfq^kQl
-RBsN`%@SpIqOkknp<dN*a7GcXn/*V_7\3\RGn"FD>9S*Icu90b!pL`t-%9&-aOH]a"4=Gm0ku
-i9bq(Lp!$?qtKQ7pNOOPq]RYMVDna305f0VH?1qJ4)Qgino;+;GQtSDLqA)(C=A1>@%057RTR
-ua:A[U1?Lb^iGrV<,0c2CO0gD@9LZ27lf@N[[?$,/'//W8VJP2"C/61!(+tS!O/LSQM<1uu@I
-XoW>EY1rp\hDS]il$tSPHj:V>[Mu%$iAhm+XeXY'RWW??'KjO%]0n`'!T'@6#^bs39bSESiC<
-e8Nh%RoO@e4PS64G)0GrfJ.s@=&]',n(G_)8L*EFu#o9M+:S<[DZ&6/X^*PCErCuA.YDENg_,
-(3%#4L9"j1(KV_VOPBo`[>_7UW(ekKtMu*1V+#/WJQ_&o_S/Tj6u7#b4lX)Kl.BBYlEk-JZ;3
-GlJWJ(9$f`?JIp:,>KV@DTu9Q14<=Ao4T=-9;.!J2FJm@3*2N^k@/[oF+k\;W?O0=):%:Djc=
-@=4>@:X&lP0h)pcp$H2u^ae8T.u%Y9h6(bCMQ^DDkr2^Y1AS5dDH=^*OAS29b_.d#-K9^sq:d
-*!-dTmJp>9IGHAXF*1Ig$:$7_/qB!]S=G[c0tqO%pm`5.K72(-9-c$]M,2E5VYFbH^`a8&#Q(
-K(UcakAeai^i1nEf(qFm/jAZClP]h@Z3%7#M!`!ggO*[agb&d2q0k'l"MXTH]g0$OjG1R#_fa
-IlbbTDjuEgpKd*md1$C!HtlqujbZbRMVbn9BU.h,/hipk&+DNa/),$GB/!m6sF@!ET2iI$jMS
-oF+V.?@&368l(>>rk-hnHZ:.j(Q^b=&Y's7H,[gE:2su@"!Ah%&V`i?LD`oJ(L;\+Di1P#a$U
-P[+\acsn-k)C-B-`9kX*AK,ISUI&JX0`5$1^STJH.ZqI#F$,pj`rm?ZS5<R=pK7?=p<'?q.:r
-(]G_n_p2<d'eO=*(Obl<>n=:PmS=aRP>7W!*f.N$!>KjlBBI=3/hI\C5_XY5Kg%Le7@XZHUUI
-e#p[`Japu&MJ9%+R*_l/<ekTSTCn52dLMun`^?bYUTbu?tTLulDGL:dF]Z:0WBeUAtDU]*/6h
-m&oE+%c9rXDn&r@m`_)hi_h'Pu\0#`h8irdiYrI=T]9JQh\E"_T[ZZlb%D8jC8Un,f51mjkWF
--9/ED2]RPhmdq@CCmu"p""d8<OmW*B,2NVlJ-X@i0%=eq*9bhkV[njFF1o&8#r$EV*I<nm(t)
-qVcVZct!=imOH[XP.>b(aKiT%ip$H"7oe7#]sB/TDbqulXg*JnJ*==TtuMeLgYho?dGcPP'&#
-6AQe+8;VJ$r;5kM_A/?2T='UM;UD>5N$A;A0[cU&ZhDT&6`qt;S.;anG#1*ihk())^&9BW-c2
-OQWJgK<s*[RL;Vrn#?>pOM?eV,O&$jiSt>*9V`lXOP"#O?DC1"*GLOZQ0Y%=Ti7O6_)`ZR4#'
-dho]);6U!WHJ2E:ES`h$r`2ThdiP"X^g2X`cacCd3a\\r7i'@2!:7UHo7Hg$Qbtf7V[n/o`Gu
-/,!mf!%i>lnckHMZnJW>?4D[^QHN&is711a(]l5jD"%\G&:VoZ_*^I&hW*)Fa+"%5OEQAM!S@
-hE*"INB^aI(Rd0K,pY[T?jEo+X[Ts+Q8LgR$X#:Ej^3$HJ?#Cq]]K3#R6O.D=.*+^Xj*#o&Z%
-*4(mdZ)4A1qNY>]7@p`\@R'/onL-hJiOZG"&Kti93=6bS9i@bDqPZ(5VYt6M#h94i!@Cb,6\6
-%I=1C6HM[Ed*sUq7!mAal<kKTeV19p8-gQ!^99GhQC9=sam(jFb"Ua`>e9A\KBIC1&JC93ZNs
-5Z'5s$)K*VXj%[b;#mU$"/_0][u.liSAF1qS#(l4T+t`NCgJA8W5lr%1lA#h5+uj@d4WpYW]=
-)CYYgcHn]J!N#Z:eojC`lDaeCIf^C;i=oArLnIe<&imb($Va'gqecrd>l"pIHAe<l$Wa-+^tB
-:NT^Ch6hh,OaLV28D4'C6<ejX)+;4YT"LH]t`7PjCbS].e9?G0h7'bYZhC!#Nj<-qH>H2i'\k
-3D=scLhO(G,UqHC(>tW=G[JAeHK^"r]Sn/+2MgrQlc-c@,usk65MX_M\FHVmm-3$`<P6cPrAC
-R=9>E1Dnn=7;[dHg$#7>Hb5o'<jt><R5r=pl\*gAhXR%Gf[1gRB;GWZEKQ]G#H@Y+9rZm!_jp
-H5EAcr)qb:'rRa*cGK5]p<AK&I?.`NX/>!C[\r4V+n+IQ@l)LE@W7TUGWu5s\?n,s^V+,F]#3
-e.$/bb?nadYCC]:5hU_:]*-A85gI_5_s^O(=U3E)+,;4o;`sMgT,MtOG6(q$=&p\<&P`Y>b,<
-.m7A&$#/:ckGI"H#0$A#edF['"UEUW;F(">DG'J$e(OMEX":>"@r-=DB8IhVHAW7?X<*5V90>
-'@\[0RQ*t!Ko]2Te^p!X[1</&U/5\"#S'6\js6\"LSjVb:XC;_7r5ScOFk>6WB_l*]as$>M5Q
-tXRSAl;;(c__"[d=>P+Sdi3C2k`4GC-e^[mR:;-GnmH%("GAj-?&%;:ZR[hFGj^:,;hrTN]S&
-(LW`5Z*PnFY't58I4@?oqeY3T(&6&_]i9=)Y?h8=9Vu+F].sn.dV\%6:efhL^2#q[>'UC#;GJ
-j@29P\eekXij^<%<3n6aX>XXE'sk"345iH;R!S8k!&YP#WBa5[:gZp%n<ed)=-mhi-Hfs7K2l
-spLk+%p>b)&]kDg4pK7P,;-[Q3?&P*I,5QdRJ$.mXr]ERdp8niN++b.;>[ociEcusF_YL!Z'H
-1g<L!(,np_Jk,VC8n8W<s/4O`50=GH&oQ'@S?h-qO?>p$;UCiAZK<*X(NQU"&p7!U'Y'&i!c(
-Ef@ZFA&)S=8Xb3JaBTW5a4Gfh?^V(OPD1h8rWusrIJlX_REVL8j.&#tK^B##5*Y];lj$;$_<)
-SdnHN\*Y%U*X,A9n8O\!U<K>X?VYo`ghqHjaOLq$`o[A7/E29?Ic"k)/p14a=js43lU/:?mOI
-;;l:GI'"*g\dKAThf5N6m$FKg-0gQorA8aTJ7jaGbc<p-LLB"5qek<gDm'CuIX(:NUNX6=K+G
--3:,hXuJTc?$GR)si%-fd1b5FkZGc8.!'#,TNdlT=Dgka;'oXYoF&YSUpj:3oM$H]rnHA,mV@
-6a2!d2`*[340J2gmU(5$"f]0VU]\_YElV+V(?E!k:gKJ'oY*DiDG&Xh/_N>%rfJ^90hdorUXS
-%Po]&q(VAo9DdN0*Y[bt*nR-t=D0'A#SkT5%5G6hNL3F0\We:"NJ1aBokMQken0u(GiRie?;I
-C0Hhk1Z["dcE!TrJ/'q3;1SeBK;N\1i9Ym;_4W?&URa&Go1?K#.hb]M<?+aZjc`QndjI3OVTW
-"Jf!EX>IoVaS.BX/bG\7B/&R7!(IKlBqEV%_:a<_KDue&]6a,l:VGV1YBP,4*sD0G!HkFOc^1
-9`?>k&j/c!cn!%gL8hVRr&B/fQtB/bJB;\8m!do5b@rreeU%!K0G)o/A\_frr/iRn=s[pIDR+
-3k'LmtOp4#/_s7o:$o83P.f9$eTg9Gmc4BS$S_NK_&mVDE*$:n\Q]gHuGN/2DMra3Dp#H<Lg@
-)7k1']CkGY)`M&&VYoioCVdT)B#L1[]oAC.Nr#$&bJ&Bo%<&i&L)VbR1hY[K*MV*/8:R2u>)Y
-AXm@#^cf]sIS@@-`:4+8>NuDB;%r#p7"$o`"3+n.%^/lN(Z%b7Kd5!'%N%Yj'F%&s0^&2'?s#
-#juVce$CJ72gB]@E&R6Z>o1IEh&oH)jXVVRgJ5&TV1OoAZHI&q8$\\/iiu%]jcmZ;'@9+9*%/
-1jfe"q'%T_Tk9">U"Xt*S2:#V"gP8D5%9N1/kT%"7&?/S(<P<D@e3eR/JNoqs;_$iN[a2P1MJ
-@MdUC[ie?d12mu>1B==72g]Zkq-%r'=0[#P:^dkWm2!IeEQq8s7PRTlS&8A[2qKM8q:HRIu12
-KA&B5&pLqf+="aqmG^89oXukRDj&BaGAYolC.pM!IqJPYFOd#\O2#[77^K`G1Yta9,UQ$aagB
-9j2M@qr82HT4=Gh":9VV@"RS;l!i[UVB>qr'Y%fb,[Y_o<<be%[M^l10mbG!d(dm.)/*e')mk
-e3NS]RNeL^h62&rnqCgF9f:=LR^FbT-\e-aeZ<:V.OTO:7Ja6Ym?Mj<Bh&STn0/[>>V0Y;/%`
-lG32M'po8G]O?[lB/l(A">qB=Q?TaW-3K76Gp*&1ftr)CHT-S@qI[W8T/WcD-^4=*j6msKOeP
-TO?X0rA^qY`Cj;P,>_,im_5Ae5"Z8'&d)aJ*ei:jH"d#?([Y5j[iHn7AOO-;7$0IC96!6P*K#
-DS.A\ok%&J[<22/)<uk4)-"dN^jeI!nKW01tQ(@)b<]_<f[an2.7l*+&l[M(rr)_<A1haRdd`
-cmas+7BE<;=aQTE/f1dmsT+91g6KN-+$!dO?f_-fPDPkR2YYg-D_P'Bk8TMtOFZNK#+)VnlVX
-Na[mbo^G[ODi)H4\SSC=kRf/e4SX1$nM(;`>!q75THSRN\&q2iO_^30i`IdgN9__eH`X>Ljc`
-u2MCad%QGo`1`8]9O[a\&e>k(dmPZ4^EoGT?Seufk96N:)Rk#>jTeRNU+<"ApQQ`+Wf.L/f)M
-Et@@/amA:i\eCq(8p<#AL@jd/92X<+o67[\<P44![?Iu.9kb&U45`Br\V:9,bJd,9f;6.0:rH
-:En$o7C?MJ'`8]9O[_rKi)dSRPN\;Ob=Q7g(aMhka.A#*Le7Y.X=aV_`LN7HQ+8%ckr-V^U(?
-h41O-=s+cI=::Iko6:h@b`FF4mk)K4eGf#,N-c4AMm!;b,:T-%2Q#QuK3K&_<?W'4$P,`ZmKC
-Qs?">@=AV4=%=da:XojmHMLEcH8lqX4-o8^b.GgI39^pIgfT\;A@cKK+JdmcN@("We$,kBjUu
-9^-#(bWPLCT\Zcn^++f7;#X34<(je&8j3k2V.LG!Q#Q<g:K9T`!7i"Y3d6Kf,t#bSXHV%M!7O
-)6EaF,#ef%$X@/dQ04L(ChXNVO3_\HUTcI*>a>`dEj<ZS"$pJk.E0U.PD`I7JV8)5^9h;B]h7
-%#[[p67i4^1HT,Od0bRsraBj3jO+I7_L/*>Qn=X:Fo`6Ke$1lN=&8*3&q<0:!1VoTX,S<EA!b
-ZKUL/>g&+r(Se!JaL/['5IkRo8(.QC1?%D^Wl=;r%#2=If(5EbjEdHHUi!86A0?X'fsGl2'?U
--5*lA'q;!R-4Ys]UE_#m]0DAmcl2s/*[aFq^rGoX(u_:dbttMC%^'X@jdpUp0rZpL8rZ,,bXJ
-'<[Aeg4[[#YTitTK'ECFl;;OUQ)'i.X1+(=gWUMCc%5qb++Zc*LHkQcfSljE+_7fYuD`&(q<K
-R:WLDGCS4&uGT_<-)3-]FVU<U`3)rQUq>=\4pmu`G(AW\#o#X,D/LXi(2%a<Jo'[=,c"+;NOM
-hBn@_s0LB7T=1C*G1KUoFVbnXa8AnhFbtCDePoXh#mR&HY-!PXiWJ2o=O:BN3Z";P_dk&\aif
-pICNJK&fkqZ_dboaZYKM7VS466tG_PL+u%mr"XN:O'.0Ea#YMBd:e$\04fUtg2mjZ@aOY[j^\
-fO<V.Q5ft(dOf(C*G0(I?(=/A3O7&)dbs&;VEin8Y`NFOXl;_s%\.9+3Nu-kR/5%UU)?Hq76-
-*IiS-u3nhp$\aUp!RFSaRBhau-!Y2(>"Ikj5Y8)&\7GA[0/G'2_#7;eO8ioZ](j:;kD*3QN5<
-Qj2q^*Y52I&''!pR?tV&S5Kg#Gmh$PbS6;'6A5jNk'NsKW&9I-n()=.n5A5?TYOj`OM8n;akF
-\M475$)D]og'8-&MA8uomZ2uD>^Tjl3!R+.he[7^`rD;2iCEqKe:m7IP:0':5<'nAWELgh2_/
-ROG3WY`\IKHDq)n".P\'0A$Z)<<i8nN'h+gNCh!XbeVA0t;V_hhA(A9%I?AUEg/)44gDi)Hj=
-pCN83ai]@(Sc#P%Ps1JbP14HnK[npSbH@5"7if_2F;hI$n&2NEDC`F9NB1!e0^[KVc./9rl8%
-!5a4oe&RD6F;Z(3G*MmPIo`T#CW8;gDP/5D1_ZoHUTimbJ/Mc3n4:5t1=37Z"-e@8&-;dCqLN
-Jk/'eYP'l%Qo\&449ZUIs\HK&Pe)lNB#@W1OjbV@["s(MT*[[(8n$=EAE?hWMs!i%&2d(lrbd
-/Nth>iHll_.kVsT0;MsW^`B>a/`tpD;Z>1p*-\GNkRYo)++Pkt_Y?fTH27IUL(+4`VKMur9j8
-g;p4(i2G1.YJ+2)]IcJl<V$B5o\_`Q@,hU0*p::+_@Bal:gEm"Z7THrV3aidmfflGsM.0jel*
-S5r,u<6bt<41h,U`Q96>il(BkoYAtKHIWcN838Qtil]pt8.Ekiiae-oE+1Sd;e^lJ_MM9J$``
-4)*/d`gdL&`#X/)+aEK^"95qBRKS/\YkOC3(n9\RODN`U]olr_u@34[R>Z,N[gBa6"_bHY]:'
-6>^"X\!<^.GJ6fT.WmEh.^kD5n6fGSHM](NUF1-W?p42-eXeaNMfI1d%br21l'OW9_!/Hc?+6
-\n'mf=(p>o7qs5k/#-g-jS6?VbPJsLiGqh:dIWcJSK34Wp:+](>3&TRc+?6cKFquHXFG*TAIt
-,L!"AZ(hS]/\n2DM52=I]e/EG?s=-\L&64.Bm7U=_RiRqL?I=@[pb'XT8(-]:o]@WA\5[3ue<
-Mc5P^%&Z55WE<&Eq^dAi==HM;j*7Io=rgh>)!)I"#L0OS/PZLaLf=:N>#LE*b\:f)n$o,l:5W
-o*M,gM.na%f%#2'M7I$`;qB)4oa<LfMS*pkB@UrlhiGq<PnQ]/q+/5E=jhDd5Iqdr";Y,FJnMA
-%M2>F#L7ZdRN@3&-m+gm7;D44W4Dc.Li&PANh;%6Cq<dc.@TSL*rCEG@k0CFApZJ'4iO29f[d
-;-9-dekXc%X4>3*V`(?1b&.AXHY9YO.,%70JQ'taCm_YBEAC(#[SsUQVlGJ4"e6R1C4f`\>*/
-G]G3e_c%dS=:\URdmPLUQY3oZ.)!%gqMBuMUJC.G[<nWt\Oj2<^2dscN199T7]PA.ftMpi%Kg
-BDD5C/HNW(8hqek1MUT4,]:gCn=q]Za2V/`$Rr2'oS8A/5ApYia`UiB4pi&=qmH=BCkIn'^I0
-ONe/%ciad%D;(PHXV\[82A8u?]8iUZ[T;uM.<Ar9d>+-m4I4Q]$D2m#ql#SqXSX(+$j.4ne1/
-@Y'&lsKl[:@^QHtJYaUZJlLN)R7m[Ml("cHaf^qeS*$4(?,7hbE?VC4.OVNE)<UFmW/QBkrCN
-VY%FTcHbG!Kri.J<R^+\la7RL<a3uY:98PTH$P?+4$/@!(UD2,WkXhNCFe`*<H2KEM"+bjg,=
-@s\$ND#FWiX0,ld.JR7U6is7hPX<B*tk&DGW/c-O\pe:k!'lup6;gE<QUPW.ieKp1K^/5BKl-
-JL!(r4qUPX`+tj5u[Y?XZAP%;\uaEAX>WF9_7Uam\rh5WG[UF544<W2X,8lcAq9PgRcC++R?]
-"XSG_q=8ZXP.\'UQEO%Rk/1\,lZ,:&:UKX0oVV!M/Mc5OCEO%R3-oTDSl.K40$tAhpR\$(haW
-NJrWi9*j$t=3k.MaCakW%snJ+g1D\7aq#pu4`_Bb-EeKh6:1b4kGFMll?7MT*[[(8n$=EAC'D
-342_`YZ!`O`Q95CiRH.]fI7ociae-L`^tEY:\@g*-\GNkRNBZ3A.XYtdplON$t=3kH7Xu<6$C
-2g3"/'#M,R^%W]MoP6)r*d+L(Os"m'6r3$Dc<k(?m.<m#;>Z2CH,Zm;,\1**s;GS<j66a8dn>
-$"&hi"i5UZ4g!7p`rd*nt_H>-id"R-W]*%P[@<]9$'`Z(8q'5=LKt/fn<:Dc7ISZ.kaRX4,_Q
-[Bnd;EoGfbi9569AZuVd4>JRQ#ERG?4<iR/B:6flY/6d+;(8mG'+&84)%?tupQ1cZ8@CtQ1)S
-BGcSFSsJZLUc1P;Ji$`G)/*`2WSu.\cu'jh7%,+73J/SDL?(G0780.BDi;6V;j/T:Nr8V)6e!
-R/mc)JJ"e;q_7C\k(T<.:8YA(33AEW/N]9#]^$h<IBU'UYiFcNnKa%!ZT,(OL46&+e\WdDN&^
-'k0NF14jXbnU9KP30]\2aQ$so%_JlD=dQslEQlmtm^jlF)69KP2AkHX[FD!+p%30qP*+K'r-e
-'F$@GHB58[W3pr*R!GQO;#NgQ-PBVFfb.V[W*jq+3WYSO;#O2HuA;8O(E;dLrH@XYq/WSkmF=
-hdb38%+3WYSOD]#H/]fF`bMm%DRi'[T/5?DS3&MG/P<g`p9uZ+&&;sIcWSh<@`/^D:<(]-XP[
-F@d`SQQNEbt\f`JPB\<ifE.o#sN+i>qeXXF(>kneWfWp(g]AQ\'pn=D8rlT)=jb<a/_[?#m\l
-@6:alcT/GSe]R,LV9^c<CGJ%k:Xj[1G.:_$##`Gie$N"E6Wp\"=['%0M*>+tai]oY$rADN::=
-_HAJ_WA:0(O4Mj'DA`StF)7BngTBi-EV<a$2qPEcp&iaelSYrGm#;(PHq>P@=L2'(!%oV1Ggo
--#_3.r,-j35%0EbSl6H#ZdJd:lDI6oQMh3:JMb)[`/TYE\R;n.l]P(gpqTJqSgUNAGoH`qFS&
-GP8MN;i5pokdT^49XU]Z_3#tiHs3!@<#p-Q`0o(p/`,'dj=T247a_I^eO:"bE#5dR136Ape+f
-;$B"t)nU\eulpV2@2YJ(6<608n9[V2A4I$1<@CJ^F*M#nPO3S2)ZPMH+81@F\-hVZY-,i8eFs
-XNu/qAVsQqb*a;6cDoj`(8h7,q`&"Af18!RA9H(ucoof4[lBq5FF[<=b&0;2=;e#WAS6!DZCD
-D"N_6ui?eO['Z'@:_^''AC!MtC3F&Z(C*b9\1a%B&eH=LNVABU!9S.71;-b\0in&1`urD$SV[
-%1=dF;3ETH*ZgG%d4Yb%OI%^F-bDRlq2>M2UtR!DOA3=c-!AV[W#ur$eWUCQ'2VQZ1;.2J"1W
-BA8uqS;M&=9;-ne$i@I_W>!=lF:6)Yb-]8]i4,_)"8rI/ql.Emr>'ZF>$E$%e;_'M&<oIT.8j
-fjC=_U`.)(/o0]Tp1+]=O$]iD1AiAnSHR3Vc*:G7U)"bEn#`o?>jN])5=!ZRZaXoe-rU`bgp'
-])5=AijAT:=e&NM`G,&SZT,'$Mpq)1AoV!'8&8oiO;BF^Q/qDf<lQB7`OLm6-^L#1Cbe/i-GM
-7fE`F\n<XQ%fN"[_6&R0C_IkRGF[^YFuEX\J*nV48*hfM^?;6<#[?&Y7h^o:GQ9K4bd.^i8&@
-f<*^VcULUm;C6ij_-X$LWY\p>(ejco$1D&\:=N?/+,4:8indg$^H0;`[ZQ&e[$]]<i.i-*J*;
-sEFa?tO&O'?fc@!g&k*FTjV4cI=c<M^>hA5^OX`H_QIXGBo/_V+ek(G)S/(ddA`Z:`g-JkQJ&
-Bs(Ufo<Ze`0VJ.VcM"/%\\+4kk(LPoI$oU5gcp1<!<)Gu;mE0ASP!b?8hWQ0hQ.]"CEqK]-`(
-@Ie%gkb#9JbqZ$(m\$,0+;qB3@*tN-:+Umohdrq(?s3G,IDMeH?#aYe+YS^^=D#.li[u&A=[)
-tgBK(?rnY5`mWD^WN@lS>@WEa]dY-WL%gA.8'CkpL)22:LOCgi3fD[e5acLS_JZ%)Z*0C\grb
-i1*k.drT>Na3I-UEDc*>DEkjA'?oD?.Bpmnk%E9Z[=&MHU^!Z7\=jt9`=Qp`=N)N$Sdu"EFLF
->>+o-BG7F"^I[<\eC&=B[?'h[4.[r!K_Fg\'9/opIZ?DeYlT.$\iDdFA`LCI'RVoTXL"lBnW^
-C+B>BY/.#kp?obJeL]k'D*R;Nk)+VC]]+ZM_J7<;V*HeoFHuDKJ!Pji]<;aj_cB\^#R5IG^6P
-'f]d*E2pXWg1i'RH,Wp/_;C-^]Ut_(=1ks,4J]']lmd0u[N;?`ns.W9:9;1.Xh/u?343q#LQi
-ON331`OfijnJer=i^]C)nUS2sEk;7<d$1qcn*_%)#pQXXrL?V4C%R)ni&I8-#/LTG)215h@8W
-N!,pX1r&4)OG\HQf!WV]0_gs@%<Z8-c\6HbO7h;?K($#UG!B1.r3'm@p3SD/5A:qB(P@iMoBE
-)$aY,%/&gMTqh80C_+L\5+kp`bXV5c@=I^p;>N3T0f[AbiEQVd[.^:&&k`K=a`ldV3=I^p;W]
-)R!6Rd6+'c\s9EE;D_PL:IHHA$6'o>]Ln-C(pb0?O!GW='AY'_<T.f<+Z2)I2I3&YjM!8!1+$
-J;b8HQ5p_g7rp;`'.CP4.iWH-Y,U?DkH>R58N*%-Dl`2O2R4*rEqk)0j-FBn)7"7o_?li,OV"
-:Y8:*>\H%3-nB175T9oO,(_5VOIV*)WnmpUFG%O[QBht0"VFI_V$mKb2O`VFr5:S]k<MX+hBg
-hh%$%YI^Y3gjT7S?-O^;oNohV(K%%3[NV?,]Bouc`PnrXHlO[I*u-q>YR-?!iP=+<Z]Q.b,3<
-VrDR7'em%\:%bn;4s';19H@#74.p8jBMS-]?"\p@g3l#IKFg>Y8dgFe,'"ZIcN;C4OX-b,S>1
-NB7c>ZKhQYjN0:L*-N4.3:9I0hm<lu[3@qjcR*mVlWiC7_C4djXM*G,emsqa,8U,.P`;?+'%W
-4r<aNCrQ9pB=NB5/iSHiHCeD4I](V:(8o*B5>I361VXUX,J(=2L0L3CXft0<`ETt"6d##<WO;
-cOc"Fr",N<gn>%j0`6_%=A_p)h(Woe/jh&<OXm=&IZVj1_2gASl>:+O<CeEk$ja[oce-Xq)LI
-CJ?Zlq?bOSBg7pA`DR5T>[ufpN4aDbE1k#)&i_iJ''`RH$3Y:ZI5ILS?0(G(+1Ua8d-Rm<q_[
-h:4"h&X]RkL[XPSm`JPB\<ifE.@`=3>/+(E_r=rAI-on`J_TEZ@a4?8OXB;`:`JPB\<ifE.@`
-=3>.oou`FRB':[_+8n]M1A.N,.hOD0aI=]FE<Zl.#:?D0aI>]FFG.?bS+qh=<JFQ[\b=]QVKQ
-+CG!,g[a&MDhFS&jm/+^'`4uEQrPXTh<t,e,jerG960[q2TVk&50I;J936#F:O*n;DYa-4P,"
-AQ5u-P4R=&FX<ZQUKT45MTYo.=!-bU4BE9am7Y9c2TGoPgD/t^6%244ZL9SZGN\FN3MXR&QUP
-ht-*^6[jDj_^)X\U8hJ+LYb)XR`t$b,^iB;^m'[f3"&>h?H!*b@fNjX5R$K=K65.o'/ph>CBp
-!G<>Z][5]%XC%&-\;gmW)X5(`0=3"l6b_^E5a(oZM$Idkb7\!YiSQM2C1!O(X`dNpIGb6-S9R
-AY"C>n`Op<H:M2_AT7;]76sluKiSA%H.7Y[t;=PAQr_[]$L`XmZ6;[`1,0WO/H#2k=K)/:XWN
-D7McM8_]Td,u2GZE,K3&6N;<nhF!XMjGV^5em`pDelC$:dhhFKh?MYBd[_qm@TLd0g",9R/^L
-1S-=;^,[Pl<=q?PU0)0Ug7AoVRb]T#[p[`W*F0BJA*.(9;K<aPY=\);NohF!XM[!-[1S8+Y-/
-:Xtkb&&.HVI!D;EGDI8VS0<gi++Bq<ArR.]FD.K:<_Yofi6\sGeAeaO(n'a9:W"G[?YZ7Qa]8
-(d8#s-_-2?J2OD2+-W8fOD/n$K]A:(@J%tQ]P4EftF0`2W?J26r<2%?Jg$L*O/t_5YX):@O"1
-H1ThW]2B3<!7G[3.smDhB#K-i0L*qO7G\]RcReMs5OCpL%f9?;2=XJ!]I_o_gmCGoPh3QS4sE
-b7#,sGlq*PibBO(>q<NmO2'0:*Vt4+U:^qUgrn:a&^+oKaUO+bbckZXKUkif*KRtqosHDB05l
-I_qsnb*g,L=Sqa["[]Z-4BKB)EJI>>P/?'i#dNbpj4h;te'))fQ:5OQOV?%_2+Ed_67dEC8e-
-\PFg_MfG<qW$GYG%u!o?*<YCp[]NhD33eHijqo2<s;%SU2M.m>-(U0ag^Z[X3'eMhs'tII6S6
->h?J8fQX;n'gZ>[Ll];$i/P^-hbIY[7FSnL4has-C6([]0)u=5O/T6Pt[\H&nMj#a])4.fu^@
-]UXjgA=L#&u\q>)M#(^8UT\#jYZ1H!aNr<ifE.@`=3>.or`RZ!t\0'e@u;%r&h0IK~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 590 574
-%%EOF
-
-%%EndDocument
- @endspecial 396 3967 a
- currentpoint currentpoint translate 1 0.4 div 1 0.4 div scale neg
-exch neg exch translate
- 396 3967 a Black 3695 5692 a
-Fi(3)p Black eop
-%%Page: 4 13
-4 12 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black 396 579 a Fj(Figur)n(e)i(2-4.)e
-(The)i(Gimp-Print)f(Graphical)g(User)g(Interface)h(2)f(\(GUI\))396
-2612 y
- currentpoint currentpoint translate 0.4 0.4 scale neg exch neg exch
-translate
- 396 2612 a @beginspecial 0 @llx 0 @lly 590 @urx
-574 @ury 5900 @rwi @setspecial
-%%BeginDocument: figures/gimp-print-gui-1.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/gimp-print-gui-1.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 590 574
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 590 574
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-591 575
-12.000000
-591 575
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-9a9a9a
-cdcdcd
-b7b7b7
-eeeeee
-808080
-547098
-7393c0
-424f63
-5a7191
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPu4)Z?8[OrK_dcHH6G#pE!6qW3(o,#C`)Z'S)*M`YO51kD<5\$^^4o[c&>+(!n9Egu$\(
-d>!"\-_U.AN'_3+k</m2W">_K6_Q3:?J.=t:ff9er+\77ssO8UTSLo'pG5MA>H^>V[-)#(sa"
-0Gk3&K>H1Ec4T$^pO_p;*7Z8JHTa@Jl'jgsr3B*<':h=FI3)[i04-Pbq>3AGjj?ZH$OJ:kQ^@
-reAM4hrVis(I4;j\XO[lrXju_&VEHF86,qej^m#+W2!D]XVjo2Qp_C,,$5/0?B9W+H.M$At5i
-5D.M>*_[qp3)0pLE>OED</o_H9@`LND_g6T.QV>n)?=pa1cEndqLc8d2lQRrc7l2b?)WSOA67
-'U"ue\_@b&$'C2)":J%I\4YL5NbQ>'I6KghN]A\92fc[9ta_dq7&@IujL/&re\b'mtG&,hEqk
-hgYO!:-0fi.!(BtLcX.aUb_O5'Z3MZ!MAE`lpEIXFjok(ZTas8DSG`ZCeB.^lQl3pe#sF;"4u
-07kI3H-o:V9X=!R4l$.*cmDeFjldtU6=_&bR:ll#r)VK->G*nekmep;>PF!=ZtIn;8JL%R$Ba
-krI^"aZhjR=eku8MZP\`/!AK@g>Id\19/b:`ufLU9t_0"BeC3?G5-7(_7[AQ&HrOmC?3]a)qR
-%-TW\SOd6>,tD<A+&]T#$'ne9..ujJqd6,>Xt^'c>Fj_7.FQ!Um"oH^Xd7lIUP;)'b0D,?!gi
-A9;aY<S]DS'dPEfnp*JIjU(6:o'?^h:#c?)Md@<t+Sket,Bqt*,a'Y[*S]K)-m/V33jp,\d0'
-OKU/??oWO6iGP:$@f\fjuBhOcJdA+=Bdp>YSk?!i"A)DRJS`r<1S`ce+Ra4KiA!VNY-MRneYQ
-"Oh)2fE[rSJo&,B>3-,r^N#_NbdS^^:4'ueUf1\/k"D-Ero1a8"hVF.?Tap=:.G>^e"6)/F?1
-0kSb<Dfdk:+L(Ctp5p?t1m4P8=uM<]NeiaM%mkgOd:&G[tQ-N_br/W/@2dttk^C($n;%@Bn-_
-/u[Xe#=pd:,QE?[0>$Y##(r'?olhgl-pJBV]%7[g4JQg"/]"$0V)soFD;2\;[o*hD8C=o6%Me
-*_%*I-cpm)6YZQC&;=j&9_/u]neoYZ>=l,EOr>q[E*:R4KFK.Wp:2,[@l5V1jLrs9mat3i@;o
-U2I5CR0j@?9&;ll?=u:,SusBlf;ug&TrNCBL;/asW<9IOWB-+cSa1J>3@uW<QAeZmj$e=ZTR7
-02j&T`Eop#HVsWd-=Amb?o=KUjZ'68"fSNKM'_aZjH![)hL655VUKV,8ihf?q(7:SY@_'O4YH
-U/)%UV'\]>l-2J7nT3kYYQTMrPlAEbB)WIT@gfsJ2o';\^T"\bg4XR5B>Eh"](WGi4?9<nX%T
-<]DBaQ6D_T#`e&bdDKX?oli2M,df^=Y*VB[GUO&#7&_W#+Og%QKtiKXR2S0XEk1\3n7W5FBW6
-Y'SX"L&58u?n.]hG0V)soFD;2\;[o*hD8C=o!Rn#"QqfMH3jf.?W<Q%o[U;/HJEbQ!9W&d_S_
-A\[<!0!r>;2U_^iX<!VGdqk:2RghWWCSJ/XT9jfHZsX#;,fOMWtUjAV6`_e#<QKUJiJa:)(GY
-5-<VuGenL%_;=BT(MB(Ug8$Z)F`YYn+dc'b8:<=_:,UZ?SVhE1Q4RM.E_%"iFEr"];I&(@Ja$
--d4jg5CB=D+u1T=:sb]:7[:<TEndZWioMuD#%*+qbQD<]!0h6XqhUf1QhSS1`qUD-NuV]+npG
-H-M+'<?8Rq@-JZN?/=l:,U\YaK?(e="Yk,*nf([OH82WcL/5NIs*3"Zhjg/8#s-ZoX4'&9W&f
-uS6]>QSSGr^C($n;%@Bn-_/u[Xe#=pd:,QE?[0>$Y##(r'?olhgl-pJBV]%7[g4JQg"/]"$0V
-)soFD;2\;[o*hD8C=o!Rn#"QqfMH3jf.?W<R^Fe$%HFI%?5Od`ogGYfWTSFK31Vkk+2E)4uS-
-&VVgTk(>MCjA95FeR3<;qXmpPnO]+76B-Zb`B%V"TK9>O[hQmIM+MooE+2Kg_S54:Cg(Fu''?
-#m8Yc&0>FjYL*3Fm'3n7V6F@%l;1Hq(=N+Hpm"a]cQ&8&t)Wl';LUtM"&8XSUK\X?433dOGrd
-rWBtUsh!3r#K,DrlZtkX&s!&@Qg:IQQ.09:,U[jmY#s[g!k[M3K[:kZAoMjV]+o=A-[KSfi4i
-4*PI<PaNgk#fuT3<oUN-M]@/DNRi4Soq0%^)3n7W!<q.co,aM-%(P*g!Z`@'M'5`d#UgQ76i(
-3)(%)I%c!Rn#"QqfMH3jf.?W<Q%o[U;/HJEbQ!9W&d_S_A\[<!0!r>;2U_^iX<!VGdqk:2Rgh
-W^34OT,A)(G=rY=UL4@iVj##3LfuhkT>T1*?;[L3@iI+m.UY<F#LfXRVGhgqSLS#.[0P0[!iA
-nC0V'\$3jf4AW</qqHSD!??ok\#e#<DG;gU3h.UY<F#LfXRVGhgqSLUSb$)d=alRP&m>6uI=S
-+19&kJBDWG!BRmSLQ&:8Ye#MmtDc_Y,OiR"'t`\c&QbU?oh:aU6A.*`):5s.jYSE`/@`p$]@%
-,nu-/n>@uWHgo&SLcN6e<$9$812ITj.;nK8_PI_0Eq7R.45<h!"P7o<=!\\O;*@FEfpqm:)$'
-mXI*B1e,NrB5Um?6f@%tK/>6#=:!rUm%"7p)S=_@k[<S@.g%BKqVN/-3#7gYS)?FBWRZ;rK;s
-3<NQ9=&Dc/kCeS3U8Nt]<5FKg#E;@b;<WR8!pK*0-A1G]@ONB?6b&(hH.(eFTb!Fh/a0f?gF*!
-%BjX<3kPCn@\k1X\np!4KRjbS$Ka+S5d!]&=U*iNnc:tCM5VYUl^bo^]8fPBo<lL)Im'm)c_@
-hBP%IS""&Q(t=g.CCoQ>e6dde;]1m7TD/gs?5CD/[N@l"%/mniDC<)<edc3[OXm_fKscFB)"_
-NHqP4n$+(YasaS+(FG::64b-!K#aD6jb=[F@QLQK0Ue!*WPgqDl+/?9Eh[5Aqq(u>09WWKfkB
-Kg:1P9*.-HB/[^:,h"[SEJR";Ckd)6_d-V)>nI)br3OYh(3.i#[eJe50p'g1V<K&=Y/1_5b6$
-V#<-4tAd29Y2\q'`?(oda''<Y&5="5f3@?d+[?>eTN=(%PAdTAIH_:\[US>/pBqr)<eAY=%@G
-[&PZ8FluWjd,q(')$[Sg.8bFC3j5BNn16ic^KC-.BfVMs5U7\GK[$0o!e,9sFg%8^()6b)fPk
-;)"MIiZ(afPH*>L7tR2(kChgKW+A.PB9o@/VG,AtXKGB\;"sA&H?e6=<`fT;XT`+gE<0V_#/%
-Rn,%c*"Xc@!rXAmb$gH41ne$K3Y`Vbje.JVG'P4&U<r+1Q8uOYXSm7/daH5@H.M\T4I/`Odj?
-`79heW-`rVG3qPhF#S\mh7#8t-C\]0(I1-.@C+q]Fa?$cGDr"Y*`=Me;%lAg_P8.neh74Bg*E
-1F,=#]aBNJtTFP%`:c5Xb72L&:O'OW$U_&e+V`W;%Zkk)qibZZJ;s-h'Ock9iZ2skXZ&r5<h8
-8(JQtT^;pjmBE>8u@;Zgo.U),7)r\hn<[j7sd!<cU00GJ^G'dVN192*0.Z.3!4h[+@^<6.9F+
-b4oCh1T=!_l[7WH=I>.\]iEc]9-KdLVY2&E,!DVN9=mq']#dbr"D[dNc]\;DX(fA*=']6GLS]
-V<g\(T!A`&\l*ktS5@Woqisp8'kf"dW!=Je:?[I>i-Tq:qd/K5!PIFthh.d%"9-,+n.rf?+b#
-!EoNL#dQhn53e!o;,I%VdZf`u]jlqp)Q']SP3B9#8>kgmCaeimmUMAGo_]/*qP[Qrl8*Ja_R;
-Qb@eg[@B)+m<:IT..>7I#:*>UcLXB\IpQ+FSZ=$(MXP+"q"C!Z!7]VMoDTJMEXTh=N%Sc?m0#
-^&?G%>?;0J?;^<0W8q&faNT?us>/[<O<i@H!`BX/IlGucMW3c9[6CS)1=XY/9K!SY=OV]/+(-
-qXj+KuJ6>4'Q%`+Y1N,<J_"gn#J\[jV.R+!+00h`X66!\BMM+;lh?*4GW!<N!p?:QcP/`LgN]
-:]M@9KY`G(PQDc=LJRFaRP#B&W<$dbCt$A$dg1aF"$M`3YY`><i77u/:4Z"F<8D80+R5j**'W
-Yd"fP1g4oqLQWT[9ilRk4=8](PZSIU4jdL!$MW%bpPNQ7CaIW4<D1D^;hF.@r*jpq;9aW*ffF
-8VH(k"'k?l>]!?N+o\foJLg8\MI$_,lkZP/e+3.B/3r@@CnO;0K2oZ0\RJgA;J9cPG&u50.L9
-aV.MQm9XqDj#b'&lTa;BcKC%IO?1u=&Z$52QI4mFk"8%s$HunFn:)=ZHVhR_E_kNjeR^"d0HC
->e@Rhql`6PI-(\X>7A)h3LNSun^(S)XL,@VpA<L<Xs&9L',\_'gHMh2+5*"/)WeJ?73Rbjn&D
-!ZlXcrYYI\]gj!c;*5GY$qo`>A^3Eh:Of;HO'Z;JU;*MT9Ft(>(*o-9+4aB+1ae5VO=S0&Qq>
-C43])U0JqS_s]E`S^do!X%kK`K,BLjM+Uf4!m00&2$rVd,m$0W(F?1#3[f3Oe36q[#kGPJ6K#
-NfX?4OtP04LS1tfW,V=m$8.SJ&EWoXCJ1"Lq@^hdL\@-kGO'j)<b1n#Rt>"fc:2iFf/=kReQ=
-K@i4L'"=N'YlX+f[16n''KWhtJ_bNo"5;A:W,gan[;#$NBaG;=o[-">@eD,Ap+cGJ.VJ$Pk:e
-o_EC/K]q$]\rY"jO#&;qN4:FpC<31T"[E7Cj"8ki5K#+fDml)5lK1Ln_HJ`,o@Q3]\-2C&'R:
-r?9U,4uB9>.aI1](3RtNCA5=",H&^FFa$=BG;>L5UVDA%OrYFN/=d9+k5J-::)Wl`5P-<g,uh
-j9ITJ/c3Knj;rD%0T/>G-MAlP*WWu0^<WRiB?%>eaff1lV$*-HP&hE,>&V\^^MV'>Go[LWKC<
-P5)3S3N5hSIU7kF*@2NU`T`U\G+;7:Yl,I\r0\F"LN7fiqR8ejV?34GBVCE]]S9)VmYoF1aO`
-XjuIXs3N?Q,'.oBK'I*KiDE^&6(dZnjm9Ig^G9IbCS.7St<P3;/L9Z#9j*dKHY0aDZ,?IR/?h
-O9Ur`>bGT*-:),^J7`$]M.M%5]Ur"dM4oUQBU=aLP0f6f[m@eZ?--9@Y>_)3*q&ejO75okoVp
-E5<o(iFkA)*T`\dJ1DG.3f4mjNjuDO=\2=tkt@dMgX@V=$sQ7MM;D"dGgc=]JpuX#-&.?eV2U
-1mX?S+kA2Ha,8c"7=6:7MF^Jc.%2KksCVGNBn%MB1s2)>:j<'ohZFu1Gb`/OB1U-RNX0bJ!XI
-4Q0ad`s@5/"M2a)4s=j5nlF:Qcjt>B>n$F8C>p`TO$D>'gK5jn)<I_lq!@1nH(;l$,n*^@9Sg
-YV'P4ag*"d\QhZKO)PRX57FohA0-ZXg1=.-q[RteG#t"b$?_'#5_9r*Y4L_0jPYRbT]ePRmA4
-KU>$@_3Md@,T?(!DV>82ZE<d@Su?m.\PeW/UV9p3rd(2S^$?9Et8J(duiP6kA`1@WJ/82!`R+
-m>39oVPTi1LN?sTRSRoZa&o]>;JCbL@O2b'=N3K<7WtFddICKA39fK`q6s&QfR#5CYm7gP+^P
-YL9UL?pBY"?>#s(-\8LS@NEVb-/FVUT;S==f0>_RWO7@ko?pi6P]#"U`kInd>2-)X,T.3b+S0
-*t7]@ELk\nYGD)N>^5#UHguddl&ZM'VZ1<qh#rhmZ`STo0M#1Tj,g]^LV?M`Dp.,mSAh^\s&-
-iLqMXK%8U=750B"]<lRuQ&,g0&M\OQq]V>=#^V\=MeJY[7LD@QC.&,NSRMI:bCDeLX$h<?U+`
-YWB,g;J)Wo2H!*]mtrFFW_#U5nL)ijQ=,YL6!=Z&-g#[L;tIn%8SBf&jCScQHVqWIkOm:5SUK
-s6_N7WXmOWTD!=S<8tt>kY_aK1u(Y;*/[B3'rrQ(mDl>?Qg9"tR89u-7X/3E\H@P:F_VI:WM\
--2YF&G?%DU3q/p-BK)B4=q8i]hQ`)_q"G="KAcL*aLDc'"PnUbm2/"IsL:-C8oH[_W[BWST`W
-AS)3CQ),`OJ3j*ehq^YCbuMKhjP?G98`%oY/8Q;rg39;SH83KgXT:`\,sq!*CR>K*(i(Jqt^`
-=(N;>N!bHqi8)2cLM,3r:/ki?Qm^&0]l*>Dra;,aC[`D==Ff4d)*R:qn-W[iSaS,tIU?#:CQ5
-o9%TM:hoqSe,L46b\IYsU<,`$3dXi5d9F]$A[-(LGL=fK1<]?%kbP.I&:?LiO7"%5"As-]q]u
-l8fq(9HIt^LW;()o=?OIeFNUD%@uK(;Vn5,lVGNe?Ec]<OtdPV#_K+t=c%;TRG4Cj\aK%N:2J
-CUA<(e9SPEabp;1n11s.7="$cmcA/j@km)gV!"FA98S[:]n_mu^%Me4_)Eq_TaaRr&^VM5/Q#
-5Nc4^'i#H8JY"#4^kiGfmqkY85K$'l%"BT*0O/Z+/MA$V'ID27@_Z_dU_7"#(,7J_thZh7`Dn
-V=#N@jR:gXi=.T/"g?m#HKF.hJ'H%7<<Hi3)rdieZ"WHQJ68#gB)k<#Mgc,Ru5!7=$Pq\QDHl
-*C.q<qrU;ZC&mEp+i")JU9"aIu9c*mG#dS^Q-60+&Sn4Kf]_H]sB0Km*_cTJ0Z^<s/2@&bU.`
-S'LPO3rfBe*k8$oC4K(,X<ZC;o5JAZ'h:D,3Z:4B\HLGsiqn%h'cW-[&@pH4\JH&p'TshLO:X
-/>J3*Xl`/4KB3)1.UONOXP9%(XSM<fRI"$2F^YK,MO?fTN%lH4=#2fMWrJj#&G\fY*:q<lqhf
-oXu&&f&](mlMP,`]RS`kp9htluU5S)>5]'PB$%s\!siD`C$I+Vob3NEJ?5;3QcYa]C*J&9)PP
-?Q84o?2!Ye!,;i$@d@o35l*K+R5Mf^qqr'n$\F@01XSZtkGJ/I?)g#`KIUAO34D-\=jI]]pV^
-i/XSOK)?X5_1#42##YG4)1:$)GDnD81SRn+f8)VWY=COlCU!H1?m_?/TZ1F`V1:%3l&1HT\e>
-6'XhtVrkQ-0SP)8"'@8t@/0/T)b3i'20nrpXF'd1je!Xok:Q>)h2d&4\9mGphL51V%hH,kTn>
-4[QkuL#nP@Lq=V@O%rL7pF*K1'^8="m:$WS/[9W7IKcKgP3DnCSEfs0Q\W5*D#L0R&)(rb`5j
-+5&e(ndI1U&cW=$)OmDqCY4\@Hp-="\&pN?uSPh/U'+b]=e(8iNEd$TV6N.qXNOj+$SP1\-"e
-j5I6Qf9ge)jHC>CYI"e,^Sq)Be/MLBG8Z+7[HV9`$mEq:rg:905qu)`XjlL(3lSqMr')]NFhA
-KXREcMc/fH%CB\8IO)UUc8$e-D$O<-?f4;*C!%:TbQG%`sOf$p`&]7ld5@0KogBr9&jIa[u!l
-cQ=3G^RO&.r:o70iVER'XF5_b0XN(:0SJ;*WiZdf1_ckua4VIC>GYMW?7L?Wo=VQGYu-5hl^-
-T\b)%jc3-/RW1'[;/SQq@m>"fK48OQ-n:tsC..Y)ThOA`'hh;I>T_o&)g*o?WUh#6WD+9-N]V
-iQ%OrTh?km-IJ@P1TKOT:.2EhtPN50H?g#EtpH&C%o0Jm4Da-[7=^fi<UM?hd3K.^n4A?''lM
-R3<Wb)3Tsf/Sb\:urKn)4[$*%S:!g5cW,B-oU#aRO]nQh>I<(TKL.o('p[IRf_[#DmqKLbNO+
-7+Qqq]/^5/LB_::C7LVSc2SA\DG;:n>[(0LW4m5S/N,UcH&sm4Da-[Ds%("dC=Y&+7H14'h]#
--aC5rg8EmaOrsJPKr^"/`q&A]FG8sA?949_2MiHF]9c2]NZ36!S(j-F@4[1RI(0'IJ)0MLhVL
-DC\=;HuDGG2"IVAZlc@#*ICoTk,6FRV^/g\QuOkjHmfN2==lr;@#:O85H39XP,Jg!kZUHnn)7
-i)uESMEc2PU=tJioQ,55kE$nSkmc@A'DUOGL=7Ga4rcuL@`7-\.AKuR7nkd?TLsG)sO.`F8?f
-O'94_ob^1a"$4l@,)=nDQlC^IEETMp]YBSiUa6Qs1\<.C+S`(H.V^j?Vj?R/27WWd1+d2@<^k
-aA%>+R'm.3_4,ilij&`glT&lQj0`9mD5W`0@%7N?/$ml"6h:8LNeE6'"P14jNM<5W!U[YuYk;
-e#54i:BDP^J<"^)mM%+=kIp@AXV.H7oSd;?\i[AEQB''F*iG%/]%`_/pe9`]M60^?i*IA40]/
-Df(=0'^>QL8j1HCD:#<,TM4#F7,+mVmY5Z:ZfqdW)N]^(/klLtD<OQh,JkIH3GWSHC$Ks>]Ve
-;K)AaWc:,3qCPF;h9p&\J@o6=F9(k]J9sK=\<uRNM&Xl*A\oK5A&4/HPq)mWoA>H)$6`+n&QM
-KncuV+\s6JPf'G&q2tN@f=h!9%@#HF@D&)gA+J*nGBIHD7]&COl7240\<:NMAXMG3l[!C[?Z'
-7K3']'pq+_>m>lEoK:AFkkb@siG5*Q=H/a+1uOp0FqUPf:>u3_UkGX8#NW:Au+Z;T!2orFi'?
-7QMQpmZ`d='BZ-3bJfnPM!Rj#G@.i:'4?_X3uZe+BI5u*"m!K8)^tg9M/kU(hAK)&bm-<(q![
-!Oi$JPr<cNn83Zt&[Tn5e,O>d5Q+N$mR2NCPqhFZ.3.qgnbD>JUbU[,SPSnC1LJ5.5XVOH1%l
-;".4@qU"e\l1K3:)!cn;K67i6X&BmXKJBu\rA\J^ZH<&*=3a)1.GR)o=I"5_,-Van1f7Gn$TV
-<I#VfoAM@(updYlJg=n1t,(";&%UGmmC&ij"!$,RFgr(4@=63c!F#Aq6K-S\e]4IcBj@)7TIH
-WqEcPR!5'M]dAd&K)86$\(R0NR_Rm4EVS3'1"''eXNrLt&,'=Jt'9INnNgrXh='R]>@(c2nK/
-?$CZ[)$fnR-]QVD)0LYP#.39`epF7r2+8mW!H`Jebg261GQTs*EMDS*<bR&<M5-eZlla'iR0B
-M`>bHn.F*lV$fVR"$d,uj`Thcml]E/u775SMP?sDP&"ll;g3pKJC3bFG)Eh$E4G7rT,_F"lG[
-[Etks7l.fdE)YAN+D0ra.r1cUtbi.2*Bj8FPQtscH9,6Lp?jX8uDr-JTVHBS@eY><$Bjb>iH4
-bM`C\<knFYIQ49-'UV&;3'=jLAJtbW;:Q-;OQsrpZ/'shLl\t)#q;Ib@U-^_qHu6kceiC@r3'
-37GG+t!lflGK!:'Z`rCDsWqp_8!ZS7WWD1R/?)"&AeBct70:$#':Xd?QT:"H'@&kQ=91je+dt
-3qe:*JMEP-M&!\LZ-WMJn'"S_hb2JAV=^F%,Ge+C=%G(UR"j$\]/tT+F;7,DpH@a"i@O8E.^"
-pZG+YgnZP1mIhjVi.=VX(DGD)]43Y]"oa?tMU._9kQ'):)ajeFB%/(a"53k8glMhA=Wk$l@l@
-ffT+`%H0*c,ss6A-(h6Q)8/T0'G&Z@l[(=n&hIF6,!KdUi\/GlWnbo(&:%m#ZPfjSN?e.Hhtc
-3S]Yqq_Rt[>&Tu:.jlu@Kb>iYa5/O56(3+Ls&'A7tmY0g-g8_+K4.6=:$[m5L3=71Q=.9_T;J
-4V38TRQo]QmuW`TbJ[D%pr*25o0Uc"<9bAJpu,N/4b!Gqpb<I]j%e>h!qp@=6:E`=$[/H/6S3
-ggplAD=W+D=>-5n,9-iGFXIiq'ZT\3]rs]58Z_*FH1a=ZK>R^,L@@t*8hu56X]][>`^iUtHZo
-&Yge#CeUpa?n_UG@jVhp#QX>4LaZo9>3ChK@&?HM/J3#tD)`s(9jalGBN4isuicL1M&H$MeJL
-E:tJRS5?T.fIC=WgkCueGi2#ipKeP__4\XJ2SQ%Xl>n6QR4-*340]3@3@5sCJ%_oP;jW'j;+D
-04.Bmda8.#'M2'#0Nqn(0FFr@%r7X5R6XoN"ocr\e3]IcM:#c">9;b.H)Y]*NFsh,2n>=ZC&(
-MJ!KTT;&?'2oHOZFH(<#U$Nq(;kND[qM8+gDM:pPh,Bn0[2;"oc@,"gUpjs7(NC:gqcREst%d
-G[_T$!hNj0Vk!bIU=C]=0<%k'5EAo-]jtqp(&-Xs^;bJ/BkjQ>0g?+gq49!$2bCnJm<l$Jdo6
-pQ:lb?NJBIVJ58Q^:DiBX\C]_%ReeL-l`UB$47OE0Hg1672_<2:n=/3!Cbc$)V/9&&t3*P/&7
-AFk1:$Q[A)1G`tI;+mol'rPF:R[uB9:=_dC$JSFL,kcYg<$uUjH(s,SjX5l'Oa*W$8FKhhG:p
-J'OYEuESWkEm6b9T4!<5>@U7ZT:RTL<)?(juHV9`$mBMWgP<(eJEA:7&4J+(_M(IW_6;M9+fM
-I'UMsJ*4`S]j>OCSUHR0XFr0epu@7+oR*k\"P2.u-?_+Vj7;.!%&Qdf$'1/R^]Ja&[ag$-7s;
-UiSb)AI)58:9A=]&1PohksO8M(-92iSYTC[_dTuf?M4i)c'7FC.]tS-?k)c=3mchR0feuc-J)
-T,VGhhXPueqH=f<P3JjeV<GdTsD2J@YncTI'5=dVnNBPJ8^q$O0[CVH^uC$NTDbRhR#:ua2_p
-2`c-&lJrL4_H.2gjglA:@5;T??%!3YV;oEL^u2D,'s=T2->g&dStI(3ZmLP&#qH)%4JS'Zg"E
->1)6WW62Dhr0-QViF-8#u317'iRdk0\'4]Z9:'\XN+*As28"Ea<VV$:p2./JQ8)no=3qONr3p
-AD.ke!_/=JkmD[$d+/"n]STSU)$9l2T8D$U"o-176Eb%R.\$%L7#2QocPA^m-5hq?Ki'<d[D7
-1mMdXh\7cMq\n$ZLXRF#_d+/_As"X=_&]J)l-pbYG[o/ARNL;$F46h?Hoi!NVaBaF7PbXRP/C
-7c#Z,?93]'I61JK+_)pcrgliQBPM:q%:9VP2lBJ*$3TR*K:gmY*l$XHXE*[)HCT-QuUR^/^TF
-4T5?CqKdK0V-pmYo-K&n!iW78VIGSCDs^c9cBYqm']Xm]#:;fP%&4sk[ItD"sqht.WD>b@k=,
-^f`i-/Ug31J$"Im/)1,oSS4pSR1[6<d#6[en_:t2P#LB?L;h[1mZ1/<'^iX=Pk4S(SoS/oBU<A
-%["#sHm1&$]>("JpLCnV8!h<&7S\7r3'RLjXYVYSlii['<R4'`gUesR(d]I2#%)J*Y%H!d1LR
-$?#Ya+@a8k]iG`!Z&srYs190HcPh]]3@*5g$)#(K%!Z#3XmfC;k9YXUl=p@/59ZY$'M&c3]hn
-.P%U602AUP/X*Wrr]S7bo=CP47cLhr?db!;2E`r1/ihAOB\XS1m$7Tn*KH,2H<\\@T41n'EmI
-sbl\_%ptZ/$jL.1dV(`7bqKrX#Eb'+[AKKR2'iDT0a\+`i5A*DU^*\TsYA,#0p[S!jKp#OGQ@
-St$.0pLqa5iQmUmF)q-M#"kAr,"s@!Ja*@ho?WLn*>Oj1Hag]-c^7H4pJkmsI4f]N<Er*n`8f
-fUK'nP^.suFPGKJAS-Y"k8$<1P!@j7[M#LY'ncGbSB=4a*<N;GX24iO\N[:7Reg5%i2atRpT#
-tM\Vq.P_O2#^5P(C#'H.?6.kF=6G>F>Cac^XJMCR-CuY'3LT_a2S((5?s^n*=$FX=P/eBah^L
-T5(t7"O@'>q/Lc1)UGLO/-mj).0HBdjQajDOSI$=GrM@bX@/EGANUiV3HKV%8a;r;/ac!rW0>
-,X2qd9C%TDolX^\RU'r8[hS^]2WprqjJ04*8F@r5V$V,/[HjK^#kE'3J3.5/I.kDWo-=<:"md
-.^;3ja/n(WpCp@6LZG\?L@HC0Z+dQ&M4%d")='fq,q4IsXqtsO4&WOta7;kZb-=^/BaRn(?G4
-t(d@52:UuV8'"WOtug%f;BLoDfHb]Tg?5)?&]dch=q-9!::j/>%Rs0hBO5SmOEk$O6m8hegKO
-bo6gZnMW+GUi>bP5$eh:c]$if_`3S^>,D*NUGbA`F56I`K[cON*!7D]'&7O2n]gg7MG,\#O#f
-ZL4UTF&GS<I=D?S?XHjuFLaSm[aF>\3@J[Y_=Y!QO?LUYP"TRq`+Q7\R.)&Z[OHa*:b/+N7%Z
-_$dH9)8r46(96R:B3QK=r8%"iD`J-g1MHaCAu!30\8KQU5Y-g7DF4jS1M3jlt;U1=F2kFk8dg
-n45TkYRE[Z:7:NLWBf)M:I1nA_ftnbo'`<aI-#rm6DoK+G%_TZ0Kb\:nRAkVMQKlV$a2B_'@!
-tI:D9QBTHFtqaDRf58L/=McDMp>6Z0:]9/dM!j&eZLmi:E;\I2+M3aI!f>flH6/`/oqI*me."
-j"-e_,!WM'5`hh&/SL5J4Qk/Y;J$?l))uJK4dLu)^PaLVhHuTb+X;"3U(M,>/?3<6]r`M'esD
-:VgC3uHJF6LV#^aV-'2Q'UH:Z[-Ea,&@nuZ.e9`utKC-Dp8"_5TB,@8;i!/OM,9I,T/s]RpXm
-X]ur]U@R7.utdK3'8YZFAWCo&a_ZjoNggoH9kg3'[1k,uq3V#"^0i`i3*BO2R9IEt\SNX$*N-
-#-LV1jM%Kl-Blr9#jK8Vj%+'%+\&;XZo1+>SA,pJ5LI/MLi1$PV3jk!5BO0:UWgE.N<4!=H_6
-U!F[;L+=aI.):-;`Ad4ABdM4gV0@clC?k=;>*]?$L5@Gq:[2^)D%c6;>g3hMVc$,M$477<9/%
-L/Q#(lFR&'qRD5&#j_aKHnB2_+KS:O5m<(?DL%8d%@0JUt$<j^\GfiVc40I_o^G&8ZK45m7se
-OmShJ('Vah[Z*SfIF<W&?O!d:PLkil.ks[RLMfC'c_fS11_O1q*Uc0K]BB1G)Qmo:M[Eu`n/b
-BcFI46''<&uA%'BnRU*0a@:ZB,J.BEZZ(!'.<AH>h)!,BDV06rtM%5^/q<?n=5=l1CsM;YR_s
-o62[E%R_>.2Kj8e(I0>Ql`"P&'cl^**tG2.ZATafH#>r[b,(hh4Vs>4+P4sNjVaqs:bGq&:`(
-M8Itk08W&O_2a"]`We'\V0XaW@Q*gC;D.,Ee$?6"_S?IK+#X.C]D#J0]Oo.UE[n&)rd]-=jc&
-p5Xb`<nGd:+br%e'][DL2rpWgR0E5<c#M4Bc[86c'U11_[\;$I%n,iWN/UceA@'L"DNT'#=j+
-I-)?%r)Ib$IB-;tlFrL`Bqj0u]c_j&O%-D&WQBD_mg6@p/2'piZogsaK]COc.-dM&G5as]N7^
-#:V.==T$]PfD,hpWuO\b@m;Hf))OVdo?6YL"^;g"BbQOhU$XZ%G.PDf/'gq#rb[4qfurjR7bD
-$KV?4=NpH6X+JAU*M@JC/#SaG/FcQ#_IQsiedX*M1lnm_91$O?+"'P;U%1>4lk5!U'$/Tuqk1
-Gd>tQ=M@qUh8,4qYFccQGR1g;M.H$XUnd55?T^AGpHN)IQlgBCT)ek(d5%,9X%VmhPAk(d'Rk
-qf"HW6Zl2i;*4JW?Vp=!QND[#;F!0$Jh:%UQ^Y92TGYE]Q-:K_X]-18LGVg.8A8FoKfYfLYCD
-jJ&rh)KIZPk$CMDu_dq_7SG6e>Eb!7N]e`KVc6kT.di2Rti*8&JjV2Z*c"7uuX@`.'j6W..)U
-s0\W)s:_R*q\f;o=`gUYXhe3+n:GnnrM<d5KIeQn'K1Wj=P=.[5(r,_1%dh`NU@*F--'@R?LS
-p!e+EU`-oI#o*J*H]ni#:>#QI4!R5R9FpLZh(],!Y;i9/iXkFbI3s'1+hCFV)H.de;S##p@nV
-esVqo:'W%])fF#Hb59U.T:X[sj"e!!@;iF%I\4N3hFQp_F+G*s%&,#e@X:r^i?I"jfFPEJj"1
-u5dMR8Pj3Le@YlPR2V[$J=,=1FEQYP['<,)Qi!Q!cr$YcK&l'LW4ZNLM:hpSW\)0/kPF6o@+B
-oBC8GgCto8),KbrMPS%fej2oY(m%'2DNF-/shk#$HOCfmGdOCW-aCjHja-dm1l(h`6"K:5*P_p
-%_Vkf2KBao0L7'REI]G94uFEI,H9W`m`]f@*,*Z)iM7mLdDn[Z)<)IFl9JiKYP0%T!\5Wnn2p
-0OH#!(N"JBRCEjOc3S55Qt/-%,2aCBk_9oq0C9tO$:V)Ts=J7EXB=Mi7!;#I?AXB,Rr!P.g=5
-gH=Whir2HX@>YJ,VKbPXL_8CD#P[TrXT&TDgRM0YULRD7mRXfD%Pd([=Yn#ts&2B^j`clq)8r
-V&&9<(-K\p#-LA/(r_^0uDb\M;)&YtqMZ5]c1SV@/<;3g]Wko?^KF)BkY*&ZV0ob&C=RJM*.E
-.+USrEf+``Y+A6QAI)7P3<VB3nMES=Ak96dF"3S;:M_9X;(7cR<pRUD00DbRpfLl$*j\*BWSV
-8(7+4h%d)H#J8WG]Mmn:\:dYSrC65318QqF8e.`p'NF.8p"4,L/(\I')F4u`R!a$:FYH,(]-i
-V5%J,Br@i/nX89@HXV1@WL64aakq`S-WS.Kd@g<"ms&CNR#j?hUU0,A3BXY%/$V6ac>`33i6@
-#f)e,=[`P1/Ta/r2i+O1T%"&L/]2OS@:]leaTG1hLG8:]D=$Z-Kk_"_H-kpD]1Rr*gEcI*VUm
-pi2N%q8?Y+FeIi#kRs36TO737cJ0P=p5A7D0>s,Ot%K]F'#!JaVp(jMB(-8<X>55=42jj^VNX
-?9_=TR2QDX)A%u8K1(:YKMH^i)3"2BA.#(6P`+["7HR2496*Cjjr(3q]*XqOdAYl@'$Moo.-5
-(RGH!5BN<UD/aGq%[,Cs_9,7mU_k9D;Q3$`u6i_ub-_)',9p#(P!H0@OfcRdG.aXJ!>JuZ?@,
-h\t3#n]!9fn`oJA7U!CQ,g,s'0;LJBBW#(7_GBu*p*LS0iaq?m[^7N;,3:7n4Y[hYW$n"lI@m
-c[W)0@22Xn+ld%g2T7I4.;QS)>Wo>ZR>@^RHH?LE24se3e=,oFhC6Qt*\M8LNQD1u^a6%;8XA
-Wmt1j.0&P6S0,LUk@W7UrbQ2ElD0FQ]Bdi6<4?cMTUXZ@fEPUsAE,$qGLrf)e,MRW`jX:+/7/
-XCJl?POZL`XZ/3aAY'eg9ef@P1I!`0/C'b:Xi%Ygi&$]X;WG6MA=?F8>c`,gN/18LjG.ZPN,+
-+<HX2k2$F:UbWu((s#=.=L#?l>/quM\,+hBb/FIK*1=;[q^*HPqiH#57+nb\nnm`hm"Y$(*n)
-j>7_M";O0U5+'*_;,r6<3AQ#3goWWZY1g;V(bN>Nl"aH\g@g6klB?oeS<IYWSoO$^gmk*^^Yn
-Rp?)(hgY8BN"!?Jbpi%#PG9;DIh>=ASI6aP=rM`q42?SX>L@mc((tgS#X[<][$gL"Er6)q[`l
-,u5X:#6c8Xe!r&!d0Lr`/.EPH-4)S*/sr*"#MbP2+_2$r%C$UOE[40fSI_I"FRKB6Q(m:(m8=
-DQg6p:tNLYCSV\mpu1q%CO#jhhgW5PrfL7/areio>M/!0qM3h[5N*u7s%slt`uA97bE/1b)r*
-*p=V`BI^##g]<s$R9H2jZ&Kd!:h_kasdbd9DeH,[>$oKf]MW`@2RiQG#q3FQ9M[0Ml)HP6AuO
-9k@Lj/r:amX0ctJ'^$h-/W"oO15lf!3<8P0`3a)K"pUjU)?f8W!(Q:%d;D:Er%rq'>+s]'^/f
-Yldq_X7>A"%1=a(!FQQoRmrZK:1gVl)]$D\2(@V;F(F?ke8ruef!`/d+$iO':BYI^bMlnpmmQ
-MadmQ]L`HjF]E[9ilC@#0K#]*;HpOD)30r'28"_/KiTG't=Jd\43[Um1W=eS*I%+L-50(?JG'
-*mC#Xh5H6D9]M,S]$g],>WQTr&a3!N;3:'<>nA7hfBn=/m4<c@!@Ul*?24&c)[$Q%^$4FG/ik
-q2EmkQ%Dm3m@K+b#+"dJkD3k]DIR(DLV:nonS%pdF+=9,]qV\nePV;sXKjd@SpqE:p1i*Kh)3
-nNu?g%uYWKf69D.XiKsT4B\<&N_fQ4<1);nmG,pj9ZSSW8#.J)e.+u<!$VnkeiQ+?A+tP,n&r
-hP!80sfDV3)le1Y'Xd)W1n_N'ZUR<-'BasD)TmM9kf:^3r?)5IA.=k4QNJ]Eb`YbM8X3I8ci.
-II/V\-G'UP5Ur%te`c:'p"ss+G9RR'f=V?H^7n6,i'g@0.G?%D.uQA^QLn)33.^pf)gWMAP?`
-!fD"("$1P?S`,N#0UjApT`=WMB95lu7JHb^It']K:fbG9d#$Q4Rp#Lbp-tq@3[`rhkW5'S@i:
-7\/BW*$:;4L54S1&cL>D8K8cthlK'Cc+gJpBBrD6Q*Vp+,[0b!6_CDqjp*?+CYMqGYT\R/&,Z
-0Wap@K@t-m:(Wa.PQ[>?o83B/=j(K80!R?r(u7A>^,Ya;$"T"3_I[5nI3;P3h6FfraGQt`m38
-]U[sTb]fO2i:X9u)(R#6.miu,A+5j(-A>H@3b]@q46K=:H3c223J0dRE:Xe:p-W%dG`.pMbL_
-SaYZNZeoI[6W\ao2`qMtH,J]t+,^EU*K2Z3LNa4ZrR9B81]K0us5Z/\:Zh]!M9O*5K!Bi0OgI
-0&TR4T?/eW1FQ3]\cOERW%g_0Go0TFGnK0da-$\UmsG$scId[X8#]P:RuVWh"/'q.HH/DS08;
-qW9uf6-$A4i&"\ORgYT`Sal"JJ0fDS-.WZ)L8rTic/l(^$8XQ_@sq\bFV4,[7k?/VMQ(Gp)m:
-7tkn\`CG%n4BXI"Bs=BG#6@c=DrdGOD4@0_i^GO.:%giU_@inR#W-mV=J?cgOSP<*mJb9inu;
-L+B":q1"m*bd+P+7]"[Q\^]E;?QX0d@`4rpt7BHf\"'P&)2o4k>Ai>:8hhTLY)uSIl7B6O%'?
-HeR"tK?POA-a##[Lp&V?:k9gR5mP+Ila3YPZEcd=ZqkGB&YVm0(+/4HrV)>s&TNJ'&0/nC/>^
-h<@2W_L2n'j,,Uj5];G']p"?k<H/kW=c3sQp,a7XrFh0a5?J;jZ#l/:>[*]3drnL_QJ/.9Z1H
-"OZB"s@k4/]#qFOAgH9UoI<GFcVM(^L,W5&TPIW6SI!b3Nf:cV9XnX#<=MRR%M_gr^E#F/sb_
-;Y5baoVQ@is-Lghqm;h$M!3_A$3JAkng^n'B=mW5C>s@r!j00\(BN3,t^tWOL=[`J(2>,NaJO
-lVLM#u_Uu0rYkjF!>SgM(j^(`g,j[^=-oCDZ*1Y-tTa/[N9-UCfYK='f.@eo,=Yj-G!(3M.Nn
-NA-rpI[sCOZ1(lipmKnEDg?"jJOtq$(ar6(k,VDJsH2qR>)TgY4o2&lipl#+o7riq-h>"?gWb
-`qH[k<&B;8G9G]oQ.g>T0'MF-AJ:!Vh@c\aHSh;q2UX&PKOu7q:PiCb/<"`!0h#4bo$33WN_,
-OOWi]r/?@0l[I$`ELanQB;'47nj#uL=Aq*LU=3BA4-hV#le2cm6`PoG<O6:8T@eCgf<P]0HiU
-_ACK`Ql/P6XrK7.50g:5WI/tT$e=W-BR?2>^J0`d^a@nUf<#3Rp_iKiX)],5I>m+`jR-ee_f$
-/IZ:ba$G$jH)8$=nNoOUHMf^U!(M@8,(k@q/SZ-u#3*:8P.:hl&)GI(&fYU]p9;fUV$@Yj?E;
-+t^r?KfrTZ`6S;$X4a=AB:LRZ[,NqR"?/BHhF3=pE)RMG3qeC*S.&FaAsE90X\tp!CWg=NL[!
-+(-rg?%t-F.Ep(sAnXnMh<A<\XukV6<0?'8K@#U6:^W+qpfOrsbeom;(DC(EF$.:bn3\iBX@)
-`nf:._G'3P'VN7I77PMW)o*l!HGg1C9s^@ts_dL#oiEQ2+u%UR-g3hS+OGsfR<r*Z8RG@=]4A
-#`)F!ZtFNHfa7tO\m94l#ZoAiDG+9$0X3eIFUWO<34ItFi!W5B&CAD[F8drj/rF6faNE=(dG+
-/E1:<a*jC4<BhjL#p^)BS(`SLoiR%Wi\c[XNpk&0A#;2=#6>I7=p.WkJJ<iDE)s46&3:u-ZBW
-aG]`4=],V]0fR0%LgmHl=2KIS/p`%o#c<UIt\T"u%50O\Hld5[c6*KcY/u<=8=@C2tJeW!)T(
-dnUR9>Xe!GP/0X.4(9<\OAG_G8U6biTo\;fF]ak\5fP%\K:mKV*j%Li?fMC\:jj0b_)%+9/\4
-PgjA;dG*N0iQl2oVDK0d;M%]`AdQfb!1k!bb35Q,CjQe>j/fm=#NS[9$m6"bsOG//,JI#k9e9
-;_lbEL`Rkhs>Q8fCuPC)"qeh9"`Mp;1/d6jai$5lh/8a[XrE>IV),1cuOI4#-0)")#.X$69>k
-_#P^Q;qk,`l:[@p2OO3TM[:lHF:8mNd+,7k%DMZKp"[;h?=.iiYZ*_'nmt^,pF<=>e9ngJMVU
-IiXh!V!:SWF-H^u`@crb[OL/q&-DnE<$eHeTJAB.bQ[DqkRdRWR^18gdTR@EiSk$QG7cZ[8E`
-SCg3&)eFOTN)jCfF"b=)^`MbcO]jrW$<4o3<-I!iE<b(eFntVO5j@@i^6Hj';dLFJNE'uJ=VO
-!=fmBeI:-'#V&4)er$=VEg,IR-P5T\h'6/2SICHZ4Z--@:tk'Y[*46jXTd-h2e5)?KX&3TI2]
-mohHnF/-$4`k+@T-P=/jDs%fHoDr;HfK0T'-)@HGmQt[?NOT\8*@X8gVY*Q$hiF`^:T&H4LE3
-8+MdU`0MA=]TQq+Y1`7aDY_goj-qQ]]]fJ7P](c'G3Tea1M1>*u(o]lhf/nbcI6Ms=lM!Lp(8
-$3Hq0B0q#I<u@^`N]-pc7RDG6)i2pCI!?]%mn4ZkKeT^h1C-INKC0oEhc`HLG,]<fHpkS9Jpo
-BWQt.ig0to_=:S-(1auMJ=nsq?memgqb@n#'%)M1%d(RV$$ia-h,+-M_:@/o)*Hd4kkr]hNHc
-BF1Jjln+?4]1YdAU<nJ7\@U)T%V0MR'14chqE,@K(/#q4`[L\i][V[j<oIXouqd(FbaMUtA)'
-_'5b@NFoF.Iq,1;X5nS]/N'"JH1'&r>kA;U_@KN^s]hiLCsXV5WV%oY.,:(VU>d7d)u]:(c"H
-goDpX\0KjdSl5Yg>&u0MiRHk+AIg[81&o-M#j[(S3h7%<r7gabt-`EX65c*4!p3(j0e3itZp&
-J>'q@hd*O9g0?#r)[0l,$7/qS#TJ%k`88*.!N*q\STm8&2GpY!LmcmG<A(92f.Z=unAZMfmmD
-3ic1=Hf$+W^gN&+Yg_h/kg_1,?6Q(]5:ts?Kl.Ft2"0<kDanY`Z.:E6g7`QhXZ>TP@OKaI:`&
-?_]!n=oI/pqeaE6=Q#:1If(7N=L>9&9KHO!H01c?HdFD8F<JL*RhrZrt*TSd.g3^u\cH/?H$h
-96&94]!q5]_0\#M=F]L8U3U)iaDE/LN,CNH@Y.:p*@EIAq[Gr,6EBW$`->^Qqt9oLlV(5csOS
-o#aS3)+GbW+kCGJ+:FEtqs2/+Y,ZFF>#Uo8>"Hn'!87quaFc"Q0r3nZ;l]9<p#WiTDk9-1=a>
-6f?nG@lbf&!4W`Uj:PMPhKZdfAk,;o"@4@SQPVMM?d]q4o+BBN(@i">IKD:[kGm+ed22gPm"h
-e9O+o6/U]uYd<X#0e=R6KYr4V$lXBjgRoKPYLWs(&Xbi0a:@tZoPaSm^a'Ie.#d$!BFpu'OtK
-cq5]mLBHSfMt;(=l<iZ'E!q\L+0\KPQ?6il$+TJ7VNcL(tB`pP*pBBT!khtKJXd=[s@`t$E/q
-muB#UUMYB3mmcXo?4<*?G_46FS!s,5)n';Dph/1jd;!r_27'i_-M$SE7[N?(3F\l4/%iucjB=
-he<MXVDfL"mOTjqkIZ>WA'lXKaEi;49"o1R_)/<'5Y)h#Q<?4chM`t0=Zm4g7d4^j0Eh+o($E
-UKo@3T"d4h/+V*Xg"f+K'`d?VPk9R"8&:cJO),(CLt/<c\Q]!NFTgSHPjgNh`=TcO\Bc4TXXM
-&-QL)5URr5oJ@e.!W8'Vl<fRn*q8SLp6IkkS_WfK>!^J)DuKu<#gHN9DD4@*2*-6;K+EB((?W
-n'1h@J3&2:?'m7f"V.=EX^Fm*K2%'ZTkU8t5#WumkI0`D.:;XiXlII))QFTMlt?(AosqX*$7+
-*nk_2i`J4T`V?pS7DC11ao'^ahIrnl4sL:C?*+*%k+7AK,Z(8ruI'L/kP^;3aH0)!V-SD^<mn
-\eG3<FlcE`=rLj4n$;FEILd"nGg[2cq:>&4L/*USO6s<,6Wu>lBg+%0&!`i(tj8V2A.`Zfpnm
-%mq3KR%M2a)D_BZ1s6WB17]B$th6hLBn.lZL*Dk7jcAV'!?o[<0!-pC="JgYP#RDC<fGTi^Xe
-R_qM/Kpqc_=e+?2@cT"!7Fg_02^3jj$S]&NSlNkUo?f(![MO+^:8DK8GJ_d/R(,"kHP>]/,aP
-u)0)rP`ng.e:q],G@TRcS/5!6ukE*?"$r>oR056jgZ[X5TATsFi(iSl\"n'109#^X^/-gH]=^
-MO1m_352P`=HYVbPq/TNp:#"(SD'Iq`4ER*INHW'0(1(GN@D0j#:WT7)A]"="((66@S$I&p8J
-[-8(86F?:-2pb'Dj*lS#c2o3oKNP&#d4./<]Da\GV?K]Z^kp&He:KXTR8':Q[RP".Rrb!qQh>
-rW(5ghcb"ML$!n9Y,^IlD]H*tOpfBr<aJ\IF/DqgbPDqPT6I;5_mXKTUZG^P@poFDpWZh36%:
-PEX0rpE9f+IXDDbF<<bGS\Qke-U%7s[f7t)f0?eJq:=f?rnU07nm-b;Y1FbPbA[:;o&LR/0At
-^Cj]`QF?ClOl+3rC&?,(kZq814fr6]V,*2co*Qi8`EQ0GYt(ldaDW$q:7.JABYHjn#=?'$Vn'
-+b*#ae&P8DD-^RKaqah<:;_)nRh6`=2_r0BtTNmVd;<,&)-eMh`JB^")cqTs5WhHh;oZu-#Fm
-:S(sUjp>,gIhKhFD,"j"+q&\b\T"q4irH"X]q/:g>kIogIZ9L@;!98BD0CMZU*fTDao^NRYUa
-TOmI_>)ZVHQT6Wpf;?gt<:.8LGD?5[-f7Cfl3/`oL7SP,_`\o,OjO"Vc!TIpCU,e=4;k(Q0)!
-*=Pm1^n*@mK3dDfU1-n*7q_>J_0jO?(Q@:)I9bP7%uC+oZke.c%dfqDVaVVp=el1BD/[O"3XM
-\43]*WGG'.,i&uY?9rmtNVYJ:&QoQp-D9+I+^rei6ZO)!7qHrk*D\U%ClgrlsgYhP@'Vc.;?[
-k*O*Qqi<hF:*FTniZ$P56IDSo'g"h(Lh:2W:4J#l#G;eTu`)mF4P2Gf;WH6.\FlN71-)8qNKb
-!:5=9XcOUKLjEW^eP"G5R74279kq?r<@a6U`5r[%F#0nQYO)9`4;Rp05(8hOW5ttSI^fIR1fB
-JN@M60D4,c8q(U;Ma\[9))8V&dt:_,Ds)\TT6h(u(]$SJ"/_3b(q_\"=IVns;SOIYdhlBUm.<
-dVm#'8(Yp@T/(GS_?EMk>:HgtX@g$dVl*sfhE,#8AF50)8;,r*4e/8W]t!G]@61ed6g98&/.-
-0,riNLti]mAfFF>o.(Q5;jK#gu)YuQ6_S#\CuZBF94Vs+P)9bo*JE\'oY[E$dm10&pBq^A!`?
-n*'^BBT(39;_lbZ#kjKWk$7/rp/P+^QEW4V"IJLQ0i8a"\7a4[[g?k!?/+>V?-Q?+c?nX\k#b
-A9'YlM5(Z@S@1G[EkZ,3ESj'Ab:HMBj%+@BdF2]'8k_\Q_U"\?9VGhguQ;7&X@qQR)\G^@gKN
--N!gCG\9:\n,gBV=-a'Ga2^JZ<"Zo&$4t>2)7*odInULoN#7]d6@Mp1PkFCgQYMMNfC<alRlZ
-[&dQ!cQ`B@;pD;^b'/p"d1VZBa"4K,n4EqigZg&c7[J=>7If*g&uJTS1n8*mNl@71d)\FQ9:(
-6VP`[AtrY2d036m"F1B-D!Q,IC5bp:DF:\j]5acp:n;VRbsh@c\aHShN3\i72]8fV2)8m(*%G
-NE::BC_tnC\fgqZ-9pnT0or1DBJa=M>_O#h_aQJ[i`S'C!OZ=<.@fig>3I>;gU@fm,/aoU;=t
-U>K814A`DdH7R>nl9h\Zi>e>,*>".&r_5&ic_T]m8$.EBDWAn)7IUXgDjP*b`n^6UCVdm]@:O
--/$VGl>:PU\2\7&HGa!lETLCc8gL?\[+nQ]$hA(+7c8cBLQCC7/l&+XVJ8X_pA+[XX7al,fcm
-Gj5L&NpN"<0I`?uK-eNS60JHcBUcQ5&qtJkEK'!gbV8Si*MjB;;MS.q@1n,:_8(0F92Q<`WKT
-)7l4im8NEmoE]ZM^h(DX-TrVW<R>Ib@`kI#aE0830?OPHaJZEY9'0f7<=!6hOXm`.SB6:E9A,
-Wob-G($"t1(!!f<JZnGYT>qrI`<52'ZW8R0CUMjTElu<KiB>%$?uiY(_&Qr\gd8g8WcqkcIs^
-GknLP=,tt4,1tbuTdZpPl;HaH+XsK9q(t4O62\G02<,A'm(c\V'7k8*e:4FBj5]-Q6nMh+Y%!
-3KHMiaH.h[IIBd(qT7^=9G`4XP;`:15j?kZZJ-esdTK7GQQ:0qD9S*g_bYKYjN/Ps%FnI"^<W
-KViIV$!O=MS?5`2UE(&?Z)a]7*!$1F*)X^TKmQ2p2l?i+M:-chOu$5UX:KU,.BbjJ=_9&fa)-
-/rQqi]UZ>!ra*Z7*2(c*ar<66KA>b/Pg+X\!NWPF]P(ni^<.pOS!/8[987)aJ,7.3Ru]M[/l1
-BA<TD+Fh*R8KPSki&fNUr1Ac*80`XBbk]qF@pB$7Z>JZl,I5O9cq+>KT*$U4-:#u_Bg['e'K$
-_@kI$#%7(o;ioj\(N'L.08ZD8kgNV'h@6mhQEPf<S/U7[a'lL;/mP'W?]Q=5>jHr5_6HR&"8V
-+HOVBME8>K[[333^ns2..4]0`,!"feAG@MC++'B%r2amH;tH-`'Y:U!pK!fU_U'^m06lnt53>
-UQaG#eF'p.B=k>LYA(:N,`A-aMLmu^:N3gIA%!V+a4cuP[.?!ZFZOH8Va[\MSNA6"9!F$O,bM
-6aOZ<%$_]a+,X'J"?UT_rU]mJuhd[/\$C-InZTp*4D7+.OFp$GRc]f]IZI8O*4-]u-"AMjNk'
-OJpt24XT<EdqO7cK6uIkqUPAZ'e>j$=r$$m&7"61-26_3W_?*q$A#c2G0k^Dp'%[AUES'KNL"
-#^(<,sP9u")/JN?%W^8(14qQ3-7AID8>1RXZCdY+0a8#upSW4I)7X!ptnlGNb>YD$BBrSN6h2
-L]dC"`l?,c9%1@"[9,/CV<bqj%]VlJdG1^V/LZr(t7:L3UZ,*cpN0^O<BF8X@q%17bFQ3jijg
-ku7i8WHFCuV^e'/Xd`i^<P`clh'CIK$Dpbf-CIV/0V)B+a`OOlDfg<b1qM[3GHUr"(Q1H(l02
-Iu%Wpn!^O<BFT^oO!3n8cFe.t`U)DI`9K'?6e4IlsfQ/_T^]4]+[pr+IRVaD8sGWs4:=n+\)n
-_h]q/XT9j?ok\!e#<QKU!mNEP!*1D:<nma<.d?]WP(=_#p.9-cAq-gK72.H[?CD4FP=^e0qE'
-pFCI;u&54IKdgj39@QNlfO/%meIC0acqLP@*lBi+S0jX8_FB\'G:c^]9lth/p9W&fqP"m3,5S
-)*<g"5#2-^%6!IW=W=O@UtKNp0Mqh9\`\85:ZENf$T+S1^a6-fHbMG(cF58M!LXk%-TAIcO'^
-]4E]T5*mFDl*ND9SkaC?lLPUCP"s]PXmV(7:-6=1kbNPcnLWoM*2_31YVYONgn9NH0:g=sPNf
-FV4@s10'Qat'A1($J*T<-&11N=+GZpOE4aG4GcJWdU<P1;sX#iDO47*G`N)a-LqWsSE2./I"S
-TY:9'@UZNpgWHoo<VpfeUZo&FP7o37An_K4pdd'EHY$R)XN;UD?'PTk:,W%PI"a[eURasg4JQ
-g"/]"$0V)soEHW=7[mP,)*QQk#&8Wb&6bs8KFCI;u&54IKdgj39@QNlfmHBf23FthjDkE#QP:
-/DhmFgBr'NQU4#=^^Vj?^C+5c.Hh>1+jJ.4hIp4/Qh/j6sK(8gboCd7KR)[H6'rSSIXR3oR\"
-UUeSbdO`kH?0K\%YU<G0qFc5k1NjXS9S_l>F$,md_H,Qq`n=q:a-4qC'[CQ`3ZX-qg#_EC3!s
-n3GdQm<I9Yiuh+'o>D2Gnl-WV!7?=pLL+?l2g]0L`-AH&TIb;,XB7^?k;Z!=Gt:?Ag_oYsS&?
-!nJ>h$Q2+3g+>QjA)]US[*6JbHNRq;[moI4"XO_W@Xa'JPM5(f"mbL42C8RG3e/ST%<=?A,gS
-%9i2cVj=/q8$BXLOK:Q,`7HLIa(&p&ZBKCtre*1jrn0R&`d]"j-+OfQ_"]#.TSTY:9'@UZNi&
-J?WB?,+o!QWm$4ZfN>%6-&A/XT9j?ok\!e#<NkB?,"83s<UWELbhp_1i"L'^QB)-`5?&_/s-I
-m1;r=VUH#PT[Te-\Pa\WBqtT'$^IIQa$S]i@lcIWTA/r'Ee+hhn$FSZl'/naM!CJ.*2C++ZR@
-u.>YN>lF=K0l<mtcpZZG]/II)s()q<:Bhs8/Bm.s'<ROBgl<i&_TVQCT(2MKIoGBQZXI:*e\6
-ofXtZp*Xt/h0Nf675Vi\$S:Ag7985BcgHR4&t0qlZ4SWgQh"K$6J6^d]$sUgid>NFP6sLd`MD
-ehj/D:,5]Cs6EHn[.0*eCd]*2u0qJ#h24`Q(FNSI)XO&C:dN+3?2.ssOg'9P#:<UlmXLd3p6U
-:f4m@I(RcAq.r%r<6=V9`\?Zg?bs;l-`t<>D]bgm1]0_WP*mSTn\Q4f2-eelfs\qkLGsr6*#.
-3f,03M<VB)<_B:D$&cenANG7-i$i'2dgj39@QNlf*,!msm$LO*i&J?WB?,+o!=)*%"k0FT9W,
-=,3n5?KVoQ`JI9FYZ=n+\)n]92D&Lta9L?tKHn)G2pmd/YZku7b^;d1rHC9Sd@mANema*]G8;
-[rFgVqi=^*:pG&:,P"C3bdpQYo\hf<!0!rgLDt/C;=q+HRu$m%@Bn-O2Z4@_3T2C9`n3tifmN
-%nd_DV+Q[/R.*sr!61J&-:8kUTqL^Sp<an-OM=dXM["-DCW]P<JnKp:3%j`8_VfaRj&'f9#M6
-5teZ;2f(,Rl4PAcZjC4,Mr\L%pg':eKG6;`^a&+I4N@P3_=rS[1lKm`Gp\SK60n-/-a</FtT4
-U(YsV8#MXL/9;3;EdKk/%Nnf0SJjPScFIQ?MR-eRXi08`[&fr*@ND!HqdeH;mHIT:]V#:rdNg
-Bei_Hm/=a,$_Vj1peVt'p=AH?b-H\qTIEX/YboIelhVe$N&/M$]u.$]:_SfQ9o-/)"iAIUN`#
-.8PVZ]E0j`3bZ%TMs\"0qD@>h8i>B=5J(O;r)6V52u'Rg3Ae6feK$uU8?\FW3qH0Jm(4s2\EJ
-?Z-,T46q-P!kjrDu;jP((\IG+P(EmOZeXdf1BdJeb.P>c)-6@H6r,qGi=<]gBe#<Pl7OO<_2t
-=Cf's;U*`tGpm0qE&uA98H<EtaTq<q/4pE@d5:(=T5e7n0E9\VXf[(=T5e9W,>>@QN%I?Zb!n
-31Dni@kjNhYTGo_*T<BH`H8*\#=c*)e#<OFVm]toeUZo6(/1VE0V-pl6mi1iF/QB6JPJ:a07N
-oYS'`",QB)FYK>CqL(sa2Q$1H7(_0?7tkmN.6BSc#gi%3)[["0ArqC7d^XVfe;[;0BcP=Y_D6
-X*e5a,eZ=?#%q)q7&TDk8i:7b'4+=dV5,58d,O??u3jGolQphX?/-TU=MUVZTI]uNj0&GhheU
-*0V'%B"Oi446SP&J3s=#hYsU49(cqlLM6TE%SJXEke*5&qA#=V=%``\fU@GdBM@7=e2$@ALI;
-/I->.Y8XXuOC"M`[W]YDhY",GrqmEWe+g%);.^:6*R\[p(olSafZ]s-+HeM4N!b-ZdB(<)4lP
-DhTuV[F5f<km=Wo?bR8Gi,NNbVPFnFC"AeL,(1ofM5AZ5TL>^;JGjO.3gmaA6R#=.20<kTURU
-LYUf@%7bcb<<itp2/#uRQunHhC2:)SbSdn*c:f$e?$Mi8:FMCtY$M<XZN3$(+@9;C(9Hs3A(Q
-_V\lhKrLlh8bpY:PdiU$+m`Kd]%iK,J-YC(sST8F<&p8S_A71c0-F1F=MHW9W&!QGj+5@d*)*
-Q?(Of#-(T(b"K'W]U-pBlTW5L^aSO1W'S^`%-Aln#,<N_`H?-)?HLZ6lPAhGpSJoqU)-Ap?"<
-/[`RNCStXl@U(`,p=Nf\)d#Tb_<Gku=%)q=PQDZbrs0[/2:[`cK*r3iFa(.iqKa]Pq=@IGlT9
-@67RA5iHZUV_8s\gBo=Kfkut,_:TZ"-cQWn8#J_PlXW+NXJ4/g\l6V8McFk.0Ns(m`7Q5nR81
-.en;KkGIsmm'_]Lb,g7?Jue]AVerB4P>0/&G_m3?,%lLO\$]j7<iYJ3Uh[2teWe`H6'9W.82N
-9R\^9W.82N9R\^9W.82N9R\^#GKVHPSYjb(%?!VX4edu;7fOCS]%fF@'e&^fVB<q7]pn;.gk_
-;S*;2UB-^M`m'"CWC3k4:MF5`^eD:bAk$&lb'@l@m<DgBM#!-<g6lhgdN`BPh8Asdbf:H=13h
-+rs_r>'GU(=)b(HE"GOi<lL_Jt)(<Fki,/.4NH;hZ]N:a&GkkN0$!+P3JS/0.$PR5gLHXH-;U
-PI!ECdS&(Ud%sYl?Y>Z4,eL5>_gsj1rO/e^D5M`?.'5:U]=cAUZWItR+Y!^3V>Y2TVLW]n6Bm
-O0U/TXdD;3_Y,3d(DlR^kR<>Tdc*(UfORI['jBjS;dGaFcMIC?^cFmJ%Mr#oh#-3mt.<YPFQY
-'Y5)6<q!]::3Ki^!7OUmc`m\d[06)cLhu_=oD<*Y\@X7h3qTkMl[f$XLlmV/nao=IfrW3DYYT
-d(\J%pQ$TqeMUMbj'g&UflRZ@6mX1$%c02N\:!Ii"%92lWXV$9C7J^)!p6T.c%^1@@;-Y!0ME
-<D*Na5)eTccLQ=@X`IF3HU4=k0*=`KRB0BCSU4neoh(YOpp/<7l]WAX5ZUX<FHS811\%Tk0sp
-Gh;FKVg#[:Vqh8oa0)-KSVenT^9E3hZm.Vs:U5#3[F]PCW2!;Q%VBW>os*q.kH;%Gh5Qq8U,o
-T\$:_POl!;T#kLa#[/s^gHo%=_>*G:f>f+`PGcfJJ.R+I=PVe,DhZXX>hMJK@Nh'9]'d:!3LQ
-E04KIM8!s#.q0uMt2I,ZFg#o*4]'sB@lsD=P_Yqo]"tY3b=b`_2d_)Wf)%CQ]IY341ie9`!TL
-L<:o23=uqN%I\`1[G)%Yglu[Q6BV[`OjAr^CGR?M!'25=[UMtpTMJU",f.>D=:fK8>_/s-I[=
-q_tq?>?IFc/b4q0PE>.hp/[QqhLPPN*Y5jmN@)YAgh;d>Oh7@h%'0PHdJ/S[RC7j6Tg!l*UDC
-ELbiW0V,Ye0K'WH7/70YUV1]3R&e#E@QHBBPA%0Hdu!=RqD=Ib4Y#;5fu?>mf3'euQqhf_/tG
-?Y:=*Q7&pE;HAU_s5Irrh[#\Ru1f_\]G3h-$neUA/)_DF9Y3m%6+EL^<ml[1UhPtjb$;R*<s9
-[6p\q6Y6aElM[;!epBGfKcA*RM)1>pm%qBA?1T;NNVm+?nIq,me`i:>ENDm9f2:Pk_)_X$])o
-qaR88VO8C`H^W?9CEaY-<+$(.>ZOfY%pj9M8XJ:t]QJ_7W?KC?M4n,',7(5.hchS7-)4e)!'q
-*rrG"8-Y:=\YE3Aol2d>UgHh+8<h>Sbmnm"\?u#2B$f;r(#EJuQ%O3Ndf`#93#^:?Cdm4e/:d
-VU!Kd;_/<O\*W?BmDppYGBJf%l/hY/==KfH\A.,43Yf`B#<Jus:@[]7Zi\uh_LA;ETR!`ef&t
-,G<r'G^)6W5jQ5f%P%p[eCFK3)NnIk%2QH)??]$KVHhB/:V9fF`lL#lFD2r1HZS`5@MWI]+h%
-JDZbKDV276])WIc-EQha=^JGQdn(-4kZA5f9r1mGlDf"KtZ01`$;p1MeC]+CatE-PuW3EfD1Y
-UIWX;sJ*5t#&^(:)l):H*.Qg'ZmHb6?T1rTMcZ=8F^i\<0_O+(K_0"E1_O+(K_/sF9@BFKJQb
-O=jS[RFX4Uun^H\\r:>,jpHqr3f!o]7._ft7a#&'NT24T$q_M=KrJFCOSJ9IIgi_/s/Q&1'@l
-(lq"7:6-6$1Dkp8b=;bh_-er6$jM@#@-e)Q[T>.h'Fnu_@([m-=unDU$jM@#?n`E+#(sa"0YV
-5eg\`A-]bf5U-9CO^Y*I2np7?DR)mJMSWPjF1HdB=;%=%-(cgC,.]a]5NQd>'d[_3,pl'K``m
-C'\;30qb6(BqqS=a;a&<j]HoeTrLQ^V1`Ii9bBsZ!>"6?Re]MDZ6$s2E&8/le<!]hVJGVbN0-
-',&C8MI#Xc"hN$Gdm%-uJ<q=A3GBJ<q_SP!]J7H-;@:!b)%8eU1:gCO$8[n'Q$EY$!G'/3p_S
-P!]J7H.fI*!M9U1RGGh;d3>\%YimO)D-Y%c6%H*6[H%gq0N3WE`P?f5sWs2goN>7;UcHi/a5h
-<""h8(M,X-(Tt?la/J"k\71Ab3!XrG9W)'Mgq230Vk**J@_"&<1jorTpHA<3I>2hV\_#P841K
-[#HPZkIS!FDD',iqRfqij>+nC5!O!D7gNGOYiY<eMgDZ(X?,h?(02RR_ts/)Q-:S]Y/V)rRu^
-89uZmZUE!s)=uKCngq#Ge?i.ShMhj7^a>GQYg$:gkksG/_\s0#"<a%Bc"+]*p0UXs3Z'4m0WA
-^CLl12HQrJU[!7=PUskLk[%m=Q)VK;aSg]"9[a^u+4j[p)[5YT!cf=OZFaG>,/tRem(!GDgIB
-r1mh)V$ZI2,DPduN,q\TdQhFK01LPW!:)h?Id^-W+COg!naIGe?i.T#eU'IF>*2;d9(K\@i@(
-7QQf("`*L^9eLpj9r,:MBQ2G0]A;3`s)IGf>"[[@`Q5L:p51ac@2hAbaR2o-GPNG2=`l6P)i+
-^EHE5fViqSRLD[/7HHQ-p;3mi_qWh6W4'K7^7Ys_nnVA>+;m8_NmptK'2;r>nKBl=(`H26S_M
-.KD:?GD%>BlOlGc*j2![`@:jqO[P45"0f;E7i@[$R2jWd)g*cXV!Ep(0]?o<Sd6@>@-44EU`Z
-[i6[gOldttNM7e7)e.Jm,B@l/<>@68dhp6_[[fM98SOD>qDElZfY[%.:>Bb6BNk`j3m/mT3DZ
-c#U:>(Q(h*=p]pZ$@n(<>=pqO[P45"U)?E*-+&D\G]26.WU-2p_XY;<ikZ>I4#Qf`(YM?/JT<
-c_kGp".o>MQOgjsp;D^Y#CjB[Vd2S>pIhEqj$2Yu*G'R:n=2/HAr^K$m58ir48@iI3cTMm\@i
->rl'K``mC'\;E;!O?8oT,1WkAiQqZaP(U=s*2(^pV$_-er6$jM@#=T8?7-i"\~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 590 574
-%%EOF
-
-%%EndDocument
- @endspecial 396 2612 a
- currentpoint currentpoint translate 1 0.4 div 1 0.4 div scale neg
-exch neg exch translate
- 396 2612 a -2 3006 a Fe(2.2.1.)39
-b(Printer)f(Settings)396 3350 y Fd(2.2.1.1.)e(Printer)396
-3540 y Fm(Click)25 b(on)g(the)f Fg(Pr)q(inter)30 b(Settings)c
-Fm(tab)e(near)i(the)e(top)h(right)f(hand)g(corner)i(of)e(the)h(windo)n
-(w)f(\(see)p 0 TeXcolorgray 396 3669 a(Figure)h(2-3)p
-Black(\).)g(Then,)g(click)f(on)h(the)f(do)n(wnw)o(ard)g(f)o(acing)h
-(arro)n(w)g(to)f(the)h(right)f(of)h(the)g Fg(Pr)q(inter)396
-3799 y Fm(combo)f(box)h(to)f(see)h(a)g(list)f(of)h(the)g(system)e
-(printer)i(queues.)f(Select)i(the)e(queue)h(to)g(which)f(you)396
-3928 y(w)o(ould)g(lik)o(e)h(the)f(printed)g(image)h(to)f(be)h(sent.)f
-(One)h(may)g(also)f(print)g(the)h(image)f(directly)h(to)f(a)396
-4058 y(\002le)h(by)g(selecting)f Fg(File)p Fm(.)h(In)g(this)f(e)n(v)o
-(ent,)g(the)g(user)h(will)f(be)h(prompted)f(for)h(the)g(\002lename)g
-(when)396 4187 y(either)g(the)g Fg(Pr)q(int)h Fm(b)n(utton)d(or)i(the)g
-Fg(Pr)q(int)k(and)g(Sa)n(v)n(e)f(Settings)e Fm(b)n(utton)e(is)g(click)o
-(ed.)396 4367 y(When)h(either)g(the)f Fg(Pr)q(int)29
-b(and)g(Sa)n(v)n(e)g(Settings)c Fm(b)n(utton)f(or)h(the)g
-Fg(Sa)n(v)n(e)j(Settings)e Fm(b)n(utton)d(is)396 4496
-y(click)o(ed,)i(the)f(settings)g(are)h(sa)n(v)o(ed)g(in)f(a)h(\002le)g
-(called)g Fh(~/.gimp-1.2/printrc)p Fm(.)c(The)k(user)g(is)396
-4626 y(cautioned)g(about)f(hand)g(editing)g(this)g(\002le)h(since)g(it)
-f(is)g(generated)i(by)e(Gimp-Print)g(\(although)396 4755
-y(it)h(w)o(as)f(the)h(only)f(w)o(ay)h(that)f(the)h(author)f(found)h
-(for)g(remo)o(ving)e(bogus)h(entries)h(created)g(while)396
-4885 y(playing)f(with)g(the)h Fg(Ne)n(w)j(Pr)q(inter)e
-Fm(b)n(utton\).)p Black 3695 5692 a Fi(4)p Black eop
-%%Page: 5 14
-5 13 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black 396 583 a Fd(2.2.1.2.)36
-b(Setup)e(Printer)396 772 y Fm(Before)26 b(an)o(y)f(useful)f(printing)f
-(can)j(occur)l(,)f(the)f(user)h(needs)g(to)f(associate)h(the)g(named)f
-(printer)396 902 y(with)g(the)g(actual)g(mak)o(e)h(and)f(model)f(of)i
-(the)f(printer)-5 b(.)23 b(Click)i(the)f Fg(Setup)k(Pr)q(inter)f
-Fm(b)n(utton)c(in)h(the)396 1031 y Fg(Pr)q(inter)j Fm(section)d(of)h
-(the)g(windo)n(w)e(\(the)i(upper)g(right,)f(and)h(just)e(belo)n(w)h
-(the)h(Printer)g(display)396 1161 y(box\).)g(When)g(this)e(is)i(done,)f
-(the)h(follo)n(wing)e(windo)n(w)g(appears:)396 1450 y
-Fj(Figur)n(e)j(2-5.)e(The)i(Setup)h(Printer)e(W)n(indo)o(w)396
-2550 y
- currentpoint currentpoint translate 0.6 0.6 scale neg exch neg exch
-translate
- 396 2550 a @beginspecial 0 @llx 0 @lly 293 @urx
-196 @ury 2930 @rwi @setspecial
-%%BeginDocument: figures/gimp-print-setup.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/gimp-print-setup.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 293 196
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 293 196
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-294 197
-12.000000
-294 197
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-9a9a9a
-cdcdcd
-b7b7b7
-eeeeee
-808080
-547098
-7393c0
-424f63
-5a7191
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPU%@X%7%#0uC?d_-/STF/)nrjWlTLcl\gYHV0VWKa(Uu3k`a^d/p9Vr^kVUXLSs5U\X&k
-j^$;.<aYY,6m$BiulJ?c)R'ZO\@+NmKB/'r3AJSNBZW2'U>^##S!Y$t[<-<`-^;H;^Ii5[9He
-_MT/aVBedq91&D'fW[1f,t8':$[r+Ar:BeO)C'eG?RW@8Pjmdb*[U:?"spQZ:]_MSO>"_i'*t
-[J.A_=3JY86j.`P7KY;I/VMEj`^dE5`d$!.XZ@Yl'hUZCEkn!6NK;Id24PiSa,&r;Ok7?GNlT
-S2/*D+a'8#>-6DPu<3-O^T^7]G/Y1=aMT7/F:nHN1V9F3-)PtXD0Cs\@mJhPg64SlTJ'b[jNt
-.l@4^ZmnfT=mndVJ1a=:M)'u%gPeMat+T4t*-m1AY5,^u.\tIfmPW>2.9g0==7\s>hdR9>,qN
-lFA"nG!aNg#fOqNh7aGr.J^V-MI$mQ$En2J_(k9&aLgM5?/@HMpKgdYN0?SD^pJJPr9BV-te^
-e\@=ibp_tU1HKHJ;DV59%V\C)r?9EV8O5hf-lJkbTJT4>;YBg]!I@Mh-=\Tngq[`'&uG.FjfR
-H7PSfZ/a"MjDs3_KOK_(Q&04DM5/#O)OkXLE\0Zo-h%#E^pW>t/0idk6(WS9C`Xe(^c8m=G+L
-\mG#VPM\U1b>JsqNjf'g%_DiP_]rEmqmM:DACGaG#.66\*RIR/<gPhTSk<LNS)#,.Dbo-lNQ,
-Gk$HW@#pgC9YjV,Eg=<]a.03YS4!4`g,=;-Xdc;&p9#&j>1F7j^+FFB^O"uqTj_d\I/<`$o@$
-C_eUaRnjD3W!<%8%gk^V>#qn8@JLr6c>Sc5ik<MW)W2isglDR?F]YL?6sM5j[CO9:QW;!TT?E
-&6?Hr2C23mQ:,=!2_;A1"R3<%keI$Q%R*c_*8h>&35G"a^E9;W&>/S@TnL2*-oKT\-1C+'-*g
-`O65ad10,[;V6Rg8Q%Krg@]S].U"f2J)M=4S>XB#j-M:XH(L;aRYh3_)2C>>@/-2B!dKOQ1t*
-Mp#F;bC+T:a-dUOqQ+!UJgZ..9*4Np/9UHfW0#,nM?tDKY3/hUqLjbV)'UjX0$!0e/ctrPkma
-FTqpLKF@#qi;)1a5kmis-`\1mM`XPUu]$PNrOr1JZF=_8gG5:nZ5.I8Cdbf)1c8^BXj-SERY+
-c8i53HJ@s.#;0j-NlMAga[IP28!9BV\HHRu^o;6cid5K'+e,8l[*W`d(2,jl;[-;nOt>!Hb#W
-s7&apM,?4g]CXMCc:DaKddu/hH'L0O@[%pT:f8@L"Eq79&>a10?_[PoES>t`/=QPdr@hrX30V
-J6:B.1jG=jQ_]'!gS6,fbq[4<I-#M8@S^IRPWqYJ/%#$WTS>#:j>+/9&L8Eg^8/Vq!&hX.]/.
-0WHrPS!coND@T8;P8[abnQCgbcI'*M^<n/s8)774lH0D9VgNjC#q/PV)KX4CYXisn<=n;c1]T
-_nbkH(s!JU2"\,Mob3.fMU;g+kMaOkb-W5Fd5;T;u-'QG]17:f_e%W2-e#K638c(EJ;EDK,PE
-!dhN07$n8s<(tV7"HA0M5oP$;8d7>\,.DqbR@V[k8sePH-.0j-1`0LelB-.rg>k-Rf'CB3i4t
-"5C^m/kiarGlW5,M_FCoJ70J@#*`.$D[=-[(Aa8q\4.nnF8.M/aWq0R;("'uCaKr*1Ye3=-1Q
-1^fJBXM2(n&f`]^TZfX3I2-CGj>R8BbPBhe&-PX=4qnhpUOY:&#VDco]f%,3NE-'"lOQ?In2-
-(fgp'_>`gmHu/jjFO8+P[_P(?!\-DMC;J2#$\I$r1trGj2-F4(R!49?K5/]hO)CgA?OR"Z6,n
-Vnnmiq<fLF4h'a/;Ro#PA7VQO..URO)8sH]XUH4i;-BlP^17:f_PK@>jR7nrka^d/p9QedTr\
-928Ig2B0g9GHLS^Sn,6eeU6P\r:pm93-LD&T5`)5Rr`V%VUL;R8h7,a@"$eu$s>S=nB]YaX9D'
-%YbT<g-BAjB#Q$7]F>[2c0o<WkqE.2;GIFpP!n1C+>nki:qf`eo8[`Vf.fSePnd?_?)p3=$S2
-Q8>iQlh)I8<W3j!#ajGpnes"(cPWgCXW`[D`\HSh\2,7&,)eZ$i3dUs7JQs`X;c;W,\C3#1DZ
-i6TAu!<!97*&+g.U\;orrF69#n&^;qq2Z25=,[bp\iZ1J/tEDFUVQYI]lp9>eo:gAS1D:hjcJ
-R8R8Fop;Pa1.iiJ8gV%l,obEJqGR7smO'D\~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 293 196
-%%EOF
-
-%%EndDocument
- @endspecial 396 2550 a
- currentpoint currentpoint translate 1 0.6 div 1 0.6 div scale neg
-exch neg exch translate
- 396 2550 a 408 x Fm(Scroll)g(through)f(the)h
-(Printer)g(Model)f(section)g(of)h(the)f(windo)n(w)g(until)f(you)i
-(\002nd)g(a)g(printer)396 3088 y(which)g(matches)f(yours.)g(If)h(you)g
-(cannot)f(\002nd)h(the)g(precise)g(model,)f(pick)g(something)f(close)
-396 3217 y(and)i(hope)g(for)g(the)f(best.)h(There)g(are)g(selections)f
-(for)h(a)g(wide)g(array)h(of)e(Postscript,)g(inkjet,)g(and)396
-3347 y(laser)h(printers.)f(After)i(you)e(ha)n(v)o(e)g(selected)h(a)g
-(printer)l(,)g(you)f(will)g(see)h(the)g(printer)f(command)396
-3476 y(displayed.)396 3656 y(The)h(Gimp-Print)f(softw)o(are)h(does)f
-(all)h(of)g(the)f(necessary)i(con)l(v)o(ersion)d(of)i(the)g(image)f(to)
-g(be)396 3785 y(printed)g(into)g(the)h(language)g(of)f(your)h(printer)
--5 b(.)24 b(It)h(is)f(unnecessary)h(and)g(undesirable)f(for)h(an)o(y)
-396 3915 y(other)g(sofw)o(are)g(to)g(manipulate)e(this)h(data.)h
-(\(This)f(is)g(why)g(the)h(command)f(contains)g(the)g("-l")396
-4044 y(switch)g(or)h(the)g("-o)f(ra)o(w")h(switch\).)f(Please)h(use)g
-(care)h(if)f(you)f(feel)h(the)g(need)g(to)f(edit)h(this)396
-4174 y(command.)f(Once)h(you)f(are)i(satis\002ed)e(with)h(your)f
-(selection,)g(click)h(the)f Fg(OK)h Fm(b)n(utton.)396
-4578 y Fd(2.2.1.3.)36 b(Ne)n(w)f(Printer)396 4767 y Fm(In)25
-b(the)g(pre)n(vious)e(sections,)h(the)h(user)g(selected)f(an)h(e)o
-(xisting)e(printer)i(queue)g(and)f(associated)h(a)396
-4897 y(particular)g(type)f(of)h(printer)g(to)f(that)h(queue.)f(F)o(or)h
-(most)f(cases,)h(this)f(is)g(probably)g(all)h(that)f(is)396
-5026 y(required.)h(Ho)n(we)n(v)o(er)l(,)f(some)g(situations)f(might)g
-(require)i(more)g(detailed)f(control)g(o)o(v)o(er)g(the)396
-5156 y(handling)g(of)h(the)f(printer)h(data.)p Black
-3695 5692 a Fi(5)p Black eop
-%%Page: 6 15
-6 14 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black 396 579 a Fm(Click)h(the)g
-Fg(Ne)n(w)j(Pr)q(inter)e Fm(b)n(utton)e(to)g(tell)h(the)f(softw)o(are)h
-(that)g(you)f(wish)g(to)g(create)i(a)f(ne)n(w)396 708
-y(name.)g(In)g(this)f(case,)h(the)g(ne)n(w)f(name)h(may)f(actually)g
-(be)h(an)g(e)o(xisting)e(printer)i(with)f(dif)n(ferent)396
-838 y(settings)g(that)g(you)g(wish)g(to)h(sa)n(v)o(e,)f(or)h(it)f(may)h
-(simply)e(be)i(a)g(name)g(associated)f(with)g(a)396 967
-y(particular)h(command)f(for)h(handling)e(the)i(printer)g(data.)f(A)h
-(windo)n(w)f(will)g(appear)h(thus:)396 1246 y Fj(Figur)n(e)h(2-6.)e
-(The)i(New)f(Printer)h(W)n(indo)o(w)396 1966 y
- currentpoint currentpoint translate 1 1 scale neg exch neg exch translate
- 396 1966
-a @beginspecial 0 @llx 0 @lly 248 @urx 72 @ury 2480 @rwi
-@setspecial
-%%BeginDocument: figures/gimp-print-new-printer.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/gimp-print-new-printer.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 248 72
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 248 72
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-249 73
-12.000000
-249 73
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-9a9a9a
-cdcdcd
-b7b7b7
-eeeeee
-808080
-547098
-7393c0
-424f63
-5a7191
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVQ=$a,(8&-^G(r\mu(@RU'rI*u^i;suRSUlt6g$cPZ-@i0r/R+&]IB-\ISZOMV,C?#RIr%I
-%+C%%\7er#,&m<7G_:BTJ1d68QIj0QOM(`\HPCKSJcm;QLg/f`QeH)F^IG\dW5D0'[k*csCe"
-/V"A7bl=%O#Q%T:F(Gg37Ka/1-2Q=DnTKFOaJoW_2BB/,J_HW3o]@omWTZ9U$qrg_8/i(KI[J
-iKG,s=+'?076fGA`ot8TgL1-J21AaPl[*67_nnQHPbE*BW2X2(5fWAsU\9q#f22C]$KSt8n5Q
-R3'49.!6Y(DQIedJ[]aVH4nE5KZ2rTo*Fk^fXQ&UqEe%X@L>^Fjc0VB1c%_UX-`"!.i'$!<!f
-`I3.tE'14F!^D3T8krkCLDos<an_mU>?%_DksN.=kHhQ1_7Kq2UefA&EMiu3O6YPf1LC8$.g>
-G?3drE*F<(l*Y`e6PW^cZQC<"$!&Pb=Ek2AZ$:hmLN@<oB<?'GCC>?Dq!)achC'2J?!E6d'C<
-9F_NqMbI~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 248 72
-%%EOF
-
-%%EndDocument
- @endspecial 396 1966 a
- currentpoint currentpoint translate 1 1 div 1 1 div scale neg exch
-neg exch translate
- 396 1966 a 229 x Fm(T)-8 b(ype)25
-b(a)g(name)g(into)f(the)g(windo)n(w)g(and)h(click)f Fg(OK)h
-Fm(\(or)g Fg(Cancel)h Fm(if)f(you)f(wish)g(not)g(to)h(do)f(this\).)396
-2325 y(Notice)h(that)f(the)h(ne)n(w)f(name)h(no)n(w)f(appears)h(as)g
-(the)g(selected)f Fg(Pr)q(inter)p Fm(.)j(As)e(you)f(change)396
-2454 y(settings)g(in)g(the)h(rest)f(of)h(the)g(Gimp-Print)f(GUI,)h(the)
-o(y)f(will)g(be)g(associated)h(with)f(this)g(printer)396
-2584 y(name.)h(When)g(the)f(settings)g(are)h(sa)n(v)o(ed,)f(the)o(y)g
-(can)i(be)e(reco)o(v)o(ered)h(easily)f(by)h(simply)e(selecting)396
-2713 y(this)h(named)h(printer)f(from)h(the)f(Printer)h(combo)g(box.)396
-2893 y(One)g(e)o(xample)f(where)h(this)f(feature)i(might)d(be)i(used)g
-(is)f(as)h(follo)n(ws.)e(The)i(author)f(frequently)396
-3022 y(prints)g(photos)g(on)g(Epson)g(4x6)h(photo)e(paper)-5
-b(.)25 b(Note)g(that)f(this)g(paper)h(is)f(physically)f(lar)n(ger)396
-3152 y(than)i(4x6)f(and)h(it)f(has)h(perforations)f(on)h(all)f(four)h
-(sides.)f(The)h(author)f(dislik)o(es)g(printing)f(part)396
-3281 y(of)i(the)g(image)f(on)h(the)f(perforated)i(parts)e(of)h(the)g
-(paper)g(which)f(will)g(be)h(remo)o(v)o(ed)f(after)396
-3411 y(printing)g(the)g(photo.)g(By)h(selecting)f(the)h(proper)g
-(scaling)f(percentage,)h(printing)f(can)h(be)396 3540
-y(constrained)f(to)h(the)g(4x6)f(part)h(of)g(the)f(paper)h(which)g
-(will)f(remain)g(after)i(the)e(perforated)396 3670 y(sections)g(are)i
-(remo)o(v)o(ed.)d(The)i(author)f(has)h(sa)n(v)o(ed)f(this)g(setting)g
-(using)g(this)g(feature)h(of)g(the)396 3799 y(Gimp-Print)f(softw)o
-(are.)396 4204 y Fd(2.2.1.4.)36 b(Media)e(Siz)q(e)396
-4393 y Fm(The)24 b(term)g Fi(media)f Fm(refers)i(to)e(paper)l(,)i(card)
-f(stock,)f(en)l(v)o(elopes,)g(or)h(whate)n(v)o(er)f(you)g(ha)n(v)o(e)h
-(put)f(into)396 4523 y(your)i(printer)f(onto)g(which)h(something)e
-(will)h(be)h(printed.)f(Click)g(the)h(arro)n(w)g(to)f(the)h(right)f(of)
-396 4652 y(the)h Fg(Media)k(Siz)o(e)c Fm(box)f(to)h(see)g(a)g(long)f
-(list)g(of)h(dif)n(ferent)f(sizes)h(of)g(media.)f(Choose)h(the)f(size)
-396 4782 y(that)h(matches)f(the)h(media)f(which)g(you)h(ha)n(v)o(e)f
-(loaded)h(into)f(your)g(printer)-5 b(.)24 b(Once)h(you)g(ha)n(v)o(e)396
-4911 y(made)g(your)f(choice,)h(the)g(drop)f(do)n(wn)g(menu)h(will)e
-(disappear)l(,)i(and)g(your)f(choice)h(will)f(be)396
-5041 y(sho)n(wn)g(in)g(the)h Fg(Media)k(Siz)o(e)c Fm(box.)f(The)h(a)n
-(v)n(ailable)f(paper)h(sizes)g(will)f(v)n(ary)g(depending)g(upon)396
-5170 y(the)h(printer)f(model)g(you)h(ha)n(v)o(e)f(selected.)p
-Black 3692 5692 a Fi(6)p Black eop
-%%Page: 7 16
-7 15 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black 396 579 a Fm(Some)h(printers)f
-(support)g(arbitrary)h(\(within)f(limits!\))f(paper)i(sizes.)g(These)g
-(printers)f(will)g(let)396 708 y(you)h(select)f Fi(Custom)h
-Fm(or)g Fi(Roll)f Fm(paper)h(sizes.)f(When)h(you)g(select)f(such)h(a)g
-(printer)l(,)f(one)h(or)g(both)396 838 y(of)g(the)g Fg(Dimensions)h
-Fm(box)o(es)e(will)g(let)g(you)h(enter)g(your)f(paper)h(size)g(\(in)g
-(inches)f(or)396 967 y(centimetres\).)h(The)f(box)o(es)g(will)g(not)g
-(let)h(you)f(enter)h(sizes)g(that)f(your)h(printer)f(cannot)h(handle.)
-396 1372 y Fd(2.2.1.5.)36 b(Media)e(T)-7 b(ype)396 1561
-y Fm(The)25 b(type)g(of)f(media)h(onto)f(which)g(your)h(image)f(will)g
-(be)h(printed)f(should)g(be)h(selected)g(here.)396 1691
-y(Click)g(on)g(the)f(arro)n(w)h(to)f(the)h(right)f(of)h(the)g
-Fg(Media)k(T)-12 b(ype)25 b Fm(box)f(to)h(see)g(a)g(long)f(list)g(of)h
-(the)396 1820 y(dif)n(ferent)g(types)f(of)h(media)f(onto)g(which)h(you)
-f(may)g(print)h(your)f(image.)g(Media)h(types)f(include)396
-1950 y(such)h(things)e(as)i(plain)f(paper)l(,)h(postcards,)f(photo)g
-(quality)g(paper)l(,)h(transparencies,)g(and)f(more!)396
-2079 y(Once)h(you)g(ha)n(v)o(e)f(made)h(your)f(choice,)h(the)g(drop)f
-(do)n(wn)g(menu)h(will)e(disappear)l(,)i(and)g(your)396
-2209 y(choice)g(will)f(be)h(sho)n(wn)f(in)g(the)h Fg(Media)k(T)-12
-b(ype)25 b Fm(box.)f(The)h(choices)g(a)n(v)n(ailable)f(will)g(v)n(ary)
-396 2338 y(depending)g(upon)g(the)h(printer)g(model)e(you)i(ha)n(v)o(e)
-f(selected.)396 2743 y Fd(2.2.1.6.)36 b(Media)e(Sour)n(ce)396
-2932 y Fm(The)25 b Fg(Media)k(Source)e Fm(box)d(allo)n(ws)f(the)i(user)
-g(to)f(choose)h(the)g(paper)g(source,)g(sometimes)396
-3062 y(called)g Fi(Input)f(Slot)r Fm(,)g(that)g(the)h(paper)g(will)f
-(be)h(fed)g(from.)g(Man)o(y)e(printers)i(only)f(ha)n(v)o(e)g(one)396
-3191 y(a)n(v)n(ailable)g(input)f(source)h(\(such)g(as)g(the)g(standard)
-g(paper)h(tray\),)f(in)g(which)f(case)i(this)e(entry)h(will)396
-3321 y(be)h(grayed)g(out.)f(If)i(your)e(printer)h(does)f(support)g
-(multiple)f(input)h(sources,)g(you)h(may)f(specify)396
-3450 y(the)h(source)g(of)g(your)f(choice)h(here.)g(Some)g(Epson)f
-(printers)h(of)n(fer)g(a)g(roll)f(feed)h(option)f(in)396
-3580 y(addition)g(to)g(the)h(standard)f(paper)h(tray)-6
-b(,)25 b(and)f(man)o(y)g(HP)h(LaserJet)g(printers)g(ha)n(v)o(e)f
-(multiple)396 3709 y(paper)h(trays.)396 4114 y Fd(2.2.1.7.)36
-b(Ink)e(T)-7 b(ype)396 4303 y Fm(Some)25 b(printers)f(of)n(fer)h(a)h
-(choice)e(of)h(dif)n(ferent)g(types)f(of)h(ink)f(or)h(ink)f
-(cartridges.)h(Man)o(y)f(Canon)396 4432 y(and)h(Le)o(xmark)f(printers)g
-(support)g(v)n(arious)g(combinations)f(of)i(cartridges,)f(such)h(as)g
-(black)396 4562 y(only)-6 b(,)24 b(black)g(and)h(color)l(,)g(photo)f
-(color)l(,)g(and)h(so)f(forth.)h(Most)f(Epson)g(printers)g(let)g(you)h
-(choose)396 4691 y(between)g(three)g(and)g(four)g(color)f(printing)g
-(\(three)h(color)g(uses)f(only)g(color)h(ink,)f(while)g(four)396
-4821 y(color)h(uses)f(black)h(ink)f(as)h(well\).)g(Epson)f(printers)g
-(that)g(support)g(six)g(color)h(photo)f(printing)396
-4951 y(allo)n(w)g(you)g(to)h(choose)f(\002)n(v)o(e)h(and)g(six)f(color)
-g(printing)g(as)h(well.)p Black 3691 5692 a Fi(7)p Black
-eop
-%%Page: 8 17
-8 16 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black 396 583 a Fd(2.2.1.8.)36
-b(Resolution)396 772 y Fm(Click)25 b(on)g(the)f(arro)n(w)h(to)f(the)h
-(right)f(of)h(the)g Fg(Resolution)h Fm(box)f(to)f(see)h(a)g(long)f
-(list)g(of)396 902 y(resolutions)f(at)i(which)g(you)f(can)h(print)f
-(your)h(image.)f(The)h(list)f(is)g(written)g(with)g(the)h(lo)n(west)396
-1031 y(resolution)f(at)h(the)f(top,)g(with)g(increasing)h(resolution)e
-(\(and)i(generally)g(impro)o(v)o(ed)d(printing)396 1161
-y(quality\))i(as)h(you)f(approach)h(the)g(bottom)e(of)i(the)g(list.)e
-(Dif)n(ferent)i(printers)f(support)g(dif)n(ferent)396
-1290 y(resolution)g(options,)f(and)i(man)o(y)e(printers)i(support)e
-(dif)n(ferent)i(quality)f(choices)g(using)g(the)396 1420
-y(same)h(basic)g(resolution.)e(In)i(this)f(menu)g(are)h(a)h(fe)n(w)e
-(terms)h(which)f(may)g(be)h(unf)o(amiliar)f(to)396 1549
-y(you,)h(and)f(the)o(y)g(will)g(no)n(w)g(be)h(e)o(xplained.)396
-1853 y Fn(2.2.1.8.1.)j(DPI)396 2033 y Fm(DPI)e(is)e(an)h(acron)o(ym)f
-(which)g(stands)g(for)h Fi(D)p Fm(ots)g Fi(P)p Fm(er)g
-Fi(I)5 b Fm(nch.)25 b(This)f(term)g(refers)i(to)e(the)h(number)396
-2162 y(of)g(dots)f(that)g(your)h(printer)g(will)e(print)i(in)f(a)h
-(space)g(of)g(one)g(inch)f(\(approximately)g(2.54)g(cm\).)396
-2292 y(This)g(is)h(highly)e(dependent)i(upon)f(the)g(capability)g(of)h
-(your)g(printer)-5 b(.)24 b(Resolutions)f(belo)n(w)h(300)396
-2421 y(DPI)i(are)f(used)g(for)g(draft)g(quality)-6 b(.)23
-b(F)o(or)i(general)g(purpose)f(printing,)f(select)i(300)g(-)g(360)f
-(DPI.)396 2551 y(Higher)h(quality)e(printing)h(can)h(be)g(achie)n(v)o
-(ed)f(by)h(selecting)f(600)g(-)h(720)f(DPI.)i(Settings)e(higher)396
-2680 y(than)h(this)f(are)h(used)g(for)g(the)f(highest)g(possible)g
-(quality)f(for)i(printing)f(photographs)f(and)i(other)396
-2810 y(high)f(quality)f(graphics.)h(Experiment)g(with)g(your)g(printer)
-g(and)h(these)f(settings)f(with)h(dif)n(ferent)396 2939
-y(types)g(of)h(graphics)g(and)g(photographs)e(to)h(see)i(what)e
-(results)g(you)h(can)g(obtain)f(with)g(your)396 3069
-y(printer)-5 b(.)24 b(High)g(resolutions)g(\(lar)n(ge)h(numbers)f(of)h
-(dots)f(per)h(inch\))g(require)g(substantial)e(image)396
-3198 y(processing)h(time,)g(and)h(the)g(print)f(\002les)h(can)g(be)g(v)
-o(ery)f(lar)n(ge;)h(it')-5 b(s)24 b(not)g(uncommon)f(for)j(a)f(full)396
-3328 y(page,)g(1440x720)f(DPI)h(image)f(to)h(require)g(100)f(MB)h(of)g
-(temporary)f(storage!)396 3706 y Fn(2.2.1.8.2.)k(Draft)h(or)e(F)n(ast)h
-(Econom)m(y)g(Draft)396 3886 y Fm(When)c(this)g(te)o(xt)f(appears)h(ne)
-o(xt)g(to)g(the)g(resolution,)e(it)i(refers)h(to)f(the)g(f)o(act)h
-(that)e(the)h(quality)f(will)396 4015 y(be)i(relati)n(v)o(ely)e(lo)n(w)
--6 b(,)24 b(b)n(ut)g(suitable)g(for)h(rough)f(drafts.)h(Draft)g
-(quality)f(is)g(higher)g(than)h(f)o(ast)396 4145 y(economy)f(draft.)h
-(These)g(options)e(will)h(gi)n(v)o(e)g(you)g(the)h(f)o(astest)f
-(printing)g(speed.)g(Economy)396 4274 y(Draft)h(uses)g(less)f(ink,)g
-(and)h(as)g(a)g(result)f(the)h(image)f(will)g(be)h(pale.)g(These)g
-(modes)f(are)396 4404 y(generally)h(not)f(v)o(ery)h(useful)f(for)h
-(printing)e(photographs.)396 4782 y Fn(2.2.1.8.3.)28
-b(Unidirectional)396 4962 y Fm(When)d(printing)e(an)i(image,)g(you)f
-(ha)n(v)o(e)h(probably)f(noticed)g(the)h(print)f(head)h(inside)f(the)g
-(printer)396 5091 y(mo)o(ving)f(back)i(and)g(forth)f(across)h(the)g
-(print)f(media.)g(Man)o(y)g(printers)g(are)i(capable)f(of)g(putting)396
-5221 y(ink)f(on)h(the)g(page)g(re)o(gardless)e(of)i(which)g(direction)f
-(the)g(print)h(head)g(is)f(mo)o(ving.)f(Ho)n(we)n(v)o(er)l(,)p
-Black 3695 5692 a Fi(8)p Black eop
-%%Page: 9 18
-9 17 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black 396 579 a Fm(quality)f(can)h
-(sometimes)e(be)i(impro)o(v)o(ed)e(by)i(only)f(putting)f(ink)h(on)h
-(the)f(page)h(when)g(the)g(printer)396 708 y(head)g(is)g(mo)o(ving)e
-(in)h(one)h(direction.)f(The)h Fg(Unidirectional)i Fm(setting)d
-(instructs)f(the)i(softw)o(are)g(to)396 838 y(only)g(place)h(ink)g(on)f
-(the)h(page)g(when)g(the)f(print)g(head)h(is)g(mo)o(ving)d(one)j(w)o
-(ay)-6 b(.)25 b(When)f(the)h(print)396 967 y(head)g(returns,)g(it)f
-(will)g(not)g(place)h(ink)g(on)f(the)h(page.)g(On)f(man)o(y)g
-(printers,)g(the)h(print)f(quality)g(is)396 1097 y(better)l(,)h(at)g
-(the)f(e)o(xpense)h(of)g(printing)e(speed.)396 1476 y
-Fn(2.2.1.8.4.)28 b(High\(est\))h(Quality)396 1655 y Fm(W)l(ith)24
-b(lo)n(wer)h(quality)e(print)h(modes,)g(one)h(may)g(see)g(an)g(ef)n
-(fect)g(where)g(the)g(printed)f(image)396 1784 y(looks)g(lik)o(e)g(it)h
-(has)f(ro)n(ws)g(of)h(stripes)f(with)g(a)i(small)d(separation)i
-(between)g(the)f(stripes.)g(This)396 1914 y(ef)n(fect)h(is)g(called)g
-("banding")e(and)i(is)f(undesirable.)g(In)h(the)g Fi(high)f
-Fm(and)g Fi(highest)i Fm(quality)e(modes,)396 2043 y(the)g(printer)g
-(will)g(mak)o(e)g(more)g(passes)g(o)o(v)o(er)f(the)h(same)g(part)g(of)h
-(the)f(page)g(in)g(order)g(to)g(impro)o(v)o(e)396 2173
-y(quality)g(and)h(\(reduce)g(or\))g(eliminate)f(banding.)g(This)g
-(requires)h(more)f(temporary)h(disk)f(space)396 2302
-y(and)h(prints)f(more)h(slo)n(wly)-6 b(,)22 b(b)n(ut)i(does)h(not)f
-(require)h(signi\002cantly)f(more)g(processing)g(time.)396
-2681 y Fn(2.2.1.8.5.)k(Interlea)o(ve)396 2860 y Fm(Certain)d(Epson)f
-(printers)h(\(older)g(models)e(mostly\))h(support)f(a)j(printing)d
-(mode)h(called)396 2990 y Fi(Interleave)p Fm(.)h(This)f(mode)g(uses)h
-(special)f(softw)o(are)h(within)f(the)g(printer)h(to)f(impro)o(v)o(e)f
-(the)i(print)396 3119 y(quality)-6 b(.)23 b(Interlea)n(v)o(e)i(print)f
-(modes)g(will)g(usually)g(produce)h(better)f(quality)g(output)g(than)
-396 3249 y(non-Interlea)n(v)o(e)h(modes,)f(with)g(only)g(a)h(small)f
-(performance)h(penalty)-6 b(.)23 b(If)j(Interlea)n(v)o(e)e(is)h(not)396
-3378 y(listed)f(at)h(your)f(chosen)h(resolution,)e(fear)j(not.)e(In)h
-(those)f(cases,)h(the)g(non-Interlea)n(v)o(e)f(print)396
-3508 y(modes)g(of)n(fer)h(similar)f(printing)f(quality)h(impro)o(v)o
-(ements.)396 3887 y Fn(2.2.1.8.6.)k(DMT)396 4066 y Fm(DMT)d(is)f(an)h
-(acron)o(ym)f(which)g(stands)g(for)h Fi(D)p Fm(ot)g Fi(M)t
-Fm(odulation)e Fi(T)8 b Fm(echnology)-6 b(.)23 b(This)h(term)h(refers)
-396 4195 y(to)g(a)g(print)f(mode)g(used)h(by)f(certain)h(Canon)g
-(printers)g(to)f(impro)o(v)o(e)f(the)i(quality)e(of)i(the)g(printed)396
-4325 y(output.)f(Unfortunately)-6 b(,)23 b(at)i(this)f(time,)g(all)g
-(of)h(the)g(a)n(v)n(ailable)f(DMT)g(modes)g(do)h(not)f(w)o(ork)396
-4454 y(correctly)-6 b(.)25 b(The)f(cases)i(which)e(do)h(w)o(ork)f
-(correctly)h(will)f(of)n(fer)h(signi\002cantly)f(impro)o(v)o(ed)396
-4584 y(printing)g(quality)-6 b(.)p Black 3695 5692 a
-Fi(9)p Black eop
-%%Page: 10 19
-10 18 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black -2 601 a Fe(2.2.2.)39
-b(Pre)n(vie)n(w)396 802 y Fm(Notice)25 b(in)f(the)h(upper)g(left)f(of)h
-(the)g(windo)n(w)e(is)i(a)g(pre)n(vie)n(w)f(of)g(your)h(image.)f(This)g
-(pre)n(vie)n(w)g(is)g(a)396 931 y(representation)h(of)f(where)i(your)e
-(picture)h(will)f(print)g(on)g(the)h(selected)g(media,)f(and)396
-1061 y(approximately)g(what)g(it)h(will)f(look)g(lik)o(e.)g(This)g(pre)
-n(vie)n(w)g(will)g(be)h(updated)f(as)h(you)f(modify)396
-1190 y(selections)g(in)h(the)f Fg(P)-5 b(osition)p Fm(,)26
-b Fg(Siz)o(e)p Fm(,)f Fg(Media)k(Siz)o(e)p Fm(,)d(and)e
-Fg(Output)k(T)-12 b(ype)25 b Fm(portions)f(of)h(the)396
-1320 y(windo)n(w)-6 b(.)23 b(Y)-11 b(ou)25 b(may)f(also)g(select)h(the)
-g(image)f(with)g(your)h(mouse)f(and)h(mo)o(v)o(e)e(it)h(manually)g(if)
-396 1449 y(you)h(wish.)f(In)h(doing)e(so,)i(you)f(will)g(note)g(that)h
-(the)f Fg(P)-5 b(osition)27 b Fm(settings)c(are)j(updated)396
-1579 y(accordingly)-6 b(.)24 b(T)-8 b(ak)o(e)25 b(note)f(of)h(the)g
-(arro)n(w)-6 b(,)24 b(which)h(points)e(to)n(w)o(ard)h(the)h(top)f(of)h
-(the)g(media,)396 1708 y(where)h(top)e(is)g(the)h(\002rst)g(part)g(of)f
-(the)h(media)f(to)h(enter)g(the)g(printer)-5 b(.)396
-1888 y(The)25 b(pre)n(vie)n(w)f(may)g(be)h(mo)o(v)o(ed)e(around)i(the)g
-(page)g(as)g(follo)n(ws:)p Black 396 2167 a Fl(\225)p
-Black 97 w Fm(Clicking)f(and)h(dragging)f(the)g Fi(left)i
-Fm(\(primary\))f(mouse)f(b)n(utton)g(mo)o(v)o(es)f(the)h(image)h
-(around)496 2296 y(the)g(page)g(as)f(you)h(w)o(ould)f(e)o(xpect;)g(the)
-h(image)f(mo)o(v)o(es)f(with)h(the)h(mouse.)p Black 396
-2476 a Fl(\225)p Black 97 w Fm(Clicking)f(and)h(dragging)f(the)g
-Fi(middle)g Fm(mouse)h(b)n(utton)e(mo)o(v)o(es)g(the)i(image)f(around)h
-(the)496 2605 y(page)g(in)f(a)g(\002ner)h(f)o(ashion,)f(such)g(that)g
-(each)h(pix)o(el)f(of)g(mouse)g(mo)o(v)o(ement)e(mo)o(v)o(es)h(the)h
-(image)496 2735 y(by)g(one)h(point)f(\(1/72)g(inch\).)h(This)f(allo)n
-(ws)f(v)o(ery)i(\002ne)g(placement)f(of)h(the)g(image)f(on)h(the)496
-2864 y(page.)p Black 396 3043 a Fl(\225)p Black 97 w
-Fm(Clicking)f(and)h(dragging)f(the)g Fi(right)i Fm(\(secondary\))f
-(mouse)f(b)n(utton)g(mo)o(v)o(es)f(the)h(image)496 3173
-y(around)g(the)h(page)g(much)f(the)h(same)g(as)g(with)f(the)g(left)h(b)
-n(utton,)e(b)n(ut)i(the)f(image)h(will)f(only)496 3302
-y(mo)o(v)o(e)f(in)i(units)e(of)i(the)g(image)f(size.)h(Thus,)f(if)h
-(the)f(image)h(is)f(one)h(inch)f(wide)h(and)g(tw)o(o)496
-3432 y(inches)f(tall,)g(the)h(image)g(will)e(not)i(mo)o(v)o(e)e(at)i
-(all)f(until)g(you)g(ha)n(v)o(e)h(mo)o(v)o(ed)e(the)i(mouse)f(f)o(ar)
-496 3561 y(enough)g(so)h(that)f(the)h(image)f(w)o(ould)g(be)h(mo)o(v)o
-(ed)e(one)i(inch)f(v)o(ertically)g(and)h(tw)o(o)f(inches)496
-3691 y(horizontally)-6 b(.)23 b(This)h(is)g(handy)h(if)f(you)h(wish)f
-(to)g(print)g(multiple)f(images)h(of)h(the)g(same)g(size)496
-3820 y(on)f(one)h(piece)g(of)g(paper)-5 b(.)p Black 396
-4000 a Fl(\225)p Black 97 w Fm(If)25 b(you)f(hold)g(do)n(wn)g(the)h
-Fi(shift)g Fm(k)o(e)o(y)g(on)f(the)h(k)o(e)o(yboard)f(when)h(you)f
-(click)g(and)h(drag)g(the)496 4129 y(mouse,)f(the)g(image)h(will)f
-(only)g(mo)o(v)o(e)f(in)i(the)f(horizontal)g(or)h(v)o(ertical)f
-(direction)496 4259 y(\(depending)g(upon)g(which)h(w)o(ay)f(you)h
-(\002rst)g(mo)o(v)o(e)e(the)i(mouse\).)f(This)g(allo)n(ws)f(you)i(to)
-496 4388 y(constrain)f(motion)f(to)i(the)f(horizontal)g(or)h(v)o
-(ertical.)p Black 396 4568 a Fl(\225)p Black 97 w Fm(If)g(you)f(click)h
-(another)g(b)n(utton)e(while)h(dragging)h(the)f(mouse,)g(the)h(image)f
-(will)496 4697 y(immediately)f(return)i(to)f(the)h(position)e(it)h(w)o
-(as)h(in)f(before)i(you)e(click)o(ed)h(the)f(mouse)g(the)h(\002rst)496
-4827 y(time.)f(This)g(allo)n(ws)f(you)i(to)f(not)g(mo)o(v)o(e)g(the)g
-(image)h(if)g(you)f(ha)n(v)o(e)g(started)h(mo)o(ving)e(it)h(and)496
-4956 y(ha)n(v)o(e)g(decided)h(that)f(you)h(don')n(t)f(w)o(ant)h(to)f
-(mo)o(v)o(e)g(it.)g(The)h(pre)n(vie)n(w)e(will)h(not)h(respond)f(to)g
-(the)496 5086 y(mouse)g(until)g(you)g(release)h(all)g(of)g(the)f(mouse)
-g(b)n(uttons)g(and)h(click)f(and)h(drag)g(afresh.)p Black
-3645 5692 a Fi(10)p Black eop
-%%Page: 11 20
-11 19 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black -2 601 a Fe(2.2.3.)39
-b(P)-6 b(osition)396 945 y Fd(2.2.3.1.)36 b(Orientation)396
-1135 y Fm(The)25 b(Orientation)f(menu)g(allo)n(ws)g(the)g(user)h(to)g
-(choose)f(the)h(orientation)e(of)i(the)g(paper)-5 b(.)24
-b(The)396 1264 y(menu)h(selections)e(are)j Fg(A)m(uto)p
-Fm(,)g Fg(P)-5 b(or)t(tr)o(ait)p Fm(,)26 b Fg(Landscape)p
-Fm(,)h Fg(Upside)h(do)o(wn)p Fm(,)e(and)f Fg(Seascape)p
-Fm(.)396 1394 y(Click)g(on)g(the)f(rectangular)h(tab)g(to)f(see)h
-(these)g(choices)g(and)g(mak)o(e)f(your)h(selection.)f(When)396
-1523 y(you)h(ha)n(v)o(e)f(done)h(so,)f(the)h(pulldo)n(wn)e(menu)h(will)
-g(ha)n(v)o(e)g(disappeared,)h(and)g(your)f(choice)h(will)396
-1653 y(appear)-5 b(.)25 b(Also,)f(note)h(that)f(the)h(pre)n(vie)n(w)e
-(image)i(will)f(ha)n(v)o(e)g(changed)h(accordingly)-6
-b(.)396 1832 y(When)25 b(set)g(to)f Fg(A)m(uto)p Fm(,)i(the)e(softw)o
-(are)h(will)f(mak)o(e)h(an)g(intelligent)e(choice)i(of)g(orientation)e
-(based)396 1961 y(on)i(the)f(dimensions)f(of)i(the)g(image)f(to)h(be)g
-(printed.)f Fg(P)-5 b(or)t(tr)o(ait)26 b Fm(orients)e(the)g(print)g
-(media)h(with)396 2091 y(the)f(longest)g(edge)g(going)g(from)g(top)f
-(to)h(bottom,)f(while)h Fg(Landscape)j Fm(orients)c(the)h(paper)h(with)
-396 2220 y(the)g(longest)f(edge)h(going)e(from)i(side)f(to)h(side.)f
-Fg(Upside)29 b(do)o(wn)c Fm(and)g Fg(Seascape)i Fm(orient)d(the)396
-2350 y(paper)h(the)g(same)g(as)g Fg(P)-5 b(or)t(tr)o(ait)26
-b Fm(and)e Fg(Landscape)k Fm(respecti)n(v)o(ely)-6 b(,)22
-b(with)i(the)h(dif)n(ference)g(being)396 2480 y(that)g(the)f(image)h
-(is)f(rotated)h(180)f(de)o(grees.)396 2884 y Fd(2.2.3.2.)36
-b(A)l(utomatic)f(Centering)396 3073 y Fm(There)25 b(are)h(three)f(b)n
-(uttons)e(that)i(deal)g(with)f(centering)g(an)h(image.)g(The)f
-(leftmost)g(b)n(utton)f(is)i(the)396 3203 y Fg(V)-8 b(er)t(tically)26
-b Fm(b)n(utton,)e(the)g(middle)g(b)n(utton)g(is)g(the)h
-Fg(Both)g Fm(b)n(utton,)f(and)h(the)f(rightmost)f(b)n(utton)h(is)396
-3332 y(the)g Fg(Hor)q(iz)o(ontally)h Fm(b)n(utton.)e(Use)h(the)g
-Fg(Both)h Fm(b)n(utton)d(to)i(center)g(your)g(image)g(both)f
-(horizontally)396 3462 y(and)i(v)o(ertically)-6 b(.)23
-b(This)h(will)g(cause)h(the)g(top)f(and)h(bottom)e(borders)i(to)f(be)h
-(equal,)g(and)g(the)f(left)396 3591 y(and)h(right)f(borders)h(to)f(be)h
-(equal.)g(If)g(you)f(ha)n(v)o(e)h(placed)g(your)f(image)h(manually)e
-(by)i(using)f(the)396 3721 y(mouse)g(b)n(utton,)g(then)g(you)h(may)f
-(center)h(the)g(image)f(in)h(the)f(horizontal)g(direction)g(only)g(by)
-396 3850 y(clicking)g(on)h(the)f Fg(Hor)q(iz)o(ontally)j
-Fm(b)n(utton.)c(Lik)o(e)n(wise,)h(to)g(adjust)g(the)h(image)f(only)g
-(in)g(the)396 3980 y(v)o(ertical)g(direction,)g(click)h(on)f(the)h
-Fg(V)-8 b(er)t(tically)26 b Fm(b)n(utton.)d(Note)i(that)f(in)g(each)i
-(case,)f(the)g(image)f(is)396 4109 y(centered)i(with)e(re)o(gard)g(to)g
-(the)h(edges)g(of)g(the)f(media,)h(and)f(without)g(re)o(gard)g(to)h
-(the)f(printable)396 4239 y(portion)g(of)h(the)g(media.)f(Man)o(y)g
-(printers)g(are)h(incapable)g(of)g(printing)e(to)i(each)g(edge)g(of)g
-(the)396 4368 y(media.)g(Some)f(media)h(may)f(ha)n(v)o(e)h(edges)g
-(which)f(detach.)h(Consult)f(your)g(printer)396 4498
-y(documentation)f(for)i(more)g(details)f(re)o(garding)g(your)g
-(printer')-5 b(s)24 b(capabilities)g(in)g(this)g(re)o(gard.)396
-4902 y Fd(2.2.3.3.)36 b(Man)o(ual)e(Settings)396 5092
-y Fm(Y)-11 b(ou)25 b(will)f(notice)g(that)g(there)h(are)h(six)e(box)o
-(es)g(that)g(contain)h(numbers)f(just)f(belo)n(w)h(the)396
-5221 y(Orientation)g(menu)g(and)h(just)f(abo)o(v)o(e)g(the)g(GUI)h(b)n
-(uttons)f(related)h(to)f(centering)h(an)g(image.)p Black
-3645 5692 a Fi(11)p Black eop
-%%Page: 12 21
-12 20 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black 396 579 a Fm(When)h(you)f(mo)o
-(v)o(e)g(the)g(pre)n(vie)n(w)g(image)h(manually)e(with)h(the)h(mouse,)f
-(or)h(when)f(you)h(click)f(on)396 708 y(one)h(of)g(the)g(centering)f(b)
-n(uttons,)f(the)i(pre)n(vie)n(w)f(image)g(mo)o(v)o(es)f(and)i(these)g
-(six)f(box)o(es)g(get)396 838 y(updated.)396 1142 y Fn(2.2.3.3.1.)k
-(Left)396 1321 y Fm(The)d(number)f(appearing)h(in)f(the)h
-Fg(Left)g Fm(box)g(denotes)f(the)g(number)h(of)g(units)e(\(cm)i(or)g
-(inches\))396 1451 y(that)g(the)f(left)h(side)f(of)h(the)g(image)f
-(will)g(be)h(printed)f(a)o(w)o(ay)h(from)g(the)f(left)h(edge)g(of)g
-(the)f(media.)396 1580 y(Y)-11 b(ou)24 b(may)f(select)h(the)g(units)f
-(by)g(clicking)g(the)h Fg(Inch)g Fm(or)g Fg(cm)g Fm(b)n(uttons)e(in)i
-(the)f Fg(Units)h Fm(section)f(just)396 1710 y(belo)n(w)h(these)h(GUI)g
-(box)o(es.)396 2088 y Fn(2.2.3.3.2.)j(Right)396 2268
-y Fm(The)d(number)f(appearing)h(in)f(the)h Fg(Right)h
-Fm(box)e(denotes)g(the)h(number)f(of)h(units)f(\(cm)g(or)h(inches\))396
-2397 y(that)g(the)f(right)g(side)h(of)g(the)f(image)h(will)f(be)h
-(printed)f(a)o(w)o(ay)g(from)h(the)g(left)f(edge)h(of)g(the)g(media.)
-396 2527 y(Y)-11 b(ou)24 b(may)f(select)h(the)g(units)f(by)g(clicking)g
-(the)h Fg(Inch)g Fm(or)g Fg(cm)g Fm(b)n(uttons)e(in)i(the)f
-Fg(Units)h Fm(section)f(just)396 2656 y(belo)n(w)h(these)h(GUI)g(box)o
-(es.)396 3035 y Fn(2.2.3.3.3.)j(Right)g(Bor)n(der)396
-3214 y Fm(The)d(number)f(appearing)h(in)f(the)h Fg(Right)j(Border)f
-Fm(box)e(denotes)f(the)h(number)f(of)h(units)e(\(cm)i(or)396
-3344 y(inches\))g(that)f(the)h(right)f(side)g(of)h(the)g(image)f(will)g
-(be)h(printed)f(a)o(w)o(ay)h(from)g(the)f(right)g(edge)h(of)396
-3473 y(the)g(media.)f(Y)-11 b(ou)25 b(may)f(select)h(the)g(units)e(by)i
-(clicking)f(the)g Fg(Inch)i Fm(or)e Fg(cm)h Fm(b)n(uttons)e(in)i(the)g
-Fg(Units)396 3603 y Fm(section)f(just)g(belo)n(w)g(these)h(GUI)g(box)o
-(es.)396 3981 y Fn(2.2.3.3.4.)j(T)-8 b(op)396 4160 y
-Fm(The)25 b(number)f(appearing)h(in)f(the)h Fg(T)-12
-b(op)26 b Fm(box)e(denotes)g(the)h(number)f(of)h(units)f(\(cm)h(or)g
-(inches\))396 4290 y(that)g(the)f(top)g(side)h(of)g(the)f(image)h(will)
-f(be)h(printed)f(a)o(w)o(ay)g(from)h(the)g(top)f(edge)h(of)g(the)f
-(media.)396 4420 y(Y)-11 b(ou)24 b(may)f(select)h(the)g(units)f(by)g
-(clicking)g(the)h Fg(Inch)g Fm(or)g Fg(cm)g Fm(b)n(uttons)e(in)i(the)f
-Fg(Units)h Fm(section)f(just)396 4549 y(belo)n(w)h(these)h(GUI)g(box)o
-(es.)396 4928 y Fn(2.2.3.3.5.)j(Bottom)396 5107 y Fm(The)d(number)f
-(appearing)h(in)f(the)h Fg(Bottom)h Fm(box)e(denotes)g(the)h(number)f
-(of)h(units)f(\(cm)h(or)396 5236 y(inches\))g(that)f(the)h(bottom)e
-(side)i(of)f(the)h(image)f(will)g(be)h(printed)f(a)o(w)o(ay)h(from)g
-(the)f(top)h(edge)g(of)p Black 3645 5692 a Fi(12)p Black
-eop
-%%Page: 13 22
-13 21 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black 396 579 a Fm(the)h(media.)f(Y)
--11 b(ou)25 b(may)f(select)h(the)g(units)e(by)i(clicking)f(the)g
-Fg(Inch)i Fm(or)e Fg(cm)h Fm(b)n(uttons)e(in)i(the)g
-Fg(Units)396 708 y Fm(section)f(just)g(belo)n(w)g(these)h(GUI)g(box)o
-(es.)396 1087 y Fn(2.2.3.3.6.)j(Bottom)g(Bor)n(der)396
-1266 y Fm(The)d(number)f(appearing)h(in)f(the)h Fg(Bottom)j(Border)f
-Fm(box)e(denotes)f(the)h(number)f(of)h(units)e(\(cm)396
-1396 y(or)i(inches\))g(that)f(the)h(bottom)e(side)h(of)h(the)g(image)f
-(will)g(be)h(printed)f(a)o(w)o(ay)h(from)g(the)f(bottom)396
-1525 y(edge)h(of)g(the)g(media.)f(Y)-11 b(ou)25 b(may)f(select)h(the)f
-(units)g(by)h(clicking)f(the)g Fg(Inch)h Fm(or)g Fg(cm)g
-Fm(b)n(uttons)e(in)396 1655 y(the)i Fg(Units)g Fm(section)f(just)g
-(belo)n(w)g(these)g(GUI)h(box)o(es.)-2 2298 y Fe(2.2.4.)39
-b(Siz)q(e)396 2642 y Fd(2.2.4.1.)d(Slider)e(Bar)f(and)h(Spin)f(Bo)l(x)
-396 2832 y Fm(The)25 b(slider)f(bar)h(can)h(be)f(mo)o(v)o(ed)e(as)i
-(desired)f(by)h(the)f(user)-5 b(.)25 b(Notice)f(that)h(while)f(sliding)
-f(this)396 2961 y(bar)l(,)i(the)f(pre)n(vie)n(w)g(image)g(changes)h
-(accordingly)-6 b(.)23 b(One)i(will)e(also)h(note)g(that)g(se)n(v)o
-(eral)g(box)o(es)g(in)396 3091 y(the)h(Gimp-Print)f(GUI)h(change)g(v)n
-(alues)f(when)g(this)g(bar)h(is)g(mo)o(v)o(ed.)e(These)i(box)o(es)e
-(are)j(the)f(six)396 3220 y(position)e(box)o(es)h(\(left,)h(right,)f
-(right)g(border)l(,)h(top,)f(bottom,)f(bottom)g(border\),)i(the)g(tw)o
-(o)f(size)396 3350 y(box)o(es)g(\(width)g(and)h(height\),)f(and)h(the)f
-(spin)g(box)h(to)f(the)h(right)f(of)h(the)f(slider)h(bar)-5
-b(.)396 3529 y(This)24 b(slider)h(bar)g(is)f(used)h(to)f(scale)h(the)g
-(image)f(to)h(a)g(desirable)f(size,)h(b)n(ut)f(the)h(same)f(ef)n(fect)i
-(can)396 3659 y(be)f(obtained)f(by)g(either)g(clicking)g(an)h(arro)n(w)
-f(on)g(the)h(spin)f(box)g(to)g(the)g(right)g(of)h(this)e(slider)h(bar)l
-(,)396 3788 y(or)h(by)g(manually)e(typing)h(a)h(number)f(into)g(this)g
-(spin)g(box.)g(Notice)h(that)f(by)h(setting)e(the)i(spin)396
-3918 y(box)g(in)f(this)g(w)o(ay)-6 b(,)24 b(the)h(slider)f(bar)h(is)g
-(also)f(mo)o(v)o(ed.)f(All)h(of)h(the)g(described)f(methods)g(will)396
-4047 y(cause)h(the)g(image)f(to)h(be)g(scaled)g(accordingly)-6
-b(.)396 4452 y Fd(2.2.4.2.)36 b(Scale)f(b)n(y)e(P)l(er)n(cent)h(or)f
-(PPI)396 4641 y Fm(One)25 b(may)e(choose)h(to)g(scale)h(the)f(image)g
-(by)g(a)g(percentage,)h(or)f(by)g(PPI,)h(which)f(means)g(")p
-Fi(p)p Fm(ix)o(els)396 4770 y Fi(p)p Fm(er)h Fi(i)p Fm(nch".)f(Click)h
-(the)g(radio)f(b)n(utton)g(ne)o(xt)g(to)g(the)h(w)o(ord)g(to)f(set)h
-(the)f(desired)h(scaling)f(f)o(actor)-5 b(.)396 4950
-y(When)25 b(scaling)f(by)h(a)g(percentage,)g(the)g(number)f
-(re\003ected)i(in)e(the)h(spin)f(box)g(ne)o(xt)g(to)h(the)396
-5079 y(slider)g(bar)g(represents)f(the)h(percentage)g(relati)n(v)o(e)f
-(to)h(the)f(full)h(size)f(of)h(the)g(selected)g(print)396
-5209 y(medium.)f(F)o(or)g(e)o(xample,)g(with)g(this)g(spin)g(box)h(set)
-f(to)h(50,)f(the)h(image)f(will)g(be)h(scaled)g(to)f(50\045)p
-Black 3645 5692 a Fi(13)p Black eop
-%%Page: 14 23
-14 22 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black 396 579 a Fm(of)h(the)g(size)g
-(of)g(the)f(print)g(medium.)g(When)g(set)h(to)f(100,)h(the)f(image)h
-(will)f(attempt)f(to)i(\002ll)g(the)396 708 y(print)f(medium,)g(within)
-f(the)i(constraints)f(of)g(maintaining)f(the)i(proper)g(aspect)g(ratio)
-f(and)h(the)396 838 y(mar)n(gins)f(of)h(the)g(selected)g(print)f
-(medium.)f(This)h(ef)n(fect)h(can)h(be)f(seen)f(in)h(the)g(pre)n(vie)n
-(w)396 967 y(windo)n(w)-6 b(.)396 1147 y(When)25 b(scaling)f(by)h(PPI,)
-h(the)e(number)g(re\003ected)i(in)f(the)f(spin)g(box)h(ne)o(xt)f(to)g
-(the)h(slider)f(bar)396 1276 y(represents)h(the)g(number)f(of)h(pix)o
-(els)e(that)i(will)f(be)g(printed)h(per)g(inch.)f(F)o(or)h(e)o(xample,)
-f(if)h(the)396 1406 y(user)g(is)g(printing)e(a)i(640x480)f(image)g(at)h
-(a)g(size)g(of)g(6.4x4.8)f(inches)g(\(as)h(measured)g(by)f(the)396
-1535 y(size)h(box)o(es\),)f(the)h(image)f(will)g(be)h(printed)f(at)h
-(100)f(DPI.)396 1940 y Fd(2.2.4.3.)36 b(Use)f(Original)f(Ima)o(g)q(e)h
-(Siz)q(e)396 2129 y Fm(By)25 b(clicking)f(this)g(b)n(utton,)g(the)g
-(image)h(will)f(be)h(scaled)f(to)h(as)g(close)f(to)h(the)f(nati)n(v)o
-(e)g(size)h(of)g(the)396 2259 y(image)g(as)g(possible.)e(This)h(ef)n
-(fect)h(can)g(immediately)e(be)i(seen)g(in)g(the)f(pre)n(vie)n(w)g
-(image.)396 2438 y(The)h(nati)n(v)o(e)e(image)i(size)g(may)f(be)h
-(found)f(or)h(set)g(in)f(the)h(GIMP)g(by)g(selecting)f
-Fg(Image/Scale)396 2567 y(Image)i Fm(in)e(the)h(GIMP)-11
-b(.)25 b(Under)g(the)f Fg(Pr)q(int)29 b(Siz)o(e)f(and)h(Displa)m(y)g
-(Unit)c Fm(group)f(in)g(the)h Fg(Scale)396 2697 y(Image)h
-Fm(dialog,)e(you)g(can)h(determine)g(\(or)g(change\))g(the)g(width)f
-(and)g(height)g(of)h(the)g(image,)f(or)396 2826 y(choose)h(the)f
-(resolution.)396 3231 y Fd(2.2.4.4.)36 b(Width)e(and)f(Height)396
-3420 y Fm(These)25 b(box)o(es)f(sho)n(w)g(the)g(size)h(of)g(the)g
-(printed)f(image)g(in)h(either)f(inches)h(or)g(centimeters)396
-3550 y(\(depending)f(on)h(which)f(unit)g(is)h(selected\).)f(The)h(user)
-g(may)g(choose)f(to)h(manually)e(modify)396 3679 y(these)i(v)n(alues.)f
-(When)h(one)f(v)n(alue)h(is)f(modi\002ed,)g(the)h(other)f(v)n(alue)g
-(is)h(automatically)e(modi\002ed)396 3809 y(in)i(order)g(to)f(maintain)
-g(the)g(aspect)h(ratio)g(\(the)g(ratio)f(of)h(width)f(to)g(height\).)g
-(This)g(ef)n(fect)i(can)f(be)396 3938 y(immediately)e(seen)i(in)g(the)f
-(pre)n(vie)n(w)g(image.)396 4343 y Fd(2.2.4.5.)36 b(Units)396
-4532 y Fm(The)25 b(units)f(can)h(be)g(set)f(to)h(inches)f(or)h
-(centimeters)f(by)h(clicking)f(the)h(appropriate)f(radio)396
-4662 y(b)n(utton)g(ne)o(xt)g(to)g(the)h(desired)f(unit.)g(This)g
-(setting)g(ef)n(fects)h(the)g(v)n(alues)e(printed)i(in)f(the)h(six)396
-4791 y(position)e(box)o(es)g(\(left,)i(right,)e(right)h(border)l(,)h
-(top,)e(bottom,)g(bottom)g(border\))i(and)f(the)g(tw)o(o)g(size)396
-4921 y(box)o(es)g(\(width)g(and)h(height\).)p Black 3645
-5692 a Fi(14)p Black eop
-%%Page: 15 24
-15 23 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black -2 601 a Fe(2.2.5.)39
-b(Ima)o(g)q(e/Output)d(Settings)396 802 y Fm(By)25 b(clicking)f(on)h
-(the)g(tab)f(labeled)h Fg(Image/Output)j(Settings)p Fm(,)e(the)f
-(Gimp-Print)e(windo)n(w)396 931 y(will)h(appear)i(as)e(sho)n(wn)g(in)p
-0 TeXcolorgray 24 w(Figure)h(2-4)p Black(.)g(Notice)g(that)f(there)h
-(are)h(tw)o(o)e(sections)g(to)g(this)g(portion)396 1061
-y(of)h(the)g(windo)n(w)-6 b(,)23 b(namely)-6 b(,)23 b
-Fg(Image)29 b(T)-12 b(ype)25 b Fm(and)g Fg(Output)j(T)-12
-b(ype)p Fm(.)396 1406 y Fd(2.2.5.1.)36 b(Ima)o(g)q(e)f(T)-7
-b(ype)396 1709 y Fn(2.2.5.1.1.)28 b(Line)g(Ar)r(t)396
-1889 y Fm(This)c(setting)g(tells)g(the)h(printer)f(dri)n(v)o(er)g(to)g
-(generate)i(color)e(quickly)-6 b(.)23 b(The)i(color)g(is)f(bold)g(and)
-396 2018 y(bright,)g(b)n(ut)g(color)h(accurac)o(y)g(is)g(not)f(v)o(ery)
-g(good.)g(There)i(may)e(also)h(be)f(some)h(une)o(xpectedly)396
-2148 y(sharp)g(transitions)e(in)h(colors.)h(This)f(mode)g(is)g
-(acceptable)i(for)f(printing)e(te)o(xt)h(with)g(small)396
-2277 y(amounts)g(of)h(color)l(,)f(and)h(may)f(be)h(acceptable)h(for)f
-(presentation)f(graphics.)396 2656 y Fn(2.2.5.1.2.)k(Solid)g(Color)o(s)
-396 2835 y Fm(This)c(mode)h(produces)f(color)h(which)f(is)h
-(considerably)f(more)g(accurate)i(than)e(the)h Fg(Line)k(Ar)t(t)396
-2965 y Fm(mode,)24 b(b)n(ut)h(with)f(a)h(reduction)f(in)g(performance.)
-i(In)f(general,)g(hues)f(will)g(be)h(accurate)h(b)n(ut)396
-3094 y(tonalities)d(may)i(not)f(be)h(accurate.)h(There)f(should)f(be)h
-(no)f(sharp)h(transitions)e(in)h(colors.)h(This)396 3224
-y(mode)g(is)f(good)g(for)h(printing)f(presentation)f(graphics)i(in)f
-(most)g(cases.)396 3602 y Fn(2.2.5.1.3.)k(Photograph)396
-3782 y Fm(This)c(mode)h(produces)f(the)h(most)e(accurate)j(colors)f
-(and)f(tonalities)g(at)g(a)i(greater)f(cost)f(in)396
-3911 y(performance.)h(This)g(is)f(the)h(mode)f(to)g(use)h(when)g
-(printing)e(high)h(quality)g(photographs)f(or)396 4041
-y(other)i(high)f(quality)g(images.)396 4545 y Fd(2.2.5.2.)36
-b(Output)d(T)-7 b(ype)396 4734 y Fm(The)25 b(user)g(is)f(gi)n(v)o(en)g
-(the)g(choice)h(of)g(color)l(,)g(black)f(and)h(white,)f(and)h
-(grayscale.)g(Color)g(is)396 4864 y(selected)g(when)g(the)f(desired)h
-(output)f(is)g(to)g(be)h(in)g(color)-5 b(.)24 b(Gre)o(yscale)g(will)g
-(result)h(in)f(the)396 4993 y(printed)g(image)h(ha)n(ving)f(v)n(arious)
-g(shades)g(of)h(gre)o(y)-6 b(.)24 b(Black)h(and)g(white)f(is)h(just)e
-(that.)i(The)g(ef)n(fect)396 5123 y(of)g(this)f(setting)g(can)h(be)g
-(seen)g(in)f(the)h(pre)n(vie)n(w)f(windo)n(w)-6 b(.)p
-Black 3645 5692 a Fi(15)p Black eop
-%%Page: 16 25
-16 24 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black 396 583 a Fd(2.2.5.3.)36
-b(Adjust)e(Output)396 772 y Fm(Clicking)24 b(on)g(this)f(b)n(utton)h
-(causes)g(the)g Fg(Pr)q(int)29 b(Color)f(Adjust)d Fm(windo)n(w)e(to)h
-(appear)h(\(see)p 0 TeXcolorgray 25 w(Figure)396 902
-y(2-7)p Black(\).)g(In)g(this)f(windo)n(w)-6 b(,)23 b(one)h(will)g(see)
-h(a)h(representation)e(of)h(the)f(image)h(to)f(be)h(printed)f(as)h
-(well)396 1031 y(as)g(se)n(v)o(eral)f(slider)g(bars.)h(These)g(slider)f
-(bars)h(collecti)n(v)o(ely)e(adjust)h(man)o(y)g(dif)n(ferent)g(aspects)
-h(of)396 1161 y(the)g(image.)f(The)h(v)n(alues)f(can)h(also)g(be)g
-(adjusted)e(by)i(clicking)f(the)h(arro)n(ws)f(or)h(by)f(typing)g(a)396
-1290 y(v)n(alue)g(into)g(the)h(appropriate)g(spin)f(box)g(on)h(the)f
-(right)g(side)h(of)g(each)g(slider)f(bar)-5 b(.)396 1569
-y Fj(Figur)n(e)26 b(2-7.)e(The)i(Print)f(Color)g(Adjust)h(W)n(indo)o(w)
-396 3381 y
- currentpoint currentpoint translate 0.5 0.5 scale neg exch neg exch
-translate
- 396 3381 a @beginspecial 0 @llx 0 @lly 386
-@urx 406 @ury 3860 @rwi @setspecial
-%%BeginDocument: figures/gimp-print-print-color-adjust.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/gimp-print-print-color-adjust.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 386 406
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 386 406
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-387 407
-12.000000
-387 407
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-9a9a9a
-cdcdcd
-b7b7b7
-eeeeee
-808080
-547098
-7393c0
-424f63
-5a7191
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVP5]l*/WQ7eRT-)q602p8X?"hLmW'UhYj'lGd)!sbKnGlp-APE!2*VP9W)-aOg5P7;UfV.
-[;dDB];=3&C#C^K":0IOs7.[UdPK[;=##,u`CkCAl^bV<*koKnY57KnY57KnY57KnY57KnY57
-KnY57KnY57KnY5WAN:^%V^]>AQ1h8(jjOZVFbKqQ<`Q?Ok,ZqD\Y]W!>trB%]O0Wc5(72fQ_5
-RE&T++Cc11OM#sl=ZmV-*iX.Bm9REV_?hu=;0?kPtl3Y.D!!ZIS1F7&jGD%m<tc8DSLmVo*qn
-an]J:uE3f4"6Y:$k0YbR5s)&ocp8Oh%Mq;+G_)'DiOk;D+Cu3rf9=]0H-u_WC-nHTWRe@!&kh
-_OYZU"^juhC$ONE%l-Pe!NVg8)@5-t*=!<d+!OI%C#f0,s4m3q>X+`)dD86)q&/C8dGS8&I+V
-<#25M*<7aY+MKE(GG6IZ,^XFNbD5obsH44;iPd9-?WNhgfEK2:g,1:`,NEH=al'5gEAmW\bct
-=Co&5/sZ)s`p&S6TgTOZKIZOd4\^Q8)_XV1@26!5^is4??m$h.,"'m_"9OJRDIaBVbfdHPrt.
-eDY0N4ZND^MQU/sik1\?%F*hY+]6!UO%XDX]:^<5<Xlgkkq(E2E?)2eK6Yq`gF#l=A!?n6aP;
-UIHe7mL*@YqV';EuB#l-4FD2ejJ*HOOH,q-Z;uiA)m7FQ-5&lF^^PRY@qr.^CK">D;A2^1'A/
-U^fdbYj!`#1P_RJcVap;kj03[^jMkJAm]DmDY;R/_+8OJ)k.XK-l$=\aRN"1sD1d:?CFSkoU@
-%])";4Qm'V,J<JR">C7f%_29/.sQI51rcU?8U$0Hf"&D25W\hO4H:l%.".#\NSTdsZ;g!c3jH
-,)'Bg(S$^6.6Y:2?'#@j1o9Mi"DYu.4f5PK5mb6%o@>+EH'j!#<G9*0Ei"D,dNL^EI9U&\%oq
-9gmD+q]Jg"5K0?7^8<!C,FPc[BBccU;%]+?dH^4B_sLDKPg9(.H_H\HJ;"H;eaCKE<Z4EYP*,
-cCWeNS.PQ;DSI!AK%KqNf];/UJ'$PhOeD:l6e(I-iG<[::$pas3](;TUFd/)<!p$/Qi8UL$k?
-NqIM9UM-`%a!*rcC'-m'H-@*"b!='po"c$T@@sK+5.p.f(9[pVP#nU[.01h=;=TWR3F9"Zf8_
-KBbDI*C4P/%Z:#TID9[9#0(6RPT:Ah;!aYVI#2"j?!EF`A*!*MYMk[,sr&iS14K%:'mY^0^El
-e7O>>42M#.E$8cgIJb?^J!s'C0UdA9N6qnE7\"`@Lo7)[N\BKYfa<fQSOF2,B4Bu]bDajjRls
-qF@U+,R=*M#gV-8[+7\is<R2M:&^r7DuK/'UgHi!?XHE:E_ODH`ZM@N_..*^$aEB"GE,%LoD/
-28^[VfLSH<-7Q8^Zl*X7&Y"f3K#W,m%J.OBf#>%RAlU,);(;dPg080g[G.Jj?,hA&>^_Z>06Y
-P"MJO$[!lV-#%[Y3:-X/.&/\D/mJBrOoZ(o68<cf^9$+g[i,IY=gT_>7munJ/4q"e#,KPYg3(
-cjiYjT)%'T%;\od-u7Q\`p22_?&PAZ^>Y#F*pOF\5)romSHU0V$'+"GIrUH4VG8&9=I]mjQKf
-!$Pn$cYUKV.Is5#pO<;Ya3eH<b,-_?,O.Y(e%Q_pAE?I!2U%s25'0rhRVLt)BHV$Sk,)!a9VW:
-%-jtoG*8RG@*iV!+U!?T*igdAU68#C2Pt7fH9dd5ARCE.oO$LQR'TFaJl_Ss*/4cddq;Y"?7O
-n//d8aM<3YSf^Q&nrdpbM;P=[K0c"qi,HjJnC&C\7(&rs4_IIfABRc[Xg-I.$q&T1'=dAh'^#
-oq1TOW<joJ>d,H)S4/RO*!cLcKeL/5`.DkN-`X6HT.c??K9o'A"@+pl1eM+?k9[Y_kte??@H3
-PY8`T?sJ,Y!sYP?/oc/%2OJ)]Y_S[:fi3MJ/ij+sQqEb>B4__EE)0F4GHBho#*.qhHF7S9.@C
-gmNq8N7moUiV3B]URpk@$,u9P!'e#?i:UrDuT2irk+*UrqOO+T>07=h#WAY7:<`N[1sfQSXR[
-a1+73u!"be[$R9BXDj-nNTa9BlAbG]!XUn14REh0PRkVbe>nUb*'jVa.=k`]Kf?aK[mV;q5q"
-*Y>h<2C7rk,cL!Y`E/[4DHK8hs,)a5%.)]C#?B">YP_LrZeGRMNjnUMdFUAN#`TbrNB5h\Bd-
-2mn:/,1HK=8.gp5q';QMkp=4;pu_225B!?g"tc`2*$`mE1iobATI>H$hu=9Z(_MNI=S33=(b;
-QWO8W)1hmGZ6::"N1\AHHa<)R:X:nAI`23VR6V<V<Zj@I`JZ*Tb,/]%$PrU@-I?+N_8,D*iW>
-Z'j8KILJ@"Z4)]eK!A"(8f0\F"b*_"f(ghmp)?>SY<=5$X^N3LFFQd/:b3&a9j?jbFi65Zm6\
-i(b4:5d),%gbRhZ(6+$[mGmdJ"`7u12.98FkA*,CV_Lg]Xn#`^Rb3'5I`?+-iSuJ@Z,@j3l/<
-Z/8'I<2o*+$JhW\6L?6_;Q'q-6i76!$u'hGfr#>i8YLGr_cMIIZKD1)!Z>FQ;6q7G[.0E]8P=
-<SX*V%a+-rBkM)"LeJDJ8^<,_ic#H`'BsO8dSVqHh&.`AoZqT'+QP[BV:.jk3^m(1lbVK-+>,
-MY"Mgg+#oL7<[?d&n;R\tdAhXHi$D]g5$"R&t2CZo0Lq5G3,8+.b,D,P&_QaI5Ai3JO18/A48
-?3TE#mNDT"4W(V!'tg'Tk54D<-(VQ'f::Qr)I'<TnH5u1'EgMQ(=/e=d>+:le6;_.]$qk9J%H
-C@(As#K2<kbNgYj5%>:h2N>qV+DV,_;6GaWpE60Xfl$Ot]Gr::3!AHM6ke^CIV6GD?PmUT\Q2
-\FS$<ecV?(0k)l0#_t?7V4nj9ESD3L^Fe'pSC`4]It"Nk=/l%9S?0*^b?U,6N!17oYo7>ZRRX
-8(+B7).9+f/@&MXlC[ANQcjb=f-[>$8nAtSeS#,!6mPe,<$a<g3:_ss'V]1Z;O_drVU#+N'W>
-Y^%.D.\TJX\YSkBpTd>e9/fc1f>68csUQrM)Jj@G8<"#Do!%`_%\3U0DADg1b@rfA#GKZn.B*
-]]=iNiK!m19!u>m:m+i9kHrKH>OB`>trZ2=e.<(=g(g'IVG=D.QAk'RJ0/qC(\]As1q1K>Z-Q
->>UE*C6>I*F$@&@qUq,Cd?W4lDBp]XGS"A6oS'5EW>(tF!0H3.4RHRWr/n1^NOX>';6rN:KVa
-?3s=,t?B<L+[OWmtfCO5*D2)b,_o%!=o07nQKF'/c2rUX<U?-qT#H.^)um/]\'.Bu[kd,?VeN
-1I.$<C^#o,Dq`h7-5MMO$Ft%]Y9%[O'MET]Q4IDf*:m[1Q8J@^6u&ukUNdCb2R/,S;2o2;X&_
-#3LJi<J$:ph=Zf]?SR.[mE?NWQ:n7Cp]R7*ug''b@bA[nXt1"@[4QR0Qa<a[INAqX:@n,E[3Y
-%h.lDP]9cU"\#n(\_&#5#Ctbg9@HG$T7EY<$;)k&9%uuF2tKd6T<E>cYR?@EJ>Xg,n;.hmYk8
-DB)Kr#:9R[bY8js:7_Ps772+,$9]h6jYZftU1)lQkae]j]/Z"u,*d&PB;"!ls7+h]7&7gB2o&
-o_.;PT1_!sg6+&KFJNa+Gt]dAn7fJLE18rb+>;ZS9i3%)HsuMQ_:_l]k*>brR-p?ti-%e#Sj?
-U/K(Ecs;fGID]-^>SUDgA>2O,K\RDg7t&pkc)GIkf+ONj/>[8'V.9`q=isn%n,E[3!8p4'>u`
-Nde$bc]Amsu8(q[T3[jYDYU0HBWE\rgA9.]En,t+u0dAQcgjAYDk+CkYDiQ#T:aD[JL:#VHfM
-EN[E'=53DB9n/Foc.'s/SSiJrUm-E^M9(l]>\BB#jc1"ICmMIXhueVfsM,B'Fn%k$ciZqaUhQ
-)n9m^Z4O^lGMTcWWc/O!sD^HH@f91IIckgT9R;UXlAsTMApps$k]*q;1W@`e,',uTt2>Y_OBS
-e8c6NAj4Ir6*(Pn.FtT?&?99pSLf@`p'a`2L$>G<i'<oP6s7[sVOiYOs1'orPHe4U[&(E.kR&
-oi)24?*]5l7cBj\5Z2?Q\`BP$e-.?F(!gD^F"l9P'$XKiaEg\V<_8_S3T=kWHGcCp1\[qMI#Y
-IQiBi6NE!Y*lBi^QkWgjgNm!Z))pO<<T.-NJo:\0jUJu#+Y@f02'-Pb%'qben)OHoJ&S?[i]_
-[mb1XP7KWm^c_KBmS@._r5!VK8F;Q+G]5[f2YY6Y%0&UdYu$mkpD+mb#8"&=m8QDc:M@g\0YB
-nU)+*O0"R4E=cUKWGL9UGg^1U>QpUJYhN)6>KnJ><pFVLuRMHK\[KL.Bmmja\=FaL88"f3\g+
-FgYS!S-4\lm-`(+0LMK'Y*Lg1fCq$$Y/XhgX6,NP@Fn%Yc-u&pN`%9kbB,/(lB($6Yd\<ACga
-M;,\b?XZe"8`Woi2[aB%'tArk-4'Kd'.FkEgkJ8*O^tB-;_P?:V*Y=[ER`<KH%-mYL!2Om/=0
-sI%o&$V321+_k!lCW]B,?<Yd+bADDq&l^#li&"p@l:2(JdrdfarjYbug]Br28M4mK^m!QP6d1
-tQ;b6o+?C.Dj#4Bbkid/3oSqR]R9i/E[CEj^BR7RFQ@V3Jq`8-'ahdnU3BC.;XsIAO:Pq*":o
-@asSANrV2#4O[GlZ&R,:S(/RCP9`/YZQ^S\4+<)f(7AMJ&>u?lOM(Vd0+"i^o;H?aT`!F[lm[
-LQDJW^GV`CNWoD#69".qS+D^BfUm-U[Yc-2Y[hbj#7Nq6o2\&P15aD*sN\Y_%hD6F8$Ej[,14
-Q+AOF%!P@Nd"]QCO?%2U,g69g%tB`ZIj@W1\Y,<TWL_6hjKUS1Jf^3H6j'a!OP4s=998kb7:,
-Jd>Y@[]%K4Y,@q>VQs+!T``g4UM#7T*P+=ihr/;U*%ibV\p>XJ0%l,#q2@:D&*g+h`L,HJ`s&
-)3K<=rW8%VaIsOok?h+/`8KZ#qIEKofY;Z!eIpp8^ia$f+D*p[JfX'h/n>T4FePu?d2seE*6e
-:/g:X2eDkG6jZ8T.*O]f+-'=N(10cQ(N9nhOq5l2skqE6N"hgM(>\1M'/]]g%9Im:&<mG`tgi
-fppc;75R[*FVD9,r8RQb.;cH_np)_im@li$P@c.7!sW6<t_d&]"g#B'7rPDi2I\2r(LFAZ!*=
-K.pk&DXPk(R[';dGO7CrpIEJ#Hrn,Zo4C3WhsL\>WR:bIq1hQi_bUI</S.f?]JnZ0GXRh=5%+
-U24tUM,pG-Lp6MQg$H8GeBQ'X1V7*;B5YZt,Af"Kb:_Ni796@IUtd/F0>kQFrs:F474dfPT)i
-)g!DM&u?6Aj(0&8Muc):Ln$g:g8f1I11RYj9IEKatm4O9XQKq-tn0_.fC>Q+Tip_0&!>*/dJD
-&1K4%5T+"K-a\4&[R3<bcZ63UYg[G.JKRC7sDbkt"/rf"7iFc0M,<\Y\m7`'tAJT]p.\B_<Es
-f,_KJVoZ-%826e!+SN2t6.$*4qK2Y&!+Gcl3Jkg%7d'<?EcLW5NKU'FR=TOA$;JPLQQaM>0m/
-TSW:jW^N6)h)&7W8kJn"r!pc!b.so)3m[_%BN=39OJH7TIVU^BWQknZ#S5m%E&*qYZ`n@/IB\
-<1MOYi_2B@qt,$NBM\)WbE:CM3Sq]'HuOIIO;W"l6dcs95A9Tb!#pnOY-WG]fUh":F/>/0`Ab
-&t0Ao7fUC3;--^g&O[d63[Tpa"AS\/'+OHXdJMFkEYL,l@-FiWsu+pflji2C$[p)]A&J(2+[,
-SZ$+%AqX:@_2[Fc:/.?5#<)'S3P3[]G`<*@X-:4nX.DK*4TiZAeX)d#/@ojdPIU,H'&=RL:DR
-uaHL&6<W(j[QM?H/mkZ3"mo>8B>F$o+:.*g2b:M;VQ6U0)M0MO"2USV7U_g8/ciKe@J"Msk$*
-?0V9A;.LLWoe^8lG=JX2$d?&%V^Te:g<YPHP\!>h-k%A>L9i.G4'BDg67=*BlK5RVRpU*:DQ^
-,d]"+NPT5\k"F+^)A9u!RikF;,8D41Z9K-If7MW,DOquq3YEm.:V6f=B9Io7CD"WQud-\IW!E
-2K]#0^^1F"7ckLkSLB0+LHu=78l*9Tga;!'5@@/k-l:]_LDH,6`BoTVs2q[KW!cH5N+0SlH5g
-^Ia]HK(0%G)f&^:!4AiW_.5YgVB%3W/`UO24/BJ64*Z*ZNKpIOtY6kt@UdXfqAUhFk^u[Jf^:
-U96oT^%]^]$iLJ%YnQl-6W`s%i80/.(KicI[usbohcqJq;:_*0)A'W%9-d-*NJqdNp39[,WtI
-VLfOJdhadLNRB#a\k]R[%FUa<qPmI`="+-t=[XB;hqTj.0R(G5l5&&L?p*([2d\Yl$@k\*>'E
-1'8P_)EoC*F<fU*.nJ@Zj2DVKX?7j+)mF;`S<56-<!qDY\CAC3_CWmhDcYUn#,+PG"@9bTQ3.
-\fn+JVKBQUkS#;(S0<]@"F(76jEjL<2[QTE?!^<L`NWu,UTE[88!H^17F0!2"RB7%.PPJGX!B
-E8s'Z^GjNUG9Q#;O""6_'d!_!^05/4#hfamHX0a@4h/s0D-UfN5"jR?aV*pa.gg4XqT`BleR)
-tAVc++u'ba1^h0VhFW-M#4)85_!>f*LI.2W1uT1g`ME=\5k`Qe0i'VoT[jU6)?&M?GUaA=du8
-l^uT/Fc*1m#7He$Q+@MIg.;?A\[j9/[1o1+aFQmU[Aq;oi0@251DM(=Tb&@jbD8e]KJ!ugUdH
-g;L4JEHHaK2%@R1KBJ+FVB'K?_&7UJS3mA*gS`?He3o]g5T3`r2K77A0mV@,M'U#;_a`GK^>=
-,B?Uh%s82=-Y)i:^^gAWL[$cYQ8\-=(4j^dYS[K8.fHq`nn!G>+/SM]0p..qB_l<9f`l#IkmE
->V4GBS"N_sd^SRQBio[`..qM;nKoiL469pLD9lFrfDshLp[-6H;l704=L^XM9*g,\d2FB/8Om
-sibTJAlW`o3;J;YjW4B*E!a1EItElFP+0Ria*r9Mod%X3!PTrJC1(e8Y)IHOaN$"dK72#V3t*
-M28+tW[hb6g+BG3Oh;RWd`)?p6*)8r&:J(WLXL?S(Q$PV93TQ!.OmruPo-udTsldB3Z4_4K%g
-#=r[#7<DI?05^.-1/AXj9,:JOBm\YaeQjCgsZl<F\MR'%"5B/RWO(A-OVQ*ae$]?nl@Hteu:G
-.0^-8PJQ9C$[bRp(Kob&!gnkaJdfNF(d_C%jNY6b`NZ8BQ#ac)KfcITU+Ypr/.V,k)O0";lUm
-;hi,R(VsM2tFNb4GA]Lq56`Ju^G-ICRk(J9<Q),g0qfQQ+G96ut]@n0u+#PciKFP+TN)J`4Ou
-oM%04!8?T+U_e8B#=#q%S=QFiND$;]+Lq3!nV@i?Sot/#9lK5>C?(DSh6Y,2J:C-;lA9<0j>e
-9aGWM^C\k\&C]#pd8gMnWQ^<\A4O"3Q>lK5m5^Dh=hVc+Ct)m2m+QfmRPgk*hsq.X8iNZ-d(0
-o<B[MUGU"/(AqD3!*6G)>))1LY2<kn?BPpPf36<Bi3b(HLOLb&]WV9>]/P-dcc]O!an]5YCq-
-p0.EAoAlI-d1&;'YSgJK@TPhRJg*_m9M2f_HmpW2PNQlEi;3d>adsa+@sY&>+5FFFYBGT>aeI
-6atSW-3#%Wi[*:`b!,a/ZC&<q'.#F6_8Q2NcdO#5*+(hOnSa*^0@:G*sJ<-n^Hmf'q<(1Le>8
-g)A!^Q6JO`Y<\7F]D(?RBcei_0ek2%IMYI24]Nq?SK@"G1&QgFJm@"[,BTM;Q/**NEAo@PWpB
-"?.P+')jF#S*a"HGT9.%Nm5;j\8t5=A;mI]</UU>6?:iLrs49?ZhYS0G]kP5,7:to_Z@D3Kjk
-^H_iU7@dI:ss"r(N(M3:7-J9./>qg*TjTK%tq@h;Td,mA!r4$MunEXXeA0d??<Oa7>LEK!E-d
-9)qeE("E'Z5(`fRJGpW*j+rL;,d:D(g#aj;"65%_\]\(7QG0Dp`#G6KbNNABc<ZF9@!]JE(?3
-*^^(X6DHKJ@oT%]_57]!+&PaHq!d\i')+7pV"=qQ%3ROYipO<<4]+`iC5FhDXs6CBqpJ(pB$P
-ja?^i;=TS-";f68&u,M,FL77T#UBl/,Dfrc:=<aKPbsK(J$l'"9#(c<5bWU+kd;PaF.\a--Oo
-gY%*>;A`9`M'a]equ%Uf"Hp3qTkITSVC0kjo*3+I'qIcJn=V?:.gX09'OBDF)9-P\l$mdrV!$
--NH375jCSJX^)I:7q`0#Wj)GnpSE(NK)l&>$sku:]F4#1h78W$EC#l8DQs!*Un,q6A?7;762n
-4m?qK4056aPh]E+GD`"`rC1dd(qE+^j3s-JMkR]AJ(41\01pI0V7JhL>Rj/fpmbK%+_7'Hk2"
-1__Y6C+iJUQVhd"1.gd4!&STmIs$n32aoW!kLbbDj86.G6L1fVeU4X$sAI6>-nY4HiC_4UCUu
-t(hE("Y8#R-j8_A1l2\$olaj2pEXP4B["!bseo'IKk)4!55rCI;2n^nsLlk*9i]r?$Th#UA)K
-(Sm.$kWqs=LN*55%0&0*#37mgFePXU2F.p@#cK_B/no2frJ[4riW02b$J(H)6H=__:K7Ck5m.
-06W:3W>ad6YE1[8`%$4i9iMT[;oIY$nd.(C%gTdM[9@0N*3>/glM!"'`"BXJ[48iWl=%-B=<5
-GH<Y-Ffn\okb7.fCTr'0u`!*B\gT.jJ1Z6eq;cC/0=g1r7!\aR)CJt41Rn6[-dU;"JR5"XHDg
-=Pc,#4$G<_F9i`qbO&8*W6GdDUEH)!b<0>XQa6/fL+<Dd$dK_'s;32!S.8>dMm@eP1IV/X2Qt
-86CPEnRVDY,XiE-P7D%1t09=`b#I!3!?`rt.eDDA33!%UVua$PFUnTt9MSB3>3dL7bXA7HI0A
-"@sf'8ttN)7Gs!AIo"C/$S%1c!#N/@9$D_b"k;!F!N:LC*"/#9.LptE:W<uH#SV?MQ]b0\qu%
-UfTZe]<Lt$^7`[5FuAHjY5cb]uk_'aI:K]<FXNtq*352oFU`]RY(N:[St.>BX5^&`ejcUgYL@\
-%.B%PTHVZH3&BnTILgkp0:q+UU1]:.eYk=BJ[-=BJ[-=BJ[-=BJ[-=BJ[-=BJ[-=Pfa!H\Jj*
-^OHgjk.OlEHNh1O\+&89S*.O_SF6?Pf>djh59E5K2ZteChW'auh?sHM?(r&>rj?Zir9`qPp&=
-Wf]g1N1CHPgRAe<J4X0^P.hA1^`s5QI6ci?@?p>2tT5d42;7g6_@`qSl9&?I_Ufq6Mr%n#:,s
-5-HmnB;\OKtHLc$ZS]1fKS*G^)7%mpC@_L9$tt>^fC^oLVRt%39>)6ZVU2\I5;!V#lLM,mE`e
-FNWgpRhp_AOY:]dm&2Y9P$`1+[-Qo@MZHlk[JK]7g#WD]jm63m64!JnHHq/8h!mc5C&U@TB*$
-,1]>sRn:N+b!_1`9/M`p12?CN\q`&;%rKP&CH=>(6==FhrtZGfVSQ>7LYL'A\=/6gt/&<GAm/
-rN/HVp9M.Kd6@DKhKlX%>nHr.8!&-bcq9eq"3Gn,<du6;4ToR(YEW*:d%s)_^As1SD_EsLhrd
-R@()E57#kNjU(Zl=;0(62#BU]%@4<io"XWTTP*ms$:U=F/=&Tp^Z?!Y$I(L<SY"pC"%o[,qne
-i]](MY2.ah*2$\5S&/I"Q#X>Lj&+7F7WjVCncoGZSc6<3<Y,0O*h6:DpKZ^$%^Y,nfF:aFZcC
-Z%Dg557#s[=gn(Wd%Tb=$&GWFSYri*i(TZ0NmMUU8Kj^a&O!30;LtqMAJq<YU"Q$j8GQW9=>=
-,PI&rY@P4mP`7)Fmb^k2tIj+F%[Jcmp5PQUg[1q0iU@BG)9o">>jbnq[b^_%FjfnVEbI6/*(r
-jq3"aH*>KX%j]@DC0d2se@L$SW=epL,@Y(i@:<SQ@:@iQ0W2:#@8:P&nm6Z2D6lNr;p(WY'a2
-`0D0sFf0XG@J6M:Z#j"GO3&@BS/]r.1Yjo>rHVt><JW"7+u)V+KQ&:?GMb8rX>:I.hWnsE@%+
-+jH18tWJB%4'R5[POW[a>sIdfLBM.TEPVd4\V2Y"ckVeGC4pKi#N()k*1<:#'F50eTY).GgD.
-q3MipeLRl;P;ZBHNV2nlJ3Ml^ZE(V4a/osY`[bGmG8D\-gq?%%F8m<+oPdW4%?>9U,F%TS;=S
-=#a,ALMO8(>,_f=IVl"q^B^Qq+N8J9aP"\*75T.J:,u5Ol+I5k+Q&Ns:3eGXV5[baUo64JKk=
-n=!YH<qfW6e^Y2F(4m&UEVWcZOggc)[KkQ6dWrGhD2oe/pVe@\K4)7F<qSVpY?lr,nFo@\n^^
-FMgDKo/pR6jTJce@/i4.ZhQm(+&7.0h-NbI%9FLqP+'*QN(H3=;5np'maU(o'cS`lIQ0TYFO^
-cX6n,OuAc,HAf`^*#CE3EdKO7LAc2"Dq(fQq-e"jLmIP5EIR[W-)Mi;=!f?V+0B!O,/LDAP^0
-*U=P$D7'4XZXUEip!&9OjGsj.gQq,YLRr4jh;K(sR*BedYjq5:6#ae-S'F*\l?9M`ZeT\[fej
-KSc*W(WEO2tOCcQtNm?_-m-Joq@m]cU,M8S7]?f\]3BI4ts#/lopq<JI/H#b!j@&?O8,(kOV8
-jGrt7)QY(6[Y!mLIHD+^,U6KPs*GX24W'PVF<Ck'?^O@E^WCpmH\(+2j_/p-hZlI%'HlNMI3<
-g=c0>fbbTgk.Qq,Z;I!_h)prjsl@:<SQ@:<SQfon+fZuoePC$Y=rHUM_W6((ZoSC/,Ta2BETr
-;Sps3M*Zlc"Irqh:qaiLRWfU+aEqXg/dt^&A10(eD!s8pY^+!%)F['8"YIMCOoF<r/%o:AS#_
-*U5b@P]@8tKJg7"j4:+;(SC4gkc16%*QK<NeUUTZZ(]o1/SC2"KDlS-\jP'F[b:j(uIL(p&Xk
-qe,Xs$n3aUfEt!cKsEGH7/U3&IOT-NmYS3F2s,0sO4Z#/R>GNHJN7o,aA%XZI_RdT^VX;YM"2
-8';tP?3oCLVt>gh5hcWq!eM3oF%VJq!p5_&Vt:)4HYlf5+CS#Zlb]1?f&bXZNPK1%.16O,SqM
-AWXUF`V>*nte(UVEe@NH-QLfP','9D>lo(ZEP<(l_Z3i-Fb4S[ipqJY7&4T=6O"U&]2:$4AmO
-$*Db&A/SYl)=<Qo9rm%K/D*5n\/MmEfUdEc(&G$4JLXC3(7cT-bSgqA;6b.@"3OPh1K*@hqiQ
-Phu=E7fUo6eD<#Z=n$Tj&]T%`_&0)13ec#@l^_#jO7.,:aNlYGmE($fnn4"+f[Wt91&2\MqSI
-o^!U;eas"$t9<"mQ!ULt5pEcO`4d8U(UK?6F13,MIAWjq7E-cQh.k($6,(D7AanOM'1Wo`l,l
-&[a78,ALMu^!m=8jq4l&Yj=rK8(>+(O/R2HYB<.c$m=[E0oouO_3+>F*e+Q7\,),e;bFr:rt%
-<lP/d\kgH;4.R7)CQi5i>T3[u2uqW:U3GA(j)dT\m(3XCa]:P>M&&ZtF3[B+!jh0oXS_=@alU
-(7dN*^A]5>9E"a:*/#AXY9nWSk1K&N5jZbCrC+Di,B6P%p=J(<j:$b\`5gVK3d6[m1k3tgS3o
-1GXTa"r><3Q*79Yhp"^0!o+jd`O%6Q0h[.+4*J.dQi!%!p&KM)Z]H7aWLd$@%f4O[\''9e60$
-GPT?,"#%#^kbHZ*:I:Yct@9Zmr9<@3/a`;b+$.FWCU:[TQ^nah;fpK0o'bHKN#KgkO`sp(&!l
-eqG8\?&ftXokF)b+Rj-gM77hM\`S0Q\+^tjn1SP_<_2#``-YnKgO&]+]a$1_!XK]nM:\12Gg4
-L.&9s7W8Y:UM>9h&R<qWdAGiCA`!l;@3+g<HgRZD:=+H12*Yk@N\hWA0kRrE10i-B+n"-;l=j#
-%Ij->dpi-;sl/HfBJsE#<iC@t7s.YIS7\Rn!(oXX@uQ:"T;HqogVsJ[bLG]^8)T!BSLh#e]Q>
-g*6aXNX16up9,JJm/5s^?Y25"CC4B^I5_:OrNqbEodFtJ=V.[%%EAW<6PsslnnPr21'kPHoeb
-N;)hQ)C1nJC:$J*Jc&.j4N63u-agpR%7ZQQdHeaH^.%DbY(X)RDG(4q:ocuqnNOFh]8oEkjFM
-?W<6_$;+8p/l[!"Y43&1"6B`b3@N,k8jc\):@#BDP=9@_0ST32(=Qp#/RI$W4CT%Ap^k9qL-)
-UlM18Ve]4]Mn(6K+9'ga0JbSjL*2q!LIX=KKCM;Q-JjZr6hCf#XP+usE0a%p$)aMdDJ+/9hgM
-;.rq4E)?Hu")-5:ZD>PM9+S$O[=M$O[?c?VT8:F0Zd0_Z&/K[]PXFL#pD;n<'C2GBib#n:_Go
-$(d<4G>/s,Vh?4,>o81EKct^;*?7J[k5#jF"2;n_JD_POopR*1_;S^S+kS5ZhWKD#*"q):'S`
-9'@0g$QL7iZlIg;J8'5r$A>AcQ=o*X?&DX;Ef==noGNdO(t]]Nh:G-lDc^7Mu=6f:+HR4%'j6
-=:;Ig(QF!=1>6ZRqj55F5+k5?9NT"#PBPUDn17Qq>:7:=KX+/gKLE74h?<fgD\!`LLC"JO'0I
-mKOD@G*8PB;nogO0Saa'e[1<P/Io-Jp//.]"S6e9\?amG>SF>!l[s$]4l,LU#o[FBWJ[_M2j_
-cSND@]`cCXB47kBlm_XW;XJ?L]37i"1.&&9uBFK786nW4/V.QY/]*02fRM"7cI9B^,Ycn9E4"k
-%M:t>J,91W997E;q<JaK"lP"Zo?t/pc62&Zn;bQlbX4?/dt&3iZEjBk2"M8_-Z7%6Z=0.gD0n
-sI$OF:_4cQS/?K:Id(1n6XU@MC\pQTlntoUEIYTI*`utC(5*q#b~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 386 406
-%%EOF
-
-%%EndDocument
- @endspecial 396 3381 a
- currentpoint currentpoint translate 1 0.5 div 1 0.5 div scale neg
-exch neg exch translate
- 396 3381 a 329 x Fn(2.2.5.3.1.)i(Brightness)396
-3889 y Fm(Adjust)c(the)h(brightness)e(of)i(the)g(image.)f(A)h(setting)e
-(of)i(0.0)g(gi)n(v)o(es)e(a)i(fully)f(black)h(image,)f(while)396
-4019 y(a)h(2.0)g(setting)e(gi)n(v)o(es)h(a)h(fully)f(white)g(image.)g
-(V)-11 b(alues)25 b(greater)g(than)g(1.0)f(will)g(result)h(in)f(black)
-396 4148 y(not)g(being)h(solid)e(and)i(highlights)e(turning)g(white;)h
-(v)n(alues)g(less)h(than)f(1.0)h(will)f(result)g(in)g(white)396
-4278 y(not)g(being)h(perfectly)g(clear)g(and)g(shado)n(ws)f(turning)f
-(black.)396 4656 y Fn(2.2.5.3.2.)28 b(Contrast)396 4835
-y Fm(Adjust)c(the)h(contrast)f(of)h(the)f(image.)h(A)g(setting)e(of)i
-(0.0)f(gi)n(v)o(es)g(a)h(solid)f(gray)g(for)i(the)e(entire)396
-4965 y(image,)h(the)f(e)o(xact)h(gray)g(depending)f(upon)g(the)h
-(brightness)e(chosen.)p Black 3643 5692 a Fi(16)p Black
-eop
-%%Page: 17 26
-17 25 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black 396 579 a Fn(2.2.5.3.3.)k(Cy)m
-(an,)g(Ma)o(g)q(enta,)h(Y)-8 b(ello)o(w)396 758 y Fm(These)25
-b(three)g(options)e(allo)n(w)h(speci\002cation)h(of)g(the)f(c)o(yan,)h
-(magenta,)f(and)h(yello)n(w)e(le)n(v)o(els)396 888 y(independently)-6
-b(,)23 b(for)i(rebalancing)g(the)f(le)n(v)o(els.)g(Normally)-6
-b(,)23 b(these)i(should)e(be)i(adjusted)f(to)396 1017
-y(yield)g(neutral)h(gray)-6 b(,)24 b(b)n(ut)h(the)o(y)f(can)h(be)g
-(used)f(for)h(other)g(ef)n(fects.)396 1396 y Fn(2.2.5.3.4.)j
-(Saturation)396 1575 y Fm(Adjust)c(the)h(brilliance)f(of)h(colors.)f(A)
-h(setting)e(of)i(0.0)g(results)f(in)g(pure)h(grayscale.)g(A)396
-1705 y(saturation)f(setting)g(of)h(less)f(than)g(1.0)h(results)f(in)g
-(more)h(muted)f(colors.)g(A)h(saturation)f(setting)396
-1834 y(of)h(greater)h(than)e(1.0)h(results)f(in)g(more)h(vibrant)f
-(colors.)g(V)-11 b(ery)25 b(high)f(saturation)g(often)h(results)396
-1964 y(in)g(v)o(ery)f(strange)h(ef)n(fects,)g(including)e
-(posterization)g(and)i(banding)f(that)g(might)g(not)g(be)396
-2093 y(e)o(xpected.)h(F)o(or)f(normal)h(purposes,)f(the)g(saturation)g
-(should)g(generally)g(be)h(set)g(to)f(a)h(v)n(alue)g(less)396
-2223 y(than)g(1.5.)396 2601 y Fn(2.2.5.3.5.)j(Density)396
-2781 y Fm(Adjust)c(the)h(amount)e(of)i(ink)f(deposited)g(on)h(the)f
-(paper)-5 b(.)25 b(If)g(you)g(ha)n(v)o(e)f(chosen)h(the)f(correct)396
-2910 y(paper)h(type)g(and)g(are)g(getting)f(ink)g(bleeding)g(through)g
-(the)h(paper)g(or)g(puddling,)e(try)h(reducing)396 3040
-y(the)h(density)f(to)g(the)h(lo)n(west)e(v)n(alue)h(you)h(can)g(while)f
-(still)g(achie)n(ving)f(solid)h(black.)h(If)g(black)g(is)396
-3169 y(not)f(solid)g(black,)h(e)n(v)o(en)f(with)g(the)g(contrast)h(and)
-g(brightness)e(at)i(1.0,)f(try)h(increasing)f(the)396
-3299 y(density)-6 b(.)23 b(Note)i(that)f(changes)h(to)g(this)e(setting)
-h(will)g(not)g(be)h(visible)f(in)g(the)h(image)f(pre)n(vie)n(w)-6
-b(.)396 3478 y(All)24 b(of)g(the)g(supported)f(printers)h(actually)g
-(need)g(less)g(than)g(100\045)g(ink)f(density)g(in)h(most)f(cases,)396
-3608 y(so)i(the)f(actual)h(density)f(is)g(something)f(other)i(than)f
-(the)h(nominal)f(density)f(setting.)h(The)396 3737 y(ef)n(fecti)n(v)o
-(e)g(density)g(setting)g(cannot)g(go)h(abo)o(v)o(e)e(100\045,)i(so)f
-(if)h(a)g(v)n(alue)f(speci\002ed)h(will)f(result)g(in)396
-3867 y(an)h(e)o(xcessi)n(v)o(ely)e(high)h(density)g(le)n(v)o(el,)f(it)h
-(will)g(be)h(silently)f(limited)f(to)h(a)h(setting)f(of)h(1.0.)396
-4245 y Fn(2.2.5.3.6.)j(Gamma)396 4424 y Fm(Adjust)c(the)h(gamma)e(of)i
-(the)g(image,)f(o)o(v)o(er)g(and)h(abo)o(v)o(e)f(the)g(printer)n
-(-speci\002c)h(correction.)396 4554 y(Gamma)g(less)f(than)g(1.0)h(will)
-f(result)g(in)g(a)i(dark)o(er)f(image;)f(gamma)g(greater)h(than)g(1.0)f
-(will)396 4684 y(result)h(in)f(a)h(lighter)f(image.)g(Unlik)o(e)h
-(brightness,)e(gamma)h(adjustment)f(does)h(not)g(change)i(the)396
-4813 y(endpoints;)d(it)i(merely)f(changes)h(the)g(shape)f(of)h(the)g
-(input->output)e(curv)o(e.)p Black 3641 5692 a Fi(17)p
-Black eop
-%%Page: 18 27
-18 26 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black 396 579 a Fn(2.2.5.3.7.)k
-(Dither)g(Algorithm)396 758 y Fm(The)d(recommended)f(dither)h
-(algorithm)e(is)h Fg(Adaptiv)n(e)29 b(Hybr)q(id)d Fm(\(which)f(is)f
-(the)h(def)o(ault\))g(for)396 888 y(te)o(xt)f(or)h(other)g(\002ne)g
-(black)g(detail,)f(or)h(if)g(this)e(is)i(mix)o(ed)e(with)h(continuous)f
-(tone)i(images.)f(The)396 1017 y Fg(Ordered)j Fm(dithering)c(algorithm)
-h(is)g(just)g(as)h(good)f(\(and)h(some)n(what)e(f)o(aster\))j(for)f
-(pure)396 1147 y(continuous-tone)e(images)h(and)h(photographs,)e(b)n
-(ut)i(may)f(yield)g(poor)h(results)f(with)g(te)o(xt)g(or)396
-1276 y(other)h(\002ne)g(detail,)f(particularly)h(at)f(high)g(printing)g
-(resolutions.)396 1456 y(The)h Fg(F)-5 b(ast)25 b Fm(algorithm)e(gi)n
-(v)o(es)g(the)i(f)o(astest)f(results)g(at)h(the)g(e)o(xpense)f(of)h
-(color)g(accurac)o(y)-6 b(.)25 b(It)f(is)h(a)396 1585
-y(simpli\002ed)f(ordered)h(dither)-5 b(.)24 b(On)g(simple)g(four)h
-(color)f(printers)h(\(or)g(other)f(printers)h(used)f(in)396
-1715 y(four)h(color)g(mode\),)f(the)h(quality)e(is)i(similar)e(to)i
-Fg(Ordered)p Fm(,)h(although)e(dark)h(gray)g(rendition)e(is)396
-1844 y(not)h(as)h(good)g(due)f(to)h(a)g(simpler)f(transfer)h(between)g
-(black)f(and)h(colored)g(ink.)f(W)l(ith)g(six-color)396
-1974 y(printers,)g(color)h(rendition)f(is)g(some)n(what)f(w)o(orse,)i
-(b)n(ut)f(it)h(should)e(be)i(quite)f(usable)h(in)f(cases)396
-2103 y(where)i(optimum)c(quality)i(is)g(not)h(critical.)f(In)h(black)g
-(and)f(white,)h(it)f(is)g(an)h(ef)n(\002cient)g(w)o(ay)g(to)396
-2233 y(render)h(grayscale,)f(b)n(ut)f(it)g(may)h(not)f(gi)n(v)o(e)f
-(best)i(results)f(when)g(used)h(with)f(v)n(ariable)g(dot)h(size)396
-2362 y(printers)g(\(modern)f(Epson)g(printers,)g(or)h(Canon)g(printers)
-f(using)g(DMT\).)g(On)h(rare)h(three)f(color)396 2492
-y(printers)g(\(CMY)g(only\))f(the)g(results)g(should)g(be)h(identical)f
-(to)g(ordered)i(dither)-5 b(.)396 2671 y Fg(V)d(er)s(y)29
-b(F)-5 b(ast)25 b Fm(is)f(e)n(v)o(en)g(f)o(aster)h(than)g
-Fg(F)-5 b(ast)p Fm(,)24 b(with)g(e)n(v)o(en)g(more)h(loss)f(of)h
-(quality)-6 b(.)23 b(Color)i(and)396 2801 y(grayscale)g(output)f(will)g
-(sho)n(w)g(strong)g(patterning)f(that)i(resembles)f(screening,)h
-(although)e(it)396 2930 y(isn')n(t.)h(On)h(laser)g(printers,)f(and)h
-(possibly)e(on)i(certain)g(kinds)e(of)i(te)o(xt)f(and)h(line)f(art,)h
-Fg(V)-8 b(er)s(y)29 b(F)-5 b(ast)396 3060 y Fm(dithering)24
-b(may)g(actually)h(yield)f(the)h(best)f(quality)-6 b(.)396
-3239 y(Error)25 b(dif)n(fusion)f(algorithms)f(\()p Fg(Hybr)q(id)29
-b(Flo)m(yd-Steinberg)f Fm(is)c(such)h(an)g(algorithm\))e(perform)396
-3368 y(v)o(ery)i(well)f(at)h(high)f(densities,)g(and)g(are)i(capable)f
-(of)g(rendering)g(v)o(ery)f(\002ne)h(detail)g(rather)g(well,)396
-3498 y(b)n(ut)g(the)o(y)e(tend)i(to)f(e)o(xhibit)g(artif)o(acts)g(in)h
-(the)f(form)h(of)g("w)o(a)n(v)o(es")f(or)g("w)o(orms")g(of)h(dots)f
-(which)396 3627 y(results)g(in)h(noticeable)f(te)o(xturing)f(in)i(pale)
-g(areas.)g(Furthermore,)g(pale)g(areas)g(immediately)396
-3757 y(adjacent)g(to)g(white)f(tak)o(e)h(a)g(while)f(to)h("b)n(uild)e
-(up")h(suf)n(\002cient)g(error)i(to)e(print)g(at)h(all.)g(This)f(is)396
-3887 y(sometimes)f(called)i("tearing")f(or)h("w)o(aterf)o(alling".)396
-4265 y Fn(2.2.5.3.8.)j(Set)h(Defaults)g(and)f(Close)396
-4444 y Fm(When)d(the)g Fg(Set)j(Def)m(aults)d Fm(b)n(utton)f(is)g
-(click)o(ed,)h(the)f(slider)h(bar)g(settings)e(will)h(return)h(to)f
-(their)396 4574 y(def)o(ault)h(v)n(alues.)f(The)h(dither)f(algorithm)f
-(setting)h(is)g(unef)n(fected.)h(The)g Fg(Pr)q(int)k(Color)f(Adjust)396
-4703 y Fm(windo)n(w)c(will)g(close)g(when)h(the)g Fg(Close)g
-Fm(b)n(utton)f(is)g(click)o(ed.)p Black 3645 5692 a Fi(18)p
-Black eop
-%%Page: 19 28
-19 27 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(2.)h(GIMP)g(and)f(Gimp-Print)p Black -2 601 a Fe(2.2.6.)39
-b(Printing)e(and)i(Sa)n(ving)g(Settings)396 802 y Fm(At)24
-b(the)g(bottom)e(of)i(the)g(Gimp-Print)f(windo)n(w)-6
-b(,)21 b(there)k(are)f(\002)n(v)o(e)g(b)n(uttons)e(labeled)i
-Fg(About)p Fm(,)h Fg(Pr)q(int)396 931 y(and)k(Sa)n(v)n(e)f(Settings)p
-Fm(,)e Fg(Sa)n(v)n(e)i(Settings)p Fm(,)e Fg(Pr)q(int)p
-Fm(,)g(and)f Fg(Cancel)p Fm(.)h(The)f Fg(About)h Fm(b)n(utton)e(will)
-396 1061 y(sho)n(w)g(information)f(about)i(the)f(Gimp-Print)g(softw)o
-(are,)h(such)f(as)h(the)g(v)o(ersion)f(number)l(,)396
-1190 y(authors)g(names,)h(project)f(web)h(site,)f(and)h(softw)o(are)g
-(licensing.)f(After)h(clicking)f(on)g(the)396 1320 y
-Fg(About)p Fm(,)i(read)g(the)e(information,)g(and)g(then)h(close)g(the)
-f(windo)n(w)g(by)g(pressing)g(the)h Fg(OK)g Fm(b)n(utton.)396
-1499 y(The)g Fg(Pr)q(int)k(and)g(Sa)n(v)n(e)f(Settings)e
-Fm(b)n(utton)e(will)g(sa)n(v)o(e)g(the)h(current)g(settings)e(and)i
-(then)f(print)396 1629 y(the)h(desired)g(image.)f(Recall)h(that)g
-(these)f(settings)g(are)h(sa)n(v)o(ed)f(in)h Fh(~/.gimp-1.2/printrc)p
-Fm(.)396 1758 y(The)g Fg(Sa)n(v)n(e)j(Settings)e Fm(b)n(utton)e(will)g
-(only)g(sa)n(v)o(e)g(the)h(settings.)e(The)i Fg(Pr)q(int)h
-Fm(b)n(utton)e(will)g(print)396 1888 y(the)h(image)f(only)-6
-b(.)24 b(The)h Fg(Cancel)h Fm(will)d(close)i(the)g(Gimp-Print)f(GUI)g
-(windo)n(w)-6 b(.)p Black 3645 5692 a Fi(19)p Black eop
-%%Page: 20 29
-20 28 bop Black 0 TeXcolorgray Black Black -2 647 a Fk(Chapter)58
-b(3.)f(CUPS)h(and)f(Gimp-Print)-2 1167 y Fo(3.1.)47 b(Intr)m(oduction)
-396 1383 y Fm(CUPS)26 b(is)f(an)g(acron)o(ym)f(which)g(stands)g(for)h
-Fi(C)r Fm(ommon)f Fi(U)t Fm(nix)h Fi(P)p Fm(rinting)e
-Fi(S)q Fm(ystem.)g(It)i(is)396 1512 y(assumed)f(that)h(the)f(reader)i
-(has)f(properly)f(installed)g(the)g(CUPS)i(softw)o(are)f(and)g(the)396
-1642 y(Gimp-Print)f(softw)o(are.)h(This)f(section)g(will)g(discuss)g
-(adding)g(a)h(printer)f(to)h(CUPS)h(that)e(uses)h(a)396
-1771 y(Gimp-Print)f(printer)h(dri)n(v)o(er)l(,)e(as)i(well)g(as)g(ho)n
-(w)f(to)g(modify)g(the)g(v)n(arious)g(settings)f(supplied)h(by)396
-1901 y(Gimp-Print.)g(This)g(will)g(be)h(a)g(rather)g(quick)g(e)o
-(xplanation,)e(as)i(the)f(CUPS)i(softw)o(are)f(is)g(quite)396
-2031 y(well)g(documented,)f(and)g(it)h(is)f(not)g(my)g(intention)g(to)g
-(attempt)g(to)g(duplicate)g(the)h(CUPS)396 2160 y(documentation)e
-(here.)-2 2662 y Fo(3.2.)47 b(CUPS)h(Printer)g(Installation)396
-2878 y Fm(This)24 b(e)o(xplanation)g(will)f(use)i(the)g(web)g(interf)o
-(ace)g(pro)o(vided)f(by)g(CUPS.)i(First,)f(aim)f(your)396
-3008 y(f)o(a)n(v)n(orite)h(web)g(bro)n(wser)f(at)h(the)g(CUPS)h(serv)o
-(er)f(\(http://localhost:631\).)c(The)k(follo)n(wing)396
-3137 y(screen)h(should)d(appear)j(within)d(your)i(bro)n(wser)-5
-b(.)396 3416 y Fj(Figur)n(e)26 b(3-1.)e(The)i(CUPS)f(Startup)i(W)n
-(indo)o(w)396 5096 y
- currentpoint currentpoint translate 0.45 0.45 scale neg exch neg exch
-translate
- 396 5096 a @beginspecial 0 @llx
-0 @lly 621 @urx 416 @ury 6210 @rwi @setspecial
-%%BeginDocument: figures/cups_startup.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_startup.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 621 416
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 621 416
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-622 417
-12.000000
-622 417
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-e7e7e7
-6f6f6f
-b7b7b7
-eeeeee
-808080
-547098
-800000
-424f63
-000080
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPUl#,OmZ@sb-PkI90FW\d2XLJ]eH&''4RreX?UYk'MAeeI5jZ/1LQ]<:`A8td&%N>2i*r
-t`K%"LG0$+5>r!O[LU!O[LU!O[LU!O[LU6.Db_qQKj!+U#+*[BPN.5#*kXhJk"3YoVb'..YKh
-4B-1(H8+lFWeFGCN0JnDq8]C5!Or6pW6P2bfqZK6qPXiO##k.q.DDQdn5t;A\;L*OEP!PJ1R<
-0MEr9l2_!O[-$Pa^d`D]d+X:5rDhWlp/KP!EB[Nc)JHR]:aDWKJZ.;'g>%:LJ079d`pO5"9ee
-<U;_ZP1hH5/q+#:Fs>`1c-hf'T%SF2akdQOO]ZrWhd>`+Se)SUJPs?`MO]sAe`is)k6IbD7:n
-#AR>&$d@R^[n.`:,*U:@R.so]7\&M2k?]-m<D.epa";+Z#Ks%d(5]K0^5?/:3e94V_)RlQXA7
-ClEN2&I'm#<81-]#+/0U3PJE#.'[Z;Dn[P0,YJ,.KX1N!aGohWVC..W\JfXq!\6Tf-j_TJgaR
-TJl9fTJgaRTJgaRTJgaR56$!3E%`:2J0B.eU6Br2Rfu$JcYp"q8"ZnjPt/<A`93c/E;7Ff;o$
-3gp<i7OTg^jj(<q'sD3&SqYJQG]m%`<(_ME#AArfgDLZW%j>&=^^RcQJ*)rJ_NL79Kl`O<;/#
-h8"8X6hV=rVKe0QL;tY0q4iEk$oNrYF(`#F#C?C*o5HZVlI16=SuJ&Vu-8$E"(?:99G[s7XEM
-Fj($G)nZf9cRC2EQD(g>M`j\6LFgVZ#lbDc#h5jiUJA_'7;WP;uL`[sBInXno275:`(72Fr60
-h4%Yk;41V'F6$DCls]'+BiUk\\j.fsdsMB.Sp%2U,h>X/L<PF[*:]ooGcSiT!-EMneR$H8[];
-)JGt*GLGY9Z:7p4(B:6hjus%+f^=ZcPM0M4D<o2e1@+FsfJ8@Rj.E2,SW;r*&+eK6\:LnpcF8
-MI<U<LeCe++O&jQc\Pkua6^;%.RCA[o;C--+:c%a4+^X9B!j7);JX(eZ42XN_YCDH*[6Z]3uV
-!GG?>I.YJ=^rV`Pd$=B(^SeonH&=Tr'1maGAYTP;.Pno9b4kbqq[+.LT4)!U-(h\1V]ff`>6t
-3csll+@Z-gp9Pn6ubDiZ<^slCYD7\nFN8-T8ZTXLude2<%cMS9n-9MJIF]Nd@]f:A-\[B,<PJ
-S,3k"1V;'i0/[[=oYrWUQhP/t!LRV[F,!6upN+/;&cW,u`P##*Q:GL;V&](4SQ)B?SmDf[E7-
-'5IGrakEM+r#%#Gesc;If":1Gk2BesoV>6!*i"O"Z(>N[/j'f#igHFD@W7C?DWWb,OY.!u<r2
-L3USH&BWS!h_4\6i*MK4,Q,PXE?1CM'9-$f'$gOn#<jCZ=GeFn+VdHUJjU,a'$[Ad=!l3s]$H
-DAg+g1>F]U[mP7bO*3k2*Y^4S<U'k=:C,A\8>Jf/pG5Q-f(u.CE#GQZh]]N/^tQ\N2s&u;k#&
-@6>][bOqR"&C/O2c+#-9gW9nN$]@(]VQE)Sp*,RNY1iHg60DRLX2m"t_\*!2=I9SERASSP\)b
-T9tmn#rZ:iC.TD.Xf,Xuk(NiP<\F-dO'qFqqE)B.3Yj0<I,W2_2>hP:kEVHs<VqEX7jfMpQ;I
-D&(RoiRFadf(c:8APYq[2Hp^?6=<N)j`ACm=ptY2j7upj$&:stg[oL?\D!ZD13$i&&/7"![O_
-TZ[]IZ$aRYt)[Y#X.FkUL'5[%s@8SYkJh"Ga74mAWQhOlek.Qo5'DXsfK>^FNTUiHAOAh;.pP
-FN$h4\qI0.Dg\:/W:)Fj'h()'8@!G]hS$^Y;fZ-c-Q>pRSYh'RVLi9mR@K!HW4thnNaM,r]%1
-%osVV)D?KEGZ_B<5[?5YAb[sB.V"A4$q4(FK1&3$CV*$-U/CrdX\^`!dK6Hd+m5erWH6+<_&k
-44D\)]8F2C`H'r*:j;%bA)uGI_)ramW)paZZVhgVV.9=kkQTLLIk;0%S__CAZtC.p&A0O)E.U
-g:^YH2DdA*_kKP"Rs:KGm8a=%$f0u\#BZ0r*3LHnOfS'!FfiB(<W6C/>+#r>?,\.kXaZg_IB^
-o@f9!o[_&Z%+dJM\RKnR'qD0f"SSUfE6hr\h!8):e('su\\^q^o_dHr,tjGp!R^`SBW_]/<sm
-3;'&T(%+!oA<o>8%4DppK&=/5,@q'^dipEo+]MaK.k++l58u259F/Rn:`UFnZ.,`[""^C;*H(
--+Rk)idKttn:A>XT-:`X@^_g*5rpJPjSh6m8NWQV>0q<@`1W4%F^S!JF$If8LYgPPrJb@@:.%
-cPQ&GX,4Z-5*Ijj=55?^MT/zz!!$t2Q>]]oo.^94:%S4Y5P<@1hY[nu's$`*ZaFs]C<OVRX'*
-0*cdt,UXgpRSi1':XD6:Kc?'ucf2ndnsmm_G<Y=ni_d7"6Mj:)'sXS/#b?=%YOC#N^(,mW?$g
-h]b$Rj^*L0QVP]rMJmAK@#oWmFgj@V=ACAr-P`!8qfLI"l6--f:2GH<ai14GeWLNK/W,ESEPp
-[oHnn4VdpIM:@`:@8S;tFm]Vi,S*N(oYbFd;1BY&)5GbK)VZlhkk]2<r@5W8OfIcp,f>\9LQ@
-=d)V?K_/@7"A2>VFeJWL7Vu[\r:VfB.BN4'6PGYAN1+<`=G(0>5a!n'^H[TH67NW;_.sDH@@p
-`#&>alD<,bll$nSV69HD^=<"bkhNO89/a/e<d&8d9T-E]ijC.WpQ#3TRV#39R!C1mTX6l]/Is
-!&2TlDXipVe0-8\/YB`H`R[^ds`B11JMVYS1T?;qJ;0=l_eJ``I`$At<&[\^_o&:V^k=o[1pF
-hN$V`VlOb3.98_lt[3-l)W^[2&3`e7lnMqkuY=$Fsfa!1O2+WFj>l?9CXdMCmXk^'dB6`!4?Q
-JFhOm5RME<<3lfm0,<%R=I'ka54#,)nl1MKUFKX-=N6Y*\Q=do"8@A0fj(d$`0[9B,V<FDJ43
-&jol2UJ6+'d)a<#`/&dJ@".?L5knQ$TQss5\LR0m5kfXIW:KH+2pP:$kR1de-?omF:<\*LXTE
-*EcrV[B5rtl\X>Ao<7oK2Yt%#[Tdf.RS=g>Q=<sac'<UaVN_rp%543"h[]XT)RR&kr+YfTmBG
-m5D=kM];1>DL[X)<KIi6_QMqM?8"r+a4G;ls2XZm*"e4.(8]cGH/@7+nF;6m7tc$c(@j1fG4X
-'iX3lSJ&P,J!YY\WDu%M/(COkW1G`TXSabID'H+p3j>/Mt/@NhA9WsZX`C(b_I4Q%<fC"/;Hj
-P\A\'t:f2>q[[O-QHVl8oi0qUo?+;gXl0M+\qWd5J?>\Gq[XDr0ek3[$'Zch+\g-Os[FEc6GA
-)<oIHqBPq`!mEKC<N66e$n8,^H@.j%Xa;gI=t?)QasbF)QYEoe^QQNik2-<pPm85;i/JXhgk+
-AhjrWFQhR#NOo=J`n.II>`@_8CpUlSF\K$a>KFLWnjuDj@r[t2<S*'^e!ld^7<b#ns+IK+C9(
-RgRK#]kbZ<l,X5DcmhchVNeqD^6mq.Lp/b>4:Q^^$-E7[2-lL"/eXIa;$5f%0X)LL02Y.ra1G
-IB59\DI3%^$VA/bNlPpMHed%b`/1;G9^(N@Fr!A+MDgq%u/pXI&hUDDT$,WYk-iN0Q+3Hg)<&
-"1H+#FNEE*+G[hs:><BO+Z73K$V%)Sn2qhs!-(u@QG,m!4>F-QVa',t$U>9MWaE-h4;%o,"4_
-aB5kbFR&(Z"h90e9-T`\"@cY\CYUIVG"O'7800Q'U+rY.*b4lHWQ#=\?j1U*i\LQ=8ItXOFns
--;V$ig'ZTcmB1P/4"I\bMu'#EXiR]O^$(CMfX__I<m)slYrb>?3RTuZk^otGhUO\"fre76Bt9
-4o;iqrFoZ]kEZ,SDDCj*O06Ot9Q]F97)X3Xq<;G,@TrRI!83pt;3hedbG2K:WfrN$>Dn`=JLM
-V\$LkC]5M62'`b;)[S\!_lRK'U%fmSa`*&VqKP&`Wr1Q;oSMTQN"L%HAeRSXdrinB@F6?>ASg
-R-6?+F9^bQ>rp%)jCF0ABhVuRf.pK/fE6BaZ2=o;bh+r%a/=W!n@*]\ISXECNe*&)g5+Li>O0
-HT+]!A_cqDiB$p-]BP]me3TT;"to5_X,4p&Da:.>84:]>e?K2N5[%[\4)V?<,%nH$cf9qDaY=
-G,6,s.H^UU7bE_H\T'Fkm<03`4g-kE0.nd0O;1YYC#%i=gb3qa[S<^rV)]W_ak,BLRVmXpEp8
-gs5,Dr<Lj83pbpptFo/,lP<N^;RHaPjCm\AA"?TlUd.Od?-<H(';n85>?[$_H]gNa$&0RLr2he
-%d-]\.;B1@92?dJc_b-/p1flTOK?cKAQcjb8r97Te0GmPl1"#_OOh&J?IUa,+G-`cH$Pk<;=j
-8I@1>%%$67I&<Y,)jP&)N>,h8gm-:Pi/O4D./>bQ2=3]:RrLSjo=",4OMt3>W@2]1r_?JJdU2
-ZpF'#'$6u?O7+(+:nMilN3aisReV,l:+Iuijj`-lk#de#g4`4+F-f!b'bD,>tX&bn%g'dNO_2
-L(9hHO&ijZ5Q`:Ze<9:+gDb\$6'(k8cDgC;NsJ7+;ua`.8D9e$:&>Njj?,Q<QH,'L+tcZ/BsQ
-XU:tKjI+ss",qEA`(Sn>&,JNJ#P&Jf!1R5T-2QQpqie?jXH!?K_[e*Xs?N&lO]i\[TQnG8-*u
-d)>m!e-H>kcnj[q7toqdN;;g><C&bgB]9\%O'E[a0?UC:Wo5Eq4'#9lLGRV^m7e9t3t_,I^Yaf
-%[W^cF\tB>Y<_N`/QSXMn9<\ZV($jBiQI*AiEML()Ai8q7A=cod<iQ9ZffLNpMf_@@LHDHs;o
-%H6I+D]_O\D_.1\annhQDqT-f28YcQ0,#'L@=$6;iI#sa<VF:SSRMbg[1enGT^"8^8Sb6jlCg
-7/<@:l@>3kMG@PC2+CS16*R6f#h*AV-ANh"Y=fN@hCAgUgUufm*6iZp""t[O-2dG.jFWs*?P$
-;.ne[VQHFfR0=iVHe%KUJD>;=>Gk,<bh:eI.7ZFir<+icA/hlqk)8]2kSlHbgVmuGj!6eLhTd
-t76bu]amPgFV-5i;Af:8I+d]AONg!"AXCuDb0os3jm)>Z>UDuI?7:&/RcWRAH29I[qZaa?hu>
-J"FtfTY$tmIG\gjJ/96:?.]6C;'St3iuQBQH!c'J'RiO0jX%h$m=E8_OQj]Tl*$;%g_N506c"
-?G4O/;5$<BfSUHm"V<IPF94qMUYESCfXZ!!i2j2Q?*L>d5E>sbpS6"[9^-lF,)X4@t17RN])Y
-:S(DbG!(Xb*gZaG&9cXd@Y:bg+Y9ehr+dI'V!6.W$7gi)GkIEHBRg$#E(m-DP`EmJYZ6YLnF"
-U]YafBPTPO=`UsOXd[7E[=.RBU-$aY,4f4Ym9Wh5hofW#`Ku-Np8iPG5d"-@K1fo;p`rR#rXO
-U#N&A57@#Ul9TPTl&C,Rn^a>:qdL_'r#NBVqM6F0S!(^G])@V>pX`crA.baQY2m"f"8#,f`Y9
-"C>nqBbA_QenLVhU;eZ.aP/U-G@M/FrtUhph%AaQ,_\6]V8MSR$Q04o]VY"X;d1Og0-`=hik$
-is63Gml4u[3:/#ph3IbSk-++Sbn'\r+p"O&qm]M[dnc?_*.N,4\ebJZ+L5"0db:9EGD9@1aF"
-l17REM2a8sK<G$b'/E@=2*JD'++&0iqm";X?AH-m@qHrXs):'N*btV`7_8Ko7u-VqL7<lpuVM
-/FmE>@&gr3(j7,CWF^KVI]o&XWh\C?nP&3(q6k_+p=,qLT$pCAU>?5dau_V)if9"sQT@^GS"k
-Of>3E:sgh@qnCR9pSi]OP\*c[=9fG.lC"?.TE@Zl2HV@dP;:fPc$>2@_E>H3g[M2E]na2q-PB
-jBi#ok#""b`&3=UU@NX,25b">E\p&X->!Dm&HLBIsA'>a&:U?%uL#EJ_4peVT8%oOL^>bEAtk
-ZB&Z"#A>^c[&\m#_B>0qQO4LD^HFq$+]$O\mqb235A(=i,%C6pdW_$LaN`=^XpG]LV#Wo#oX0
-$/%<jhKo9!C3eUFI-?+aS.=C6"f6USF753K>[O\?KSWpKI0+:$t?cOA<sINb*-MX:,hg4)[Th
-AuFjbYWs]2UI$ctq:aplZH\r/3Z6Qiq7bUB#Gg24NeEHR0]0q=Wfr@L$iA/&D66nX>YhbtDg&
-0un,:`>Ook[azzzzzz!:\7t,3,AS89K7mG"p*0$!H`^!H(nUi%086N42K0lpA+>BqRPN!7+X-
-5,Mrs4I"2:@ra)[?)G%:\q\pf-F$"BUUFl.Sp)^r)D_H&I2Aj97`IYo<81O9;[c$1hiH82A-A
-65.gsm]%a8dDcRp368!8bcc8LF=L/QZKN+Ia3'QR!I$R$g*Sa?Ul,?%f_FW,pmmb0(DNj`Oi@
-u@nH#8K\ZAeB;LZH4<b@k#A>BcB/?Xu>-_@=KVo9H*8YE.k1"/W;[*[A)BN03,Ef[?UHj'P_t
-C'@`=k>bng`2A8i0RG*IV/1'0'5.\1p*Bm+-PX(R3cW==T1D7,K<?&9lj]hNsn/1p-LnqJ`UU
-s'6/KNfT1ofTEPBtY\8lT5\gS81eG1#c?E#8/BR?;ATD;@Wq.oPZR.LFVu=Qo<@><%HrXJTb!
-c;:"fd8ncJ$#6N1b]?Qsj=-A+_4ug]Z:]=.?!h?Ypq^#sf^`7TMqDV2R*">i^6/)BOq#.R(Y8
-_beN*]G:SiD-*aS"1zzzzzz!!$tJke5Hs\;e(?8+sKZ]qOjDGlnR)2</ft[,[2Uo"A2QM0\FN
-e"ttaPMFMbe^bdCgX4MAcChV<5tAW9M%(pq/5^7_@uI4W[N@k_E;8Jum4M;kPQ5\k$+9^?$FQ
-]b^AS^N*Zb.,Bn/<4MfHkN?^SON)NDWd\P*d,$c2X>4q*-3^D?)$/9E^DjHdO^Uhu$?<,XU*d
-#V^5HDsRH:+S-34;6.5<uqQQLG!k'TXn0MeI19l[VRchh,*6_g,>9hr=qmLTsg[R*gZN)4?$t
-%pd1eNZg^^`I'HL,8SuC*HQgut[C)a*+qmPsCb,G"9,PAgngh"\K#kRME\7"o[7(IW^<0R[b=
-%\6A[\8@01W1R@XKNhB.qo[m@EFpb.,Zd8X[ZO$9KCpjS$"&gOG+7"Aa3<DsNbo5qUK/0f+Z0
-a]>])FjU`T'0Zu&*Fp\!NH\YZ#WJ-#WN2"^aMgH#M0UF]XHj%\o4spLn-+WB8_]q7P28AOa=Z
-_]fOu]A_sJ&f7BO`.'/E)K:*PQW_)J5Y2[.L"HNkNsal"@(%#Vk!JC=Juzzzzz!!'eFin1Aqo
-^IN<-q!LP.W3%LHFsC#PgEDOh`DUd'-<fmFE,,AM(0I,)q5(p6V!dI4<!?=P>E3+FA-OW2:.1
-</+K:@kGI98\[+feKg9AMT0Jo""YVq$Y"N[YK^PFm>]!G9;BS#s8FqbV%Xi;`*&"%;Va=9c^0
-ajo8-JA8MQkUXJYusVD-cC\TJgaQ`@PFsD4Rc:CjENe><ED'4ZW<FaCnB'eU<ot;B!qKD9kni
-\iZdtDH(K54_amN;lK(4af\m.W3$``2Y(n2i]-(rJ.B3T(%pp<)Lpk"q"e6@<M#0L3r34$!,u
-]r[&9aI0TRhNpu+JJi,6?,!<<*"zzzzzi+kXIDS4P[NoaR)\:kPtOq=cEM8BnT"q:G"^?ZY"Z
-3*38*I/Lt<(Tc5SL)bi%.RK[mUSn2:`DBR6>bsa:\nV7n4`f%E%cS3^<N72GD72FEc?NVq`0P
-c8@"RYB)@9VC/bI4pTu0Y0_iJ+ajgOE[IS)6l2J+;09RdG`\\OhrfM%bD,3]K+&)2ck>Ft/;7
--]`gCi"j@GI&5hP\?5=Db4;Ck(dpKgFLmg=QZB4;GE\MBS=j5Ii/8$U(Z$2L8<kAE:Y8.;G&Q
-%2chV]jj2SNsVB_4qNob+=Z^HnfYbTS%n0m0UTW!&j-P!1hf%SZ=P\_9`(75nkP<q-%X,qqGA
-pe]VcX;6hat0?%2;9kqMZ0pB-unzzzzzz56cF<j>H@eXP=#?HS9pnl/Fb5j*('WdX5sKo[.4T
-pEmGEX/`9bXu<f%kMt:bVX,Wors,qp+4ks#j^bc-.//C"qq[KYg_N*;CBpj/X:(**nb1+tb-g
-,$8Rhu'8G7q-D"6F8HJ5"4[GO^#ej!Wfd[orK3%fR%=aqPqIQ&PpNm[:'SZ&uY+)($HEntq<S
-u&l/JW0i,[i`\6hbAC)Dek&DaR.#fh02ehWj[pjLcoHd$2ar$5j\&c;kC'KC*ASk\4uHKLn[J
-qCo-LZG>kdJ<u-PF9+,lY$-qs(57.I:2^LG=m`Y4c)?Pts_mg'/&,7.Fzzzzz!!!#s'[F?;HV
-+DabjfB*6('6i0YW'h5.?a3O7'K7#C8GYjRk;'9TZ8<,MMcDP9-5ccX'mTU8l1m5B"Wd0"bYf
-P2l=dSdR=LUsQ%+cA4A9bbW:da<Q2$'W>b$V9X/2q)9h/kf"$8//eUa-U6KaNA`N8<40!XB,7
-F\EJiK(>]$U=[S&FPXAH<q:jj^kXdc&nY,f##R2O1!NiT9$0dIaSf^0)<$h-[Dr=GA+W7aGJV
-4k6YYWCWk*AQ:1_1\nsm%Jf9NnU>)H_0OuZrg=416=#OS)TV<=s9l282Md!cVC>q17Vr$l]*j
-8n89.a\)c:!)mVBUb_:/4Z_JI%+_c[n[BZekVUJdW[Gk6Df2Pd9QIdL>X0(_mR+bF@<e4u?;s
-_e-l,mCfF62:]EbV:`kX;fn^,^DY?!],'e5g0"?#QOA[eS7TI]0!LY]3%<9eph%De$iLhK2/&
-GqGk-&G,bZE2?g6[MXM*g.Guj2CGFT7NPRaPZ^?,6W50j:/P6C/X-Ee??eOIqFLd`UHN>Ijc-
-hs.5-n7Q:DV<et0%Q2HO+06u>H6Z`R3RVhL^m2ca-a;&^I@a#t*d-4_LnMrSR<Z44C?Wj^%qV
-4ol(0%HN>\7&_[;Yh*.HrOtI$dD?]p'?X+Cin]P@hqYH11Nb8o,WF=B\uBGl^<Kc/&r?O,Xjr
-HBIa6YU#Z.39AI@#A8)dXVj-6J?#!>R1cJPQN[9e"?!\%.i*rI[V,k[E=AT"5/a:'!H$"Z@zz
-zzzzzzpaR]ii9*]s'?&J[#<u;d!<<*"zzzzzzz!&,GTd!s#%;]ZQ&@en?WQ%+Ht;l&2>eauH/
-nKhRG,%&>68t.2q<@?DQ`&JD3SWgKujQcceV'>qs,A6+C`D8-<iIc(?`)U#=>;DTo2O5#Q=I.
-`sA4j-Xk%0_/;sUQWdY*%H#<<RVT/9jO\.2NHSQTa@%7j-f`)8!`O"]Q_MDD3!/C@-,m?q^YA
-l]48Nn)jM;Oce%C*V7Bqm\0b^'AKQ+26![138'$aQ*.IVO=NJSr&hn4`:*7H8!i:P<@rl=NZ4
-sYbK,-4_6*I]jaIT.Uk:h#-5YHP\BI2S<YD_7ap4[L!6PWepaVl52J"\F+W_p+5=,.d^t7.`U
-gM(ja@%ppHc7P;5"F5\!EI-NHA?=PdFbgThs?7a%FS5LtYaRA]g*5*35H(ZU.,[oN6't=io+<
-_e"=T<f".$cfqAk`F=r_9$CW2D,+/<&mcBg>c>)mIaE=!QrR5]RoeaNg;q??nq:KZV!@Q2(iu
-[T#R.W$?!a]3kShCF<%DS1CfP=/Z"-g-WJJIpYS%VEoUI6GAJlX<7b&9-AQ?dHG9+(+[<@\dM
-ST^&f`\^je6THBe5bSBcD!ks?KR@bosi^N1X!/AAPr,aGtLLN*e4Q]]0sUI#\kl*?]os^[rnc
-Bm4K=!(!36lJtA"'9uW/eD4,1,W]&GP6#GD$.PXPqA<nNR.MS$^M$gn!0m0fkeSp'g`N5#r6m
-H\W$!GPLl;=s#GoK[d)[1Gbg9Lmf1n[_A\5E+a7q4YM$r[i8R$f=n#!Y5$Gflnt/7l!.?^mB)
-b>L*\<5MRMH!)U3;`2b@RY;oA[CK-hV,U.ZV^O8S8sW7Q=m(1,&V@8KM[/6fS"1FM;;@EaWF(
-Oaa!nc'U.i"Ds8:ab2/1[AFn%k746,nOQcf@,'0j(/>,g<`%k>u/@>bk78G-i@npfhu-gYSDW
-mi,k1B7D7)g`l_I%(sClFA92SoS2X.6S2ESPmlZ4pB+_+-G6N&re<9`k"Kc0?LR2WFBjVDan?
-$Ht(kPbD83a:VX^G^ojAQl.`SaPfcC=_O`HR03=CtElkk,b?'_128A-3;7?+m$@=&9,Djm7qe
-8urMTI;ons-S`%Vo'A`&Y5?Y6<J%e>j3pX0&rE5N0>8nX<<d($B=IZNfF0c;bfdI\'Yl9@Tj0
-MCXmUWoBiPN?ius_6:fc@H91n]%l3=Wu!Ltqd@%r3a`o@VN3,dip:pocl4D."n(BYLY2Rr)]G
-F[G,\,8>MG1:N@d#cV>,-K#$m%&;]a&b+CD:KpMnO]kA.l<K4N0a9M2&5Z?:7q'sskjf6L<6Q
->>hg='H5-9<Ripl/HL6lIaYe0Q&,Iklk:'M>9eAD=nhrEk..d^qd,h`dL7@4FL@L1l7GI,t3Y
-B`q!Al4MTd+hZ$JcJm$7o;-#8*LUF-1MGb<^-u&\jkW2:I*PJj0h;74%KU?W2f%&olki@<<WN
-8d6'!e*'C@&6`1P9+p(mPuWc,'fNBf<mS4uU$kSeB+U7W0<'S(Y$Q4I^TC=?Rp@'l"tjKW60H
-_,:_QQO./)<BPR@[AE2lU=qZnS2q^,U=u!k-Jq'SqLh1P\Jj2'"nFs;+RD]f[oj=mA8DmTaO+
-t2U:-3]4[q3#Z78^s9KC/dWY"T5C;^&;S?BDR/($)R0O]Z``Qjq+3YJ4O8TRU#]7E:fB9Ltn[
-:eZClB8Ft-`J]`SJ9>T'([*SW1raEeYYlrU*l3GIGp1IWlV55lnOE3/F1nd>8lP"iBEN4\GG*
-ka[p&nfh<TZ;8f:kE^Ia:C#fJUlI&dX(6``W5'Z8b@ISG@`BfqE&i?c#`>K"ERcU9grL%cB8+
-r:o,dJ:V>)UV)6KMh$r?GHF'[nX7C"^`R7>@u6hnBVH+%a1P]3<\f7rMGrB`YuO6FqM`Q/%OB
-dS6ceI$OC5hhL^@eb6-'Md1)uF_c6WgfM3!jahWGzzzzzzhi'c"glE<QGN'9N"*_Y]mBaSK\c
-_\!kGMeSn'R]d$,*9;>:r5)mlpW<@h\^/E)H[u5OlY]q</6HnHlUODkK"em='G$[4N/P@2PZG
-mt+VFA%sk-.d)H_39ZFB+cge+*.C[V@,[L[-N<Joj5[oSr:A6*FJZmo0;"Zd(:-JCGqkh^2W[
-,f@XmA<W9pGbh_nTQ%C@US@G^4]L\YC-UA]:"G<6=0o2!gms/ZCY-A2taZ*NL]L;:QYi?6(I)
-:E!k:iXfoY-qr>r`uV'X"DE9rMDeoRb4:A$R%[4Q,=t02V36ok-K[_L8;8\Z#li,Ki?aHn)(l
-m%9M<20SBS!7]k>.C)aPUfl2Ps]F0AG*^m[heRD_nc(Nfin3#40*I_d<PeKlh*:l0H%^N(5D*
-=sH[99IdZagg?e<@K#=fZBo>:=W^g.Y:'9l*Y\KoGZ"F"N+AqOmfA+]H:PREt&Oru1hUrb6g#
-[B[!'Q,;8JUs6quo.O17$"7p6%&MY^.l?j=Qr1+7[4N;nLOBDE6cDB^YI8o>W"!LRPY+_tQtr
-$FDbQ'.-Srq8DFSMECrWqE-Uj&MZ'l9W@clIqiWS.^(kUDAB:HpDT0[<;rqbO<W(m)e!n;BtC
--Cfi(n>NnJ+\!AeK#PQ2KPNI_E'O0@Yf&6rbO;n)mW%epMJKdPs)+5Rh;-RS`_f.D>jKhJ$7q
-f<;6g.h3>0)WGt\Nia>eQXCA..17db"5p(5e9KO\t2EOt21P9-'-D)hhn!d!8C4?UGgJ0eeD=
-/bYT>\2Z/6DF[:tn,MR?J]S1Hf?>c*aG"g(PKaM84]s0X[<oW1Oq9$R&O=g\`OW0IPCk4/a8[
-V4?kbRW$C#gVQnjC:c@r3U*6B?.drV&f02\#d_f)2(Q*`R4qZ_C6MOi^9++fm5sK;CsiY]oPG
-tVm4t?CbGb02c"o**;=3&\V"CmWe2F*EWgG'L8ubp/DLukif@pd):=QHb53&0_lVsiP/-OJro
-bm!c#Hb6+@'3ZBL\5@^_j,i$j5dNTnaGGoR8FXPq2)0Chja(_<Lss-CA[imD,B!cpm,ZYT8`S
-.j(@5uD]ZVg3^4@[[R]5X55hp549YiT#LitGa60r%_r(dh5A9@G)#~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 621 416
-%%EOF
-
-%%EndDocument
- @endspecial 396 5096 a
- currentpoint currentpoint translate 1 0.45 div 1 0.45 div scale neg
-exch neg exch translate
- 396 5096 a Black 3645 5692 a
-Fi(20)p Black eop
-%%Page: 21 30
-21 29 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(3.)h(CUPS)g(and)f(Gimp-Print)p Black 396 579 a Fm(No)n(w)-6
-b(,)24 b(you)g(may)h(click)f(on)h(either)f(the)h(w)o(ord)g
-Fg(Pr)q(inters)h Fm(in)f(the)f(bar)i(at)e(the)h(top)f(of)h(the)g(page,)
-g(or)396 708 y(you)g(may)f(click)h(on)f(the)h Fg(Manage)k(Pr)q(inters)e
-Fm(te)o(xt.)d(In)h(either)f(case,)i(the)e(ne)o(xt)g(screen)i(you)e(see)
-396 838 y(will)g(look)g(lik)o(e)h(this)e(one)i(if)g(you)f(ha)n(v)o(e)h
-(not)f(yet)h(con\002gured)g(an)o(y)f(printers.)396 1117
-y Fj(Figur)n(e)i(3-2.)e(The)i(CUPS)f(Printers)h(W)n(indo)o(w)396
-2797 y
- currentpoint currentpoint translate 0.45 0.45 scale neg exch neg exch
-translate
- 396 2797 a @beginspecial 0 @llx 0 @lly 621 @urx
-416 @ury 6210 @rwi @setspecial
-%%BeginDocument: figures/cups_printers.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_printers.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 621 416
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 621 416
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-622 417
-12.000000
-622 417
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-e7e7e7
-6f6f6f
-b7b7b7
-eeeeee
-808080
-547098
-800000
-424f63
-000080
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPUBp.Je[Y6#VRe(FdS/7Y#N/Jh#3ACK$'G6?=3K'qE>Fi$5PH+:e,oBe=lB\mtS#kM^!I
-,Lj!1q+HC'.66C'2caC'2caC'2caC'2e7W/W7E]D>UE7T.:'\;ZrlN&Q";q-;cd!T6g/nerPe
-W7i$KB\>2C'UN)ZP"''8T:a[;i!EY`2WL"l*lWhiZRTEB)Pb'+K`M@0QSLD\R4I/=Zn%'?#`>
-d+FtYl[GT:%,[_Zga(lE(OCEnX7*d%PsfP\Er[L3s6HcuiQ*Q5o'EfOUZ#857R)!r&*4E"G/;
-Oa<6/S:quI#]#Q^MF>pWM+<Oq*\X"n3C)^*I5'gGNQ:L)^Oks.gkF9>J\bJdYd%uC'te?:tt%
-#I2OuW@<<bH)P!Q\+2FJK[WEdCF`73B`-W*fe9:Mt/L.!A4Zemo,I#NkrZ<YH$Yk#8ZfZ-(SL
-j,:K5PkQLqSq0h#_Rn'II<7)(s]n>;WB+6=R4>Higu.E_4(lM*#!c7q#+!^tf=#E2X4.&uZ7%
-&#]rM$E+Cr&#]q"&#]q"O7Vfr!70ZT?SDV4(!aq7g<G46T(C^;mF>;(:Z^.*P2lJPP72B22?l
-!Ha1f,lEX7eMFj8gs\%TA:IgYMG@pe%F3Ma_W^3GXk:4esp#dnZfq>*h8(*:E`mU;LkZ.1cPJ
-_Dql[11sdpFe7(H88dE@Y3>/W?[8g=I9Q4S(]-kmd-9=<*Ru)ht;JbVsdg<h7kVLPghTHP4I)
-$'3-cdmoc$;)G&C,IM:/=6#1&>Ff3LYk'OX@eg=jMs1Z_J9@:9d=fC5`]=X6[pdq0;jpJ&W8J
-8N1BPd)F?`]LR@5Ga8fRr$QD3KAeZYs>FoXSZoD-TQT#=mm;H`N.oIos+$VuN:PmnMt-S":L?
-[*c3Ud`2AcVmFTEpdo-m^NQ?Xo`r#S<TgI;2I(SajmW>V72D*4T;OT0NuU]GeY9co@-jEWD71
-rtn5^=ZL#*o.^bVOLrZqoc,d$r:O/hSp[V?b7g(mumle?]nBHB?CD'b1,e0b+V0;0T[3q/gsP
-&<0IDg\n=X2[PD5%BoU`dfWfF'hc<h]M>s1Tl_@lD1)(<W?WSqRemEohr3&;NdBFD.3-[L"NK
-\C*C$L'V"]1@qs2qGeVWENTg6h:n&<4\<Pa)bMu$/,i*9qi8e*CCmhIm3Lpo!_Ob!qI&1Z2.o
-Q3(RsDQJ=s`)"Z>-]j)IrIm*A.FGRTCNK%>a)8Z'e)'NgG=NQliESHgnjS8ODmJ[Ve)'VuAjl
-cPGt("Q(Ou^7c<k@C#N*[dZ@Z#,*p5eWb7k9?lG&aGcouD$HtqY21]Rljt3EJq\nc"P!c@mY7
-n\H6B='hj4-3_H050ho=Gr(@!=a6)6D##4d`11H)!VJLrP$E8JTZ0`_^lUX7*6WD1Q1MTr0g]
-07gcHF2ge,d0,78H*]8<Em#_(M!EL)!%cgT7kupEijUjACmWNg:Fkr9CoT3[HZ*ODsVV];6I#
-_eVdEDR8)2nb`&T^O/X]Y[R=t34ZOh:;q,8gFJd/)[>"I_0$`R-[Fe)dqd,/RFPO@EC@`H94,
-ohkH^KP5h^7D2e0a:sLQh7FadP%_RhAql3oBL!RT0Rb`bNpKp[M9n+K^DB1n2%#-Mb*^W%E+G
-H,"Q)[=ndBXj:(<Pa`;T)bKA?"lJHH1S)D$h3&Ya14<`aG1(+=EoZ;b;*'k<\Lf^FDBlB][e+
-pc)7<!>WT2N$9F8>blYZL2D-UpQ+d"aY'gtMg@qs0rNqmeM@5=T9QI4R&eM`4TgJ[eT'1ll>S
-#*Ptk&%"^N23$6HC[#T'h2*dh"&)&DX/TTPIgFb?*OMbRZsVK`B%ENQ3]?JS"1EB`pLoYOdS7
-trO-C:m1p(,p\PJM6,CHLN4U%b4;0"\;6qbYT0rD9m*QM2arNrLd2Z>+DSPRCb,lo&D3=I&Uc
-.d&"r<,TCJt#L#i[]j'6E`u[Ujn^.]><"LHk&>`unXb9"7VWP$Z2M]nDLOkp(IW7T7epI+S%*
-:qj&Yapfjkr/AcB5EZAaeOFGhITZ,pDR8SFf%LP?4e('%c-#D>qXRk#2s&dTrkKm4;Y"SGhC%
-.Ch7uH2`a%JQ*`ANe*b$)!/-"=Mp!:psGZT?UGHGD7m\s[=X0$cAF>Kl_kBfbZJ`)A0c04b9q
-F8>#`AW,iI4([Gc.b?Tq5S(Omt+Bj)G%`*I<E<c\F@Ga)t4eU1P?eGl@-kF#COGXe_gE+TtIs
-DEkK0@_#*'i%L@FbGW:2lGI50s@D4eBa5$9e.g1;T;EAFAO&,Xs*_g[(FbRUA7S1XLATYdRX1
-!BgW""]ZUgp"AS`8>(g@@h.2DBlONqj/>S++b(/Y</\"!]5Ybkf3QGr3Y=eJ/-MQn,Vu`fn'H
-6Jr)I!<<*"zz*m+7<om8kXigTJbUNdM<F8ia8pg\"7O/o[3=__`T`PpH$o(DTf54RA8%c3H+]
-sW"t\ro9IDW6bYcVeo+caEQBl7.E&EeT!I(Iq.B0-`KW2#FTpP(R]M]BSL9/LrY<1"1Htj/*k
-YXjGX7iRu_q[Ie<?r;4\:0kT=S)hq4dYG:Z%8n">aG\6/=P;_CI[-4=6`$%Uu^QP]\RcW@c?>
-%;SrN7Gie0Ck*Q?-b13Dni!>M;Df6?&R#XuCSG8oo(9DVhRFE]m9(RlQpB(20Pt"bA__UF;I,
-PK300Im#SnRiWm+A50gd<_ZLA9f5YO2F:?WCTTMsHhAAQpi"dYmE5n-"96Jd8V/`aUD#RNPg1
-+=PqR4(9mAL56\qdC8+##KijQt$4]0&mi4%g\-NS8D)Fe,O?MGt0OSe/*$'F$3:2^fg.SR4!l
-*oibQ2ZY/^$1uH+Q6$0dHr,=-of&HBd9[gWFB)$3s523CnESWNE"NT8Bcd#eJ?SP?3MF7(q_;
-Hb3l7-^bF.>HJZ$/\+VTkNg[ObqD)+u'"-A7]7-lbhFtf^)c/-d'^a<iGoPIOY;%qVk,-b"T5
-'(Q('^KcNAssscBdkZlqE^T/]5Om.^[f4<gsqVBu/u_U>]#Q`uB/<hAbJcDJ/.^(>,*irMi7I
-ouGu.q^g6HG.WPEqb.$TSN4]K>LU$X%])[F^JcdI`AOH'AtM[c8m+c'X`eFg;-P:F2.k]7Ip:
-e(nm[i=,)3*df?2!sI48)g:8kb[[Q.<Xq8>=&Y*3d/I-eJRq,5<FdRBQh)6Nj@+$QLbDC5tL_
-M"Z2fBu\IWq$DG(>B0tI8CTgc5s4H(aVJiDsZ4X)Y9qH>ALqACC9Un''])q8s.;;kL:XF&8`U
-15ocl(Rs*JrigXQ/(A#.K#?-H]/WR-caqlp`ldU;`>.0F!eX;>>gJE"SekT26\g_37E965:W8
-,cO3ZC)4I[[Zq;-WM=G,V4hWgn!k("/G/(s!VD0==^P*I&enp\JuS3!pa@I8;.0U,XG8a_T9A
-7kkkT>V&sdd#AGraCmn'>R-,HU&`6^L_TV_C#@S.FA>>/#^7D#2o_d(b0Y.W`i=&3NRkEcI`o
-mTB\T:6]km72=n]!Z]_W=Z,0_sMj^cna@u3-K'\.#2Mk]\_[)H!SId6WDjSZ\h@]X+14o^[d4
-D-[u.J.XZ(CBqeVr#*m+6DqD<_O47[Zn%&hrsU9QgSZ?kAZFWOa9*&h\N\:,8Jh1iCqRgjC]o
-@=^XD$W@/33s)1>9RT27\U]3%B6%5'A!YrJTo/<G>?J7E\\`&kGCn$1.)jO7Rg5D_,jn*ij#M
-Kc-Ki&qV6TFGH(CRf\QcPt"f%%'>5<:o]V:Y%3$!F9j[*a.Uc:h`JDFQlm'\R<_(0`M1>5-/m
-D1-EZ8D5S.ae1;,Uio]2g2[kf`7-1rF.'8@gU;-ppA!l8<NEN=O-SI:794a]1cpS`Od*97Q`3
-i(-XV1JJ[oB,D%l4c<*^`.G(_nkgDa4t7APZ5VPU+"p0'n*o$QqYF*!>SIG+$_hqA\!Ib8f*W
-#+'eb/n:qNIGgZ,gu*lqYeuEC[5#Bb0MhI&5s[rQlEbD;\!P/6ojH=LT-Hk">n:q,+E0(g*CL
-FK3pciE"dq/oF5<-=Q7#$)iLLHPoXX6'N=_Xd<._713Ya49HQjXk3fg.Q]$O2;4+msX6R+$DR
-n:qP<[S`s!1[lRd^)J>qoqNPI3*2dEWNa?Kc]o:t8_7\lEkJg%E%iODUZ<YIrqEo%Y9_inJ#@
-J$"?nm"&hUl*4b@\oTlX4+mmC.aj-Ym8TOoc/aaLkuK*NV;JfdrCE5Y]s@)'eoc;oEjAtm;0l
-F\;Sh/$9oHMaLQ,GVg[]-*4Yg0CK5NNn!VYLc3V=^HB24>/lF]h?c.qoTm]B3-351@*Zj%%9C
-[,2!o92YL%\U4iVm=$2&!s<cepD3$+=j<A3To-r<P,#p2lqG#p5\F_-dU`eEP:n<S\1OYPfpB
-nf`SjcV;/==QbcFkA3ia)>9>GgD4453RBZ<IJ]fg4d\bC%Y3i9nqLPu_-u>[l>O/Gf<]aer%R
-]*^$)n4A,2A+uU%n0)a=3$b37:XCSGJeV[^E[3H.7&3ejOBG:n1mN22d\uX(A1,fik?@?p;2M
-:$-%Ig%!'SJbV.2f30K7Xg6)G.fpC)mUCFu<a"n=#k($,>L]Ck%Q7NM0-mu2:A1=g?'752WoR
-\u(PpM^cDRr?nI\<-pbF=3db;!\cHm;=)s-=iACS(/!oMRa7>WK2@g"54RtP,m&+A8+b%0P8H
-QI9Zauo4MHXgisg=GDHe>Lt^;`>)[(DG=5lXQok<eY=]VMEJe\htAkcm3Bng])#G,gYo7]PZh
-[gEH-)mCG0AZM/2tDOl@ieFe$d$2kdFaAio+rO1RaH!=oSk9R]t47I;F(R4]_esD0f>nuOjof
-=\6Z+)[6hqRCq\\P:SHmrOu,i#MT<GkgpgS1F,/"mmDBZd8#O01J![gAab1TfMsn/\/jl>m;;
-n`9T<<b>s4jpZ?\@:0:;[k)2&7VbnFb.#d!Z*j!eY"CoIESCTi^9+l28k#p[4Ypqd<8!L?;lu
-(\)U#XM?A6RT0=+&."MRU<jIXGq;=!2%:Uq1ip=3h[M'\GB5SC&#ILm054j<Y(Qhm5\\Mm.kI
-lWu%U+JoS[;=HQ?b5N,]is1&@eFW$mRs`a)IKr45"kk?lJ]$j>ogAD=\I2;OF!nCDth)dX]Oo
-<2QdOL>Otp.h0!8jhP5!Gj#)6[mS]4O;oMe>K6urkD1/hkg2$KiB.!3E:gU8$s!k-.jkK^GD/
-ZQpdlh_"h9-,CZ-TLCK.BpiLRAI"]'Z>t\je9C)Drk"(DYTT-(7V)Y;CaJ2;ru3K<\GPSD8ZS
-g='b-%%Xki1tlY`^%IZ07AYj$BpR.=a0q?Ao"NA\FhJ.u'I@+C]fXqro!CAlX]jNmC@b#>UM[
-Aj*IrQ4XMsS.Y9sH'!l#RPgM(":?QX.cD9)^Wa3[F!KQW.9gR_-7D>TkqinTAm&]kj"Bt%k`f
-PWdqii]&74_7r;OL',^l(%I<a\l_]Sj9OCJo8nHkgD.J.;P\Mc'Ci,AL=7_$!bH-a[a]IBMln
-fh.0>=$uOqD=BNV7gbWY9JGW^^3-C4Bb"Zd#YK<HJ2BL,&Sm%4JGt)p5lYTn3kO?:2[hD)qT6
-j)oMIc$]>#*i"ZTj&B*]UH?X3C595aDK6Vsu"1h?7OZ>gD*GjWd(#[%^4-pL3srpWGI>\g@rK
--PVc5A>G4=nahqQB6N$ICRcZXXR"+!_'j4KDgTVg;<#Q5ga[m.q,o2TK,[CgV'<7-,iE..13'
-f!&'jm?&bV-1MG((=\>W&7p`WD/B);BtM76tBIIlj4EOU3<V4qnWcc''_FgTmR^/K@)^?n`s%
-<ZB2jOD?SVmceqo0-NkCqqs0QSMmTgP_1LXWFocnt\^W>^Kg(k15qlpLH3#Os$6OB"0-ub@YG
-u9,boH+-Pd>;lfe9CZekHl(TG[%%-u&5Cjk<L#1;`LKkEJHF?j36tD(Cf[ci\mOmU;QX*Qhef
-S5`o<DQ/j\o=ZoRuP?\BnaZAe]-P9=UU'ANMW*T%UH,CpTa5ngj`$K:/hjWASFG_[`BFa:=@#
-W5a^kb]h9SUoPgO\U2b<PMG'FSg*NBX^1:!p!T/k5:OLuUlDBbgdK_OkF:VNV(t*$fjEdl]S!
-P;[KiQbj4<cgW1DAub-V\:\%Par!b"<38"4,:kaUBNc&JKdDMZKDNru,o4e'#"fO"?chi:4&_
-qq!'G9r?Ca.B<S=)DlnjFQSJf,13Q8gWB_gV,Ckl3>?2zzzzzz!!!"DF3(-=;=LVZ#6$lHXs1
-DfeHQ&+)mQucX>[RME%?4Aj^Z$9XPhp&X>Wc6^s15ORsd#t3#BRa]:>g)>a"7"<<-rif2C`&'
-8H@)5!]l'J4Tn@+%Agi9eJ:#5Vr_RJ]S$>U&-N2D#d8l$FMm4#do5/>j:"kZiF?AT%_7('YY%
-#B!0j8+OgU-'&8Rma,FoDd2f\=>&l8<zzzzzzz!!%O>&H7NI>_H1F&H"h]moYk$(QJN`%oXC8
-VB`#KgkJn"s0em%Ao`,1rE1B9VmZSm#UB@!-b%5hb3I?E[VouJ;Zo@J;k"0g+2#ha+)&IIAH9
-'a.[mLuT;mM"^eCn-S+CJ37T(oF]AHXh_;@0YrYDO6>L)pbqC=B&>R_q]Sd3aLSd*2)zzzzz!
-5L!)+1n$<pipp5^cQK?W>WOc\gH@UF#U?iDVu.O'H?*;`jr/&+?(t]PmWS5m$jdb-fW\L!C)s
-45]"*+[]I"0C4gR07<3/'qLJ0>D-TTio$i]3(Fi@^%?u]sQ2+EHdVj]jGjlJ:a&!*qP#iT"&t
-QLcB7_A,%:"Xf/ZU<]6VGt,P<`tm'(McicVn%[^$t;*JY1+U<c,BmgVf3gWru6EUUJ%.1fYJt
-P<s+o$G/CklM?%'%.7AO-\Au$i/-BK,Oe+j1aRAnGZ#L]zzz!-oE1n8l(2MfAUPk>"5Azzzzz
-zzzB#+VF?NjscC@2d7_=Y,Hb'\r&'lseA_^9b&d@/8^:MTtIR5&XJ;Vf6H;qj>_197_"As9s!
-RC8T!4l>JN9@?_k%XfJ$fT_d:YjbrMWiF9%=7'dg%qS%A2NjO_cGVBTQ:t$[n[6IYQKt-<RGQ
-ZkaSj<4AU_CXLA,8??K,_)./eeKQ<_>&1#j%AV7(-Eg;;Ec[+\VYjD;98]$Dj5RXJ%MdsE?U4
-6d(fGe*?c9ljt?"g2.!2m1g/q/@kna3.S%@0&mJ7YY;+VGP%igcme<`$3*OCVq9^fc!lTa:_h
-.3OS\"AElo[>"7eoBI6_]n0DA-/[\F=OXdGTI.i`Wa9WBb'K*_$cW*ru];gi!GBE3Cf:QpYfL
-mr&oMB?M[4sE>Vd>LJ>f&F7M^=4S@%(k=.Iotpa0;4iV7O^$/PR3e/j*!8<2sbq0N*WJ54Q5#
-28_arA8X_<.d9ou.FA%D`kmHU+/7W;NJYk0;l=59glcTNe(:71/1QZ<_Pfus?BJ9@asNlAgHf
-8?LPeY;R&N.Tr!@F6]F,sDa5#@"g76E,/X84[iTci(2DY*QH,?fpm]/6L**NYhrOOW,X"C=bX
-a<o^FoW[q!m.PoX"EhDJKLGa[SUmVX%-pJet&g'EnbTsZT+"nf(;ij1r10>\SKXuQF^nnp\lC
-OHjQ.h(A:(:C"%PtU2dS@iTOhN?*:.ocOpJKeAb%:n=#F!QWG+VeNL$HVRf@)T]fOd"kVLV[B
-YVM5h-YHbfOV3]@O"):Ha;t/>F@H31e=BOYE5,17"GPrd_PCFtOfB7_E"@q(oL?#u/kB?mQDe
-.,9Oj9bG\5C&2Z%=dWR/r1Npk<E^O1#Dq8EX"nMJgi!pmb-sCuU>13%Z/3m.B'*FZ<SEAfaeo
-AVrTK\US)#mcrY'Q\T-l_#&'t'/^%5k;[66.#GT4PU5;_DUqs9fpp6/.)H34/_X-rq!J_@"2(
-,b0j=MikP%("PFp.8sF7(UR7U5UW\V)\%qP'i^-[pX2Z@^>Ti<:UXq8Qfq*0NpBG=!"Fo7Z/)
-M5g;5L\*i@J-A9X)E[e`5BU8'4K+.K(=]W^\MI[&@VhC;HjT0^G\Wt46@U-Z\APla4[V9>V-H
-W+,r@#'&/ul$WdSGp)>NVW4Ok.,R^ZT6"Y@'jSENguTU9]UKk^kBeEhhCEV[>@%-^d\PMWr,m
-7ER]X'7K_.Q7T.X]I.J^X!"9(VB:EQ>/K[]V,bRa^8Z*KJ$aZ!I58Y4C_4d]VeQTkQc=]`kmU
-V?W1/,:`n)csa1ln5V2nlK%/na?IK!VBD8*b/AQ19BX\1!_Rb:A#U\e6BP9IL7j*8rj99Rr*-
-2^fYN>Xi,>(1K=\sHuSHg-6n,YlR>KV#8mFEb)c&k0V^MpPA_09\:&>9oNPmEX!?TA]/]0e1&
-!g<q.jpB8l`<@,KfN2@+LN1)>uNFiqh)%u+s?GkkCLUXdfreYd9W/4BZ&WJb?6m]'Bk%(or*m
-o='CXTs6eRjiY`C&c"R&G/F`jnfXY%<F0bR#NKmtlpLbc'h7C7AiocpfFAU7[Bc8eQgiJgLu>
-J;"1_C*NllJeGJZ@?9WmXp477K%cO?3K^0(%(1e89.nE#g1]POeE6*$%A.7"FFO#+6"%hb,:k
-LkFD+LgEO/YMYY\`(-UY1"d6s\21.@3UKQ4CgAK+QPTH0r=5V%DiCfh<P;VRA184M%OV(o-]q
-tRVhTauM#-dNn0907BaUU#?gS+8$8T.'2LM\[PdbZ6Ph'IWoka@K(?RcH'"0epguq<??[RH""
-i#&WKt\G`k4RFX$jU[m^N1>Sk6Z\b^)4/qF,=@kn2$F_l_RP]=)K[q`#i8dX<1,M"d]9VSX*m
-_o@@KkHWW$S>.`;UAHi(#I.jfO!Gg'WhNr#*/GnPmE=Qe9Bhqi\$."BDcHoqe2i!!(sFh"?ec
-H]E>]=W)s$BC1-O!u#)V_raIgigo%4bJf&rY1\N>;o-6Y]Tq2g2*/)=i6L-Q84<;[[g<RRh"D
-.Fp=TTFX9g<W,Lrih*E]VB)*CMXT81NO!eJDbDnq5UF-FIbA8icG4;*e3/Xl;CL(ilqcVUE,I
-BgX5A?=s/)<F6SfW_;/14NX3bTOFI6sFiW,8&ulTD]<jk!%h4B.-ZQJHFi#/tqsV"tc:eLW-"
-Z"bUI""eq.SWirGHFmd0Zh,90LOX?+k1MZOE_k;%<U,l7n&Yb'TWk@&KP/V1:K!`nZePM7LIO
-$+4*%r5**kULfaGK.rbPSa#@"'A\STc6M:gu,N>98VDO4@!T#iip;-rQh^7%^92XbY4]`1pi7
-?t&I8#au8$I+Y6fdI<V]"FgeXeTSD,;kUS6QUa/*0fMH"zzzzzzzzzzzzzzzzzzzzzzzzzzzz
-zzzzzzzzzzzzzzzzz!!#sm%D_R;!:V8Z:`FWt;JkS"IHh,$/"]$@fm^+G*+t5)8o:g9[D+e!P
-3Yj?ISr@Z._jetk5=KGNH'^,hA`D1%T(ns]XQV[]'d->C3pbUg:7!pBiD/qoeM>iHAIao_shG
-F#.7m%1%Bake*4XIr:A6*E[KeV&*HK#on&)Gf,`B7-<T0V.D^/6.=&D^,'6r;?'=QhX-F/73<
-+aeq*1@-D&G\J6<`&q7QS`-P&A@:<Ws+F4#%OlNn),cm,**k[ClrY,ZSkEPB/7J[r/Sj11K`f
->B7\<2-k"*SUUP6[G[b43ZaC)5\j>UXfSs+QsXr3gY5OG8VPeT*UcCGAipUsD8S"MNRYEDT-I
-\ZdR!Geg,@b6V`#hY^/uhhj[N-23X`@GMjcB!m7eE88QS4cX3DdbgCU>mi2bCCpoi2nn.5OFe
-J?BBPS?$%,itq2nmAIV)+3\jlVb-58ndd.=AZ8J[FLe(C#:%L0NSRZmH7Cb8V`RM8LlE?>WS9
-A1ink$;dts)9fjeEf$;gA_!6Vs;tURV2KVu9b-S5*M6g3O9u$K?C3q=#,O*Qtg:)o_E?#L3".
-*J\-^IY4"(0WMP>gDclGZ4*/J="\;iWFM8WDN$fX0uRB<Sbgs%E?FDgO"Setg_SFnHl$6'PiW
-s,r$#Y>1V<DG3#=U,Fl11Fn)qUDKOgY/WEBEE)l`@TJ,g'ALY\'[FY+%1;m=[pilB3ij*+cF-
-g]9l5P2)Noe>:$;Yda`XOb)0C!J=6&&Z/kBSK.c`KA.lPDSl\08(GKO^LJZBr1-!(D\E$LcNV
-j!P^S!/f%X(f!'EqR/KTJkaj=%7#:*>%DgTXM>(4Hf8(-eG-1ZcPZ#YfWlHo062/?A=/=Q.kj
-3A'",J%8osNY=[#W9kndm=R@R=[JbJB7ab$[Ct6Y><o(!JB@Yif(d1Z$dhr)ps":+9K"s21b.
-fn(I93"@!c%W.5](Rmg2>q&eX$5Ibk[-OJ`f6[r1&06<0Z*CrOD^ra4g&8)"9Y\2XiiSDrZVh
-+2ImVakY0?~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 621 416
-%%EOF
-
-%%EndDocument
- @endspecial 396 2797 a
- currentpoint currentpoint translate 1 0.45 div 1 0.45 div scale neg
-exch neg exch translate
- 396 2797 a 229 x Fm(At)f(this)f(time,)g(click)g
-(on)h(the)f Fg(Add)29 b(Pr)q(inter)e Fm(b)n(utton.)d(Y)-11
-b(ou)24 b(will)g(then)g(see)i(the)e(Admin)g(screen)396
-3155 y(\(sho)n(wn)g(belo)n(w\).)396 3434 y Fj(Figur)n(e)i(3-3.)e(The)i
-(CUPS)f(Admin)h(W)n(indo)o(w)396 5114 y
- currentpoint currentpoint translate 0.45 0.45 scale neg exch neg exch
-translate
- 396 5114 a @beginspecial
-0 @llx 0 @lly 621 @urx 416 @ury 6210 @rwi @setspecial
-%%BeginDocument: figures/cups_admin.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_admin.eps)
-%%CreationDate: (Sun Feb 29 19:55:36 2004)
-%%BoundingBox: 0 0 621 416
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 621 416
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-622 417
-12.000000
-622 417
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-e7e7e7
-6f6f6f
-b7b7b7
-eeeeee
-808080
-547098
-800000
-424f63
-000080
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPUBl`L]QA'PR;nhpV_@OJra;bQAF7B*?EZ@C#34#RMF(ZjG)TgXtZOK7Dgt=:HCaA*!^B
-'^\"TT5+$+5?+JD.e\5]'miTJeJE:`Gc3VDclDGPta^"k)/5Yf%$D-Q'M_GU`$o*T168H]>Kc
->]#CFYi67pKr$Rpo"]ACnR5Dt-K#NE=eA[e."7dNWWO#h&cX)5G>o!B9@+_-T>*g2=(PqTA_j
-0K?VClI5D%ToKtCBj<7P%#7MMfXlUE(;c$VutB+jk1a9g[@UtLT&:-sIm&riQ?[u)IP[k5n)/
-I_%_,Lk:/`f&VZYlp!?:qsM,Uc8Le,?.]6=`*,gK(`)pm(I%$6%6<Y9g-eH-uQ)oB[R!jh4N&
-[C"6F6Hd\q10kq(XBNhh*4mCb(n_Hdg,0$VLic/0g6kt'O/$0&LfMMC1.cQ'6VI\2d/\JEH?#
-%`ImYKQ^8_?fM(KFlVod%':lYXbBOpQtCNJ.XM:?81%H]g:uDN;l0'S)YdTA`Tc\0k)lQk$&(
-bQZK#V?:Q8dfHk-l1k2T$,BNar<5RXU[V#rDDqs;4eE7g[^j`8YKGYf;W@:lV`6iDg'APTL7P
-q^8k>(eX-Ip?h_o['IhgOS_p7'j-'ZJ3Z'\$u+-N[a8@8aH`;2dL(2p")mV[kSZ)t/e!jrp2C
---Qfrqqq3V2=FL('E&54usJTL7-_PS#MAM"BSZ/f<,%Rrq#dPB4^:Ehj-]GC?t+U`Q(IrMdg2
-R1,E.jOm69N.Xja$R[VsAO6rS,T;TZWap.3Mhj-][Bfc9g1A+j/G?7_4ps>D0q$cOSBbn.+CM
-`6k==glAdrp7m^)Ob.:HH!E-20kl;9Z:R2I0GEk+f&s;J(&jegWNnX,X<4343lNs7odqfll5Y
-R?:@e/%p0TIC^Y;F=M+GT;9KNCF:(UHr+l^IE\[-.uYk)%PJH!@PMZrEGC^%W/gMW>cc3ikW<
-C(Rqi(_hWeQ3e&jfSW:5Yf+&ald`6%Do+D(;6NN;I<e#D^[e[F[B^]&K(QAi_:X0&8(RbFS;r
-$>>g?VfZ\kt/?gX#I<>RTX,I[ZE2.^+nQO8cB+_iVN^CCt?"NjXSGeA2SbfS_rn]9UT&#9PU>
-+PYl0?1!%8'<SPBnkt83@[B67W5*X^4BBrK#Z,XtH:-;otX%7*5k7UC)+$sft8j2E^CB^WmMI
-J)`%Ee"<neLlblk)m-HaRC<cb>fKqPmQhD(k),>`WJX<\nkhI7D^mY%+3q7T#4[D<=-ArFMc_
-DTq1\N\7GrOL$3%f#^E_=:U`6PL$Pg]$n]L<e!<#B1phnU2L]Vhb]6G0Nn9&>PoKlMq"3fC>-
-;AWTNGT;<UT2g+5i.h.jPmE*[]4#`:FQLl)dkgoX[29Ll\:Hs?$j.pj<VHs>q]U(4?cq1o2GU
-Y5q7a%4-DLhe+AWY-';k`hQs;iMH"ZDLM`7?Sr[9@.]X@WQ;]Zhep0o?ig_.EZD#7J>pRY-rY
-O0DaC6EDiQPnKI#fU#qdcMrL6`<a3&u<jcpO^Y2BLQo>MdheLcoIB44-/hripc(!rp)l6_/e5
-kpn;RJrbUnC,)-uJE@f#3N4eQ.Q(<)dUd.rgC!r]J<*[,8?hC'tKk)iYq6>F=je^.laEW_LT0
-S3F#mbN>U_g9fMDh"fNJd\8M,2qEU>[>q_\*U2j2MTlo3SjC*X->JH-;"f6geWpJOXP0U$ZST
-<ia\@]<pS=kW);c3E1EXK0bu3c6$>nnSp0lGtjX0=oUV%u9Ea*@ldR%>9D>Ep`$YiP/P`D)'3
-@*rl6#XZ]D>h2n[n>p3U:7ERl=qh_\e6ZaW:m3m,i,2h/lgXt%bdMMcNq7e)l9uY`bceFfopU
-MSE]+S8#7TpcE4bEm$D&,3N8X#\f"0%U017&Q(03Qj:l%Ae`K=*R;k1W=;6K"G.impPqP@)&?
-,q;2s4Yid7F$?h4bH+mSSlu#a^X@)2(Q_Obh5Yj1Ka`OBD$kr_SDY=*K-5Z2+($5>#f6o50De
-2&!C&B+-=,BBQ)g@0GhbPiS3Zjm'-6-^CdAmRQ'u'$!STpn`)']I1COSneX3qG[cJ6\_L(2iM
-'?gZd%!ol8EoXdeC'Ppa78APqkeV;,*PDIRatm%(`T[_#^Y]iX=a0<BM>S_BUX5(-Z7OmYs@[
-SGWJ%Z?j_g5=KR[q7L:Z''O<F?k&lcKQ*R9<KR/NU`*SLCDLO*3sljrhQ]#W=[m]@OnL]I[tS
--d`]tGOMi0U*Ckk@qqK>KKLs-@]I/+QTJj^*geBf\]t63hWbi1ZEPp)X/g\fuEV'8/L=e%s_p
-7'j-,.2Sr9""XpD7E/Ft)tVC'0MaGRb","LpNXi]GlPM_JHXrI++sg][ad(aU37l6h>bIeH8,
-S@_&E$_sQY^+qb-f;Ykl"_n-fB^+0]F,+uuVm^U[W"&B-Ugq/,9ETa7g<*9c2UI)BcDWCtJ+c
-A-S@_&E$Zj->>CVmJ$O"0t%0-A.zzi1@%-L47H="^DH*qBfS2cabG"K5\kDs*V*&c:`"+N4?h
-&<P?,\fh^W(N.VAsjjmU^PIaXV<c2qVkg)kDDm*sP4*Qh'N*P;uf$tg?b0*D;/'\$oV<$RhIQ
-%).@Ohd[%Esdf9YY;Q:+*FA>'`+*]2lX_LYj3I9B=s@/%ST[Y;bjr[)-.Wn8-^U#Aqna):9n0
-a\DE'5E_Sp)Wff3K$N4Zc+B+jS*;quYe3VU;Zemc^SNN)-O'6*GIbP;B[)MS]*5tC.a1.pD9$
-=)>%!TW-3SY<oV+ZD9l7eWrHLfC2Ub=a_4#XpD;)GGRVLT#D2"keejaQdRX5H?rI*Af2m[/V$
-i[/Pa`\JDoa]bD=$!'/e\96h2sJ_A%4SH>hV,'K,46e)m"sSIM#K;!m+Dk+DiFj\Zkn3a"-if
-'H9`VQpL9Ep<=oGh5PMW'fB*!`8:0)JcV_W]$=`9h2GeK\>Z+'eEC7^R[T<[g%pM55?X'A0(F
-q5T^SnT.<er+!R"Z)goi#j)7IQ0[SRF2*NGbl9aG>6kcf`$f7?M+0?FlL%>+`K^LuT;E2W@`f
-bN;N8@QU&PN/\gfRJH!GSg!<SJLjGE\+QP<6O,J0;u'OrrN[Z5g2#$89m4<7j5WbZMP3-/.s5
-^d>O)g&kJaJRZ8^/,7?LpK_r-AX/*.jY0/CP@O9'32N%sYLN3/dZl!([SBr7Hl*7?(<=03^L/
-?Q@?EG@((>H<3W4)X).)mS;$P>Q2>&@rS37W!&,?(3#qT^#j,mBPpB-gIM<:;$u0ESkWeG9-X
-\>a4'DJo0Ara(JtpHVp9%b(-3DkO)*sWqH\C(@@ou53`/Sk;I!lNNujC?g?Bf*;aHbff8;_5F
-[LR+3E#&P`&G&04#)C%9Y'Y'',?2\uh<icb?M>A$N[=G-lr_o'C$O)tfq\Dk.s<.a,!CFs_5)
-mOF*Tgbo8bVCtQP'jS/V+Ue$V-_7C)6=9-8^oD8?eTPbnfU@tA;["qSNpOhjF"OfIf,[8[54?
-bTk4g9OT^t=+Ees:JRO#(JA%]q/GVA-"77c75SOXDgW^iF^1:k]F>HLDQr2Hu?D072%2jF]a+
-[``iW8CUJ'=NpDiHuW?B:\u1ePX/+D_Cdaap06'pVd`hX/ltGVH#LOMJan:^:C?/C9(R'R=F?
-VVCV8ge8MD-mu8)mUV\"h],K^TbAg.ZQQ%tW0\8D2lL"FBXe+q@5f%,,)gg8IVSCn:GICF[\5
-rVX]cE)N9C&ucMVI@_b`&+BB-gNB@FM^M+>)8r=OGi;<L):,a(?FD7l;mFiEJ6Ydjj'%4%D.d
-g^-iZds-,4,:Zn&\[Bg6]tT10is9kWB\6<O3pcfO:?_Bu7lHC9Y,=^DhX3,D]pVA"85f2XX\#
-;\Am/D\gB7;RW+tY-\<4\+oj7Nl?-&&p8bZClC=g)Qd]9>PA%@Rs,2J0;S0k>nZE7<.I<uEpC
-1FX4[^FlGaJ9;LBW`/Z4Xk7#+6d,(7D8'4$0J:"j/Ub%U&#aCN?^8G2galUNJM].8Oclqj'Yi
-^"s9u"OWS?Ygro+ngXc&em__\1\+]B_eL?1tNR;CTG0.6!(&tME`S1.@SG';M11JEOLj\s1Z2
-*<)A<<QHECf9J7Gp`Q,.St'?RKj<*Q.7.=kFkP@]1,*`00Td[C+(*;ql<3A2[GG^%hkGIH!Ge
-R,L3mg0S&dmqS#iD`)]S[aF2?41DjW;H#g)dJRNfcW\!J4+5-$mS&n_Sjk@coBo"*I=s5ug6A
-_ue'DpHf-dlYC%\N%q%16H#*epA<WDOR-mc>GCKGd4eV='*M7r4AUfWh$ADUX7SCWb^Wa4ja8
-+O3?nIbIX8aagHHGAA47SdepeVhPlhIVBUYV^5R,&Z"PAN%EUr*#YPV"/XbPpRHcSQmqH]hQV
-<;^*8DDUV4af0#=FgZ0k)moF9pK1E+&r@Wm$=X?'5Y]5]$EPB\>QTF``HQ2FH$DpTZn(Vq]]/
-Mlj=GNHe46j9d]nE#rmB%c'eG9$D?(O^2D7E"dm>g#-!cARG1;`%\nego`np&1!`46BjI$02N
-/qur?m9W0-O+Pf]:er6Xc<Vm$G1O1gL4X?-;Ni.i\f&saM76uqL+K4]=@HA6qJW=df(Q-,S%/
-m6Ank86o(ZD6=d5^?7V9Z4Xej1#p9RQH->pGZ(XY8m0]/bZ>+<aF2,5$87UX-D<K,kj)Ws7ek
-oI9P959\rB=%3i6>"E=j>OU%-.ueB86uL<JuGc`KK-+s+TSR&O@S\32D/pQ1\BAR-#*3$M>O_
-kjP0BJ<g!N]=@"F[2WD>B,PX0r10(mN]ndRl-_C/%K=*R=D/4JelI@MYl&,_fMofGNq6<iH7d
-i9"c#fS[Ebd/SZ-DEaY5S#)8KBthESF.UD9'T(D:TYQ.L4l),+MR;4&,PLCr3j)1NHb)DS9n*
-kI_aPbG6DsMVe\L0Y].01RjIJ$EGZ51RiYnBjl!oQ%*bj<I9<X_1Z'h*8#^)'@s-?O`*mu;D3
-^+QoCL)4a?VP$,0+@9chuT-&KtK7\h3(a;#6"0(3=_LM>U1(FB?p,PBN;p1Uk2A>ahp58uQ,I
-Ag<5X3C"o."ZBl]2PQbB;c]9DH'G4Pri3O:?W=kYcX=IX,V<b76<uQ:"SHWafa1ciTF9"'fG]
--Dq`8]Q!-G9YrCYj#NVbOh]#jiA&dZI:-$2UCaY#k,C?>"2d^qk7GjNdg;.E;mjI?CpNi_,mK
-t"u1k34Z5"XY]ER!1I,gQfJQd5Ns&.RFg\m@:s015'gr/I7k]og#%(b3dVc&e)QQ.5+rYr1k2
-)LG<8^0/2mN-qEWPA*-pYL`!r`b8*D[P2S\fQ5%jO6T=JC&me40?d"_1XrL]f`?Z<lt+JR<_o
-;jh'^A^]sDi[Zk/e#C#P"dj6NL2CT@ajq2Jd(c\EeqI,)a$(oJ\(dT7#&PXg&CP>#RLY/]h2i
-7iif2lg=`<m$+UpoTlaO_8<D<,3C=00\W4FHq#k*H3E`Za^tIon7!J&14/u3UQe@rRlCf/aGY
-r+55q<\1B*+c(9Zpg$E'^'^nfXN(CX\7D"nGhtODqB(;_XP<Ebh/WeHDV)'P@3h)p;aPML+N^
-_3!9[Lg'1FV!'K:3eklLN/>miqOY=/5LtN:<pu/c*;VX;G9[M6XRL05AaB_fkec/qZOS#eAa?
-!r\R1RVV6:I.(bPWKh*ra-5AV"e16.-GCG'LVh\*R9*ol&&V<!ocF&E>]dlG;d3aes$ns^YWm
-!g6-UTE)rjlR%F-'MF\OIak_HD2E;Oh37<d@J&a=gT:mL\&dAHs=+N&o`[d,CjMlk,_np<(ES
-#OT&l:R:g#n+4G?uC@X9C:qidUKB3-m[Pe[SV[^]CH2Fq`mi'rLW"R/S6X#>T@`WA*K-TiEYG
-Lhn`-;LLSnAfgm^\]DQ`XPX?JYmXjnl*fY)"2GMA#RcuiW[(tuZ_l%l1B<JaS=4Bm6T\A5T5_
-WC&CGi`QU6MiK-kc?$B%B)`7>>WFMo?@bZ+Lg8[$rq4P_K]Ooc1Kl6bTp$23Kgo(.IU-r=(uJ
-krbg!oE'f:&[Z/Wf!J+]a-,*+/3j+`j_0ud<E%9eSnmr3<-Iq%7Jm"5Dn%XQIJ--@DHD^?(h.
-&8E$%;bTRlHeT60]5T?^h7CKbJT?K#j/BI^;tU-#N_C+d[=Zg2>*6!`o0<SASi2mfCuLJhtj>
-?ARUC?6P%?u=91<RPf[kf(_FF66Hd*R,QVEGWJ-\M`-:eXCVrjY#$lkt64^7+p=c.mo$#SThb
-IF!1JE(._*sBV?<lHl^WUal\//:'PlS4s+tH!I;.u@,ZMDeE=QXlH2OW\:&*Z\!F4V=AQ>pmg
-bh8C]2`tOok[azzzzzz!:V""Sh6o/40OAYnW,m7.$.%,C'/Z)o4:`;\/Q[B#/G?me-77P\@f3
->oLHCP?HF5L7fXA2;]F=&P8<\:d?2!2%N^R&92&8YqGoWY^gJoL6#GOdpudGi:`Ho'?=*iCJN
-Mlp"1<^W'<QXmF4-q:g;(s@hM`nC0;q<X<&apZzzzzzz!!(qmndN<Q+>ki%&0$uJL^d#``!.O
-k@KR8FZ%34lV:paX-C$NG"\N9?9%NXT\SDOWc^iQ$[b6Ct>CZ9Q,?>aLD;TkJMX@t8RCLtXSE
-fWS[1s1'8*:q.,I^6<JRlE_mn`<mq9INiboIoCmeN9#%QhMEEAP"Jcf>hZV501<*F:?FaKp)7
-iA5J="eS:K&j^AqamIU?7)7=Bb^7cNf:.rt<).qZ^pB)bRpkj&@ra*-L#0%(D9n>J1:9Oi-+,
-$"_4tu\[FKTOkI=$0NZHXM[F$dXgI!bhD0<B$Kq@kgX"9\AfQ[$4Oq+aY[bKlL#X=8p`i/95)
-(.=I9*!QD[=RQZWA_g,>g?HV6#PUi`et:H!uH!7fH<+l&XS=`EW[+sWRr=Q0Tp4I"onW'zzpi
-b#FB("CQC!>DiZa-17p4!uKilA?Zg*R#="4I:YJa%^=^iVhYi!,SErRk?Q7;=(;/MmgBh%$3dF
-%],lq6k2b2Q6"tOB1(pe>@kt,q?D&*Iuj]7o5]@<40?E/s#A8@FCk1pNu*5C:bM)I]_i#TARW
-<7Tr@FA+3oM&%TuLf_32b[G?k9X5M+4bfEL#SD"VEQ0`MIbUN"-a:2mr*Ca/IT1*K&Tq'iH%q
-FA!"=$/*n3Cj",H/isee5C04Xp,<7B)CTMM#gL0n*lqjp/j($F9m&gt[G)No%u,H$rgAILiPH
-D:9.kB;gj)LYe]4WJT+o6W`0ZLYSQ2WVJI.,1Q;d5]'miTJeJE:`Gc3W!uE*dJ=)(GO>DeI^I
-b#2?3^Wzz^r%r%,Lkjemb7\Tbh_-^JnkZ+K<+QN3hSAb*Dd]B%]Bh1#Lir1inTcib)p:Pm[:g
-=#dmq?ocO$VC7G$7WDM>,cio3IC1DV2$K?V_AuP)8S>:t>n/=L%&(+<gC6*&<X4lLd*Z#0%'Y
-S,)2WC4?i@0(V+GC%(-=Z&^U_3T_K)Y9siG#:0U60f(9cOsaHWW&2ktb9+P*QV`ITg.M%*IdB
-+lV&N<1^[d8'Br0[ll@PGN<L3SeThP2WK*5C<Hj&B@Oqn^t#3g=iCTQ>t(VK8tQfbW/ZQ.2A,
-hs1VV,W#eo^'@W-'Rk6HH^i"(s"AtW4p)fcN4O)`dkFMYt'_N+*?ShO\b@lS+P8o^Q5T0uJ-&
-!k)oRXs1A(0.aOpH*K%Mo)lT*sSm3K'@g>^iVhY?ojr=0HEt/Qju51&5:-*()ta-zz!!!"D=Q
-Y'cg:YX8q`g(NgNut?/R`+-<?=g=e-;cPC'2oc[=RRmg;"9Fcf(ktUU)_"Rh&"*(i#NFnh5Cl
-_WJb:mFL0<L>#+)e2D,sEob[N#<2I?k^?lS:Q:9m>F0O)B5g.R,9Z_Qr^e3ZirIbb!U8Cg!f(
-nr`1H0n'hGL%b2Y,[(e^KQ"1?C.;d85FJ40B67T=WB;;l5?d;r^.08Z;0'85VB,q-WO!r3KJh
-"-OS`%*r7cpVJ9M*78]gO\)@a/b3@4g^#00X0`VD<9riEF4n((%738Gf"h#nQU8U*iST#Y/i@
-kd9D.TB#BV_perRo='OgNW_[W8W3,VY_7J@k<&1kX(8/+hn3aB+mn%qX?F<e)(771TW9rF4!)
-k2/T.!fC>95Q*/4?X-W,40(HCLBFY\=(`]?`\nON<KWfN=#eNSMS[%PQn8/f7;=P0k,'BOo+f
->Bi>?CcSra[\:.5c++"@F%['EAm)$ag:fJ?e2D]RI[3E2>YFkOd(.]aa1@RU>G/F(J_In]5]'
-miTJeJE:`Gc34=q+<a,^uTe-5mQ!!!!aQ03Yr^4:^)kKZ#24J"3gRK7^:j7pC4`V0&`s#5/i_
-*`4-fH<+,L+Bi4FJ`Fk9K27j@4!=pJ,>VF"Q3^5Nc\8teetI'\Ui`;;im8aET1p0VRD3Un@/G
-X:@Omdb5`T;JePJR'#Jddd0KB"XqZhi7r<`s[J^QBJZH=TD=N!_mP9;_iF:]!8LYM$5De163O
-O^F-cIV;%"p;%])GRrq59^G]#eVL-cHDu(s:On['Rt^!q82-aq^9T>a5O-Jif".K]$`?0I=5-
-)uos=zzzzzz!!!!E&:X+iZ_+Q0r8?a-56(Z`zzzzzzz!!#JSP2<AD&dql(7!^eAXmDmG+Ak#8
-3'/tT98_#*@J?uEn:?FJ\T;>C!tMI!,g4[OZV?(dS=.uuXh@Qqa\,Z5`<O"#<3=;0%OccbV.p
-qGbuOMlPkS&iRsIs?fbsR]fUBo*HU;ERS+X("EJE)Rg[`+UZA`^G<q.@%a\,eg9&e`2D:pr))
-`"Pc;/0kNX"CK6H`N.#//OL%Q$lX2o&Qid)r;c-gIXd-S`_N<<&HU8?f]qKH0^@$T9&ld\A(_
-f(2'jAD6++WI1#^ahYjdU;(1!Ypc=@WP:KLopFPhp>uFnJ9VLgcV^5@Zie]L3`j9c8ZJ7dC7@
-La9l-XQe@m*4Z;qqL%T:7+82cUg_mWdV*c9GD-WL"g#oiQ#f[1V_VF0A+cQ2$?nU+B3JS#70-
-9)MQ90GNWQ<q\AV[=JFFp1J,5E`Hof@X3dH1Tqag1DF&'@hW0I=eek<6ap,9`>-KY,ctA;'.G
-?Y`25M1c+!6%CK*2aZ=Ah)pP?X9nmZRk'\)7`-uSWY0pr(NAZ*VAO>deW(oodi7k8?G2WM>I?
-3QV#B7S^gi4%bRq\$E@g3@dc+kZVVS%,Q.UeJGf<OK@IK_5X&[AL+8aLaojFKjJ.^#cYnW3'0
-FY4BMJVi=Jd)WddjWE-!M0l$=CVV>6hZC\hcpS@%&>Z4k^$H]9lJ"oR5C2;hcan`PH<QC[Wh-
-!YqYo*!kT?+4;2QE$*04pof=gTUC7C>SIgN^,'_c#E-Mga_q[G>)'9bW7&d7BSu*k+3ObO_;Z
-)-IS`#JE>EJ'a1OUY88*M\:O%k:s55rZ9<0Or8s\E8iV3d6*Is/3Ci8V:,sh^=D9^idR!BNKu
-'Sl7Mrl8ZkCNo-Prh[oLVBb\BVM-!mC\jIL_1F40e8fqleb;>.37A8Rp?W89]!$eEV$!c#>S'
-'V/@fRMM+n*[Ncb1g"C*Qefk!-9smIKR2[),4kuLVAS@bn4P@EU8>;$j^s=:.6+I1=X1>6Vm'
-t&A&[8_]lFPVlZ!S\5#Ym3C.T?pf_r"ZfoY?Z2uo?m+AVq;];lYI#rF.m7Hp1?OEb15p]=O;_
-pfs'pD#Ye=5P0CMou:8$?BL],,&+>c>)>AuQ@'>iED]g,*Hmei`IupJtMWVM(Pp]8j,XkBa=F
-75/eeP\b>B,\qML&hCT@D6HmWMiEA5Ah1iJ@C'D<m7W;nrP3K?QT/97FaKT+AD$#dUAJ-RjkD
-/\N[ORuqa'i$q)/,mmWM*q;!p;E>I=:LR]n]`_'\Dh9=M]iP/Zb^=*LeEQ4'0i=M!\i+7uK`Z
-r`u\`^f3'.I8'e[ZJnt\lNia81FKo>k1?e'R.#S=R()RUDlYfGKqJcZ>=;@"lVU!-Y>fa%lPT
-@hg3Eh-+d:mZ),BGAp"sB81KD\SXmM[+^@AY0#E4onh)T&"OhA>AAX.]ju5KrR]WTL-^NO*P,
-=J9_t=Y_Qai4P8TdGV7'G=37_Bu*&pS^Pam=k2`8DB$am`V:S)&rL%u"4qP1kmGk;oI8RUI8D
-,`H3EB.=63PGYCZD4K9M)mLroIPOVHM\HDPW]4ktM@C9L`\JP$b1(%84f0;[)fQ$4C4"scM+q
-8GW%HS)G$:3^`WKSC2K(7KpcQBon`*g`,#_5SEIOn6TMZ$mbr0:U@Y*(t$n8'l,K75DA2uX^q
-ULnmX\WerG.cNQX[L$Hqm)bM[6:c3=\i3\2>YjH)rDFgo\n*lm/DWVC.J#=1sXDM;aD`"*<e`
-Ha^eqLfnRO<_NaKtkt*<<PJ(NRAk"61TASI&aA0fn<+l2\?Z1:s_tkbKW5:ZI%JRF">bn5':+
-COMAeN4E_Cs0=.SXdaiFU2M34TXa$k5tqAiVo=`Y8^g/0GB4>%?2Wm'km\hh"_IDtEYP<iOTH
-YJEntV^po7`5_Z0=csi1Wu4p:ZSjuI!.^P[dp"#6g#K>OA\A$uCU_J((^LT+2a0crXpe[,08e
->j7VCjQ)$<t0:hmVnkfE+C)ft*m&c$Y,#2FlOh)uIkHP?1f-7fPCMUs+(Y\Z`a\s7s+%o^%C!
-k7K&JJ1W6,"61dkX#Kc,pKs)2!?7p0@n>7Tu`4JCrKO*=>,pp8V^ZXTqjFNcW:)kLorW*RN6E
-A"?Xjuhh4k:c8b/3MVMm@JFoR/Cd#,@Zf]`1<-09nn8-^l1m4I'9iF$t]blo*C5Fq@kipBEg;
-<B)=$9>N)4EAiaj#0,=`%<e;RJAZ>j1Qa\4/sF&s5XY-]L]USb$^b^i6]HI9UHjglnV\]<\2p
-@kaKiDM_c1eIK>#j2u]sEhh;QT>a@'a7hNg]jl(m@HeO5*Y3XHB[Ep=rDt?PIL8HmG-`,dTXL
-K94mo!\Rih\2zzz!!(q)nf*,D=9(#eT26Jo%&LDY%!-(`VFp$`U?Z[bc>c6*Wn!D-d.k6!6#s
-Yrh\2jX?2<kp%%hTRW/j`QmBM5r`W3DPa()/e[9@]Y#IQ]%<c(0Q&A0KZSUNT@QdmOEFul1C%
-81)?=VOR-cc=)HJ,fB2YFar'_tah8M:tu<+g\iHTXG*Aq6j$+Y2`M2\ttL8:Wlb)7JlOoBm-)
-$pe*`+^U==#.YJFfZEfILFH1hch5LriB1RpIKD_=e<,H)1s/re,gS;Q1;D!Z"G&/W#eh%]9Jf
-'*nSqQ5T2n^t]qtTjMf0[DjlU4,a!M`LD[^t0RBn"GqD%B"I-^A/qG+t2f=n"Q/\".t>C#m!&
-qAf1>:_$CQe@+bQ-+.HdM8`ANXjiQ'hH?jq[9+#,D%As/:V)cg=Dgp_^RYupSA]HY4T/@GkOb
-,9V:69?]sJK^VC**#^XR2%2AJRCXQso7F]rJDkHs/V$YilPP/G"tZpDD;:tsU"dZ^8gdNpK!C
-2r?G(<OWla\@[fq)79/fMOS.;Z^/TN14"1n85)KM+r?*V*FJ6eE5b/s+T/JM-<]$l8mt[jLa2
-B]=O2&@T*N'Pd!pBC"7Jh7K.,2fIE%UK(X!7Z/n-JQ(&DUOe(SiW,;FHMLXU>*f@ZlWH(bilD
-.HHZspQF;P!-W:*)919KFW"2Eb*I1P9R\-D+/8ei0RW<<$N=et'/agX8h25+-=NC#I_eMOlim
-Bt9=8[`)-ZC+DHp.@UUE(gWpq2%R)NK5O[[ebV29$<!7T9"CM6M2fTd?MLs!V`lIk$/L:eeLY
-,Th+1u*l(t8rjsB'-C.<':<.f+iW(m-6V%m3K"iU9rW9p:WpS;9GWVNLbChcjog6U7>KcdIb+
-N$gO>&@l'E@S0$SWoYS?W2@K3N:OXdE37,CA[l"oVA$WfWnFWXh)u)S5jd0T_CEmbsVDUqKJX
-_'^bh:<Va\tZ*2=A69oBp+/j#b:tp+TUtWuKN;:-EB&N2<%o8D7G=AQLmb?9Ihq!g+_1:d#g;
-%fX5)^Qfhgk_3o++2&~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 621 416
-%%EOF
-
-%%EndDocument
- @endspecial 396 5114 a
- currentpoint currentpoint translate 1 0.45 div 1 0.45 div scale neg
-exch neg exch translate
- 396 5114 a Black 3645 5692 a
-Fi(21)p Black eop
-%%Page: 22 31
-22 30 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(3.)h(CUPS)g(and)f(Gimp-Print)p Black 396 579 a Fm(Notice)h(in)f(the)h
-(screenshot)f(that)h(the)f(three)h(box)o(es)f(are)i(sho)n(wn)d(after)j
-(the)e(author)h(\002lled)f(them)396 708 y(in)h(for)g(his)f(printer)g
-(at)h(home.)f(Y)-11 b(ou)25 b(will)f(need)h(to)f(\002ll)h(in)f(an)h
-(appropriate)g(name)g(of)g(your)396 838 y(printer)l(,)g(its)f
-(location,)g(and)g(a)h(description)f(which)g(meets)h(your)f(o)n(wn)g
-(needs.)h(Once)g(this)f(is)396 967 y(done,)h(click)f(on)h(the)g
-Fg(Contin)o(ue)h Fm(b)n(utton,)e(and)g(then)h(this)f(screen)h(will)f
-(appear)-5 b(.)396 1246 y Fj(Figur)n(e)26 b(3-4.)e(The)i(CUPS)f(Admin)h
-(De)o(vice)e(W)n(indo)o(w)396 2580 y
- currentpoint currentpoint translate 0.35 0.35 scale neg exch neg exch
-translate
- 396 2580 a @beginspecial
-0 @llx 0 @lly 621 @urx 416 @ury 6210 @rwi @setspecial
-%%BeginDocument: figures/cups_admin_device.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_admin_device.eps)
-%%CreationDate: (Sun Feb 29 19:55:36 2004)
-%%BoundingBox: 0 0 621 416
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 621 416
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-622 417
-12.000000
-622 417
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-e7e7e7
-6f6f6f
-ededda
-eeeeee
-808080
-547098
-800000
-424f63
-000080
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPUl#u't[Y6#VRXOqgP(QJG*/[+HGMrGWUiH]MO*Z_b?>HMp2JoD:0*rIu>3_uO)Oma6^A
-tb_1B?j]-e&@g#1NkF#LitG#LitG#LitG#>psEW-@i;_+-9$[CCgY5#!kYhYC(+6NQ+G#kH-!
-*)pd]HF2ZL;2Zr"(s+"\o?WJ5!cSCi;4I/KAWIJ@e6*Hi(er@A+a?8ki2I.@GnJ1Xj*#QBAut
-2SkO;qZJD1[djr<+MMPI2[Z8Pg\qP_S*i4Jf<g.l/qlj5?;E0(ijjda6h2h]GK"RQpo3cCLY;
-Ho[HbpKB+G`Ki"?a0gAgsE:8@Nliqg^m=`7p0^!>t"(V#0HbXMF*!\(0c*T>#AO+D/@T%[G@G
-,QYFo1#"R+A_'s,W!TLh.b=BuNpVrh#\ed(qD.h2L$6lM&o0[4TK&DC+^S2o)W9p0MR^^7[ZE
-Qt2L=r+?p'*8^$cH1JQpM3l3",V#afLX28Yd8_$1+*/,R(Y&m<$etPr0uj=,1/A:`Hnj:`Hnd
-:`FWn:`Hnd:`Hnd:`HndT>*Pj\/15*Jg'ni"=NqW2[fV05+c.uO1nf4.Za"a&tcpbc1-Y@-@g
-eom%aHSKG%G&>fp^QD3+,GYJQ0@m%aHSKGI]DB9,pE6#j.AV)AXU>Wmqtpd'f(DjIpHg[\eu:
-n+;a[U]@7pJ3YL\hecOCkUO'TdP]#=I?M/RbBTZmd,^-<En?6IkUhn++>jprUp&n853q',H3d
-FH;t]HqO3+@Rt9(JiYS;:)miXI>CTcT?N6VCk"?Mq^OBN*q.]'1M_<L4h;*KRD=V)=7108Uc6
-S<PIl+TU7a;dhno6h0^sI_j7W"oKS+(>`8aO!-2LSgrc*O1`d]KY\V)GpbiRQL$r]Vl_YP[82
-m*)E+NF%!q4q1%D>ni=o-`&Qpg8iN-+7u#OSF^K"9C']Y_dd.K/7tG;9l2@%4cg^$ZfPm'6g(
-Oho6i%>>?u%m\pY]Q.!u[$O!n*=Uq+1m5!Qa7N_4/pIeiSZn8-3/I(\0J)QTi3q9P[*7I'OoO
--PiL]ln^cla:"UAn$Z9MpaNgHne(bJpR@o5ST]/D/uo*$HfHi0>#]rh2/+dW_M!+4@F$B\#6:
-Fk1-n>@QS8."j]*&[UP/]4'g3hZ*0PKeArrDg^[4(cUoGHHL1j5hhkknHjqRhXR[,"m-9]@@s
-ba/Q-[14=8Jpsp2)Id2F!oBiSX4bP%i=Wg*gAp,j1]B4A'V+A87mZCg#Q[dM\H,p0X]*rcn3b
-q>3E>>Iqkj^.ji?6]HS(ZM%9VrZ*MEd[K`A`k/4Hk4(,UN20Kk%]tP9\Xk,B+Zp?ii.[f.C2f
-6GQA_.O8=,`_bPcbKX/!nJM(kN@4_5hqC@br./GMA@1Prtb7="HL)gMt97;htUC9qs0@e4@3]
-faNhH?:TsR^1Yc/Gl>$W7pO-4r`dRfhp)<j[%#UT\#Wf=`I0Ye^cDNASp9^X>X9Dif0`$f>b5
-kLZN@"-Y>0B"Z+&2P='(8M(MXF<DQ2CoG"]8(nCgb<`Y^&QeHo7ePJ<ngJYGuNh`.7c_`j!_k
-M'JE`6`%Eg+Oro530LPc;o`Xj<PVI3^BoK6h#`C")s($T4"uO%4)rE:JnXD-'RRGD9\D2d1&\
-q0gbij^uFH7agDpKPudNR878>DCGuuKtd+m4'8m>\Oh"s-m)$[gh,ldZk6D=>Q2=qJm(!$XlI
-Ae9aU].eD'bDgT]Bu(FOX"X<<C`W2hMlJZ14=Z@shUIu)g=C=5"A5/Tfe>3dQ8m?2bLiM]5o?
-?s4j*?6OR.<TOi?0AHbP-.BoqU;WMR#<:;l'H.U0N1Vt,upG,).^bcb%"J>3k5,H_0<W1@Nk"
-8p`V7<,Yoat\Bul9;>>rN>XA.Dm)gG'&mS"\fc-l,p</=Fm'lrEEpJR#Rq9:$W/^]o"1-\&2(
-ALE#gtT0:il3(Dp.^?<3]^*+*jnk*(T,M(WpmKOn:a?mNi8m88lU[mVGkPG5T$Y*fe7LolmrT
-'hFroR?^9?-+B_7Rp=gOGfP9HmP!/F"L\3epcDQLlqR07Droi7DsQKoT<QBcX0$W=FDZ4(B1k
-,E.L1'ZiZ,-F[Xl']hs4Tsore3ihmLleqR_WeXL@tRde2"(5@6bj2Zunr=U(L:ZSrNb.^njlk
-q`@J=e=bib""V,HPMe!<^=Pap<ih:ikuL#:V\W>c+uL8dJZu&&,:n:UVHj-7<s!iP^%YbJ`e3
-U4!=#)i9#EFmq@>,_K9o/O1CmDXq:BFB^*$45<80+F"k`!UFQJ]0Le,&/#+><^"UV#TJeKWOc
-FcLGDp2+C+CZ_g;"8#3po)J@`5HO><*#>"pQd0RIl4+cbUm!O00&h_ORmU2OrjU'`qa0"onW'
-zzE(a7#A&%3%,HdhiHWRE9kM1RO+$;F:p>p+mSX.u%>&h[7Rsod4GG!sX"U@iGla=.oY&pLiS
-D;Vf1nV2@hVVB!pX)tF&*+0![]5@T8mY85<,)>EV'H<'p:]-S'jFOKH=CLZB#dV-FF'X_<m%b
-:hj*nP)uP/k?Qo>OJ&*gRo_!)aRSh_,&Y9q&c(n'Z1b1Vh1j+V:oNSU-8!CU?HdpaGRshaYHa
-b5t(05Bgms:]Th7'bVmZcYd*aN^R3/m!sbh]"#H]rWI[W6FG]e$B[o*YV@A4KLrV5B=4gV,fa
-?(2i\c",)5]JXQ\(eqDT]5g4oIk.QYJp?o-UAFbuh0';^`#&@%m?.VhJd*T?E@@A3Q5X*GS=B
-(_d=r98B9'Q'gr/TcJ+ge`n(:tpjd$&5FXrLqPWf!pNDTJ8WtCK2hlGQ[e5[?"s4#q,?<6nY&
-oCq+]Wd&*<Q)>(l6(7:T$p/8EFZtrEd%`c&(s-^hcd.b=!t6a?;qlAQ*Og?ZP^!MIOacbQp@8
-,"C'Q&VRL^^'+UEm?2?Tp,uV-qm9d=QF7g:]:>^TejI9nNmTk"k:3V`'M).*&hL%+0"LBdYF_
-TC2=`egrVe9YR*%N&4##_;2p9`Q'!)*baXVS#Y)`ZWO/,.m]IrIEO6#Fj&8F'n7H8Y^>]F]"H
-qG1uFQ"!fCJ?^oLQud&of%?\g4l5Y7b>*0hR@2`td?.:l;-R\(>"dArlJL1;gZVul[p+88l9c
-<(e=uF(@4+6t.A8+grTg?:2nf)6H=a82Dc2#=p0IQ(P4,f:Ee-8TpT`GeB[cp\53sa4MUl+G)
-q1h,+*_"!UKmKK9^$eP+L]QD$-N6Fhe(<H:YW&Degl6Q&0E'XD%B[);O4LP%4Vn=-Fsf=Of>p
--QVAmBCGot5]M#\WQ.XRF(d":;1"3Vgb]gI+he3su\U*uZ7;$Mo8@=kT;LSjPDf2Mr]t6^GX,#
-%\[l/2?gBP(Q)_JLqjP+d1m%pH]ZI[l*D9RD5g$6mfHb.nF.j*u':SSr)3i*Y7/(GO+C,"L:[
-9Shd2`bo]UFGk,)l/Xt!kd,S,j%n1I:oUi3PF`FKEDt$F[e_pJR5oG2O+YaXI`/V4&JL<gV!F
-3lR!^=jYg(.2K,Ti[$at(S?BG?/G8.`@[aE:;&0(a[[:dQ2qu'KT"d3RN/`k(P95+2(G,0J\<
-e/H8?hhMmI'B,?14A%e3q,fb8>T^[W]==C3R,6F1Bg!BYEf8DbJimeV`\:E+\9.qQgs;0!HAN
-9U&Sfs0/5?c)M_j[JqfQ?@UJJ!Y`?Ao/<A<XgYRfF2O!%`AZi,)j=+Qg8UjmjRi-e&$.#2.&/
-MqKQ>`"X]j(gD2DL9A)/\oG([[W0>1X]NQBP,Uohn:%;&dFFZ0AVU?H2.[b.QndqW[rdO#_WN
-20Z&/KOJWNm)D+c<>*g:;Vsa':0"U^MU%GC#@gBVs:@lr3:7RS]Y\[K]Yd%2j0&Yr!>0:^?V&
-e]tct@FM<V!'l'n6eiH,:[G*`DDae2k:19u1%sCuBHLfJ+N<jTbSU]>Z>i5AihLBe;h9f8/ZR
-2T;V)A)n8WZQVe*2&q=052!bo&_rHpM"cU_$u0mT_cN#o.#i0-"CmmM!qu$]07sD.jU>Er3@m
-HBBfe[29k&9sN4FG3(9<`\_kO0i^p'A+-)ng5pU$M)0T+?+IT5qHY`e[]RBjbrSe,Q$:EBQ(%
-\dp@]lGH<0TZgRB_5%;36fmP9+]L%cCp*@"7#<jllT?%2M%XgsOAT[U*YjC@c/*`2"RFSgQh=
-AJi\[BB4*\du]h&mISR.'KZ!W3X+*1i8W%<JT"^8JFes)A6ikZJ=)tolf)D:/>(h[u2i\eea$
->YV^:),&UJp0cT@]I\j5<U!'jQNM\bP?X,(YXii/\diohpD_k",pH5j1lgc'V&#V=d_0s\!Gu
-rJmXHC-tke,qi]Pk-oV('(OhUXdPMO@*ipbl($rnYd;<\_sI8+RL[QO&MZXn/@%^7J\jbO[ai
-"2CgHgp'(F^e^\H5tDo$+"NpWT$Fnb?M^$3A6DIf;qP>Vr\[`)01B%Y0i3^dG?7tK]ecgHU$1
-6qe<C28DT7]5npTE\.>r%&dSS5Zq&?BCQ+QAXDXTooLt_Kp3knR.(+lN2b09^gPu?;lI1H(ab
-h[7/.U+P0inM[`CQnS&`[es.#[A@aM\1AAj1Rs`]E@hD8W*p?fPJF;OOsn#q1G9N,^1k?.EK:
-X&@IeTR)[`*7NefFb@mD;kKCl9@49DJaYRHVW,LEHhmVW88Lg+e"K<ubKHD\)khD?EFQ9O4P'
-);s4S.AjB5=m.<pl!tS(g%]2[cu/;q4k5A$)WRKNk'\LX0#52'$JiAns`js(7.acgJZ_m5=aK
-IH'"m<Tc!rkhBF?G7$(Oej$5_lmlG*RjRY%D-OL3m=HpZPO^3^+O7ei;!)E%=<8&u<J"klla5
-*[il3EskGPBK!qV##V+B:%n?<N`\M_U?,t4e7_DKKK/#/LpL>kVYVM(hlFEU;$G(:<Ab_`mid
-J)b9bhP$,)!L"s^^[)J=jZT-f!Oe&DkgBDkM:o"Q+j6WG'b*TgX]^]%D>*qbd>hrF]30_[<cP
-%XQ-a4's8'2g_+JMI%+il*KaWCf#'.ZH7<UrS'eT?9.IW+Uf)DWY9r=RR,;(Qg2kj-c7M'9jm
-3b=^*$X`A\VRLYZ9T5e_2ViCE"&RZ1MY)n_ku>Za>4U*[/_Re\(#!>*9YTeB8PTZXXZXX_F-)
-%<Z@%R_Nk.Y'8jm4iTs4?8L^X/g^HW<c$$<h.)L\gGZ*nSX#7VAh&iXj4.?)gK:Qqh\PBl4*S
-rZma4Dd:/<"h[tQ[g]0bn6R%"YSgKsTRCX(k<2.Nq<0nHH6U;c3c8rHbUbO:Y_SZO7$'Fpkb/
-Y/3'd!6R%A"Apm>@0fc<1<#6cSAYfp_Ip:dC2QRDKip!;9G0VKqm6YR29LI<GO\5Cd+8)oSp<
-R")t>u\%%juo`V]ILl5-:SbDUEnIc&QQ40F0$uO2hY=m$HgPTumh=fAF$1:3`M"HV^[!V1,f^
-!.>`Rg\6p5F:15q]b#hWD32?'[MrpB6(4a1AsO@7VX0Uo[392&dIaQ^O)p-O:Hj-6L#ATgbqb
-%$O!-0XQBEA%[i*HI&B3!TAYai7KnR/iUI0^ES<mb'C?JH<NTQjZ1l=X>ak4m_]Jihi%gQEUK
-C!/$c:4EB.k?c[H2GHJllFX`;hi4]r-%T/M_&Fq^\5KUaurb=@.:BuQ0](W1FJn!=K1\u(E[-
-PW>EA>"pniU`fQ(O"OcCRcr`Y3X$p_&.*fDgUb2;<fHFg_tb>q,o>XI2GP6V'<7-/Dt'8$?8#
-d&&Is7&G6KZMGpXE\YrG@j??:LB)9,<M)RdLA+T)FEAqGR[A%U1cdc3ZFgRVo^/MVP^2;aa/T
-kcNjL!*^TXTlAo<)?.@_ek>QTA!OS!/sAXj1-.Hd\WfY$J,l#j]^9H]":$=ccEJ1Ye(t'si";
-23!it%pAMjW7>1e[7`*7F]"Gm#>G,OT>D)08oJ<o6a$c!4'QK(,-lVgCb&DTE0kUNbH@kEkRU
-J^q+r]5qPg3;H6RH9>3I,V'+22t-/=KbZ5FNLcg8S@2T8H=q3h7DK:At\WO6>n_[iH?aS(JYW
-5bj6/9f<MTW:Nk\NA5QUYObZSg*MnX^1="o?u1S5:XS)UlDBbfL4,FQ^d-UV(t$"fq%0UU4`&
-a[X4o0kLRdCW1VM'b-YZtgRP92"l@Rp_5>llqW9_-9B0]Z)q&codX^Ct-cRbC2CC]W2T$-kYd
-YkI6OEDJTr71u<SR='I:.@O1^;Q1XlPsW[r%\.\j199zzzzzz!!!#u"Hn7=:d9/1NB,r^rW&T
-V.Nt`"gl0ID6#GOl9McZ.QQ`"[E&RobQVj@Mk`>YBn7Uu'!2`'37Q!W1-"n,WoB<K4-R7(Qd8
-Z=DQ-K@`RS6@N)n6XAh[sRq2K3G`^')piDN#A?e-9e$g\JqAUeLs!JZD)L),V=.:h+F<E!?:B
-zzzzzz!5R4I"b<jCC>c6[CuC==CuC==CuC==CuC==CuC=Y;/P`n4t<,%-9/Wm2Q)Ys"dZt&\>
-F2Fom9+7.emh>=K)J3fjF7!\`Q.l<AiLT>iLgGY[?atf,j_XgdZ.t3M&4]^$ms>$Mr(,C,eLC
-M\tE,"ZpWLTXH6-(2@ob&Bsg'(T&Ap/;!SYLu*L+BL0p?g[fD0[0]((H=:9U$],G=`8Y8$'>[
-M>/+Grl#>j0]E#Z3=J4sfBH:_uDbr`UDD+nV>gXC+Y[3akhbKJP#1`.)O8Q-^DF247:3LHbRO
-o&u>lAX'\q'mP8VAjYd&>ggGZnTf63P_sa#uefdYBpS;c^tKm#4BNB[G=>jj]c-N\X>'.gm87
-YEfScp2fKPqM%+J-B5k$++?)!Bo>LpMJOs)n2#mUVzzz!59!DpH<eDZ[Ymph<g7h4M'4\.Gs\
-O(JrjrJD.g;JD.g;JD.g;JD.g;JD.dBfRG4n$`ujiWj\WFSY8S@$7Ti&9Oq0p?J]qpAt"8(Y"
-#[kDQ5UqTn.I&80UN9E<J5>%Ru^kJC:#Ae93]cB8pcSM/!^#c7\AY@^T2dE5(%^1S&+[<!cjq
-L9/CU9^L<M5#6%8.XeWNGm;-N_7_\CC?%&9^e8_+;'o-1BMdI6#b=CjS'^!]ZXoTZR-P@F:#m
-1J(dAuIU3sd>=qWW?&;@,X!G]4qd5<lmY[0rR&/3S`-h(@\<"k8[:a)3597.[1EY=R?[jOV#4
-9_\NVM(YgJ)k?;@S]l@<ss(^9r^*$.\D&ZD;IE6r#CnA.lu2RQ(V&rOaXrW,d"&*RV"oG+32Q
->CQb'49hIU>4-GIda:i=#&nJV3%!p#pq`M:V\[nD^nXVM"(R`aMkLlYjQ^5n`9'I^<Knp1QHS
-fBl9/pihq^OjJ%g$JJpZ"BDn^6giGg^%c5I`3SmK_5GmK_5GmK_5GmK_SGr'if[ftSun;f#8L
-zz!!'MH0E:r0K7EB_G_*uLS0Km!oEM2_ht+h\j2ZWk?$c!>>U25K%8>`4@2+>CQjD*!<+KI$k
-')VOf)RoB02,FNAY"o$S/W<k56Y1m(FO^r2gm7ULEGK93l-:e>mKjM'V(PSPa$V6AKSu4L/K^
-b!O_m!CAS%>JVuNaD1"M:kW46,iG@D+74FVJ5De1V.CI96,fM56N.c*:qXIG2oqu/\qSd-^-H
--H#(sC%g[$*V`#2jdBSL\YLE*"+9&Nk%9mKfD]"SW$pM?<hYzzzzzz!!!"Lo+:]5c]rrKLeZk
-65?I[^zzzzzzzz0En-er%=Wb;+mg?$)Xnk:_>JtU7*;[NYq:<7;oIC4K\iSA0I\X;g%78a0p+
-gAC2*L/Ok.M1N,5(HEkk]Q`R$@*I:(@[4)J0&H(A8WbL6i=8co5%M^P&(s"9EBB6O2CF7)T`7
-bn8lZLP%N,NQ_'Ri\tRGRD.iFCQ)QaBp?8Uk6XA_6EZbd>>:WN@&?2Vo@]<h!Jc/nS=fqkWfE
-fiQ]^^.4'hPE#p"V]3D#1fm^"F7$u[F2buAo<FC<Q`8\`!=.+DL0ud6:qme$5<6nrOl7Ij+U]
-("7SQ(Pn8#V2[TJn`h<@H\86lACUu;L'ndX8M$^DcIGcfH$Vpn1*#hDo'KLe9c8SPB.2DX(8Y
-qKF5^@bDX-"t]:fP5.7A-gJoU*.#92ekurM3;88/$kK8,M"T$Q*=<`['6rpK.)FdC.h0!lk)P
-+^u?$2bH;`!Xc^.#D5jU87A2uu=.A+W8NnE5>oFAF<2NAAGhea+UXN:F2j"fp)A1ID7^#@`6"
-NtkS*qKVk?Ka0!Xj,ebb']!,e>\XGTrZ[W%HZ_CT4rQ.Taq%[?8RLaV,.qE*]m!im:;ZlSip*
-=`$a$B\f_(o)f79'1d"8?#@ft1-[g'D-V")X!_X4et&g'ESG3jM_pK8f(;k@1r0m6Kko-Bf",
-\Un+n8CH3r3Q`d8l>[-95:1p"-?O&"QhQ(".gQ8GhC2F171CHdkf=`'m6pUlrKl=S.?d>MaLf
-@tDTM2((Ve]*%"BXM,OCJ>J?*c*/RBS[0okON^?9P0SWA1*!o&E0FW9=*2?[u1lK(=k4q,^j;
-UM.B$e2OnFf5+AJ7Mffgu^NB9;pU?U(5h$;W]54O22fIra8P0`PS9@bD^TC].A5tF*0C^U\-1
-BpDNO-?Ac-FT%*d.L?go\o/*S$YBI)b%=]n"gSQUSKF&]8OUn]cLU7:lA=V*hos!8u6uIbqm-
-<3eq%q(S&;F?%,'3KAMeRLt[b18l$7F%\*F4uF^[`n7Cq*1*&Z4Csej`I1W]=q_=1NUE(<Q,R
-/$Or^LcAuF4nT$rM"ktt3pG8JLd]G/`O;'kgGhMdRj`T3DJHFM[;c`OSF(fX2mpS'4-1Y"D/X
-=,>S<OjcZ2T&+o208WYenQ]tPVCI1QP&uir92+C">^95Os;H7A<2afZ'$'^mQMBCC`I"EgF9!
-=Rggh8:epZI#?nFG`p'(r%rGFmGYC?+k?@ZSmG+aPmbc5JBKpgXAj3b5J!S(EkGd0;nD'FN2M
-8gm)0JT5^r2]3IJf"Y<r0mkb:mhie)q5Ge/%p3;+;4^e%-5[a-eLn1qBfT4;h&>5E2#BM(FL5
-=s@kWqj?_9dJB%_ah97Wg[ci+3H8M',kPU\UPGUiQ7*%d=`@#j^WbDn[n&!(bFMp`4sAcM&la
-Mf[H0b^lj9EHVTFM-N91X7%%=;uNFnJ=)3X-H?c2OTo35Hks.h[geAS$6Ldlt@U(Wj>9/;u8N
-u5R)2]:MRC3)mmnPFH5->?cB30u'GZjcJl-".Mb4]>4:R<2_'D:?]aD/`WWrFD?qQAA%=:!C4
-7E!$9OOTMk^9Pn\",Ppr2!IqDL[Q/J*AEc-@D-V#4AQ`%QNI6T:Jj%]SH%oJbo1':X.Ba.d?;
-]o_<l8@P9j05'YhG9a`LLTcY,amOP7(f$D+WE8eAej/eAel4K]U+W^ma!>,XjVS(+tST[9^h^
-nV9=+<M)F(&2.no/4\b!9JdJa_Oi64E_@/mj30D<71uNrAB7#2Z's`*X"c=Y@eo9;/VW3&d]t
-b=-c1>egeI+te5=2-!1E7Rg%e$1':i+nc;kS"MBZl]OX<dD"eg(^*]U\CV[SR1k\;D)Q,c$C)
-Hf?\5&-'s40a8<?hb4l8pQo0YI7&ucG'PoC-9s!cQtJ)mQMo^&OF[;7X\t5!rr>23`g_TigM)
-5=]Y+_o;l6$?sk6hAD$N&9tE-.Bt4B$j-j5?.hrIt^f.6";POn`&$F-1O$r'dFW9i^`b!Im'V
-A*mc^Kq>#ZA>_fmtG2Rd<laqE.I9&I:M%IfWk$Kprd],MA%bnjl/l[qO8Y(dY7d4[Y>NNQ'mG
--s/.Q1<G=.Yn9Q;'`NLa0EH@#M72c<7j?#c55?@\_L9FDcVW[lR0(g+0&1bbK,-'",>uq.K#+
-d!!msPbeMg4]3Y,[jDQ+rAaHNNQ"gu>@4K)S`U^g+&K]M+*VQ@5-A?"9$Q54d.)lf%BO$oe#d
-m[cpA#F\n3AFiWA`&dl/<?U+o<&3q8dqS<aWhDYZ.e^Y@9iR97;arOk`Z^[FoHbU3]\Su(7$"
-mT]s8D7uRcn%)4bhn6Hm3[];QY!k!G`DXe.Se-l?XzzzzzzzzzzzzzzzzzzzzzzzzzzR*%&^m
-`,`d47NWbJ\.W+p6f>bh19q7o;A>;n'QdJKMg6t/X<"%GFtYkH4dp[Pg>uEYOH#sHuspopk7@
-m)lRT\:toPD\([.kA`*5YgU#hf-HuceRrZoGQ_Sk0*n+Z?j72<B%$loV_8Q?n%Yt)^p"*OQab
->Tg5("\l>L'#oo!4&)ScnN:H6]qk2PoaV;M?/.b<ASmT>eYO*i8d-cK/F!Jo)Mq$US'#F!JB]
-?VQ#$Uc&BS@QTAWnsQLPcG[K@2:V=NOHJ&6iKKd9.)#;3fs)ZSW4'5nb]D6+X1#plT0HtOX0%
-_I63^Jc7Vm4Toud36LYA>SqFIX)[dI_1qQo+*W,Fcs<78j9S+8T9Ff$1TXJp'mY=iUd;NnG@&
-R/rp[A1'+gN'_:!c!&p#"I$pP/:[V<;u9PW8T-@MoG3N>!L'BjA2m92YSt)=PJs;*e*D3<,F[
-NelgnnC?pl+oZqMH`>7"4PX8+ANlm(^Q%7T&5*_9&\54el+a&i]-SnD-DH^pICtc@$-Ul>W\X
-F;dEb=.WEe83kp0MRTZRs%N:Tl[KIf1qLp.Wt*dUV0=hko8\EB;SiV&#Oa1"X9'b5&=REao#a
-3Ep9^7=t,J`j+VMWKWeeS!BQ)1TG<j^RBZ2gRa:r25taorUQn26&]9Os3cPccX*0MDG3&>U,F
-f/F";llD&8fq=6H(F3,8FJ0q1HiLi))d$D58G*=_LT:W:,<oXL9f3SSAD1ppAUka3q)Q@tj/9
-s6q?b+N)WEco+@m=H&'Ue5MpiPd-sFhR9]cVAm_HB`"I>Nf)(;Rqq,W\[2jLb20;cdf,N9"@F
-K<`,@WSI6gRdLJh;D,Atc;'/BkXOlc8jk9:#oXHNQXcG\G0i<[j>`IJ(!omD>D`_\o;89"($u
-8b=;^%I#&l@?7B4*"PQ,4<M^2)7@f@-ht3sC9"a_MsXhrDI-XX4hYM7`?)c#_d-Vj2ed^-5BJ
-'VMnXGY5B/^DZWg`l#U@+!/-l5(>%OD3'-NIJdUBp_F:J+&Eod+.l?hLVY(Jrr_9E0g#~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 621 416
-%%EOF
-
-%%EndDocument
- @endspecial 396 2580 a
- currentpoint currentpoint translate 1 0.35 div 1 0.35 div scale neg
-exch neg exch translate
- 396 2580 a 229 x Fm(Click)h(on)g(the)f(drop)h
-(do)n(wn)f(menu)g(ne)o(xt)g(to)g(the)h(w)o(ord)f Fg(De)m(vice)i
-Fm(and)f(a)g(list)f(of)g(possible)g(printer)396 2938
-y(de)n(vices)g(appears.)i(Select)f(the)g(de)n(vice)f(appropriate)h(for)
-g(your)f(printer)-5 b(.)24 b(Note)h(that)f(there)h(are)h(a)396
-3068 y(range)f(of)g(serial,)g(parallel,)g(USB,)g(and)g(other)g(de)n
-(vices)f(from)g(which)h(to)f(choose.)h(Once)g(the)396
-3197 y(selection)f(is)h(made,)f(click)h(the)g Fg(Contin)o(ue)h
-Fm(b)n(utton.)e(No)n(w)-6 b(,)23 b(this)h(screen)h(appears.)396
-3476 y Fj(Figur)n(e)h(3-5.)e(The)i(CUPS)f(Admin)h(Model/Dri)o(v)o(er)e
-(W)n(indo)o(w)396 5084 y
- currentpoint currentpoint translate 0.35 0.35 scale neg exch neg exch
-translate
- 396 5084 a @beginspecial 0 @llx
-0 @lly 621 @urx 510 @ury 6210 @rwi @setspecial
-%%BeginDocument: figures/cups_admin_make.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_admin_make.eps)
-%%CreationDate: (Sun Feb 29 19:55:36 2004)
-%%BoundingBox: 0 0 621 510
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 621 510
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-622 511
-12.000000
-622 511
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-e7e7e7
-6f6f6f
-ededda
-eeeeee
-808080
-547098
-800000
-9a9a9a
-000080
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPUlZ2!r[Y6#VRWWdnaMtG"%a?0=466@tUf0^alF/aaCJIGZ2Ad%;a-QpfXLj4b/saW*T)
-_i#!C.sFTJfUUW"%5YC'4-Zg-@fo2GapY2ITGNk-kTaaW1'N($,!u@YE@(0;Uhm!:GO`YPcI-
-e[F]9<]hW'r/(lEjIX?`kJpR'W5(9*F#L"6;1b8uCHNBG$2Q"PGNanQ;M+>L#l.]oG]d%&/F,
-4Un7"b8q[qB@/)7UkUK;;DD(nca]e0tLDrqFB]9$EV:O&RgK/>Y@jhqD6,A[K/BWF,@ESKK9g
->_%.0gTZo@m"B&MBuBc&IjXK#3%h^*>)k*PgpQ,7FYW^+aG/s;2?p]@T/=\1Q$J.`[3iFg\lt
-GR9%"2YUAgtE/NADK;biZ]I/,LC]*UrCD#%FG4iAI+JPJ&Hro%j61B]Q^S45':g6X@NSEGSRF
-n>JL=)P7nI6``-A[Rd@1"`Ni$,83-)4'V,`ugm#-`0C&/<o`[*_ThoZTl-QlUX06Z(bQ5]*/8
-:`FWn:`H><e->1=[=NXOrVQ_i(6<p[&H#B.,PPk-$\!H:SmH8p^089%O)C9s?U$Wsq2*WKJ;#
-rKUYDVu&m;\Mb@e8#O)F%I_M1#9UYDVu(0N"$O&=Z0ioWdrg*Dc#o-A)2#:Zsj>N/7kl^K,Mg
-+<2;4*SGgrD8-Cb&drJ&SdN%*=4i<Ap/2Q[:p]<fFOl]D-aXM[JnMCo@M^Ec/4gUqU@FMPKM4
-t:)1a%Shi/adug)*r$JdfK@]nLepZt8m=$W'bI-roc/4gUIMfZcU,2I@2g<lO2Yh'k=UQ*(`[
-(01^GWHA7P7^gk4<IY"@F-ANS6kV2W<PJK%P/)iq.['NLh.:1#;0<:hlck+'rg?kC5\I^NNne
-Cj'@=d7Q([Ue`"o7Mgb'r^ghJ^36N]m0>d%2<VX+G1'PLA+5l<Or1OFT;FN3Np]HaX2XpU"@M
-@RD=_TmfNZ,C/i<HU#>t7AllT*/(^P24[=*IK[@NT:(>\i-Y@-%HEVOddokCL'D9@>,:b#AHB
-6iq08U!7o2n@\r=^reeR'7u%1#TAe_?9)nq10qPBA2E]SRn&))BX.#qqXhC%oo+_$h=k:/_le
-t&t;tW>)DWFM_/&>+gi&#]\M_&HAl^[e>@OEWTEh&p$nd+PO<ThE;H[b[_cNN6"`?AY\.$u>a
-`+R.oQ0/ah6&s<nYr.?>[DH'>hNGh'LOEHaR0HLIf_$3--alrfX7?7V;8O7[G`j$%;hjC?s0;
-s&oBu,aL#f@pi(GAP]8p#:B<hA`M*=3L&*Z<AW3#9f:7hMaC3Se`P59kgm@7K($Pi5mX(X"Y0
-ed\3%6)fT('Efs]\=pH1LZCmt_/):qe6!j4H=#KhYSF)`O5=Bn^pI,%3J6ZA/X4h'.HgpG_Hg
-4$.gQYJ^qQ=iopD.8WUFTtiMJ"nZOg1>9TUN610jS#S9R\,MtS<U(V>BfDIESI_OD!m*:Nk4*
-ce(/rM(TT0F2H*h9Alrnj88TZXASS"*.4LCNU+mF0B0d^lX%h/CgTRI=8r%7fWj^Q![*e*j["
-YJ`Zu&EQ8o7aLo).`g>;dj?C,9>bEoYp3P89ELXg&bNl#jY(l:BOi1QSt`nVjbjZ`&j&_m8);
-XYq65NnUkqN7^Hm]&$_sD6Z"j+\^T@Kl3s<<aKX8<c(HHdbQe'HVu?&`NC^C"SSfHJ$-;S(<p
-"JGdUF:_JUCe2LaF>XL?Ko8Xh%_LnZ0keX!#He<Y406C*3f6u?QoBNlsUiB/QkFd(<ubIHs2X
-Er;i=hRQNI.m3.e@:cFS\rlK3[YC.:Hr>t-CX"k>H<%d6;8'C<,I(pO@ASM*fIn^_6(0Q^@E!
-c$VBs1%rjoZGq^DZNG_ng_L'el%)OB&B*N@=i,Ta1]n>#S5HWSTHJ:))[uT+L7Fmoag;nIH//
-B&bV"Dh9dQ+:'A+I%2bOV0&Z/59uH*:ElB4^((b&l('oK!3E,n*I<n&])-D"O[nr+j"F4<*&+
-<OlNQ8GB&6auu_egY0bDY4%[iF19nH2f!8^g4",@SZ=F;VV:U-12k1@Fn1PS/98mJ/)DZ0g"!
-mW>4oGK!8Sq_k;gI=E**%b\l[d9=8o;i>%o'a<O%h>epj<6G;dXjF%G;N@)nC@E.=@jO\f%oj
-*T3e!c#&(c#1ZomG4<:V7$i[n:l@5]9Kh0j6-gE$*cL8_`kY;9)Jlhpc\KLmr-@DgSMj[Wsq0
-%nU!N/,J`.2,G*9ehh:7Z)")I[*aKoXNR?0oX+#*En(1s/Y=BB7Ht/+Wr$.s]I_FIX6(g+iKT
-V;LSNFisH*roi5]'m7.in?mYo*#seQ*.][=J@;F='/Tr\YPRld5k;hj>p[fnP,A\j50mdf9@J
-zz!:ItkII)#=g>bZF[s.MFI]iXHJ+1s(%kh""mBY5"dY^\8hXp-g]DEjlcT$/I?K]nn]@)uDE
-H5!5dX9WGH[jeKha\J#4HM)[gSVI#<:Y'mUIt,B)^RMs[Qg8!<3[0lV?^^6DmnQ1?)JLmAtpo
-Hq;#`=[`@hYp+(fGlYboUNP=8/75G9t1W"3=V\uijMe5DUQ)5&=PQ$^2_pKaqp)\AMrat&i`8
-5@WWJ)'\g:JE)8b\IXd[_$+gS;q$*f&.uPd+H"CN%W2e2D3'VPaSuBmrBVNbg?u[FFh'Ctg&X
-7+5ap8MaJT05jS>2F^V^gMWP.bhpG*N?B9*L?SSa4WLm@cbqd?eb,(c(Rt[7DQt^_d$GYT(6"
-`gBJBuCY,s_<DW2l.2Z)2Aj*YBe>:C*$6-icG#GL/;T2H2r5IhZj.K$m5AO9[UOmufT436/sI
-mp#_CRQ%Tn>:fiH;P-i:<759a=D/0fJ`0CJH$e9BC/p(eb/2Q(>Og_j0V]Blso0F[_8;jCF[>
-d#J.]:[Th3aa,'hPU:d#nI]a$R9(CWK*]E0G/HhTX!4A)1Wa<.&Em*Lr?5)#1Odhn[^6ojjR2
-Dm.[-H:;3k++I7qXk))ssdh;Ph)#ZJ&7_9J\l7'WiA@3*`F%pYIrXE'(6hD(ND`Z!S70eU/7I
-&8s_nT3O$!`3GC)'@2oaS6<1<NU9?qj8D_7m8V]!)4A/U*>rE+[;E$CCPgbKrS+o')u\O6_a.
-XgqG?uAV<GAaE%=+G<'h+o]%;@WC-))\F=Ojs^Ie+gcu%MJ'E"Y#P]P@2[ND!fMiPAqeVDnN!
-C^e-h7]df@h3rl@]rJuaUIAoIio4R;W<r>V7+X%EM!`qXcL0YcXl)\"L@^:E`#I"25ig;U$>$
-IJiYYUGP/6PflttY@k=gHSQm=51cm%UXaW"B\'BqVFj.SJp,6p`mOO0TgpSHXAo:6:'jSG^Ta
-LP^-Cq:,6JpSR^o?]4e95T6fU@t?dfm%DNp=\hHS;c]pDmeF59K7Vk4GfmTXR(D2MgX_Sg85RA
-%\kfp`S+/74R,,a-64oe0D)Z$Ec/RhU`u,H`H+MEHO19GFaS0TR=4$dbn)tPHKp?iBeB^B9W:
-rkXU!S^\cgP.Nar:+V[F)DlQQS1p*o@?$':RlHNt\<*Oj2.e>=#`_9sXg%oRYpq8CkCp]h0r6
-Srd&2R+=>Ih#&"FIo4Y24'Qp$14:%2>nP9Ot>^f(PF8D9hj$%+gpiXgaM%D/$\l>&dcqS_:93
-riCgR1MlqHj/!LY+',bO>'6[Mp1qK?qP0Vt)#p][[i#o$F?Cp62V^r.XA_<q0`cE%7s20r.D<
-F8")A2:.amN[65f.-5u$PQ2FfBYM;:j`Ne?.4cb5l>NC_LiUod@d%FMPckcP.!=jbbX*91'/R
-l1L]QhE-qTdMu?BkaIUF_"NOO#H-dV'J_f3cUUmn]S@eSbE"6>,n^TQ9R9>GH6lf)PQt5eFfV
-H9E'V/7:5`2_-UNC>.2/&m1jB=Ok(F;lZIPnVV[3OFIg9@b8qY*MY,i%Q$X+_)Fsh55J";r4h
-Ugag:<u2\n4Z/0hE>KM^2%IlqrO&mTm*k@5_cbXRI*IjcMl_mX+9j6).7_:A2O:-KdPm9sP>O
--eX58iAGh:Z_nW(][.L*`OI(WH9Z4NN2/4'4?bNc:#0:IT`Nl/GY!ZI^*haH]Bf<!:D+/>_2Z
-^JVHb'YQFBn0qPQ@,TBtjraO`dlXr,c]ku,%7kga>&?g+qZ0ZD_tZ8Hb#fc:Rb6M?F7^\X+S_
-+SQ/R;LFGs05u]q#aX/g1';)%-L5&Hl&NYWX>Nlp1hIO@3jIZQ0qA>OSdW@i%U8RhTi25LM^_
-s[,uJDfW6'?<_*6aj#/FIG/Gi:OhTs:qK`i:?RK&lWWE%:V,B@aPX9Iq`+-i)7VV:^V`&JJI"
-gUuWQf2I'XVK/eM'4g,]<[khXEAY[b:)sADUO/CE7N5bU"'ARji+HDT3-Tk\.)nH&KL3KLst8
-=jg&PcS*<!q3:f.?dpjnfUj\P#>mN,,`FC;(!f&SB?^k2I1-[M/;3X=CoSHS)N0'-,0bu^.)a
-u3/$7@I7BX7rB\Sd$PQaor`qE7"rRC*UMles:;(ap$2cac7GLuHBhM'Yp[HU&$I\Z$V>#JQT1
-Mb;p8nBCE3MbsRGMUBACqUO=D)5t09kN,uY7*33E.7^77^R#l[iVZW%b.p52(EudZOc(_&m%W
-G+*?9`\T=H85mDdiW+1+4@=3?p#>uKqO2dQ'IGVIg%,';]Bndl:[;@:'gC?=r8HDb[+Ebm\i.
-joLg,>c_?+HGWA.;oZcYW@'`ALh9)g=g;bq5NTRg%N'WFDn'Yu]?)\6GG7]?aNI2=9_ZAog;r
-rapt^cQ:!6m5<V+;e"LiS#s;eUMY@ChC(c^>Q-=GYciFDDQ:LU[iO7oG8oPI.4M;1%cS<V3+[
-8F)tP<6W_0M>G+M`<=PQ""+8p0/?!ptm0c)9/iZ;^K-FJT][NmC%KeO85mdb#qO!-U4[OIoL1L
-%I:&KANC1oA2bn`]l@?=n)B(*_u%`5$Mk@9V$LSCY(6N,>=kj49\14Y(qZg"i61Zu$%tWAO5S
-[3O/&p8Y06mu#Xe;e#.'[Bjh#nDU6X-YD+,9cf/X=u.7LH.,\h)o(W3)`=J?$V2c><h@fkgii
-8oX%Rfb`d)Z)Nd*Rr$)5be_/%`M(I)``pNEug%,![p8UAUoR;%'DK#]/(?RSE81,Lkl3B*;#=
-Wul^RGT+>_!POpA_VqpZsh8;\9Z]<E;(D`V)bRo;[SkSIN9rIB#F&A8$sA+c,\5S7i=+J`f%*
-:Xnch8er4I(j0k_pAmFrkY4SXt&FYCkS<R<QG!4%Y#g@-=He#N9o$j*l=hPZmeka\&E-eA"/$
-A".8P^tA-DhIe@\a5i/4lPq2A4"J/SUQcM?L+>d!M?p1=PbNk+&/_Me:eJK!DDA$ZQSFYAZ2B
-cGlm82M>4\1<o#5mGp@e=:u_9Ia[6_Cdns`ULlORj5o;IFJ(5M5]%UsQigZ\Pf*2;`j+>@?<r
-Y#:=P4n^Z\+uf55JRh2dKa[A/pK'>7]p(YdQeVKD00Ouabq"2UU>c!F'tKFrB([S6r`Hg9/ER
-H330#R0Z+5(JWGAu.`30Gmb(6Rt-QN0j'7YF03`6hoRq3-L=Db=sY:Db-e:E>C.uSlUqBGtrK
-=l$Za>3nuI[r<O2Oa54qN,$T@1QdU?Pm'koQ%7a`AN>qkhaAftR['9kDM]aT!Uq@e?5N6cX/V
-`3(k]WK2?1r)Y9c9?/-q74Y5TO]sc]<snYhF8)j^b'-=XQB<A#u*4mA]PBWL(,6CBWe?B=ZMe
-TdMGSMMskWLPpj9pt_9$KXd(pW,L<d>cPce6sU-E:MD45dQ_%F]H90PX7'0_].Z\&Qh>e+\[R
-f5%IO.PB1btN[[ikaV'aI\S9A'IoTg(e5*e!+FP%E&dSEj0rh?;WXn,`@G$:.$Fc8a%@@ilE:
-N;L?F7Q#<JpWZi@Zp/`:Eu^p6WQ??)XFZC[S&K@2,P,W4%t+?:LQ=\V)P`rTk=M1*N_1N&_X-
-/[LL>S\4\j8AG<+'BFcc(q+rR<r_pf2l&!c+Br6[FRuk1/.H#2>/GkQIoZU0kA7,7FJm\?@$u
-WFaUt1tL%c;u;,!.*^UDiICA[u7C"&1YQb<;"\)eK#g[M7\&WpSZo2)!^unrHDIDpUsR1)ra1
-MO1C+_PK"IRQ4\afV3rgCUPUg2.tL_?)SjnQ1B$-g"Tj`6P$i#pOcIe'_KX'OI#aj68PG53i3
-D/iDGQ)%.#Wp5441hdVeMEr.c9UcU5>0b!eC<2go(;.oZ`);d[iEa6fRCG3T:R!<<*"zzzzzz
-p`2o>>>XcMn+A^"++F8e+I*Mf#4=rmbFgb42^YI4JD1W3)lSLanhS?D+8q=O(&faI"2HaLg8L
-m)ZikM]B-*Ufn76'5,+<8p\'c,o7[%NmC'42SI#gf#[=NZ<oHg.gE+cgkTJgb=fZH]B-Z'd#%
-Eo$]Ajg?T6&iR7_AN=Rzzzzzz!!(o?(BAc3e3I"V2Gb!A%9*I>!u6C>5XceR:m&n8dgsL>2s-
-\QM\l-<8^u@G\?E%>RncNCL7#aV[;B,E>NVLu$[9C.3#M81eJb\j$Ym#_@!6:/UsmjPf$N2]O
-)1\"6qeBIm4QmhS$bOg8%)+qG6fifD8I6`(]X%=?UE,t8t>i7p%FPq$\hMDD>3+2C5XhY>WU0
-Y:tt-/(<o\N80lBQMYa16OMFhs8M!]mSTpsa?D:StK62G1-*_LI$rOblAs$68Qf'NoQ$FVF/O
-][%Uq58d;F+kG/GpoE:i4T5#usgV$OupKZkrb@(T?_M4Ap"u4Xj;GT.dDl=/r\?<H&uH8TXF:
-?qu#4DH5HPosWMHnQA1t&4%(Br@=B\jsiF*]^R?617aaH4$gNaGc3%oZZEJ*T&X,YjRXsRg-@
-f==5,OP/\=pc*l/7oHO@<7Dnmo5KA=6ZAeH'D"th^$fH<+lM&F8:_1<bAQ5T`'zz!!&5poC;%
-=J8`b]@bX#V.,`i)KUdf,e-7N+[=NWhD4hqH)lO"k#3oXHB',=S)n7h-A]"C3D;_!ND4hq9D=
-0Xpqr7XK2D?4=ACSU*3SiIVD;ZUP:MOGgg^hm=k(Kd0"N(GOJbc!S'4h#!H.i8+JW'<r2K.6$
-'\A;tTJeJ*ge.Y?JD*7OTJfUWW"%5YC'4-Zg-@fo2Gap_%FdaugS=aC't[fk2HqM':`HorGb[
-k<Wj_O0Q=*Ha)n6(q&tMH)kI2N:.>jf<>#60JLe%]6X3J7DD;[l][F)-UA83?]Tf+SBW]'SG(
-"<G"-Q0D4!M&'<`l;l#UP7F;FQf5o(=gE#6>bY,k^"1R;A7"4,q#BEE$`#\!9sTmJU0RuTH6o
-KW!CfVl2e;DH9c>?*`*fS8%P0fn3)tQTf6e]o\.O(bS"Xm(J/dK-9EU8f/0^k^!m4#"/Fh!ji
-JP<U=ob+jiabFe-7PBpUB6G-d-8bh($nY`\C)&a]DP1D;[JMDTZMQUgW2>Z6N_g"grpOoT%Z5
-C5[Ek7J%"rJ^K^*;i8F6T9^6N\j:2k,()<q?Z./rB(+@.Op@GL2DBjNmj04i`'A1t+ue;f_RL
-%K"SYJR4eO]0&#]re")7r2JD*7OTJfW-pn,8nccYu8k!Eom3rRq<;Vk.T[=RX8^BmoE:NU72"
-mZB#JW%nDdcG3ghl.o5oE;RQX%Cj-I1n*[#%f)Y>Io;#C'1firseZiD&Ba5=\.\Nr%/f-6#GO
-<pj/D<cRmW5PZVi+o72/oTH6oKW!CfVl2e;DH9c>?*`*fS#LitC!O[K)OO[XQG?&84<&qV.$a
-kPDn2j]nY>P9nQ%NZ[C',::<Eo$R7fmE-2^8s/&XeXW+5]m6(^^)3OHPRW"BX?nIpIf_^dng@
-c"Tj:D.$r_j#1$Y[gi8eAZ-&sUoZJ:fK6#@%&-3tm+iYI]LfQg-G<QWj14.KnI;mW-E)n`Q$g
-]!JD1!9TJfUW@Dq86Xlb9OTDdii#do6<+_pW.'''=5"#D-We@[g5a)pGD[=R'UC(hf!D:'0L#
-%iC0RXuM;kXiV'#iT?,[:XjkAdRCHjBkK(q6>1C%9uEfqqE`OjTj9>XoiD@omka]4if7uG_7'
-t2K0Ii[LHsRG6)F\omka]4aR)2%+GLL!:D.`H9c>?*`*fS#LitC!O[K)5]*/8:`H><e->3Sri
-m#]Aj66Ehr1./nK1LlD;ZW9>:6a14JMlE>I&1D8cC_0e-7O(<a/NC;k#1OK_%L'2K4dPD8CUr
-s6lGX9aL"a[=L%XC*Wa<;J'[%-7p7a6#C!<4gp>R1"*02OiS"q.@<Bj42olm:`CL_@?pm?;c]
-AYF]D<Ys0>t0%:#^u^L5L_2R`<KO.nk;%?(>^&jSUQ2Gap_%FbJp"8.2u5Wtbu:_0K6e,sFfo
-n^*/e$WC'q);<:SWs'PQU5Os,lGqfEefO#RiAn40;1:C%HRPc$*#8N2ZE`ke,K[`[=PRg_5p^
-;;"EF4ko$E/9IEi0kYW;n-FjN6#"Fa.[_*uQaZ$#Mh7`1@\"GWuOaPrMcOuCT62h5!JPd-DUn
-nm+%Eq)OhSrpt^\TRt6>^*M\<d3\!O[K)5]*/8:`H><e->1=[=NWhD4hqH)lO"k#3l5sJU0Ru
-TH6oKW!CfVl2e;DH9c>?*`*fS#LitC!O[K)5]*/8:`H><e->1=[=NWhD4hqH)lO"k#3l5sJU0
-RuTH6oKW!CfVl2e;DH9c>?*`*fS#LitC!O[K)5]*/8:`H><e->1=[=NWhD4hqH)lSN'S%3cc;
-8BYR5-[Cjz!!)pl]_qBq(&[[ok^8$Gj5h2Y=eI]-NW6UsCk)K`Iuhl<GUdSD)rq4#E'lRAc4i
-s*kXOItbetdOmgtO4!I,MhR'$e=\f`jI2_^hQ$F6ra:B%BQoWe$1rXOG-#laGZ14X#2@)SS2V
-"EIkq`s#bQ%E]YW9nN'[_JLoE&6+FNR&sn>mBdL>]&4L.0Yq2-]sn2Uc+Y6UmNHYOjM'Qh`j^
-os7CA158h`/Uf[WuA%B+>G*,:]!'Ce%Es4%F]CMU=fPq$DK&)Za-J0aWzzzzzzz!:W&nn:R@d
-IP)i7K:eQ\zzzzzzzz!),^-"s4!_`,"V%0[B<ua&U%\L$26nB1Io*8C9q1E#r'__6X\-\k?Vt
-*lliSP%E#TZRnX0S=.uuX1_X"a\,Z5`<O"#U:2T[3=u,EQE"ZSPH4\j.D#p&=q%2BZSV0GfY/
-cS\AZf0%f=G@Kc+7Pr[@]1atgZd8]A`_-SK2=6k]LEC<Nd=6(_kN:JtCQ>&Co1m]AC`Z<U)3<
-;&oZbEMBpg\;O5`gnqSE4fHOV5fqdIE]'fkaa.4G+SG^]Y@.j`\TTI2UVbm5)%^u@/e8Nk)4<
-lTamKsn0Mi?SqUP#-+1_9'Zs0t>!^:TBHdo3Ga<5<QH%;#+q62JHM3NU8.WOOMFJbPcV9SW=k
--!Q450GJld+13C8D'X3Yu"mg'$YlF/p][.f>:G-*fdm1JO.RPh7530S8DjYO#t8qZ[P)jIW>&
-a]5T7"N^c;:TQ1\Ad"0SN(mt[AW8/H)4FoLJla5nOL021:D?Zo2RMCkqeR2l^9Y&$,Wdms5qQ
-QQMR44"2?gMa#3'LF'pC)N:j0\AM$T53'1OHIKX3gV$ZYaJ<*f_k=3h/[OhktX&e63AYM*Z5B
-HbIi)k+:<[\QU(m(I0**=1mC88:l6g6d"oG'(+F\DHd[:XiDr4&pQ8[aW54Bc?*/l(us0"]Nn
-dY"eB;f44u5oCo'F-/>CVh?qB$9n-<=@C7u*GOkI1<7Td0UlKk<'-m^qjqIQUeL(.8Sen_0ga
-j;cH;SPGHCM&qd?#'@g:5BIXgZojehhC1_+(_^\p3C[/5LW0A7R,WFu%\P&Pi2-1olUX\L=^q
-@33=]V!i+HOj#5jJeJU08+SQbZ0[(?QVKd/qGremLtY--03bI;eQ_lcP$GseVbL,oDsK!!196
-hQQ?\\gP'?K]c:Qp*ACi/0U[6m#C2KQEW89]!/(W!]!O^`:M0'U[]&,C(]A)\Ao(JVqLN3Is^
-n[=1hnZ?nZ:PN$0GLa53$I!k%/ZtW,<X6!WL-5BQ9IP0e<51t'5p[*irYF0VlZ!S\5+SHF+V6
-@dC"!QZP^nmZ2umHg8SZP:MGL:F>'!Y]8L8=?4(B?W01_uCrT#C-d".rrQTA<27M#X@o+nRh2
-ARPY#O/cBLO)cV8@X2[2CTsX]a(JpJtL,;o1feh*tZ@o=YrE&^1Zb8<0W"Ou5;/`(Foh]DGQT
-Z#NaMfh*u)fPF*-LJjkY+)&sj&uTNNhR-cUj"^MJp9jDOgSIuld_D3!d!kV1c$XQWr[d[&cVq
-5+kG=*R`>Kk9P$YW)"X]OoYN+Nq[F-WC0#>&>:\Pq>W%GGZU5UE%Ve%<eNf1?-dH&#BZ88;@I
-d/S3'3Pm]>9Y]mH_5,LB`HAGjBe-fm:@!gOr,o$&pgj?hS[_r$^<W7,^<">^!,c'f17BHgPoL
-kT+LH7#qEfDg@?jL[KOutdq$='OldT)#,CQc)bhm:)3Uk]?c2ggk-qj`p.9BPBG?)6,8plCLe
-;'c/BM^"/Rl)E50EZWX#>1?-P(n_0M1[&b.15\Tk9,"/.&*(m[8s,c_TfOe2Am^V@>/9?9=RP
-PQg%f=;CES&3PPrg.6sd;l2J)m1K<lfml<?UUDI+:1WWN6#BkFfk";e)teT:g-U1giq!;Z`og
-P9=B&TE4MRW;TWEgad5G^Y\A7raL(mR\J[hii=\^T&@C7D,)c@X(:/DnY$58_Lb8gE/[Nm$%T
-!WHN%'+4dgVu1#po?U5Ih48M[[3cZFs]Zn<Piqo7(FV-O`Ac,1dp?$]JF(@V-$F^QBdh*.UrD
-AmZp1_@W#>>KbIn.D<ZfJ95:Eb4Fdk7WU,#*VMRblH"SpiA4@/sk"(aa><urUZ4/0;E@IX0$-
-ed2952mHBOh._GcuOS>D`;1pr6MlHLfg<J$nrKlLK;kTZT&*o3>`LrU*%9*oYUBWmle^4obS5
-fpQtU`1/t3R9"A&lXH>:@pgQkUt]uE9tE*-CVBpUj-lL+R5+tai2P4LCSVWM%qatD/J7fbDBh
-&JgpW!4\2T!,2'H*6Uj,V>!_ZQNfiA`s+/ZCK!o*Bd^l,"-P9Mn1]9,Cf6tCM"7W$!J@_HXi7
-360e(=,;jp/3?'FQa_aO]4g/q\?mLfY&V8ZX^F3ONW%B-B,fi`c6>Rnjo/Md[MjOp+-]B[?-D
->72I`abB=7],O&4c1kk6XL`s=*QA?arSiRY:(=.'"r]DK<B[SFWS+iAWg9R6FC26pRkj<,`7O
-E&18->cR`h^R+ff!k[]\:N:/WI!iPGZ@3a.Xm$?okc5M'1Pfa)Ai)E=YJZBf=<c+k#$=re@e(
-9K!ZP[Qr2Yi;4`g3=WRWS07T*(ot*u2Pr`VIkLKJ6SUGazzzzzzz!8PFe!:$fhTFtU.)lSKlg
-K0+m<In?<r3#8[HZ\F1TbfS$9-n9=h:F'chSd`4l27^^$nmpM7qZLk0<"9KJ_Ht$[GAiDX)5O
-VG?kH]4UY#%dX7.`.T`0d3NJM>3=U-qT7;em@-q&1UA1A,cd2Xjp"*OQ_1hFr5("Yk>;)epo"
-'J-Sciud3[;.p<i,.`;RrB#lRiS=hpok1Su)?X0'-HP6JU:M(5.]Za!9h2s(],d+gf@Q'&0;i
-/mkU3j?idVhEc#)!pN:9*59M)Q-rmG>+>t0Lh^-d__R:!D:S@Uj2[47jD+!+UQC#VW"E7Kg,]
-uIU4_0kLAmcDM/Ckd::4`Nnke(arh6-MgGWVao]ng_8D0oL?+2>`bt(P]<^po%T%*JZ8o<n5=
-pV(o8JpY_=%Wh#h-&F?F/"Dq>ch&is(_M&s,oURg=Y'$87?.X;Yg,Us/'P[5.&VH/lu7iKVj7
-E$S&T`[^?fafQUA9LenAUmJGA]PFbju,d!k[EG]5%aiI3"c%o*K2J],0=[,s9!a@=ZR9ECjD<
-K3&buhDS3:Z+\k/6ZeL"`,T^7OuPFk4"#GBKF!F_@\mVGAbNYg.:"mXgsr4^0R_RUhT>Cn!.q
-Gu*_dVT!.YkP0pLg\n><?eDfb@VAN:NDm;MlW"Lk(i$g-kPCrPB<<%M7Z+.hN7H_-T\J/A-VN
-"C-Ja`O^J)kKP7D&+\V\0>Z#++UCthlC0IK#e(2D(%==Hu3PU/A''7i$7@qsKa:cC2oeqI(oD
-0)a#KfQ,qgKAd+$"6O]Ctl;F5:8TedtOpr/7G[)87C'eUh7O\,icp[<c+[4UM]<oS$JS8-aqG
-18?cr-gJcMWPKH=lkG-2*kt1,b=&N6=J#HhN%!tl0C9nS4F*YIdXQ;k;RcZ-E8Y&V1=GK4.D;
-Ut:T!VE'>BTeF<Hm:oMq-]6(d(T#F!(FRs'9:q0uks&Q%*\CqlW%5"P!/DJ_Ht$[GAi$Wic20
-bh!T!JZ!E-Y*70"MG`-'\#YSIerHY95Wtbu:lhfXZ,>KYi;WiX,E=)~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 621 510
-%%EOF
-
-%%EndDocument
- @endspecial 396 5084 a
- currentpoint currentpoint translate 1 0.35 div 1 0.35 div scale neg
-exch neg exch translate
- 396 5084 a Black 3645 5692 a
-Fi(22)p Black eop
-%%Page: 23 32
-23 31 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(3.)h(CUPS)g(and)f(Gimp-Print)p Black 778 512 2601 17
-v 778 4578 17 4066 v 977 742 a Fe(Caution)38 b(Regar)m(ding)f(USB)i
-(Printer)n(s)820 910 y Fc(CUPS)25 b(v)n(ersions)f(1.1.11)h(and)g(later)
-h Fb(REQ)o(UIRE)34 b Fc(the)25 b(user)g(to)h(insure)820
-1029 y(that)f(the)h(desired)f(USB)g(pr)q(inter)h(is)g(po)o(w)o(ered)e
-(on)h Fb(AND)k Fc(ph)m(ysically)820 1148 y(connected)23
-b(to)j(the)f(USB)g(b)n(us)g Fb(BEFORE)34 b Fc(star)t(ting)25
-b(the)h(CUPS)820 1266 y(softw)o(are)o(.)820 1435 y(CUPS)e(m)o(ust)h
-(see)f(the)h(USB)f(pr)q(inter)i(when)e(the)h(softw)o(are)f(star)t(ts)o
-(.)h(The)820 1554 y(CUPS)g(softw)o(are)g(is)g(typically)g(star)t(ted)h
-(when)e(the)i(computer)f(boots)o(.)820 1672 y(Note)f(that)h(one)f
-(cannot)g(simply)g(plug)g(in)h(the)f(USB)h(pr)q(inter)g(and)f(po)o(w)o
-(er)820 1791 y(it)i(on)f(after)h(CUPS)f(has)f(star)t(ted.)i(\(Note)g
-(that)f(this)h(does)e(not)i(apply)e(to)820 1910 y(par)o(allel)h(por)t
-(t)h(pr)q(inters\).)820 2078 y(If)g(the)f(USB)g(pr)q(inter)i(w)o(as)d
-(not)i(connected)d(and)i(po)o(w)o(ered)f(on)h(at)h(the)820
-2197 y(time)g(CUPS)f(w)o(as)f(star)t(ted,)i(there)f(will)h(not)g(be)f
-(a)g(USB)g(pr)q(inter)h(sho)o(wn)820 2316 y(in)f(the)g(list)h(of)g(de)m
-(vices)e(on)h(the)g(CUPS)h(Admin)f(De)m(vice)f(Windo)o(w)h(\(see)p
-0 TeXcolorgray 820 2435 a(Figure)g(3-4)p Black(\).)h(In)g(this)f(e)m(v)
-n(ent,)g(stop)g(the)g(CUPS)h(softw)o(are)o(,)f(proper)q(ly)820
-2553 y(connect)f(and)h(po)o(w)o(er)f(on)h(the)h(USB)f(pr)q(inter)-5
-b(,)27 b(and)e(restar)t(t)h(the)f(CUPS)820 2672 y(softw)o(are)o(.)820
-2840 y(F)l(rom)g(the)g(list)h(of)g(de)m(vices)e(sho)o(wn)g(in)h(the)h
-(CUPS)f(Admin)g(De)m(vice)820 2959 y(Windo)o(w)f(\(see)p
-0 TeXcolorgray 25 w(Figure)i(3-4)p Black(\),)g(a)f(cle)m(v)n(er)g(user)
-g(might)h(attempt)g(to)f(a)n(v)n(oid)820 3078 y(this)g(issue)g(b)n(y)g
-(selecting)f(Inter)r(net)j(Pr)q(inting)f(Protocol)f(and)g(then)820
-3197 y(enter)g(something)g(similar)h(to)g('usb:/de)m(v/usb)n(lp0')f(in)
-g(the)g(ne)m(xt)h(screen.)820 3315 y(Ho)o(w)o(e)m(v)n(er)-5
-b(,)25 b(this)g(f)m(ails)h(later)g(in)g(the)f(con\002gur)o(ation)f
-(process)h(with)g(a)820 3434 y("client_error_not_possib)n(le")g(error)h
-(message)e(with)i(no)f(other)820 3553 y(e)m(xplanation.)g(Note)g(that)h
-(enter)q(ing)f('\002le:/de)m(v/usb)n(lp0')h(will)g(not)f(w)o(or)q(k)820
-3672 y(either)-5 b(.)26 b(While)g(CUPS)f(will)h(allo)o(w)f(this)o(,)h
-(pr)q(inting)g(will)g(not)f(actually)820 3790 y(w)o(or)q(k)g(in)h(some)
-e(situations)o(.)820 3959 y(CUPS)h(v)n(ersions)f(1.1.10)h(and)g(ear)q
-(lier)h(e)m(xhibit)g(similar)g(beha)n(vior)f(with)820
-4078 y(regard)f(to)h(not)g(displa)m(ying)f(the)h(USB)f(pr)q(inter)i(if)
-f(it)h(w)o(as)d(not)i(connected)820 4196 y(to)g(the)h(USB)f(b)n(us)f
-(and)h(po)o(w)o(ered)g(up)f(pr)q(ior)j(to)e(star)t(ting)h(the)f(CUPS)
-820 4315 y(softw)o(are)o(.)g(Ho)o(w)o(e)m(v)n(er)-5 b(,)25
-b(these)g(v)n(ersions)f(of)h(CUPS)g(will)i(indeed)d(allo)o(w)820
-4434 y(the)h(user)g(to)h(enter)f(the)g(name)g(of)h(the)f(USB)g
-(connection,)g(unlik)n(e)820 4552 y(v)n(ersions)f(1.1.11)h(and)g(later)
--5 b(.)p 3362 4578 V 778 4595 2601 17 v 396 4831 a Fm(Select)26
-b(the)e(manuf)o(acturer)h(of)g(your)g(printer)f(and)h(click)g(the)f
-Fg(Contin)o(ue)j Fm(b)n(utton.)c(A)i(windo)n(w)396 4961
-y(will)f(appear)i(which)e(asks)g(you)h(to)f(select)h(the)g(speci\002c)g
-(model)f(number)g(for)h(your)g(printer)-5 b(.)396 5140
-y(Scroll)25 b(through)f(the)h(long)f(list)f(and)i(\002nd)g(the)g(model)
-f(number)g(for)h(your)g(printer)-5 b(.)24 b(Notice)396
-5270 y(carefully)h(that)g(there)g(are)g(man)o(y)f(dif)n(ferent)g
-(languages)h(supported)f(for)h(each)g(printer)l(,)f(as)p
-Black 3645 5692 a Fi(23)p Black eop
-%%Page: 24 33
-24 32 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(3.)h(CUPS)g(and)f(Gimp-Print)p Black 396 579 a Fm(denoted)h(by)f(the)
-h(initials)e(in)h(parenthesis.)g(\(en\))i(w)o(ould)e(be)h(for)g
-(English,)e(\(da\))i(for)g(Danish,)396 708 y(\(sv\))g(for)g(Swedish,)g
-(\(fr\))g(for)g(French,)h(\(no\))f(for)g(Norwe)o(gian,)f(\(pl\))g(for)h
-(Polish,)f(and)h(\(en_GB\))396 838 y(for)g(British)g(English)e(\(see)p
-0 TeXcolorgray 25 w(Figure)i(3-6)p Black(\).)g(Also)f(tak)o(e)h(note)f
-(of)h(the)g(Gimp-Print)f(re)n(vision)f(for)396 967 y(the)i(dri)n(v)o
-(er)l(,)f(and)g(ensure)h(that)g(it)f(is)g(indeed)h(the)g(v)o(ersion)e
-(of)i(Gimp-Print)f(which)g(you)h(ha)n(v)o(e)396 1097
-y(most)f(recently)h(installed.)e(Once)i(you)g(ha)n(v)o(e)f(made)h(the)g
-(proper)f(selection,)g(click)h(on)g(the)396 1226 y Fg(Contin)o(ue)i
-Fm(b)n(utton.)396 1505 y Fj(Figur)n(e)f(3-6.)e(The)i(2nd)g(CUPS)f
-(Admin)g(Model/Dri)o(v)o(er)g(W)n(indo)o(w)396 3922 y
- currentpoint currentpoint translate 0.55 0.55 scale neg exch neg exch
-translate
-
-396 3922 a @beginspecial 0 @llx 0 @lly 620 @urx 501 @ury
-6200 @rwi @setspecial
-%%BeginDocument: figures/cups_admin_model.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_admin_model.eps)
-%%CreationDate: (Sun Feb 29 19:55:36 2004)
-%%BoundingBox: 0 0 620 501
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 620 501
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-621 502
-12.000000
-621 502
-1
-0
-0
-256
-000000
-ffffff
-b03060
-d9d9d9
-c0c0c0
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-0000ff
-990066
-ff0000
-ffffcc
-00ff00
-e7e7e7
-6f6f6f
-800000
-333366
-6666cc
-808080
-9999ff
-000080
-222222
-ffff00
-808000
-008080
-429aa7
-00ffff
-00373c
-008000
-ff6633
-ff66cc
-7f7f7f
-ccccff
-ffffbf
-d4d4ff
-bbbbbb
-8080ff
-5151ba
-cc9966
-996699
-33ff99
-0099ff
-1a5f67
-0000ee
-551a8b
-a3a3a3
-8b8b8b
-000033
-000066
-000099
-0000cc
-003300
-003333
-003366
-003399
-0033cc
-0033ff
-006600
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333300
-333333
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339933
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-666633
-666666
-666699
-6666ff
-669900
-669933
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-9966cc
-9966ff
-999900
-999933
-999966
-999999
-9999cc
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-cccc99
-cccccc
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff00ff
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-8c8c8c
-cccca3
-8c8c70
-b5b5b5
-cdc0b0
-eedfcc
-f6e7d4
-716a61
-8b8378
-a6a6a6
-GhVPU>B\`C[YCj&iQ5a.,YLCAS<^cXg]O-L5Ks#iLrgLG08A>>cKs^mpR8E@638=GrdWZFUo
-IS,:U;Z'OtU/bBI_7LBGu:&CsZ,_CsZ\oCsZ\oCsZ\oCsZ]:YR)QIDLO,,J]r*cX<<jj.iLP;
-H7A6a'@;FYa=BJqU9Mo-_2;;^/Z^p@,S)G$^YZ.$TZcX8fUPG]qibto>r;Y@_$']MJtJtY4I2
-YP/jfPLgoerFN+LhB*+!Fik[KFRq>0fEi`(W6N!9YhmrB9J^6ObpFsOn3:O(1&6(/g[EY8GbS
-Cm$scpi"Ia)&(lYf21LC]J;-j#cE$MC"YOL:Z&qOa%/qEY;qCb-8j/&^a5\P4t!YKEsps2X<=
-\R2?_u2W"OO(KYFq[-!o?]@!Xp+gAp!@TqFTDY2Ybn\LJC64AM6j=skiTo)"jO4FC=DQ*I`.V
-o-o#rQD?(>m5u/i=J8G(SB482s9PB2pR<kX]Y.f%H2u-/hCjLrBXC3Y\;T(KB,NVDTj0;$\(E
-r;Hn:cijU*TZI>hTIU>Q6'DVZ6'DVZ6'LR!Q`grWOfnXW6Kg3S\@?<9=m2XHleTI%m@3c<FmW
-cil0F[*CN7D!r>.6Km<\/3.7l8FbiePg4km@`q*oJam<\/3.7l>HaOt]DHWE2^Lk8>fno,t\n
-Uje]Fg8k"C\+ll!&gT5Cl@H1\"B_?`EKO@<MEV,f]3PJRi0t?R$jcj%5to[mFmPJD,k"[ReaG
-g?OtK?k#Tb%9j(F)[Z56)rchbKU=`_3R_bib784SIQF(<%oVg;KCORhL/\aHm*p,(_1O`7<p!
-[Rh??E'YkgjWdYfRtjcdoX\%$nX:;r7jb\ftc_)Re1*fu$),Y&4>GDpKd.>?;McXe/<0<`&DS
-.'[lf)ahG2(Hsrtc&]VgbeG`2_64a/85me`]B7QU8XkXT&c\X<Z`f@'C\pED7a3e$gJV3>B&"
-D:/[:\Nr@ll'3k?,54O*$/%<Pm^T$93f?uL2=NjO+&!)`M:llQ71FMt^LCgXr'fG4h&=Yp*R/
-bh3VAG+Xe[MiU4fTc..W?>*B$b<LE2![Vt98B!A.\BXM/LFa#G(@nNr#0nZY!?OB3jqLAc*N?
-aX77_-FE9MuF]I'^/]oqYS%5A#`L;R!rqtC7LLr.5[4^*h'jbd!5m,-(@^&!S$`RieQMPi,l:
-.+5a.%N.Z<$b;;o#L*7J6$0O\a]94jTbAA2jAm?Kk*_g%W'?Cq_tE_S>2\,t$(ng*!(J,hJR2
-4@l``A?\p@2D7D<f\_Pe*WK9H22`Q+c+j3"IP$,1Ir?b4.N8=rAF2Hor7b1G$8pqoN,OpFpj#
-p(7P/FO;R88gc4Z9.c6inY?ep[M#PGQ!q)#FkkWJHQ\Q>t^7?i'U&NV_.;oSfmc$+]Di:WVb,
-RC^kl/Z>4nfFN`h"8[l=kY]J*k$"Yk6EjXS]c^f))a4mrcnnZ>J89o?-P-/4DW::XCur]ZcqR
-PX>h/1YWXr:AtDb'.\85CNI2JujZMU7BcPmmGs6RY-"\scdVmW:@$=m#Puu4;U[XL5UmJ%!6J
-!cEYqg-9,1sUmr&&ihp1u0oZ/')_dAps`o7(o!l,Vf(o0R^Q7@.9WE1SYNNDeC[CJF5CleQ4d
-%-ibqJ8M/W5H.t2^0#?\KmT_aB,_"4mL%-DY;^8[qBW:Zg'hbj)kAXCGd^_Bq=#\IPsV*CBIX
-O^P(l]YB',Mf;E%3^Rk7^d.USF>_3TS!\,_H<6=INQH;_YseNDjBJ'?IQ>A2uk8X%7`Obc&78
-I>m7Uq[\N'`ArS/_#=<6$WkT8>4TCK'eLORmKhlUFYHt)KkPEdZ%/V2HsnLAnh64@DWk0=S/o
-S6'Ih?k%]c-;mV*:Ke7]*4uMaU*OEVm_6($M^>]mi#taI'%rj3FGr4K_"e.U[mnSe)#G7*K'Z
-Bfu&<`G%+1Bi=b?A"\qke(3&^NAY)Dcr(r'LOlg!SJ$r>,_6Cim&tC,eEO<GA'J'GbiS9E-6+
-e`n?:bmWXkT9SB3h<8S<G_49s'tpEGniWZKgZ$t8raTA!>;OB"WZ[F;<piElD0&4:S?FR<*.G
-.r/lu\\2?:1H/cW?G.sk2hq+Wk.j4P>"VaIQj>OgD1d]NYsk,Ur"bV-;6?nhk$*=q-oe`6JjK
-D7m1S=:#99ZgNV[ed>Xjhe)[O$U\fKe5b`Sbq+,j+Bp+led]YP5q*"h/&[qekY$uUgQ8LL\lV
-(F,SEdkR1M!ipD'ZAgusHI$O0S?h;!+?+X63\prA*]2AL852[TW9C#N('cX^n%>U^j_nF1.!d
-#C0jLE`(g$eZNB,&,c<Fs6kkVPGO4`'4.J.:e*+iiuhmGle\Cum'q%I0$$a*grio_A*`Q(n=;W
-%LH_TWb2Am>M,!TW1ah?L*Vlm/fS_Wtp:0#_F0)Jfk>N+:*Rl9BbltpFABfi'GMP8+im2"S<S
->ftO)9g2YONd]t/00DbA'd=%2@k8V!2]oA!)UV]Y'382lU1nQXIO"Ub2HgMG5=4D3XG,TSNMC
-qC="jR&e'QNVYT3L'$X;*bEK//@Sm5/[pkrCgFP[?5]#OU3qq#+a<6MS%PoKLd_ok=8k!URdE
-kP@n/?rR'K18dE:LZh2lV:OU=Li7X!Qp&19G>$S`m5?h'_4a$W6(2n&``C_@hHm?jD!61#a:/
-uq7BcD/m3(fS`b0Te?pXC*!HVe`:oR%8a7*o;?GdbPm39e?c+^it]3T36g?j%ga-l`b=PS_N[
-Drg.hm_urF7i5^i30;Mlu_2ckFaF#U]!8Pj2lmg;uS>::i(!mdH2"lDE$65D.68TZG2B`>B3'
-V=Esn?m.!kcJC:&PoEZ01hX'g+/j`A2a8WO<]\K+jC$V5MSOGZA+LYTU"0i7)PWJBNojmIJSd
-5$4Z>?srfkItQ*+@fR&N6e_PV)d"Koiq3VrD0C3QWKdd8oZnVQjG47dMmU4SNuh'M4SLXa/YB
-bfs@J3.0h%,@=E`C`_\mgY&*+CtP]2c88nPjM8tG<)Ii(fM"4_i`2&`F>aX*]]qp#HFr4AWSX
-!(HWVG7ZL>p'3^("ISb!'KlRfolm.I`7;PZ8)R.lq>q$5N0MXalkJ?^oKQud#n<mQ6e0g=X)'
-@*^hj2K;"%h:,mgW$h3*J&(*Is5eS7fPAe]@FBb5#`\!+e"BSgkak-PgG&^k&%fd[uL81)J-)
-!Dc2#=2OiN@'7I&)PWPjsD13T#n(MmTV@PVN_8OXU\SG-C`Z'/,@]^XCh@/NbIiu2F-omRkV4
-PrMEM'\/NON6iF.)eD,2)g#\L8d"(19sQW&i=kTT2^n?+m=,p0G(/MriKo]dq$mB#iQWkSH$s
-CWom^>P=>j[Y_&/?Vtpp[cn$dGnT3TDY:#a.bg_fDXMWHq;S7T%^p5)D;T*Zg6-*tjfpb)lG[
-r?q.XW92TVHg]X=*\rM/q6hXe,.*NDbYH@/P+nYgcnX].(kWNabtpH"[n8(plk]#qfuXZL"K<
-82W*)Oo0Mc9sWgTm+dq3)rd">nrjGKfBi\PPpK>9*\ZcqV:Bdn!2rl'M#SbW_TphSZXtYFB_o
-5c"G!p>MZ$rr&_#8;jf;IIWp,)hAR/6*TgB$f&OAMRA[uO>gN4sIE#t;D%D\ReSM>l#o5+&lY
-X8?S`Nm6ZaCjhmECX2D/VRA>-0jqgrAttG2/lXCJK#$D9$7?m"G7c.!DaoFe.se5PVqD+8(T.
-K\uS[Rt57RmHjMUE%PY+9)6iR7+AYOe^;C4o^Wh0X;bCpU[_;Tb$AqpC+?^#3HB+uFYb7gmHb
-d;md1^g8!9_gh:XW._9C1>h0"2j/%XHG/T0(*l**$OBcXMn]$[W'9:u'_Nm'!<X0oTM.1+IW%
-\"U]r+`??Spc!CIVNB?o#Jc5DH'63L,7_@\o(J`aIb.lkaR%Sg=n.-b/W&;]g'a^ZEnGq#2O*
-dT=55sIT'@Sm(o`V8.Rh+E\5-fj41oG?X;.WmbNA;CY[<<h6A<'R%uV90$,OWpJo7`?+XRJ_`
-Z4h=lD0ras2TGIJ:bCK:5V&p@c34-KdPo9sP>P-b0V-_J=$2-Vj-Y"ec]A`OOllHJ]d678fPn
-N]3i@WE\^D1r(^h*`D"_h2NK2"*ORFk6Kb4OW0X(9X,(3c_)RYs0R.MPMJ;*q6k.arSmZ/>mP
-Wf^%o><gY?r`VDJN^[$FHLS*ee^`r;dO=5WL%H>2aoo5)#7Iihcbr]jJdp/eg3_mPZ9^Ah"n<
-Q.g\HS]Yb@2)f18(T(caSf>!YjFu%D<KF'm3]2c>'%8]Cf[u./#7]l0q2a!GMnb>8mh/pI6.e
-,YJ%%peH#U*;CQHg9#7$0\EB7(JEEGEC?N%IQSs:SfIVXOJ=:ab,Q+X'r9_8hDQ!0!c1[DLn(
-r1khk8/(DRcg`^J%4g7l+a:`08b2R^X-IUbI5O3^;?^]D:8B4J.d$n;CGh)>e1Qq#Q`*#`7Tb
-A(b#JnZ7r5\W7=hP(f8eL/%@!?XqLX;P[G-*JIUBB;JIBS8m?k7F.i%;[u3@);@Bta8Jbo=)>
-j<MK7k'?Vf;amRcT:IIqV(Yj"MtrLdaQR])4Bb^-UJJo'm>LLa]EXtP'a4&5qJChAO3brf4r_
-(_&R(WJ+87*jG1hm$+oJU4c#6A=lBemV6CCk\,O6,O_+],$8<..C/&D<3@hn`>T.88Z:-)HX6
-7H/l%]A7qI/)3P]`ZgF/ng[_Ek"\e$&e<XCYh^XWLfb@u.EXuBr)SdViH#D4kpK[R!UcH2%jo
-OTVJbENPP\O[/@G7+?et^p4F/PRt%^k2*ZU*LHApC,T^4nAs>P)b/`3X:j[R8d^ch?LUI!al@
-D"5D2_S5T?\>]MDcF.l%h+b+b;c5e**5qAK30ecW:!AZSb:17\gDO1/6#l;-J+Z0/GCOmE@P1
-QlP4N)lCf5&:B1oO.08-<l8!c_%E"(EVSkX4%Y&*H66u2kHBM=7CikCK54_8Me(?.8m:>gHG0
-I,6;*GV$(j4WY0\FIj3cUV>ADDun[4knQF-nW+sm@\QrKBen1]2CN7'Ng.Hg$,t0q!BD@Hfj#
-J(mn./1Ge"aQc#l5Dn=@t9r@R"Oc$i7HSlSJIJhZ*Bs1[/YAUc\De:pcoGQ>.Pl4;G[k7G[\8
-f7/ei$4JA+%Sej0p[d9[`ooEeG]*9CnTnZUgN";D+1/od^ugD,%][G+f>V0\^O%Pj;2V#EH(;
-SBm-CM-/4VXhM$Ea6F8FD0u%pS`E8N16oeinS()VgKN*cB8^9.=*M]pf$XH[WuaAcD@<dJG(8
-4g0K0h&carI+[klL1S`u6dM`J?>PHu*shIlA-g[SpOHY9C=.><CfFA%B7WT]_/`3Cpfg*Nqs6
-;STb0i'QmjS0X7VkRg^:>N(%Z)j/tnJ[GE?=]XuK8%l7KNWFQc0-ZpmsEqo&oVbQjJrQ&1(^@
-WAf:"1qsX:+HgXGnBfj\m*:T\ug2=?nT/N2+Ru7oLM4+h:(VNrF[L)-Rf)7/620>:"bj/h[Z$
-C,$9!=4I;CCN`*VaEOeVa`g35Q0H2T^J]9nW:)PMH$@U#=Jb*O8.J<pCI<5YtGhXl.,70B8O.
-/D6*uiIfHacfm_jRpMCFO<4#Or)r5E/WU)u#9?NaSX+%0>qkekO#%si]9=[4[cYpiV01tOS'W
-TGN'(pY)u8sE/AV5N@eXS<5B^9TiH=VUO]1FB@Ydc!lg+>jZ=_j*b*)"&U0!V%eBt/jH8!0i<
-OVKK-];j(0EYE5[-c)4:AsrZ]u9SI_j;I7jeV922d4E>)1c<GNg?XUG$Y(YCe#aWO84WBQ'aS
-1@r^QnNF`=iYK%ij].NpFHS'tXQ]9M#^<SrE9A.qAY(qLNFDj=s^28)DU"O>4c3OJhR6ncojh
-)=(XGaU<'qnnT%909J?E)W7MGh1@,9B(ebZ^pS\r`KRZ"S`)P.+n`m]_F:C$^p]cRZCA8+`5&
-;N53]PXWtIL45C`anD532m]f`-NcFl;JUK0Z$hJ:"3F;_1-*uo=(*S)_dcEtQ--[eWG%o188.
-5PRYD=qZU\mI_%Xg:*Ds,Y`t79I3V0V-K#*Gr$u%f0[,Lo.Pd,Xg*C[&ua`>"p4'JXcInO\3I
-a5-86P7"t._FEEk%.IAJ$/uj"#^KX[u$gi03?D\4/I!Ho6Q!mMsehCea=GmcDd*+:Ht@"AVo=
-ClXNA^Lc=q:ZY!MIIIld!V,"DE$>I40kER%$MSA\4oo[S(lgB;1cQgWH0aIPrf.OXTd6`m42T
-g]qi&K8-^4+mSGKrpR:)jC&&-P91"@3S%5nF/b&-P91"@3S%5nF/b&-P91"@3T@G=qkr5eY4N
-)RBBmk5djPV$$fWkYfPc).8(LV#dedcrh!3%@Tn@dUg3M+8q=O(&f\r!^VH,@&$7)Z33>2Y$=
-'Wd![?1M'1?GDl"rqe5mM[J.9)O_ESd`!]K8Z$?ulm#$k9$(Vg5\>\qM,RuOj.@"ZH3nRVh[\
-raqg7,\IU5nF/b&-P91"@3S%5nF/b&-P91"@3S%5nF/b&-P91F9?iETO@n9d$+TIcu]>)cu]>
-)cu]>)cu]>)cu_;V2Z6)=pr:UWa5YqR'1arZ=2mZ&jnC!>`VY!QmgMk9Qo`R""k^-Pl*514%)
-\*QWJ`,K@S$s3fjEt>3j0>?%U3:!F,i2bR<fZ(=noG[d!;iu&*,IN9e,ppn.K+BhX.uQQhU7f
-U5$#8Zp1G(hXb-k/IK::;]6%P8:f^[3'TbnRjTdKU%"0Ub=k?PBf[LpAMp^ofPX.<_=eq@)BG
-I!MslL`o1k*rFd>JY'Al0eQrXu]cs&7*>ubOSp7Ci>26cQPoM4%J=;%Y7gH1DjcHqK!1^IL$+
-cQ_27lSTKi_p"=ge(u_VS_$SDDZ#+*OF-4dQ,e(f_0Db.Uk%HSBnh9!ooB"07qSMn*f$W?(UX
-eYmVfoZU5`VFFEgom?X=dJ=cWP@"Te)J(SXo[d<N$F;Gk2g'uF6h4k1Z#25_+1lsTA#+_j3XF
-W:n7%M+3G_8c<M53EK"@3S%5nF/b&-P91F;+L(F?NpAnH%ALefjj6mDbb>2@3*RK7`K?ZjudE
-YX'(hLJ>Ga2X%FJCk-@X3S4fHl/&W"pjhbl$F"6sgm:Rf]0.=n]Dq)%j$bUEMH)03\C?29a+?
-bojFSrF,dkdSYUFcllKp7!g&*6I>_e^jYUS/!Zj53#r2[Wql8?3^=3LTMX)]BJk9I+eRn?),\
-_XVq8I@R-=\-hi+Ao^Yj4D!/&3W$'A.u1Q!&ikN+p:I^*/2X9OMU'2M*fiMCbfX=(i2)!Xob)
-$c-Z0@@AD'sdctGKKq?J1?FI'0/M9HJkQ*TXcX`$&_^="^OWJS2Bc^Q?fTG58FX\-^O@TQeJ8
-G_I4<h%R"c&'s,9MY#WT5c#])6+_(pP*cZ(+dpVB%K6H+EQ6i\Y^2\!_ST"m@GcM6J#[;hRpS
->@AKtC9Wi/b[I7e'5oYk(kjNVQ?T)Y-f0o)fHW*rM@_m_V+cP5,0<1a[SX%[@/DTb@uXb4ZUI
-,m=HPP<Lp7SMLQC,5LWMm6@?Xh<<S0]cDcAi'iEeV][f;0cCpEY%<pLsA-q\>SB<l3;[B:VY8
-9R\/EWd&9HGPnlhY<DR(AhUW2@aP6S^$'dE==5TYWBH7L0$,?`p&'i)+hBaN?$F/'/GkHLZHS
-8]Wf]DhXcH5F?731+XN&m9,$83du-"bF(7,&CH)5m?oqZWec31^G>ZPXa-gAqY^P4[gSrG;3E
-j_X(`<uW4qEs5c$fB"'8.$'j*"S;afGM$4G]V'=D%_PP6pPkJ8I&Mkl\.a-GTi<-50e)k"0J6
-46g_gYk<d25H_lca\&PP=O[Lj-.n@cn`>Otog\^1RjS6k"^n+MMTq?9AJ,dii^\S0RjV,V7gi
->\q#T77YSG/TfK@86K)i=l@:R$p[0IY\J'uT*'!PXY2VM3:R7)5gj):NjNXZ!CM6LF[A9IJh2
-1?lfJ.7tqqjRS%=+h$P-\i#4@IrPj!c3)m5FDKj@%0i?%BrPR^]rF<'4:oYP6nI%o;"=,*S"Y
-V,67dK*B*o,$C`E(U*SgI+Fn;/Crq>)njC`LSU\T&P;*\X3tF7'XOoWQ==/$aN!?*AKf3<h_1
-p3uWK3g.''WtF%Bp:oXY>dPk/h0*A=/frec=GifU2,JmD0"pfK:%0#M;M!NODig=HQneA=FrX
-aWb+3"rfHrp=_XN$kHt[Y[R.a+;9-5$eV>/m?;CY%-L#KJ1^j\Cn;V]q..s)%1hGG'4:oYP6n
-Go[`J[)!8D#cCk-@X!B+bcoEMTG;RTFL[t"pW-Y\IkdA^nrJ8GR.ab0BZ6dL'GI#Q=67rB`jF
-s:b0=g<6-4rP/fTFBJmJ.7tq;]eMb&:eUsfF$XeCn==0!4L9_A%p-o#911&_Te9pD$np/>K(1
-efu4K9GnR>e!&eYb/8q+*Ak-5<Y[R-658/S7b-6;gc'+n:'X2$;jCA=.GS!*-!#o=89RmSV9d
-[X[fHq8>")O/-Y[R.!2io'Q2Zq_/_o<d"@In$+<9M[6fW]W6YY>THD,tJE$k>B^,9DCo^kU*t
-//-..&!7V=Yal;/@2t!GPGJ<^[P;0"^<<nh)n:CWc'*\FP-E?BMDZukMk=PO,[fr$\msF*qiD
-n.o4/\2ZI29]<eq>iql$a,!B,,,E.lK"rCm:#/&M":2G]?Bo>AFWG]L")]oim,3,G1V:7hME6
-=$(nSI$5l9HP(Z5T5F&3k3SWCsW013nV;\^c&_e0PnDF'R$p8DY/h_TWn7+d_<>]5qCS*^c&S
-a-uAj9c',t/G!l]t`p=JF@Ika=0n%oE?3Y3^JLu-Y?[h3AL[@HGScijS_a^+1RjWgjmuK22lO
-+Xi:Sp=9G3sfs<7hQ<-u>L9AcUS1YVG%sg4Kji5PaG5^ih0ZdRn,U0n73U=uO)iK&-%\8\d4s
-CtLjQhE35USlNRL->]UG]I"Jh!AA(G*BB^0&[5^8A;?.\Z?hf:)`CJugl*%W_h7a+"P<_/A--
-RtD)),M^c%S\)do./J.7tq]n,OKY7\Q."?-7h$C`E$V8D8mbJBK,LbD!bX>e%Pg,o\o7YZm\.
-lL0-QH;MSZY9MXfK@82_$[tD#&GO#<Z">8o46M11=@3g^kU*t%&Bsh(4behYgKo=r<^76_)G.
-:4rLSa!?3pmQ8_UFg!89P!B+bcltZ[,>nsf/^Njj)Mgu8+-RTR8_h7a+"P<_/A--RtD)),M^c
-%S\)do./J8NHRPC/Mc?M7/-Ms&?)!S`j.-du_#+qL7M+j9j6!:4uFa_EPgancm)E0VFYZ3f1'
-L+RZ^?[h3ADh6p1af:'LhEM>!`eKJ]l(p:6Z8T@jrKADUH*dU\BfAi92D',i['.33rKH>`!Og
-Hb.h&.)Z$DKu;h-Ig7Up&5[!siY&:eUSfU2,JNPS*O,A`r6@Ec_Q9GXoDRk,mhK^IFka`%p0Z
-X!nrg/,&s7<W\/k/h^dA-o6igHQSQA&'u(Cf>2BAE,AlgQCDc&=OXZ1M0*/[!sj!?C\nO@(Y^
-daY=3/d^&(VAq0m9a4rd+a2(jtq)h?$m6bc_P`g6i[irPA#P!uaYQ;2S"P<_/A--RtD)),M^c
-%S\)`CJ]Zh[IJ1OuSTD#A8f2G^V+A)kr@fW]W6YY>THD,Y8BUb%_>GS!(DCtLkl3>V6P83WsP
-D!/W8(dqg(,f-s6*t?m!^rCbgCCE+9s1FgK-"+>1Cp]mF)i<q@Vq=+7*?G3h;ddN*8`!hFc'-
-ZP3NN6>Cn;VW!jGr<2Jes)-GYA\PEQ<WiBdBP!c3C(1'';K2OOOa@%0i?%BrPR^kU*td;482O
-!Teh!,ND&pu<i?Sn(X:\euMT)dpSGaV/&l>@ITe@+].^@e1jVRDb@G)ArJ")?Da4SkLrVb2@o
-/oJ3o,)n#k![2]-<YS@@>fK;ap-,n%8I1gAmnCikO2;";bEfIn)mFXN=nli9K(H0fhRU^D\mD
-cmMfP!Xk=r#`0caS0tQ7N*G!O-#(,k!DPRjXW_JZQBgJt^F1>eBO0!o)rX;V.6iE(S6IH;\hh
-W<f_:oAi.U%(8HY\>9^)RsVnnj51Sf2pL'qE[OU>%G:.mIPU^f?2k,]TSj,\!Og)a*`r=7dls
-oq5a1H=5H_S@rI6:C[=.G^LEHkS+:*RlZJPWWqZQlhIdMMMGGk168@&A8cli;MFOpHjq`i]X4
-`jI\M`&ic%F>u@.!ed)Qj>VHq-D"'1r!>-FpXggd6#7G!7hb1i7aj\qPQTDF`?nirMGXPs6t7
--UFu&.CR5(5',=c>,>(ScLU%HO%K.\380+r59k!o<YX.I;1t_S&in@somR/FL2G?W7U&$.19c
-ep]B&+j^#Z*b52-o*"8ilS9ZV`prc"EeRqLEnWkVCjh?+U6dh$B(BT]q+7n^)Bp(*dKR@Ika$
-Ts-*gJfk>N+:*QA#_F0)Jfk>N+:*QA#_F0)Jfk>N+:*QA#_F0)3_ofAp_i>Z\0QOm1XZd:5nF
-/b&-P91"@3S%5nF/b&-P91"@3S%5nF/b&-P91"@3S%5nI"];!Ru,T--EmQ\7@n?RobX9MgO[M
-EEtpcdrc`MT(%,?"uF)&CK:<ZL`TplT3.nBT(OZrP"#SeXNVQ=R!q#<`?sA]pqKu-4:\&r7r-
-gD;A8mrG,V$.p-W8O]ot(hf$819_LI[92dgOQT^8U^UF)<paqbBGdETkO*ON-dUJ%YrafN]mb
-lBPBn[(LXmHQ:YDc,l-<QRlad1(5."?O5<S7/W8C;V/&E2^?atHc>\F;5fDQGoa*1T.[#^L'N
-_T)3!!?:9Q8V]XG>4DLO.LS]AL/<Tj[.#AVo599>d3[FSAdW+Ih5h`1&N#W9B08gG,YK^g>,:
-8V:9P^kNV!a_VPjf`Hu>/'NX6ZhlY+<Tmlk+SWK.ZKkFApuCkD;o\PEnb(&g[>M(DPFR\n4Y-
-/OHcMdSQHPs*B.D:B\#k;1bR>SUI2O?Bc:`94F17W<-R?p\WYCK+0Pd-.\??B=/7db(B+;+**
-TCr+$?4<#<OZD*1$44]4\r\41:=q""t!B/h!]ZE/f)1[FH$g(/O0G5BCWB:cq<aZ:nq(sS)K$
-)?e"#_q(/c!5c"@e*)k(]1QgqBD8bHN9]U.)9&k'IWe+ct4-3c*$L1,%?#2ND!Jkm;1FZ;\gX
-Vk(908CJt7:%,G]'b#XFgm\4QXiWX'7digq)n6(kDhR2kVS=Z[2f()7R_6*[eMR"Nl,ai[K#H
-SkHpV0X2GkuO?Hb`UZY1oU7G-8[2B4X&Oq]<\ggg&4D/@_U2@_h$+BHiFrcC2[Vqk`9W"^Gf(
-qbD*(]?%V<CXPnP^'MgL#FBC4.AV`PDQNj6t>_;4H3]!]AVqM1Cq("e`IaD?BEfN99d)897Lf
-AX'"PlM+[)MeT*#NRXo71VkBBhP>;jg4HXq;2auD<;%o0UG&`]mI):d:<!$kP9-ITUM!$F]mN
-o!-S$uVI*QegW&9Ln]hI5=X.+r]sI-?Gi3ZMQ$'X-@D:6.Z8oI.`#K2jL^^@XZSos%`+fIo!_
-Eln`7JS1aP1`bf()I4M!PD[Z@,qDd/bml=O4f'4_L'K^ShVBsuiM@ZF5!nhe5.#`oWL3$nVVW
-laYI0YX*1aluAhR'0Sd8ObZ_A#m=Q+-)2P[%O[1DoYV-tn@6g1J^ZP8c&I+Q=Q!]09pOs<RfZ
-8Ta(<lq[bpMc"n1%mAl/J-D(ba.>!.j_daJ`\L:EOlkMcaGB84Jj4Q:):QYqr$FXn8G0;Zlct
-_1S<H:J!G`Yf-tP&oResYC^,N/dcHcQ]u6*(jnj,r<P$;hV&'s7l&LB+fOAnJ@'h(</P=u<5I
-6'&-4dGG]ca0Ddr<EuaJ/J.&TNBZLLg9Kl[*3+#?\.6+!Pn>`.^3@kf#Fa%n@.5UuX@(Jm1j[
-AQFT!7T(5OG'.4`6@<_t."_]Uo):7""MqTb1G5'BI&fW4fd^epZ",LYRSnS>f1X>[CF.5h@O.
-n/:=ogr_$s6C*Zdq<4]$VFIA/Y<hlEul,<g#oCjJZfQWMI8TS87Hm]sc"Z.Uph@`YA,.^0@<b
-L#0H<4uh2;AP)o?o?/45]?f/fLUbMW=1]:k7N+>7)302_"L$!':H3;J;rTTh3DR(B]([S$g(R
-)kNQPpcSl^q;]Z@=>u>92<krUZD433)=)BT]0dR`p@o^TjEZ]D@QK5.U2MOtWNM45!o&m<B2:
-rs@N3!sMg_nqPNT/Xd2@k;`B0-U_NQlWb[,/to;\9YVLEP$2bX;5pD/"qS9R/9^7nU%Rj=Ml:
-0e-Z3l$epbG%,>lSV7G[SaF7QkT?amMGjL1d\kUj88T;O<:\<]&]nQ-/BO#(9f@LJZ=R66`mH
-M&^!diL6V#Um,,(S3'`E[8e8GB],Nsk@>u^CLhEGb@8q"2Y?)dDK31RQ!?#`A$+m!`V#3>9BD
-%AoD"HBK[2aNDUh2r!i5C]-0nM1=APN[:0G`Xgh&3`$[Jurl!cHJfsK21$(_03!/J_>gueX;m
-Lnh7EDfQM8kY)2.U"M23uA3l=:[E699=ib-C8*CGMd\[7cbs,L*Oi!<=fT,=_"ka$@4X01!m3
-8c\g9-:fBZq7<6G[uIPY!q.0o\^RU[X<m5lJYC0[YdFZO)6=jFapI'V6oMgGP*4AH8N%>.F7L
-#0g=B8#4AJN5;]g+bE72caRcM/e9KYO3nRuo'#>[!c7Bf5?6$.;MI*S6F'at/]3n9/;:3;EIl
-lDU5067"Hc/KVi+-!*V4+.6@[Y1Sh2g%mRC.,>rbd(0f3"qCk<e!B_u_[3-3\>DDW<mP8L9A^
-7uk=)O#T&V+hIW*d$ud]hW^A5<D0pPGg-NUMWF#CnFapfJPB?5mW&b#_F0)Jfk>N+:*QA#_F2
-_b5)0*PA(4ee*&;iK;Ofdm;"%qB`_"oc3KW;^2*J%"1h;2>=tR]G$k+kH`FeRPg0NaQgeI,dl
-$q9Yhc\egCOCoZZP*/c0+\qB`QnYaMB4J#>&_%WA-%6oeKmMdCt,1rj,r5F/SBA@^5^CkND#X
-s7+,O*RTQJ(I"Y!c"BpcH/8P0qiLPgNT%"52(>"BWQm,fk,U&e^Rq+aa^7sF+WobebCXS*X6)
-]P=j@t0am2a)k#X!I3^\e4B+`F"YfW=.F1qcnG9YIp)B*9`4t59UVqLfEk1BrU&(9Yb2a+XS4
-obHUF!`n`NFXNSAe?o%eR<6Xq:Q+Zh2CRSW+'VSOt5(Q3GZjFrVDj),PQ#sj65*_G)rp5gTjt
-J?o+V#foojHe;`1b=i!"gc%Q.6pS!UboLY27Zs5F`X$qWpGPUn'o_mYc[pOX+IqdQf\BBu<[,
-%[.ri(BGfQ7CY=juH9223pcZ^=V@,&D<Le>VoLZ6;OX!8Gc!dZ#lNPXBb[]"te4R3eUd9q,Qc
-HT(2aaAkH"dsTDQek+*kGd^'$=YkNo.9m._q=r,t!S\Woer;;N`d5'noCRHrNS;*>c.]@ud:9
-VQr$<HIWrOF:B(O\R/"%J=cXts9hMjSM1i&C<-N`&nJ$o9/B=fO6bso*V>0Rk0q832"^"<#IZ
-e<Z)1]M$WQl=fnfZZ>"9a[>cST_;<SS-BAW;0*,C^V7GZM*AA#h62/2hG\S-[!X&(JhBfPO^H
-QC;*YrBT^O?k!U^(S">2B8O5-cV!:(3>Q-%p7MTbJiE6i23aR'>4'-hg\r`fhH>8[WRkGP8_L
-0h5R5_0H,fYno/8V.^UM$XC2HtQYEibOl5([DLD"j`O2_&I@n&hu=<c^DE>qAXQ2;r1:JVb(A
-;Dk]3\](cC3nnjIdt2m'XZ.8:<^oF"6QlHac)[TY>q*R\<r,\DC9\ajeNY/>]M;f)&:]0/;dC
-PQc".@qipU"Dr?.[I!jLLn!8A%c[^1(BYa)s+oC[d=^VdMf:Qs'/Q%A>VHdhl\@E00jTZI>hT
-ZQj!DS.ZFs8%3iiBOI~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 620 501
-%%EOF
-
-%%EndDocument
- @endspecial 396 3922 a
- currentpoint currentpoint translate 1 0.55 div 1 0.55 div scale neg
-exch neg exch translate
- 396 3922 a Black 3645 5692 a
-Fi(24)p Black eop
-%%Page: 25 34
-25 33 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(3.)h(CUPS)g(and)f(Gimp-Print)p Black 396 579 a Fj(Figur)n(e)i(3-7.)e
-(The)i(CUPS)f(Admin)h(Success)f(W)n(indo)o(w)396 2356
-y
- currentpoint currentpoint translate 0.39 0.39 scale neg exch neg exch
-translate
- 396 2356 a @beginspecial 0 @llx 0 @lly 621 @urx 510
-@ury 6210 @rwi @setspecial
-%%BeginDocument: figures/cups_admin_success.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_admin_success.eps)
-%%CreationDate: (Sun Feb 29 19:55:36 2004)
-%%BoundingBox: 0 0 621 510
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 621 510
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-622 511
-12.000000
-622 511
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-e7e7e7
-6f6f6f
-ededda
-eeeeee
-808080
-547098
-800000
-9a9a9a
-000080
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPUBo_2q[Y;Ws2!807W/HXgE?UL8"7r-VV.:Us/8k*bG;R=:9rcd2$(,](Z+QiO_lmDI4H
-0LE:Z;as"&B#6"4%'a"4%'a"4%'a"4)Uu9k`Ucr\*1ll0XX@6$?T^7!RPe>hWZti)'dNcF5?(
-D2Y^/llK$p.kX5QH5>-$T2l-R$!a5`CQn<)`Oj7*g1/^'TJ%Iu6Qs<>$/5?pkAS2s<EWJ/XIG
-IQRgB*:7o5\UE7ZS*U>#1l@%PNS/e`eOjpPq9OJ%Y132-5/3'/\Qa9Qr4C]l%tX'"A$gZ"CM_
-Vf;d6Z(jn4D+Su-!6rTNJf:ii]b-[&UAN[eJ:>;cs@\8q&Gf"#X@*R;iaR-MYjE59mWJ@`tR/
-^Y'S9):Ki]rNnT);GcocKT(LR8nY[&(7Ee]be`4)sL^N[_Y-dO]n;-Z8U*)(em?u0:[tRU5Z&
-9k!UH:d$)bJ[X&/RcD$8I_%_QUF;UIl^U&Sip#0QSE['KhPgd<0LEk+i"4*I`Z/D;^OAD;]\)
-D;\DZD;]\)D;]\)D;]\erV?TR=hOS86h"19NSLSZ/GS9$H@*'5qIoi1]XhBhI/W=E_],XN!!@
-/l=1:g4.C*j)Y27j?]t0?@$QIs,YAT[H8n;58G`CG&P+*\YC9'U"D;IZtHm>NR*gX;Mg\U&'T
-Jf/?D+"'ppJ3eOH88dE@Y3=6F%6;h0f.SLDJE+_]!5U;;/KUJrk8<Wo)*iOkjI>o=\<EJkt.r
-I\W]IeU$nD;XmS`&07FSW[R"\?[<:["n*TT*@_&og]DK'KQCjVk^Ssp*;U+$_e5i+t->Petg6
-a.7bEp62p/Hs8Nd98PLg]R9DlpIi[S=8mYomZ9ZoFU`6)/'s;,!$318NXfqM/!RGQ,p6rHm:E
-b@X45*Neu#Q1V=KeEA*_`P5!(RJ0H7[eZZ[UjAY3gU8l'9H-)@[OB.kn`QlGVP?3#@C93ENaQ
-[qZ#-WQ"oB^+m6\.?GS$9]_Rt\V`CQB:X6o5rWGR`3>BK2'^V+3:`o5Cs<mk)AD:3n4PU_jb6
-T#R(dd>WNXkI[;X>(;k86Fs@(i\.BrW`%7s$.-b2/UlYSRdu()K'_rf=R6F?E,n\$M"h;/aSq
-/'Ur%U>)M^K`9&Z+R+ei'So8^:4bgCSC6Le^V;ug&eFk*<PA[j1E9\Yu[`iSb?>"srfTW).>3
-WQK.oQ0'cFhr7<ls0(:2R.('>f0nh'LOEI5bJ[LIh-l3)_K`rfX7?7V;4#8!c,s)1DO%C?pWG
-J(DB\`3R?t%.%l+j:4%r_dr"42L^^P7;>P#2/V11<-(#P1-MU6Rmed#>Ak;iXp^9n+aE,cX;K
-aPDQD=)FJS6@[\\/\E9epYD8Q$[>Yg1^\Ct10=CpijNAL.BiX58;j#6JmK8VSOH`PE49o7,om
-J$IiPk3:F2(8$1'8tr!),tJ77UM+^b@4;Co'.dfG#i\/o--7Dj_F,4h7>F\)crNN*O3UMpKML
-g](:6QlCqr*[J=LUeQ.[//LRtpD,`YY-.6'U`_>hP87["R<R4Rtn"oACa),%^[a9!#dHKGsKr
-J:\D,P7LD+\]rE432,R?KD6BsDf[nLaL2=_1EFX9WTW*H*5cde,<`BJTn>,hmJY[;f]D[sO=h
-`e-KGD+\\LCq_9&D_KbO:n-\\->o,C\!:YXVm`p/S!7,gcPiWC.@&XsgZ91P957,g/'b(^0dn
-'G<cUa`Xb5K-O5%\)k*n>FdqArJPsebl;$p!6;3rl7>k")YD30CYV6h,kPLNbp95V.sgWkH<8
-NUYZ3k95_oVC!Hj]A#OdRu\Mp%(s<@pp^QjJ6#'H,;mC&_9ouDIehsmUdMubg=2/[gBe>jX1F
-5o7nu-6;d8\U@K\CX,IkOULn-M/g3#,#a5C\;]kB/e@,-``9,\+IOhsO`3q7\er8*JSh[HO>b
-%#+LCqIG;Ba*ACKHku3N6Q&Faqr::2p]j`36!$UcmsbN1<NXR?0Uqf::MBW,;=C?CqI>gUa;Q
-Yk#`aW%@L&WKc/kb,ni3/:0anh0(_mD2-dDE86k^0D6RDo!^Gog9u.S"0\q"af@"?SoeaK!uG
-b+k=PjKOR*DM&DP9/q7l6#IIXE:T[$^i+5Kl7Q<.;d4R%%9bKopE_umgj7u#FWgWYM-Vi#>;:
-\mgOD2,O1RdsJ1mbS,H[LH(&L4+3VjLB0Jd2VQ_@^GQYI<E0_p]KsRHhI?phiq3O99/aJ)gEI
-AF$O+X^r,suma26rK_amMmrQ6M>p/Wr;:;_MIath*YL+J"Y:^C]`b=VH>=L"<4141&5]'m;/K
-K1\mM*k,e<UUH[=L&kFR20/@`#lY><W>B#"HtfR<?FDf4^8L<u2-iA$/pG)\;N)!eG8`%0-A.
-zzGU/d-eGFWXa%]Q^SE.<[]Cnhri2p_j+'37FZICdt&QcC9;"#JRqlRFmj5<YbhcjkDW@RXSj
-X)o:rEZDjoWaPYY:_ST+]m=*9sMa'o!4FR8ooJ$.66%h^RK\TfWmhB"#H]2dr1\Xdg9ltOd8`
-ADj5+niVtS.(W(TB2ftfu?RK^<[),#6n8-^U#Aqn`):9n0a\DE'IjI1k29WS%K$I+5k0llfA9
-pus/8rs3C7nV\]<nF&Uu4FC?#K-m[-$M0h1Ar0W6@MDA&i7t>%!TW-3SY<oV.V6RbEL5qs0Ya
-g.X0!#A`JhUMcN(CT;*;N>7n2D2d<WimhOpir?a]gQuR4)ucma8XqS3UBA!PQ-SSd[4V!i9j4
-n8LD3gj\(XPY`,1^YSnR9hHaQl('*gC5jW9)6O+3'NjBgAKJg^TPRq4odKSf5+HM,g*\\B=bD
-k#ko$[>T99YJLO@QUT*lGtDlWn96'b^fR8b@f'iUXZ]\'(bNo[;hY8WnH"B8(A<gA_0ng,7em
-I^1pj->)/LHa.g5:q_D4VP,6fTqgP<$hFt`\$W(^5+mYsf<@s90]dC%Q,<%F9r6R5&4Y`%0C#
-l^oFLL2%7V=1m)s&\6;Q7@lZJ&go9J\l9'MUI8EP,1.p9V$ti-+g#D(NDXZ!S5ZY9*s%`(-O!
-Zg1&73+Oe;j-^RK2/=PAWEna;SF8;`:3d94OkGN@O]IcK>AK1$6e'\cs2L)Rkc:i^?6+u>;u4
-k;kZYCIMGG7X:]m_8^MAjPB>99u7b=W#8q-0>[e\FhO30jn8*-lOg`1gBW4TasC^U?&`Z2TP?
-)u[#\@BIPRd-Xhcuj4noJTV,Pe:J[VSh&)IG;?c$SS!+:ER[-#KoOgah:c.9LIBfWW]l/Mf.i
-lkHf*-c,>uV,s0gI*,0S<4KWqY_m`C%G?)kidWQsWq<9AdNni?FC==Q,g^:2fglR4Ofh#hO]$
-LsL2m@&_^"SLS&mLp5D5ok`d#f>OA'Uq%qRf2GW:.FQ>oukj#!1L;.t]6oWCcYM2TA=3`dK/2
-/!\VDE]bgi;E^:bP/1]6:8K"gfi&X#NN4iaSQ$s6L@j<S8A.rVY-N2O$g5DE4mVIDU5\ZO41X
-.I.\Dr9mu(,p+0nX@1l\Lq<HM/Bo##$-='I[SRJ@r3`cPd@R/1[Lpq>6fXHfDFor5rU5%^B![
-rPCp$0HW5=hWX]eEY^^%MXl1FCb9_1&Y[ebh5aNi>VZmoQE("/[!\p.B_4WR2J)cmn0N._kqA
-$?5d7%YbJDQW[bD2Ns.bJYA.76rASWLVH)-HG`HNT\>uWGSata!%]JAJaK8L@oPk3W`XqQKUq
-nL81t[40-Zm&DOU\'qf@-J3B_TShDrsn1P12X/A(#%<1lX)um/_W9<4._+fZIXOVUp!*(UE(J
-dU#R>3IT%%]pa7$0fLX0TmP1TdtE]b[T2Y#ViP5b>,*[YXj(`6P<*BN\R*eZUnT.gTmP2#HL&
-fVk,Y>$<G[[lI>g#&&/q`hDb[nWOmY8aOd=Z[(_s$d7oSf.+);kOg[8J(f(JP#bJ(;e]f]nL8
-g-b>l&U]]afl!brii`JgA0El[^3h^`0R;6_KXn>bm04pH9%Dr8*HJT!&Vek+I?X!l\*mF1!H5
-<<7VG:0iX)P@`crF@q-dLWT.u\a_[sm48B(oI,[=9cLd]MA'_<Y:Gk`-)iYl-[CTT^B9laH2>
-(#mc!PM`CoVp@kp+2kB;u[>0\X._]*$m]&\9q@;mr,i5J+Y]#I8EXqGi;u#bG6&8o0uss3D-I
-a_f,Q<>J68U#233G?p$3W\TOWgKoYLr(+!CQ0r`:TDQ;4d#TH_1Ge@2DgeD$25f`YA>OKQ+U-
-)LgPgrX%Bn!eE](U/a.lK,3gr[)%H%^KR8Rs%o$Jlu:E?oYV:fp]b.P.H$HK&ES'g0ACJB<$@
-=D*Gc2b5snC5alRI3schH=c,*E9lI+m3^3/o#UYj+^9I1tGNRK]"lg,d+VBZr>$:%rLlB8oDN
-uC2%bUp182q.$YAW`g+T#B:"?/AqoJ4"Rnup6Fm^TeW"nd76afscAEGf`6Oc$V:Ej\Y.C<7gS
-E>p"d*E:oMF*&fVfsOWAmdQ2ELf*Wj[mMlZk6uTf,;UC/aQXa>o0A<,6#Vm+Fk.ltF02FD^$G
-45!\pP6/"+HEFSMCg6:kTk=MZO'BR/[]O`(UQO,Yg:!qLL$NPuIU#G'ngV,/Ngh<+cPO^H^eG
-A?/Gg!uPp^f![1Vu.NCiI,`f6\<c7V`<-Rl!24#5RAo;k=`N3Rt61#%5N16#\rUrlZuDYf5JJ
-5/53h$4nNA@6:@)6".YGc"7P-n?X&.He`D9s&Rt2U-?9NA>:lf<Ip0KWb:H&4u7Ppi5%PfX>:
-#gY,A;&*73Rp6@E@_9nM)cR-jtT98FhE9hASSb'9R/sDI*.XiV$_7W]UBA/Fh&QVoEAN'.egq
-r'r.f\F]X7cO7JdJuD3=pC!'@s/5bdKrC.2P<PbfT!E%j$.BJo-]<PC$K>,S:s1LbtpG9_%38
-nkNe?R-#XW_Sj65UjcLo*3IeVm'LW)7q:l/LROKWaR$@U.bM2d*@`p06I!TY<F/[*mVK/>8s`
-ZUD9OP9D1(%dg6(&H?'>L;]11,%Ise2oW/4mUVR;plW<FOb\uh!55]41/hWWDS1N=K&PTq0nG
-(Sp5dQ9%mq;S;$qTd=9%R++1T;77tl^>bj.sOV5]R2_eP.mo@c.TWQbmGndcM[+G#&_,WQaZE
-qB`+C8[e$YcYid&pV-0i:;Y#U+HCl[qHGe%5#IX6tk4<!A,E8*bj+k'XNW-,@f!K9%j0jS'Ao
-.(;Y4S@k&>q]J-Y5fH=V%h@!e&eG*-I744>j]GQ>bK^EDs4US/uD'Lhld2d\Df&%Oq45&8=pq
-,r'Ms7`$";<LK\e/D_ldF@qaUAid*7XAc??_5s,+0U@uO+V&s:s&#WGfbi8.L<tiS\f"eM*F/
-mi9&a=8c+6&hbm;0s<%k.trqQEM44&_(TV`7%o`d'B9],PQ)K"6tD%LV\jGZXCWC=FIleV9HB
-ef$;3n`!0Ws*OkmQ6W\TsI=jK^9EZDBEZfCk=j00S?Yh)V",P=-mQ_HPaI6]GQ#!'+)oU3CZ4
-MPSHP93/WZ]ENdqe>2nJT\-u-',G]?Y$hPCdBl:"@o=_%6UfO'e*DLhr([O.E0_*s%(D4[DdC
-^Z+HC1#HDKP?Vi2R0FSD%^>r'-@DJGj7M%r)kG)NIU=2`ZB+l'>NF_%4BLE;t+7Z)_[2<:PKJ
-;O*3j;*2LA;T,!R[bE8Z$*D?2o0+".c.$H'FXB_pKnW__0K20gV0;JoBf9%''TtF\/6'XX0)r
-o2I1Sepj-J\&/LDh0;OH_dLXIFG_kk/\Z(7Tb%U$QYHmGPin'^[D;GK*V].<:u4W<'uXQtV01
-t-N7Bn=l?Jku3(cWo%0Qdn`sT\A3j:RPDL[@1?7Oiu?"'M8(FB$rfp7>Ab&Kq\nA8D^XDg<Gd
-MEl3[.H4Dd_6b0XH23Kdn&k"b(^;E`U3_u_6]tg=R"H=;$eI<,D0djC=acAYZ3SS'\eWdIsQe
-Hg<Q!JZ:2L`6T2dDm;Z1qpADO1`UQkIS[U)Vp0&/3`.^ZjZX5+TNMf!NpF]u&a>crai!89\$C
-`E_OEAiJ.;PIfNOWO,7ZDe_oW%_::G[]Y'p9BDe1?tmtW<AGUaer&Xkk/*fI3gr'6A(ZBaF)/
-3SX#4\Dnm/15dcL%A@+j:?.RO6ncF_K(3=,K?(.`NFBVl[,HlZ[OB_*@D:'PkX^)qOY*bi*-+
-T?d!eG$5KlLIA*3&e7=>K^(Pf2F-]]0k=3ekY$D3<0$Zzzzzzz!.P'tZN\m%k=)"!IeX"q%'b
-JY2XiC5>6_KdLG;/5!8N<Zg;)/K<*iaRqQ&@kn&"IgHN9E<;&e%"Od;YXCsT0R%c3.4912^$r
-/o_9^gn'06#GOWpudI_:`FX9?=*bK!tWBX#&47$LTPqLF4.XSg;)Meer2#:/uZ#cOkBg:zzzz
-zzz!5O4!r)T+fDe`E-QhnsUfH^eQ:X*>5rMl?*66L=WccpS;Ag@3mgSh;RhGV,Pqaa+RitiU%
-=6***r1JYq?3"&2Z=b4b@E\KdWf:paD(i])9t5]I6#N9<0#"*^FWX3O9BTh[>,&J#2J>CH"\g
-RjE85NsH!Ys'mh\F\SNLeMppA-Ngjo?._Hk@]3Gu5Fe^S_95&;l_"f1h1qobh"f.s6^_'5rYA
-!L<n-:gJk\Kl;E%.d\am7lL(TX$C)i(44J))m=.%b?[[rmt=d9;e\!r4u]5?h?(?hS>5bmqIM
-sWY^8dbo'+AM*=<t0J`sAI0[dB`r.I+LGNHseE1nsR\+>J$)q=e`[/aaGrK$l?4bji\YqF&e[
-E]I4=@+fFjdglO*?aRA3PrZ+c6k=l:FFE2CRurUsID^>u9&F\_bf=WmuQaYcR(-gG4!`OntIO
-H-f:1bmt]#o/Va/&7HBCDt(Fs55JTL/@b.k%CLV&QESTLrIE8/0?YkjFe2+=W9k&hh@c7XQJ)
-<=z!!%Pa#(]#:h<Aj0fIHgXmnS?4zzzzzzzzk2;l%>kC:ok'!R3N\@o*a3K`.31abqg/G0^0i
-!+,(4"=]I7Ej_Z?)(*lT31oW3b.mPO?^il`Fbp()=qq;H)6QI3AMto&Dq/VUnP5I=,qh<NshZ
-,W5-36.>7Z/O_\=-1crWYZWT*&nZH,]<1QFlV(ID[l^SaOS@rj/s_=15?MdE0g+_WY45Y0X!a
-s-f>aT9-<QS?al^`0.t;:(7C>j.O_ifM6\K)aO4R@)C@8/eB%j#X+G\j0$%3uc0/Lr:AnJWQ2
-UVbm5)%]JqUfHWn7hThB9nZ`E+eoekIOE8(4Js?e.sg'.6Hp2l0mC5RRk[ZStt\9A\XInDipK
-T3o53TD5;qp2&6/b%u]uZ5Ecab&c)S]iV-cn?:5h"-KLYQV'b.6[>!dh-[pH$d@D.T$]tRLS8
-"uSVT9g`L(PtlV6\.0/I`[fc95$/PcJVY#a,GTT3,BBbQo7/rVaTqhu9>,+47>KmDj(9ep+9c
-3oiAi#UZD\gI?t%XDB*'Nep/#M\rN>/I%J77W#;ZGaicn,RVb[>qgULHmHO]Oie>dDaA5(:-P
-":X.XG(9McZGr8oQh=9A4s)pJjE"?CpZ'Bdm]Q&1g?W&E7YO?S5k<gV@&r4YZJ,8\kLop40TU
-pb*mWQHHl*B1]ge&Wn2&%+_=bYaio2P"?Wa[TSIGRAV9#aa&\>9Q&7ks#P4Y-sen:<q_XWg[.
-XfWh515sk'N5*B8ZD5(#'[$[9@-G`g8ZYF!jgO-DcR\W4!`bjjK[G>,(F\R<]7F5u&`AttKH1
-iI5ghI+Wm%hAsPPK&4?Q8NU;.S#N4GH?t5P\*pn/6peE2"NNBKlADS>be+V\`,nfFR2A)5;;9
-`64GrH1g<+Fd/q'kHp(dlYXU]8$eYPCPc,,0DZsO*h;kt96P/mcRA[7jCrJ&XJe<FjX\p-T*<
-a<\0U'FN8X]^KHG*<Dp$gYc5k%:!!'37p@SW5V34PfaHs/^\]l#>?=VV8Kpgl`/tIl[jMGgS\
-f\;&hkn=rLiMFXhh@>nUl^Ws:F^C+K$h6Y[;n13(sQBo!]<3r\RdFl1r4%CQV7>F5ne]#3.q$
-XiUC\El.9;N;,2*[2p2<Sgi>33;8r<RccVur;JjmW'q$22$MU[PVR`Y6H:bk7>&B[c&k6X)2S
-toTlb1r.?t*M4ZpeO<XjOC"<cXqhSu:S+NK^)2<f6.YAkhhXQ4gn-J`\L8EP*Xa>\iIXCst'(
-\e`#-]B$_[mWqq._s(2;j9O2j?KR1DY.@[RF*>==DW;-i`#eT_\P$<sanRprc!;j5jME5\QL=
-#1#:!skm1h(Fp;(HG19T*#c"&XlY8(=\P"S%5(O_)bLq?h7/G2)slpB+jPr$gu/DJn%+M9!T@
-TFarB-"Y^X^r+nE[FBIQm-mFe02#X=:VeZ4+DZF3/8cX#W$3g]=cK'7)sG@#_PR7?MH2mD,G.
-,Z09>l32Q6a/shrtielG;ercV&N2hkN`#BmMJ`SX7ZR*#8_(*#E_e2h`G)K-;17,dE[EC)`2P
-p5<+Vlj]N,6*R.LJA7VCST^?F3BF>S]ai)5i]%iZ;2:o-P#2JrJDSL7(u72V[U2rOCO2gK@A-
-Or>]'Fe,3aY.*Jrbc?_L^-um&5$%2fJk>"o9+G'':)Q1/,1E3dK]CJ2EQ5N(8lpaX;keiQXtj
-.?%YSi07<ohN)q0gK)q,--Q?,\=957[o&4oZd3Aeb+Fs#JY0D]WXI<,9P34.AH*4<+/+f_1JI
-RQPa>;R4c(2Zc57"4].L5_oBMFg!p&sGjTa?RAL-'Om]>?5BcLL4t(g0srC)QGJ%+N&UW3u=i
-uK9;$Tfh<TY;>?tJ;Phd;+LGt,"XeNR;FH]^\m(1IV=BLt-5KEOpKD%[9'dY92nfEiOPfp3X0
-#3tbO<9*.Sj-iH\maS].Za%Jl=h5;IA/Q!!!#ec<W)[\7^jmVNos8]%HG;0ea1od;?Ua3aN]<
-2.(s;EQueQSMCCei2tLPCSWbm&+7Z$QUIYD\kT[?j0i_OZI^GMCJ@>8"=[XtXh^)79m.rl]cJ
-ME#m;m4^B#^FbXm]=OR,@>\Ki@Z>;YRg$np2tY+\B2%GB`DaMaZ#AX!Zf@j@_ja?3f1b^c7"U
-,>$oOpH)qcb9Z0F.RC*2&'c#9EFZT(ERo9#L/]58&V,0)1uM4"eq.SW3>O2EULdWSPkBaOTpj
-e1MR<p\PkLa;&SXY$dlq?F^AoVc=433/1gF:2,kg,08YJea-4NA`@fh%Z=CK"o!U-10]/)6`k
-1/*a>'(./XJkebA*q^KQ6$0'PXAb5bE^cA*;H&`4]Z&@:AR:#T=2#J&EV1;>6On"FgeXeTSD0
-;kUS6QUb:J0fMAuzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
-zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!%PaQ!XMRNs,MZiX9K':ID,K/&CRu!maL%:I
-WgkX#n?>]r4t9/4!e7^*^tp-@S*,SNiBHrlss*l3r[B"gu$&:tlt_[bH%F[B8'HY3VahGJU;]
-dU+J-Q)dZp%J"@!`5.1:pc0pW[:PJWir@<eo7-f9kF[mp6Mg:\^*9te(R<58\qA_n"D?IM/\$
-gAA_!n4krPos>nZM=X-IZEWp63k=oG\O`3"D86)[no4He"[YG)skTll*cfZq@GI)Tj$(?46E(
-2A1485H8In4!&QUu&]5@`X?KW,5[OQ>+iaUUKd?T0F,,='J`\1'neWC9a&Sf#d+l*Rsd@P^?:
-W[V])gZ9:"0LYB2qVj'YcgSE(kmgE\LX-22Fh);/h/[]>udULDmUo&@%C0N@B69oC+_FRJ6P#
->D!#AN(M8.@qo>-3PZ.fBeU<'QZ%f[rhi@;C2;lMOTZa(eO:Pg6im<ElATVZ);R'jFMh\e9&9
-2omt30*Keur@.B7_b-An<M`l()4<oME`7#-@T0_[(b)cBNRa9/edGubeh_-scoJ@FbI6t'^7<
-n^q!GgmgH/9t8VaH)[S;4nmC929.O@!\A#Y,=<6KFIji$N=HEgI<P6>[UZscUS;Ca[P2Bt<,=
-&@ZFrtYRN[_3DcF&HS>](M^s6*t+"rDK3PcVEmcAkX*lU,G/8ZSR5OCF5Z)<GS('5H8(IQuse
-D`O<&cKeHoi"q>D'>;7l\*EEP.Am;@4VRFnc%EV"G:$@tue3)7+%(^R.<GU@U.S+/H.ciPo-T
-3-,l%Nu$GKP!TU!d6!9$J""dYq^KSR-&7CgJl7XCftJ9/YA1K%d$f>Zn>n<^=<7KA,1>E_fjj
-3]/"EQ;((GLM]e'?211P#r4'-Wmt].(dibcD,>8IG"qMgkG2.V6EGSYTXO=885Ir2KrmCYeuB
-[to3uiT$:acRpXI6u_nQSU-Kb)WZh!S0H_6S$Kn.mk5>^)STXNU"9=<mMN;:'E@c7%u%mMG45
-8C</='r*orN^V%"Tt>$e-;MbfA"qdn-AGI<[LI4~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 621 510
-%%EOF
-
-%%EndDocument
- @endspecial 396 2356 a
- currentpoint currentpoint translate 1 0.39 div 1 0.39 div scale neg
-exch neg exch translate
- 396 2356 a 229 x Fm(Congratulations!)f(Y)-11
-b(ou)24 b(should)f(no)n(w)h(see)g(the)h(CUPS)g(windo)n(w)e(indicating)h
-(that)g(your)g(printer)396 2715 y(w)o(as)h(successfully)f(installed.)f
-(Notice)i(the)g(sentence)f(which)h(reads)g("Printer)g(your_printer)396
-2844 y(has)g(been)g(added)g(successfully".)e(Click)i(on)g(your_printer)
-l(,)e(which)i(will)f(be)h(the)f(underlined)396 2974 y(name)h(for)g
-(your)g(printer)-5 b(.)p Black 3645 5692 a Fi(25)p Black
-eop
-%%Page: 26 35
-26 34 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(3.)h(CUPS)g(and)f(Gimp-Print)p Black 396 579 a Fj(Figur)n(e)i(3-8.)e
-(The)i(CUPS)f(W)n(indo)o(w)g(f)n(or)g(Y)-11 b(our)25
-b(Printer)396 3700 y
- currentpoint currentpoint translate 0.65 0.65 scale neg exch neg exch
-translate
- 396 3700 a @beginspecial 0 @llx
-0 @lly 634 @urx 554 @ury 6340 @rwi @setspecial
-%%BeginDocument: figures/cups_my_printer.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_my_printer.eps)
-%%CreationDate: (Sun Feb 29 19:55:37 2004)
-%%BoundingBox: 0 0 634 554
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 634 554
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-635 555
-12.000000
-635 555
-1
-0
-0
-256
-000000
-ffffff
-b03060
-d9d9d9
-c0c0c0
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-0000ff
-990066
-ff0000
-ffffcc
-00ff00
-e7e7e7
-6f6f6f
-800000
-333366
-6666cc
-808080
-9999ff
-000080
-222222
-ffff00
-808000
-008080
-429aa7
-00ffff
-00373c
-008000
-ff6633
-ff66cc
-7f7f7f
-ccccff
-ffffbf
-d4d4ff
-bbbbbb
-8080ff
-5151ba
-cc9966
-996699
-33ff99
-0099ff
-1a5f67
-0000ee
-551a8b
-a3a3a3
-8b8b8b
-000033
-000066
-000099
-0000cc
-003300
-003333
-003366
-003399
-0033cc
-0033ff
-006600
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333300
-333333
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339933
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-666633
-666666
-666699
-6666ff
-669900
-669933
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-9966cc
-9966ff
-999900
-999933
-999966
-999999
-9999cc
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-cccc99
-cccccc
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff00ff
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-8c8c8c
-cccca3
-8c8c70
-b5b5b5
-cdc0b0
-eedfcc
-f6e7d4
-716a61
-8b8378
-a6a6a6
-GhVPU8Ts.([][HSeFH8)Lns*n_f=\-Q#:/7PHfie`FpMm+FC#/-U@?7*4Pm&H>d2DKdo^gs4
-N\d&2eoS'EmMN?N?IJ)$!V)("*35!9o&kJFpWF5^Hf^+?_Cj7!d#&^74!]hNKrPq,QKt5;C%8
-c:_kq3In0'a=BJq;!H6IhS_4MjB)"BP'^6MT-%);i7].q4_Lm->8,fGZc8d(:!l2%\3hFV^'*
-8;(%O<Dn`m4"=Oq?3iPgNO=!C8_f=l/I7o=T<:me/$kKFY!gUp%&4UHl<PZN8m8@-33:4.S-_+
-%^f2N]4)lco:%(C,W"&^otd(G`lVQ=-"Ke?-(pM#.2(6HN,fV&/#h'Oht(H1.,`W%^VLF-jTi
-aa'`'AkeBDQ&,s>[Y(?]__">;7XEHJ>uu>tLHBWoHn*QUNcEK/HE8JBWXtfkEQ]C;O%B7M"f4
-M2P;-gR(Z3=k0o[lG#Si3",N1?4S/#&(<(DPHYca=O7#@pC._$>2:9$WWE&CMsR'nHfDumI"r
-7Zqu^t!u-^dLG6i$O!H^dLG6?m6^V0G.[,Hj*mjVLB9oHsVF#S([jpcc+MJQep5YmThMh,>!:
-];JR%l/A;&c!kaerDBt'>EV4]ch6YY$\rgoo")m;#)bE@HY-)Bc8FND:j@EJ=<?U7>-dq#[.F
-muuM7:WsT,\05-W$,cUAjlRkAkRI2D).,Qjo-`otsAIN![gtRA]=ddaL;SVJbbTU+!^dSq!70
-qr-YkgescZ@7<f:lf`;g+"tgG-oT[ic/=fMDbXko'&)V:GR5\\eN]Y>4ah[E4j9J;qYUdQo$a
-fO003$=FPGCnkuBr)0@oWH%*FV>PrA_:B<'XkQJQZP1a%CQrU!(#K<:a9Dd>Zq\RBK(^PYM,N
-lj!Qq&Gh_bCl-%?!?dHX+1'Ea8F]@1>"]64jpR@_UAXe6_XQ,*:Zh,i9Y78[_2R3B=R)oQekY
-PD4E>79R03gR1dM2Y>%O][u9G&]K_"NF4TV*hINIKUSk_-\&3h24t6A!g:g?DlD2nIQV--jl$
-`NqV71-72ll++^BL*.eQFI7P?ph"-0_h'ok,eSp2s4aXI7<ognuMI^?V]*8##Q`_W"K-5+D))
-s7d!k<1YsnFnIlC1<O'c?QVPBq3.a(Q(BH/\Yf#?&Wtqo/L7gJo?s,Cr-S-).kfPf0'S5C0.T
-:bO0RZ2oNpfOV7$%ql/S2]iBBCbp$"D4H,;pX6$.f6"ir<ml<,(>Qh`G*5\CT^8e7Y-cbatld
-D!Z8jh3,WVL,^W@b4%k7*d0m>IX6(m*jcPqiLH4.d=CBR%E<:F2tQ6Wu"#"4ob5.fXsUur)p)
-e@6X[`C$DT]rWJ[b'jb\EN8:Pgj-Q1\iEGJ+.]pAZdk$&t:I-1\r))*kYu"[&<'AQDIlkuX?>
-f9@O5)Lka*Sf_+L4^@`(M#u27(f)Z+-N/q,gEm`;jJgM!ji'5GVIWV.[36Q05"<D>s+Qc>Mgq
-66f-!c*FN%U!bGA@+Nk!Zc.j2H7uDo?J:f_rF72"E1-?)l?PNg-U7j9QUm0bm=EH+aN9W#HHV
-ZNm!5!eRn5:3p4@ngW\3O-b0-SNV'O0GT$"Z-VK!M:OWKjVMWTgF8We'Vp!W&AT_,r]r-S.cD
-=pfk`E&cd8C+0Xc+i_anRM+LA^O\e<bp7FLU2<[%$sT4.^..BEk0(&AO>dk)<f?!W1ViDG.q)
-JBS@sNOOZFNoXL<R/`Kp0a"s$XSu#8FSk=CA`>(PF26-6gmej')lG]dJLHT>j$,)hTE*diB>'
-d=EbhR=fFgtCtZ_qBJba3`Md`W`X(8R^.[%^kj5I\POjZJE=pfO_(HD+1KV'JtN6!djFPPS*9
->eq%adSk`/ZVL\[#"rm^%eLfGCD*aU4\C#JN:gB5[2n\@[>/mOn>"@h;R8;dC@09or:)ECT[O
-n;iH!sQEjD4E'9--Va-]fiKeG>T,PP-'R4uKsl[$ZL4j5ga<"ZL@;jB%o=70=LPC)7/Y;c]B.
-IaeX*t8gq,[J!//nBe!N9;KZDt_."0<FJfe(S"=X#J4j2N]'V$A[<9GD8c*l[dB$QV5j=lK>l
-jmG/1Z8U:<rJ#[h*]Z="FU,DqrX\ko8mW!@(btuidK&8A)@R@*TdngD">C;pdIk6Q/X06RD/>
-*VfEeiCaDsju6c'OdN4g8$P4Y9GFh?`@OS+EG)P4ZEL_Mtqu\(:$dX&iBQon6D0Sp1e?af[\M
-k0$2!cS)WP@;ue=F_i.eG#Q5&;Elq&iq@plh&8KEUV<c!AEfBJiBAj;ReJi7EC$gC8t^7?T"U
-D/<TO\YE:4*(:Z--!MGCQPq(/o$4+Iarb#:6^7*ha045^L2-c'#4l:-s3!"VFlr=Joj0QeU3g
-qWKsSJ&\Y"kEc\QV[.E41I`!9;T79^<'de\4*cbh!/?+m.Y:.&4d<?`9>8KW?1QpV'cM!oY=j
-nNnchZ+Z@Y>:C[HjJ\bG/\HfCiJ6srm3=)DcL156]l72kKFp<Ni^d*o^cKbrqFb.?Aci=%Gzz
-!'UsLa.^gDBoe%LH@9U:gE-S_,O=ab4MpF9h4_,HWt)?0p%?^\W_P2N\5P:%(#EFN1B$7?f,d
-uTZ^0P0l_49J])5r&::5J)@`R2;c0:;3cMnkfrP@cIDRLoA:K3l+bZXJhma_$8??M#jC\,d=6
-!M#;IQuMh;Z<d^=)Vlmp1S95OkZp6U$H.35d.S<<e4Ftm3+OG:WY(+*H1ZnUZ`b+mCUp'U[;H
-sb(?mFe:YBU4n7BdYZ9THe<L$2_[,bqnQrSIYE^-`*Se/"cRZ*`r/AK4g!7%S]$n^(HCpd-N1
-TE1blH)(]JfY8@g'6tmgi09k3l]s7o3-F4,UeBm<1X<->r<Sf1Y6W3->`)@ZPkPQYW[-0RKq(
-M\3Bi>FVD\+g)fgZYu9ec>W&f>ub+gTP)*rK50H,T2H3J?Zd4D.K"&LEhk>)_"dg+[af*&59e
-J*29h-b4K0I3?J5Tm-`U\AaNO$#jW3-i$3*AYl1V<-/[^Se>AtCTa4XNo_`hZrWdXE$\6NM`H
-(Z4eeUDA(mVQLMXsj0g?fn:PD(.C9ApZ4uZ4M!Qg=Ei]D<kd3=KQj2lXM,#A[H)_YHMPq@:g9
-l_=m9$RDQ,WRi]uA9HCKegY]G+h"OIFmAFYI`YE2p%<_$?iIcL74%jQSRijj0hn[m*$FHdIoD
-VoAs6+cC6bE^C0_(*YbS`M^f24^!A%WUn-aDE,.Bdp_H>kVqdT]ps[jTVYlefApld<Ii[GC,k
-<$/P49TeVJ5$Y-q-7Yhs@J+6?IrB)r8_%["[=511O5"uos(-esCZFLr[C>h4_u!2!?#TAo\hF
-ECgT,X3Wn:D\+.$0=7f;'N!c*:Y[OtJ;Pl7FZc\-;1[d1>^^$t2?nLFaJotbYl-+O?1B[^Y\6
-ru^%A;]g?AJMN>Wm/O3YK"8f6G1e6R!@3Y`=2QW1IfqMqat)G`7oKC;091S5"9k\*gp@nf'=Z
-"8KZb&G-?8H=#[[/db=uj]f0,?NF_^(l0Ljhp31k1T=6P!5,u<q]X=Z,pW(iGHE5P/;q[bj;s
-m$-166:E]rg#a:=Y4m42,KKXct=$e-9hIn6"tcR&/@']=;UFd\G)U3,!a/?)5;.TWVORS&0k5
-<no&!CK3iN><Vi<lRF!@j>I^MC0oXUdF%<'c0:tWb%fg]<_Tod@r*s9UGZX5o@;F\?B=n$UWc
-4)H)lDYEFFZkVo7u[;6p[X0@h`n+!1))h5VK#=J;.M2qu%5<k$f0Xn9,ADgo(ghQ>=$.s\>[[
-l1pk*H12g>.$Ec[L4oup<*=mP.do+?,M$d4mMM4URkO(s*Hu]1QpJWGi&+<E`H+K"nNn"$)lm
-1CQI$nV:Wb4?qo^^NAN[f[&/5_D5W.nRj/`h`,=^;Dk4Qicb5m*%7noh\9j^b5")`$7<]b`aG
-R./mMORCkj#B0(2FYk'0=pNd@#1SeK1,YgG^)CSu&5VB7%c`j5AOHp#>K$CU@Mc.l;`lXRj"t
-pW]Y^GIFZl<GV0'9P:ub03`efKfWE7qR5"Y\U*u#6s?e[Xm6S#U.c)uXNp1KS!B3ZYjAEU$KI
-=/s0?rl%IFB%rkkUV8)*`P2CZTjD5=e$3432PFSN>1/(Q2o%?1Nl4sR3mPu=<B?b:^4-sA:mp
-*rrek<8l?;@)?IgkRrL2>8/i?T\90KkQFM@be2hIGZ)NN2/4'4?g&/S%?Q[6Nc[BiZTVnOWEl
-+D$//RHBthl)r,[UD$kR@H:;#nl(@+oraaX2U"X<uF"Oq/:D_,Y?lNGcDZX`V@`iku"`<I6[b
-boH-12eER'eZ)_54Q:bj+H4piTsnq1H,U[4Ti:)U:ojI8A>GgGV`p[uC^#&#6mKO1R/u6LHcU
-^pYK0Q(=gk\*K];[,uJDfW8n;<_*7fZ(=tfrkL%jWI2r4oYmeO^><_'[12&tZo4b_9.<9,'n+
-S6ccFDfO4Au'SM-T4Emh:GHk4(Mn*N4\X"eN2f%qZ0hWid#eWdukH##?\.F#iAp",caGPu3p)
-MdNimA>/e_'Qs_E9h=VXfqAf0nqk<J)D-hN1ot."T6&.B7ts.jfqE]jl*9Aijk*N6BXZ++2Xn
-$n?9+\n!-MOU,iXdnqKgG[s!o"%OtYq<d1Z+Bl/mt];ipG]cPkZMB`ktU,.9h8akU*a?J=I@L
-")?IFt,UZnii,YI2oN[<.1)EprF;aFq`nlZG,9hWobq4gVrYA6,o(1,2]7kJo6;7'"pa]<ZAB
-#.8bKod\iHXhn2'`"c2@#;nG@mT_/<d"J$/l<#r!N%\!!5\_P+d?p?0cPng,+Zl_Mc&e`q<pu
-S^]e.Q&;SX!E:*$YKpo@+6>.msW\oJ>9MD]oU4L==U'0g5O`Tkb%4>WH\[k"h6CWkL.]sY5u`
-naf[gWT#m_:--TpXou(Mnoh&o\$]-f%WTnpRYL#otbg">@R7`DQ*>*9VJSI0HIF%I'R\U_lrB
-Ch$eTMij(#@p*LctEEdD)/C6H?8&YY$@'f7%:KkP=\]`pU%rpFUk1(,dOn(us_n=^!ehF.kA>
-NN:;_a=cO(Q0FZ4j?HX1J#Kg+I?_#-`uE.5<&qg]dh`3B+;QZ.3i+iVM:_YLpTOiFr`>X%0AB
-[5TX_Nr.PmIJmJ@X1.a<;+%Nm41&:/YI\%AY)IL7MQd!Hm0$c<r,NIbG@pO78=F42De@V5f>F
-)=hfQG(4$h='<GgrBp"k_mm:]mC7;C0%38`M]-!oeQ]'2#VotpF/cX4-E/*1@N5$Qbqjc?r2;
-jC_(i%[h#(Wm>Q%.2>UcHT$s<_0bpk#ZJ;YdZL_ZJL?lm)'/sj!JZ)b2!DaQ0.FI9M*3lDUUX
-AH>GB&Phri/r3GI,h3tl4_4@iTHh5uoi>J[4a*M[lC3"0fHe^PCk]kki1L,+jg3#>5LbO&3m.
-IkI;mF%#]%\%]\G$ZN(n=obnQO`>HarMsXsU"[%Uu5<3g<40@m(IER^:-hZ&&Ue1sfa(A270U
-2<LF'eVaXhY-tU:aG"jH8"8*[cd'@!fJ\Ccf.tV7/+)0ee$1/^`msU?BWrpSSD'EC]3i0W]?n
-ml8O%"&g;Y-%Ju*;8>;_B4HFn/_JtZoA=8G?=%W9k6D6k,rj//\P7h`RBU0$YTD,Yb]?'75l[
-oL;;@i>ml$t5A@aK:YWd#*/BGp^)r!CFV\_)nl`d&`IA$j4SZ@V>omOmt2EoQ&0E3.qf+K1AW
-kEp`*q":*Aa*h9>?SZGhhOeIs]c,V:cj`S(@ii<)4.Lt=!M+P.U0eB/$kLl?_oK?,ZHB"CY]T
-]mZqq9#Meul4C3?]?B_3lTEVc7@9:5nVqq&=%e2@.E(l*t5"Q#tO'])2DuLkSjBdjc^QD.Z+)
-/'hmIDf3\^)e88.>V.jKo4,@:GOM6C'sgG#/t#(F#mJ'oq*Ts"$KS>8L@eJ[B"[uW<:=NL1KA
-\c$bYbbfiR(#k]\=C;Tehcs'.,::_UK&oi^'oC\?PRAl"DWm9o=o,)@lsAE-D0WT^Q!`D\*UG
-h)+OBEDMZg&;O3?gQp=T=&9J-*CTc:-K@dE(0=E-Ku"5JrrM?=nTGT=Q@%:McQj?XGO5*g>TD
-o+^8b)gPX=YS`hNAhN%)o4]1"HUq?fO>e#DIg9MNk-!JGT!Hb0D.\@@6V^E*oFEM'Q#G0Vn5U
-si"7Pc&NZ=1nCaP$.K3PPF.NUVnpp1Ej5pU$pZh@gK!_%j:-\'h:Oh$3PrjC00B(l(!giD$?K
-@T/b_FfG:k&hFLaW+<K7&FI)72*KPckFh#*A<Rg(T3j!qGJ\D*:[Vrq0Mon7[g]=O!YsXQ^?V
-et2auX%WiX_+$>ksg.l2"`iL:`HRoo?2ITprAUqJ!UClUO&T=]7Qb!c\dDqOCi.YEY[Pk3G[H
-FnAjlWj8gzzzzzzz4qGeaO(?nCcWgL\&4U*r,t^tJ6@@^S"<3\"0:i:(&l@g]#=Vr"\-Pi96"
-Ks>U^%)j`b8)6.bGt$M26'AP9O9_U^'BJ'uqWAV\&Kck`\\T)q+aQH=."U7<G@O34&8kk1dSM
-Uq_WU^d-&jb@Qu3:Q`AYqh+N+0Cas)16F#c2F2Y@1`Jsr%##/A1(ahEN'>>B$Af#9"2fqXi>l
-eu)C[g#.>*2ieN(@biZ,9BDNd*.BH#Ys"2d]J^:G0bRCjjsH-&*Sn3\Fj\kM%bJ7?;^5^Hf^+
-?_Cfm&h0*zzzzzz\:<_OJOV$/Rs?LgE[R=8F-*:a,5M-1DtDuFVQMpu.bS=<i@3OlDhVh@4!)
-4$rTW+pk)[6.q^2-%]OB71!d+\64#N*B\).XjpE<'Lp'tGR_7peS4b"tG+n!)iaF?h`HW6>\b
-r:VC7csTs`cS&Q>P1b:fKjg*#5[E`:&*]K7I6Q6%EW=W1e8<](-\ZWH81OB2&W[hDY:Kjg2BO
-N6c$M2Jpun%;!B\ZfqaeU:9aoL%K#rg@mp(GMsGT``r<b:6W=a?e8VJO*L)__-bG8aMf7Ij6$
-aWBUaHS6#f]K%UdkJ$\lL7Bl#9e,9OPNND'6NQ8G6D>K)K04UYTN:;#J$W70Q.*asSN`RM"^!
-@<?/K+'Hea*BaLD5+j<CD13SCe9M6?#j;QpzzzzzE$]Z-S,qg`9F$deV?4mB;ZZ!2WIXQT<'Y
-_:.P<&2r@"CgeaGTkdZ=FB.=^9GG5f:jn)>;Z5bmS$?M'ln^HR>HR%IC+PEb%Emk,;j7ukbqm
-E6NnV\nX+\Wl`fmXk)tmf5[1qh**9C/51&UZmb%4-P%%l7e'oE]bU_]1f.[j!".HEKtTK/e>M
-^i`VO>oS0oHdF0a1qs&kpJC'O^-$T?:k:P)A95f"dl0X'[9nN/a'W&8`0>[**l1O+T-V.#af*
-ueSoR:"ck/7s[eDK5LF`qrrpLrg1(5j1IX59CFMF]CB^nIt*$Jgj$D+A)q)BiF37iZhL2-,%.
-0B@S7SCNW<a#JMRU/\KEO1F#anjsYOLR4T2=4#jM=?#t'C<n>L]_%$0\0thZ\jf8C`"7cJ92$
-UF@%pFLefE.R=aI\ZH;#\kHJpQC*_F]@,a%&GHJ1A`/EGqL8<;sb9IG"?aF<U!r8K-*Qcp\Ao
-[r)J8&Q:B,Wi"DQ-,?W.JmM#Un(tuo[4.h%4P/#.[M!Wnl_hpq,Er>h5??@I.NQS>^B(d8!!=
-dd;gM\,M%_%\g4tr_kdBkdS&a-_`D%k++?aA>X@L^V+5[r'D`-clgA^jlXr_:a3ASb-AWBgK]
-!:U#)-XQ'ft-GeQ&?IQtS+I*KsejWfs5k]oeg!V3`JAQ]"0WmtE!`\A,r(aY&V<I`G5m7F/R6
-aBKa&?-g+OH,M>h45)EdQ:4[<,s>Zr8>;k$LgPIs8iP'rRUJ)d;C#,3Ve";mqe"iE-VSQI8FN
-]thXToX"1<5n/mS4=MuKkiEt62_n!J#qoN\salI,'D_<<&UJS+?h65n/j2kR\VATM>i;'%V,J
-FbQjH-dTl2a`i8m=Fja>^=[;3%&4##PEXh0iiJuzz(kLKEeENb"@hMXO9[4T8U(BXgItAc7=B
-C*ss'&mms5>W@.9(QVndl>^d1M'L'_SBHEN'F44uJV;ZHU`uE*FTih!_^6U-YdO8^IDqo+!uP
-V&+PGH5GY@?6utaMZ8@$r1j*8*k?cIhltQQL=!fbO%Ogi;;$EFor=_KoK>)EVXg`Y@Z$n#5tG
-`66],GklK7oHZo)/ieWA`j'$e/trK@ma'Db8g*_t0B%D#D77#A)u1+!QEmSo>r&[.G*Qm8FM]
-dmK4k85S]+MD0<W#]Y!D59c1^/af$bZ3q,e8_k-2#U[*4PN2gR"!LKE+Y=JSr*Rh/jF9RicJ'
-=/Np6_V/i3`;l0t43#bEWed6ZOmu"&^T_p&iY]fH"Sf/<*mfXS4HE'?+OPVQ%FVbQ$q=R/fa(
-Qq4`Su-53jVhlcp-!I6h$R7'IFB-6l6TB^EL(#VQqX=S?K.Q0r=)%rIa\aFL:nnI_QtCr-D8P
-LgR+>5%,H`6YZ'FopmYK$V4&ZH$>+f3a+/MrB=0;.InDkEi<@;JG2UDm\8[Hl;POd4In/#XHY
-eM=a\Nid<1eTMZE/VeSjs*?8q+ogEW!%fI96HjrB3bqYj<MclFuk>^5!T=%.m6qGtL5LW_F#K
-3W>YJK8SS^/T@W)CN5$*!p4qB\6hC"-^MI$c?DZ$mWE7Q)$p9JB;SPUIpW>,+D(:>s=:>\]UW
-i$d%I*ASK+81I?>*%Fk@_nSs1oKiaG/E;Q\_UC+^).c8oRDJ@L3_QAdhNa22jDS2rhG]3iQ/W
-*Ebj-p@fnG8to4ph*]dZInL"'=uXCd\m'r8pcRAfT!bGX!%n]+W7\(iidPlHV$GH/Zln;bVL0
-[R:R?n'^%o3WrtT5DMgk7c$CV2aCUlVLf_"n>]@6$QFj+CfEu*UR:Z\*H!)n:Y7m(EsLr(LD&2
-%8u>AjqCG7"DE)A*7ZuF&aW"6Kkf>(Ul0aaGR_V7ofgMV12AEG=71Kj2!*LE32LT:8Rn58=f=
-O:S0AmL;#*W@rI!JMW88l,BWf&e1W!t2;hAq\KO,Hf$q53<$88kP_GA6<$;'%dC4!9_.'qaBJ
-;A>^bT%2YnV$B1&K(P4QA6m($dbDe%W=&gr#uQ#bo^V><iiJIfZ\\E9V=`TP<P;m&Z8?fj``8
-oe]'-1nOri?dg9K:3P[7TTCY1otM1FCZ.XF]'ogY4Pl'!0#-<I)r]jWkPL.X*\,Ppej*cXD:H
-E!+no`?a<VtB]N4"mW!Gj/dHYYs+Ed]bOoYR+Xq[p/?)Cq`6+Ce*GETM*JE/,sc.E,iIcQTbF
-,8p^$N9DErKGp>n$a"+q#-(YLBU)Uj/VKb@k#*-M6#mRP_;Q<ZAqnDG#h,Z2AVfu4+N?erNlU
-;Pc'9tZ];@K!,9-D!a.n\.%_WG,5Ze]j-km;eQ[8Y2gYK<T\:+>0l?]/+rPY,F#4*#:+gf*$-
-8<4%4oX;`p-6;9:@\rH?.aLCJA!MXs$PT-$3OeYO4m_7AcE`ETm&NkUDA0UV-%(CRT7R@Gh;b
-R)`20"V`6e$mFIB^C4p+)kK(r*IH<85eE?<34%n&;nm%N/'dSnUeYJ5<n=%I7=<2R&8daO8*h
-mE#JEsAq8'MJ[3Ro1K,B@iVk>'f+]aZ<Q^:jW*kp`M_=*5^c'%?Oo/]h=l?`(ITg-/?521LN*
-kQ?'%S\9a>].sSq52_Z93U5J5u*o56g$a3uKq8?-Ni[\n8=XZ"4B+i>GEHHm-VPUMaX?*/tB=
-.p%'oeCC&(:?.W3Z1dkp>'j<'bcq7Y>.j.Xc.Hkp`>Shtd+Q(j7tiI?9eEVg%q%%cS:s)bBE%
-.#Lf^?N0oG`G]kj,"h<#nQVkaH<cKYD-6=D=JT/6V'+EaEa&scLT@6-GIu\ROh0/KLP4Q.NH:
-!H.X/D=>U;=:'g9M>,mE8j+MF8<A*6gpn@#Xt_ED'%0tlUCrUige$.!O#!GDh?&4H%BOP\6d/
-ao2J+?WMK^9O*)U^gI[(Oh*@2ka;Ql)>pC@7ps'GCsSrP^;.O_TTn7fCe?/QDOIOK$PdT-bE:
-9FqqHl7)`(UKgH?>3_pejLt@["F)%B;8jg<s",a]2W-G-,+rDfBqbS?0G;CN8;'"Q1ne$P1Nq
-Se&&YJnj_?2_d._[P"6$V=XF;[7GiIOX"(8$3J^h"sO:I06`_PF209R76k\0.O);\1"[!eU1]
-KEnYGf'@&n4E(`bnNhEX>&8PQ3e-)J!o\^PJFL?b5^6Zdc6L!XDK?\=]-O5fs81+[q![)V.6s
-3R$e.h8`Z9+)iE\uuY-(>gJ"K)PQG5(OJDCt*j[4poW8O"B*j+],4eM<Eq<*5\;h3[=lK.&?n
-$p0"<aMllZRRVCn&tsf?(kRgOS5.'-Pr+NT!.B7p9q?S4aR3Q=/_IHUqNN0[:+6mpuCQVcW(^
-`^+'Xp_P@l'UI46(8PbU5q%*'>HMsaH!*4j0Tdos1\]oM$Bk3K#PIbndTU<a^B#gsNgg578<a
-FZDqBGs/l_l:):K3c6]tXddi!AT7GdJ36j5C-M0#]2PHueeDX3?WRWQ^(?le6fbVa?*XF6$9$
-kl7M@1=j_)5Ao_E/h?ZsV-ZMWrtPq"P%IjsG_W0#=JC9/Yp*62UJInr#")RU?6m9tX,=UP%82
-.qKng?3PGb,QXk/ssI$JiQ''WE_NHq?`Y##+ealG%"XYra*H#BV=+IfHg]V*4^,\bX_4uoEr.
-q1+$p.D,N.\)Q=G]6f3:-_3CbSGqa+S.i<$I[*)^rmin09bK?l"riQQ"j,fAEnoAT#>=78^CI
-UHEI(.j9fN_DNdUeckEg5U@bN64/D'>6:Ts3TCamsPkZh4;/S%F29>@ikugJJ05\B$E.[_^j.n
-%r31<a#/*3ubjYNA]1aAed7W;r'A_Mq3Z;LGukuEEEm2G9sdu:;BX>dB$Q)>K_A%ffX)!gRpB
-E^IU<dMmLLhT>noQ\'4)=E7)E;_d9U5D-E7?\Ht5Fa7LE-(7UYJ#iEndIGkKff"SE9SI:i?hh
-r\HXQF6@nbKRgW&h%OS$%b#JB\7:uY$c*<5/Q_P1^]%M"QF5JZD05jSRNO7`Af6nn2B^(MhO`
-j\b0RB1oCTindf<p%b.-Ykm+#m,CKBi]`3rs/dP&lOU;jR_n7HN<6X6:;6#'i5<fH:\)!!%P1
-^r=<>?/qlk3\P9-U@+%W4J$!28(0T,mOSq,I;pk#;=/3QU-,8kKBf&<T(8WL/u:[Dn".%do"t
-@QM^]0bmN"T8+[=N0s/=uALB)s%gfKQWcb`QEYN3_[FbPEu&>N<`Jf/NSHqZf3(QOE/.&\OW;
-/*?.@.s#ASKJZYM)%3^a.J9hW&9OgK82Sm\5't@=h@.aiX:rVAUa7ZpJVYAY,AF#0FYci8R'7
-2[eF;;I#q["#@ooe?&u%,kuH[o4(?X=fN[uB%H,`9$AQqO]a^="oGAAdlOA+diCN35`%&pD+h
-`6_Gj32X`RoqG-0\QL8Oml%QV0",L@jnnPH<W<:O9m2UFBB[_GRf7KF,]K<=4I(b]!s<j!2*N
-X>dB$'rDk]-S:DP#'RMDB&!]77Cc#3'4_GB-b>dp/T9i?J7NXGoVoq@<s^\<>^@+oLW,O*@l'
-M4T.]4'/a[O2^sj)+L,/*bRe2Er1#PM>L^_d>n*RL@b/<oR@)8]h0GW4i$75ioj8f5\zzzzzz
-zzzzz!*k>$I-'/oh`(k\Eji/TK_W>2cM/]XclO%?=he8Yg&lsfo+r?5HXJ7$2q^E;:]:s)kU0
-g(npl(<rS'+,%i^_A&c_JDJ:8d.Z2]hSV)S%=^&u_X@`=N1#Ckf!I0ZDe=aJ3)5T]euhZ;qr8
-l$-<*RtVtVsaWXPKk)HERGLI*)i10g^-&>HI>o6@#'YS"rN(;]tt1:QX93S^&p'>c'b!24Q(+
-mNAN=(fKK;4!h6(&<+)aTQjdem#64`(zzzzzz!!"t_V,V]9cC)Ff?un#E3PbT%<Kg$FV&s5b.
-FC?[6VrrO'Q[(kJU>'1:`rAkoX\@T`_!q4htS#dGs@;W\040m&4M&]nP]:G]eLHD>ue^i!`24
-JT!Mak&lh%a!XI,hk(++49f66miDl+K#cIl1#k<J^oLY+8TcLDf%AUfE_t!&=9se#5WR!T0%[
-\g0`QsFS!WW3#zzzzz!!!#7=oL3&riIF_c.'=GlC5@'^t#t)j["6cO'>I&[.i7`*T]S6T8_Fl
-<Ju=l&r6'W3\)0rT1WE@;ca15,!.E2W`sdL8Mb"B*mEIg@[BZ[g/u7)m$fqd<N7!N+G6"g0Q"
-&`U>Jl5Ku![MV"Ya8SS<>,MNXh!S>s^<.u*S,fFaHV$qu&Ca8L,LNfb`LBrKb,dd%SeMarl#e
-A"db*T28)UU:c3=8@k;*d()9fgJC"'9Prg"R/pUC8BD7UiNTc:u!%b_u5hdHDJT`<ph>qk5*,
-EM=cJ+*i9gI#dU0uf(J#b2!H]pMG/N!qY1JC,L:=m^mO)0DDp[N3^!iB\"A\egdjMjoO.;T([
-'0%H)(],I5YtS!s+Y\q7$n$6$](8Clel%zzz^s/VCK:e)"oII,^%t6/#!rr<$zzzzzzz!!&Mu
-e^F9CU`s-A;p%)Kf7L&\#qAqKO_72W5L14A'V's/5k(jSN39ANguHbm:9pr>1#$HaF0%^A\_;
-t,T"JSk,rV\=p#u;^aDnIkL$U5eDN!.(mYP<Ng;pFSKiT4n`U""[R(+!p&=6K;iNQS\/BmV;p
-.+(C.a.Ua-5@WoT"Ll<;Fu+5ME&l,)3gLoh46aYl5q=cB!CoPeQc:(MIfpa<\"!Fr8l$:V)Q%
-U`42"c#`ekK03*u]"Z_A182AaO3K"oh"5[V[DDd\cXLY4mPTK(g8_6<_YL#q(Zcj6M77-AqBB
-;e9j;efHg*Q"&bQqdX*O6l#;)FDiB08gG,YMVqZq/)-SY#54*pGag:!k@gnsNHppupJ-8]l=1
-Q&ZStYOD60?CAMV;Z!;(3OnWPdSls>cL%GPWUMhbQc]@Uc88N:;du_..k-e%;VBOCQGs_5EmL
-PJj@X5#7In7l'77qU+N7h86Ps!*=edGi6bH!rH;m!CUSXl5Xca2ddn<uEMDDT5(&(q<H?B).g
--m=@Z&pGL/#0dg=&>cHL6na1VNSEBf\sta=3T*k&4n]rV".JE>EE0IP>B3h.O\Oo"/JEkb`[t
-P8g%u6QqPDW`"CFmH(uZ0=*A7q=aEX?Bgi`4f=68VMMZM'9j)edmP5/3=F+5"GnVIO'?a,sc\
-`M$JlI%Y;H\<//M^4MiBm3tV'bO'91C`(g/hE_NL!msEL3IK-c7Pk<Y;_79@@U#-g!"S<:AW)
-UlHbc.2%5:K1(X'oMhgVGqk$4B#.U#7Hq(8DnP^A6W0T*j48=VoKk`U'8cC,V#5h<B1$)r?+b
-5>)5&!^2DiZR#"tZ,8O"&)<Kf%.-'g/WKQraRSP;P9.7mXoU*9;RJ;+l`Y'>9Wr.V;K20jqTK
-d?2o,uJ!^dU/4!.b6Us,&(>d=RK^'6q/t;'X8[Ar#K5AW">/:o')rpLSoMG"t+VSZJQim\bg.
-#Zs&?X@8Af,?-\pV>Y*1j^2,+b[5I)qd=a.lql+kQjkO.Dgn1nc!!(r9\E-IDjWP_W!_S4mU-
-6ML%gk,.doj6m'?Pm'j@>hg+J4D,>DR9$@'W=g'll^AY>C!?"N_jZ>G"fA5mn&]K;'BUol<Y,
-gr=^*oC&iTL[ZL\h4nL%RYPL2IL8p^E@Eh>a26Srl7`Mb6m-6?3Dt1@U/aOA^7sJKoF/F]CED
-];91r(5%FJ%"jiY*GoTCH!O^q=EXj`F:7s>o2Y?29l2Ht'rX.qDSmZcoV%%=MM?U_Q19@cRX>
-')P*=nkbCS:(kg]MosMS*;Qm7rRqA-g0jB111$nO4'CdlMTS7E,gU<S"t+k2WDZ<nXBR?dg:/
-Aj:[!AOdL)3P9tCGZs\LOY\6B0e`=Pp&_#K8C&4gDj@s2Or18mmo>(66]3<DTGEQ0AY3@%&$6
-P(LF,HY=S*3!T4_0*VB9ECY.C#[O*V(+G8`cJ9%QgcV&F&:>@r.HU9G0sok;/O_($gge-p=#$
-N)WJ"^Ufg<<]Bpd>1-NPW"b5c;gLhc_*h-`4?Q0'H_@f&g.NN!HnS+<*V%g<YRr7^?!]OhfAX
-!XT#EuuC;,in'VmZ?>#n1#^7kd*;p#/]&$3KjHRKqd+?blrk*/H`oo;F6IQHF`(8U[ibnc]QO
-,tD!?ZqFOd\EC0YJVU((Mc.I&G`Q2SnD@93Fg%qNjd%;8_'[PMkrK])MhIVOQGQ'ka#P<[k?o
-"+U.*bi@pOB\'2*&]a#/olYqRDUg&/>eN9W<8_]9U*nsQ?6k(YY>fi9D5">2G$em=ld5EgLie
-Jf1UlgN`W>I%O0P"=`.ubgPdf(9$"bj;u4V?9<*o+EdJXWf&OWa6!W^.`*BqkDqhUtjRR?E4L
-5\be3NAu%JOD]D*6QKM$7cT2sc-s0l63@UoL3kL,D#"l@c!<lDE,4Xq2OLH6m[jf0LBo?PR2M
-,S-ij;J^gPI@"-V=cG<[^gM/!/uKB(QujAC905hFuhEZ"t'_7?CdC8>.?K0*Yg*g+p[G_fQOk
-k5=G"[t=J1s,SH=lEmQ?-&X1P<!'("h5-&-HV?4,2l;>EEbQr841N/c[l^TILA]Cl-LA54;hH
-bE$L=u,9kq0*4Eg2O-Ia0^"L;5cf1U#$gFThJMCZ=GrN_THUJ#$`Uhla/3WD6KCc^N8Q8D6]e
-!fqoGSJ\ik$LAk;6e3Lb(\H>'d1o4n3<kdL`E-I)rWA=^WpH,PHq`\A]\R1n,qU&8CKYqaK4q
--JKcA*?$aS\22VWVbZuM'*OqjU!c$W[rXf\^i5,^*b,idzzzzzzzz!5N7+$NLhp"(2JM6@*#X
-[.M(EfMbl0>3UDAFCe5'LQ:S7NV$+3>"eX5\:BY%bE^NO'RU3?QCG&/YE7TG!n&"iUj#;r>C,
-o:]WQ$@mk/V.X3??Vf'@Bo?5DqOI$"X1rr)`?@0t-ufnm[WnZS:GQiI!R`uc><<U2;c8>S8;<
-Ge&b25GGWGcOmbp!pEUX89AA>o1iYAJXVscd124YH%GoHDpgf'&qKre`tMd4O%Ybb4DO.r_(D
-&c;:RS(DU11kuBP4kPPY7]1Y\MCU?CnoskfErB0tkb`!U*hEtk!aJ5>2l+R#mq/]SVl.$M9OI
-d2g;-mCOFW:9q$0g7njUSb"hUAc6[Z-b,O'002rhn:<DY71KUgIcgFB0^P4k3>koSi4<fs=PI
-eD]+V]Tq?$2HL76]14nCguh]ScVKJqH+?JapUtm%IfB<g/\]"!W;]:[O,_bM/tQm7>J9sa^T$
-k4%kYB(cD=S]e`i^FN%-JQDdKDd[/%Cp6\RilH?ViP_d,C6`p1+_c*,C<//dhhm2>#"X(TZn3
-U=_0>&El!2.6"f<c:i^jVaQ^*)6Y$q=%106@*iKWP`#k[C(>(qYC"D)sr'W[.=3rCH^7<<I\!
-Zo4="2ZZPflP9u]/33-[c?JaX%m:kZb%6B=;T)PAE:KY=-V/(gdc.6pLcjMBo51Hlds#uqN>h
-8M]XFY/BKg^6!I-7@BookrhZ;dCFdbV&$9?2>dm6)rfg!)@Peba67e[o0LB"3c^g%)\]5P9'r
-eCpii2NsLAQ:uUN<pQUuoit&<=Zs70,0Y"1m4FQ(Sl4,f_s2XuatqgAAU:rN]!ZkU`F:"7@6O
-:r?7r"%r:nQ0:J*KJ]n5lgMsnteH.(\EY^2DfrDN'&X4d&jC\=":\Xqe5Sg<RNiFbaD'/`o`e
-O\$3;#ZX0otIoh>#:-TM)3q5Bi&Oc$3BDI)''acZBa29;VslH/tU)%lL._pSgU_PO$CDZfq'?
-&cXdU@#<iRj]mYDH!n+\:+MBKpH=u:kV'eJWo_"#Wcf;K+?RMC?JW\g=]C^mIk/Ust?m6^V0G
-.[\`^5<=`r?:On9J7~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 634 554
-%%EOF
-
-%%EndDocument
- @endspecial 396 3700 a
- currentpoint currentpoint translate 1 0.65 div 1 0.65 div scale neg
-exch neg exch translate
- 396 3700 a 229 x Fm(After)g(clicking)f(on)h
-(your_printer)f(\(epson_870)g(in)g(this)g(e)o(xample\),)g(a)h(windo)n
-(w)e(will)h(appear)396 4058 y(similar)g(to)g(that)h(sho)n(wn)e(in)p
-0 TeXcolorgray 25 w(Figure)i(3-8)p Black(.)f(It)h(w)o(ould)f(probably)g
-(be)h(a)g(good)f(idea)h(at)g(this)f(point)g(to)396 4188
-y(click)h(on)f(the)h Fg(Pr)q(int)k(T)-12 b(est)28 b(P)l(age)e
-Fm(b)n(utton)e(to)g(ensure)h(that)f(e)n(v)o(erything)f(is)i(w)o(orking)
-f(properly)-6 b(.)396 4317 y(T)e(ak)o(e)25 b(note)g(of)g(the)f
-(Gimp-Print)g(re)n(vision)g(printed)g(on)g(this)g(screen)h(and)g
-(con\002rm)g(once)g(again)396 4447 y(that)g(it)f(is)g(the)h(e)o
-(xpected)f(re)n(vision.)-2 4949 y Fo(3.3.)47 b(Con\002guring)i(y)l(our)
-f(Printer)f(in)h(CUPS)396 5165 y Fm(W)l(ith)24 b(reference)j(to)p
-0 TeXcolorgray 24 w(Figure)e(3-8)p Black(,)g(click)f(on)h(the)g
-Fg(Con\002gure)k(Pr)q(inter)e Fm(b)n(utton.)c(A)i(partial)p
-Black 3643 5692 a Fi(26)p Black eop
-%%Page: 27 36
-27 35 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(3.)h(CUPS)g(and)f(Gimp-Print)p Black 396 579 a Fm(screenshot)h(of)g
-(the)f(printer)h(con\002guration)f(windo)n(w)f(appears)j(in)p
-0 TeXcolorgray 24 w(Figure)f(3-9)p Black(.)g(The)f(contents)396
-708 y(of)h(this)f(windo)n(w)f(will)h(v)n(ary)h(depending)f(on)g
-(precisely)h(which)f(printer)h(you)f(selected)h(when)396
-838 y(you)f(con\002gured)g(CUPS)h(for)f(your)g(printer)-5
-b(.)23 b(The)g(screenshot)h(sho)n(ws)e(the)i(selections)f(made)h(by)396
-967 y(the)h(author)f(for)h(his)g(printer)-5 b(.)24 b(The)g(indi)n
-(vidual)f(selections)h(will)g(not)g(be)h(e)o(xplained)f(in)g(detail)396
-1097 y(here,)i(as)e(the)o(y)g(are)i(the)f(same)f(selections)g(which)g
-(are)i(a)n(v)n(ailable)e(when)h(using)f(the)g(Gimp-Print)396
-1226 y(plugin)g(to)g(the)h(GIMP)-11 b(.)25 b(These)g(selections)e(are)j
-(e)o(xplained)e(in)g(detail)g(in)h(v)n(arious)e(sections)h(of)p
-0 TeXcolorgray 396 1356 a(Chapter)i(2)p Black(.)396 1635
-y Fj(Figur)n(e)g(3-9.)e(The)i(CUPS)f(Printer)h(Co\002guration)f(W)n
-(indo)o(w)396 4240 y
- currentpoint currentpoint translate 0.3 0.3 scale neg exch neg exch
-translate
- 396 4240 a @beginspecial 0 @llx
-0 @lly 618 @urx 994 @ury 6180 @rwi @setspecial
-%%BeginDocument: figures/cups_config_printer.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%Title: (figures/cups_config_printer.eps)
-%%CreationDate: (Sun Feb 29 19:55:36 2004)
-%%BoundingBox: 0 0 618 994
-%%LanguageLevel: 2
-%%Pages: 0
-%%EndComments
-
-%%BeginDefaults
-%%PageOrientation: Portrait
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/buffer 512 string def
-/pixel_stream currentfile /ASCII85Decode filter def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- colorspace 0 eq
- {
- /DeviceRGB setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- }
- {
- /DeviceCMYK setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1 0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % colors: number of colors in the colormap.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- colors 0 eq
- {
- %
- % Image is grayscale.
- %
- /DeviceGray setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 1
- /Decode [0 1]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- {
- /DataSource pixel_stream
- <<
- /K -1
- /Columns columns
- /Rows rows
- >> /CCITTFaxDecode filter
- } ifelse
- >> image
- }
- {
- %
- % Parameters:
- % colormap: red, green, blue color packets.
- %
- /colormap colors 3 mul string def
- currentfile colormap readhexstring pop pop
- [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
- <<
- /ImageType 1
- /Width columns
- /Height rows
- /BitsPerComponent 8
- /Decode [0 255]
- /ImageMatrix [columns 0 0 rows neg 0 rows]
- compression 0 gt
- { /DataSource pixel_stream }
- { /DataSource pixel_stream /FlateDecode filter } ifelse
- >> image
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % colorspace: 0-RGB or 1-CMYK.
- % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
- % hex color packets.
- %
- gsave
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Helvetica findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /colorspace exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 618 994
-userdict begin
-%%BeginData:
-DisplayImage
-0 0
-619 995
-12.000000
-619 995
-1
-0
-0
-256
-000000
-ffffff
-c0c0c0
-b03060
-d9d9d9
-b3b3b3
-c4c4c4
-ababab
-ececec
-6c6c6c
-cccc99
-0000ff
-ff0000
-00ff00
-00ffff
-ff00ff
-ffff00
-990066
-6666cc
-999966
-ff6633
-cccccc
-999999
-333333
-9999ff
-006600
-339933
-000033
-333366
-666633
-666666
-00373c
-333300
-669933
-9999cc
-ccccff
-ffffcc
-666699
-000066
-000099
-0000cc
-003300
-003366
-003399
-0033cc
-0033ff
-006633
-006666
-006699
-0066cc
-0066ff
-009900
-009933
-009966
-009999
-0099cc
-0099ff
-00cc00
-00cc33
-00cc66
-00cc99
-00cccc
-00ccff
-00ff33
-00ff66
-00ff99
-00ffcc
-330000
-330033
-330066
-330099
-3300cc
-3300ff
-333399
-3333cc
-3333ff
-336600
-336633
-336666
-336699
-3366cc
-3366ff
-339900
-339966
-339999
-3399cc
-3399ff
-33cc00
-33cc33
-33cc66
-33cc99
-33cccc
-33ccff
-33ff00
-33ff33
-33ff66
-33ff99
-33ffcc
-33ffff
-660000
-660033
-660066
-660099
-6600cc
-6600ff
-663300
-663333
-663366
-663399
-6633cc
-6633ff
-666600
-6666ff
-669900
-669966
-669999
-6699cc
-6699ff
-66cc00
-66cc33
-66cc66
-66cc99
-66cccc
-66ccff
-66ff00
-66ff33
-66ff66
-66ff99
-66ffcc
-66ffff
-990000
-990033
-990099
-9900cc
-9900ff
-993300
-993333
-993366
-993399
-9933cc
-9933ff
-996600
-996633
-996666
-996699
-9966cc
-9966ff
-999900
-999933
-99cc00
-99cc33
-99cc66
-99cc99
-99cccc
-99ccff
-99ff00
-99ff33
-99ff66
-99ff99
-99ffcc
-99ffff
-cc0000
-cc0033
-cc0066
-cc0099
-cc00cc
-cc00ff
-cc3300
-cc3333
-cc3366
-cc3399
-cc33cc
-cc33ff
-cc6600
-cc6633
-cc6666
-cc6699
-cc66cc
-cc66ff
-cc9900
-cc9933
-cc9966
-cc9999
-cc99cc
-cc99ff
-cccc00
-cccc33
-cccc66
-ccff00
-ccff33
-ccff66
-ccff99
-ccffcc
-ccffff
-ff0033
-ff0066
-ff0099
-ff00cc
-ff3300
-ff3333
-ff3366
-ff3399
-ff33cc
-ff33ff
-ff6600
-ff6666
-ff6699
-ff66cc
-ff66ff
-ff9900
-ff9933
-ff9966
-ff9999
-ff99cc
-ff99ff
-ffcc00
-ffcc33
-ffcc66
-ffcc99
-ffcccc
-ffccff
-ffff33
-ffff66
-ffff99
-dcdcdc
-e7e7e7
-6f6f6f
-ededda
-eeeeee
-808080
-547098
-800000
-9a9a9a
-000080
-797561
-797161
-cfbe9e
-797159
-d7cbb6
-cfbea6
-969286
-716d59
-dfdbd7
-beb296
-beb6a6
-beae96
-b6aa8e
-b6ae96
-716951
-716959
-cfc7b6
-b6a68e
-ae9e86
-a69e8e
-696951
-696959
-GhVPUl#ri5eolasZM/Q453LQnb/ED4V!]E#Ij^L;4SG_cGh%"of!#_\R8n5o,6U[n8RP3+If
-hsR%KHjMTc0R)WW=<:)B]*]!@"0T+Mq':8bfXihgej#^2@,?H*b,&$'(LIg323R0FQ*O$t!^r
-eTT2q-0MM0AQ_MIonD)oq>Cd(R%#h1l"H<A-$C3!.i1l3`r&'@_?gYXG&:(%B/Y7O0O9g+?''
-3:Ac&.O!&NS51Ip2i&l#-9Beb3nRL@lc!-=/^<9r209og18m>Eqc_3UiB^g%#M-K^p59jCcSF
-fFLQFLqRR[Fa_r^mEi/>s4m)ZeS13&n!=o>)fn(m[6**iWQsXQ6la@<NMjqdFEo;<jeTc"4_#
-'S]LT9CK_+m`WV'qjsDcce`m>%dV!(=`0VL!WA_>jQ8#6\4]?qj0>PGXdf3I&=\t*:6$5'Zlo
-!h_"Ds-YH0M_QfJWtYNE.gcZGE*FXqoP54c<DnQs2j6K']LF2W?MFcUC2/'S'm(5MK!DbQ_#K
-6pNW6#Z(sA!S%/^:^n!+rVIN6&siN6+F"lBG[!5EJo1+mHI\>\W+O0"-RHb+mn.P'Z"a]Okk=
-Q@dO-=E2lta%M`"#4V,)+I*5]%noLVUt%',9A19,bBmS8G9<]iL"Q)GJ4Laf@W2U5%Ohjk$PC
-K9b&rV?&K=-/6;,'H+K/&!KOjU!a7;G<sV@-NlGWG5G@s0MaO?XJ<VMJDu$RA<E^Q3+GgqPs=
-nkd@>4b_n#:A`8%R,-!f9B[*PW?S?n8rqs2$CTePUVE^27IS)*e+>WUoSEm1H[GjiRZ=Ym@_a
-nXtjtF9BjqPETRI]aA7fmPbf9WH0NbZd#[B61coh3abbP^FR=&DSt<(D@3oENRO>W)OZLJb2M
-qTmdmcV%hZR]6fsrXhqT)a9i)ST0s?'u&^[WQ0mgC%Xs&5ik,'g.S,KQje+gBi0bq1I"Pj^)^
-("hO\ofmKD8+WMmhRo@A$[r7Pqb\7G],GfS=+V_;ggVk2c'$:)86YM/`[;=2A'gK"-CIr%f:.
-c1,(CD*^?2'+c-EeX;KXgg5&TJ%s%[c6C;[1R2O\IGmp\,K)[RJf^fq[J'39aA)cBj]%sOK/2
-'])T0\0<%B?@nj!4;N2DY@p;:-S\B'd9f&g:\S5Ef1`Oot<(e;#oGM<@K'l#1Wpp.k&?^Eriq
-4p(JA/[0gVd%=[)A#mXCMc)3j3sRMC4hcrlNpjg5kMs5Er2H<m.FR$8TWF;n\D(7+@:/,dOKJ
-hY?]T7?YW#TUML?b)<E"l9nn&U,D4I]>&J(B#6-e<irr]rFc/nbDU*)jb2R$5d_]#Kg0ZqqA!
-3/$RlN$NQ3gmf6G4(p9dO-TLq)$d%T1.llo-F*SJ6FbjU/>#\36pn[)6VkIq_^l4L_g-_E\($
-\LfCXqg2ga1Ok#<V>&<kHQ3>5>EH0Cje[elE$S!\CGOc7]0p/.MKBr+C,YX):e`Q^]*5pc[Bd
-HUfCp:=uR83C<^C=f61&82c1#;^:7rcU1O/.9=@)QeZ+&*DlTkGX/9q#`F1.mM[X@Nf7*Hn7E
-O+[ZcTST<j\il19IFBY>.^-W$WR(J^q1?\Itj,>+r*I9uXL.NN2sQMjL+(;(YhnSMgG+q/bTF
-lVDS!NP!21'<W(Z0-/SX/^Qa?Bj+LI]?LLm;@>]!bDMau?MDC]ci*5H-CaekoSRCIW"p;5Nd/
-6;MrN,\e\%j3;`3O&1sHf/qj3>Ajpkt9g(L$A6tqoG;+@rHV&FQ[co6[D"fUnDm\NN]n7tq(r
-aXl>.Y=.Oq!!W:"09,!XaaWY>r?t$+u9k>URD_<W^U,_)A(I$H`38$[N<u19(=7YDS2_;(QT=
-aW`=[N];Mh*FlNX=`BPphJ+;&cJGN\+I;.A@AVjWa[^Bh<-p_hGE`2:M_dLO>"FFK5;^&(cDO
-MKU7#aK>=(C2(0&&E8@KX9kc)Y#p:TUcZZ&?OE@6p>u17/NMVLWFska^@;j18OG2CWBF0^CG/
-2,Wulgu$72HX6$"E38]*g9,TK,LsFZ!Hu*#(9$,75hlEP]Fqq;#;Y*:jm6?u^LF@8(cNMkT6S
-`T$d`n#gaup5G7D_j8H19Gqc7ntW-8'EhgaHm<3&RX7p4hiT'Xl/.!KO3>q>WTAa`[5]Ms*52
-F+[XE//2JZ#=t5s7!fNUKU[Apq;MFC"8C@5[W#@^YPIt[64**P+C>AVR>2s?ft/Y;7USWh0p"
-rV8Nu]WG-(sRdYgAguL?T.=@KpI#4fcpqE3.<Bt;&rrR::5d`5p184#,7/=`#4+L>0f(p\e(%
-<0>$,X$[oLVWZJKO&,rM/a"=o+qi=MJTY-+H-#&08R!4N%c25n4<)UV3W)?@%AlXpAt<e\.^7
-s6nN=^6d\"O=S`uo2EsVs,CdX<M17D7!bWCBA4f2):d095W-oEnj`ZKQhC,l<(jCreNaerRmB
-7ns))-(Hg)OP\ME/b>5KdBmh!R*&qHC+K$_s!!S\nM%%#6LfIl(=nnXBQHd][&)OLu1g@*qV:
-^tVV<!,NZe`?1lTc0:5W!8%hMWm<?d]+<Oqu0>\/9iS#O&,brs"X#!S1`.J<9s8E:aiZ-_hWL
-7psebiqf<3Ib$1'E[XZ,^C7f>dm,M%Be#r5-KmYP<qtrGCs%Df6=HM]sWZ;uc9(&#=c.C2;4)
-j'geK12Q9"!REIX.kqdP=Z;;mNC^;O*WhZGV762#7.oU=pLb+7)4%k,CtPp757OZPLYHALs$k
-I7W[GM('ri4I.GVKP(-.$IFRhCgUK5Wd2e`WdQqM5!RQ'o'93hR)1<lbW\JWXO+_`k0e8(5*k
-&>YT-QNkB^,!8JRj>KrUX`FM1AT"-dDp"X%0O_QsfFM:[Pu%o8*uIKB;E/n>r4\TuQ0[*Og(G
-V#[fa5c]_/X(Yh-(>-D]&(g/s6Xhe/Y7e-s,5o8S",kq>$5nmBO$2teb%H;K=[M1@Q(=X=QU7
-SAtA"`e%o=h4k4j,Ocuubhl/"Vh?;4u%2WD7^$o=?5jGO4oN936]rB2+@Ma?fht;1Bm`YQbPq
-Mp_49mCn[3OtHn.QM[.)m5OUK]D%%f4noq<)$14+80'>&W+J4$BQHaK[/9i,*=fin4#YH20j'
-$s2`P;B/L'<*]a3fTp&lm[G*%'&SVVlKrVR+5Okm_lkqgM@Y/@:7oKS9]n5ZZ".^R;)MM6QV@
-P7'&YiljKE,.o>If+7OBm1&CYq#ai->bX2`=g5M*eriE5`CfR?4!qY@'7_>V#LeUmF>VESak2
-q]uK@il0W5PVbX26McEaE3.^V?<8ZldA;2:NnHj2)>!*8(P[DUdS*2WS0ptZ_OGP;>`ZD\siY
-C.P;P-0bc;:&onegPB_@^^LU59<2-D%oC9MqoK-+Dj=9\!n@+bLFSmFdIi#pm:DA_XIN@:;7F
-K_UG^4&&6laaTp+-`RN!(IZG32*e>uor7o7C7iU>D^"?Q@VW3r7[oF>BgSr96oQZ7Dp7&`b.D
-aZ$7%hZc:liZR_lEnBu(3SWod_kp=*?O_A647V`O8#C>?&$j>YaZ?Rqfc7B*g,OR?#Kj6PSbf
-93ml?fZ[,O+Nhm6,7`&rp?o0YG@Zt^DXg3Y8B.oT;>m#CkgnFGnDmZWt-c9cLbmk8F!q>SL2T
-8>V*#_dYlBG)E^RJ>iSn>5(1PCcFP-GGDW\2o>4`)l+>phVF9Jk.B>f4e6"9:mCAp'"h"W"ZS
-&&laQK^iJW)3_F"Pr=`s9/9_"L\JL%6f-W.oGDbsD*tsd\;&hU$lfqmJ-^,9jfU>b"R=FpkQo
-p`XlM)DhS\:77Q=?7tnOqBtCs(_&_YD\P20Do"?_T]2MQ:9#?9(hkactX77o`5h6m+RLHJ;<r
-'=,<PW"pK)UX8BR9/0FR'(:ON,.FRCPD^EK*rOuqO/Y+58(HAe]6Gj[!HS"2WN/UE/g?j1;'.
-n:7Ikt`<>rEB8F+E*S`H)#52?S]!m`u+2^nn@eX$Y^^0O]uoK"aMfabU%QAT,=<PtfV-=m4(<
-80CdA<(ufFhq^s+q@h(MC2_73a?2`3kOb2!q[\M&sIe7=7WBU<Mb'O[_u_8R;<Zre^_mO=`H1
-io>APGP7l'OQI5EE[r[h#RDMl=T^:b<0j/b8M2.#cB\?m91<3IE2W^jsW'[.\oQ8Im?5Y"]9W
-#I#0<Rnj;;jJMB4gHG=7^CFl4[q?G4Xjud]Y;$djhif2Q7=;0"ac'h5aZXHIf]N[V[r@@@>5n
-hOfBS>ABdP55Z]$,4Feq_dq';$N;@c/"'*Qm4ep.gq.>S4VrDV5=Kd(FL?uj?Of+cmpO:[9O^
-,Rif&<>'6(;t[p'4(=b%RcD0,4u=p:7f7+]ISEi0Bo)P<7,ia;Marma1kLZ7]!aj5hs`PaCm&
-($ff\bV&^U-\4j61%e=2`@_[7=Kp76nPV;Ye/Faf6V1/9cX(<LL<d;"[B@<<f%K'kG>\UP(Ue
-R^(/KDRp>,iCN#1YkZP'!F8oiR\?p)CXP2'gbK6@GprJ<PU9\eo=n-Yh<EE*'*tR>H/.6O[&)
-tLJ7)%O.6/s?.I'WO5/p^/K3FQm1\sh,Bhp3!fm8UifnOop["FR\Qa_+q`Y8neXd6F%\;jsY^
-8kGFl'=:bE&:5]fCc8<8rN&1o?/a]gWjjILh!->)PO5)SBI,jacSF.@/X[F;ifsqjAmPO;E=s
-/ZehR&sbW4;,;ZS5h]j&<j19m]Z6Z)L(*o4!6(G*i=CY=QN#uj7@8gc4u+;`S<B0:S2(o,6Ni
-q**sC+AMaGm?qh-i\LlG0kFi5LiK*K;Y/_alaaj$Usi4;N@_IG2S7klh>RtHHWl6Gq4op"#$[
-r$`[biWg-$]f`][FQjXZ^Wg+oK*-kfYUKVb!R42Xk[P$d?A[c2V<+.K/oB\)4#>B28V"3[!1&
-KuHn;`7HUC8@pPIE4Sg?b?)D;%]>5H;C%;=,!.-/-0PD50X)YP=#o_aQGcQoMU29+dZo\a`kQ
-^?W*%WHQWIS3HR613krH`%Sic]I>C23m$V9R]03V-j#i>lMXh#!Lf3*X$pLce^i:->Z?'2U>"
-jNdN;p7e_UWH%bsI[o="If*lH",gjaBNm@mgp-_$FU&s"F6Kr]FN8[ShFEqs/3!fDuZW`>@rJ
-9]Z!?VM88J%CRj/f-6DDn9f[b,ppp</\'1]G'kOI-Ni:$DYk+Me_$&53J^o5e%K#%!>b]JoIn
-d\>=1==3^*cQ"p]io$b#LNpg..iLGjAro`c]!f(HAIdk"Ah?t.M0'5N!qO^J^'g7CB`Gn$+IB
-!Xb]40HgC2f(I^N>+p4c!kD0O?p*NjA?Tr#luM.XbHUQFm5E/emi`:W5E!JZI5tU81c[<16nE
-`c*#1h&J6h\JUH'lgU7pos8D&?#@#&[Ron-0:N`lb`9;0W^"*;G*DV^LIY+K*;us`q^"%J^'9
-k1M``ViUYU^#D;ghmU%QP"X[RH\FM)^"ZC`B3f^BmF+h2gc<4eBM?WZ>!%qBthcSD(4jo858-
-DR$1X'PCr7@tMrJmLmBiU`4GJHh`@Fko\l!p!W=om&XAVUA<W`V`"s4IQJB>M]=<\^/ta]Ee;
-9djj1>ljK0D`NP0;piSH4*>P^aFbqW*?.<6GZbFP[Bk*0jT&cW7$g?kj=-/^>:0d1e[u[8TSV
-'g@SHsM38Y/Cmd,%L-lh88mGcq"`TLlOHBEG]@Vn?j>lhT/=/N8_s\Z(J3;SEE\,j'-YY^W*;
-QT)U8%4&Ub,9FeB\[Rcnp3,kji`kM'm:>eI&i_td<GG1Y8oIUD8:S%_bR;^AEeANUVCH&QW$6
-<V(H$L3Ec5!_45RJn$Ru`Q/'TNs$6VPerW/#l$hs0c>TPnN'C6[%_6?e`U0?cL\-.<Nb0#?sA
-[]rb2G3ADErL7.nQsTsj2TD.VD)*)NZ&P<Wsns8FDdY="jPpJl;Fb6p&0*<m]ZX2?,<MCG8s!
-:B$\.Hk=rPN&DG[<DVB70PB%/I0U&AilOgf?8]rhL[En<,E8mnOI0Z[Y[b03M(VZA<.qK\6[k
-u'`-N;r+c:Y]BSZM84].H:3=n6;K[0`CNPZ[XLIUgj@1/GUW(t!I3CVcucS`2e=931G`>q;Q%
-B"Gm(9eLcf-dn7PF8^OI?M4i5kJV:)>?!+u/<`ru]e#4n0N/.PC'RkoC=pd;dlC&r3%&9O`[Q
-9&>UXU5_a@W)r^85C=1:iH[OQ(U-@%bJ2T`&^Dt*,T/\+IOZ:U-WXeBo_Y(!D&k+eJ.,.1?K>
-=D5!pi0W8C8EC9\SUh?L1gW.<=Q&mHA9,29KRKeZ$.;q8*WR/P**!7KXYg[gcR*T^-BN,[5cW
-Pkmb_h3ORkS:FbP!e,24-ert1GSQn>VPN+ROb#6j<Uh<2C0uK6GZ!m*`FM;.B=\PHQF3Ajo<R
-P3e,M"C7ofZ"jf@6L34LOb=e?o7h2V:u+o+bt8+rS/ELSj*QdTVL<-:1lHeRW>L(M;R4BKDf_
-928EF94d<*jR(a1!tBo2q:p:$Y0;AN=$]d(BAsoLq7=QZU6es4\+Y=>G^hlc0BeaG=)WAR"7a
-+m>B8t6]:*HnKfiT5@"^9mjnsKh?&gs:NDL(7.=c/`#cIr`J80T?W!8'.C4HSg#)IeEJ-`(XL
-k'5j#cIr`J80T?W!8'.C4HSg#)IeEJ-`(XLk'5j#cIr`BN6YLp.p']]HN^*3<1I^W)c5B0V12
-QC/GD>JalF0)?='MW5bJKR#j5VI(,npnu[1K*grG^cN,/cT5)):Sla..(<fp-[m5C!X&]nU'<
-7"`;KDj-Bi.Sg5W(5-NN1YQ5>%jYVP%'Lok8)Ik$8;D^c7c^1U]P+0G0;ER:ji'#1^M6)H?=f
-R&?@%i@K4_M)bP=i(HIg#cIr`J80T?W!8'.C4HSg#)IeEJ-`(XLk'5j#cIr`J80T?W!8'.C4H
-Sg#)IeEJ-`(XLk'5j#cIr`J80T?W!8&krQ0'$b'lQGnX$8Xd@*Jh]\u)0M1/khs7$3)C&N%C4
-CPpd@GWN#R`QIK@Vofh<e]5W=BFd<R`6H4WM_JN-"jO7Prd@[NSP65'H'`rUg!"h-%B+b(Jt*
-,Ob7!hCLuP`a"q>=3@atBh1f#L-!)EopN,:o/q_IU<6L)8eX1R?Op.)TaZcsbrTBJTd2M\7nL
-R^F4ii=+l5>4h\^IWam"9bo5p[4qft&26mAdQW\W/.l=_/IeJq_qbT;&H>/Eg)8McA/:T3\nt
-IIKTt3C:,QAFee3rA5CEC?qS,"^36QWu%E[386_>XW49CZ2jPQQ-;mZC9T9+g97QF]";%oB43
-S]/R!l\!`s@p)=naQ@C*fcLoulU>YhqN.jJ@`DN+@K7\r)cJOSuBgj/a)cROK\J;>LN]CV$pD
-E+a3ghm?b5W(e0<!,NR2*_:D"%5C35Qk$g6pNUp"B5Ik5W(e0<!,NR2*_:D"%5C35X^rRcN*T
-L]P:+&*3>3@W\'cWYXZX2[WJ+W3Z5*SdQ%MIAZ0?:k814d@B(oM>Hh]d:lT2e8PALfaH%dER^
-C:?NBoEu@u+koBdg<\)JEb-ePopdk"h8@qXr:K#kD@9e[/,t3BNKL`W=>;;,,$;kHON3YQcqJf
-%"N80gmm,QqB4Vg-Wu)D/JNc"BdG;FZ!dMEpWn;"uNho!/Q/?J;?Lk_)3p8EgUT\%?.)&WZ#+
-EUF:nu#1pWrat]p42)(D<S8,8;%&.P?5</p95W(e0<!,NR2*_:D"%5C35Qk$g6pNUp"B5Ik5W
-(e0<!,O)9""]HZh,lR#cMn_(tuSd)cM`@K,@%+!)W&(T\9C=g-%^/!C4&>J8,1:CA._Y"p!3A
-!NHT:=k,oY++4q6T(SRdWD;")p/of/A+EE:S2S3XW\OD/:Im$H:MP,lLT8A2,_gT-\o8&-#-a
-n</3<HFX(Kdnfiec_$b&rL!/mjhT#;LFJ+C!ol]mu\C&Q-FU\@51e>8U\AQN>e6f$1d@Mr,a5
-SgAbp;E;$Y]*JXW9-*AqG7&iF"<Y[X?4?d[6)K,[5+kQodj(eDcu^2N?qQiO^"c--[F4lmSM/
-(Y]!eVW\$LX/Po_-Mc=2[C8$;3OL/'iC:?-"2.j*"6FHf'Ea?phbiQ0jG%Qo:^"Z^QF7TVn$V
-E'h<dX&I1C^@D+htVmGFUhO/]\g.G#r"D>(<hVXm`Bl'MpAoZ;^-3TN]W+[<mF="+Y.\!7_8R
-ea<I<%:E\G0l!$2jV>$Pe]:I;CAlhMC*7/^)B]*]!@"0T+9JPD,+ohs!ic8FTGepSWW=<:)B]
-*]!@"0T+9JPD,+ohs@T09Y0Q+_D/:GHl!7fZEWkL*p1"DT8!A3X6AgUJ]0i2^ATN]W+[1reo(
-'CSu$rgFc:i-mu5BX#$D`YbAWE/>Nc"*210;spLmIorm)qFlC85lj@/2iu4IP6n&qgP0(mJ33
-&e:h,*2N@g<2)2:Lb^42J@QI)W<,JJ&<bA1s=%qkm7%*:g1`G'j*cRcb#GlY*Ng]DPb!<@t:,
-O[T[9%,d,LmY&c<4n$Jj]k%iQ7]f2<T*S2*^DJ!S+'b)]qLk^0Hse<%In\4D,$YZG2?nR[Z&C
-:i/7fJI5@R=_=@2,1)cK#1`R5RqaKs?5#[F,R;b"6FDtM[<hR;:i-oD1#T3@H'NktS,uVF@]k
-j?H\dWm1Zr+.X'\Vkot&lRLJ>iZ[4/oIJt.C,.gE"*##rb`W4$0.g1!=TS:PE*#-'6Z<6L\hW
-CGd7r3@l%`.tQKeWrDj:p#FGW<RAIWW=<:)B]*]!@"0T+9JPD,+ohs@V_u,s*,R#O6<A2r;^Y
-,[HB99.3RC#CeD*b`gc\uqTmU#h`=t>m4QlGg>$L8[6$uVPbA4r82X23Jl=J)OT4';H4RI/G#
-WeuUe5=Ni>KMdb\TeW*sniEE%>86PB^B#2m;r$%t?g0hM4h3*Rte]9D_[&VXt;RGY]_R$$Za+
-?@C@1U"V7a\nYXU@d/<n1lndXR\42-8$sG$CIOS)7BHPYZX?P:URHZ9f+a-shqBn=:t,'<[m4
-r<@nsJ->5<J'9CK^*foTsY0pO[:;@U+io4CXqiCcRAZROGoe]=96Q>633GK+Gn239Cd%1iQj!
-"i$:&CI?.1B>*+YM.Db#O>liC.m_.XH>6;/Y-OY:55gXFH41@)62E=q$$(qQtf:W(9Eoq<"hE
-^5I6qc'[)(5A.$k_48f>7C6-IJeJaUtl9I5RcEsUndSUdXHD:/*l(Sik4XcMnp?Wbl4KHW[^n
-MT\MMY;21+B,mh4K%4Q@Wc]b>_?`;sN&fbq?gDeK17X<V&pocV[XL$q"!@BVrJGAsr`q/*7Y<
-b\J5L#6T/X!"i$:&2?^5\->E$%T<h>JWZ0a<J,'p']j;ai#3Fu3CYm9"pS"d;[p0d6'Q6E-c^
-`CW!8'.C4HSg#)IeEJ-`(XLk'5j#cIr`J80T?W!8'.C4M+7WV4)$Yk1e_$`K@1D!@]S(E6:ik
-oAIhK5,0%WoXXgb7(>X$D:SJ5degdC9%?7j\.;,0n"kGJ#MIE<a1U''+GVS`n5n+)lh/C<@sS
-?7TM7WaK2D\G*bqX]9h$$>GsGANN/8O$&p<B`N%T#5df9RqNS"iV&u*S7*Q&-KOe]/;djFkli
-u72jI<.B3>K`1g?a'aH-WBR0<R"0(@u1`U0>'Lo>IL6EDUKaR.F"j.o3RW[:&<8-M5to;lceU
-B'JDld\7GU/V:0pRG^LHDdj:@JeKr>C+KtP8uOY>S5]lS.U,]T[[#ecZd_YP-u14r-er@k)R.
-k26a`=:Kp,loB;MYklVkTNWqoE6!djLG!B(1#dPQ3G6+(id]*11seM76,XTGGe1JfYZT\:lGC
-,lCH1'=PY!iVD@)cM`5J>J=d>\m'@V(I75/Sn$:O>B]B&-:;]&ProJ!S%/^:^ms:eGp1X%1iQ
-j!"i$:&-:;]&ProJ!S%/^:^mu@.Fi%qhL4YEg'COBE<d+!An.jcOQ^l&X%3XulN4(\"B=[gW_
-EUqlN4(\"B=[gW_EUqlN4(\`)<TigG`KCE=2Q9<GPed,u2'G:i.BlMe^/L.HlObXaP!fei)p#
-"qi%*5Lmp1KFt5LGH:E;h)H%RS8(F2.BqWmQ<nd3bZiTcT[YW`RFfugh*a6Qs$?Hjon,q3%]X
-Z4;\2ZiFg:(HQ^QCM>G5k-7K_1QA3n`MN)L9L;OWB<E=:RS"tZUT(CHiS'j7JI-8^`]d%Zu$B
-!&5U_NgkVTc,@QWn)ZiJnVaY8>6*D7Ks2Y`"L2e@BnZ4&6,-T7B`cb*iHdm6,5&"dO^3@p.$D
-"g(hG%MT6W+J/I&nkQ7bY"B=[gW_EUqlN4(\"B=[gW_EUqlN4(\"B=[gW_EUqlN4(\`5YbDn*
-^"W/_)P:5fRV4239Uj%1iQj!"i$:&-:;]&ProJ!S%/^:^ms:eGp1X%1iQj!"i$:&-:;]&ProJ
-Ypn48)Rj)\Q9LNh!7eAcMr0ZOQtf:W?m7N)F\Ja",>]t9TN]W+[2aa4\HCB&#--bj<1A`9@i0
-=f<,SdP-K/A0aX,#g#hc*=a?d65@i.%G&[*#leIqi,Zh+mZPIb]@e`NV#(^>Yn2(UIFW=-13D
-(b[E@8N85!So,J\qAF.)(8do]V`0fT^,M-Dlu;9!fIj6_8CBfS==81@i0lIE\gan]3QJAJ](@
-iV;Kb3=X'BrEWXe&a[EP.@i,?KQ+Db4e@5\"1Z5+U!o:^>K"7J&j+1s0oGb]@FE>.%mADaoC+
-PB]_%P_^=Mn!$2+m_)@8Jk]2F.B/Sthth@b$(@_8aOd0OlEiTN]Yr%(lseqTW!aK&FLP37L5J
-7Y8leYjje.\38&<#s"qBR&2AEFE\+)<WT43!V>St&Pt&l<iB3]/s_5c[CL3R6+,LamIm'$C,l
-@GEX/W+$rkC^W0TM$NE`Ui9-;:ofTp8F$Nej^fT^+nB:p.c!ic8FTGepSWW=<:)B]*]!@"tLg
-@LBW&c?l[3o:I`[T%Spj-]tSc-<+bqe*QUYHRsWSboOq-.VE=%Bdt#L/bd[oL'Qh^kPh[Ua\8
-\P7%-#NMZAWgMBBfk<Q&#<ZRbTXNet4<;Ves8d2]`<BQ,iKmE9)s8;B\A*JEo1ttkZ&\bVJ7:
-Ag7i/RJa&sRp%;!le7m1lWQ_kX7J2B\=BLJ@C(WhB_k`cb>Y&\1qaWE.LU:c&RBA36ge=)^m=
-=ST!mdfMC$c[#s5(H^bi40"RLGI-o_Cmtm5L)X':ZQ[k<]01)@U`-s8PVnq.%:>+=R;JpX077
-EVel2b)!n@8_:^ms:eGp1eW]^I2S+3L1STD#!`i6CgY/)"oUY=.A#4#g0C.m_,XHfKZ/Y-7Q?
-A>GfFDep`R6idYchTAD2I2oD(JF38aGU@(P>XuioRAq+!65Z$)NmolM7BEFK5)ON'WN&(TGhM
-&Iat#qc-1NdBcpjde\&];ls#h]+sn^'j[6!#dX)-QA>3Z:<!-E"E3[;25IGZR%Fi2L!^Hlf"%
-3Pq%Bb90Pf$IQCLAFL:t=JB(e$Gi27Ni[:l\B^Y(=ERj&CYJ?k?lgprP65!ic8FTGepSWW=<:
-)B]*]!@"0T+9JPD,+ohs!ic8FTGeq^;l]fb/saf]eq%Q?[WLrHcGig&^Fk.R1BZ/a:i1*CRKf
-e:%91eA[CLj')Q5PQ:e_&BjsCblAD^PH>AqN3</bS9Xj*T\Q5hH`muKd^W_#9Sn1K%?`rrL_@
-mQjgUKOaKi>/H<9qJAQM/8DkjT*hu^F_,e)6'K*3W7hNGhtM<a-DJ)50?:iX(F9ue]>g$2.ld
-6eep>IrH5t"W0T[$W2:Y=l+Ld*;d(LtqbSkWZ;o-aTQSf/3jEKt/SB*%NJ4Bt_95BWmK/W\WQ
-$JI"&NiH1/Z;dFtZ\&$*G#Y9"1&B.L9$qP8^U)H)<kb1,;_/N\*C!J@btF"4bWhT\@V#X'3Wt
-i3NsEE[G/D7KCtZ#-)C1g>"qN%9/f9W2>,\F0dUOfGuN6qlR1Vea>.$Wm/bb<!,,_eGp1X%1i
-Qj!"i$:&-:;]&ProJ!S%/^:^ms:eGp1X%1iQj!"i$:&-:;]&Xu\c^2XN7Uqs]/2%41a`5YcG-
-!>V2EY>$K2c+?(TNX9ND%`LF2c+?(TNX9ND%`LF2c+?(nl/>+V)ES+UhXBD0o0nWo^UQ:=fS@
-2nP2hs=B^kcX`G&+&.E8,)`aq<>VDr4oS1?PX4F4-=>b1K3A"C6k$G#N88CR/QnFe4Q_e`m8Q
-9ccY.k$^OL8i3oCu_W!Z#som!/]`E[G;H@\n[*^\ues=+k<KPGN#kY1BD;/Mb#V;ZP?g-:cU\
-E<d,V"bg]`!gN@Z%K4Ms7$ak+/shbh(R/ge1\XYIQG2#!0o/+$L,>9W4B3=,mM=jl<9jag9`e
-;[#-(B!<9jag9`e;[#-(B!<9jag9`e;[#-(D7``0RN2gP$O5:bJdD'm`)g(\?q239Uj%1iQj!
-"i$:&-:;]&ProJ!S%/^:^ms:eGp1X%1iQj!"i$:&-:;]&ProJYpn3WDF)Q522ka)`5YcG-!>U
-QEY>$K2c+?(TNX9ND%`LF2c+?(TNX9ND%`LF2c+?(etZE0Ym`=(6-cQ$[>(pp!\eLXcE'IBVQ
-gO20Q'2%X@>)=XEuHTj^@?Inr7ORF(T9h7BZDQ)F1^C=da$=AC43X,ui'WeYm*GC90<YMd6Ug
-jign-Zbm;ee[,=MDA]i*B3(dr*MpPXp@'",(q1W;et\\1q8D<26-cQ+[FQ9$:b?<\VcqhhLMA
-iU2Utu^C,lCH\q+U[!7eZ3C6JYJ\q+U[YVF\TR=)_b9/VZ4O>35&%HIps"%5C35Qk$g6pNUp"
-B5Ik5W(e0<!,NR2*_:D"%5C35Qk$g6pNUp"B5IkCe?Pn:678.%>,<*YqaeKYD_j6c4*b%5de.
-RC)X$/2c*3Ne`I(9BqX285W'!MS"#@:C]@[FC5,T&bYSI>D/M+0c#j`R1c(`$<U1X)!.tq962
-mmhNWhQ)W7F<nF:Cf2p8Y*0Dj`gZ!Ri]E$0qculE?Z4"B6UU%B=,8FJ$&)?0qrujio8SA'F7$
-T"4Am=B&jaC,qKkC2UODjsC8,(=^AVJ8.*-^M5>hAh6fP)J`7\4iYs7Z"d#;h(5ej'\HmE%Ts
-@Aei?\1"t*N)N)f2#V[2]+jNPbH$\pHeC,rVDeH/%0>0a3S[1K:&1JgdJe`I(9BqX285W'!MS
-"#D:L*#CHAQu0CE.X&%P\M=RTGepSWW=<:)B]*]!@"0T+9JPD,+ohs!ic8FTGepSWW=<:)B]*
-]!@"0T+C\9Lh)B3P&PF4A`IM^A4RUh\2Q#3V3U#OT^OZ^ABRsnpN<lHeeVJ`j:lPaZ#1\N[C@
-eFeoo`o61b[Up5kk,WWce!1<hC<'b8.84T%B:G1#a$fKDD:2hfEXT["2o<`W`s*n#'>]WcYNt
->We]`fk+"E_C\`V?+%1,g[pZF\Rc3tJ"18T6(*HVhIP3G<);&k3@1).V&a9c]So?*-puNeD4,
-Ws43;?8O(p64['Xq'TDDid``ZsRBF-TG*P[G$n'1rUWjr0b*.K*YK6OGUAX6HUMH91h\KMdG?
-UJ/BY_-QB_h+Jr_VDMR=K!"?KPI>$J&(cHX;:?[&#fR`=Nd>29f3U/bR22@TY#0pJObst3&aZ
-N&;5266sqIWEu"MhC5^rD>-(5YT2;pNQ)00/:i-aO[6Wac=/L?`TNYCtlKdEO_4#+qc*sb);-
--,WocA5,ea0'1G^JH]pp9@0]2EtRTG$.U>*)i(4LlW`U9ZZ1DJ9lhVptp)7gR3.DLpE@*5M'U
-"hciLPp&s5WjOK;R35<X2q>Jl=f!";>0i1%kQb)1::3sWG'hM"2-QXk<$MIE5rBjZg/_1bX#G
-;BQ9IitYq=Lled/:`YUS*fc9O6P"B5Ik5W(e0<!,NR2*_:D"%5C35Qk$g6pNUp"B5Ik5W(e0<
-!,NR2*f*W<1Buppn`1N'0nF62*f+"<1>2e#Q?dEPX)WoT\:YV[;MYk,XAbTT\:YV[;MYk,XAb
-TT\:[PWg`i'gX&lh<6aa_N(&f@o<S#9fE@VBApZBU6qT>?s)?S^D0+='(i*M;nl.4)p:*>h;/
-NOPkim(j10)R^R0(\D;@j=?coH![:t=oY:i0CA<iq;b(gsc'4h=pRC710gC5g-f*[gr=$9hG4
-R7pV%*O`:dc+M^:W0T5bWYUPod2(:1fkmaori4NG%"`5XOK!!_\lsNX1&oS.&`cRKM]LZY"4:
-T[N&<:.\Z.Opgb$SbW7DDWRfo\@%9/f"W7DDWRfo\@%9/f"W7DDWRfo\@%9/gMNN%XBi:CMaW
-aVu[N7jG1+D7>c+9JPD,+ohs!ic8FTGepSWW=<:)B]*]!@"0T+9JPD,+ohs!ic8FTGeq^;l\)
-#D?7a2QiO(>0arljQtisG!ah-2%9+8N<#Z9G)[97\%9+8N<#Z9G)[97\%9+8N<#\O9WqH>\>P
-AZi,1Z&.:$[bb#-*Y0"4d7>ES&TY'6-u]d<"W.=X#kb@5&jmX6-&-nZ"HaQaJH)0aoBT(Y+\$
-&HkmI8Z'YY1?nkP;)PO%djR*&jf[k91^%)<:J*7>,mGS"T=cICYB+W#U%SOE)X*jd?E.=U;c1
-dd"P)of+4\NljEmnPD1Or0q%U1M>#hW"Am[I(*MD,^jJ\LdFX?JJh+6K?%aKH"[;b%+<_Eh#&
-Wro)_-dDR!jnh.HN@;ON<O%(WJ6Gp-R8fEo_8NF_$K$T#(l/O[;gb\f@:K9*AB,uju!EZ(1@W
-(8]a6*-G4Y(cT/L>O>H3$NAVJr:b?H<<iom`F^ft)0EeE;9[9XI#--dDnE\g/eN/7rUZ$ZM6a
-cnY[F'AOHS'QBed5:pc,N_PX#G<G/:Tn=;N8IKW&Br9W<RAIWW=<:)B]*]!@"0T+9JPD,+ohs
-!ic8FTGepSWW=<:)B]*]!@"0T+9JPD+uZ89ag_M\Z1QG5)lT&1S,X\f``-/'#NOM:G:oRm-:"
-t=!S)2pWau62>89sdB:rET5d_mDIKAVUD:\C?\DF6jAG<Q,:QDk&b]eJ&:VP:6,aoH.Wn&kq_
-!oY1gX9`BZu#3WM+m\;,hEu'lG>,P>6G;`C'hj(\'V)I5i#:LX-su@^cMu-a":suht9P*%@5q
-sB&9t$:-@(>0bB`0m:ed+ZTmVh<HJ+da1ZNf+1Ing".i5pDO8&^TC%q\pOTD0#!t/T64]_mAu
-_+S]Hq4_(q6/\)lsH`BD/=->-Rf^#>hNM.o7fPej.Q$$bFas<JqKFC(moXe`(Z+Hea4moP:W)
->GY0@*V1CLRjLYUCdm+WGr*V"itaIi^u'eef93Oi<ni!Y#"!ViZka^(5_L+WlX[hO$g-1kW0S
-IINa"3pDF(\s=E`JO\T_i,XA?5>TN]W+[7l*cWrf<_$rkCQW4"0H`\!R;V2sKgCeM14D1QFRC
-e?RH1JeMl!S%/^:^ms:eGp1X%1iQj!"i$:&-:;]&ProJ!S%/^:^ms:eGp1X%1ocneRn.2IH_d
-,"AfOp$4sHseRhBrqqkR&!NL8EeKt<sFT^/@!NL8EeKt<sFT^/@!NL8EeKuG,eQ>HL0^U,co>
-a"M*d_O5ksM`_1/uNeJ@g6?GX>$1Y]oT@YK6p.3MZW]lVXd5_L&7_N`POu3clVj9@\D5]KS]X
-E<MZd8#T[4'%Q>p:i0Ak=0:=DZ5p1mkjK@gj\MJJ3R;g6dSlS6Y4UbF"KLQWk,MRj]RIMGDW^
-o3hP"-(A?)(_-@k]^?>>5dRoNts<HEr5V?#/D+@F[Q+mHH:(^jOLk,k1-f1]Q<Y\*U>Y4e5M$
-BU@CC'g=5.YtmrJt.C,4gkjNVI1FEQ&PArhbYn;<h`b^TN]W+[;MYk,XAbTT\:YV[;MYk,]$.
-32@iILfI#7:C,;7^eYZ_QWe$[kC4HSg#)IeEJ-`(XLk'5j#cIr`J80T?W!8'.C4HSg#)IeEJ-
-`(XLk'5jLeXk'E=6dkWaXZa+uZ=P/BQnPOcodq\q+U[!7eZ3C6JYJ\q+U[!7eZ3C6JYJ\q+U[
-OH4/92fLq+C"$N.[if=h;,)8ZkJ(k?Y$iBk/]a?]<%E<qec`uEaI.ET1OUb-!fi[dQ#.V>hMc
-CZ"*>m)!jYZtpX\MO'^n)fp$??3_OuQsH'=;(AQem&p?40$&U!fLJ8.*.NG?$ECl3'!%&gTqn
-kmX@p(ImdiC4l%<Xn()jA.t>"_//>%0C-r1:%.cD'^kl)rh^p:H#4I!U^`a$rlNsW_EOolNX@
-`!`\IiW_EOolNX@`!`\IiW_EOolNX@`_T#Pbo<@kID1ZW(2NqiOD$i1t)TWep#)IeEJ-`(XLk
-'5j#cIr`J80T?W!8'.C4HSg#)IeEJ-`(XLk'5j#cIr`fT^+f[if=V)TF?O@UlF_Ot=<c3=/Na
-)lPY$:ot\82@33^)lPY$:ot\82@33^)lPY$H)nrZcHo6\bRIt8Jt0qe2=3ufa8@XA0Q'0/A?K
-)e`Gj?]DF#nV7Pts)r2k;m[=<4*FM"&!\Z;U@8G9J3oth-fng8_69Qc=L`p1R3_(ud%/SA+ZR
-X5.ef#a@[9+P+NCQ'^$>Hg6CX(G*e$ca]8UR62&`\;9r-=j=6&9,*$B:rEe:i-i<=uT8p&tiD
-e:i-i<=uT8p&tiDe:i-i<=uT8p&iQU*RtmhaC_LVX[@'^@C/_>ceNhDF2*_:D"%5C35Qk$g6p
-NUp"B5IkCe_>#+0Qpan[rtX++S4-p,p>N"_=*l9r[j4Ggfu+s&hDW>A$U/h.7L0S!skdG":eR
-16d:uWTHcNE,$^7np_TOn%lHcNbZmk<!fZf4@<5?RI-sH,N4joDT/Z$'!D]7k10J,iU=h8qlj
-eK^OQ,3SXhi5KJ2^k;4,cfGiLr\"=:i^9tX^l4*T&Gg8hF2.o]^W?@`%S]bAIg95!Dt`i0_3+
-I:l>:%RSKTa=>GBGO.je;L00EsFoRf8;32MHU%<B#1!R7lC;RXsk+o^U7cZTVgsVDh6nWa.15
-/*S`ON]QA>bU%>Qm-VNpE[b6aW\1s7-l4WN'rNp=iE4\8O[\OhU7$KS*`mjbZDbLK,e]<^&cA
-a7V^@7[FTkOLgYlfN.Dl<kR&?:01:pUG#g<M#W#B/i^EBrJ3<K$h)GN7j&rAW,I2T]n7T_MhS
-6Z%3<[1reoL&fcl@,7jMp\UtjT\:mBWYP)!i?-+<8j;&*_u:FTG.ZRZp=mAhZV)S6s1Z4]rql
-HIJ%)N)pi?)QGGNrA=7@d0/#]l\9N8'gD3]SjMs@;";f>J/Wj^W2T:XQN>>b<(r)N[nP"8e.+`
-%^h]S),@L49BW/[;b.&3'!7fdYg`C;l53]75BHX2$5NV$l2;]I,=9osD=W9Q7$1-,9@ar)HO=
-Y>kDqq=EdP#Z[p_JA_YVT[L2ZeLI0gY(CESTXb'aVS,qt`D:(ik4hg@p60i#O(pf2LrZ%lNCB
-%G0@`]f2<e8KH]k8&$;a_NF4Kur4_%<*%C?hB:Y^T#QQ)!%[n)3WnauHqqlc+Ep36%*W#!mlU
-^&QQ!%kp6MZ9qr@L42\<Rk*MUh/QCD<IDN<8/4J=7pGn%;'ecWb"pm!IB+P_<@j0Vd"h@>uY#
-AY"@)1<)_btRqq;%_QNi4"fVBMW-55#BelPKfbr[:27*;*^JJc)1_l[mW_u]R5P*KH$$RnQBk
-#(h_Q$i1f=nOC"d*W9HP&ZJ!Zfg%8?3Q"g,3<-E_c5n<."H@Jq"B_ejEXL<.q)_IhNV\Ub7,W
-&nU@SMU,9'N/&cV2-E/m9nDRu2)U#glDPtc:\e'J=dI=`ZmXZbq"CH99nK=P*a2a?\#17MVsU
-(c:bOp8h.ehI]gig9-<ctO.8]CF>LcSF?gpUn5e1YhAkZ]."^OO(<R]_)]bRj6H4nJS4V&Zl2
-Q$.@RV$t&oeWFJC9&te25nNik*%\TFg8hR25mr)RL@JO=,GKUO(k<pH@&5_<k3^o0$_:fX\.,
-CMrL&:Y'(I2q%6?jD-NZ:;TAER-_OZ*ZkT/JfB]CK2l3P/bHOsj]n"]0hICtjIrGATKM')!Dq
-o5;1$cR0mdC9Xb8dH="K6JKX&L\Ldh[h5<`*^HP=X5irmlApDl;W./:\#)#)N%\9`tZ9kPkMpC,Ws~>
-
-%%EndData
-end
-%%PageTrailer
-%%Trailer
-%%BoundingBox: 0 0 618 994
-%%EOF
-
-%%EndDocument
- @endspecial 396 4240 a
- currentpoint currentpoint translate 1 0.3 div 1 0.3 div scale neg
-exch neg exch translate
- 396 4240 a -2 4792 a Fo(3.4.)47
-b(Using)h(CUPS)g(fr)m(om)g(the)g(Command)g(Line)396 5008
-y Fm(It)25 b(is)f(possible)g(to)g(use)h(the)g(CUPS)h(printing)d(system)
-h(from)g(the)h(command)f(line.)g(While)g(this)396 5137
-y(document)g(will)g(not)g(delv)o(e)g(into)g(all)h(of)g(the)f
-(speci\002cs)h(of)g(the)g(CUPS)h(command)e(line)p Black
-3641 5692 a Fi(27)p Black eop
-%%Page: 28 37
-28 36 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(3.)h(CUPS)g(and)f(Gimp-Print)p Black 396 579 a Fm(interf)o(ace,)i
-(there)f(are)g(portions)f(of)h(this)e(interf)o(ace)j(which)e(are)i
-(speci\002c)f(to)f(the)h(Gimp-Print)396 708 y(softw)o(are.)396
-888 y(The)g(command)f(line)g(is)h(in)f(some)g(cases)h(a)h(more)e(con)l
-(v)o(enient)g(w)o(ay)h(to)f(generate)h(printed)396 1017
-y(output)f(\(e.g.)h(when)f(printing)g(from)g(a)i(script\).)e(Ho)n(we)n
-(v)o(er)l(,)f(most)h(people)h(\(including)e(the)396 1147
-y(author\))i(cannot)f(easily)h(predict)f(what)h(a)g(command)f(line)g
-(option)g(of)h("-o)f(stpCyan=1350")396 1276 y(will)g(do)h(to)f(the)h
-(output.)e(It)i(is)f(therefore)i(a)f(good)f(idea)h(to)f(use)h(the)g
-(GIMP)g(to)f(vie)n(w)g(the)h(image)396 1406 y(and)g(the)g(Gimp-Print)e
-(plugin)h(to)g(pre)n(vie)n(w)g(these)h(settings)e(before)j(relying)e
-(on)g(the)h(command)396 1535 y(line.)396 1715 y(When)g(using)f(CUPS)i
-(from)f(the)f(command)g(line,)g(the)h(command)f(will)g(ha)n(v)o(e)g
-(this)g(general)396 1844 y(format:)665 2060 y Fh(lpr)53
-b(-P)h(my_printer_name)d(\\)880 2177 y(-o)j(option1=<choice1>)c(\\)880
-2293 y(-o)k(option2=<choice2>)c(\\)880 2410 y(/path/to/printfile)396
-2872 y Fm(When)25 b(typing)f(the)g(command)g(directly)g(onto)g(the)h
-(command)f(line,)g(put)g(all)h(of)g(the)f(command)396
-3002 y(line)h(options)e(on)h(one)h(line,)f(and)h(do)g(not)f(type)g(the)
-h("\\")f(characters.)i(The)e(list)g(of)h(possible)396
-3131 y(options)f(which)g(are)i(speci\002c)f(to)f(Gimp-Print,)g(follo)n
-(wed)f(by)i(some)f(of)h(the)g(supported)396 3261 y(choices,)g(are)g
-(sho)n(wn)f(belo)n(w:)558 3477 y Fh(-o)53 b(PageSize=<...|)e(A3)i(|)h
-(A4)f(|)h(A4)f(|)h(...>)558 3594 y(-o)f(InputSlot=<Roll)e(|)i
-(Standard>)558 3710 y(-o)g(MediaType=<)f(..|)h(Inkjet)f(|)i(Plain)f(|)g
-(GlossyPaper)f(|)i(...>)558 3827 y(-o)f(Resolution=<360sw)d(|)k
-(360swuni)e(...|)h(1440x720)f(>)558 3943 y(-o)h(ColorModel=<Black)d(|)k
-(RGB)f(|)h(Gray)f(|)g(CMYK>)558 4060 y(-o)g(stpBrightness=<0...2000>)
-558 4176 y(-o)g(stpContrast=<0...2000>)558 4293 y(-o)g
-(stpCyan=<0...4000>)558 4410 y(-o)g(stpDensity=<0...2000>)558
-4526 y(-o)g(stpDither=<0...4000>)558 4643 y(-o)g(stpGamma=<0...4000>)
-558 4759 y(-o)g(stpImageType=<LineArt)d(|)j(Continuous)f(|)i
-(SolidTone>)558 4876 y(-o)f(stpInkType=<PhotoCMY)d(|)j(CMYK)g(|)h
-(PhotoCMYK)e(|)i(RGB>)558 4992 y(-o)f(stpMagenta=<0...4000>)558
-5109 y(-o)g(stpSaturation=<0...9000>)558 5225 y(-o)g
-(stpYellow=<0...4000>)p Black 3645 5692 a Fi(28)p Black
-eop
-%%Page: 29 38
-29 37 bop Black 0 TeXcolorgray Black 2384 67 a Fi(Chapter)24
-b(3.)h(CUPS)g(and)f(Gimp-Print)p Black 396 925 a Fm(F)o(or)h(more)g
-(detailed)f(information,)f(consult)h(the)h(appropriate)f(sections)g(of)
-p 0 TeXcolorgray 25 w(Chapter)h(2)p Black(.)p Black 3645
-5692 a Fi(29)p Black eop
-%%Page: 30 39
-30 38 bop Black 0 TeXcolorgray Black Black -2 647 a Fk(Chapter)58
-b(4.)f(Gimp-Print)h(Utilities)-2 1167 y Fo(4.1.)47 b(escputil)396
-1383 y Fi(escputil)24 b Fm(is)h(a)g(command)f(line)g(utility)f(which)h
-(allo)n(ws)g(the)g(user)h(to)g(perform)g(a)g(v)n(ariety)f(of)396
-1512 y(maintenance)h(tasks)f(on)g(Epson)g(Stylus)g(inkjet)g(printers.)g
-(These)h(tasks)f(include)h(head)396 1642 y(alignment,)f(head)h
-(cleaning,)f(nozzle)h(check,)g(printer)f(identi\002cation,)g(and)h
-(retrie)n(v)n(al)f(of)h(the)396 1771 y(ink)f(le)n(v)o(el)g(from)h(the)f
-(printer)-5 b(.)24 b(In)h(order)g(for)g(man)o(y)f(of)h(the)g
-Fi(escputil)f Fm(functions)f(to)i(w)o(ork,)f(the)396
-1901 y(user)h(must)f(ha)n(v)o(e)g(read/write)h(access)g(to)g(the)g(ra)o
-(w)f(printer)h(de)n(vice)f(\(typically)g(/de)n(v/lp0,)396
-2031 y(/de)n(v/usb/lp0,)e(and)j(the)g(lik)o(e\).)f(In)h(general,)g
-(these)g(operations)f(should)f(be)i(performed)g(by)g(the)396
-2160 y(root)g(user)-5 b(.)24 b(As)h(al)o(w)o(ays,)f(the)h(user)g(must)e
-(insure)i(that)f(the)h(directory)f(containing)g(the)g
-Fi(escputil)396 2290 y Fm(utility)f(is)i(listed)e(in)i(the)f($P)-9
-b(A)e(TH)25 b(en)l(vironment)f(v)n(ariable,)g(or)h(that)f(the)h(full)f
-(path)g(is)h(speci\002ed)396 2419 y(on)g(the)f(command)g(line.)h(The)f
-(e)o(xamples)g(in)g(this)g(section)g(will)g(assume)h(the)f(former)-5
-b(.)p 778 2557 2601 17 v 778 3543 17 986 v 1812 2736
-a Fe(Caution)820 2905 y Fc(The)24 b Fb(escputil)33 b
-Fc(utility)27 b(w)o(as)d(designed)g(f)m(or)i(use)f(ONL)-13
-b(Y)25 b(with)h(Epson)820 3024 y(Stylus)f(inkjet)g(pr)q(inters)h
-(suppor)t(ted)f(b)n(y)g(the)g(Gimp-Pr)q(int)i(softw)o(are)o(.)e(It)820
-3142 y(is)g(possib)n(le)g(that)g(damage)g(MIGHT)g(occur)g(to)g(y)n(our)
-h(pr)q(inter)g(if)g(this)820 3261 y(utility)g(is)f(misused)g(or)g(if)h
-(it)g(is)g(used)e(with)i(a)f(pr)q(inter)i(other)e(than)g(an)820
-3380 y(Epson)f(Stylus)h(inkjet)h(pr)q(inter)-5 b(.)27
-b(It)f(is)f(the)h(sole)f(responsibility)g(of)g(the)820
-3498 y(user)g(to)g(insure)g(that)h(this)f(utility)i(is)e(suitab)n(le)g
-(f)m(or)i(the)e(task)g(at)g(hand.)p 3362 3543 V 778 3559
-2601 17 v 396 3777 a Fm(In)g(this)f(section,)g(speci\002c)h(e)o
-(xamples)f(of)h(common)f(usage)g(will)g(be)h(presented.)g(A)g(summary)
-396 3907 y(of)g(the)g(command)f(line)g(switches)g(can)h(be)g(found)f
-(in)h(the)g Fi(escputil)p Fm(\(1\))f(man)g(page.)-2 4301
-y Fe(4.1.1.)39 b(Determining)d(Ink)k(Le)n(vel)396 4502
-y Fm(Perhaps)26 b(the)e(most)g(basic)h(function)f(performed)g(by)h
-Fi(escputil)f Fm(is)g(that)h(of)f(determining)g(the)396
-4631 y(amount)g(of)h(ink)f(remaining)g(in)g(the)h(printer)-5
-b(.)24 b(T)-8 b(o)25 b(do)f(this,)g(the)h(user)g(must)e(kno)n(w)h(the)h
-(name)f(of)396 4761 y(the)h(ra)o(w)f(printer)h(de)n(vice.)f(This)g(is)g
-(usually)g(/de)n(v/lp0)f(for)i(a)g(printer)f(connected)h(to)f(the)h
-(parallel)396 4890 y(port,)g(or)f(/de)n(v/usb/lp0)f(for)i(a)g(printer)f
-(connected)h(to)f(the)h(USB.)396 5070 y(If)h(there)f(are)g(multiple)e
-(printers)h(connected,)h(one)g(of)g(them)f(may)g(be)h(referenced)i(as)d
-(/de)n(v/lp1)396 5199 y(or)h(perhaps)g(/de)n(v/usb/lp1.)d(In)j(the)f(e)
-n(v)o(ent)g(of)h(uncertainty)-6 b(,)24 b(and)g(if)h(CUPS)h(is)f(in)f
-(use,)h(vie)n(w)f(the)p Black 3645 5692 a Fi(30)p Black
-eop
-%%Page: 31 40
-31 39 bop Black 0 TeXcolorgray Black 2488 67 a Fi(Chapter)24
-b(4.)h(Gimp-Print)e(Utilities)p Black 396 579 a Fm(follo)n(wing)g(URL)i
-(\(http://localhost:631/printers\))c(with)j(a)h(web)g(bro)n(wser)-5
-b(.)23 b(At)i(that)f(URL,)396 708 y(look)g(for)h(a)h(line)e(which)g
-(reads)h("De)n(vice)g(URI".)g(The)f(author')-5 b(s)24
-b(USB)i(printer)e(is)h(listed)f(as)396 838 y("De)n(vice)g(URI:)i
-(usb:/de)n(v/usb/lp0".)396 1017 y(F)o(or)f(this)f(e)o(xample,)g(assume)
-g(that)g(the)h(ra)o(w)g(printer)f(de)n(vice)h(is)f(a)h(USB)h(printer)e
-(speci\002ed)h(as)396 1147 y(/de)n(v/usb/lp0.)d(T)-8
-b(o)25 b(get)g(the)f(ink)g(le)n(v)o(el)g(for)h(this)f(printer)l(,)g
-(issue)g(this)g(command)g(and)h(notice)f(the)396 1276
-y(output.)396 1492 y Fh(#)54 b(escputil)e(-r)h(/dev/usb/lp0)f(-i)396
-1726 y(Escputil)g(version)h(4.3.0,)f(Copyright)g(\(C\))i(2000-2001)e
-(Robert)g(Krawitz)396 1842 y(Escputil)g(comes)h(with)g(ABSOLUTELY)f(NO)
-h(WARRANTY;)f(for)i(details)e(type)396 1959 y('escputil)g(-l')396
-2075 y(This)h(is)h(free)f(software,)f(and)h(you)g(are)g(welcome)g(to)g
-(redistribute)e(it)396 2192 y(under)i(certain)f(conditions;)g(type)h
-('escputil)f(-l')h(for)g(details.)988 2425 y(Ink)g(color)214
-b(Percent)53 b(remaining)1203 2542 y(Black)268 b(18)1257
-2658 y(Cyan)g(71)1096 2775 y(Magenta)f(70)1149 2891 y(Yellow)h(67)934
-3008 y(Light)53 b(Cyan)268 b(71)773 3124 y(Light)53 b(Magenta)267
-b(70)396 3587 y Fm(The)25 b(user)g(w)o(ould)f(substitute)f(their)h(o)n
-(wn)g(ra)o(w)h(printer)g(de)n(vice)f(for)h(the)g(one)f(sho)n(wn)g(in)g
-(the)396 3716 y(e)o(xample)g(after)i(the)e("-r")h(switch.)f(Notice)g
-(that)h(the)f(printout)g(sho)n(ws)f(the)i(percent)g(of)g(ink)396
-3846 y(remaining)f(for)h(each)h(color)e(of)h(the)g(author')-5
-b(s)24 b(Epson)g(Stylus)g(Photo)g(870.)g(When)h(the)g(ink)396
-3975 y(le)n(v)o(els)f(get)g(too)g(lo)n(w)-6 b(,)24 b(print)g(quality)g
-(will)f(suf)n(fer)-5 b(.)25 b(In)g(the)f(author')-5 b(s)24
-b(personal)h(e)o(xperience,)f(ink)396 4105 y(le)n(v)o(els)g
-(approaching)g(10\045)g(be)o(gin)g(to)h(cause)g(print)f(quality)g(de)o
-(gredation,)f(b)n(ut)i(this)e(will)h(v)n(ary)396 4234
-y(depending)g(on)h(the)f(precise)h(printer)g(model.)-2
-4678 y Fe(4.1.2.)39 b(Err)m(or)f(During)g(Ink)i(Le)n(vel)e
-(Determination)396 4879 y Fm(What?)25 b(The)g(e)o(xample)f(abo)o(v)o(e)
-g(did)g(not)g(w)o(ork?)h(An)g(error)g(message)g(w)o(as)g(printed?)f
-(What)h(does)396 5009 y(it)g(mean?)f(There)i(are)f(se)n(v)o(eral)f
-(possibilities,)e(depending)i(on)h(the)f(speci\002c)i(error)f(message.)
-f(If)396 5138 y(the)g(error)h(message)e(is)h("In)l(v)n(alid)e(ar)n
-(gument")h(\(see)i(follo)n(wing)d(e)o(xample\),)h(the)g(problem)g(is)h
-(that)p Black 3645 5692 a Fi(31)p Black eop
-%%Page: 32 41
-32 40 bop Black 0 TeXcolorgray Black 2488 67 a Fi(Chapter)24
-b(4.)h(Gimp-Print)e(Utilities)p Black 396 579 a Fm(the)i(k)o(ernel)g
-(is)f(not)g(con\002gured)h(with)f(the)h(CONFIG_PRINTER_READB)m(A)l(CK)i
-(option)396 708 y(enabled.)396 925 y Fh(#)54 b(escputil)e(-r)h
-(/dev/lp0)g(-i)396 1158 y(Escputil)f(version)h(4.3.0,)f(Copyright)g
-(\(C\))i(2000-2001)e(Robert)g(Krawitz)396 1274 y(Escputil)g(comes)h
-(with)g(ABSOLUTELY)f(NO)h(WARRANTY;)f(for)i(details)e(type)396
-1391 y('escputil)g(-l')396 1507 y(This)h(is)h(free)f(software,)f(and)h
-(you)g(are)g(welcome)g(to)g(redistribute)e(it)396 1624
-y(under)i(certain)f(conditions;)g(type)h('escputil)f(-l')h(for)g
-(details.)396 1857 y(Cannot)g(read)g(from)g(/dev/lp0:)f(Invalid)g
-(argument)396 2319 y Fm(Another)25 b(possibile)e(cause)i(for)g(error)h
-(is)e(that)g(the)h(ra)o(w)g(printer)f(de)n(vice)h(does)f(not)g(ha)n(v)o
-(e)h(both)396 2449 y(read)h(and)e(write)h(permission)e(for)i(the)g
-(user)g(attempting)e(to)h(access)i(the)e(de)n(vice.)h(In)g(this)e
-(case,)396 2578 y(the)i(error)g(message)g(will)f(read)h("Permission)e
-(denied".)i(A)f(\002nal)h(possibility)e(is)h(that)g(the)h(ra)o(w)396
-2708 y(printer)g(de)n(vice)f(speci\002ed)h(is)g(incorrect,)g(in)f
-(which)g(case)i(the)e(error)i(message)e(will)g(read)i("No)396
-2837 y(such)f(de)n(vice".)-2 3281 y Fe(4.1.3.)39 b(Nozzle)f(Chec)m(k)
-396 3482 y Fm(On)25 b(an)g(inkjet)f(printer)l(,)g(there)h(are)h(se)n(v)
-o(eral)e(small)g(holes)g(on)g(the)h(bottom)e(of)i(each)h(ink)396
-3612 y(cartridge)f(through)f(which)g(the)h(ink)f(must)g(\003o)n(w)h
-(smoothly)d(in)j(order)g(to)f(create)i(high)e(quality)396
-3741 y(images)g(on)h(paper)-5 b(.)25 b(If)g(these)f(holes)h(become)f
-(clogged,)h(the)f(printed)g(image)h(will)f(sho)n(w)f(small)396
-3871 y(gaps)h(where)i(there)f(should)e(ha)n(v)o(e)i(been)g(ink.)f(One)h
-(can)g(easily)f(test)h(for)g(the)f(e)o(xistence)g(of)h(this)396
-4000 y(condition)f(by)g(running)g(a)h(nozzle)g(check.)g(One)g(need)g
-(not)f(be)h(the)g(root)f(user)h(to)g(issue)f(this)396
-4130 y(command.)g(Note)h(that)f(as)h(sho)n(wn,)e(the)i(command)f(will)g
-(print)g(a)h(nozzle)g(test)f(pattern)h(on)f(the)396 4259
-y(def)o(ault)h(printer)-5 b(.)24 b(If)h(there)g(are)h(multiple)d
-(printers)h(present,)g(the)h(desired)g(printer)f(must)g(be)396
-4389 y(speci\002ed)h(with)f(an)h(additional)f("-P)h(printer_name")f
-(switch,)g(where)h("printer_name")e(is)i(the)396 4518
-y(name)g(of)g(the)g(desired)f(printer)-5 b(.)396 4698
-y(The)25 b(printer)g(will)f(print)g(a)h(series)g(of)f(black)h(\(and)g
-(colored\))g(slanted)f(lines)g(on)h(the)f(paper)-5 b(.)396
-4827 y(Observ)o(e)25 b(these)f(lines)g(carefully)-6 b(.)25
-b(If)g(there)g(are)h(gaps)e(or)h(spaces)f(in)h(these)g(lines,)f(then)g
-(the)396 4957 y(corresponding)g(nozzle)h(is)f(clogged)h(and)g(the)f
-(print)g(head)h(must)f(be)h(cleaned.)g(Ho)n(we)n(v)o(er)l(,)e(if)396
-5086 y(there)i(are)h(no)e(gaps,)g(the)h(nozzles)g(are)g(clean.)p
-Black 3645 5692 a Fi(32)p Black eop
-%%Page: 33 42
-33 41 bop Black 0 TeXcolorgray Black 2488 67 a Fi(Chapter)24
-b(4.)h(Gimp-Print)e(Utilities)p Black 396 579 a Fh(#)54
-b(escputil)e(-n)396 695 y(Escputil)g(version)h(4.3.0,)f(Copyright)g
-(\(C\))i(2000-2001)e(Robert)g(Krawitz)396 812 y(Escputil)g(comes)h
-(with)g(ABSOLUTELY)f(NO)h(WARRANTY;)f(for)i(details)e(type)396
-929 y('escputil)g(-l')396 1045 y(This)h(is)h(free)f(software,)f(and)h
-(you)g(are)g(welcome)g(to)g(redistribute)e(it)396 1162
-y(under)i(certain)f(conditions;)g(type)h('escputil)f(-l')h(for)g
-(details.)396 1395 y(Running)g(nozzle)f(check,)h(please)f(ensure)h
-(paper)g(is)g(in)h(the)f(printer.)-2 2121 y Fe(4.1.4.)39
-b(Clean)f(the)h(Print)g(Head)396 2323 y Fm(If)26 b(the)e(printed)g
-(output)g(is)g(sho)n(wing)f(gaps)h(where)i(there)f(should)e(ha)n(v)o(e)
-i(been)g(ink,)f(it)g(is)h(lik)o(ely)396 2452 y(that)g(one)f(or)h(more)g
-(nozzles)g(are)g(clogged)f(and)h(the)g(print)f(head)h(is)f(in)h(need)g
-(of)g(cleaning.)f(One)396 2582 y(can)h(v)o(erify)g(this)f(by)g(\002rst)
-h(running)f(a)h(nozzle)g(check)g(and)g(looking)e(for)i(gaps)f(in)h(the)
-g(printout.)396 2711 y(T)-8 b(o)24 b(clean)h(the)f(print)f(head,)i
-(issue)e(the)h(follo)n(wing)f(command.)g(One)h(need)g(not)g(be)g(the)h
-(root)e(user)396 2841 y(to)i(issue)f(this)g(command.)f(Note)i(that)f
-(as)h(sho)n(wn,)f(the)g(command)g(will)g(clean)h(the)g(print)f(head)396
-2970 y(on)h(the)f(def)o(ault)h(printer)-5 b(.)24 b(If)h(there)g(are)h
-(multiple)d(printers)h(present,)h(the)f(desired)h(printer)f(must)396
-3100 y(be)h(speci\002ed)g(with)f(an)h(additional)f("-P)h(printer_name")
-f(switch,)g(where)h("printer_name")e(is)396 3229 y(the)i(name)g(of)g
-(the)f(desired)h(printer)-5 b(.)396 3445 y Fh(#)54 b(escputil)e(-c)396
-3562 y(Escputil)g(version)h(4.3.0,)f(Copyright)g(\(C\))i(2000-2001)e
-(Robert)g(Krawitz)396 3678 y(Escputil)g(comes)h(with)g(ABSOLUTELY)f(NO)
-h(WARRANTY;)f(for)i(details)e(type)396 3795 y('escputil)g(-l')396
-3912 y(This)h(is)h(free)f(software,)f(and)h(you)g(are)g(welcome)g(to)g
-(redistribute)e(it)396 4028 y(under)i(certain)f(conditions;)g(type)h
-('escputil)f(-l')h(for)g(details.)396 4261 y(Cleaning)f(heads...)396
-4724 y Fm(Nothing)24 b(will)g(be)h(printed)f(on)g(the)h(paper)-5
-b(.)25 b(The)f(printer)h(will)f(mak)o(e)h(some)f(noise)g(as)h(it)f
-(cleans)396 4853 y(the)h(print)f(head.)h(W)-8 b(ait)25
-b(until)e(the)i(printer)f(is)h(\002nished)f(cleaning)h(the)f(print)g
-(head.)h(Afterw)o(ards,)396 4983 y(e)o(x)o(ecute)f(another)h(nozzle)g
-(check)g(and)g(insure)f(that)h(the)f(print)h(head)g(is)f(indeed)g
-(completely)396 5112 y(clean.)h(Note)g(that)f(the)h(process)g(of)f
-(cleaning)h(the)g(print)f(head)h(causes)g(ink)f(consumption,)e(so)396
-5242 y(do)j(not)f(clean)h(the)g(print)f(head)h(an)o(y)f(more)h(than)f
-(necessary)-6 b(.)p Black 3645 5692 a Fi(33)p Black eop
-%%Page: 34 43
-34 42 bop Black 0 TeXcolorgray Black 2488 67 a Fi(Chapter)24
-b(4.)h(Gimp-Print)e(Utilities)p Black 396 579 a Fm(F)o(or)i(se)n(v)o
-(erely)e(clogged)h(nozzles,)h(one)f(may)g(ha)n(v)o(e)g(to)g(e)o(x)o
-(ecute)g(tw)o(o)g(or)h(three)g(c)o(ycles)f(of)g(nozzle)396
-708 y(check)h(follo)n(wed)f(by)h(a)g(cleaning)f(of)h(the)g(print)f
-(head.)h(If)g(the)g(printer)f(had)h(gone)f(unused)h(for)g(a)396
-838 y(long)f(time,)g(the)h(nozzles)g(may)f(be)h(so)f(clogged)h(with)f
-(dried)g(ink)h(as)g(to)f(be)h(unreco)o(v)o(erable,)f(in)396
-967 y(which)h(case,)g(the)g(best)f(course)h(of)g(action)f(is)h(to)f
-(replace)h(the)g(ink)f(cartridge.)-2 1411 y Fe(4.1.5.)39
-b(Align)f(the)h(Print)g(Head)396 1612 y Fm(T)-8 b(o)25
-b(insure)f(the)h(highest)f(quality)f(printouts,)g(the)i(print)f(head)h
-(must)f(be)h(in)f(proper)h(physical)396 1742 y(alignment.)f(One)g(can)i
-(check)f(and)g(realign)f(the)h(print)f(head)h(by)f(running)g(this)g
-(interacti)n(v)o(e)396 1871 y(alignment)g(test.)396 2051
-y(The)h Fi(escputil)f Fm(utility)f(must)h(kno)n(w)f(the)i(e)o(xact)g
-(printer)f(model)g(in)h(use.)f(One)h(may)g(specify)f(the)396
-2180 y(model)g(on)h(the)f(command)g(line)h(using)e(the)i("-m")f
-(switch,)g(or)h(the)f(utility)f(can)j(detect)e(the)396
-2310 y(printer)h(model)f(if)h(the)f(user)h(passes)f(the)h("-r")g
-(switch)f(and)g(the)h(name)g(of)g(the)f(ra)o(w)h(printer)396
-2439 y(de)n(vice.)396 2618 y(Note)g(that)f(an)h(unpri)n(vile)o(ged)e
-(user)i(may)f(use)h(this)f(command)f(with)h(the)h("-m")f(switch,)g(b)n
-(ut)g(that)396 2748 y(\(in)h(general\))g(the)g(root)f(user)h(may)g
-(only)f(use)g(the)h("-r")f(switch)h(\(which)f(requires)h(read/write)396
-2877 y(access)h(to)e(the)h(ra)o(w)f(printer)h(de)n(vice\).)f(In)h(the)g
-(case)g(of)g(multiple)e(printers)i(in)f(use,)h(the)f("-P")396
-3007 y(switch)g(is)h(required)g(to)f(align)g(the)h(print)f(head)h(on)f
-(the)h(non-def)o(ault)f(printer)-5 b(.)p 778 3145 2601
-17 v 778 4130 17 986 v 1812 3324 a Fe(Caution)820 3493
-y Fc(This)25 b(utility)h(lets)f(y)n(ou)g(align)h(the)f(pr)q(int)h(head)
-f(of)g(y)n(our)g(Epson)g(Stylus)820 3611 y(inkjet)g(pr)q(inter)-5
-b(.)28 b(Misuse)c(of)i(this)f(utility)i(ma)m(y)e(cause)f(y)n(our)h(pr)q
-(int)h(quality)820 3730 y(to)f(deg)o(r)o(ade)g(and)g(possib)n(ly)f
-(damage)g(y)n(our)i(pr)q(inter)-5 b(.)27 b(This)e(utility)h(has)820
-3849 y(not)f(been)f(re)m(vie)n(w)o(ed)i(b)n(y)f(Seik)n(o)g(Epson)f(f)m
-(or)i(correctness)o(,)f(and)f(is)820 3968 y(off)m(ered)i(with)f(no)g(w)
-o(arr)o(anty)h(at)f(all.)h(The)f(entire)h(r)q(isk)f(of)h(using)f(this)
-820 4086 y(utility)h(lies)f(with)h(y)n(ou.)p 3362 4130
-V 778 4147 2601 17 v 396 4365 a Fm(Aligning)d(the)i(print)f(head)h(is)g
-(an)f(interacti)n(v)o(e)g(process.)h(The)f(utility)f(will)h(print)g
-(out)h(a)g(set)f(of)396 4495 y(instructions)f(and)i(ask)g(you)f(for)h
-(responses.)f(Please)i(read)f(the)g(instructions)d(carefully)j(and)396
-4624 y(follo)n(w)f(them)g(precisely)-6 b(.)24 b(A)h(single)f(sheet)g
-(of)h(paper)g(will)f(be)h(needed)g(\(one)g(can)g(print)g(on)f(both)396
-4754 y(sides)g(to)h(sa)n(v)o(e)f(paper\).)396 4933 y(The)h(follo)n
-(wing)e(e)o(xample)h(illustrates)f(the)i(alignment)e(process)i(when)g
-(issued)f(by)g(an)396 5063 y(unpri)n(vile)o(ged)f(user)i(who)f
-(speci\002ed)h(the)g(printer)f(model)g(on)h(the)g(command)e(line.)i
-(\(T)-8 b(o)24 b(obtain)396 5192 y(a)h(list)f(of)h(printer)g(models,)e
-(issue)h(the)h("escputil)e(-M")i(command\).)f(Of)h(course,)g(your)p
-Black 3645 5692 a Fi(34)p Black eop
-%%Page: 35 44
-35 43 bop Black 0 TeXcolorgray Black 2488 67 a Fi(Chapter)24
-b(4.)h(Gimp-Print)e(Utilities)p Black 396 579 a Fm(responses)i(will)e
-(v)n(ary)i(and)g(should)e(be)i(substituted)e(for)i(the)g(responses)f
-(sho)n(wn)f(in)i(the)396 708 y(follo)n(wing)e(e)o(xample.)396
-1041 y Fh(***)53 b(NOTE)g(-)h(870)f(is)h(an)f(illustrative)e(example!)i
-(***)396 1158 y(***)g(You)h(MUST)f(use)g(the)g(proper)g(printer)f
-(model!)h(***)396 1274 y(***)g(Run:)107 b(escputil)52
-b(-M)i(for)f(a)h(listing)e(of)269 b(***)396 1391 y(***)53
-b(supported)f(printer)h(models!)752 b(***)396 1624 y(linuxpc>)52
-b(escputil)h(-a)g(-m)g(870)396 1741 y(Escputil)f(version)h(4.3.0,)f
-(Copyright)g(\(C\))i(2000-2001)e(Robert)g(Krawitz)396
-1857 y(Escputil)g(comes)h(with)g(ABSOLUTELY)f(NO)h(WARRANTY;)f(for)i
-(details)e(type)396 1974 y('escputil)g(-l')396 2090 y(This)h(is)h(free)
-f(software,)f(and)h(you)g(are)g(welcome)g(to)g(redistribute)e(it)396
-2207 y(under)i(certain)f(conditions;)g(type)h('escputil)f(-l')h(for)g
-(details.)396 2440 y(Please)g(read)g(these)g(instructions)e(very)i
-(carefully)f(before)h(proceeding.)396 2673 y(This)g(utility)g(lets)g
-(you)g(align)g(the)g(print)g(head)g(of)g(your)g(Epson)g(Stylus)396
-2790 y(inkjet)g(printer.)106 b(Misuse)52 b(of)i(this)f(utility)f(may)h
-(cause)g(your)g(print)396 2906 y(quality)g(to)g(degrade)f(and)i
-(possibly)e(damage)g(your)h(printer.)106 b(This)53 b(utility)396
-3023 y(has)g(not)h(been)f(reviewed)f(by)h(Seiko)g(Epson)g(for)g
-(correctness,)e(and)j(is)396 3139 y(offered)f(with)g(no)g(warranty)f
-(at)i(all.)106 b(The)54 b(entire)e(risk)h(of)h(using)e(this)396
-3256 y(utility)h(lies)g(with)g(you.)396 3489 y(This)g(utility)g(prints)
-f(3)i(test)f(patterns.)106 b(Each)53 b(pattern)f(looks)h(very)396
-3606 y(similar.)106 b(The)53 b(patterns)g(consist)f(of)h(a)h(series)f
-(of)g(pairs)g(of)g(vertical)396 3722 y(lines)g(that)g(overlap.)106
-b(Below)53 b(each)g(pair)g(of)g(lines)g(is)g(a)h(number)f(between)396
-3839 y(1)h(and)f(15.)396 4072 y(When)g(you)g(inspect)g(the)g(pairs)g
-(of)g(lines,)g(you)g(should)g(find)g(the)g(pair)396 4188
-y(of)h(lines)e(that)h(is)h(best)f(in)g(alignment,)f(that)h(is,)g(that)g
-(best)g(forms)396 4305 y(a)h(single)e(vertical)h(line.)106
-b(Inspect)53 b(the)g(pairs)g(very)g(carefully)f(to)396
-4422 y(find)h(the)g(best)g(match.)107 b(Using)53 b(a)g(loupe)g(or)g
-(magnifying)f(glass)h(is)396 4538 y(recommended)f(for)h(the)g(most)g
-(critical)f(inspection.)106 b(It)53 b(is)h(also)396 4655
-y(suggested)e(that)h(you)g(use)h(a)f(good)g(quality)g(paper)f(for)i
-(the)f(test,)g(so)396 4771 y(that)g(the)g(lines)g(are)g(well-formed)f
-(and)h(do)h(not)f(spread)f(through)h(the)396 4888 y(paper.)107
-b(After)52 b(picking)h(the)g(number)g(matching)f(the)h(best)g(pair,)g
-(place)396 5004 y(the)g(paper)g(back)g(in)h(the)f(paper)g(input)f(tray)
-h(before)g(typing)g(it)g(in.)396 5237 y(Each)g(pattern)g(is)g(similar,)
-f(but)h(later)g(patterns)f(use)i(finer)e(dots)h(for)p
-Black 3645 5692 a Fi(35)p Black eop
-%%Page: 36 45
-36 44 bop Black 0 TeXcolorgray Black 2488 67 a Fi(Chapter)24
-b(4.)h(Gimp-Print)e(Utilities)p Black 396 579 a Fh(more)53
-b(critical)f(alignment.)106 b(You)53 b(must)g(run)g(all)h(of)f(the)g
-(passes)g(to)396 695 y(correctly)f(align)h(your)g(printer.)106
-b(After)53 b(running)f(all)h(the)h(alignment)396 812
-y(passes,)f(the)g(alignment)f(patterns)g(will)h(be)g(printed)g(once)g
-(more.)106 b(You)396 929 y(should)53 b(find)g(that)g(the)g(middle-most)
-f(pair)h(\(#8)g(out)g(of)g(the)h(15\))f(is)g(the)396
-1045 y(best)g(for)g(all)h(patterns.)396 1278 y(After)f(the)g(passes)g
-(are)g(printed)f(once)h(more,)g(you)g(will)g(be)h(offered)e(the)396
-1395 y(choices)h(of)g(\(s\)aving)f(the)h(result)g(in)g(the)h(printer,)e
-(\(r\)epeating)f(the)396 1511 y(process,)h(or)i(\(q\)uitting)e(without)
-g(saving.)106 b(Quitting)52 b(will)h(not)h(restore)396
-1628 y(the)f(previous)g(settings,)f(but)h(powering)f(the)h(printer)g
-(off)g(and)g(back)396 1745 y(on)h(will.)106 b(If)54 b(you)f(quit,)g
-(you)g(must)g(repeat)f(the)i(entire)e(process)h(if)396
-1861 y(you)g(wish)g(to)h(later)f(save)g(the)g(results.)106
-b(It)53 b(is)h(essential)e(that)h(you)396 1978 y(not)g(turn)g(your)g
-(printer)g(off)g(during)g(this)g(procedure.)396 2211
-y(This)g(procedure)f(assumes)h(that)g(your)g(printer)f(is)h(an)h(Epson)
-f(Stylus)f(Photo)396 2327 y(870.)107 b(If)53 b(this)g(is)h(not)f(your)g
-(printer)f(model,)h(please)g(type)g(control-C)f(now)396
-2444 y(and)h(choose)g(your)g(actual)g(printer)f(model.)396
-2677 y(Please)h(place)g(a)g(sheet)g(of)g(paper)g(in)h(your)f(printer)f
-(to)h(begin)g(the)g(head)396 2794 y(alignment)f(procedure.)396
-2910 y(Press)h(enter)g(to)g(continue)f(>)396 3027 y(Please)h(inspect)f
-(the)h(print,)g(and)g(choose)g(the)g(best)g(pair)g(of)g(lines)g(in)396
-3143 y(each)g(pattern.)106 b(Type)53 b(a)h(pair)f(number,)f('?')h(for)h
-(help,)e(or)i('r')f(to)g(repeat)396 3260 y(the)g(procedure.)396
-3376 y(Pass)g(#1>)g(8)396 3493 y(Pass)g(#2>)g(8)396 3610
-y(Pass)g(#3>)g(8)396 3726 y(Attempting)f(to)h(set)h
-(alignment...succeeded.)396 3843 y(Please)f(verify)f(that)h(the)h
-(alignment)e(is)h(correct.)106 b(After)53 b(the)g(alignment)396
-3959 y(pattern)g(is)g(printed)f(again,)h(please)g(ensure)f(that)h(the)g
-(best)g(pattern)396 4076 y(for)g(each)g(line)g(is)h(pattern)e(8.)107
-b(If)54 b(it)f(is)h(not,)f(you)g(should)f(repeat)h(the)396
-4192 y(process)g(to)g(get)g(the)g(best)g(quality)g(printing.)396
-4309 y(Please)g(insert)f(a)i(fresh)f(sheet)g(of)g(paper.)396
-4425 y(Press)g(enter)g(to)g(continue)f(>)396 4542 y(Please)h(inspect)f
-(the)h(final)g(output)g(very)g(carefully)f(to)h(ensure)g(that)g(your)
-396 4659 y(printer)g(is)g(in)g(proper)g(alignment.)f(You)h(may)g(now:)
-504 4775 y(\(s\)ave)f(the)i(results)e(in)h(the)h(printer,)504
-4892 y(\(q\)uit)e(without)h(saving)f(the)i(results,)e(or)504
-5008 y(\(r\)epeat)g(the)h(entire)g(process)f(from)h(the)g(beginning.)
-396 5125 y(You)g(will)g(then)g(be)h(asked)f(to)g(confirm)f(your)h
-(choice.)396 5241 y(What)g(do)h(you)f(want)g(to)g(do)h(\(s,)f(q,)g
-(r\)?)p Black 3643 5692 a Fi(36)p Black eop
-%%Page: 37 46
-37 45 bop Black 0 TeXcolorgray Black 2488 67 a Fi(Chapter)24
-b(4.)h(Gimp-Print)e(Utilities)p Black 396 579 a Fh(>)54
-b(s)396 695 y(This)f(will)g(permanently)f(alter)h(the)g(configuration)e
-(of)i(your)g(printer.)396 812 y(WARNING:)f(this)h(procedure)f(has)i
-(not)f(been)g(approved)f(by)h(Seiko)g(Epson,)396 929
-y(and)g(it)h(may)f(damage)g(your)g(printer.)f(Proceed?)396
-1045 y(Please)h(confirm)f(by)i(typing)e('s')h(again)g(that)g(you)g
-(wish)g(to)h(save)f(the)396 1162 y(settings)f(to)i(your)f(printer:)396
-1278 y(>)h(s)396 1395 y(About)f(to)g(save)g(settings...succeeded!)396
-1511 y(Your)g(alignment)f(settings)g(have)h(been)g(saved)g(to)h(the)f
-(printer.)396 1974 y Fm(The)25 b(follo)n(wing)e(e)o(xample)h(sho)n(ws)f
-(what)i(will)f(happen)g(if)h(an)g(unpri)n(vile)o(ged)e(user)i(attempts)
-e(to)396 2103 y(align)h(the)h(print)f(head)h(by)g(specifying)f(the)g
-(ra)o(w)h(printer)g(de)n(vice)f(on)h(the)f(command)g(line.)396
-2319 y Fh(linuxpc>)52 b(escputil)h(-a)g(-r)g(/dev/usb/lp0)396
-2436 y(Escputil)f(version)h(4.2.0,)f(Copyright)g(\(C\))i(2000-2001)e
-(Robert)g(Krawitz)396 2553 y(Escputil)g(comes)h(with)g(ABSOLUTELY)f(NO)
-h(WARRANTY;)f(for)i(details)e(type)396 2669 y('escputil)g(-l')396
-2786 y(This)h(is)h(free)f(software,)f(and)h(you)g(are)g(welcome)g(to)g
-(redistribute)e(it)396 2902 y(under)i(certain)f(conditions;)g(type)h
-('escputil)f(-l')h(for)g(details.)396 3135 y(Attempting)f(to)h(detect)g
-(printer)f(model...)396 3252 y(Cannot)h(open)g(/dev/usb/lp0)e
-(read/write:)h(Permission)g(denied)396 3714 y Fm(This)24
-b(ne)o(xt)g(e)o(xample)g(illustrates)g(the)g(results)g(obtained)g(when)
-h(the)g(root)f(user)h(issues)f(an)396 3844 y(alignment)g(command)g
-(while)g(specifying)g(the)g(ra)o(w)h(printer)g(de)n(vice.)f(Note)h
-(that)f(the)h(output)e(is)396 3973 y(truncated)i(and)g(only)f(sho)n(ws)
-f(the)i(printer)f(detection)g(output.)396 4189 y Fh(#)54
-b(escputil)e(-a)h(-r)h(/dev/usb/lp0)396 4306 y(Escputil)e(version)h
-(4.3.0,)f(Copyright)g(\(C\))i(2000-2001)e(Robert)g(Krawitz)396
-4422 y(Escputil)g(comes)h(with)g(ABSOLUTELY)f(NO)h(WARRANTY;)f(for)i
-(details)e(type)396 4539 y('escputil)g(-l')396 4656 y(This)h(is)h(free)
-f(software,)f(and)h(you)g(are)g(welcome)g(to)g(redistribute)e(it)396
-4772 y(under)i(certain)f(conditions;)g(type)h('escputil)f(-l')h(for)g
-(details.)396 5005 y(Attempting)f(to)h(detect)g(printer)f
-(model...Stylus)f(Photo)i(870)396 5238 y(Please)g(read)g(these)g
-(instructions)e(very)i(carefully)f(before)h(proceeding.)p
-Black 3641 5692 a Fi(37)p Black eop
-%%Page: 38 47
-38 46 bop Black 0 TeXcolorgray Black 2488 67 a Fi(Chapter)24
-b(4.)h(Gimp-Print)e(Utilities)p Black -2 1189 a Fe(4.1.6.)39
-b(Printer)f(Identi\002cation)396 1390 y Fm(The)25 b(printer)g
-(identi\002cation)e(command)h(will)g(query)h(the)f(printer)h(for)g(mak)
-o(e)g(and)g(model)396 1520 y(information.)f(This)g(command)f(requires)i
-(read/write)g(access)g(to)g(the)f(ra)o(w)h(printer)g(de)n(vice)396
-1649 y(\(generally)g(limited)e(to)i(the)f(root)h(user\).)g(Substitute)e
-(your)i(o)n(wn)f(ra)o(w)g(printer)h(de)n(vice)f(in)h(place)396
-1779 y(of)g(the)g(/de)n(v/usb/lp0)d(sho)n(wn)h(in)i(the)f(e)o(xample.)g
-(The)h(output)f(will)g(v)n(ary)g(depending)g(on)h(the)396
-1908 y(precise)g(printer)g(model.)396 2124 y Fh(#)54
-b(escputil)e(-d)h(-r)h(/dev/usb/lp0)396 2241 y(Escputil)e(version)h
-(4.3.0,)f(Copyright)g(\(C\))i(2000-2001)e(Robert)g(Krawitz)396
-2357 y(Escputil)g(comes)h(with)g(ABSOLUTELY)f(NO)h(WARRANTY;)f(for)i
-(details)e(type)396 2474 y('escputil)g(-l')396 2591 y(This)h(is)h(free)
-f(software,)f(and)h(you)g(are)g(welcome)g(to)g(redistribute)e(it)396
-2707 y(under)i(certain)f(conditions;)g(type)h('escputil)f(-l')h(for)g
-(details.)396 2940 y(@EJL)g(ID)396 3057 y
-(MFG:EPSON;CMD:ESCPL2,BDC;MDL:Stylu)o(s)48 b(Photo)53
-b(870;CLS:PRINTER;DES:)396 3173 y(EPSON)g(Stylus)g(Photo)f(870;)-2
-3900 y Fe(4.1.7.)39 b(More)f(Inf)m(ormation)396 4101
-y Fm(F)o(or)25 b(more)g(detailed)f(information)f(about)i(the)f(command)
-g(line)g(switches)g(accepted)i(by)e(the)396 4231 y Fi(escputil)g
-Fm(utility)-6 b(,)23 b(please)i(consult)e(the)i(man)f(page)h(which)g
-(is)f(supplied)g(with)g(the)g(Gimp-Print)396 4360 y(softw)o(are.)h(The)
-g(user)g(may)f(also)h(issue)f(the)g("escputil)g(--help")g(command)g(to)
-h(get)f(a)h(listing)f(of)396 4490 y(supported)g(command)g(line)g
-(switches.)g(The)h(command)f(requires)h(no)f(special)h(pri)n(vile)o
-(ges)e(to)396 4619 y(e)o(x)o(ecute.)p Black 3645 5692
-a Fi(38)p Black eop
-%%Page: 39 48
-39 47 bop Black 0 TeXcolorgray Black Black -2 647 a Fk(Appendix)58
-b(A.)g(GNU)g(Free)-2 915 y(Documentation)g(License)396
-1213 y Fm(V)-11 b(ersion)25 b(1.1,)f(March)h(2000)496
-1429 y Fa(Cop)o(yright)c(\(C\))h(2000)g(Free)g(Softw)o(are)f(F)o
-(oundation,)g(Inc.)h(59)g(T)-6 b(emple)21 b(Place,)h(Suite)g(330,)496
-1545 y(Boston,)g(MA)g(02111-1307)e(USA)i(Ev)o(eryone)f(is)h(permitted)f
-(to)h(cop)o(y)g(and)g(distrib)n(ute)f(v)o(erbatim)496
-1662 y(copies)g(of)h(this)g(license)g(document,)f(b)n(ut)i(changing)e
-(it)h(is)g(not)g(allo)n(wed.)-2 2294 y Fo(0.)47 b(PREAMBLE)396
-2509 y Fm(The)25 b(purpose)f(of)h(this)f(License)h(is)f(to)h(mak)o(e)f
-(a)i(manual,)e(te)o(xtbook,)f(or)i(other)f(written)396
-2639 y(document)g("free")h(in)g(the)f(sense)h(of)g(freedom:)f(to)h
-(assure)g(e)n(v)o(eryone)f(the)g(ef)n(fecti)n(v)o(e)g(freedom)396
-2768 y(to)h(cop)o(y)f(and)h(redistrib)n(ute)f(it,)g(with)g(or)h
-(without)e(modifying)g(it,)h(either)h(commercially)f(or)396
-2898 y(noncommercially)-6 b(.)23 b(Secondarily)-6 b(,)24
-b(this)g(License)h(preserv)o(es)f(for)h(the)g(author)f(and)h(publisher)
-f(a)396 3027 y(w)o(ay)h(to)g(get)f(credit)h(for)g(their)g(w)o(ork,)f
-(while)g(not)h(being)f(considered)g(responsible)g(for)396
-3157 y(modi\002cations)g(made)g(by)h(others.)396 3336
-y(This)f(License)h(is)f(a)i(kind)e(of)g("cop)o(yleft",)g(which)g(means)
-h(that)f(deri)n(v)n(ati)n(v)o(e)f(w)o(orks)h(of)h(the)396
-3466 y(document)f(must)g(themselv)o(es)f(be)i(free)h(in)e(the)h(same)f
-(sense.)h(It)g(complements)e(the)i(GNU)396 3595 y(General)g(Public)g
-(License,)g(which)f(is)g(a)i(cop)o(yleft)e(license)h(designed)f(for)h
-(free)g(softw)o(are.)396 3775 y(W)-8 b(e)25 b(ha)n(v)o(e)g(designed)f
-(this)g(License)h(in)f(order)h(to)g(use)f(it)h(for)g(manuals)f(for)h
-(free)g(softw)o(are,)396 3904 y(because)g(free)h(softw)o(are)f(needs)g
-(free)h(documentation:)c(a)k(free)f(program)g(should)e(come)i(with)396
-4034 y(manuals)f(pro)o(viding)f(the)h(same)g(freedoms)h(that)f(the)g
-(softw)o(are)h(does.)f(But)h(this)e(License)i(is)f(not)396
-4163 y(limited)g(to)g(softw)o(are)h(manuals;)e(it)i(can)g(be)g(used)f
-(for)i(an)o(y)e(te)o(xtual)f(w)o(ork,)i(re)o(gardless)f(of)396
-4293 y(subject)g(matter)h(or)g(whether)g(it)f(is)g(published)g(as)g(a)i
-(printed)e(book.)g(W)-8 b(e)25 b(recommend)f(this)396
-4422 y(License)h(principally)f(for)h(w)o(orks)f(whose)h(purpose)f(is)g
-(instruction)f(or)i(reference.)-2 4924 y Fo(1.)47 b(APPLICABILITY)i
-(AND)g(DEFINITIONS)396 5140 y Fm(This)24 b(License)h(applies)f(to)h(an)
-o(y)f(manual)g(or)h(other)g(w)o(ork)f(that)h(contains)f(a)h(notice)f
-(placed)h(by)396 5270 y(the)g(cop)o(yright)f(holder)g(saying)g(it)g
-(can)i(be)f(distrib)n(uted)e(under)h(the)h(terms)f(of)h(this)f
-(License.)p Black 3645 5692 a Fi(39)p Black eop
-%%Page: 40 49
-40 48 bop Black 0 TeXcolorgray Black 1850 67 a Fi(Appendix)24
-b(A.)h(GNU)g(F)-5 b(r)l(ee)25 b(Documentation)e(License)p
-Black 396 579 a Fm(The)i("Document",)e(belo)n(w)-6 b(,)24
-b(refers)h(to)g(an)o(y)f(such)g(manual)h(or)g(w)o(ork.)f(An)o(y)g
-(member)g(of)h(the)396 708 y(public)f(is)h(a)g(licensee,)f(and)h(is)g
-(addressed)f(as)h("you".)396 888 y(A)g("Modi\002ed)f(V)-11
-b(ersion")24 b(of)h(the)f(Document)g(means)h(an)o(y)f(w)o(ork)h
-(containing)e(the)i(Document)396 1017 y(or)g(a)g(portion)f(of)h(it,)f
-(either)h(copied)f(v)o(erbatim,)g(or)h(with)f(modi\002cations)f(and/or)
-i(translated)396 1147 y(into)f(another)h(language.)396
-1326 y(A)g("Secondary)g(Section")g(is)f(a)h(named)g(appendix)f(or)h(a)g
-(front-matter)f(section)g(of)h(the)396 1456 y(Document)e(that)h(deals)f
-(e)o(xclusi)n(v)o(ely)f(with)h(the)h(relationship)e(of)i(the)g
-(publishers)e(or)i(authors)f(of)396 1585 y(the)i(Document)f(to)g(the)h
-(Document')-5 b(s)23 b(o)o(v)o(erall)h(subject)g(\(or)h(to)g(related)g
-(matters\))f(and)h(contains)396 1715 y(nothing)f(that)g(could)g(f)o
-(all)h(directly)f(within)g(that)g(o)o(v)o(erall)g(subject.)g(\(F)o(or)h
-(e)o(xample,)f(if)g(the)396 1844 y(Document)g(is)h(in)f(part)h(a)g(te)o
-(xtbook)e(of)i(mathematics,)e(a)i(Secondary)h(Section)f(may)f(not)396
-1974 y(e)o(xplain)g(an)o(y)g(mathematics.\))g(The)h(relationship)e
-(could)h(be)h(a)g(matter)g(of)g(historical)396 2103 y(connection)f
-(with)g(the)h(subject)f(or)h(with)f(related)h(matters,)f(or)h(of)g(le)o
-(gal,)e(commercial,)396 2233 y(philosophical,)g(ethical)h(or)h
-(political)f(position)f(re)o(garding)h(them.)396 2412
-y(The)h("In)l(v)n(ariant)f(Sections")g(are)i(certain)f(Secondary)g
-(Sections)f(whose)h(titles)f(are)h(designated,)396 2542
-y(as)g(being)f(those)h(of)g(In)l(v)n(ariant)f(Sections,)g(in)g(the)h
-(notice)g(that)f(says)g(that)h(the)f(Document)g(is)396
-2671 y(released)i(under)e(this)g(License.)396 2850 y(The)h("Co)o(v)o
-(er)f(T)-7 b(e)o(xts")24 b(are)h(certain)g(short)f(passages)h(of)g(te)o
-(xt)f(that)g(are)h(listed,)f(as)h(Front-Co)o(v)o(er)396
-2980 y(T)-7 b(e)o(xts)24 b(or)h(Back-Co)o(v)o(er)g(T)-7
-b(e)o(xts,)24 b(in)g(the)h(notice)f(that)h(says)f(that)h(the)f
-(Document)g(is)h(released)396 3109 y(under)g(this)f(License.)396
-3289 y(A)h("T)m(ransparent")f(cop)o(y)g(of)h(the)g(Document)f(means)g
-(a)h(machine-readable)g(cop)o(y)-6 b(,)396 3418 y(represented)25
-b(in)g(a)g(format)f(whose)h(speci\002cation)f(is)h(a)n(v)n(ailable)f
-(to)g(the)h(general)g(public,)f(whose)396 3548 y(contents)g(can)h(be)g
-(vie)n(wed)f(and)h(edited)g(directly)f(and)h(straightforw)o(ardly)e
-(with)h(generic)h(te)o(xt)396 3677 y(editors)f(or)h(\(for)g(images)g
-(composed)f(of)g(pix)o(els\))g(generic)h(paint)f(programs)g(or)h(\(for)
-h(dra)o(wings\))396 3807 y(some)e(widely)h(a)n(v)n(ailable)f(dra)o
-(wing)g(editor)l(,)g(and)h(that)f(is)g(suitable)g(for)h(input)f(to)g
-(te)o(xt)396 3936 y(formatters)h(or)g(for)g(automatic)e(translation)h
-(to)g(a)h(v)n(ariety)g(of)f(formats)h(suitable)f(for)h(input)e(to)396
-4066 y(te)o(xt)h(formatters.)g(A)h(cop)o(y)g(made)g(in)f(an)h
-(otherwise)f(T)m(ransparent)g(\002le)i(format)e(whose)h(markup)396
-4195 y(has)g(been)g(designed)f(to)g(thw)o(art)h(or)g(discourage)f
-(subsequent)g(modi\002cation)g(by)g(readers)i(is)e(not)396
-4325 y(T)m(ransparent.)g(A)h(cop)o(y)g(that)f(is)h(not)f("T)m
-(ransparent")f(is)i(called)f("Opaque".)396 4504 y(Examples)g(of)h
-(suitable)f(formats)g(for)h(T)m(ransparent)f(copies)h(include)f(plain)g
-(ASCII)i(without)396 4634 y(markup,)e(T)-7 b(e)o(xinfo)24
-b(input)g(format,)g(LaT)-7 b(eX)26 b(input)d(format,)i(SGML)f(or)h(XML)
-f(using)g(a)396 4763 y(publicly)g(a)n(v)n(ailable)g(DTD,)g(and)h
-(standard-conforming)f(simple)f(HTML)h(designed)g(for)396
-4893 y(human)g(modi\002cation.)g(Opaque)h(formats)f(include)g
-(PostScript,)h(PDF)-8 b(,)25 b(proprietary)g(formats)396
-5022 y(that)f(can)h(be)f(read)h(and)f(edited)g(only)g(by)g(proprietary)
-g(w)o(ord)g(processors,)g(SGML)g(or)g(XML)g(for)396 5152
-y(which)h(the)f(DTD)h(and/or)f(processing)g(tools)g(are)i(not)e
-(generally)g(a)n(v)n(ailable,)g(and)h(the)396 5281 y(machine-generated)
-g(HTML)f(produced)h(by)f(some)h(w)o(ord)f(processors)h(for)g(output)e
-(purposes)p Black 3645 5692 a Fi(40)p Black eop
-%%Page: 41 50
-41 49 bop Black 0 TeXcolorgray Black 1850 67 a Fi(Appendix)24
-b(A.)h(GNU)g(F)-5 b(r)l(ee)25 b(Documentation)e(License)p
-Black 396 579 a Fm(only)-6 b(.)396 758 y(The)25 b("T)m(itle)e(P)o(age")
-i(means,)f(for)i(a)f(printed)f(book,)g(the)h(title)e(page)i(itself,)f
-(plus)g(such)h(follo)n(wing)396 888 y(pages)g(as)g(are)g(needed)h(to)e
-(hold,)g(le)o(gibly)-6 b(,)22 b(the)j(material)f(this)g(License)h
-(requires)g(to)f(appear)i(in)396 1017 y(the)f(title)f(page.)h(F)o(or)g
-(w)o(orks)f(in)g(formats)h(which)f(do)h(not)f(ha)n(v)o(e)g(an)o(y)h
-(title)e(page)i(as)g(such,)g("T)m(itle)396 1147 y(P)o(age")g(means)f
-(the)h(te)o(xt)f(near)h(the)g(most)f(prominent)f(appearance)j(of)f(the)
-g(w)o(ork')-5 b(s)24 b(title,)396 1276 y(preceding)h(the)g(be)o
-(ginning)e(of)h(the)h(body)f(of)h(the)g(te)o(xt.)-2 1779
-y Fo(2.)47 b(VERB)-5 b(A)-15 b(TIM)48 b(COPYING)396 1994
-y Fm(Y)-11 b(ou)25 b(may)f(cop)o(y)h(and)g(distrib)n(ute)e(the)i
-(Document)e(in)i(an)o(y)f(medium,)g(either)g(commercially)g(or)396
-2124 y(noncommercially)-6 b(,)23 b(pro)o(vided)g(that)i(this)f
-(License,)g(the)h(cop)o(yright)f(notices,)g(and)h(the)f(license)396
-2253 y(notice)h(saying)f(this)g(License)g(applies)g(to)h(the)f
-(Document)g(are)i(reproduced)f(in)f(all)h(copies,)f(and)396
-2383 y(that)h(you)f(add)h(no)f(other)h(conditions)e(whatsoe)n(v)o(er)h
-(to)g(those)g(of)h(this)f(License.)h(Y)-11 b(ou)24 b(may)h(not)396
-2512 y(use)g(technical)g(measures)f(to)h(obstruct)e(or)i(control)f(the)
-h(reading)g(or)g(further)g(cop)o(ying)f(of)h(the)396
-2642 y(copies)g(you)f(mak)o(e)h(or)g(distrib)n(ute.)e(Ho)n(we)n(v)o(er)
-l(,)g(you)i(may)f(accept)h(compensation)f(in)g(e)o(xchange)396
-2771 y(for)h(copies.)g(If)g(you)f(distrib)n(ute)g(a)h(lar)n(ge)g
-(enough)f(number)g(of)h(copies)g(you)f(must)g(also)g(follo)n(w)396
-2901 y(the)h(conditions)e(in)h(section)h(3.)396 3080
-y(Y)-11 b(ou)25 b(may)f(also)h(lend)f(copies,)g(under)h(the)g(same)f
-(conditions)g(stated)g(abo)o(v)o(e,)g(and)g(you)h(may)396
-3210 y(publicly)f(display)f(copies.)-2 3712 y Fo(3.)47
-b(COPYING)h(IN)g(Q)n(U)-9 b(ANTITY)396 3928 y Fm(If)26
-b(you)e(publish)f(printed)h(copies)h(of)g(the)f(Document)g(numbering)g
-(more)g(than)h(100,)f(and)h(the)396 4057 y(Document')-5
-b(s)24 b(license)g(notice)h(requires)f(Co)o(v)o(er)h(T)-7
-b(e)o(xts,)24 b(you)g(must)g(enclose)g(the)h(copies)f(in)396
-4187 y(co)o(v)o(ers)g(that)h(carry)-6 b(,)25 b(clearly)g(and)f(le)o
-(gibly)-6 b(,)23 b(all)h(these)h(Co)o(v)o(er)f(T)-7 b(e)o(xts:)24
-b(Front-Co)o(v)o(er)g(T)-7 b(e)o(xts)24 b(on)396 4316
-y(the)h(front)f(co)o(v)o(er)l(,)h(and)f(Back-Co)o(v)o(er)i(T)-7
-b(e)o(xts)23 b(on)i(the)g(back)g(co)o(v)o(er)-5 b(.)23
-b(Both)i(co)o(v)o(ers)f(must)g(also)396 4446 y(clearly)h(and)g(le)o
-(gibly)e(identify)h(you)g(as)h(the)g(publisher)f(of)h(these)f(copies.)h
-(The)f(front)h(co)o(v)o(er)396 4575 y(must)f(present)h(the)f(full)g
-(title)g(with)g(all)h(w)o(ords)f(of)h(the)g(title)f(equally)g
-(prominent)g(and)g(visible.)396 4705 y(Y)-11 b(ou)24
-b(may)f(add)h(other)g(material)f(on)h(the)f(co)o(v)o(ers)g(in)h
-(addition.)e(Cop)o(ying)h(with)g(changes)h(limited)396
-4834 y(to)h(the)f(co)o(v)o(ers,)g(as)h(long)f(as)h(the)o(y)f(preserv)o
-(e)h(the)f(title)g(of)h(the)g(Document)f(and)h(satisfy)f(these)396
-4964 y(conditions,)f(can)i(be)g(treated)g(as)g(v)o(erbatim)f(cop)o
-(ying)g(in)g(other)h(respects.)396 5143 y(If)g(the)f(required)g(te)o
-(xts)g(for)g(either)g(co)o(v)o(er)g(are)h(too)f(v)n(oluminous)e(to)i
-(\002t)g(le)o(gibly)-6 b(,)22 b(you)i(should)f(put)396
-5273 y(the)i(\002rst)g(ones)f(listed)g(\(as)h(man)o(y)f(as)h(\002t)g
-(reasonably\))g(on)f(the)h(actual)g(co)o(v)o(er)l(,)f(and)g(continue)g
-(the)p Black 3645 5692 a Fi(41)p Black eop
-%%Page: 42 51
-42 50 bop Black 0 TeXcolorgray Black 1850 67 a Fi(Appendix)24
-b(A.)h(GNU)g(F)-5 b(r)l(ee)25 b(Documentation)e(License)p
-Black 396 579 a Fm(rest)i(onto)f(adjacent)h(pages.)396
-758 y(If)h(you)e(publish)f(or)i(distrib)n(ute)e(Opaque)i(copies)g(of)f
-(the)h(Document)f(numbering)g(more)g(than)396 888 y(100,)h(you)f(must)g
-(either)g(include)g(a)i(machine-readable)f(T)m(ransparent)f(cop)o(y)g
-(along)h(with)f(each)396 1017 y(Opaque)h(cop)o(y)-6 b(,)24
-b(or)h(state)f(in)h(or)g(with)f(each)h(Opaque)g(cop)o(y)g(a)g
-(publicly-accessible)396 1147 y(computer)n(-netw)o(ork)f(location)g
-(containing)g(a)h(complete)f(T)m(ransparent)g(cop)o(y)h(of)g(the)396
-1276 y(Document,)f(free)i(of)f(added)g(material,)f(which)g(the)h
-(general)g(netw)o(ork-using)e(public)h(has)396 1406 y(access)i(to)e(do)
-n(wnload)f(anon)o(ymously)g(at)h(no)h(char)n(ge)h(using)d
-(public-standard)h(netw)o(ork)396 1535 y(protocols.)f(If)i(you)e(use)h
-(the)g(latter)g(option,)e(you)i(must)f(tak)o(e)h(reasonably)g(prudent)f
-(steps,)h(when)396 1665 y(you)h(be)o(gin)e(distrib)n(ution)g(of)i
-(Opaque)f(copies)h(in)f(quantity)-6 b(,)23 b(to)i(ensure)g(that)f(this)
-g(T)m(ransparent)396 1794 y(cop)o(y)h(will)f(remain)g(thus)g
-(accessible)h(at)g(the)g(stated)f(location)g(until)f(at)i(least)g(one)g
-(year)g(after)396 1924 y(the)g(last)f(time)g(you)h(distrib)n(ute)e(an)i
-(Opaque)g(cop)o(y)f(\(directly)h(or)f(through)g(your)h(agents)f(or)396
-2053 y(retailers\))h(of)g(that)f(edition)g(to)h(the)f(public.)396
-2233 y(It)h(is)f(requested,)h(b)n(ut)f(not)g(required,)h(that)g(you)f
-(contact)h(the)f(authors)g(of)h(the)g(Document)f(well)396
-2362 y(before)i(redistrib)n(uting)c(an)o(y)j(lar)n(ge)g(number)f(of)h
-(copies,)f(to)h(gi)n(v)o(e)e(them)i(a)g(chance)g(to)g(pro)o(vide)396
-2492 y(you)g(with)f(an)h(updated)f(v)o(ersion)g(of)h(the)f(Document.)-2
-2994 y Fo(4.)47 b(MODIFICA)-15 b(TIONS)396 3210 y Fm(Y)k(ou)25
-b(may)f(cop)o(y)h(and)g(distrib)n(ute)e(a)i(Modi\002ed)f(V)-11
-b(ersion)25 b(of)f(the)h(Document)f(under)h(the)396 3339
-y(conditions)e(of)i(sections)f(2)h(and)g(3)f(abo)o(v)o(e,)g(pro)o
-(vided)g(that)g(you)g(release)i(the)e(Modi\002ed)396
-3469 y(V)-11 b(ersion)25 b(under)f(precisely)h(this)f(License,)g(with)g
-(the)h(Modi\002ed)f(V)-11 b(ersion)25 b(\002lling)f(the)g(role)h(of)396
-3598 y(the)g(Document,)f(thus)g(licensing)f(distrib)n(ution)g(and)i
-(modi\002cation)e(of)i(the)g(Modi\002ed)f(V)-11 b(ersion)396
-3728 y(to)25 b(whoe)n(v)o(er)f(possesses)f(a)j(cop)o(y)e(of)h(it.)f(In)
-h(addition,)e(you)i(must)f(do)g(these)h(things)e(in)i(the)396
-3857 y(Modi\002ed)f(V)-11 b(ersion:)p Black 454 4136
-a(A.)p Black 25 w(Use)24 b(in)h(the)f(T)m(itle)g(P)o(age)h(\(and)g(on)g
-(the)f(co)o(v)o(ers,)g(if)h(an)o(y\))f(a)i(title)d(distinct)h(from)g
-(that)h(of)g(the)576 4266 y(Document,)e(and)i(from)g(those)f(of)h(pre)n
-(vious)e(v)o(ersions)h(\(which)g(should,)g(if)h(there)g(were)576
-4395 y(an)o(y)-6 b(,)23 b(be)i(listed)f(in)g(the)h(History)f(section)g
-(of)h(the)g(Document\).)f(Y)-11 b(ou)24 b(may)h(use)f(the)h(same)576
-4525 y(title)f(as)g(a)i(pre)n(vious)d(v)o(ersion)h(if)h(the)f(original)
-g(publisher)g(of)h(that)f(v)o(ersion)g(gi)n(v)o(es)576
-4654 y(permission.)p Black 459 4834 a(B.)p Black 26 w(List)g(on)g(the)h
-(T)m(itle)e(P)o(age,)i(as)g(authors,)f(one)h(or)g(more)g(persons)f(or)h
-(entities)e(responsible)576 4963 y(for)i(authorship)e(of)i(the)g
-(modi\002cations)e(in)i(the)f(Modi\002ed)g(V)-11 b(ersion,)25
-b(together)f(with)g(at)576 5093 y(least)g(\002)n(v)o(e)g(of)h(the)g
-(principal)f(authors)g(of)h(the)g(Document)f(\(all)g(of)h(its)f
-(principal)h(authors,)576 5222 y(if)f(it)h(has)f(less)h(than)f(\002)n
-(v)o(e\).)p Black 3645 5692 a Fi(42)p Black eop
-%%Page: 43 52
-43 51 bop Black 0 TeXcolorgray Black 1850 67 a Fi(Appendix)24
-b(A.)h(GNU)g(F)-5 b(r)l(ee)25 b(Documentation)e(License)p
-Black Black 459 579 a Fm(C.)p Black 26 w(State)h(on)f(the)h(T)m(itle)e
-(page)i(the)g(name)g(of)g(the)f(publisher)g(of)h(the)f(Modi\002ed)h(V)
--11 b(ersion,)23 b(as)h(the)576 708 y(publisher)-5 b(.)p
-Black 454 888 a(D.)p Black 25 w(Preserv)o(e)25 b(all)g(the)f(cop)o
-(yright)g(notices)g(of)h(the)g(Document.)p Black 465
-1067 a(E.)p Black 25 w(Add)f(an)h(appropriate)g(cop)o(yright)e(notice)i
-(for)g(your)f(modi\002cations)g(adjacent)h(to)f(the)576
-1197 y(other)g(cop)o(yright)g(notices.)p Black 478 1376
-a(F)-8 b(.)p Black 26 w(Include,)24 b(immediately)f(after)j(the)e(cop)o
-(yright)g(notices,)g(a)h(license)g(notice)f(gi)n(ving)f(the)576
-1505 y(public)h(permission)f(to)h(use)h(the)f(Modi\002ed)h(V)-11
-b(ersion)24 b(under)h(the)f(terms)h(of)g(this)e(License,)576
-1635 y(in)h(the)h(form)f(sho)n(wn)g(in)g(the)h(Addendum)e(belo)n(w)-6
-b(.)p Black 454 1814 a(G.)p Black 25 w(Preserv)o(e)25
-b(in)f(that)h(license)f(notice)h(the)f(full)h(lists)e(of)i(In)l(v)n
-(ariant)f(Sections)h(and)f(required)576 1944 y(Co)o(v)o(er)g(T)-7
-b(e)o(xts)24 b(gi)n(v)o(en)f(in)i(the)f(Document')-5
-b(s)24 b(license)g(notice.)p Black 454 2123 a(H.)p Black
-25 w(Include)g(an)h(unaltered)g(cop)o(y)f(of)h(this)f(License.)p
-Black 493 2302 a(I.)p Black 25 w(Preserv)o(e)h(the)f(section)g
-(entitled)f("History",)g(and)h(its)g(title,)f(and)i(add)f(to)g(it)g(an)
-h(item)f(stating)576 2432 y(at)g(least)h(the)g(title,)e(year)l(,)j(ne)n
-(w)e(authors,)g(and)h(publisher)f(of)h(the)f(Modi\002ed)g(V)-11
-b(ersion)25 b(as)576 2561 y(gi)n(v)o(en)e(on)h(the)h(T)m(itle)f(P)o
-(age.)h(If)g(there)g(is)f(no)h(section)f(entitled)g("History")f(in)h
-(the)576 2691 y(Document,)f(create)j(one)f(stating)f(the)g(title,)g
-(year)l(,)h(authors,)f(and)h(publisher)f(of)h(the)576
-2821 y(Document)f(as)g(gi)n(v)o(en)g(on)g(its)g(T)m(itle)g(P)o(age,)h
-(then)f(add)h(an)g(item)f(describing)g(the)h(Modi\002ed)576
-2950 y(V)-11 b(ersion)24 b(as)h(stated)f(in)g(the)h(pre)n(vious)f
-(sentence.)p Black 487 3129 a(J.)p Black 25 w(Preserv)o(e)h(the)g(netw)
-o(ork)f(location,)g(if)h(an)o(y)-6 b(,)23 b(gi)n(v)o(en)h(in)g(the)h
-(Document)f(for)h(public)f(access)576 3259 y(to)g(a)h(T)m(ransparent)f
-(cop)o(y)h(of)g(the)g(Document,)e(and)i(lik)o(e)n(wise)f(the)g(netw)o
-(ork)h(locations)576 3388 y(gi)n(v)o(en)e(in)h(the)h(Document)f(for)h
-(pre)n(vious)e(v)o(ersions)h(it)g(w)o(as)h(based)g(on.)f(These)h(may)g
-(be)576 3518 y(placed)g(in)f(the)h("History")e(section.)h(Y)-11
-b(ou)24 b(may)h(omit)e(a)i(netw)o(ork)g(location)f(for)h(a)g(w)o(ork)
-576 3647 y(that)f(w)o(as)h(published)e(at)i(least)f(four)h(years)g
-(before)h(the)e(Document)g(itself,)g(or)h(if)g(the)576
-3777 y(original)e(publisher)h(of)h(the)g(v)o(ersion)e(it)i(refers)g(to)
-g(gi)n(v)o(es)e(permission.)p Black 454 3956 a(K.)p Black
-25 w(In)h(an)o(y)h(section)f(entitled)g("Ackno)n(wledgements")e(or)j
-("Dedications",)e(preserv)o(e)h(the)576 4086 y(section')-5
-b(s)23 b(title,)h(and)h(preserv)o(e)g(in)f(the)h(section)f(all)g(the)h
-(substance)f(and)h(tone)f(of)h(each)h(of)576 4215 y(the)e(contrib)n
-(utor)g(ackno)n(wledgements)f(and/or)h(dedications)g(gi)n(v)o(en)f
-(therein.)p Black 465 4395 a(L.)p Black 25 w(Preserv)o(e)i(all)g(the)f
-(In)l(v)n(ariant)g(Sections)h(of)g(the)f(Document,)g(unaltered)h(in)f
-(their)h(te)o(xt)f(and)576 4524 y(in)g(their)h(titles.)e(Section)i
-(numbers)f(or)h(the)f(equi)n(v)n(alent)f(are)j(not)e(considered)h(part)
-f(of)h(the)576 4654 y(section)f(titles.)p Black 437 4833
-a(M.)p Black 25 w(Delete)h(an)o(y)f(section)g(entitled)g
-("Endorsements".)e(Such)j(a)h(section)e(may)g(not)g(be)576
-4962 y(included)g(in)g(the)h(Modi\002ed)f(V)-11 b(ersion.)p
-Black 454 5142 a(N.)p Black 25 w(Do)24 b(not)g(retitle)h(an)o(y)f(e)o
-(xisting)f(section)h(as)h("Endorsements")e(or)i(to)f(con\003ict)h(in)f
-(title)g(with)576 5271 y(an)o(y)g(In)l(v)n(ariant)g(Section.)p
-Black 3645 5692 a Fi(43)p Black eop
-%%Page: 44 53
-44 52 bop Black 0 TeXcolorgray Black 1850 67 a Fi(Appendix)24
-b(A.)h(GNU)g(F)-5 b(r)l(ee)25 b(Documentation)e(License)p
-Black 396 579 a Fm(If)j(the)e(Modi\002ed)g(V)-11 b(ersion)25
-b(includes)f(ne)n(w)g(front-matter)g(sections)g(or)h(appendices)g(that)
-396 708 y(qualify)f(as)h(Secondary)h(Sections)e(and)h(contain)f(no)h
-(material)f(copied)h(from)f(the)h(Document,)396 838 y(you)g(may)f(at)h
-(your)f(option)g(designate)g(some)g(or)h(all)g(of)g(these)f(sections)g
-(as)h(in)l(v)n(ariant.)f(T)-8 b(o)24 b(do)396 967 y(this,)g(add)h
-(their)f(titles)g(to)g(the)h(list)f(of)h(In)l(v)n(ariant)f(Sections)g
-(in)h(the)f(Modi\002ed)h(V)-11 b(ersion')-5 b(s)23 b(license)396
-1097 y(notice.)i(These)f(titles)g(must)g(be)h(distinct)e(from)i(an)o(y)
-f(other)g(section)h(titles.)396 1276 y(Y)-11 b(ou)25
-b(may)f(add)h(a)g(section)f(entitled)g("Endorsements",)f(pro)o(vided)g
-(it)i(contains)e(nothing)h(b)n(ut)396 1406 y(endorsements)g(of)h(your)f
-(Modi\002ed)h(V)-11 b(ersion)24 b(by)g(v)n(arious)g(parties--for)h(e)o
-(xample,)f(statements)396 1535 y(of)h(peer)h(re)n(vie)n(w)e(or)g(that)h
-(the)f(te)o(xt)g(has)h(been)g(appro)o(v)o(ed)f(by)g(an)h(or)n
-(ganization)f(as)h(the)396 1665 y(authoritati)n(v)o(e)e(de\002nition)h
-(of)h(a)g(standard.)396 1844 y(Y)-11 b(ou)25 b(may)f(add)h(a)g(passage)
-g(of)g(up)f(to)h(\002)n(v)o(e)f(w)o(ords)g(as)h(a)h(Front-Co)o(v)o(er)e
-(T)-7 b(e)o(xt,)24 b(and)h(a)g(passage)g(of)396 1974
-y(up)g(to)f(25)h(w)o(ords)f(as)h(a)g(Back-Co)o(v)o(er)g(T)-7
-b(e)o(xt,)24 b(to)h(the)g(end)f(of)h(the)g(list)f(of)g(Co)o(v)o(er)h(T)
--7 b(e)o(xts)24 b(in)g(the)396 2103 y(Modi\002ed)g(V)-11
-b(ersion.)25 b(Only)f(one)h(passage)f(of)h(Front-Co)o(v)o(er)g(T)-7
-b(e)o(xt)24 b(and)h(one)f(of)h(Back-Co)o(v)o(er)396 2233
-y(T)-7 b(e)o(xt)24 b(may)h(be)g(added)g(by)f(\(or)h(through)f
-(arrangements)h(made)f(by\))h(an)o(y)f(one)h(entity)-6
-b(.)23 b(If)j(the)396 2362 y(Document)e(already)h(includes)f(a)h(co)o
-(v)o(er)g(te)o(xt)e(for)j(the)e(same)h(co)o(v)o(er)l(,)f(pre)n(viously)
-f(added)i(by)396 2492 y(you)g(or)g(by)f(arrangement)h(made)g(by)f(the)h
-(same)f(entity)g(you)h(are)g(acting)g(on)f(behalf)h(of,)g(you)396
-2621 y(may)g(not)f(add)h(another;)f(b)n(ut)g(you)h(may)f(replace)i(the)
-e(old)h(one,)f(on)h(e)o(xplicit)e(permission)g(from)396
-2751 y(the)i(pre)n(vious)e(publisher)h(that)g(added)h(the)g(old)f(one.)
-396 2930 y(The)h(author\(s\))g(and)f(publisher\(s\))g(of)h(the)g
-(Document)f(do)g(not)g(by)h(this)f(License)h(gi)n(v)o(e)396
-3060 y(permission)e(to)i(use)g(their)f(names)h(for)g(publicity)e(for)i
-(or)g(to)f(assert)h(or)g(imply)e(endorsement)h(of)396
-3189 y(an)o(y)h(Modi\002ed)f(V)-11 b(ersion.)-2 3691
-y Fo(5.)47 b(COMBINING)i(DOCUMENTS)396 3907 y Fm(Y)-11
-b(ou)25 b(may)f(combine)g(the)h(Document)f(with)g(other)h(documents)e
-(released)i(under)g(this)f(License,)396 4037 y(under)h(the)g(terms)f
-(de\002ned)h(in)g(section)f(4)g(abo)o(v)o(e)g(for)h(modi\002ed)f(v)o
-(ersions,)g(pro)o(vided)f(that)i(you)396 4166 y(include)f(in)h(the)g
-(combination)e(all)h(of)h(the)g(In)l(v)n(ariant)f(Sections)g(of)h(all)g
-(of)g(the)f(original)396 4296 y(documents,)g(unmodi\002ed,)f(and)i
-(list)f(them)g(all)h(as)g(In)l(v)n(ariant)f(Sections)g(of)h(your)g
-(combined)396 4425 y(w)o(ork)g(in)f(its)g(license)h(notice.)396
-4604 y(The)g(combined)f(w)o(ork)h(need)g(only)f(contain)g(one)h(cop)o
-(y)f(of)h(this)f(License,)h(and)f(multiple)396 4734 y(identical)g(In)l
-(v)n(ariant)g(Sections)g(may)h(be)f(replaced)i(with)d(a)i(single)f(cop)
-o(y)-6 b(.)24 b(If)h(there)g(are)g(multiple)396 4863
-y(In)l(v)n(ariant)f(Sections)h(with)f(the)h(same)f(name)h(b)n(ut)f(dif)
-n(ferent)h(contents,)e(mak)o(e)i(the)g(title)f(of)h(each)396
-4993 y(such)g(section)f(unique)g(by)h(adding)f(at)g(the)h(end)g(of)g
-(it,)f(in)g(parentheses,)h(the)g(name)f(of)h(the)396
-5123 y(original)f(author)h(or)f(publisher)g(of)h(that)f(section)h(if)f
-(kno)n(wn,)g(or)h(else)g(a)g(unique)f(number)-5 b(.)23
-b(Mak)o(e)p Black 3645 5692 a Fi(44)p Black eop
-%%Page: 45 54
-45 53 bop Black 0 TeXcolorgray Black 1850 67 a Fi(Appendix)24
-b(A.)h(GNU)g(F)-5 b(r)l(ee)25 b(Documentation)e(License)p
-Black 396 579 a Fm(the)i(same)g(adjustment)e(to)h(the)h(section)f
-(titles)g(in)g(the)h(list)e(of)i(In)l(v)n(ariant)f(Sections)h(in)f(the)
-396 708 y(license)h(notice)f(of)h(the)g(combined)f(w)o(ork.)396
-888 y(In)h(the)g(combination,)e(you)h(must)g(combine)g(an)o(y)g
-(sections)g(entitled)g("History")f(in)h(the)h(v)n(arious)396
-1017 y(original)f(documents,)g(forming)f(one)i(section)f(entitled)g
-("History";)f(lik)o(e)n(wise)g(combine)h(an)o(y)396 1147
-y(sections)g(entitled)g("Ackno)n(wledgements",)e(and)j(an)o(y)f
-(sections)g(entitled)g("Dedications".)396 1276 y(Y)-11
-b(ou)25 b(must)e(delete)i(all)g(sections)f(entitled)f("Endorsements.")
--2 1779 y Fo(6.)47 b(COLLECTIONS)i(OF)f(DOCUMENTS)396
-1994 y Fm(Y)-11 b(ou)25 b(may)f(mak)o(e)h(a)g(collection)f(consisting)f
-(of)i(the)f(Document)g(and)h(other)g(documents)396 2124
-y(released)h(under)e(this)g(License,)h(and)g(replace)g(the)g(indi)n
-(vidual)d(copies)j(of)g(this)e(License)i(in)g(the)396
-2253 y(v)n(arious)f(documents)g(with)g(a)h(single)f(cop)o(y)g(that)h
-(is)f(included)g(in)g(the)h(collection,)f(pro)o(vided)396
-2383 y(that)h(you)f(follo)n(w)f(the)i(rules)g(of)g(this)e(License)i
-(for)g(v)o(erbatim)f(cop)o(ying)g(of)h(each)g(of)g(the)396
-2512 y(documents)f(in)g(all)h(other)f(respects.)396 2692
-y(Y)-11 b(ou)25 b(may)f(e)o(xtract)h(a)g(single)f(document)g(from)g
-(such)h(a)g(collection,)f(and)g(distrib)n(ute)g(it)396
-2821 y(indi)n(vidually)e(under)j(this)f(License,)h(pro)o(vided)e(you)h
-(insert)h(a)g(cop)o(y)f(of)h(this)f(License)h(into)f(the)396
-2951 y(e)o(xtracted)h(document,)f(and)g(follo)n(w)g(this)g(License)g
-(in)h(all)f(other)h(respects)g(re)o(garding)f(v)o(erbatim)396
-3080 y(cop)o(ying)g(of)h(that)f(document.)-2 3583 y Fo(7.)47
-b(A)-9 b(GGREGA)-15 b(TION)49 b(WITH)e(INDEPENDENT)-2
-3806 y(W)m(ORKS)396 4022 y Fm(A)25 b(compilation)e(of)i(the)g(Document)
-f(or)g(its)g(deri)n(v)n(ati)n(v)o(es)f(with)h(other)g(separate)i(and)
-396 4151 y(independent)e(documents)g(or)h(w)o(orks,)f(in)g(or)h(on)g(a)
-g(v)n(olume)f(of)h(a)g(storage)f(or)h(distrib)n(ution)396
-4281 y(medium,)f(does)g(not)g(as)h(a)g(whole)g(count)f(as)h(a)g
-(Modi\002ed)f(V)-11 b(ersion)25 b(of)g(the)f(Document,)396
-4410 y(pro)o(vided)g(no)g(compilation)f(cop)o(yright)h(is)g(claimed)h
-(for)g(the)f(compilation.)f(Such)i(a)396 4540 y(compilation)e(is)i
-(called)f(an)h("aggre)o(gate",)f(and)g(this)g(License)h(does)g(not)f
-(apply)g(to)g(the)h(other)396 4669 y(self-contained)g(w)o(orks)f(thus)g
-(compiled)g(with)g(the)g(Document,)g(on)h(account)f(of)h(their)g(being)
-396 4799 y(thus)f(compiled,)g(if)h(the)o(y)f(are)h(not)f(themselv)o(es)
-g(deri)n(v)n(ati)n(v)o(e)e(w)o(orks)i(of)h(the)g(Document.)396
-4978 y(If)h(the)e(Co)o(v)o(er)h(T)-7 b(e)o(xt)24 b(requirement)g(of)h
-(section)f(3)h(is)f(applicable)g(to)h(these)f(copies)h(of)g(the)396
-5108 y(Document,)f(then)h(if)f(the)h(Document)f(is)g(less)h(than)f(one)
-h(quarter)g(of)g(the)f(entire)h(aggre)o(gate,)f(the)396
-5237 y(Document')-5 b(s)24 b(Co)o(v)o(er)g(T)-7 b(e)o(xts)24
-b(may)g(be)h(placed)g(on)g(co)o(v)o(ers)f(that)g(surround)g(only)g(the)
-h(Document)p Black 3645 5692 a Fi(45)p Black eop
-%%Page: 46 55
-46 54 bop Black 0 TeXcolorgray Black 1850 67 a Fi(Appendix)24
-b(A.)h(GNU)g(F)-5 b(r)l(ee)25 b(Documentation)e(License)p
-Black 396 579 a Fm(within)h(the)g(aggre)o(gate.)h(Otherwise)f(the)o(y)g
-(must)g(appear)h(on)f(co)o(v)o(ers)g(around)h(the)g(whole)396
-708 y(aggre)o(gate.)-2 1211 y Fo(8.)47 b(TRANSLA)-15
-b(TION)396 1426 y Fm(T)m(ranslation)23 b(is)i(considered)f(a)h(kind)f
-(of)h(modi\002cation,)f(so)g(you)h(may)f(distrib)n(ute)f(translations)
-396 1556 y(of)i(the)g(Document)f(under)h(the)f(terms)g(of)h(section)f
-(4.)h(Replacing)g(In)l(v)n(ariant)f(Sections)h(with)396
-1685 y(translations)f(requires)g(special)h(permission)e(from)i(their)f
-(cop)o(yright)g(holders,)g(b)n(ut)g(you)h(may)396 1815
-y(include)f(translations)g(of)h(some)f(or)h(all)f(In)l(v)n(ariant)g
-(Sections)h(in)f(addition)g(to)g(the)h(original)396 1944
-y(v)o(ersions)f(of)h(these)f(In)l(v)n(ariant)g(Sections.)h(Y)-11
-b(ou)24 b(may)h(include)f(a)h(translation)f(of)h(this)e(License)396
-2074 y(pro)o(vided)h(that)g(you)h(also)f(include)g(the)h(original)f
-(English)f(v)o(ersion)h(of)h(this)e(License.)i(In)g(case)396
-2203 y(of)g(a)g(disagreement)f(between)h(the)g(translation)e(and)i(the)
-g(original)f(English)f(v)o(ersion)h(of)h(this)396 2333
-y(License,)g(the)g(original)e(English)h(v)o(ersion)f(will)h(pre)n(v)n
-(ail.)-2 2835 y Fo(9.)47 b(TERMINA)-15 b(TION)396 3051
-y Fm(Y)k(ou)25 b(may)f(not)g(cop)o(y)-6 b(,)24 b(modify)-6
-b(,)24 b(sublicense,)f(or)i(distrib)n(ute)f(the)g(Document)g(e)o(xcept)
-h(as)396 3180 y(e)o(xpressly)f(pro)o(vided)g(for)h(under)f(this)g
-(License.)h(An)o(y)f(other)g(attempt)g(to)h(cop)o(y)-6
-b(,)24 b(modify)-6 b(,)396 3310 y(sublicense)24 b(or)h(distrib)n(ute)e
-(the)h(Document)g(is)g(v)n(oid,)g(and)h(will)f(automatically)f
-(terminate)h(your)396 3439 y(rights)g(under)h(this)f(License.)g(Ho)n
-(we)n(v)o(er)l(,)g(parties)g(who)h(ha)n(v)o(e)f(recei)n(v)o(ed)h
-(copies,)f(or)h(rights,)396 3569 y(from)g(you)f(under)h(this)f(License)
-h(will)e(not)i(ha)n(v)o(e)f(their)h(licenses)f(terminated)g(so)h(long)f
-(as)g(such)396 3698 y(parties)h(remain)f(in)h(full)f(compliance.)-2
-4201 y Fo(10.)47 b(FUTURE)i(REVISIONS)e(OF)h(THIS)g(LICENSE)396
-4416 y Fm(The)25 b(Free)h(Softw)o(are)g(F)o(oundation)d(may)h(publish)g
-(ne)n(w)-6 b(,)23 b(re)n(vised)i(v)o(ersions)e(of)i(the)g(GNU)f(Free)
-396 4546 y(Documentation)f(License)i(from)g(time)f(to)g(time.)g(Such)h
-(ne)n(w)g(v)o(ersions)e(will)h(be)h(similar)f(in)396
-4675 y(spirit)g(to)g(the)h(present)g(v)o(ersion,)e(b)n(ut)i(may)f(dif)n
-(fer)h(in)f(detail)g(to)h(address)f(ne)n(w)h(problems)f(or)396
-4805 y(concerns.)h(See)h(http://www)-6 b(.gnu.or)n(g/cop)o(yleft/.)396
-4984 y(Each)25 b(v)o(ersion)f(of)h(the)g(License)f(is)h(gi)n(v)o(en)e
-(a)i(distinguishing)d(v)o(ersion)h(number)-5 b(.)24 b(If)h(the)396
-5114 y(Document)f(speci\002es)h(that)g(a)g(particular)f(numbered)h(v)o
-(ersion)e(of)i(this)f(License)h("or)f(an)o(y)h(later)396
-5243 y(v)o(ersion")f(applies)g(to)g(it,)g(you)h(ha)n(v)o(e)f(the)h
-(option)e(of)i(follo)n(wing)e(the)i(terms)f(and)h(conditions)p
-Black 3643 5692 a Fi(46)p Black eop
-%%Page: 47 56
-47 55 bop Black 0 TeXcolorgray Black 1850 67 a Fi(Appendix)24
-b(A.)h(GNU)g(F)-5 b(r)l(ee)25 b(Documentation)e(License)p
-Black 396 579 a Fm(either)h(of)h(that)e(speci\002ed)i(v)o(ersion)e(or)h
-(of)h(an)o(y)e(later)i(v)o(ersion)e(that)g(has)h(been)h(published)e
-(\(not)g(as)396 708 y(a)i(draft\))h(by)e(the)h(Free)h(Softw)o(are)f(F)o
-(oundation.)e(If)j(the)e(Document)g(does)h(not)f(specify)h(a)396
-838 y(v)o(ersion)f(number)g(of)h(this)f(License,)h(you)f(may)g(choose)h
-(an)o(y)f(v)o(ersion)g(e)n(v)o(er)g(published)g(\(not)g(as)396
-967 y(a)h(draft\))h(by)e(the)h(Free)h(Softw)o(are)f(F)o(oundation.)-2
-1470 y Fo(Ho)m(w)48 b(to)h(use)e(this)h(License)f(f)m(or)h(y)l(our)g
-(documents)396 1685 y Fm(T)-8 b(o)25 b(use)g(this)e(License)i(in)g(a)g
-(document)f(you)g(ha)n(v)o(e)g(written,)g(include)h(a)g(cop)o(y)f(of)h
-(the)g(License)396 1815 y(in)g(the)f(document)g(and)h(put)f(the)h
-(follo)n(wing)e(cop)o(yright)g(and)i(license)g(notices)f(just)g(after)h
-(the)396 1944 y(title)f(page:)496 2161 y Fa(Cop)o(yright)d(\(c\))h
-(YEAR)g(Y)m(OUR)f(N)m(AME.)h(Permission)f(is)h(granted)f(to)i(cop)o(y)
--6 b(,)22 b(distrib)n(ute)f(and/or)496 2277 y(modify)g(this)h(document)
-f(under)h(the)g(terms)g(of)g(the)g(GNU)f(Free)h(Documentation)e
-(License,)496 2394 y(V)-10 b(ersion)21 b(1.1)i(or)f(an)o(y)f(later)h(v)
-o(ersion)f(published)g(by)h(the)g(Free)g(Softw)o(are)f(F)o(oundation;)g
-(with)h(the)496 2510 y(In)l(v)n(ariant)f(Sections)g(being)h(LIST)g
-(THEIR)f(TITLES,)h(with)g(the)g(Front-Co)o(v)o(er)e(T)-6
-b(e)o(xts)21 b(being)g(LIST)-7 b(,)496 2627 y(and)22
-b(with)g(the)g(Back-Co)o(v)o(er)e(T)-6 b(e)o(xts)21 b(being)g(LIST)-7
-b(.)23 b(A)f(cop)o(y)g(of)g(the)g(license)f(is)h(included)g(in)g(the)
-496 2743 y(section)f(entitled)h("GNU)f(Free)h(Documentation)e
-(License".)396 3102 y Fm(If)26 b(you)e(ha)n(v)o(e)g(no)h(In)l(v)n
-(ariant)f(Sections,)g(write)h("with)f(no)g(In)l(v)n(ariant)g(Sections")
-h(instead)f(of)396 3232 y(saying)g(which)h(ones)f(are)i(in)l(v)n
-(ariant.)d(If)j(you)e(ha)n(v)o(e)g(no)h(Front-Co)o(v)o(er)f(T)-7
-b(e)o(xts,)24 b(write)h("no)396 3361 y(Front-Co)o(v)o(er)g(T)-7
-b(e)o(xts")23 b(instead)h(of)h("Front-Co)o(v)o(er)f(T)-7
-b(e)o(xts)24 b(being)g(LIST";)h(lik)o(e)n(wise)e(for)396
-3491 y(Back-Co)o(v)o(er)j(T)-7 b(e)o(xts.)396 3670 y(If)26
-b(your)e(document)g(contains)g(nontri)n(vial)f(e)o(xamples)g(of)i
-(program)g(code,)g(we)g(recommend)396 3799 y(releasing)g(these)f(e)o
-(xamples)g(in)h(parallel)f(under)h(your)g(choice)f(of)h(free)h(softw)o
-(are)f(license,)f(such)396 3929 y(as)h(the)g(GNU)g(General)g(Public)f
-(License,)h(to)f(permit)g(their)h(use)g(in)f(free)i(softw)o(are.)p
-Black 3641 5692 a Fi(47)p Black eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/doc/users_guide/users-guide.sgml b/doc/users_guide/users-guide.sgml
index 33843c3..7a22810 100644
--- a/doc/users_guide/users-guide.sgml
+++ b/doc/users_guide/users-guide.sgml
@@ -7,6 +7,24 @@
<!ENTITY gfdl SYSTEM "gfdl.sgml">
]>
<book>
+
+ <bookinfo>
+ <title>The User's Guide to Gutenprint - Complete Edition</title>
+ <date>April 7, 2002</date>
+ <pubdate>April 7, 2002</pubdate>
+ <author>
+ <firstname>Andy</firstname>
+ <surname>Stewart</surname>
+ </author>
+ <copyright>
+ <year>2002</year>
+ <holder>Andy Stewart</holder>
+ </copyright>
+ <legalnotice>
+ <para>The User's Guide to Gutenprint - Complete Edition,
+Copyright 2002, Andy Stewart.
+ </para>
+
&title;
&history;
&gimp;
diff --git a/doc/users_guide/util-edition.sgml b/doc/users_guide/util-edition.sgml
new file mode 100644
index 0000000..ed45d6c
--- /dev/null
+++ b/doc/users_guide/util-edition.sgml
@@ -0,0 +1,57 @@
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+<!ENTITY title SYSTEM "title.sgml">
+<!ENTITY history SYSTEM "history.sgml">
+<!ENTITY gimp SYSTEM "gimp.sgml">
+<!ENTITY cups SYSTEM "cups.sgml">
+<!ENTITY utils SYSTEM "utils.sgml">
+<!ENTITY gfdl SYSTEM "gfdl.sgml">
+]>
+<book>
+
+ <bookinfo>
+ <title>The User's Guide to the Gutenprint - UTIL Edition</title>
+ <date>April 7, 2002</date>
+ <pubdate>April 7, 2002</pubdate>
+ <author>
+ <firstname>Andy</firstname>
+ <surname>Stewart</surname>
+ </author>
+ <copyright>
+ <year>2002</year>
+ <holder>Andy Stewart</holder>
+ </copyright>
+ <legalnotice>
+ <para>The User's Guide to the Gutenprint - UTIL Edition, Copyright
+2002, Andy Stewart.
+ </para>
+
+&title;
+
+<chapter><title>UTIL Edition</title>
+
+ <caution><title>PLEASE NOTE</title>
+
+ <para>
+ This manual includes a subset of chapters from a more complete
+manual entitled <emphasis>The User's Guide to the Gutenprint Top
+Quality Printer Drivers</emphasis>. To obtain the complete manual, go
+to the <ulink url="http://gimp-print.sourceforge.net">Gutenprint
+Project</ulink> home page.
+ </para>
+ <para>
+ This version of the manual has been specifically packaged in this
+way in an attempt to better suit the needs of people interested only
+in utility programs packaged with the Gutenprint software.
+ </para>
+
+ </caution>
+
+</chapter>
+
+&history;
+&utils;
+&gfdl;
+</book>
+
+
+
diff --git a/doc/users_guide/utils.sgml b/doc/users_guide/utils.sgml
index e0fe75c..36f6a18 100644
--- a/doc/users_guide/utils.sgml
+++ b/doc/users_guide/utils.sgml
@@ -1,5 +1,5 @@
- <chapter><title>Gimp-Print Utilities</title>
+ <chapter><title>Gutenprint Utilities</title>
<sect1><title>escputil</title>
<para>
<emphasis>escputil</emphasis> is a command line utility which
@@ -21,7 +21,7 @@ assume the former.
<title>Caution</title>
<para>
The <emphasis>escputil</emphasis> utility was designed for use
-ONLY with Epson Stylus inkjet printers supported by the Gimp-Print
+ONLY with Epson Stylus inkjet printers supported by the Gutenprint
software. It is possible that damage MIGHT occur to your printer if
this utility is misused or if it is used with a printer other than an
Epson Stylus inkjet printer. It is the sole responsibility of the
@@ -95,7 +95,7 @@ will vary depending on the precise printer model.
printed? What does it mean? There are several possibilities,
depending on the specific error message. If the error message is
"Invalid argument" (see following example), the problem is that the
-kernel is not configured with the CONFIG_PRINTER_READBACK option enabled.
+2.4.x kernel is not configured with the CONFIG_PARPORT_1284 option enabled.
<programlisting>
<![ CDATA [
@@ -409,7 +409,7 @@ EPSON Stylus Photo 870;
<para>
For more detailed information about the command line switches
accepted by the <emphasis>escputil</emphasis> utility, please consult
-the man page which is supplied with the Gimp-Print software. The user
+the man page which is supplied with the Gutenprint software. The user
may also issue the "escputil --help" command to get a listing of supported
command line switches. The command requires no special privileges to execute.
</para>
diff --git a/doc/using.texi b/doc/using.texi
deleted file mode 100644
index 70b7147..0000000
--- a/doc/using.texi
+++ /dev/null
@@ -1,46 +0,0 @@
-@node Using libgimpprint, Integrating libgimpprint, Overview, Top
-@chapter Using libgimpprint
-@cindex using
-
-This chapter describes how to write programs that use libgimpprint.
-
-
-@section Code prerequisites
-To use libgimpprint with a program, several steps must be taken:
-
-@enumerate
-@item Include the master libgimpprint header @code{<gimp-print/gimp-print.h>.}
-@item Call @code{stp_init()}.
-@item Link with libgimpprint.
-@end enumerate
-
-The following is a short example program. It does not do anything useful,
-but it does everything required to link with libgimpprint and call other
-functions from libgimpprint.
-
-@example
-#include <gimp-print/gimp-print.h>
-
-int
-main (int argc, char *argv[])
-@{
- stp_init ();
- return (0);
-@}
-@end example
-
-@section Linking with libgimpprint
-
-To link a program with libgimpprint, then @samp{-lgimpprint} needs to be passed
-to the compiler when linking. For example, to compile and link @file{prog.c}
-the following commands would be used:
-
-@example
-gcc -c prog.c
-gcc -o prog -lgimpprint prog.o
-@end example
-
-The compiler and linker flags needed may vary depending on the options
-GIMP-Print was configured with when it was built. The
-@command{gimpprint-config} script will give the correct parameters for
-the local installation (@pxref{gimpprint-config}).
diff --git a/doc/version.texi b/doc/version.texi
deleted file mode 100644
index e9a4321..0000000
--- a/doc/version.texi
+++ /dev/null
@@ -1,3 +0,0 @@
-@set UPDATED 27 October 2001
-@set EDITION 4.2.7
-@set VERSION 4.2.7
diff --git a/doc/weave.texi b/doc/weave.texi
deleted file mode 100644
index 19e9854..0000000
--- a/doc/weave.texi
+++ /dev/null
@@ -1,1290 +0,0 @@
-@node Weaving, ESC/P2, Dithering, Appendices
-@appendix Weaving for inkjet printers
-@cindex weaving
-
-@noindent
-by Charles Briscoe-Smith and Robert Krawitz.
-
-@menu
-* Weaving introduction:: Just what is weaving?
-* Weaving algorithms:: How to weave.
-@end menu
-
-
-@node Weaving introduction, Weaving algorithms, , Weaving
-@appendixsection Introduction
-
-The Epson Stylus Color/Photo printers don't have memory to print using
-all of the nozzles in the print head. For example, the Stylus Photo
-700/EX has 32 nozzles. At 720 dpi, with an 8" wide image, a single line
-requires @math{(8 * 720 * 6 / 8)} bytes, or 4320 bytes (because the
-Stylus Photo printers have 6 ink colors). To use 32 nozzles per color
-would require 138240 bytes. It's actually worse than that, though,
-because the nozzles are spaced 8 rows apart. Therefore, in order to
-store enough data to permit sending the page as a simple raster, the
-printer would require enough memory to store 256 rows, or 1105920 bytes.
-Considering that the Photo EX can print 11" wide, we're looking at more
-like 1.5 MB. In fact, these printers are capable of 1440 dpi horizontal
-resolution. This would require 3 MB. The printers actually have
-64K-256K.
-
-With the newer (740/750 and later) printers it's even worse, since these
-printers support multiple dot sizes; of course, the even newer
-2880x720 printers don't help either.
-
-Older Epson printers had a mode called @dfn{MicroWeave} (tm). In this
-mode, the host fed the printer individual rows of dots, and the printer
-bundled them up and sent them to the print head in the correct order to
-achieve high quality. This MicroWeave mode still works in new printers,
-but in some cases the implementation is very minimal: the printer uses
-exactly one nozzle of each color (the first one). This makes printing
-extremely slow (more than 30 minutes for one 8.5x11" page), although the
-quality is extremely high with no visible banding whatsoever. It's not
-good for the print head, though, since no ink is flowing through the
-other nozzles. This leads to drying of ink and possible permanent
-damage to the print head.
-
-By the way, although the Epson manual says that microweave mode should be
-used at 720 dpi, 360 dpi continues to work in much the same way. At 360
-dpi, data is fed to the printer one row at a time on all Epson printers.
-The pattern that the printer uses to print is very prone to banding.
-However, 360 dpi is inherently a low quality mode; if you're using it,
-presumably you don't much care about quality. It is possible to do
-microweave at 360 DPI, with significantly improved quality.
-
-Except for the Stylus Pro printers (5000, 5500, 7000, 7500, 9000,
-9500, and when it's released the 10000), which can do microweave at
-any resolution, printers from roughly the Stylus Color 600 and later
-do not have the capability to do MicroWeave correctly in many cases
-(some printers can do MicroWeave correctly at 720 DPI). Instead, the
-host must arrange the output in the order that it will be sent to the
-print head. This is a very complex process; the jets in the print
-head are spaced more than one row (1/720") apart, so we can't simply
-send consecutive rows of dots to the printer. Instead, we have to
-pass e. g. the first, ninth, 17th, 25th... rows in order for them to
-print in the correct position on the paper. This interleaving process
-is called "soft" weaving.
-
-This decision was probably made to save money on memory in the
-printer. It certainly makes the driver code far more complicated than
-it would be if the printer could arrange the output. Is that a bad
-thing? Usually this takes far less CPU time than the dithering
-process, and it does allow us more control over the printing process,
-e.g. to reduce banding. Conceivably, we could even use this ability
-to map out bad jets.
-
-Interestingly, apparently the Windows (and presumably Macintosh) drivers
-for most or all Epson printers still list a ``microweave'' mode.
-Experiments have demonstrated that this does not in fact use the
-``microweave'' mode of the printer. Possibly it does nothing, or it
-uses a different weave pattern from what the non-``microweave'' mode
-does. This is unnecessarily confusing, at least for people who write
-drivers who try to explain them to people who don't.
-
-What makes this interesting is that there are many different ways of of
-accomplishing this goal. The naive way would be to divide the image up
-into groups of 256 rows (for a printer with 32 jets and a separation of
-8 rows), and print all the mod8=0 rows in the first pass, mod8=1 rows in
-the second, and so forth. The problem with this approach is that the
-individual ink jets are not perfectly uniform; some emit slightly bigger
-or smaller drops than others. Since each group of 8 adjacent rows is
-printed with the same nozzle, that means that there will be distinct
-streaks of lighter and darker bands within the image (8 rows is 1/90",
-which is visible; 1/720" is not). Possibly worse is that these patterns
-will repeat every 256 rows. This creates banding patterns that are
-about 1/3" wide.
-
-So we have to do something to break up this patterning.
-
-Epson does not publish the weaving algorithms that they use in their
-bundled drivers. Indeed, their developer web site
-(http://www.ercipd.com/isv/edr_docs.htm) does not even describe how to
-do this weaving at all; it says that the only way to achieve 720 dpi is
-to use MicroWeave. It does note (correctly) that 1440 dpi horizontal
-can only be achieved by the driver (i. e. in software). The manual
-actually makes it fairly clear how to do this (it requires two passes
-with horizontal head movement between passes), and it is presumably
-possible to do this with MicroWeave.
-
-The information about how to do this is apparently available under
-non-disclosure agreement (NDA). It's actually easy enough to reverse
-engineer what's inside a print file with a simple Perl script, which is
-supplied with the Gimp-Print distribution as tests/parse-escp2. In any
-event, we weren't particularly interested in the weaving patterns Epson
-used. There are many factors that go into choosing a good weaving
-pattern; we're learning them as we go along. Issues such as drying time
-(giving the ink a few seconds more or less to dry can have highly
-visible effects) affect the quality of the output.
-
-The Uniprint GhostScript driver has been able to do weaving for a long
-time. It uses patterns that must be specified for each choice of
-resolution and printer. We preferred an algorithmic approach that
-computes a weave pattern for any given choice of inputs. This
-obviously requires extensive testing; we developed a test suite
-specifically for this purpose.
-
-
-@node Weaving algorithms, , Weaving introduction, Weaving
-@appendixsection Weaving algorithms
-@cindex weaving algorithms
-
-I considered a few algorithms to perform the weave. The first one I
-devised let me use only @math{(jets-distance_between_jets+1)}
-nozzles, or 25. This is OK in principle, but it's slower than using all
-nozzles. By playing around with it some more, I came up with an
-algorithm that lets me use all of the nozzles, except near the top and
-bottom of the page.
-
-This still produces some banding, though. Even better quality can be
-achieved by using multiple nozzles on the same line. How do we do
-this? In 1440x720 mode, we're printing two output lines at the same
-vertical position. However, if we want four passes, we have to
-effectively print each line twice. Actually doing this would increase
-the density, so what we do is print half the dots on each pass. This
-produces near-perfect output, and it's far faster than using (pseudo)
-``MicroWeave''.
-
-Yet another complication is how to get near the top and bottom of the
-page. This algorithm lets us print to within one head width of the
-top of the page, and a bit more than one head width from the bottom.
-That leaves a lot of blank space. Doing the weave properly outside of
-this region is increasingly difficult as we get closer to the edge of
-the paper; in the interior region, any nozzle can print any line, but
-near the top and bottom edges, only some nozzles can print. We
-originally handled this by using the naive way mentioned above near
-the borders, and switching over to the high quality method in the
-interior. Unfortunately, this meant that the quality is quite visibly
-degraded near the top and bottom of the page. We have since devised
-better algorithms that allow printing to the extreme top and bottom of
-the region that can physically be printed, with only minimal loss of
-quality.
-
-Epson does not advertise that the printers can print at the very top
-of the page, although in practice most of them can. The quality is
-degraded to some degree, and we have observed that in some cases not
-all of the dots get printed. Epson may have decided that the
-degradation in quality is sufficient that printing in that region
-should not be allowed. That is a valid decision, although we have
-taken another approach.
-
-@menu
-* Simple weaving algorithms:: Starting to weave.
-* Perfect weaving:: Improving the weave.
-* Weaving collisions:: Bang!
-* What is perfect weaving?:: What makes a ``perfect'' weave?
-* Oversampling:: Increasing resolution, reducing banding
-@end menu
-
-@node Simple weaving algorithms, Perfect weaving, Weaving algorithms, Weaving algorithms
-@appendixsubsec Simple weaving algorithms
-
-The initial problem is to calculate the starting position of each
-pass; the row number of the printer's top jet when printing that pass.
-Since we assume the paper cannot be reverse-fed, the print head must,
-for each pass, start either further down the page than the previous
-pass or at the same position. Each pass's start point is therefore at
-a non-negative offset from the previous pass's start point.
-
-Once we have a formula for the starting row of each pass, we then turn
-that ``inside out'' to get a formula for the pass number containing each
-row.
-
-First, let's define how our printer works. We measure vertical
-position on the paper in ``rows''; the resolution with which the printer
-can position the paper vertically. The print head contains @math{J} ink
-jets, which are spaced @math{S} rows apart.
-
-Consider a very simple case: we want to print a page as quickly as
-possible, and we mostly don't care how sparse the printing is, so long
-as it's fairly even.
-
-It's pretty obvious how to do this. We make one pass with the print
-head, printing @math{J} lines of data, each line @math{S} rows after the
-previous one. We then advance the paper by @math{S*J} rows and print
-the next row. For example, if @math{J=7} and @math{S=4}, this method
-can be illustrated like this:
-
-@example
-pass number
-| row number------->
-| | 111111111122222222223333333333444444444455555555556666666666
-| 0123456789012345678901234567890123456789012345678901234567890123456789
-0 *---*---*---*---*---*---*
-1 *---*---*---*---*---*---*
-2 \-----------------------/ *---*---*---*---*---*-
- 7 jets \---/
- 4 rows offset from one jet to the next
- \---------------------------/
- 7*4=28 rows offset from one pass to the next
-@end example
-
-In these examples, the vertical axis can be thought of as the time axis,
-with the pass number shown at the left margin, while the row number runs
-horizontally. A @samp{*} shows each row printed by a pass, and a row of
-@samp{-} is used to link together the rows printed by one pass of the
-print head. The first pass is numbered @samp{0} and starts at row 0.
-Each subsequent pass @math{p} starts at row @math{p*S*J}. Each pass
-prints @math{J} lines, each line being @math{S} rows after the previous
-one. (For ease of viewing this file on a standard terminal, I'm
-clipping the examples at column 80.)
-
-This method covers the whole page with lines printed evenly @math{S}
-rows apart. However, we want to fill in all the other rows with
-printing to get a full-density page (we're ignoring oversampling at this
-stage). Where we have previously printed a single pass, we'll now print
-a ``pass block'': we print extra passes to fill in the empty rows. A
-naive implementation might look like this:
-
-@example
-0 *---*---*---*---*---*---*
-1 *---*---*---*---*---*---*
-2 *---*---*---*---*---*---*
-3 *---*---*---*---*---*---*
-4 *---*---*---*---*---*---*
-5 *---*---*---*---*---*---*
-6 *---*---*---*---*---*---*
-7 *---*---*---*---*---*---*
-8 *---*---*---*---*---*-
-9 *---*---*---*---*---*
-10 *---*---*---*---*---
-11 *---*---*---*---*--
-@end example
-
-@noindent
-(Now you can see why this process is called ``weaving''!)
-
-
-@node Perfect weaving, Weaving collisions, Simple weaving algorithms, Weaving algorithms
-@appendixsubsec Perfect weaving
-@cindex perfect weave
-
-This simple weave pattern prints every row, but will give conspicuous
-banding patterns for the reasons discussed above.
-
-Let's start improving this for our simple case. We can reduce banding
-by making sure that any given jet never prints a row too close to
-another row printed by the same jet. This means we want to space the
-rows printed by a given jet evenly down the page. In turn, this
-implies we want to advance the paper by as nearly an equal amount
-after each pass as possible.
-
-Each pass block prints @math{S*J} lines in @math{S} passes. The first
-line printed in each pass block is @math{S*J} rows lower on the page
-than the first line printed in the previous pass block. Therefore, if
-we advance the paper by @math{J} rows between each pass, we can print
-the right number of passes in each block and advance the paper perfectly
-evenly.
-
-Here's what this ``perfect'' weave looks like:
-
-@example
- start of full weave
- |
-0 *---*---*---*---*---*---*
-1 *---*---*---*---*---*---*
-2 *---*---*---*---*---*---*
-3 *---*---*---*---*---*---*
-4 *---*---*---*---*---*---*
-5 *---*---*---*---*---*---*
-6 *---*---*---*---*---*---*
-7 *---*---*---*---*---*---*
-8 *---*---*---*---*---*-
-9 *---*---*---*--
-10 *---*---
-11 *
-@end example
-
-You'll notice that, for the first few rows, this weave is too sparse.
-It is not until the row marked ``start of full weave'' that every
-subsequent row is printed. We can calculate this start position as
-follows:
-
-@example
-@math{start = (S-1) * (J-1)}
-@end example
-
-For the moment, we will ignore this problem with the weave. We'll
-consider later how to fill in the missing rows.
-
-Let's look at a few more examples of perfect weaves:
-
-
-@noindent
-@math{S=2}, @math{J=7}, @math{start=(2-1)*(7-1)=6}:
-
-@example
- starting row of full weave
- |
-0 *-*-*-*-*-*-*
-1 *-*-*-*-*-*-*
-2 *-*-*-*-*-*-*
-3 *-*-*-*-*-*-*
-4 *-*-*-*-*-*-*
-5 *-*-*-*-*-*-*
-6 *-*-*-*-*-*-*
-7 *-*-*-*-*-*-*
-@end example
-
-@noindent
-@math{S=7}, @math{J=2}, @math{start=6}:
-
-@example
- start
- |
-0 *------*
-1 *------*
-2 *------*
-3 *------*
-4 *------*
-5 *------*
-6 *------*
-7 *------*
-8 *------*
-9 *------*
-@end example
-
-@noindent
-@math{S=4}, @math{J=13}, @math{start=36}:
-
-@example
- start
- |
-0 *---*---*---*---*---*---*---*---*---*---*---*---*
-1 *---*---*---*---*---*---*---*---*---*---*---*---*
-2 *---*---*---*---*---*---*---*---*---*---*---*---*
-3 *---*---*---*---*---*---*---*---*---*--
-4 *---*---*---*---*---*---*-
-5 *---*---*---*
-@end example
-
-@noindent
-@math{S=13}, @math{J=4}, @math{start=36}:
-
-@example
- start
- |
-0 *------------*------------*------------*
-1 *------------*------------*------------*
-2 *------------*------------*------------*
-3 *------------*------------*------------*
-4 *------------*------------*------------*
-5 *------------*------------*------------*
-6 *------------*------------*------------*
-7 *------------*------------*------------*
-8 *------------*------------*------------*
-9 *------------*------------*------------*
-10 *------------*------------*-----------
-11 *------------*------------*-------
-12 *------------*------------*---
-13 *------------*------------
-14 *------------*--------
-15 *------------*----
-16 *------------*
-17 *---------
-18 *-----
-19 *-
-@end example
-
-@noindent
-@math{S=8}, @math{J=5}, @math{start=28}:
-
-@example
- start
- |
-0 *-------*-------*-------*-------*
-1 *-------*-------*-------*-------*
-2 *-------*-------*-------*-------*
-3 *-------*-------*-------*-------*
-4 *-------*-------*-------*-------*
-5 *-------*-------*-------*-------*
-6 *-------*-------*-------*-------*
-7 *-------*-------*-------*-------*
-8 *-------*-------*-------*-------*
-9 *-------*-------*-------*-------*
-10 *-------*-------*-------*---
-11 *-------*-------*------
-12 *-------*-------*-
-13 *-------*----
-14 *-------
-15 *--
-@end example
-
-@noindent
-@math{S=9}, @math{J=5}, @math{start=32}:
-
-@example
- start
- |
-0 *--------*--------*--------*--------*
-1 *--------*--------*--------*--------*
-2 *--------*--------*--------*--------*
-3 *--------*--------*--------*--------*
-4 *--------*--------*--------*--------*
-5 *--------*--------*--------*--------*
-6 *--------*--------*--------*--------*
-7 *--------*--------*--------*--------*
-8 *--------*--------*--------*--------*
-9 *--------*--------*--------*-----
-10 *--------*--------*--------*
-11 *--------*--------*----
-12 *--------*--------
-13 *--------*---
-14 *-------
-15 *--
-@end example
-
-@noindent
-@math{S=6}, @math{J=7}, @math{start=30}:
-
-@example
- start
- |
-0 *-----*-----*-----*-----*-----*-----*
-1 *-----*-----*-----*-----*-----*-----*
-2 *-----*-----*-----*-----*-----*-----*
-3 *-----*-----*-----*-----*-----*-----*
-4 *-----*-----*-----*-----*-----*-----*
-5 *-----*-----*-----*-----*-----*-----*
-6 *-----*-----*-----*-----*-----*-----
-7 *-----*-----*-----*-----*----
-8 *-----*-----*-----*---
-9 *-----*-----*--
-10 *-----*-
-11 *
-@end example
-
-
-@node Weaving collisions, What is perfect weaving?, Perfect weaving, Weaving algorithms
-@appendixsubsec Weaving collisions
-@cindex collisions
-@cindex weaving collisions
-
-This perfect weave is not possible in all cases. Let's look at another
-example:
-
-@noindent
-@math{S=6}, @math{J=4}:
-
-@example
-0 *-----*-----*-----*
-1 *-----*-----*-----*
-2 *-----*-----*-----*
-3 *-----*-----*-----*
-4 ^ *-^---*-----*-----*
-5 | ^ | *-^---*-----*-----*
- OUCH! ^ | ^
- | |
-@end example
-
-@noindent
-Here we have a collision. Some lines printed in later passes overprint
-lines printed by earlier passes. We can see why by considering which
-row number is printed by a given jet number @math{j} (numbered from 0)
-of a given pass, @math{p}:
-
-@example
-@math{row(p, j) = p*J + j*S}
-@end example
-
-Because @math{J=4} and @math{S=6} have a common factor of 2, jet 2 of
-pass 0 prints the same row as jet 0 of pass 3:
-
-@example
-@math{row(0, 2) = 0*4 + 2*6 = 12}
-@math{row(3, 0) = 3*4 + 0*6 = 12}
-@end example
-
-In fact, with this particular weave pattern, jets 0 and 1 of pass
-@math{p+3} always overprint jets 2 and 3 of pass @math{p}. We'll
-represent overprinting rows by a @samp{^} in our diagrams, and correct
-rows by @samp{*}:
-
-@noindent
-@math{S=6} @math{J=4}:
-
-@example
-0 *-----*-----*-----*
-1 *-----*-----*-----*
-2 *-----*-----*-----*
-3 ^-----^-----*-----*
-4 ^-----^-----*-----*
-5 ^-----^-----*-----*
-@end example
-
-@node What is perfect weaving?, Oversampling, Weaving collisions, Weaving algorithms
-@appendixsubsec What makes a ``perfect'' weave?
-@cindex perfect weave
-
-So what causes the perfect weave cases to be perfect, and the other
-cases not to be? In all the perfect cases above, @math{S} and @math{J}
-are relatively prime (i.e. their greatest common divisor (GCD) is 1).
-As we mentioned above, @math{S=6} and @math{J=4} have a common factor,
-which causes the overprinting. Where @math{S} and @math{J} have a GCD
-of 1, they have no common factor other than 1 and, as a result, no
-overprinting occurs. If @math{S} and @math{J} are not relatively prime,
-their common factor will cause overprinting.
-
-We can work out the greatest common divisor of a pair of natural numbers
-using Euler's algorithm:
-
-@itemize
-@item Start with the two numbers: (e.g.) 9, 24
-@item Swap them if necessary so that the larger one comes first: 24, 9
-@item Subtract the second number from the first: 15, 9
-@item Repeat until the first number becomes smaller: 6, 9
-
-@item Swap the numbers again, so the larger one comes first: 9, 6
-@item Subtract again: 3, 6
-
-@item Swap: 6, 3
-@item Subtract: 3, 3
-@item And again: 0, 3
-@item When one of the numbers becomes 0, the other number is the GCD of the two numbers you started with.
-@end itemize
-
-These repeated subtractions can be done with C's @samp{%} operator, so we
-can write this in C as follows:
-
-@example
-unsigned int
-gcd(unsigned int x, unsigned int y)
-@{
- if (y == 0)
- return x;
- while (x != 0) @{
- if (y > x)
- swap (&x, &y);
- x %= y;
- @}
- return y;
-@}
-@end example
-
-@samp{gcd(S,J)} will feature quite prominently in our weaving algorithm.
-
-If @math{0 <= j < J}, there should only be a single pair @math{(p, j)}
-for any given row number. If @math{S} and @math{J} are not relatively
-prime, this assumption breaks down. (For conciseness, let
-@math{G=@r{GCD}(S,J)}.)
-
-@noindent
-@math{S=8}, @math{J=6}, @math{G=2}:
-
-@example
-0 *-------*-------*-------*-------*-------*
-1 *-------*-------*-------*-------*-------*
-2 *-------*-------*-------*-------*-------*
-3 *-------*-------*-------*-------*-------*
-4 ^-------^-------^-------*-------*-------*
-5 ^-------^-------^-------*-------*-------*
-@end example
-
-In this case, jets 0, 1 and 2 of pass @math{p+4} collide with jets 3, 4
-and 5 of pass @math{p}.
-
-How can we calculate these numbers? Suppose we were to print using
-fewer jets, say @math{J/G} jets. The greatest common divisor of
-@math{J/G} and @math{S} is 1, enabling a perfect weave. But to get a
-perfect weave, we also have to advance the paper by a factor of @math{G}
-less:
-
-@example
-0 *-------*-------* - - -
-1 *-------*-------* - - -
-2 *-------*-------* - - -
-3 *-------*-------* - - -
-4 *-------*-------* - - -
-5 *-------*-------* - - -
-@end example
-
-If we left the paper advance alone, we'd get a sparse weave; only one
-row can be printed every @math{G} rows:
-
-@example
-0 *-------*-------* - - -
-1 *-------*-------* - - -
-2 *-------*-------* - - -
-3 *-------*-------* - - -
-4 *-------*-------* - - -
-5 *-------*-------* - - -
- ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
- These rows need filling in.
-@end example
-
-The rows that would have been printed by the jets we've now omitted
-(shown as @samp{-}) are printed by other jets on later passes.
-
-Let's analyse this. Consider how a pass @math{p} could collide with
-pass 0. Pass @math{p} starts at offset @math{p*J}. Pass 0 prints at
-rows which are multiples of @math{S}. If @math{p*J} is exactly
-divisible by @math{S}, a collision has occurred, unless @math{p*J >=
-J*S} (which will happen when we finish a pass block).
-
-So, we want to find @math{p} and @math{q} such that @math{p*J=q*S} and
-@math{p} is minimised. Then @math{p} is the number of rows before a
-collision, and @math{q} is the number of jets in pass 0 which are not
-involved in the collision. To do this, we find the lowest common
-multiple of @math{J} and @math{S}, which is @math{L=J*S/G}. @math{L/J}
-is the number of rows before a collision, and @math{L/S} is the number
-of jets in the first pass not involved in the collision.
-
-Thus, we see that the first @math{J/G} rows printed by a given pass are
-not overprinted by any later pass. However, the rest of the rows
-printed by pass @math{p} are overprinted by the first
-@math{J-(J/G)} jets of pass @math{p+(S/G)}. We will use @math{C}
-to refer to @math{S/G}, the number of rows after which a collision
-occurs.
-
-Another example:
-
-@noindent
-@math{S=6}, @math{J=9}, @math{G=3}, @math{C=S/G=2}:
-
-@example
-0 *-----*-----*-----*-----*-----*-----*-----*-----*
-1 *-----*-----*-----*-----*-----*-----*-----*-----*
-2 ^-----^-----^-----^-----^-----^-----*-----*-----*
-3 ^-----^-----^-----^-----^-----^-----*-----*-----*
-4 ^-----^-----^-----^-----^-----^-----*-----
-5 ^-----^-----^-----^-----^-----^--
- ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^
- These rows need filling in.
-@end example
-
-@noindent
-In this case, the first @math{J-(J/G) = 9-9/3 = 6} jets of pass
-@math{p+(6/3)=p+2} collide with the last 6 jets of pass @math{p}. Only
-one row in every @math{G=2} rows is printed by this weave.
-
-@noindent
-@math{S=9}, @math{J=6}, @math{G=3}, @math{C=3}:
-
-@example
-0 *--------*--------*--------*--------*--------*
-1 *--------*--------*--------*--------*--------*
-2 *--------*--------*--------*--------*--------*
-3 ^--------^--------^--------^--------*--------*
-4 ^--------^--------^--------^--------*--------*
-5 ^--------^--------^--------^--------*--------*
-@end example
-
-@noindent
-Here, the first @math{J-(J/G) = 6-6/3 = 4} jets of pass
-@math{p+(9/3)=p+3} collide with the last 4 jets of pass @math{p}.
-
-Note that, in these overprinting cases, only rows divisible by @math{G}
-are ever printed. The other rows, those not divisible by @math{G}, are
-not touched by this weave.
-
-We can modify our weave pattern to avoid overprinting any rows and
-simultaneously fill in the missing rows. Instead of using @math{J}
-alone to determine the start of each pass from the previous pass, we
-adjust the starting position of some passes. As mentioned before, we
-will divide the page into pass blocks, with @math{S} passes in each
-block. This ensures that the first jet of the first pass in a block
-prints the row which the @math{J}th jet of the first pass of the
-previous block would have printed, if the print head had one extra jet.
-
-Looking back at an example of a perfect weave, we can divide it into
-pass blocks:
-
-@noindent
-@math{S=7}, @math{J=2}, @math{G=1}:
-
-@example
- imaginary extra jet
- |
-0 *------* * <--start of pass block 0
-1 *------* |
-2 *------* |
-3 *------*|
-4 *-----|*
-5 *---|--*
-6 *-|----*
- |
-7 *------* <--start of pass block 1
-8 *------*
-9 *------*
-@end example
-
-We can now calculate the start of a given pass by reference to its pass
-block. The first pass of pass block @math{b} always starts at row
-@math{(b*S*J)}. The start row of each of the other passes in the block
-are calculated using offsets from this row.
-
-For the example above, there are 7 passes in each pass block, and their
-offsets are 0, 2, 4, 6, 8, 10 and 12. The next pass block is offset
-@math{S*J=14} rows from the start of the current pass block.
-
-The simplest way to modify the ``perfect'' weave pattern to give a
-correct weave in cases where @math{G!=1} is to simply change any offsets
-which would result in a collision, until the collision disappears.
-Every printed row in the weave, as we have shown it up to now, is
-separated from each of its neighbouring printed rows by @math{G} blank
-rows. We will add an extra offset to each colliding pass in such a way
-that we push the pass onto these otherwise blank rows.
-
-We have seen that, unless @math{G=1}, the plain weave pattern results in
-each pass colliding with the pass @math{S/G} passes before. We will now
-subdivide our pass block into subblocks, each consisting of @math{B=S/G}
-passes. There are therefore @math{G} subblocks in a pass block.
-
-For each subblock, the passes in that subblock have a constant offset
-added to them. The offset is different for each subblock in a block.
-There are many ways we can choose the offsets, but the simplest is to
-make the offset equal to the subblock number (starting from 0).
-
-Thus, the passes in the first subblock in each pass block remain at the
-offsets we've already calculated from @math{J}. The passes in the
-second subblock each have 1 added to their offset, the passes in the
-third subblock have 2 added, and so on. Thus, the offset of pass
-@math{p} (numbered relative to the start of its pass block) is @math{p*J
-+ @r{floor}(p/B)}.
-
-This gives us a weave pattern looking like this:
-
-@noindent
-@math{S=6}, @math{J=9}, @math{G=3}, @math{B=2}:
-
-@example
-0 *-----*-----*-----*-----*-----*-----*-----*-----*
-1 ^ *-----*-----*-----*-----*-----*-----*-----*-----*
-2 | +-> *-----*-----*-----*-----*-----*-----*-----*-----*
-3 | | *-----*-----*-----*-----*-----*-----*-----*-----*
-4 | | +-> *-----*-----*-----*-----*-----*-----*---
-5 | | | *-----*-----*-----*-----*-----*
-6 | | | +-> *-----*-----*-----*-----
-7 | | | | *-----*-----*--
- | | | start of pass block 1
- | | | (offset returns to 0)
- | | start of subblock 2 (offset 2 rows)
- | start of subblock 1 (following passes offset by 1 row)
- start of passblock 0, subblock 0 (pass start calculated as p*J)
-@end example
-
-@noindent
-@math{S=9}, @math{J=6}, @math{G=3}, @math{B=3}:
-
-@example
-0 *--------*--------*--------*--------*--------*
-1 *--------*--------*--------*--------*--------*
-2 *--------*--------*--------*--------*--------*
-3 *--------*--------*--------*--------*--------*
-4 *--------*--------*--------*--------*--------*
-5 *--------*--------*--------*--------*--------*
-6 *--------*--------*--------*--------*---
-7 *--------*--------*--------*------
-8 *--------*--------*--------*
-9 *--------*--------*-----
-10 \---/ *--------*--------
-11 small offset *--------*--
-12 *----
-@end example
-
-This method of choosing offsets for subblocks can result in an occasional
-small offset (as shown above) between one pass and the next, particularly
-when @math{G} is large compared to @math{J}. For example:
-
-@noindent
-@math{S=8}, @math{J=4}, @math{G=4}, @math{B=2}:
-
-@example
-0 *-------*-------*-------*
-1 *-------*-------*-------*
-2 *-------*-------*-------*
-3 *-------*-------*-------*
-4 *-------*-------*-------*
-5 *-------*-------*-------*
-6 *-------*-------*-------*
-7 *-------*-------*-------*
-8 *-------*-------*-------*
-9 \/ *-------*-------*-------*
- very small offset!
-@end example
-
-We can plot the offset against the subblock number as follows:
-
-@example
-subblock number
-| offset
-| |
-| 0123
-0 *
-1 *
-2 *
-3 *
-0 *
-1 *
-2 *
-3 *
-@end example
-
-@noindent
-The discontinuity in this plot results in the small offset between
-passes.
-
-As we said at the beginning, we want the offsets from each pass to the
-next to be as similar as possible. We can fix this by calculating the
-offset for a given subblock b as follows:
-
-@example
- offset(b) = 2*b , if b < ceiling(G/2)
- = 2*(G-b)-1 , otherwise
-@end example
-
-We can visualise this as follows, for @math{G=10}:
-
-@example
- 0123456789
-0 *
-1 *
-2 *
-3 *
-4 *
-5 *
-6 *
-7 *
-8 *
-9 *
-0 *
-1 *
-2 *
-3 *
-4 *
-5 *
-6 *
-7 *
-8 *
-9 *
-@end example
-
-@noindent
-and for @math{G=11}:
-
-@example
- 1
- 01234567890
- 0 *
- 1 *
- 2 *
- 3 *
- 4 *
- 5 *
- 6 *
- 7 *
- 8 *
- 9 *
-10 *
- 0 *
- 1 *
- 2 *
- 3 *
- 4 *
- 5 *
- 6 *
- 7 *
- 8 *
- 9 *
-10 *
-@end example
-
-@noindent
-This gives a weave looking like this:
-
-@noindent
-@math{S=12}, @math{J=6}, @math{G=6}, @math{B=2}:
-
-@example
-0 *-----------*-----------*-----------*-----------*-----------*
-1 *-----------*-----------*-----------*-----------*-----------*
-2 *-----------*-----------*-----------*-----------*-----------*
-3 *-----------*-----------*-----------*-----------*---------
-4 *-----------*-----------*-----------*-----------*-
-5 *-----------*-----------*-----------*-------
-6 *-----------*-----------*-----------*
-7 *-----------*-----------*------
-8 *-----------*-----------*--
-9 *-----------*--------
-10 *-----------*----
-11 *----------
-12 *-----
-@end example
-
-This method ensures that the offset between passes is always in the range
-@math{[J-2,J+2]}.
-
-(This might seem odd, but it occurs to me that a good weave pattern
-might also make a good score for bell ringers. When church bells are
-rung, a list of ``changes'' are used. For example, if 8 bells are being
-used, they will, at first, be rung in order: 12345678. If the first
-change is for bells 5 and 6, the bells will then be rung in the order
-12346578. If the second change is 1 and 2, the next notes are 21346578.
-After a long list of changes, the order the bells are rung in can become
-quite complex.
-
-For a group of bell-ringers to change the order of the notes, they must
-each either delay their bell's next ring, hasten it, or keep it the same
-as the time it takes to ring all the bells once. The length of time
-between each ring of a given bell can only be changed a little each
-time, though; with an ink-jet weave pattern, we want the same to apply
-to the distance between passes.)
-
-Finally, knowing the number of jets @math{J} and their separation
-@math{S}, we can calculate the starting row of any given pass @math{p}
-as follows:
-
-@example
-passesperblock = S
-passblock = floor(p / passesperblock)
-offsetinpassblock = p - passblock * passesperblock
-subblocksperblock = gcd(S, J)
-passespersubblock = S / subblocksperblock
-subpassblock = floor(offsetinpassblock / passespersubblock)
-if subpassblock < ceiling(subblocksperblock/2)
- subblockoffset = 2*subpassblock
-else
- subblockoffset = 2*(subblocksperblock-subpassblock)-1
-startingrow = passblock * S * J + offsetinpassblock * J + subblockoffset
-@end example
-
-We can simplify this down to the following:
-
-@example
-subblocksperblock = gcd(S, J)
-subpassblock = floor((p % S) * subblocksperblock / S)
-if subpassblock * 2 < subblocksperblock
- subblockoffset = 2*subpassblock
-else
- subblockoffset = 2*(subblocksperblock-subpassblock)-1
-startingrow = p * J + subblockoffset
-@end example
-
-So the row number of jet @math{j} of pass @math{p} is
-
-@example
-subblocksperblock = gcd(S, J)
-
-subblockoffset(p)
- = 2*subpassblock , if subpassblock * 2 < subblocksperblock
- = 2*(subblocksperblock-subpassblock)-1 , otherwise
- where
- subpassblock = floor((p % S) * subblocksperblock / S)
-
-row(j, p) = p * J + subblockoffset(p) + j * S
-@end example
-
-Together with the inequality @math{0 <= j < J}, we can use this
-definition in reverse to calculate the pass number containing a given
-row, @math{r}. Working out the inverse definition involves a little
-guesswork, but one possible result is as follows. Given a row,
-@math{r}, which is known to be the first row of a pass, we can calculate
-the pass number as follows:
-
-@example
-subblocksperblock = gcd(S, J)
-subblockoffset = r % subblocksperblock
-pass = (r - subblockoffset) / J
-@end example
-
-If @math{G==1}, we can determine the pass number with this algorithm:
-
-@example
-offset = r % J
-pass = (r - offset) / J
-while (offset % S != 0)
-@{
- pass--
- offset += J
-@}
-jet = offset / S
-@end example
-
-Generalising, we come up with this algorithm. Given @math{r}, @math{S}
-and @math{J}:
-
-@example
-G = gcd(S, J)
-passespersubblock = S/G
-subblockoffset = r % G
-subpassblock = subblockoffset / 2 , if subblockoffset % 2 == 0
- = G - (subblockoffset+1)/2 , otherwise
-baserow = r - subblockoffset - (subpassblock * passespersubblock * J)
-offset = baserow % J
-pass = (baserow - offset) / J
-while (offset % S != 0)
-@{
- offset += J
- pass -= 1
-@}
-subblockretreat = floor(pass / passespersubblock) % G
-pass -= subblockretreat * passespersubblock
-pass += subpassblock * passespersubblock
-jet = (r - subblockoffset - pass * J) / S
-@end example
-
-Let's look at some examples of imperfect but correct weave patterns:
-
-@noindent
-@math{S=6}, @math{J=4}, @math{@r{GCD}=2},
-@*passesperblock=@math{S}=6,
-@*passespersubblock=@math{S/G}=6/2=3:
-
-@example
-0 *-----*-----*-----*
-1 *-----*-----*-----*
-2 *-----*-----*-----*
-3 *-----*-----*-----*
-4 *-----*-----*-----*
-5 *-----*-----*-----*
-6 *-----*-----*-----*
-7 *-----*-----*-----*
-8 *-----*-----*-----*
-9 *-----*-----*-----*
-10 *-----*-----*-----*
-11 *-----*-----*-----*
-12 *-----*-----*-----*
-13 *-----*-----*-----*
-14 *-----*-----*-----*
-15 *-----*-----*----
-16 *-----*-----*
-17 *-----*--
-18 *-----
-19 *-
-@end example
-
-@noindent
-@math{S=8}, @math{J=6}, @math{G=2},
-@*passesperblock=@math{S}=8,
-@*passespersubblock=@math{S/G}=8/2=4:
-
-@example
-0 *-------*-------*-------*-------*-------*
-1 *-------*-------*-------*-------*-------*
-2 *-------*-------*-------*-------*-------*
-3 *-------*-------*-------*-------*-------*
-4 *-------*-------*-------*-------*-------*
-5 *-------*-------*-------*-------*-------*
-6 *-------*-------*-------*-------*-------*
-7 *-------*-------*-------*-------*--
-8 *-------*-------*-------*-----
-9 *-------*-------*-------
-10 *-------*-------*-
-11 *-------*---
-12 *----
-@end example
-
-@noindent
-@math{S=6}, @math{J=12}, @math{G=6},
-@*passesperblock=@math{S}=6,
-@*passespersubblock=@math{S/G}=6/6=1:
-
-@example
-0 *-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
-1 *-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*---
-2 *-----*-----*-----*-----*-----*-----*-----*-----*-
-3 *-----*-----*-----*-----*-----*-----*
-4 *-----*-----*-----*-----*--
-5 *-----*-----*----
-6 *-----
-@end example
-
-We have now solved the basic weaving problem. There are two further
-refinements we need to consider: oversampling, and filling in the
-missing rows at the start of the weave.
-
-@node Oversampling, , What is perfect weaving?, Weaving algorithms
-@appendixsubsec Oversampling
-@cindex oversampling
-
-By oversampling, we mean printing on the same row more than once.
-There are two reasons for oversampling: to increase the horizontal
-resolution of the printout and to reduce banding.
-
-Oversampling to increase horizontal resolution is necessary because,
-although the printer might be able to position an ink drop to, for
-example, 1/1440" horizontally, it may not be able to lay down two such
-drops 1/1440" apart. If it can print two drops 1/720" apart, 2x
-oversampling will be necessary to get a 1/1440" horizontal resolution.
-If it can only print two drops 1/360" apart, 4x oversampling will be
-necessary for a 1/1440" horizontal resolution. The printer enforces
-this ``drop spacing'' by only accepting raster passes with a horizontal
-resolution matching the spacing with which it can print dots, so we
-must print passes at different horizontal positions if we are to
-obtain a higher horizontal resolution. (Another reason it does this
-may be to reduce the amount of memory needed in the printer.)
-
-Oversampling can also be done to decrease the banding apparent in an
-image. By splitting a row into two or more sets of dots (``lines'') and
-printing each line on the same row, but with a different nozzle for
-each line, we can get a smoother print.
-
-To quantify these two kinds of oversampling, we'll introduce two new
-constants: @math{H} shows how many different horizontal offsets we want
-to print at (the ``horizontal oversampling'') while @math{O} shows how
-many times we want to print each row, over and above the number of times
-necessary for horizontal oversampling (the ``extra oversampling'').
-
-It is necessary for all the lines printed by a given pass to have the
-same horizontal offset, but there need not be any relation between
-them in terms of extra oversampling. For the moment, however, we will
-treat all oversampling as potentially requiring this alignment; all
-lines in one pass must be derived from the original row data in the
-same way. Thus, we'll assume @math{O=1} for now.
-
-So, how do we do this oversampling? In fact, it can be done easily:
-advance the paper by a factor of @math{H} less between each pass. We'll
-define a new variable, @math{A}, to show how much we advance the paper
-between passes. Previously, we'd have defined @math{A=J}; we now let
-@math{A=J/H}. This also affects our pass blocks. Printing one pass
-block used to involve advancing the paper @math{S*J} rows; it now
-advances the paper @math{S*J/H} rows. We therefore name a group of
-@math{H} pass blocks a ``band''. Printing one band involves advancing
-the paper @math{S*J} rows, as a pass block did before.
-
-To keep our weave pattern working correctly, so that overprinting does
-not occur within a pass block, we also have to redefine @math{G} as
-@math{@r{GCD}(S,A)}. Here's an example of an oversampled weave pattern:
-
-@noindent
-@math{S=4}, @math{J=10}, @math{H=2}, @math{A=J/H=10/2=5},
-@math{G=@r{GCD}(4,5)=1},
-@*passesperblock=@math{S}=4,
-@*passespersubblock=@math{S/G}=4/1=4:
-
-@example
-0 *---*---*---*---*---*---*---*---*---*
-1 *---*---*---*---*---*---*---*---*---*
-2 *---*---*---*---*---*---*---*---*---*
-3 *---*---*---*---*---*---*---*---*---*
-4 *---*---*---*---*---*---*---*---*---*
-5 *---*---*---*---*---*---*---*---*---*
-6 *---*---*---*---*---*---*---*---*---*
-7 *---*---*---*---*---*---*---*---*---*
-8 *---*---*---*---*---*---*---*---*---*
-9 *---*---*---*---*---*---*---*---*
-10 *---*---*---*---*---*---*---
-11 *---*---*---*---*---*--
-12 *---*---*---*---*-
-13 *---*---*---*
-14 *---*---
-15 *--
-@end example
-
-Now we have to determine which line is printed by each jet on each
-pass. If we number each line generated as we split up a row, we can
-use these numbers. We'll number the lines in our diagram by replacing
-the @samp{*}s with integers in the range [0@dots{}@math{H-1}].
-
-Overprinting occurs once per pass block, so we can simply print pass
-block 0 with line 0, pass block 1 with line 1, pass block 2 with line
-2, etc, wrapping to 0 when we've run out of lines:
-
-@example
-0 0---0---0---0---0---0---0---0---0---0
-1 0---0---0---0---0---0---0---0---0---0
-2 0---0---0---0---0---0---0---0---0---0
-3 0---0---0---0---0---0---0---0---0---0
-4 1---1---1---1---1---1---1---1---1---1
-5 1---1---1---1---1---1---1---1---1---1
-6 1---1---1---1---1---1---1---1---1---1
-7 1---1---1---1---1---1---1---1---1---1
-8 0---0---0---0---0---0---0---0---0---0
-9 0---0---0---0---0---0---0---0---0
-10 0---0---0---0---0---0---0---
-11 0---0---0---0---0---0--
-12 1---1---1---1---1-
-13 1---1---1---1
-14 1---1---
-15 1--
-@end example
-
-@noindent
-@math{S=4}, @math{J=12}, @math{H=2}, @math{A=J/H=12/2=6}, @math{G=@r{GCD}(4,6)=2},
-@*passesperblock=@math{S}=4,
-@*passespersubblock=@math{S/G}=4/2=2:
-
-@example
-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
-2 0---0---0---0---0---0---0---0---0---0---0---0
-3 0---0---0---0---0---0---0---0---0---0---0---0
-4 1---1---1---1---1---1---1---1---1---1---1---1
-5 1---1---1---1---1---1---1---1---1---1---1---1
-6 1---1---1---1---1---1---1---1---1---1---1
-7 1---1---1---1---1---1---1---1---1--
-8 0---0---0---0---0---0---0---0-
-9 0---0---0---0---0---0---
-10 0---0---0---0---0
-11 0---0---0--
-12 1---1-
-@end example
-
-But what do we do if @math{J} is not an exact multiple of @math{H}?
-This is a difficult problem, which I struggled with for quite a few days
-before giving in and taking the easy (but less elegant) way out. The
-easy solution is to round @math{J/H} down, then add on the accumulated
-error at the end of each band.
-
-@noindent
-@math{S=4}, @math{J=11}, @math{H=2} @math{A=@r{floor}(J/H)=@r{floor}(11/2)=5}, @math{G=@r{GCD}(4,5)},
-@*passesperblock=@math{S}=4,
-@*passespersubblock=@math{S/G}=4/1=4
-
-@example
-Band 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
-2 0---0---0---0---0---0---0---0---0---0---0
-3 0---0---0---0---0---0---0---0---0---0---0
-4 1---1---1---1---1---1---1---1---1---1---1
-5 1---1---1---1---1---1---1---1---1---1---1
-6 1---1---1---1---1---1---1---1---1---1---1
-7 1---1---1---1---1---1---1---1---1---1---
-
-Band 1:
-8 | 0---0---0---0---0---0---0---0---0-
-9 \-----------------------------------------/ 0---0---0---0---0---0---0---0
-10 S*J rows 0---0---0---0---0---0---
-11 0---0---0---0---0--
-12 1---1---1---1-
-13 1---1---1
-14 1---
-@end example
-
-We can calculate the starting row and subpass number of a given pass
-in this scheme as follows:
-
-@example
-A = floor(J / H)
-subblocksperblock = gcd(S, A)
-subpassblock = floor((p % S) * subblocksperblock / S)
-if subpassblock * 2 < subblocksperblock
- subblockoffset = 2*subpassblock
-else
- subblockoffset = 2*(subblocksperblock-subpassblock)-1
-band = floor(P / (S * H))
-passinband = P % (S * H)
-startingrow = band * S * J + passinband * A + subblockoffset
-subpass = passinband / S
-@end example
-
-So the row number of jet @math{j} of pass @math{p} is
-
-@example
-A = floor(J / H)
-subblocksperblock = gcd(S, A)
-
-subblockoffset(p)
- = 2*subpassblock , if subpassblock * 2 < subblocksperblock
- = 2*(subblocksperblock-subpassblock)-1 , otherwise
- where
- subpassblock = floor((p % S) * subblocksperblock / S)
-
-band(p) = floor(p / (S * H))
-passinband(p) = p % (S * H)
-
-row(j, p) = band(p) * S * J + passinband(p) * A + subblockoffset(p) + j * S
-row(j, p) = p * J + subblockoffset(p) + j * S
-@end example
-
-To be continued@enddots{}