home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / cmds / root.3 / usr / lib / lp / postscript / postdmd.ps / postdmd
Text File  |  1998-08-19  |  3KB  |  125 lines

  1. %ident    "@(#)postdmd.ps    1.2"
  2. %
  3. % Version 3.15 prologue for DMD bitmap files.
  4. %
  5.  
  6. /#copies 1 store
  7. /aspectratio 1 def
  8. /formsperpage 1 def
  9. /landscape false def
  10. /magnification 1 def
  11. /margin 0 def
  12. /orientation 0 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 neg 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
  125.