[comp.sys.mac.programmer] Summary - printing high resolution bitmaps/pixmaps

pratt@boulder.Colorado.EDU (Jonathan Pratt) (01/21/90)

Many thanks to all who responded to my query about printing
bitmaps and pixmaps at resolutions greater than 72 dpi.  Here
are some of the methods that were suggested:
 
1. Use the percent reduction feature when printing (mainly for
laser printers).  Theoretically this increases the dpi of the
bitmap you're printing.  This didn't seem to work for a Laser-
Master printer, as nothing printed when the scaling was under
100%.  Don't know about the LaserWriter.
 
2. Use a scaled-up rectangle for the call to PrOpenPage.  For
example, I generated a bitmap at 576 dpi and then used a
rectangle eight times as big as the rPage rectangle.  This
worked well for the Imagewriter but produced ugly results on
the laser printers I tried.
 
3. Probably the most sensible method is to use PrGeneral to
find and use the maximum printer resolution.  Just be sure
to place your calls outside of the PrOpenDoc/PrOpenPage nesting.
 
Specific to pixmaps:
 
Use the LaserWriter driver 6.0 to have dithering applied
automatically (earlier versions seem to ignore CopyBits with
pixmaps).  I don't have this version yet so I can't comment
on the quality.  If you want to be printer independent you
can dither the pixmap yourself to make a higher dpi bitmap 
(the parameters of the bitmap are determined from the PrGeneral
call).
 
Finally, if you know you'll be printing to a PostScript printer
you can send half-tone information directly to the printer using
picture comments (Tech note 91). This produces nice visual results
and you can specify the halftone dpi, angles, and screen type.
Sample code can be found in the source to Wayne Rasband's program
Image - probably available at sumex, etc.
 
Jonathan

/* Jonathan Pratt          Internet: pratt@boulder.colorado.edu     *
 * Campus Box 525              uucp: ..!{ncar|nbires}!boulder!pratt *
 * University of Colorado                                           *
 * Boulder, CO 80309          Phone: (303) 492-4293                 */