From: pruy@immd4.informatik.uni-erlangen.de (Rainer Pruy)
Newsgroups: comp.lang.postscript
Subject: Re: Break down drawing larger than pagesize ?
Date: Tue, 22 Dec 1992 17:21:28 GMT
Organization: CSD., University of Erlangen
Distribution: world
NNTP-Posting-Host: faui45x.informatik.uni-erlangen.de

In <1992Dec22.025320.5909@leeweyr.sccsi.com> bill@leeweyr.sccsi.com (Bill Lee) writes:

> In article <1992Dec21.171203.29295@cs.brown.edu> jgm@cs.brown.edu (Jonathan Monsarrat) writes:
> >
> >>Has anyone ever done a program (be it postscript or a tool creating
> >>postscript), that can draw on an (infinitely large) virtual page, then
> >>break it down into an acceptable size (say the printer's default),
> >
> >Here's a hack that may be of use to you. I've used it to create
> >posters 18 feet high! :)
> >
> >Right now it's set to print "normal size" -- just one page.
> >
> >-Jon
> >
> 	(Another of Jon's Obfuscated PostScript figures deleted) 8-{)


> Has anybody been able to answer this question in general?

> I do not believe this can be done in most PostScript interpreters for an
> ARBITRARY image. 

[...observation regarding problems of blue book poster code deleted...]

> Comments???

> Regards,

> Bill Lee

Not for arbitray images, but for most images. It is clearly impossible for
wierd resolution dependent images. For deterministic device independent images
'posterization' is just a matter of (disk) space and (communication) time.

The key idea is to avoid creating a procedure at all.

Yes, using a procedure, as is suggested in the blue book, has space and time 
benefits.  In level 2 PS such a procedure could be defined as PaintProc of a
forms dict and the forms cache will probably speed up processing.

For complex page descriptions, as Bill noted, defining a procedure
might fail due to implementation restrictions.

However, one does not need to define a procedure. Just repeat the page
description itself each time prefixed with necessary CTM modification commands
as suggested in the blue book example.

The only difficulty arises with page desriptions using device or page setup
commands (A4, letter, pagedim, initgraphics, init... et al.), which would
interfere with the CTM modifications necessary for producing individual
poster sheets.

With such PS code there are two possibilities:
  - commenting out the 'bad' commands 
    either by special casing several products (needs knowledge of all products
    producing postcript code posters should be made from) or by providing
    'emulations' for all critical commands (requires kowledge of postscript in
    general and probably some undocumented, product (printer) dependent
    operators in systemdict or serverdict (For many software products red book
    documented operators will suffice, but I don't know what device dependencies
    hide inside the LaserPrep prologue of Adobe.)

  - inserting poster CTM modifications AFTER all such 'bad' commands
    This is trivial for DSC compliant code. Insert 'poster code' just at the end
    of each 'page setup' section, just before '%%EndPageSetup', or, if this DSC
    comment is not used, just after the '%%Page:' comment.

Repeating a page description allows for producing a poster form a page
description, as long as the printer used already was able to print the
plain page.

Regards,
Rainer Pruy

 /----------------------------------------------------------------------------\
 | Rainer Pruy           | email:                                             |
 |                       |  DOMAIN: pruy@informatik.uni-erlangen.de           |
 | Friedrich-Alexander   |  X400:   /C=de/A=dbp/P=uni-erlangen/OU=informatik/ |
 | Universitaet          |          /S=Pruy/G=Rainer/                         |
 |                       |  UUCP:   ...!uunet!fauern!pruy                     |
 | CS Department IMMD IV |----------------------------------------------------|
 | (operating systems)   | phone:  +49 9131 85-7909                           |
 |                       |----------------------------------------------------|
 | Martensstrasse 1      | ================================================== |
 |                       |//   Programming Department:                      \\|
 | D-8520 Erlangen       |\\           Mistakes made while you wait         //|
 | West Germany          | ================================================== |
 \----------------------------------------------------------------------------/