[comp.lang.postscript] PostsCrap code that might be useable

jps@cat.cmu.edu (James Salsman) (11/09/88)

First, a definition for '?' that can help with debugging your
.ps code:

%! debug-op with example
%
/? {dup 50 string cvs print (: ) print load ==} bind def % debug-op
%
/Foo 20 def
%
/Foo ?
%
%output: "Foo: 20" <cr>

Theory of operation:  you stick in quoted identifiers with question marks
and the interpreter prints out their values to %stdout (your printer's
error log?)

And, for those of you with Linos:

%!LinoPoster
% for use only on a Linotronic 100/300
% by James P. Salsman (jps@CAT.CMU.EDU)
%
/TheMessage (DON'T PANIC) def % what the poster will say
/TheFont /Bookman-Demi def % what it will say it in; don't use Times
%
/inch {72 mul} def % trusty inch macro
%
/MessageHeight 11 inch def % the vertical space to be used for the message
/PageLength 8 inch def % larger numbers take less time but waste more paper
%
/MaxPhysWidth 842 def % maximum paper "width," 11.7 inches
%
statusdict begin % to modify page parameters
	MaxPhysWidth % width
	PageLength % height
	0 % offset
	0 % orientation (map logical width to physical length)
	setpageparams
end
%
TheFont findfont setfont % get the font in units
	0 0 moveto % go to the origin
TheMessage false charpath  % path of the message -- do NOT flattenpath!
	pathbbox % message's bbox
	/Top exch def % ur(y)
	/Rgt exch def % ur(x)
	/Bot exch def % ll(y)
	/Lft exch def % ll(x)
%
/HeightUnits Top Bot sub def % height in units
/Factor MessageHeight HeightUnits div def % scaling factor (and point size)
/Pages Rgt Lft sub Factor mul PageLength div floor def % length in pages-1
/CenterOffset MaxPhysWidth MessageHeight sub 2 div def
/VertOrigin Bot	neg Factor mul def % bbox origin y coord
/HorzOrigin Lft neg Factor mul def % bbox origin x coord
%
currentfont Factor scalefont setfont % scale font up
%
0 1 Pages { % for: iterate from 0 by 1 to pages-1
	PageLength mul neg % adjust for the current page frame
		CenterOffset translate % and the centering
	HorzOrigin VertOrigin moveto % go to the origin for the bbox
	TheMessage show % paint letters
	showpage % record page
} for
%
% end

That should be obvious.  It makes REALLY BIG letters.  I mean HUGE!
-- 

:James P. Salsman (jps@CAT.CMU.EDU)
--