[comp.lang.postscript] setscreen pixels

brown@vidiot.UUCP (Vidiot) (03/07/91)

I need something explained that isn't explained in the new "red book", that
I have never seen explained anywhere, at least not in how it works internally.

One of the givens is that the spot function will provide a dot for a pixel.

As I understand it, the screen frequency applied will be the number of pixels
cells per inch, that will make up a 100% black spot.

As an example, if the frequency is 60, and a 300 dpi printer is used, that
leaves 5 pixels to define a shade of gray.  Square that value to get a spot
that is 5x5, or 25 shades.  Since you could have all white, add one to that,
yielding a total number of shades to 26.  The formula that I have seen is:

		       2
	(dpi/frequency) +1

But, nothing has ever said what to do about fractions.  If the frequency is
40, that gives 7.5 to be squared.  You can't have 7.5 dots to a side.  Does
the printer use floor or round to get the number of pixels in the cell?
What affect does the angle have in all of this (see a previous posting)?

In other words, what is the internal working formula for determining what
the printer will use for the number of pixels in the cell?  Are the formulas
different for the Apple LaserWriter IINT and the Lintotronic 1270 dpi?
-- 
      harvard\     att!nicmad\          spool.cs.wisc.edu!astroatc!vidiot!brown
Vidiot  ucbvax!uwvax..........!astroatc!vidiot!brown
      rutgers/  decvax!nicmad/ INTERNET:vidiot!brown%astroatc@spool.cs.wisc.edu

jmd@ee.umr.edu (Jim Dumser) (03/08/91)

In article <1454@vidiot.UUCP> brown@vidiot.UUCP (Vidiot) writes:
>As an example, if the frequency is 60, and a 300 dpi printer is used,
>that leaves 5 pixels to define a shade of gray.  Square that value to
>get a spot that is 5x5, or 25 shades.  Since you could have all white,
>add one to that, yielding a total number of shades to 26.  The formula
>that I have seen is:
>                      2
>	(dpi/frequency) +1

Quoting from the red (& white) book [p312]:
  "If a cell contains _n_ pixels, then it can render _n_+1 different
  gray levels: all pixels black, one pixel white, two pixels white,
  ..._n_-1 pixels white, all _n_ pixels white.  A desired gray value
  _g_ in the range 0 to 1 is produced by making _i_ pixels white, where
  _i_=floor(_g_*_n_)."

>But, nothing has ever said what to do about fractions.  If the
>frequency is 40, that gives 7.5 to be squared.  You can't have 7.5 dots
>to a side.  Does the printer use floor or round to get the number of
>pixels in the cell?

[p314]:
  "the *sethalftone* or *setscreen* operator may make slight
  adjustments to the requested frequency and angle to ensure that the
  patterns of enclosed pixels remain constant as the screen cells are
  replicated over the entire page."

>                     What affect does the angle have in all of this?

The angle specifies the orientation of the cell borders relative to the
device's coordinates.

>In other words, what is the internal working formula for determining
>what the printer will use for the number of pixels in the cell?  Are
>the formulas different for the Apple LaserWriter IINT and the
>Lintotronic 1270 dpi?

In Level 2, halftone dictionaries have an optional entry,
AccurateScreens, that cause "extremely precise, but computationally
expensive" algorithms to be used.  Also, they can have entries that get
set with the actual frequency and angle used.

Jim

+-------------------------------------------------------+
|  The fear of the Lord is the beginning of knowledge,  |
|    and knowledge of the Holy One is understanding.    |
|                                         Proverbs 9:10 |
|-------------------------------------------------------|
|    Internet: jmd@ee.umr.edu     |  M S - D O S . . .  |
|    UUCP: ...uunet!umree!jmd     |    Just say "NO!"   |
+-------------------------------------------------------+

brown@vidiot.UUCP (Vidiot) (03/09/91)

In article <2349@umriscc.isc.umr.edu> jmd@ee.umr.edu (Jim Dumser) writes:
<In article <1454@vidiot.UUCP> brown@vidiot.UUCP (Vidiot) writes:
<>As an example, if the frequency is 60, and a 300 dpi printer is used,
<>that leaves 5 pixels to define a shade of gray.  Square that value to
<>get a spot that is 5x5, or 25 shades.  Since you could have all white,
<>add one to that, yielding a total number of shades to 26.  The formula
<>that I have seen is:
<>                      2
<>	(dpi/frequency) +1
<
<Quoting from the red (& white) book [p312]:
<  "If a cell contains _n_ pixels, then it can render _n_+1 different
<  gray levels: all pixels black, one pixel white, two pixels white,
<  ..._n_-1 pixels white, all _n_ pixels white.  A desired gray value
<  _g_ in the range 0 to 1 is produced by making _i_ pixels white, where
<  _i_=floor(_g_*_n_)."

Ya, I read that, but it doesn't answer the question asked next.  It doesn't
say how the the number of pixels in the cell is computed, which is what I
was asking for.

<>But, nothing has ever said what to do about fractions.  If the
<>frequency is 40, that gives 7.5 to be squared.  You can't have 7.5 dots
<>to a side.  Does the printer use floor or round to get the number of
<>pixels in the cell?
<
<[p314]:
<  "the *sethalftone* or *setscreen* operator may make slight
<  adjustments to the requested frequency and angle to ensure that the
<  patterns of enclosed pixels remain constant as the screen cells are
<  replicated over the entire page."

Ya, I read that too.  Still doesn't answer the question.

<>                     What affect does the angle have in all of this?
<
<The angle specifies the orientation of the cell borders relative to the
<device's coordinates.

I know that, still doesn't answer the question.

<>In other words, what is the internal working formula for determining
<>what the printer will use for the number of pixels in the cell?  Are
<>the formulas different for the Apple LaserWriter IINT and the
<>Lintotronic 1270 dpi?
<
<In Level 2, halftone dictionaries have an optional entry,
<AccurateScreens, that cause "extremely precise, but computationally
<expensive" algorithms to be used.  Also, they can have entries that get
<set with the actual frequency and angle used.

So, what are the internal formulas??????
-- 
      harvard\     att!nicmad\          spool.cs.wisc.edu!astroatc!vidiot!brown
Vidiot  ucbvax!uwvax..........!astroatc!vidiot!brown
      rutgers/  decvax!nicmad/ INTERNET:vidiot!brown%astroatc@spool.cs.wisc.edu

jmd@ee.umr.edu (Jim Dumser) (03/10/91)

In article <1474@vidiot.UUCP> brown@vidiot.UUCP (Vidiot) writes:
|In article <2349@umriscc.isc.umr.edu> jmd@ee.umr.edu (Jim Dumser) writes:
|<
|<[ Quote from the red (& white) book ]
|
|Ya, I read that, but it doesn't answer the question asked next.  It doesn't
|say how the the number of pixels in the cell is computed, which is what I
|was asking for.
|
|<> [ Vidiot's question about fractions (ie. sqrt(40) = 7.5) ]
|<
|<[p314]:
|<  "the *sethalftone* or *setscreen* operator may make slight
|<  adjustments to the requested frequency and angle to ensure that the
|<  patterns of enclosed pixels remain constant as the screen cells are
|<  replicated over the entire page."
|
|Ya, I read that too.  Still doesn't answer the question.
|
|<>In other words, what is the internal working formula for determining
|<>what the printer will use for the number of pixels in the cell?  Are
|<>the formulas different for the Apple LaserWriter IINT and the
|<>Lintotronic 1270 dpi?
|<
|<In Level 2, halftone dictionaries have an optional entry,
|<AccurateScreens, that cause "extremely precise, but computationally
|<expensive" algorithms to be used.  Also, they can have entries that get
|<set with the actual frequency and angle used.
|
|So, what are the internal formulas??????

Ok, here's your answer:
	They are unspecified.

In otherwords, they are implementation dependent.  Probably a Lintotronic
printer will not use the same algorithm as a LaserWriter.  If you are
writing for Level 2, you can iterate until you get the ActualFrequency
and ActualAngle you want.

Jim

brown@vidiot.UUCP (Vidiot) (03/10/91)

In article <2364@umriscc.isc.umr.edu> jmd@ee.umr.edu (Jim Dumser) writes:
<In article <1474@vidiot.UUCP> brown@vidiot.UUCP (Vidiot) writes:
<|So, what are the internal formulas??????
<
<Ok, here's your answer:
<	They are unspecified.
<
<In otherwords, they are implementation dependent.  Probably a Lintotronic
<printer will not use the same algorithm as a LaserWriter.  If you are
<writing for Level 2, you can iterate until you get the ActualFrequency
<and ActualAngle you want.

Great.  But I am looking at the book mentioned in the previous posting.
-- 
      harvard\     att!nicmad\          spool.cs.wisc.edu!astroatc!vidiot!brown
Vidiot  ucbvax!uwvax..........!astroatc!vidiot!brown
      rutgers/  decvax!nicmad/ INTERNET:vidiot!brown%astroatc@spool.cs.wisc.edu

gsarff@meph.UUCP (Gary Sarff) (03/15/91)

In article <2364@umriscc.isc.umr.edu>, jmd@ee.umr.edu (Jim Dumser) writes:
>In article <1474@vidiot.UUCP> brown@vidiot.UUCP (Vidiot) writes:
>|In article <2349@umriscc.isc.umr.edu> jmd@ee.umr.edu (Jim Dumser) writes:
>|<
>|<[ Quote from the red (& white) book ]
>|
>|So, what are the internal formulas??????
>
>Ok, here's your answer:
>	They are unspecified.
>
>In otherwords, they are implementation dependent.  Probably a Lintotronic
>printer will not use the same algorithm as a LaserWriter.  If you are
>writing for Level 2, you can iterate until you get the ActualFrequency
>and ActualAngle you want.
>

Might this then be the answer to a question I have had for some months now?
The question is why does the same postcript code produce different quality of
image on different postscript printers that use the same or similar printing
engines.  I specifically have some digitized images (from an amiga actually)
and have used a conversion program to take IFF graphics file and make a
postcript file (bitmap printing), and printed it on many (more than
are listed here), different printers with mixed results.  The best was a TI
OmniLaser, the output looked almost like a photograph at arms length
distance.  

Printed on a HP LJII with postcript emulation, the graphic (a person's face)
looked pretty awful, large areas of same gray level shading that just were
not evident on the TI printout.  On a HP DeskJet 500 and using a software
postscript interpreter (pixelscript) on the amiga, the quality approached
that of the TI, except that the paper was warped because of the large amounts
of wet ink delivered to it.

On an Apple Laserwriter IINTX, the quality still did not impress me as much
as the TI's.  Since the image was at computer resolution (say 640x400) when
turned into postcript, it was obviously scaled by a large amount, and then
rotated 90 degrees also, to make a landscape printout.  So, is it that the
algorithms differ that causes this difference in image quality?  How can a
potential buyer know, except by having a sample image and printing it on all
the printers in reach?  I have showed this stack of about 15 printouts of the
same image and virtually everyone at work would pick the TI as best quality.
I guess that means I should be quiet and buy one? 8-)

---------------------------------------------------------------------------
Do memory page swapping to floppies?, I said, yes we can do that, but you
haven't lived until you see our machine do swapping over a 1200 Baud modem
line, and keep on ticking. ..uplherc!wicat!sarek!gsarff