#!/bin/sh
#
# EPSPPMѴ
# (c)1999-2001 ҥ
#
# eps2ppm <inputfile(EPS)> <outputfile(PPM)>
#
awk '
BEGIN {
	bflag = 1
}
{
	if (bflag && ($1 ~ /%%BoundingBox:/)) {
		bx = -$2
		by = -$3
		ex = $4 - $2
		ey = $5 - $3
		printf "%%%%BoundingBox: 0 0 %d %d\n", ex, ey
		printf "%d %d translate\n", bx, by
		bflag = 0
	}
	else print $0
}
END{
	printf "\nshowpage\n"
}' < $1 | \
gs -q -dNOPAUSE -dBATCH -sDEVICE=ppmraw -sOutputFile=$2 `\
awk '
BEGIN {
	wd = 0
	ht = 0
	bflag = 1
}
{
	if (bflag && ($1 ~ /%%BoundingBox:/)) {
		wd = $4 - $2
		ht = $5 - $3
		bflag = 0
	}
}
END {
	r = 72 # 
	maxlen = 200 # ⤵
	minlen = 32 # Ǿ⤵
	if (wd > 0 && ht > 0) {
		if (wd > ht) {
			if (wd > maxlen) {
				r = maxlen * 72 / wd
				ht = ht * maxlen / wd
				wd = maxlen
			}
			else {
				if (ht < minlen) {
					r = minlen * 72 / ht
					wd = wd * minlen / ht
					ht = minlen
				}
			}
		}
		else {
			if (ht > maxlen) {
				r = maxlen * 72 / ht
				wd = wd * maxlen / ht 
				ht = maxlen
			}
			else {
				if (wd < minlen) {
					r = minlen * 72 / wd
					ht = ht * minlen / wd
					wd = minlen
				}
			}
		}
		printf "-g%dx%d -r%d", wd, ht, r
	}
	else {
		printf "-ERROR"
	}
}' < $1` - 2>/dev/null
