Checkpoint.
This commit is contained in:
parent
61f5c35c94
commit
b855148c9b
74 changed files with 5281 additions and 130 deletions
11
src/cmd/postscript/psfiles/Nroundpage.ps
Normal file
11
src/cmd/postscript/psfiles/Nroundpage.ps
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
%
|
||||
% A version of roundpage.ps that assumes a symmetric clipping path. Thanks
|
||||
% to Matthijs Melchior for the suggestion.
|
||||
%
|
||||
|
||||
/roundpagebbox {
|
||||
pagebbox dup 0 get pagebbox 2 get add 2 exch put
|
||||
pagebbox dup 1 get pagebbox 3 get add 3 exch put
|
||||
pagebbox 0 0 put
|
||||
pagebbox 1 0 put
|
||||
} bind def
|
||||
11
src/cmd/postscript/psfiles/README
Normal file
11
src/cmd/postscript/psfiles/README
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
PostScript files that go in $(POSTLIB). Several, like forms.ps, are
|
||||
used by most translators supplied in this package. Most PostScript
|
||||
files only used by a single translator (e.g. the prologue) have been
|
||||
been moved into the appropriate source directory. Files that end in
|
||||
.enc support alternate character sets (e.g. ISO Latin 1 alphabet).
|
||||
The implementation is left open, but typically redefines findfont.
|
||||
That approach works because findfont is a procedure rather than an
|
||||
operator, so it's not affected by bind. Also can't depend on having
|
||||
a systemdict definition for findfont. It's in userdict on Version
|
||||
48.0 VT600s.
|
||||
|
||||
127
src/cmd/postscript/psfiles/aps.ps
Normal file
127
src/cmd/postscript/psfiles/aps.ps
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
%
|
||||
% Tune things up so Linotronic output looks more like the APS-5. Pull this file
|
||||
% into dpost output using the -C option. To get the best looking output run dpost
|
||||
% with the -e2 option and use special font files that look like the APS tables but
|
||||
% have character codes (ie. the fourth column in the width tables) appropriate for
|
||||
% PostScript fonts. Widths in these tables must be for APS fonts!
|
||||
%
|
||||
% Start with fat versions of the stroked Courier and Courier-Oblique fonts - from
|
||||
% Johnathan Shopiro.
|
||||
%
|
||||
|
||||
/newdict /Courier findfont length dict def
|
||||
/Courier findfont {
|
||||
1 index /FID ne
|
||||
{newdict 3 1 roll put}
|
||||
{pop pop}
|
||||
ifelse
|
||||
} forall
|
||||
newdict /StrokeWidth 65 put
|
||||
/Courier newdict definefont pop
|
||||
|
||||
/newdict /Courier-Oblique findfont length dict def
|
||||
/Courier-Oblique findfont {
|
||||
1 index /FID ne
|
||||
{newdict 3 1 roll put}
|
||||
{pop pop}
|
||||
ifelse
|
||||
} forall
|
||||
newdict /StrokeWidth 65 put
|
||||
/Courier-Oblique newdict definefont pop
|
||||
|
||||
%
|
||||
% Scaled down versions of the Helvetica font family.
|
||||
%
|
||||
|
||||
/newdict /Helvetica findfont length dict def
|
||||
/Helvetica findfont {
|
||||
1 index /FontMatrix eq {.922 .922 matrix scale matrix concatmatrix} if
|
||||
|
||||
1 index /FID ne
|
||||
{newdict 3 1 roll put}
|
||||
{pop pop}
|
||||
ifelse
|
||||
} forall
|
||||
/Helvetica newdict definefont pop
|
||||
|
||||
/newdict /Helvetica-Oblique findfont length dict def
|
||||
/Helvetica-Oblique findfont {
|
||||
1 index /FontMatrix eq {.922 .922 matrix scale matrix concatmatrix} if
|
||||
|
||||
1 index /FID ne
|
||||
{newdict 3 1 roll put}
|
||||
{pop pop}
|
||||
ifelse
|
||||
} forall
|
||||
/Helvetica-Oblique newdict definefont pop
|
||||
|
||||
/newdict /Helvetica-Bold findfont length dict def
|
||||
/Helvetica-Bold findfont {
|
||||
1 index /FontMatrix eq {.922 .922 matrix scale matrix concatmatrix} if
|
||||
|
||||
1 index /FID ne
|
||||
{newdict 3 1 roll put}
|
||||
{pop pop}
|
||||
ifelse
|
||||
} forall
|
||||
/Helvetica-Bold newdict definefont pop
|
||||
|
||||
/newdict /Helvetica-BoldOblique findfont length dict def
|
||||
/Helvetica-BoldOblique findfont {
|
||||
1 index /FontMatrix eq {.922 .922 matrix scale matrix concatmatrix} if
|
||||
|
||||
1 index /FID ne
|
||||
{newdict 3 1 roll put}
|
||||
{pop pop}
|
||||
ifelse
|
||||
} forall
|
||||
/Helvetica-BoldOblique newdict definefont pop
|
||||
|
||||
%
|
||||
% Scaled up versions of the Times font family.
|
||||
%
|
||||
|
||||
/newdict /Times-Roman findfont length dict def
|
||||
/Times-Roman findfont {
|
||||
1 index /FontMatrix eq {1.0225 1.0225 matrix scale matrix concatmatrix} if
|
||||
|
||||
1 index /FID ne
|
||||
{newdict 3 1 roll put}
|
||||
{pop pop}
|
||||
ifelse
|
||||
} forall
|
||||
/Times-Roman newdict definefont pop
|
||||
|
||||
/newdict /Times-Italic findfont length dict def
|
||||
/Times-Italic findfont {
|
||||
1 index /FontMatrix eq {1.0225 1.0225 matrix scale matrix concatmatrix} if
|
||||
|
||||
1 index /FID ne
|
||||
{newdict 3 1 roll put}
|
||||
{pop pop}
|
||||
ifelse
|
||||
} forall
|
||||
/Times-Italic newdict definefont pop
|
||||
|
||||
/newdict /Times-Bold findfont length dict def
|
||||
/Times-Bold findfont {
|
||||
1 index /FontMatrix eq {1.0225 1.0225 matrix scale matrix concatmatrix} if
|
||||
|
||||
1 index /FID ne
|
||||
{newdict 3 1 roll put}
|
||||
{pop pop}
|
||||
ifelse
|
||||
} forall
|
||||
/Times-Bold newdict definefont pop
|
||||
|
||||
/newdict /Times-BoldItalic findfont length dict def
|
||||
/Times-BoldItalic findfont {
|
||||
1 index /FontMatrix eq {1.0225 1.0225 matrix scale matrix concatmatrix} if
|
||||
|
||||
1 index /FID ne
|
||||
{newdict 3 1 roll put}
|
||||
{pop pop}
|
||||
ifelse
|
||||
} forall
|
||||
/Times-BoldItalic newdict definefont pop
|
||||
|
||||
40
src/cmd/postscript/psfiles/banner.ps
Normal file
40
src/cmd/postscript/psfiles/banner.ps
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
%
|
||||
% Simple program to print a banner page
|
||||
%
|
||||
|
||||
/banner {
|
||||
/saveobj save def
|
||||
erasepage initgraphics
|
||||
|
||||
/#copies 1 def
|
||||
/inch {72 mul} bind def
|
||||
/pagebbox [clippath pathbbox newpath] def
|
||||
|
||||
/font /Helvetica def
|
||||
/size 20 def
|
||||
/height pagebbox 3 get def
|
||||
/width pagebbox 2 get .09 mul def
|
||||
|
||||
.92 setgray
|
||||
pagebbox 0 get pagebbox 1 get moveto
|
||||
width 0 rlineto 0 height rlineto width neg 0 rlineto closepath eofill
|
||||
pagebbox 2 get pagebbox 1 get moveto
|
||||
width neg 0 rlineto 0 height rlineto width 0 rlineto closepath eofill
|
||||
0 setgray
|
||||
|
||||
font findfont size scalefont setfont
|
||||
/linesp size size .15 mul add neg def
|
||||
/tab (Destination) stringwidth pop 1.5 mul def
|
||||
/nextline {0 0 moveto show tab 0 moveto show 0 linesp translate} def
|
||||
|
||||
pagebbox 0 get 1.5 width mul add pagebbox 3 get 2.0 width mul sub translate
|
||||
(Bin) nextline
|
||||
(Name) nextline
|
||||
(Owner) nextline
|
||||
(File) nextline
|
||||
(Account) nextline
|
||||
(Destination) nextline
|
||||
(Spooldate) nextline
|
||||
showpage
|
||||
saveobj restore
|
||||
} bind def
|
||||
156
src/cmd/postscript/psfiles/baseline.ps
Normal file
156
src/cmd/postscript/psfiles/baseline.ps
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
%
|
||||
% Stuff used to draw or set text along a baseline specified by parametric equations
|
||||
% for x and y.
|
||||
%
|
||||
|
||||
/left -1 def
|
||||
/center 0 def
|
||||
/right 1 def
|
||||
|
||||
/baselinedict 50 dict def
|
||||
|
||||
/newbaseline {
|
||||
baselinedict begin
|
||||
/g' exch bind def
|
||||
/f' exch bind def
|
||||
/g exch bind def
|
||||
/f exch bind def
|
||||
|
||||
counttomark 2 eq {/hoffset exch def} if
|
||||
/res exch def
|
||||
|
||||
/t 0 def
|
||||
/s 0 def
|
||||
/voffset false def
|
||||
cleartomark
|
||||
end
|
||||
} bind def
|
||||
|
||||
/drawfunnytext {
|
||||
baselinedict begin
|
||||
/t exch def
|
||||
/mode exch def
|
||||
/str exch def
|
||||
|
||||
mode left eq {
|
||||
/leftstring emptystring def
|
||||
/rightstring str def
|
||||
} if
|
||||
|
||||
mode right eq {
|
||||
/leftstring str reversestring def
|
||||
/rightstring emptystring def
|
||||
} if
|
||||
|
||||
mode center eq {
|
||||
str splitstring
|
||||
/rightstring exch def
|
||||
/leftstring exch reversestring def
|
||||
} if
|
||||
|
||||
gsave currentpoint translate leftstring left t baselineshow grestore
|
||||
gsave currentpoint translate rightstring right t baselineshow grestore
|
||||
|
||||
/t 0 def
|
||||
/s 0 def
|
||||
/voffset false def
|
||||
cleartomark
|
||||
end
|
||||
} bind def
|
||||
|
||||
/setfunnytext {
|
||||
baselinedict begin
|
||||
/vpos exch def
|
||||
/hpos exch def
|
||||
/str exch def
|
||||
|
||||
voffset vpos ne {
|
||||
/voffset vpos def
|
||||
/t 0 def
|
||||
/s hoffset def
|
||||
} if
|
||||
|
||||
gsave
|
||||
hoffset voffset translate
|
||||
0 0 moveto
|
||||
/ds hpos s sub def
|
||||
/dt ds t f' dup mul t g' dup mul add sqrt res mul div def
|
||||
/s s ds add def
|
||||
/t t dt add def
|
||||
str right t baselineshow
|
||||
grestore
|
||||
end
|
||||
} bind def
|
||||
|
||||
baselinedict begin
|
||||
|
||||
/f {} bind def
|
||||
/g {pop 0} bind def
|
||||
/f' {pop 1} bind def
|
||||
/g' {pop 0} bind def
|
||||
|
||||
/s 0 def
|
||||
/t 0 def
|
||||
/res 72 def
|
||||
|
||||
/onecharstring ( ) def
|
||||
/emptystring () def
|
||||
|
||||
/baselineshow {
|
||||
/t exch def
|
||||
/mode exch def
|
||||
/str exch def
|
||||
|
||||
gsave
|
||||
t f res mul t g res mul translate
|
||||
0 0 moveto
|
||||
t g' t f' atan rotate
|
||||
{
|
||||
mode right eq {pop} if
|
||||
grestore gsave
|
||||
onecharstring 0 3 -1 roll put onecharstring stringwidth pop
|
||||
/ds exch mode mul def
|
||||
/dt ds t f' dup mul t g' dup mul add sqrt res mul div def
|
||||
/t t dt add def
|
||||
/s s ds add def
|
||||
t f res mul t g res mul translate
|
||||
0 0 moveto
|
||||
t g' t f' atan rotate
|
||||
mode left eq {pop} if
|
||||
} str kshow
|
||||
grestore
|
||||
} bind def
|
||||
|
||||
/reversestring {
|
||||
/str1 exch def
|
||||
|
||||
/str2 str1 length string def
|
||||
/i 0 def
|
||||
/n str1 length 1 sub def
|
||||
|
||||
{
|
||||
str1 n get str2 exch i exch put
|
||||
/i i 1 add def
|
||||
/n n 1 sub def
|
||||
n 0 lt {exit} if
|
||||
} loop
|
||||
str2
|
||||
} bind def
|
||||
|
||||
/splitstring {
|
||||
/str1 exch def
|
||||
|
||||
/len str1 stringwidth pop def
|
||||
/s 0 def
|
||||
/n 0 def
|
||||
str1 length {
|
||||
str1 n get onecharstring exch 0 exch put
|
||||
/s onecharstring stringwidth pop s add def
|
||||
s len 2 div ge {exit} if
|
||||
/n n 1 add def
|
||||
} repeat
|
||||
str1 0 n 1 add getinterval
|
||||
str1 n str1 length n sub getinterval
|
||||
} bind def
|
||||
|
||||
end
|
||||
65
src/cmd/postscript/psfiles/color.ps
Normal file
65
src/cmd/postscript/psfiles/color.ps
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
%
|
||||
% Color and reverse video support for dpost. A call made to setcolor with two
|
||||
% arguments implies reverse video printing.
|
||||
%
|
||||
|
||||
/rgb {setrgbcolor} bind def
|
||||
/hsb {sethsbcolor} bind def
|
||||
|
||||
/colordict 50 dict dup begin
|
||||
/red { 1 0 0 } def
|
||||
/green { 0 1 0 } def
|
||||
/blue { 0 0 1 } def
|
||||
/cyan { 0 1 1 } def
|
||||
/magenta { 1 0 1 } def
|
||||
/yellow { 1 1 0 } def
|
||||
/white { 1 1 1 } def
|
||||
/black { 0 0 0 } def
|
||||
end def
|
||||
|
||||
/setcolor {
|
||||
counttomark 1 eq {
|
||||
dup colordict exch known not {pop /black} if
|
||||
colordict exch get exec setrgbcolor
|
||||
} if
|
||||
counttomark 2 eq {
|
||||
/backcolor exch def
|
||||
/textcolor exch def
|
||||
colordict backcolor known not colordict textcolor known not or {
|
||||
/backcolor colordict /black get def
|
||||
/textcolor colordict /white get def
|
||||
} if
|
||||
/backcolor colordict backcolor get def
|
||||
/textcolor colordict textcolor get def
|
||||
/dY1 0 def
|
||||
/dY2 0 def
|
||||
textcolor exec setrgbcolor
|
||||
} if
|
||||
} bind def
|
||||
|
||||
/drawrvbox {
|
||||
/x2 exch def
|
||||
/x1 exch def
|
||||
|
||||
currentpoint dup
|
||||
/y1 exch def
|
||||
/y2 exch def pop
|
||||
|
||||
dY1 0 eq dY2 0 eq and {
|
||||
currentfont /FontBBox get aload pop
|
||||
currentfont /FontMatrix get dtransform /dY2 exch def pop
|
||||
currentfont /FontMatrix get dtransform /dY1 exch def pop
|
||||
} if
|
||||
|
||||
/y1 y1 dY1 add def
|
||||
/y2 y2 dY2 add def
|
||||
|
||||
backcolor exec setrgbcolor
|
||||
newpath
|
||||
x1 y1 moveto
|
||||
x2 y1 lineto
|
||||
x2 y2 lineto
|
||||
x1 y2 lineto
|
||||
closepath fill
|
||||
textcolor exec setrgbcolor
|
||||
} bind def
|
||||
26
src/cmd/postscript/psfiles/fatcourier.ps
Normal file
26
src/cmd/postscript/psfiles/fatcourier.ps
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
%
|
||||
% Fat versions of the stroked Courier and Courier-Oblique - from Johnathan Shopiro.
|
||||
% Can be selectively pulled in using the -C option that's available with all the
|
||||
% PostScript translators or permanently added to any of the prologues. Helps on
|
||||
% Linotronic typesetters, where Courier and Courier-Oblique are too light!
|
||||
%
|
||||
|
||||
/newdict /Courier findfont length 1 add dict def
|
||||
/Courier findfont {
|
||||
1 index /FID ne
|
||||
{newdict 3 1 roll put}
|
||||
{pop pop}
|
||||
ifelse
|
||||
} forall
|
||||
newdict /StrokeWidth 60 put
|
||||
/Courier newdict definefont pop
|
||||
|
||||
/newdict /Courier-Oblique findfont length 1 add dict def
|
||||
/Courier-Oblique findfont {
|
||||
1 index /FID ne
|
||||
{newdict 3 1 roll put}
|
||||
{pop pop}
|
||||
ifelse
|
||||
} forall
|
||||
newdict /StrokeWidth 60 put
|
||||
/Courier-Oblique newdict definefont pop
|
||||
213
src/cmd/postscript/psfiles/forms.ps
Normal file
213
src/cmd/postscript/psfiles/forms.ps
Normal file
|
|
@ -0,0 +1,213 @@
|
|||
%
|
||||
% Procedures that let you print any number of pages on each sheet of paper. It's
|
||||
% far from perfect and won't handle everything (eg. it's not recursive), but should
|
||||
% be good enough for now. Assumes the default page coordinate system has been set
|
||||
% up before setupforms is called. lastpage makes certain the last page is printed,
|
||||
% and should be called immediately after the %%Trailer comment.
|
||||
%
|
||||
% Three lines of code needed for page image clipping have been commented out for
|
||||
% now. It works, but can really slow things down on some versions of PostScript.
|
||||
% Uncomment them if you want to clip pages.
|
||||
%
|
||||
|
||||
/setupforms {
|
||||
/formsperpage exch def
|
||||
|
||||
/currentform 0 def
|
||||
/slop 5 def
|
||||
/min {2 copy gt {exch} if pop} def
|
||||
|
||||
%
|
||||
% Save the current environment so the real showpage can be restored when we're all
|
||||
% done. Occasionally helps when a banner page is included with the job.
|
||||
%
|
||||
|
||||
/saveobj save def
|
||||
|
||||
%
|
||||
% Number of rows and columns we'll need - may exchange them later.
|
||||
%
|
||||
|
||||
/columns formsperpage sqrt ceiling cvi def
|
||||
/rows formsperpage columns div ceiling cvi def
|
||||
|
||||
%
|
||||
% Slop leaves a little room around the edge so page images can be outlined and have
|
||||
% the borders show up. Distance is in default coordinates, so we need to figure out
|
||||
% how it maps into user coordinates.
|
||||
%
|
||||
|
||||
6 array defaultmatrix
|
||||
6 array currentmatrix
|
||||
6 array invertmatrix
|
||||
6 array concatmatrix
|
||||
/tempmatrix exch def
|
||||
|
||||
0 slop tempmatrix dtransform dup mul exch dup mul add sqrt
|
||||
/slop exch def
|
||||
|
||||
%
|
||||
% Determine how big the image area is, using the clipping path bounding box minus
|
||||
% a little and leave the coordinates of the lower left corner of the clipping path
|
||||
% on the stack. Also temporarily set the size of each page (ie. formheight and
|
||||
% formwidth) from the clipping path - just in case old software uses this stuff.
|
||||
% Only works for coordinate systems that have been rotated by a multiple of 90
|
||||
% degrees.
|
||||
%
|
||||
|
||||
newpath clippath pathbbox
|
||||
2 index sub dup /formheight exch def slop 2 mul sub /pageheight exch def
|
||||
2 index sub dup /formwidth exch def slop 2 mul sub /pagewidth exch def
|
||||
|
||||
%
|
||||
% New translators all store the size of each page in default coordinates in the
|
||||
% pagebbox array and it can be different than the size determined by the clipping
|
||||
% path. If we can find pagebbox use it to set the real dimensions of each page.
|
||||
% Leaves the coordinates of the lower left corner on the stack, (either from
|
||||
% pagebbox or clippath) so four numbers are there when we're done.
|
||||
%
|
||||
|
||||
userdict /gotpagebbox known userdict /pagebbox known and {
|
||||
newpath
|
||||
pagebbox 0 get pagebbox 1 get tempmatrix transform moveto
|
||||
pagebbox 0 get pagebbox 3 get tempmatrix transform lineto
|
||||
pagebbox 2 get pagebbox 3 get tempmatrix transform lineto
|
||||
pagebbox 2 get pagebbox 1 get tempmatrix transform lineto
|
||||
closepath pathbbox
|
||||
2 index sub /formheight exch def
|
||||
2 index sub /formwidth exch def
|
||||
} {2 copy} ifelse
|
||||
|
||||
%
|
||||
% Top two numbers are the displacement from the job's origin to the lower left
|
||||
% corner of each page image when we finish setting up the new coordinate system.
|
||||
%
|
||||
|
||||
/ycorner exch def
|
||||
/xcorner exch def
|
||||
|
||||
%
|
||||
% The two numbers left on the stack are the coordinates of the lower left corner
|
||||
% of the clipping path. Go there and then up a bit so page images can be outlined.
|
||||
%
|
||||
|
||||
translate
|
||||
slop slop translate
|
||||
|
||||
%
|
||||
% If the page is wider than high we may be able to do better if we exchange rows
|
||||
% and columns. Won't make a difference in the current orientation or if rows and
|
||||
% columns are the same.
|
||||
%
|
||||
|
||||
pagewidth pageheight gt {
|
||||
rows columns /rows exch def /columns exch def
|
||||
} if
|
||||
|
||||
%
|
||||
% Find the orientation and scaling that makes things as large as possible. More
|
||||
% than what's really needed. First calculation essentially finds the minimum of
|
||||
% 1/rows and 1/columns.
|
||||
%
|
||||
|
||||
pagewidth formwidth columns mul div pageheight formheight rows mul div min
|
||||
pageheight formwidth columns mul div pagewidth formheight rows mul div min
|
||||
|
||||
2 copy lt {
|
||||
rotation 1 eq {
|
||||
landscape {
|
||||
0 pageheight translate
|
||||
-90 rotate
|
||||
}{
|
||||
pagewidth 0 translate
|
||||
90 rotate
|
||||
} ifelse
|
||||
}{
|
||||
landscape {
|
||||
pagewidth 0 translate
|
||||
90 rotate
|
||||
}{
|
||||
0 pageheight translate
|
||||
-90 rotate
|
||||
} ifelse
|
||||
} ifelse
|
||||
pagewidth pageheight /pagewidth exch def /pageheight exch def
|
||||
exch
|
||||
} if
|
||||
|
||||
%
|
||||
% Second number from the top is the best choice. Scale so everything will fit on
|
||||
% the current page, go back to the original origin, and then get ready for the
|
||||
% first page - which goes in the upper left corner.
|
||||
%
|
||||
|
||||
pop dup dup scale
|
||||
xcorner neg ycorner neg translate
|
||||
0 rows 1 sub formheight mul translate
|
||||
|
||||
%
|
||||
% Try to center everything on the page - scaling we used is on top of the stack.
|
||||
%
|
||||
|
||||
dup pagewidth exch div formwidth columns mul sub 2 div
|
||||
exch pageheight exch div formheight rows mul sub 2 div translate
|
||||
|
||||
%
|
||||
% Redefine showpage.
|
||||
%
|
||||
|
||||
/!PreForms~showpage~ /showpage load def % save current showpage
|
||||
|
||||
/showpage {
|
||||
saveobj restore
|
||||
% initclip
|
||||
formsperpage 1 gt {
|
||||
gsave .1 setlinewidth outlineform stroke grestore
|
||||
} if
|
||||
formwidth 0 translate
|
||||
/currentform currentform 1 add def
|
||||
currentform columns mod 0 eq {
|
||||
columns formwidth mul neg formheight neg translate
|
||||
} if
|
||||
currentform formsperpage mod 0 eq {
|
||||
gsave !PreForms~showpage~ grestore
|
||||
currentform columns mod formwidth mul neg
|
||||
formsperpage columns idiv formheight mul translate
|
||||
/currentform 0 def
|
||||
} if
|
||||
% outlineform clip newpath
|
||||
/saveobj save def
|
||||
} bind def
|
||||
|
||||
/outlineform {
|
||||
newpath
|
||||
xcorner ycorner moveto
|
||||
formwidth 0 rlineto
|
||||
0 formheight rlineto
|
||||
formwidth neg 0 rlineto
|
||||
closepath
|
||||
} bind def
|
||||
|
||||
/lastpage {
|
||||
formsperpage 1 gt {
|
||||
currentform 0 ne {
|
||||
/saveobj save def
|
||||
0 1 formsperpage currentform sub formsperpage mod {
|
||||
pop showpage
|
||||
} for
|
||||
saveobj restore
|
||||
} if
|
||||
saveobj restore
|
||||
saveobj restore
|
||||
} if
|
||||
} def
|
||||
|
||||
%
|
||||
% Clip the first page image and save the environment we just set up, including
|
||||
% the redefined showpage.
|
||||
%
|
||||
|
||||
% outlineform clip
|
||||
newpath
|
||||
/saveobj save def
|
||||
} def
|
||||
12
src/cmd/postscript/psfiles/mkfile
Normal file
12
src/cmd/postscript/psfiles/mkfile
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
</$objtype/mkfile
|
||||
|
||||
<../config
|
||||
|
||||
all:VQ:
|
||||
;
|
||||
|
||||
install installall:V:
|
||||
cp *.ps ps.* $POSTLIB
|
||||
|
||||
clean nuke:VQ:
|
||||
;
|
||||
16
src/cmd/postscript/psfiles/ps.requests
Normal file
16
src/cmd/postscript/psfiles/ps.requests
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
%
|
||||
% Keywords begin with an @ in the first column. The value follows on the next
|
||||
% line and includes everything up to next keyword line, except for comments
|
||||
% which are lines that begin with % in the first column.
|
||||
%
|
||||
|
||||
@manualfeed
|
||||
statusdict begin
|
||||
/manualfeedtimeout 300 def
|
||||
/manualfeed true def
|
||||
end
|
||||
|
||||
@ledgertray
|
||||
statusdict begin
|
||||
ledgertray
|
||||
end
|
||||
30
src/cmd/postscript/psfiles/roundpage.ps
Normal file
30
src/cmd/postscript/psfiles/roundpage.ps
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
%
|
||||
% Tries to round clipping path dimensions, as stored in array pagebbox, so they
|
||||
% match one of the known sizes in the papersizes array. Lower left coordinates
|
||||
% are always set to 0.
|
||||
%
|
||||
|
||||
/roundpagebbox {
|
||||
7 dict begin
|
||||
/papersizes [8.5 inch 11 inch 14 inch 17 inch] def
|
||||
|
||||
/mappapersize {
|
||||
/val exch def
|
||||
/slop .5 inch def
|
||||
/diff slop def
|
||||
/j 0 def
|
||||
0 1 papersizes length 1 sub {
|
||||
/i exch def
|
||||
papersizes i get val sub abs
|
||||
dup diff le {/diff exch def /j i def} {pop} ifelse
|
||||
} for
|
||||
diff slop lt {papersizes j get} {val} ifelse
|
||||
} def
|
||||
|
||||
pagebbox 0 0 put
|
||||
pagebbox 1 0 put
|
||||
pagebbox dup 2 get mappapersize 2 exch put
|
||||
pagebbox dup 3 get mappapersize 3 exch put
|
||||
end
|
||||
} bind def
|
||||
|
||||
52
src/cmd/postscript/psfiles/shade.ps
Normal file
52
src/cmd/postscript/psfiles/shade.ps
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
%
|
||||
% Shading support - primarily for ASCII file translators.
|
||||
%
|
||||
|
||||
/grays [0.98 0.9 0.75 0.6] def
|
||||
|
||||
/setshade {
|
||||
/level exch def
|
||||
level 0 le {
|
||||
/textgray 0 def
|
||||
/backgray 1 def
|
||||
}{
|
||||
/backgray level grays length gt
|
||||
{/textgray 1 def 0}
|
||||
{/textgray 0 def grays level 1 sub get}
|
||||
ifelse def
|
||||
} ifelse
|
||||
textgray setgray
|
||||
/dY1 0 def
|
||||
/dY2 0 def
|
||||
} bind def
|
||||
|
||||
/drawrvbox {
|
||||
/x2 exch charwidth mul def
|
||||
/x1 exch charwidth mul def
|
||||
|
||||
x1 x2 lt {
|
||||
dup % expects y on top
|
||||
/y1 exch linespace mul def
|
||||
/y2 y1 def
|
||||
|
||||
dY1 0 eq dY2 0 eq and {
|
||||
currentfont /FontBBox get aload pop
|
||||
160 sub
|
||||
currentfont /FontMatrix get dtransform /dY2 exch def pop
|
||||
100 add
|
||||
currentfont /FontMatrix get dtransform /dY1 exch def pop
|
||||
} if
|
||||
|
||||
/y1 y1 dY1 add def
|
||||
/y2 y2 dY2 add def
|
||||
|
||||
backgray setgray
|
||||
newpath
|
||||
x1 y1 moveto
|
||||
x2 y1 lineto
|
||||
x2 y2 lineto
|
||||
x1 y2 lineto
|
||||
closepath fill
|
||||
} if
|
||||
textgray setgray
|
||||
} bind def
|
||||
28
src/cmd/postscript/psfiles/unbind.ps
Normal file
28
src/cmd/postscript/psfiles/unbind.ps
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
%
|
||||
% 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
|
||||
|
||||
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
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue