PRINT TIPS

LOOKING AHEAD TO QUICKDRAW GX

PETE ("LUKE") ALEXANDER

With the release of QuickDraw GX later this year, there are a few changes in store for
print land. In this column, I'm going to talk about two of these changes -- the
disappearance of the PDEF 10 resource from the QuickDraw GX LaserWriter driver,
and the disappearance of the 'STR ' (-8192) and 'PAPA' (-8192) resources from a
system running QuickDraw GX.

Like most changes, the fact that these resources are going away is both good news and
bad news. The good news is that printing is going to work much better in the GX world
than it does today. For one thing, the new printer driver architecture provides
functionality that used to be unavailable through the Printing Manager, which is why
people got involved in directly grabbing resources in the first place. The bad news is
that if youare currently grabbing these resources, you're going to have some problems
running under QuickDraw GX, and you need to decide now how you're going to deal with
this.

Before we get into solutions, however, let's back up a bit, and answer the question,
What's a PDEF, anyway? A PDEF is just a code resource for printer drivers. All
printer drivers contain multiple PDEFs, each of which implements a piece of the
driver's functionality, like displaying dialog boxes or alerts. PDEF 10 contains the
printer access protocol (PAP) code that enables a LaserWriter driver to communicate
with a network printer. (For details about the interface to PAP, see Chapter 10,
"Printer Access Protocol," inInside AppleTalk.) Some applications that need the PAP
code have acquired it by sucking PDEF 10 out of the LaserWriter driver. Before Apple
put together its PAP software licensing package, grabbing PDEF 10 like this was a
quick and easy way to get what you needed. But it's an approach that's unsupported by
Apple and that has always carried the seeds of compatibility problems.

So what should you do if you're currently grabbing PDEF 10 out of the LaserWriter
driver? You've got the following possible solutions:

At this point, you're probably wondering which solution is the best for you. It all
depends on your requirements. From my point of view, any solution besides the first is
acceptable if it will keep your users happy and keep you compatible with future
system software releases.

Now let's turn to the disappearance of the 'STR ' (-8192) and 'PAPA' (-8192)
resources. On a non-QuickDraw GX system, the 'STR ' resource contains the name of
the currently chosen printer driver, while the 'PAPA' resource contains the name and
network address of the current PAP printer. Because QuickDraw GX will allow more
than one active printer at a time, these resources will become obsolete.

Why is this a problem? Only because some applications currently grab the 'STR ' and
'PAPA' resources to automatically select a printer without going through the Chooser.
Under QuickDraw GX, it will be possible to redirect a print job to another printer via
the Printing Manager's public API. So new applications and applications revised to
work under QuickDraw GX will be able to programmatically redirect print jobs on the
fly in a clean, supported manner.

If your application isn't GX-smart, the simplest way to deal with the disappearance of
the 'STR ' and 'PAPA' resources is probably just to remove your application's feature
of circumventing the Chooser.   If your application absolutely requires this
functionality, however, make sure that when these resources aren't available, you tell
the user to go use the Chooser. This way your application will print on a QuickDraw GX
system without any problems.

This column has looked at a couple of compatibility problems that can emerge when
non- QuickDraw GX applications run under QuickDraw GX, and also at some of the ways
that you can avoid these problems. As long as you're prepared to implement one of the
solutions recommended here, your application will run just fine under QuickDraw GX.
And on the bright side, QuickDraw GX is going to allow your application to access and
control a vast amount of information at print time. QuickDraw GX will provide the API
your application requires to take care of all the user's printing needs without having
to cruise through printer driver or system resources. You asked for it, and soon you'll
have it!

REFERENCES

PETE ("LUKE") ALEXANDER In the winter, Luke likes to hit the cross-country ski
tracks. There you'll find him striding across meadows and down hills on long strips of
fiberglass. One day he agreed to a "small" uphill ski at a friend's urging, only to
discover halfway into it a virtually vertical two-mile climb! Weighing the risks of
descending uncontrollably from there versus continuing on, Luke forged ahead,
arriving at the summit an hour (and a lot of side stepping) later. Since then, he's been
particularly wary of  e-mails beginning "Dear Luke, I have this small printing
problem."*

Grabbing the PAP driver from PDEF 10 is described both in the Macintosh
Technical Note "Printer Access Protocol Q&As" under "Using PAP & code for finding
printer driver under System 7" and in the article by Mike Schuster called "Laser
Print DA for PostScript" in MacTutor Volume 2, Number 2.*

To find out whether the QuickDraw GX Printing Manager is installed, call the
Gestalt function with the 'pmgr' selector. *

Thanks to Hugo Ayala, Tom Dowdy, Dave Hersey, Jim Luther, and Scott ("Zz")
Zimmerman for reviewing this column. *