%!PS-Adobe-2.0 EPSF-2.0 %%Title: /home/fred/TEMP/rule.ps %%Creator: XV Version 3.10a+FLmask Rev: 12/29/94 - by John Bradley %%BoundingBox: 290 380 786 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 496 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) 496.00800 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 438 string def % load up the colormap currentfile cmap readhexstring 041600 051800 061c00 061d00 072100 080808 082000 082200 082400 082500 082700 092800 092a00 092b00 092c00 0a2c00 0a2e00 0b3000 0b3300 0c3400 0c3500 0c3600 0c3700 0d3800 0d3a00 0d3b00 0d3c00 0e3c00 0e3d00 0e3e00 0e3f00 0f4000 0f4100 0f4300 0f4400 104200 104400 104500 104600 104800 111111 114800 114900 114a00 114b00 114c00 124c00 124d00 124e00 124f00 125000 135000 135200 145300 145400 145600 145700 145800 155800 155900 155a00 155b00 155c00 165c00 165d00 165e00 165f00 166000 176000 176100 176200 176400 176500 186400 186500 186600 186700 186800 196900 196a00 196b00 196c00 1a1a1a 1a6d00 1a6e00 1a6f00 1a7100 1b7100 1b7200 1b7300 1c7400 1c7500 1c7600 1c7700 1c7800 1c7900 1d7a00 1d7b00 1d7c00 1d7d00 1e7d00 1e7e00 1e7f00 1e8000 1e8100 1e8200 1f8200 1f8300 1f8400 1f8500 208500 208700 208800 208900 208a00 218a00 218b00 218c00 218d00 218e00 228c00 228e00 228f00 229000 229200 232323 239400 239600 249700 249800 249900 249a00 259b00 259e00 26a000 26a100 27a300 27a400 27a500 27a600 28a800 2b2b2b 343434 3d3d3d 464646 4f4f4f 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 496 32 8 % dimensions of data [496 0 0 -32 0 32] % mapping matrix rlecmapimage 9300010206080b0f111316191d202126292a2c2e2f812f3081303108317f337f337f332d 3309310130012f922e2c2a292621201d191613110f0b0806020100 8f010207090c1012171b1f24292c303336853637383a3b3c813c3d083d7f3f7f3f7f3f2d 3f093d013c843b3a3837368f3633302c29241f1b1712100c09070201 9503070a0e11141a1f252b3034373b3e414546494a4b4c814c4d084d7f4e7f4e7f4e2d4e 094d014c944b4a494645413e3b3734302b251f1a14110e0a0703 9404090e11151b23292f36393f44494c4f515455575881585981595a075a7f5b7f5b7f5b 2d5b085a0159015893575554514f4c49443f39362f29231b15110e0904 96090d11151c222b32383e464c5055595c5e60626365666781676807687f6a7f6a7f6a2d 6a086801679566656362605e5c5955504c463e38322b221c15110d09 960b10141b222c343b434b51565c6165696c6f707274757681767707777f7a7f7a7f7a2d 7a0877017695757472706f6c6965615c56514b433b342c221b14100b 960f1218232b343c454d555c61686d71767b7c7e7f80818281828307837f847f847f842d 84088301829581807f7e7c7b76716d68615c554d453c342b2318120f 9611161e27323b454e565e666e747b7e818485868788898a818a8b078b7f8c7f8c7f8c2d 8c088b018a95898887868584817e7b746e665e564e453b32271e1611 88131b242f37424d57057f057f057f055d058828574d42372f241b13 89161e29343d48545d05287f287f287f285b288952285d54483d34291e16 8a18212d37434f5a630528527f527f527f5259528a7d5228635a4f43372d2118 8b1b26323c47555f6b0528527d7f7d7f7d7f7d577d8b8d7d52286b5f55473c32261b 8c1e2935404d58646f0528527d8d7f8d7f8d7f8d558d8c8e8d7d52286f64584d4035291e 8d1f2b36424f5b67730528527d8d8e7f8e7f8e7f8e538e8d8f8e8d7d522873675b4f4236 2b1f 8e202c3745515d6a780528527d8d8e8f7f8f7f8f7f8f518f8e908f8e8d7d5228786a5d51 45372c20 8f232e3846535e6b790528527d8d8e8f907f907f907f904f908f91908f8e8d7d5228796b 5e5346382e23 8f232e3846535e6b790528527d8d8e8f917f917f917f9150918e908f8e8d7d5228796b5e 5346382e23 8e202c3745515d6a780528527d8d8e907f907f907f9052908d8f8e8d7d5228786a5d5145 372c20 8d1f2b36424f5b67730528527d8d8f7f8f7f8f7f8f548f8c8e8d7d522873675b4f42362b 1f 8c1e2935404d58646f0528527d8e7f8e7f8e7f8e568e8b8d7d52286f64584d4035291e 8b1b26323c47555f6b0528528d7f8d7f8d7f8d588d8a7d52286b5f55473c32261b 8a18212d37434f5a6305287d7f7d7f7d7f7d5a7d895228635a4f43372d2118 89161e29343d48545d05527f527f527f525c5288285d54483d34291e16 88131b242f37424d57287f287f287f285e2887574d42372f241b13 9611161e27323b454e565e666e747b7e818485868788898a818a8b078b7f8c7f8c7f8c2d 8c088b018a95898887868584817e7b746e665e564e453b32271e1611 960f1218232b343c454d555c61686d71767b7c7e7f80818281828307837f847f847f842d 84088301829581807f7e7c7b76716d68615c554d453c342b2318120f 960b10141b222c343b434b51565c6165696c6f707274757681767707777f7a7f7a7f7a2d 7a0877017695757472706f6c6965615c56514b433b342c221b14100b 96090d11151c222b32383e464c5055595c5e60626365666781676807687f6a7f6a7f6a2d 6a086801679566656362605e5c5955504c463e38322b221c15110d09 9404090e11151b23292f36393f44494c4f515455575881585981595a075a7f5b7f5b7f5b 2d5b085a0159015893575554514f4c49443f39362f29231b15110e0904 9503070a0e11141a1f252b3034373b3e414546494a4b4c814c4d084d7f4e7f4e7f4e2d4e 094d014c944b4a494645413e3b3734302b251f1a14110e0a0703 8f010207090c1012171b1f24292c303336853637383a3b3c813c3d083d7f3f7f3f7f3f2d 3f093d013c843b3a3837368f3633302c29241f1b1712100c09070201 9300010206080b0f111316191d202126292a2c2e2f812f3081303108317f337f337f332d 3309310130012f922e2c2a292621201d191613110f0b0806020100 % % Compression made this file 3.30% of the uncompressed size. % showpage % stop using temporary dictionary end % restore original state origstate restore %%Trailer