[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Postscript Results and complaints:
To all those who have been following this:
(And Barry in particular!)
Well, after all the good advice you guys gave me I ended up writing a
program to simulate what those functions should have done! Actually,
the main part is fairly trivial (I will attempt to include it in this
message) It's simply a two-dimensional loop which uses the graphics
translation feature move the page under the viewport.
Here are the features I needed:
1. reasonable spooler file size.
2. ability to scale the graphics.
:WITH-PAGES-FOR-BOX failed on #1
DO-REDISPLAY failed on both 1 and 2.
When used for my needs the function produces a spooler file just
over 1 MB and takes around 15 minutes to generate the file and another
20 to print it (assuming the machine, a 3670, isn't used for anything
else). At full size (around 75% scale to screen size) in requires 24
pages (full scale is twice that -- 48 pages). It takes around 5
minutes to draw it to a LISP Listener window if output recording is
I use the CONTINUATION-OUTPUT-SIZE macro to determine whether a
graphic should be printed, considering the current viewport location.
For a 24 page output file, this macro would have to be called 24 times
per object and it would have taken several hours to generate the
output file. Instead, I cache the results of the first call, per
object so the macro is called only once for each printable object.
GRAPHICS:DRAW-STRING messes up the X & Y translations (even
though the other draw functions do ok.) I am using :Y-Attachment
:Center, but don't see why that should matter.
- To have this style code implemented at the graphics primitive
level. I.e. for each graphics draw function, it should determing
whether it should be drawn on the current page and only draw if the
answer is yes. (Assuming a hardcopy stream, anyway). This would
be more efficient than my current method which works at higher level
units of drawing.
- A more efficient version of CONTINUATION-OUTPUT-SIZE. It would
seem that the current version actually prints to a fake stream. How
hard would it be to simply calculate the size and return the result?
Well this letter is a bit long already, I will put the code in a second