blob: 9ab22130447b0849b27b8c6fb15c6abb3ac07ba7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
|
%!PS-Adobe-2.0 EPSF-2.0
%%Title: /home/fred/TEMP/bullet.ps
%%Creator: XV Version 3.10a+FLmask Rev: 12/29/94 - by John Bradley
%%BoundingBox: 290 380 322 412
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% define space for color conversions
/grays 32 string def % space for gray scale line
/npixls 0 def
/rgbindx 0 def
% lower left corner
290 380 translate
% size of image (on paper, in 1/72inch coords)
31.96800 31.96800 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays 0 npixls getinterval
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 480 string def
% load up the colormap
currentfile cmap readhexstring
020d00 021000 031100 031300 041400 041600 051700 051800 051c00 051d00
061c00 061d00 061f00 072100 072300 072400 082000 082200 082400 082600
082700 082800 092900 092a00 092b00 092c00 0a2c00 0a2d00 0a2e00 0a2f00
0a3000 0a3100 0b3000 0b3200 0b3400 0c3200 0c3500 0c3600 0c3700 0c3800
0c3900 0d3900 0d3a00 0d3b00 0d3c00 0e3d00 0e3e00 0e3f00 0e4000 0f4100
0f4200 0f4300 0f4600 104200 104500 104700 104800 114900 114a00 114b00
114c00 124d00 125000 125100 135100 135200 135300 145400 145500 145600
145700 155a00 155b00 155d00 165d00 165e00 165f00 166000 17310f 183e0d
186400 186500 186600 186700 186800 186900 191919 192715 193e0d 195f04
196a00 196b00 196c00 196d00 1a1a1a 1a5f04 1a7000 1a7100 1b1c1a 1b6206
1b7200 1b7300 1c1c1c 1c6206 1d1d1d 1d1e1c 1d2b19 1d4312 1e1e1e 1f650a
202020 204615 20650a 212121 222222 232323 242424 246a0e 252525 253f1d
254b1a 272727 292929 294f1e 2a2a2a 2c2c2c 2d2d2d 2e2e2e 2f2f2f 303030
313131 333333 33412f 335928 343434 363636 365c2b 383838 393939 3a3a3a
3a3c39 3b3b3b 3c4a38 3d3d3d 3e3e3e 3e403d 3e5836 3f3f3f 424242 434343
444444 464646 494949 4a4a4a 4b4b4b 4e4e4e 4f4f4f 525252 545454 5a5a5a
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
32 32 8 % dimensions of data
[32 0 0 -32 0 32] % mapping matrix
rlecmapimage
8f0001020406080c110f1418191c1f21238f23211f1c1918140f110c080604020100
8f01030507090c0e15171c2322252728298f2928272522231c17150e0c0907050301
8f0205070a1013161b2324282c2e3035328f3235302e2c2824231b1613100a070502
8f04070a1114171d222a2d3134373a3b3c8f3c3b3a3734312d2a221d1714110a0704
8f060b11141920262b3036393d3f4344458f4544433f3d3936302b26201914110b06
8f080c13171e252c35383d414547494c4d8f4d4c494745413d38352c251e17130c08
8f0c0e161d262c33393e44484c505254558f555452504c48443e39332c261d160e0c
8f0d141b222b35393e464a50545c6064658f6564605c54504a463e39352b221b140d
9f1219232930383e464b515b6175858e918c847b6d615b514b463e383029231912
9f141c242d363d444a515c658899989795938d878278655c514a443d362d241c14
9f172329313a4148505b65929b9c9b9a97948f89837f77655b5048413a31292317
9f1a222c363d464d5461889b9d9e9d9b9896908a86807a6f61544d463d362c221a
9f1c252f384047505d75999c9e9f9e9c9996938b86807c74675d504740382f251c
9f1e27313a424a536085989b9d9e9d9b9896908a86807a746b60534a423a31271e
9f2329353b444c54648e979a9b9c9b9a97948f89837f7a736a64544c443b352923
9f232a333c454d5a659195979899989795938d87827d797269655a4d453c332a23
8b232a333c454d5a658c93949601969194938d8983807c766e62655a4d453c332a23
9f2329353b444c5464848d8f9093908f8d8986817d79736c5764544c443b352923
9f1e27313a424a53607b87898a8b8a898783817e7a746e665860534a423a31271e
8b1c252f384047505d708283860186918382807d7a767168565f5d504740382f251c
8b1a222c363d464d5461787f800180917f7d7c797471685e4f61544d463d362c221a
8d172329313a4148505b65777a7c7a917a7976736e685e4e655b5048413a31292317
8c141c242d363d444a515c656f74927473726e6c66564f655c514a443d362d241c14
9f1219232930383e464b515b61636b6a6962575859615b514b463e383029231912
8f0d141b222b35393e464a50545c6064658f6564605c54504a463e39352b221b140d
8f0c0e161d262c33393e44484c505254558f555452504c48443e39332c261d160e0c
8f080c13171e252c35383d414547494c4d8f4d4c494745413d38352c251e17130c08
8f060b11141920262b3036393d3f4344458f4544433f3d3936302b26201914110b06
8f04070a1114171d222a2d3134373a3b3c8f3c3b3a3734312d2a221d1714110a0704
8f0205070a1013161b2324282c2e3035328f3235302e2c2824231b1613100a070502
8f01030507090c0e15171c2322252728298f2928272522231c17150e0c0907050301
8f0001020406080c110f1418191c1f21238f23211f1c1918140f110c080604020100
%
% Compression made this file 35.06% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer
|