%!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