More files!
This commit is contained in:
parent
36a9115fcb
commit
13f7391e4a
213 changed files with 54952 additions and 0 deletions
196
postscript/prologues/hardcopy.ps
Normal file
196
postscript/prologues/hardcopy.ps
Normal file
|
|
@ -0,0 +1,196 @@
|
|||
%
|
||||
% Redefiniton of the PostScript file output operators so results go to paper.
|
||||
% Complicated and slow, but the implementation doesn't place many demands on
|
||||
% included PostScript. About all that's required is gentle treatment of the
|
||||
% graphics state between write calls.
|
||||
%
|
||||
|
||||
/#copies 1 store
|
||||
/aspectratio 1 def
|
||||
/font /Courier def
|
||||
/formsperpage 1 def
|
||||
/landscape false def
|
||||
/magnification 1 def
|
||||
/orientation 0 def
|
||||
/pointsize 10 def
|
||||
/rotation 1 def
|
||||
/xoffset .1 def
|
||||
/yoffset .1 def
|
||||
|
||||
/roundpage true def
|
||||
/useclippath true def
|
||||
/pagebbox [0 0 612 792] def
|
||||
|
||||
/inch {72 mul} def
|
||||
/min {2 copy gt {exch} if pop} def
|
||||
|
||||
/HardcopySetup {
|
||||
landscape {/orientation 90 orientation add def} if
|
||||
font findfont 1 1.1 div scalefont setfont
|
||||
|
||||
pagedimensions
|
||||
xcenter ycenter translate
|
||||
orientation rotation mul rotate
|
||||
width 2 div neg height 2 div translate
|
||||
xoffset inch yoffset inch neg translate
|
||||
pointsize 1.1 mul dup scale
|
||||
magnification dup aspectratio mul scale
|
||||
height width div 1 min dup scale
|
||||
0 -1 translate
|
||||
0 0 moveto
|
||||
} def
|
||||
|
||||
/pagedimensions {
|
||||
useclippath {
|
||||
/pagebbox [clippath pathbbox newpath] def
|
||||
roundpage currentdict /roundpagebbox known and {roundpagebbox} if
|
||||
} if
|
||||
pagebbox aload pop
|
||||
4 -1 roll exch 4 1 roll 4 copy
|
||||
landscape {4 2 roll} if
|
||||
sub /width exch def
|
||||
sub /height exch def
|
||||
add 2 div /xcenter exch def
|
||||
add 2 div /ycenter exch def
|
||||
} def
|
||||
|
||||
%
|
||||
% Unbind the operators in an executable array or packedarray. Leaves the
|
||||
% unbound array or the original object on the stack.
|
||||
%
|
||||
|
||||
/Unbind {
|
||||
0 index xcheck
|
||||
1 index type /arraytype eq
|
||||
2 index type /packedarraytype eq or and {
|
||||
dup length array copy cvx
|
||||
dup 0 exch {
|
||||
dup type /operatortype eq {
|
||||
( ) cvs cvn cvx
|
||||
} if
|
||||
|
||||
dup type /dicttype eq {
|
||||
dup maxlength dict exch {
|
||||
Unbind
|
||||
3 copy put pop pop
|
||||
} forall
|
||||
} if
|
||||
|
||||
0 index xcheck
|
||||
1 index type /arraytype eq
|
||||
2 index type /packedarraytype eq or and {
|
||||
Unbind
|
||||
} if
|
||||
|
||||
3 copy put pop
|
||||
1 add
|
||||
} forall
|
||||
pop
|
||||
} if
|
||||
} def
|
||||
|
||||
%
|
||||
% New write operator - don't bind the definition! Expands tabs and backspaces,
|
||||
% wraps long lines, and starts a new page whenever necessary. The code that
|
||||
% handles newlines assumes lines are separated by one vertical unit.
|
||||
%
|
||||
|
||||
/write {
|
||||
true exch
|
||||
|
||||
%%case '\b':
|
||||
dup 8#10 eq {
|
||||
( ) stringwidth pop neg 0 rmoveto
|
||||
currentpoint pop 0 lt {
|
||||
currentpoint exch pop 0 exch moveto
|
||||
} if
|
||||
exch pop false exch
|
||||
} if
|
||||
|
||||
%%case '\t':
|
||||
dup 8#11 eq {
|
||||
currentpoint pop ( ) stringwidth pop div round cvi
|
||||
8 mod 8 exch sub {
|
||||
2 index 8#40 write
|
||||
} repeat
|
||||
exch pop false exch
|
||||
} if
|
||||
|
||||
%%case '\n':
|
||||
dup 8#12 eq {
|
||||
currentpoint 0 exch 1 sub moveto pop
|
||||
|
||||
gsave clippath pathbbox pop pop exch pop grestore
|
||||
currentpoint exch pop 1 sub ge {
|
||||
2 index 8#14 write
|
||||
} if
|
||||
exch pop false exch
|
||||
} if
|
||||
|
||||
%%case '\f':
|
||||
dup 8#14 eq {
|
||||
gsave showpage grestore
|
||||
0 0 moveto
|
||||
exch pop false exch
|
||||
} if
|
||||
|
||||
%%case '\r':
|
||||
dup 8#15 eq {
|
||||
currentpoint 0 exch moveto pop
|
||||
exch pop false exch
|
||||
} if
|
||||
|
||||
%%case EOF:
|
||||
dup -1 eq {
|
||||
currentpoint 0 ne exch 0 ne or {
|
||||
2 index 8#14 write
|
||||
} if
|
||||
exch pop false exch
|
||||
} if
|
||||
|
||||
%%default:
|
||||
exch {
|
||||
dup
|
||||
gsave clippath pathbbox pop 3 1 roll pop pop grestore
|
||||
( ) stringwidth pop currentpoint pop add le {
|
||||
2 index 8#12 write
|
||||
} if
|
||||
( ) dup 0 4 -1 roll put show
|
||||
} if
|
||||
|
||||
pop % the character
|
||||
pop % and file object
|
||||
} def
|
||||
|
||||
%
|
||||
% All the other file output operators call our redefined write operator.
|
||||
%
|
||||
|
||||
/print {
|
||||
(%stdout) (w) file exch {1 index exch write} forall
|
||||
pop
|
||||
} def
|
||||
|
||||
/writestring {
|
||||
{1 index exch write} forall
|
||||
pop
|
||||
} def
|
||||
|
||||
/writehexstring {
|
||||
(0123456789ABCDEF) 3 1 roll {
|
||||
dup
|
||||
3 index exch -4 bitshift 16#F and get 2 index exch write
|
||||
2 index exch 16#F and get 1 index exch write
|
||||
} forall
|
||||
pop pop
|
||||
} def
|
||||
|
||||
%
|
||||
% Unbind and redefine the remaining file output procedures.
|
||||
%
|
||||
|
||||
/= dup load Unbind def
|
||||
/== dup load Unbind def
|
||||
/stack dup load Unbind def
|
||||
/pstack dup load Unbind def
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue