home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 21 PDrivers
/
21-PDrivers.zip
/
psnupos2.zip
/
nup.pro
< prev
next >
Wrap
Text File
|
1995-02-25
|
4KB
|
352 lines
%! nup.pro -- Short version prelude for n-up printing. $Revision: 4.2 $
/$Nup
75
dict
def
$Nup
begin/spots
@#@Pages@#@
def/reverse?
@#@Rev@#@
def/startspot
@#@Start@#@
def
gsave/transforms[/ind
0
def[2
4
8
16]{spots
eq{exit}if/ind
ind
1
add
def}forall/upright?[false
true
false
true]ind
get
def/numwide[2
2
4
4]ind
get
def/sfactor[0.5833
0.4444
0.2916
0.2222]ind
get
def/pwidth
sfactor
612
mul
def/pheight
sfactor
792
mul
def
upright?{/width
544
def/height
704
def}{/width
714
def/height
462
def}ifelse
reverse?{spots
1
sub
-1
0}{0
1
spots
1
sub}ifelse{/p
exch
def
initmatrix
upright?{34
44
translate}{537
39
translate
90
rotate}ifelse
p
numwide
mod
pwidth
mul
height
p
numwide
idiv
1
add
pheight
mul
sub
translate
sfactor
dup
scale
matrix
currentmatrix}for]def
grestore/spot
startspot
def/pods[/showpage/copypage/erasepage/initgraphics/initmatrix/initclip/defaultmatrix
/currentmatrix/setmatrix/restore/gsave/grestore/grestoreall]def/+s
128
string
dup
0(+)putinterval
def/-s
128
string
dup
0(-)putinterval
def/namestr
128
string
def
pods{dup
namestr
cvs
dup
length/l
exch
def
-s
exch
1
exch
putinterval
systemdict
exch
get
-s
0
l
1
add
getinterval
exch
def}forall/psave{-gsave[/newpath
load{/moveto
load}{/lineto
load}{/curveto
load}{/closepath
load}pathforall]-grestore}def/prestore{cvx
exec}def
gsave
initgraphics
clippath/page-clip
psave
def
grestore/astr
128
string
def/numstr
10
string
def/$arrays
50
dict
def/a2s{/l
0
def{100
mul
cvi
numstr
cvs
astr
exch
l
exch
dup
length
l
add/l
exch
def
putinterval
astr
l(:)putinterval/l
l
1
add
def}forall
astr
0
l
1
sub
getinterval}def/arrdef{exch
a2s
exch
$arrays
3
1
roll
put}def/arrload{a2s
$arrays
exch
2
copy
known{get
true}{false}ifelse}def/m
matrix
def/m2
matrix
def/m3
matrix
def/fix-gstate{psave
clippath
psave
4
2
roll
fix-trans
-initclip
prestore
clip
prestore}def/fix-trans{/newspot
exch
def/oldspot
exch
def
m
-currentmatrix
transforms
oldspot
get
m2
invertmatrix
m3
concatmatrix
transforms
newspot
get
m
concatmatrix
-setmatrix}def/page-edges{-gsave
+initgraphics
-initclip
0.0
setlinewidth
newpath
0
0
moveto
0
792
lineto
612
792
lineto
612
0
lineto
closepath
stroke
-grestore}def/+defaultmatrix{transforms
spot
get
exch
copy}def/+initmatrix{m
+defaultmatrix
-setmatrix}def/+initgraphics{-initgraphics
+initmatrix
+initclip}def/+initclip{psave
m
-currentmatrix
-initclip
+defaultmatrix
page-clip
prestore
clip
-setmatrix
prestore}def/+showpage{+copypage
+erasepage
+initgraphics}def/+copypage{page-edges
spot
1
add
dup
spots
eq{-copypage
-erasepage
pop
0}if/spot
exch
def}def/+erasepage{-gsave
+initgraphics
page-clip
prestore
1
setgray
fill
-grestore}def/+restore{spot
exch
-restore
dup
spot
ne{dup
spot
exch
fix-gstate/spot
exch
def}{pop}ifelse}def/+gsave{-gsave
m
-currentmatrix
spot
arrdef}def/+grestore{-grestore
m
-currentmatrix
arrload{spot
fix-gstate}if}def/+grestoreall{-grestoreall
m
-currentmatrix
arrload{spot
fix-gstate}if}def/+currentmatrix{-currentmatrix
dup
spot
arrdef}def/+setmatrix{dup
-setmatrix
dup
arrload{spot
fix-trans
pop}{(bad setmatrix: )print
==}ifelse}def
pods{/pod
exch
def
userdict
pod[$Nup/begin
load
pod
namestr
cvs
dup
length/l
exch
def
+s
exch
1
exch
putinterval
+s
0
l
1
add
getinterval
cvn
cvx/end
load]cvx
put}forall
end
initgraphics