diff options
Diffstat (limited to 'postscript/prologues/postp9bit.ps')
-rw-r--r-- | postscript/prologues/postp9bit.ps | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/postscript/prologues/postp9bit.ps b/postscript/prologues/postp9bit.ps new file mode 100644 index 00000000..ee646331 --- /dev/null +++ b/postscript/prologues/postp9bit.ps @@ -0,0 +1,86 @@ +% +% Version 3.3 prologue for plan9 bitmap files. +% + +/#copies 1 store +/aspectratio 1 def +/formsperpage 1 def +/landscape false def +/magnification 1 def +/margin 0 def +/orientation 0 def +/rotation 1 def +/screenres 100 def +/xoffset 0 def +/yoffset 0 def + +/useclippath true def +/pagebbox [0 0 612 792] def + +/inch {72 mul} bind def +/min {2 copy gt {exch} if pop} bind def + +/setup { + counttomark 2 idiv {def} repeat pop + + landscape {/orientation 90 orientation add def} if + + pagedimensions + xcenter ycenter translate + orientation rotation mul rotate + xoffset inch yoffset inch translate + magnification dup aspectratio mul scale + + /height height margin sub def + /width width margin sub def +} def + +/pagedimensions { + useclippath { + /pagebbox [clippath pathbbox newpath] def + } if + pagebbox aload pop + 4 -1 roll exch 4 1 roll 4 copy + landscape {4 2 roll} if + sub /width exch def + sub /height exch def + add 2 div /xcenter exch def + add 2 div /ycenter exch def + userdict /gotpagebbox true put +} def + +/pagesetup {/page exch def} bind def + +/bitmap { + /scanlines exch def + /scanlength exch def + /bitspersample exch def +%% /v8format exch def + + /bytelength scanlength bitspersample mult 7 add 8 idiv def + /picstr bytelength string def + /lpicstr bytelength string def +%% /bytelength bytelength 1 sub def + + gsave + +% First the overall scaling. + + height scanlines div width scanlength div min + 72 screenres div min + dup scale + +% Followed by the one for the unit square. + + scanlength neg 2 div scanlines neg 2 div translate + scanlength scanlines scale + getp9bitmap + grestore +} bind def + +/getp9bitmap { + scanlength scanlines bitspersample [scanlength 0 0 scanlines neg 0 scanlines] { + currentfile picstr readhexstring pop} image +} bind def + +/done {/lastpage where {pop lastpage} if} def |