[comp.sys.mac.programmer] Page Rectangles

casseres@apple.com (David Casseres) (10/06/90)

In article <6145@ethz.UUCP> czychi@ethz.UUCP (Gary Czychi) writes:
> After playing around with print records and a couple of printers I wonder
> which random methods define the printable area of the page, the 'page
> rectangle'.

The page rectangle is computed from the paper size.  In some cases, other 
options selected by the user and by the application can affect the page 
size, but let's stick to the simple case where it is just computed from 
the paper size.  The algorithm is different for each printer type because 
the physical constraints differ, but the general philosophy is to provide 
the largest possible page rectangle in every case.

> This is, what I found: 
> 
> For example: ImageWriter
> ------------------------
>                                 (page rectangle - paper rectangle)
> Format          Paper Size      top,left,bottom,right margins
>                 inches          points
> 
> US Letter       8.5 X 11.0      36,18,4,18
> US Legal        8.5 X 14.0      36,18,4,18
> 
> It's very likely that mechanical restrictions define these margins.

That's correct.  The width of the page rect is always 8 inches, because 
that is the maximum printing width of the mechanism.  The 8-inch rect is 
centered on the paper.  Top and bottom margins are determined by the 
paper-handling characteristics of the printer.

> But what
> happens when I choose an A4 letter size?
> 
> A4 Letter       8.3* X 11.7     36,10,6,11
> 
> Why do the margins change?? Is there a reason for it?

You'll find the page rect is still 8 inches wide.  Why the bottom margin 
changes by 2 dots, I'm not sure.

> For example: LaserWriter IISC
> -----------------------------
>                                 margins
> Format          Paper Size      t,l,b,r         printable area
>                 Inches          points          points
> 
> US Letter       8.5 X 11.0      15,18,15,18     438912
> US Legal        8.5 X 14.0      54,66,54,66     432000

> Does anybody know the reason why the printable area of the bigger page is
> smaller than that of the smaller page?? Why is there such a big
> difference between the left/right margins and the top/bottom margins of
> the legal paper?

On the SC (as on the Postscript LaserWriters) the constraints are that the 
mechanism requires a minimum margin of about 1/4 inch all around, and the 
total image area is limited by the size of the printer's RAM.  When I 
wrote the code for the SC, I was surprised to discover how much I had to 
increase the margins for legal-size paper, and to this day I don't 
understand why.  But it is indeed a limitation of the hardware, and the 
Postscript LaserWriters have it too.

> A4 Letter       8.3* X 11.7     15,58,15,59     389760
> 
> Again, the A4 page is bigger than the US Letter page, but the printable
> area is *much smaller*. Why? If there were memory restrictions we could
> have at least 438912 points (if not more**) to print with.  And again,
> which is the reason for the big difference in the margins?

You are mistaken here about the margins for A4 with the SC.  They are 
similar to the margins for letter-size paper, i.e. about 1/4 inch all 
around (sorry, I don't have the exact numbers).

> The reason why I put so much effort in this 'investigation' is very
> simple.  For the user, it can be very annoying not being able to adjust
> margins smaller than 0.8" !  When you draw into the page rectangle it
> is much easier if you can assume that the margins on each side of the
> paper are more or less equal.

Minimum margins are determined by the printer hardware, and they are 
indeed essentially equal on the left and right.

> --- Footnotes ---
> *A4 letter width is better represented by 8.3" X 11.7" (instead of
> Apple's 8.2" X 11.7"). The correct A4 paper size would be 8.27" X 11.69"
> or 595 points X 842 points (exactly 210 mm X 297 mm).

I'm not sure where you saw 8.2.  We calculate (210/2.54)x72 to get a width 
of 595 dots for the paper, and this is the value we use internally.

David Casseres
     Exclaimer:  Hey!

omh@cs.brown.edu (Owen M. Hartnett) (10/08/90)

In article <10585@goofy.Apple.COM> casseres@apple.com (David Casseres) writes:
>In article <6145@ethz.UUCP> czychi@ethz.UUCP (Gary Czychi) writes:
>
>> The reason why I put so much effort in this 'investigation' is very
>> simple.  For the user, it can be very annoying not being able to adjust
>> margins smaller than 0.8" !  When you draw into the page rectangle it
>> is much easier if you can assume that the margins on each side of the
>> paper are more or less equal.
>
>Minimum margins are determined by the printer hardware, and they are 
>indeed essentially equal on the left and right.
>

1) Microsoft products can write to areas which are within the "minimum margins."

Thus, we can infer that the minimum margins give an area which can be imaged
given any possible image configuration, or at least, any *reasonable*
imaging configuration.  (by image configuration, I mean any of a set of all
possible quickdraw or postscript calls that cause imaging only inside said
margins.)  I.E. we will probably never encounter errors given that we confine
our output to said areas.

2) Given a scenario where the programmer has a desired output which will
remain consistent regardless of the actions of the user, (i.e. a form) 
thus the programmer is able to test the output for correctness using the
lowest common denominator of printing power (say, an original LaserWriter
and a LaserWriter SC), are there any other pitfalls said programmer
should be mindful of when he directs output which falls outside of the
minimum margins as depicted by the Print Manager (and/or output device)?

-Owen

Owen Hartnett				omh@cs.brown.edu.CSNET
Brown University Computer Science	omh@cs.brown.edu
					uunet!brunix!omh
"Don't wait up for me tonight because I won't be home for a month."

czychi@ethz.UUCP (Gary Czychi) (10/08/90)

(I'm sorry, I have to submit this reply in several parts because
I can't figure out how to do it in one part. The whole text is
rejected by my mailer because its so long).

Part One follows:

In article <10585@goofy.Apple.COM> casseres@apple.com (David Casseres)
writes:
>In article <6145@ethz.UUCP> czychi@ethz.UUCP (Gary Czychi) writes:

>> After playing around with print records and a couple of printers I wonder
>> which random methods define the printable area of the page, the 'page
>> rectangle'.

>> For example: ImageWriter
>> ------------------------

> That's correct.  The width of the page rect is always 8 inches,
> because that is the maximum printing width of the mechanism.  The
> 8-inch rect is centered on the paper.  Top and bottom margins are
> determined by the paper-handling characteristics of the printer.

Yes, I also found that the page width with all three paper sizes is 8
inches. But take a look at what Sean Parent has to say (below).


> > For example: LaserWriter IISC
> > -----------------------------
> >                                 margins
> > Format          Paper Size      t,l,b,r         printable area
> >                 Inches          points          points
> >
> > US Letter       8.5 X 11.0      15,18,15,18     438.912
> > US Legal        8.5 X 14.0      54,66,54,66     432.000
> > A4 Letter       8.3* X 11.7     15,58,15,59     389.760
>
> > Does anybody know the reason why the printable area of the
> > bigger page is smaller than that of the smaller page?? Why
> > is there such a big difference between the left/right
> > margins and the top/bottom margins of the legal paper?
> 
> On the SC (as on the Postscript LaserWriters) the constraints are that
> the mechanism requires a minimum margin of about 1/4 inch all around,
> ...

That explains only the margins of the US Letter size paper. They are all
about 1/4 inch (1/4" = 18 points).

> ...
> and the total image area is limited by the size of the printer's RAM.
> ...
> You are mistaken here about the margins for A4 with the SC.  They are
> similar to the margins for letter-size paper, i.e. about 1/4 inch all
> around (sorry, I don't have the exact numbers).

No, I don't think so:
When there is enough RAM in the printer to print out a rectangle of 576 x
762 points (= page size of US letter) which totals 438.912 points, then I'm
asking you why there's only RAM for 432.000 points (480 x 900 points) for a
US legal paper size. and even less points for an A4 paper size (= 389.760
points, 480 x 812).

Us Letter paper size/page size:	484.702/438.912
A4 Letter paper size/page size:	500.990/389.760 (!!!)
US Legal  paper size/page size:	616.896/432.000	(!!!)

These figures prove: The bigger the paper size, the smaller the printable
area.

The above mentioned figures are the exact figures of a print record on my
SE/30 with system US 6.0.5. I can send you more evidence if you like.

> > --- Footnotes ---
> > *A4 letter width is better represented by 8.3" X 11.7" (instead of
> > Apple's 8.2" X 11.7"). The correct A4 paper size would be 8.27" X 11.69"
> > or 595 points X 842 points (exactly 210 mm X 297 mm).
> 
> I'm not sure where you saw 8.2.  We calculate (210/2.54)x72 to get a width
> of 595 dots for the paper, and this is the value we use internally.

The exact A4 size in the PREC resource of the LaserWriter SC is 1400 X 990
(1/120 inch). Better figures would be 1403 X 992 (1/120").


---- Part two follows in an instant ---

czychi@ethz.UUCP (Gary Czychi) (10/08/90)

(I'm sorry, I have to submit this reply in several parts because
I can't figure out how to do it in one part. The whole text is
rejected by my mailer because its so long).

Part two follows:


> 
> David Casseres
>      Exclaimer:  Hey!


Meanwhile I've got a mail from Sean Parent <sean_parent.snarkmail_l_z>. He
says (I hope I am allowed to quote him):

> Once upon a time an Apple engineer wrote some code to calculate the
> page size for the ImageWriter. Unfortunatly, he didn't realize that
> his calculations where poor and didn't always make best use of the
> machine. The calculations where incorrectly based on the printers
> resolution of 144dpi instead of 72dpi. Well, then along came the
> LaserWriter and adjusted the same code without fixing this bug to
> 300dpi (and the problem got worse) and constrained it to the memory
> limitations of the LaserWriter Classic. Well, then the ImageWriter
> code was adjusted to support the ImageWriter wide carrige. Now the
> driver decides to go into wide carriage mode if the paper is large
> enough and you have wierd dead zone in widths with page sizes from 9
> inches in width up. Then this code was adjusted for the ImageWriter LQ
> (it still has that same original bug) and so the LQ ImageWriter driver
> printable area never matchs the ImageWriter's (even though there is no
> reason why they couldn't) and you have the same wierd dead zones even
> though you know you have a wide carriage printer. Well, the
> ImageWriter code was also used in the LaserWriter SC adjusted for the
> memory requirements of that device with all of the same original bugs,
> yet new and different printable areas. This is one of the worst cases
> of propagating bugs that you will ever see. Unfortunatly it cannot be
> fixed in existing drivers without reformatting everybodies documents.

> Sean Parent
> "Quality unattainable in a reasonable amount of time."


In article <52424@brunix.UUCP> omh@cs.brown.edu (Owen M. Hartnett) writes:

> > Minimum margins are determined by the printer hardware, and they are
> > indeed essentially equal on the left and right.
> >
> 1) Microsoft products can write to areas which are within the "minimum
margins."
> 
> Thus, we can infer that the minimum margins give an area which can be
imaged
> given any possible image configuration, or at least, any *reasonable*
> imaging configuration.  (by image configuration, I mean any of a set of
all
> possible quickdraw or postscript calls that cause imaging only inside said
> margins.)  I.E. we will probably never encounter errors given that we
confine
> our output to said areas.
> 
> -Owen
> 
> Owen Hartnett                           omh@cs.brown.edu.CSNET
> Brown University Computer Science       omh@cs.brown.edu
>                                       uunet!brunix!omh


Let's summarize:
There *is* something wrong with the calcuation of the page rect, but it
wouldn't be opportune for Apple to change it in the near future. And as far
as I know, there's no patch which can be applied to the driver(s) to change
it to more reasonable values.

BTW, the memory of the LW SC can hold 1.048.576 bits. How much room is left
in there for the actual page? The page is prepared in the Mac itself, so in
the printer should be enough room for the *very big* page rectangle.


Thanks a lot for all your replys and efforts,

Gary


        Gary T. Czychi             University of St.Gallen, Switzerland
	  
                czychi@csghsg52.BITNET               (preferred)
                czychi@bernina.ethz.ch.UUCP          (CZYCHI@ETHZ.uucp)

		        Tel.: --41 / 71 / 57 17 22


---- end of part two and end of this reply.  (I guess I like the Mac more
than Unix... :-) -----

casseres@apple.com (David Casseres) (10/09/90)

In article <52424@brunix.UUCP> omh@cs.brown.edu (Owen M. Hartnett) writes:

> 1) Microsoft products can write to areas which are within the "minimum 
margins."

Yes.  Some applications, for their own reasons, restrict imaging to a 
rectangle smaller than the Print Manager's page rect (which is the 
rectangle defined by the minimum margins of the current device), but most 
applications allow drawing into the entire page rect.

> Thus, we can infer that the minimum margins give an area which can be 
imaged
> given any possible image configuration, or at least, any *reasonable*
> imaging configuration.  (by image configuration, I mean any of a set of 
all
> possible quickdraw or postscript calls that cause imaging only inside 
said
> margins.)  I.E. we will probably never encounter errors given that we 
confine
> our output to said areas.

I'm not sure what you mean by "errors."  Your statement is true in the 
sense that anything drawn within the page rect will be printed (assuming 
the application does not prevent this by setting a smaller clip rect, or 
something), and anything drawn outside the page rect will not be printed.

> 2) Given a scenario where the programmer has a desired output which will
> remain consistent regardless of the actions of the user, (i.e. a form) 
> thus the programmer is able to test the output for correctness using the
> lowest common denominator of printing power (say, an original LaserWriter
> and a LaserWriter SC), are there any other pitfalls said programmer
> should be mindful of when he directs output which falls outside of the
> minimum margins as depicted by the Print Manager (and/or output device)?

Drawing outside the page rect is clipped by QuickDraw and therefore does 
not print or affect any bitmap.  However, just as in any other case of 
clipping by QuickDraw, the pen position moves; and if a polygon or region 
is open, it is affected.

But please note that you must be very careful with the concept of a 
"lowest common denominator of printing power."  Your examples of a 
LaserWriter or LaserWriter SC are capable of printing a wider rectangle 
than an ImageWriter!  And what if next week someone hits the market with a 
printer that only allows a 7.5" width but is otherwise so wonderful that 
everybody buys it?  The program might then join the ignominious company of 
early programs that assumed "the printer is always an ImageWriter," or 
later ones that assumed "If it isn't an ImageWriter, it's Postscript."  A 
well-designed program needs to look at the page rectangle defined by the 
Print Manager at print time, and behave accordingly.

David Casseres
     Exclaimer:  Hey!

lippin@wish-bone.berkeley.edu (The Apathist) (10/09/90)

Recently czychi@bernina.UUCP (Gary Czychi) quoted Sean Parent:

>> Well, the
>> ImageWriter code was also used in the LaserWriter SC adjusted for the
>> memory requirements of that device with all of the same original bugs,
>> yet new and different printable areas. This is one of the worst cases
>> of propagating bugs that you will ever see. Unfortunatly it cannot be
>> fixed in existing drivers without reformatting everybodies documents.

How about a PrGeneral verb which gives the printer driver a slap on
the wrist and instructs it to tell the truth?  Most programs could
turn this on without reformatting any documents, because they format
them to the user's chosen margins, not the printer's (and the
printer's would only be getting wider).  Those that can't print on a
wider page without reformatting (blech!) could let the printer lie to
them.

					--Tom Lippincott
					  lippin@math.berkeley.edu

     "What Mahab has said is true: our customs are different.
      What the Klingon has said is unimportant; we do not hear his words."
					--L. McCoy

casseres@apple.com (David Casseres) (10/10/90)

In article <6155@ethz.UUCP> czychi@ethz.UUCP (Gary Czychi) writes:
> > On the SC (as on the Postscript LaserWriters) the constraints are that
> > the mechanism requires a minimum margin of about 1/4 inch all around,
> > ...
> 
> That explains only the margins of the US Letter size paper. They are all
> about 1/4 inch (1/4" = 18 points).

No, this is also true for A4 paper, not to mention the envelope size.  
Your numbers for A4 paper are in error, and you can easily verify this by 
running an application such as RSG 4 that will display for you the 
edges of the page rect.

> When there is enough RAM in the printer to print out a rectangle of 576 x
> 762 points (= page size of US letter) which totals 438.912 points, then
> I'm asking you why there's only RAM for 432.000 points (480 x 900 points)
> for a US legal paper size. and even less points for an A4 paper size (=
> 389.760 points, 480 x 812).

As I said, you are mistaken about A4.  In the case of legal paper, it is 
not just a matter of raw RAM size.  To be perfectly honest with you, I no 
longer remember exactly why this is the case, but it is.  This is not a 
software bug on the Mac side; we originally tried to make the rectangle as 
big as the simple (linear) RAM-size calculation would allow, and the 
printer wouldn't print it.  The limitation is imposed by the hardware and
firmware of the printer.

> Us Letter paper size/page size: 484.702/438.912
> A4 Letter paper size/page size: 500.990/389.760 (!!!)
> US Legal  paper size/page size: 616.896/432.000 (!!!)
> 
> These figures prove: The bigger the paper size, the smaller the printable
> area.

Sorry.  I hate to keep repeating this, but your numbers for A4 are wrong, 
so the progression you show is also wrong, and does not prove anything.

> The above mentioned figures are the exact figures of a print record on my
> SE/30 with system US 6.0.5. I can send you more evidence if you like.

You have to be careful in looking at print records.  You've got the wrong 
information here.

David Casseres
     Exclaimer:  Hey!
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
M9W@&TVQ@['@8F1AAM*5; >5E?

casseres@apple.com (David Casseres) (10/10/90)

In article <6156@ethz.UUCP> czychi@ethz.UUCP (Gary Czychi) writes:
> Meanwhile I've got a mail from Sean Parent <sean_parent.snarkmail_l_z>. 
He
> says (I hope I am allowed to quote him):
> 
> > Once upon a time an Apple engineer wrote some code to calculate the
> > page size for the ImageWriter. Unfortunatly, he didn't realize that
> > his calculations where poor and didn't always make best use of the
> > machine.

I just talked with Sean about this.  The calculation is one which may 
cause an error of one or two dots in the width of an ImageWriter page.
Apparently it causes more trouble in the ImageWriter LQ.


> > ...Well, the
> > ImageWriter code was also used in the LaserWriter SC adjusted for the
> > memory requirements of that device with all of the same original bugs,
> > yet new and different printable areas. This is one of the worst cases
> > of propagating bugs that you will ever see. Unfortunatly it cannot be
> > fixed in existing drivers without reformatting everybodies documents.

Sean was mistaken about this.  The LaserWriter SC code that calculates 
page rectangles is not derived from the ImageWriter code, and does not 
have any bugs related to the one described above.

> Let's summarize:
> There *is* something wrong with the calcuation of the page rect, but it
> wouldn't be opportune for Apple to change it in the near future. And as
> far as I know, there's no patch which can be applied to the driver(s)
> to change it to more reasonable values.

In the case of the ImageWriter there is apparently a discrepancy in 
certain cases of a couple of dots.  In the case of the LaserWriter SC, I 
can see that in the case of A4 paper you are mistaken about what the page 
rectangle is, and in the case of legal paper the rectangle is not what you 
think it ought to be.  I don't think it is fair, on this basis, to claim 
that "there *is* something wrong."  Your position that the values are not
reasonable is based on your error about the A4 page rect, and on an
oversimplified assumption about the relationship between RAM size and
the legal-size page rect.

> BTW, the memory of the LW SC can hold 1.048.576 bits. How much room is
> left in there for the actual page? The page is prepared in the Mac
> itself, so in the printer should be enough room for the *very big* page
> rectangle.

The bitmaps that make the page image are built one at a time in the Mac.  
In the printer there is firmware that runs the SCSI bus, receives the 
bitmaps, deposits them in the frame buffer, and controls the mechanism.  
This firmware uses the printer RAM in various ways, besides the frame 
buffer;  how much of the RAM is available for the frame buffer, and how 
efficiently it is utilized, is not self-evident -- and I don't know the 
answer, except that in the case of legal paper, the rectangle that is 
calculated is the largest one that will work.

David Casseres
     Exclaimer:  Hey!

casseres@apple.com (David Casseres) (10/10/90)

In article <1990Oct9.035859.10254@agate.berkeley.edu> 
lippin@wish-bone.berkeley.edu (The Apathist) writes:

> How about a PrGeneral verb which gives the printer driver a slap on
> the wrist and instructs it to tell the truth?

I'm not sure what you mean by "the truth."  The page rectangle that the 
driver returns is in fact the bounding rectangle for the area that will be 
printed on.  You want some other rectangle?  What should it be?

> Most programs could
> turn this on without reformatting any documents, because they format
> them to the user's chosen margins, not the printer's (and the
> printer's would only be getting wider).  Those that can't print on a
> wider page without reformatting (blech!) could let the printer lie to
> them.

Aw, for pete's sake, read Inside Mac.  The printer doesn't "lie."  The 
Printing Manager (whose behavior is determined by the printer type and the 
printing environment set up by the program and the user) tells the program 
what the page rectangle is.  Whatever the program draws in that rectangle 
gets printed.  Whatever gets drawn outside the rectangle doesn't get 
printed.  If you think something other than that is "the truth," perhaps 
you would be so kind as to explain it for the rest of us.

Sorry to let myself sound annoyed, but I *am* annoyed at the 
misinformation being published here.  There was a time when Mac printing 
was very poorly documented, and it was natural for people to misunderstand 
what a page rect meant -- but that was a long time ago.

David Casseres
     Exclaimer:  Hey!

omh@cs.brown.edu (Owen M. Hartnett) (10/10/90)

In article <10603@goofy.Apple.COM> casseres@apple.com (David Casseres) writes:
>In article <52424@brunix.UUCP> omh@cs.brown.edu (Owen M. Hartnett) writes:
>
>> 1) Microsoft products can write to areas which are within the "minimum 
>margins."
>
>Yes.  Some applications, for their own reasons, restrict imaging to a 
>rectangle smaller than the Print Manager's page rect (which is the 
>rectangle defined by the minimum margins of the current device), but most 
>applications allow drawing into the entire page rect.
>
Not quite what I meant.  You can print (on legal size) a larger area 
from Excel than the Print Manager's page Rect (unless this has been
changed in the new print drivers).  I was working on a legal size form,and
discovered that, using quickdraw, I couldn't get the same area to print
that Microsoft achieved with Excel.

Please note that I am aware of the excesses indulged in over and above
the compatibility guidelines by certain vendors.  However, it's difficult
for us small developers to sit and watch somebody get away with adding
a feature that you would love to have and only be told that "there is no
way to do it."

>
>But please note that you must be very careful with the concept of a 
>"lowest common denominator of printing power."  Your examples of a 
>LaserWriter or LaserWriter SC are capable of printing a wider rectangle 
>than an ImageWriter!  And what if next week someone hits the market with a 
>printer that only allows a 7.5" width but is otherwise so wonderful that 
>everybody buys it?  The program might then join the ignominious company of 
>early programs that assumed "the printer is always an ImageWriter," or 
>later ones that assumed "If it isn't an ImageWriter, it's Postscript."  A 
>well-designed program needs to look at the page rectangle defined by the 
>Print Manager at print time, and behave accordingly.
>

Your points are well taken, but what about a vertical market application
where the output device is specified?  Since applications programmers
are currently checking for color quickdraw, FPU, etc, why not also
check your output device?

Also, please don't get annoyed at all the printing questions.  Your
company only recently (with the "Learning to Drive" article) let the
cat out of the bag with regard to disclosing information on printing.

Years of non-support have created much legend and lore about the
intricacies of printing, so it's natural that people will be confused
as to what is correct information and what is not.

-Owen


Owen Hartnett				omh@cs.brown.edu.CSNET
Brown University Computer Science	omh@cs.brown.edu
					uunet!brunix!omh
"Don't wait up for me tonight because I won't be home for a month."

djvelleman@amherst.bitnet (10/10/90)

In article <52630@brunix.UUCP>, omh@cs.brown.edu (Owen M. Hartnett) writes:
> Also, please don't get annoyed at all the printing questions.  Your
> company only recently (with the "Learning to Drive" article) let the
> cat out of the bag with regard to disclosing information on printing.
> 
> Years of non-support have created much legend and lore about the
> intricacies of printing, so it's natural that people will be confused
> as to what is correct information and what is not.

  For the benefit of those of us who are just learning to print:  What is this
article "Learning to Drive"?  Where is it?  Should I read it if I'm trying to
learn to implement printing?  Is there anything else I should be reading,
other than IM?
  Thanks.
   Dan Velleman
   Math Dept.
   Amherst College

casseres@apple.com (David Casseres) (10/11/90)

In article <52630@brunix.UUCP> omh@cs.brown.edu (Owen M. Hartnett) writes:
> You can print (on legal size) a larger area 
> from Excel than the Print Manager's page Rect (unless this has been
> changed in the new print drivers).  I was working on a legal size
> form,and discovered that, using quickdraw, I couldn't get the same area
> to print that Microsoft achieved with Excel.

I wasn't aware that you could do that, and I don't know how Microsoft does 
it.  Perhaps they have found a way to do it with embedded Postscript, and 
only on a Postscript LaserWriter?

> Please note that I am aware of the excesses indulged in over and above
> the compatibility guidelines by certain vendors.  However, it's difficult
> for us small developers to sit and watch somebody get away with adding
> a feature that you would love to have and only be told that "there is no
> way to do it."

Well, the correct message would be "there is no *supported* way to do it." 
Apple is certainly not alone in declining to support each and every hack 
that some developer has gotten away with on a particular version of the 
software and hardware.  Apple makes reasonable efforts to avoid bombing 
out useful features that are hacks, but it does not make unreasonable 
efforts and it does not make advance promises.  Consequently, such 
features have been known to stop working when a new Apple product comes 
out.  At that point, developers who have stayed within the guidelines are 
in a position to laugh loudly at those who have not.

David Casseres
     Exclaimer:  Hey!

lippin@herb-ox.berkeley.edu (The Apathist) (10/11/90)

Recently casseres@apple.com (David Casseres) wrote:
>In article <1990Oct9.035859.10254@agate.berkeley.edu> 
>lippin@wish-bone.berkeley.edu (The Apathist) writes:
>
>> How about a PrGeneral verb which gives the printer driver a slap on
>> the wrist and instructs it to tell the truth?
>
>I'm not sure what you mean by "the truth."  The page rectangle that the 
>driver returns is in fact the bounding rectangle for the area that will be 
>printed on.  You want some other rectangle?  What should it be?

Apparently, I was misled by Sean Parent's letter into believing that
several of Apple's printer drivers miscalculate the page rectangle --
that the printable area is in fact larger than the drivers report.

Sean also wrote that it would be impractical to fix the bug, as many
existing documents would need to be reformatted.  I suggested this
PrGeneral verb as way to avoid making the programs of the future pay
for the bugs of the past.

To keep old programs running, the Macintosh OS has kept many quirks
which have become hindrances or pitfalls for newer programs (file
version numbers and the poor man's search path come to mind).  I was
hoping to (partially) avoid another such feature.

					--Tom Lippincott
					  lippin@math.berkeley.edu

    "No problem is insoluble goiven a big enough plastic bag."
					--Tom Stoppard, _Jumpers_

russotto@eng.umd.edu (Matthew T. Russotto) (10/11/90)

In article <10652@goofy.Apple.COM> casseres@apple.com (David Casseres) writes:
>Well, the correct message would be "there is no *supported* way to do it." 
>Apple is certainly not alone in declining to support each and every hack 
>that some developer has gotten away with on a particular version of the 
>software and hardware.  Apple makes reasonable efforts to avoid bombing 
>out useful features that are hacks, but it does not make unreasonable 
>efforts and it does not make advance promises.  Consequently, such 
>features have been known to stop working when a new Apple product comes 
>out.  At that point, developers who have stayed within the guidelines are 
>in a position to laugh loudly at those who have not.

Unless 'those who have not' are microsoft, in which case developers beat their
head against the wall because their conformant application was broken
by some patch or another placed into the system to keep those bozos in
business.

Disclaimer: I use microsoft word.

--
Matthew T. Russotto	russotto@eng.umd.edu	russotto@wam.umd.edu
      .sig under construction, like the rest of this campus.

omh@cs.brown.edu (Owen M. Hartnett) (10/11/90)

In article <1990Oct10.205616.3028@eng.umd.edu> russotto@eng.umd.edu (Matthew T. Russotto) writes:
>In article <10652@goofy.Apple.COM> casseres@apple.com (David Casseres) writes:
>>Well, the correct message would be "there is no *supported* way to do it." 
>>Apple is certainly not alone in declining to support each and every hack 
>>that some developer has gotten away with on a particular version of the 
>>software and hardware.  Apple makes reasonable efforts to avoid bombing 
>>out useful features that are hacks, but it does not make unreasonable 
>>efforts and it does not make advance promises.  Consequently, such 
>>features have been known to stop working when a new Apple product comes 
>>out.  At that point, developers who have stayed within the guidelines are 
>>in a position to laugh loudly at those who have not.
>
>Unless 'those who have not' are microsoft, in which case developers beat their
>head against the wall because their conformant application was broken
>by some patch or another placed into the system to keep those bozos in
>business.
>

At one of the Boston Computer Society's MacTechGrp meetings, we had someone
from GCC come in and talk about how he wrote the driver for the first
GCC PLP.  One of the things he said was that there was a patch in the driver
which he couldn't figure out what it did, until he did a search on the
string "Excel" which finally made it make sense.  The driver was checking
to see if the application which is creating the output was Excel and
was then acting in a different way if so.

Now, prior to posting this, I ran my copy of FEDit plus on the newest
LaserWriter Driver, which turned up nil, so this behaviour probably
does not exist on the new driver.  Also, I don't know what version of
the driver (or even which driver) contains the string or whether he made
the whole thing up to try to impress us hackers.

-Owen

Owen Hartnett				omh@cs.brown.edu.CSNET
Brown University Computer Science	omh@cs.brown.edu
					uunet!brunix!omh
"Don't wait up for me tonight because I won't be home for a month."

sean_parent.snarkmail_l_z@gateway.qm.apple.com (Sean Parent) (10/12/90)

In article <1990Oct10.204910.9685@agate.berkeley.edu> 
lippin@herb-ox.berkeley.edu (The Apathist) writes:
> Apparently, I was misled by Sean Parent's letter into believing that
> several of Apple's printer drivers miscalculate the page rectangle --
> that the printable area is in fact larger than the drivers report.

You where not misled at all. For at least the ImageWriter LQ and 
ImageWriter this is true. (I believe it is also true for both the 
LaserWriter SC and LaserWriter II class although I have not looked into it 
to be sure. But the incorrectness is relatively minor in most cases. On 
the LQ I believe it is .17 of an inch in page length that is lost and the 
ImageWriter loses .06 for a standard letter size page. (Both drivers could 
support a page size that was 10.5 inches in height). There hasn't been any 
special PrGeneral call added because we are all busy working on the new 
printing architecture that is completely new and different and this 
problem becomes a non-issue. I also do not believe that many (any) users 
really care about that last piece of the inch and they can get it back if 
they do care by specifing no gaps between pages. The LaserWriter driver 
also has an option for maximum print area in the page setup dialog. I do 
not see any problems here other than inconviences when you move documents 
from one printer to another (and there are many more problems doing this 
than just the page size). Use the page rect, it is your friend.

Sean Parent
"Quality unattainable in a reasonable amount of time."

omh@cs.brown.edu (Owen M. Hartnett) (10/12/90)

In article <10608.2713216d@amherst.bitnet> djvelleman@amherst.bitnet writes:
>In article <52630@brunix.UUCP>, omh@cs.brown.edu (Owen M. Hartnett) writes:
>> Also, please don't get annoyed at all the printing questions.  Your
>> company only recently (with the "Learning to Drive" article) let the
>> cat out of the bag with regard to disclosing information on printing.
>> 
>> Years of non-support have created much legend and lore about the
>> intricacies of printing, so it's natural that people will be confused
>> as to what is correct information and what is not.
>
>  For the benefit of those of us who are just learning to print:  What is this
>article "Learning to Drive"?  Where is it?  Should I read it if I'm trying to
>learn to implement printing?  Is there anything else I should be reading,
>other than IM?
>  Thanks.
>   Dan Velleman
>   Math Dept.
>   Amherst College

Learning to Drive was issued by Apple on one of the Developer CD Roms.  You
don't really need it to implement printing (in fact it might be dangerous
:-)).

What I found the most helpful was technote #161 - When to call PROpen
and PRClose.  Just copy that code into your app, call your printing
quickdraw calls from the DrawStuff routine, and voila, instant printing.

To paraphrase Bill Nye, who once said "Wagner's music is better than it
sounds:"  Macintosh printing is a lot easier than Inside Mac looks.

-Owen

Owen Hartnett				omh@cs.brown.edu.CSNET
Brown University Computer Science	omh@cs.brown.edu
					uunet!brunix!omh
"Don't wait up for me tonight because I won't be home for a month."

wdh@well.sf.ca.us (Bill Hofmann) (10/12/90)

In article <10608.2713216d@amherst.bitnet> djvelleman@amherst.bitnet writes:
>  For the benefit of those of us who are just learning to print:  What is this
>article "Learning to Drive"?  Where is it?  Should I read it if I'm trying to
>learn to implement printing?  Is there anything else I should be reading,
>other than IM?
"Learning to Drive" is a document which describes information *printer driver*
writers need to know.  Unless you're writing drivers, there isn't too much
reason to read it.  The only thing of interest is a complete description of
the internal data structures, which are guaranteed to change anyway.

In the process of writing the Printing Manager section of Apple Dev U's new
self-paced Mac Programming Fundamentals course, I decided that there are only
six fields you need to know about for normal printing: rPage in the TPrInfo
record, the first four fields (iFstPage, iLstPage, iCopies and bjDocLoop) of
the prJob subrecord, and the rPage field of the prInfo subrecord.  You'll be
happier if you ignore everything else.

Printing is really fairly straighforward.  Besides IM, you should read the
Tech Notes, in particular, 72, 91, 118, 122 and 161.  Especially TN161, which
has a more up-to-date printing loop.  Once you have a printing loop written,
it's pretty generic.

-Bill Hofmann