|
|
1.1 root 1: %
2: % Version 3.3.1 prologue for DMD bitmap files.
3: %
4:
5: /#copies 1 store
6: /aspectratio 1 def
7: /formsperpage 1 def
8: /landscape false def
9: /magnification 1 def
10: /margin 0 def
11: /orientation 0 def
12: /rotation 1 def
13: /screenres 100 def
14: /xoffset 0 def
15: /yoffset 0 def
16:
17: /useclippath true def
18: /pagebbox [0 0 612 792] def
19:
20: /inch {72 mul} bind def
21: /min {2 copy gt {exch} if pop} bind def
22:
23: /setup {
24: counttomark 2 idiv {def} repeat pop
25:
26: landscape {/orientation 90 orientation add def} if
27:
28: pagedimensions
29: xcenter ycenter translate
30: orientation rotation mul rotate
31: xoffset inch yoffset inch translate
32: magnification dup aspectratio mul scale
33:
34: /height height margin sub def
35: /width width margin sub def
36: } def
37:
38: /pagedimensions {
39: useclippath {
40: /pagebbox [clippath pathbbox newpath] def
41: } if
42: pagebbox aload pop
43: 4 -1 roll exch 4 1 roll 4 copy
44: landscape {4 2 roll} if
45: sub /width exch def
46: sub /height exch def
47: add 2 div /xcenter exch def
48: add 2 div /ycenter exch def
49: userdict /gotpagebbox true put
50: } def
51:
52: /pagesetup {/page exch def} bind def
53:
54: /bitmap {
55: /scanlines exch def
56: /scanlength exch def
57: /flip exch def
58: /v8format exch def
59:
60: /bytelength scanlength 8 idiv def
61: /picstr bytelength string def
62: /lpicstr bytelength string def
63: /bytelength bytelength 1 sub def
64:
65: gsave
66:
67: % First the overall scaling.
68:
69: height scanlines div width scanlength div min
70: 72 screenres div min
71: dup scale
72:
73: % Followed by the one for the unit square.
74:
75: scanlength neg 2 div scanlines neg 2 div translate
76: scanlength scanlines scale
77: v8format {getv8bitmap} {getbitmap} ifelse
78: grestore
79: } bind def
80:
81: /getbitmap {
82: scanlength scanlines flip [scanlength 0 0 scanlines neg 0 scanlines] {
83: 0 {
84: currentfile token pop dup
85: 0 eq {pop pop exit} if
86: /charcount exch def
87: picstr 1 index charcount getinterval
88: /repl exch def
89: currentfile repl readhexstring pop pop
90: charcount add
91: currentfile token pop {
92: picstr 1 index repl putinterval
93: charcount add
94: } repeat
95: } loop
96: picstr
97: } imagemask
98: } bind def
99:
100: /getv8bitmap {
101: scanlength scanlines flip not [scanlength 0 0 scanlines neg 0 scanlines] {
102: 0 {
103: currentfile token pop dup
104: 0 eq {pop pop exit} if
105: /charcount exch def
106: picstr 1 index charcount getinterval
107: /repl exch def
108: currentfile repl readhexstring pop pop
109: charcount add
110: currentfile token pop {
111: picstr 1 index repl putinterval
112: charcount add
113: } repeat
114: } loop
115: 0 0 picstr {
116: exch lpicstr exch get xor
117: lpicstr exch 2 index exch put
118: 1 add dup
119: } forall
120: pop pop lpicstr
121: } imagemask
122: } bind def
123:
124: /done {/lastpage where {pop lastpage} if} def
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.