[comp.sys.mac.programmer] Need for PrGeneral in printer drivers.

earleh@eleazar.dartmouth.edu (Earle R. Horton) (03/07/89)

     Got this in the mail today, regarding the need for PrGeneral in
printer drivers...

<From: goofy!apple.com!IanHendry@apple.com (Ian Hendry)
<To: earleh@eleazar.Dartmouth.EDU (Earle R. Horton)
<Subject: Re: How do I write a serial printer dri
<
<Just one comment:
<
<>>3.  There is a very recent technote about PrGeneral, I believe, but
<>>this is sort of off-the-topic.
<>>
<>>   Yeah, a working printer driver does not need PrGeneral
<>implemented.  But maybe it couldn't hurt to have one...
<
<Some apps  complain if they cannot get a PrGeneral.  Canvas 2.0 for 
<example warns you each time you try to print and then does it anyway.  
<HyperCard is not so forgiving (not surprising to me...) and will refuse to 
<use a driver that does not have PrGeneral (PDEF 7).
<
<Thought you'd like to know,
<
<Ian Hendry
<No E-mail, post replies to network.

     I don't have Canvas 2.0, but HyperCard 1.2.1 works fine with my
DMP-110 printer driver, and this driver has no PrGeneral.  In fact, it
has only PDEF 4 and PDEF 0.  It may be that the printer driver Ian
tried with HyperCard needs something else, or that HyperCard wants a
PrGeneral under some combination of circumstances unknown to me.

     From looking at the TechNote in question (128), I don't think it
would be too difficult to write one, if it became obvious that
PrGeneral were a necessary part of the printer resource file.  Since
there has been no official word on this as yet, I assume for now that
it is not necessary, however.

Earle R. Horton. 23 Fletcher Circle, Hanover, NH 03755--Graduate student.
He who puts his hand to the plow and looks back is not fit for the kingdom
of winners.  In any case, 'BACK' doesn't work.

IanHendry@apple.com (Ian Hendry) (03/08/89)

<<>>   Yeah, a working printer driver does not need PrGeneral
<<>implemented.  But maybe it couldn't hurt to have one...
<<
<<Some apps  complain if they cannot get a PrGeneral.  Canvas 2.0 for 
<<example warns you each time you try to print and then does it anyway.  
<<HyperCard is not so forgiving (not surprising to me...) and will refuse 
to 
<<use a driver that does not have PrGeneral (PDEF 7).
<<

<     I don't have Canvas 2.0, but HyperCard 1.2.1 works fine with my
<DMP-110 printer driver, and this driver has no PrGeneral.  In fact, it
<has only PDEF 4 and PDEF 0.  It may be that the printer driver Ian
<tried with HyperCard needs something else, or that HyperCard wants a
<PrGeneral under some combination of circumstances unknown to me.

You are correct, I should have said, it "sometimes will refuse."  I don't 
know exactly what the circumstances are myself.  Just for fun, take the 
imagewriter driver and remover PDEF 7 (PrGeneral) with ResEdit.  Now try 
to print in HyperCard.  It will give you an error message about "version 
2.5 or later."  This printer driver is otherwise totally functional (try 
printing from the finder for example).  Now for fun try "ImageSaver" which 
is part of SuperGlue.  You get a different error, same problem.  Now put 
the PDEF 7 from the ImageWriter into the ImageSaver which does not have a 
PDEF 7 (this is not for use, just to see what HyperCard will do) and 
HyperCard no longer objects.

My recollections agree that, as you point out, there are some drivers that 
do not require a PDEF 7.  The above games do not really show what is going 
on and I sure don't know.  If you figure it out please let me know.  By 
the way I am using 1.2.2, but I don't think it makes any difference.

<     From looking at the TechNote in question (128), I don't think it
<would be too difficult to write one, if it became obvious that

Very easy to write.

<PrGeneral were a necessary part of the printer resource file.  Since
<there has been no official word on this as yet, I assume for now that
<it is not necessary, however.

I don't know one way or the other... but Tech notes and HyperCard are 
official.  At any rate, let the rest of us know what you find out!




Ian Hendry
No E-mail, post replies to network.
TE: 408-974-4737

Disclaimer:  It was all HIS idea anyway!

casseres@Apple.COM (David Casseres) (03/09/89)

In article <873@internal.Apple.COM> IanHendry@apple.com (Ian Hendry) writes:

>You are correct, I should have said, it "sometimes will refuse."  I don't 
>know exactly what the circumstances are myself.  Just for fun, take the 
>imagewriter driver and remover PDEF 7 (PrGeneral) with ResEdit.  Now try 
>to print in HyperCard.  It will give you an error message about "version 
>2.5 or later."  This printer driver is otherwise totally functional (try 
>printing from the finder for example).  Now for fun try "ImageSaver" which 
>is part of SuperGlue.  You get a different error, same problem.  Now put 
>the PDEF 7 from the ImageWriter into the ImageSaver which does not have a 
>PDEF 7 (this is not for use, just to see what HyperCard will do) and 
>HyperCard no longer objects.

Here's what's going on.  The system glue that handles printing calls attempts
to load PDEF 7 and fails, so it returns an error to the application (I forget
which error, but it's documented).  At this point the application is just
required to not crash or do anything real dumb.  Some applications will just
go ahead and print, but others (like HyperCard) may decide that it just has
to have PrGeneral.  Some applications may make this a printer-dependent
requirement, e.g. "if the printer is an ImageWriter it has to have PrGeneral,
but if it's a LaserWriter it doesn't have to."

><PrGeneral were a necessary part of the printer resource file.  Since
><there has been no official word on this as yet, I assume for now that
><it is not necessary, however.

Printer drivers do not have to implement PrGeneral; that's why the error-
message return is documented.

David Casseres

casseres@Apple.COM (David Casseres) (03/09/89)

In article <880@internal.Apple.COM> casseres@Apple.COM (David Casseres) writes:

>Printer drivers do not have to implement PrGeneral; that's why the error-
>message return is documented.

I should have added, however, that all current Apple-supported drivers do
implement PrGeneral, and consequently application developers are inclined
to depend on it (as with HyperCard).  Therefore it's a good idea to provide
at least a minimal implementation of PrGeneral, which is easy to do.

David Casseres