shithub: riscv

ref: ca9d65e40b3f78d2580fff9ff1844bad1be08673
dir: /sys/src/cmd/postscript/postgif/postgif.ps/

View raw version
%
% Version 3.3.2 prologue for GIF pixmap 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
/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

/done {/lastpage where {pop lastpage} if} def

/alignment false def

/gifscreen { % scrwidth scrheight $
    2 copy

    alignment {
    	100 dup dtransform exch 100 exch div abs exch 100 exch div abs
	2 copy scale
	/height exch height exch div def
	/width exch width exch div def
    } if

    height exch div exch width exch div
    2 copy lt { pop } { exch pop } ifelse

    alignment { cvi } if

    dup scale

    neg 2 div exch neg 2 div exch translate
} def

/gifimage { % gray imagewidth imageheight xorigin yorigin $
    translate
    2 copy scale
    /imageheight exch def
    /imagewidth exch def
    /gray exch def
    imagewidth imageheight 8 [imagewidth 0 0 imageheight neg 0 imageheight]
    gray {
	{ currentfile codestr readhexstring pop } image
    } {
	/colorimage where {
	    pop
	    /picstr imagewidth 3 mul string def
	    { currentfile codestr readhexstring pop pop
	    	0 1 imagewidth 1 sub {
		    picstr exch dup 3 mul exch colortbl exch codestr exch get
		    3 mul 3 getinterval putinterval
	    	} for picstr
	    } false 3 colorimage
	} {
	    { currentfile codestr readhexstring pop pop
	    	0 1 imagewidth 1 sub {
		    codestr exch dup graytbl exch codestr exch get get put
	    	} for codestr
	    } image
	} ifelse
    } ifelse
} def