#!/bin/sh

usage="usage: `basename $0` DPI [ half ]"

if [ $# -lt 1 -o $# -gt 2 ]; then
	echo 1>&2 $usage
	exit 1
fi

if [ X"$1" = X"-help" ]; then
	echo $usage
	exit 0
fi

dpi=$1

case "$2" in
  half|Half|HALF)
	half="_half";;
  *)
	half="";;
esac

modename=`modename "$@"`

blacker=`\
	{	echo     "scale = 10"
		echo     "b = 0.005 * ( 280 - $dpi )"
		echo     "if ( b < 0 ) { b = 0 }"
		echo     "if ( 1 < b ) { b = 1 }"
		echo     "scaled = 1"
		echo     "b / 1"
	} | bc`

o_correction=`\
	{	echo     "scale = 10"
		if [ $half ]; then
			echo "o = 0.002 * ( ( $dpi / 2 ) - 100 )"
		else
			echo "o = 0.002 * ( $dpi - 100 )"
		fi
		echo     "if ( o < 0 ) { o = 0 }"
		echo     "if ( 1 < o ) { o = 1 }"
		echo     "scaled = 1"
		echo     "o / 1"
	} | bc`

{	echo     "%%"
	echo     "%%  mode_def.mf"
	echo     "%%"
	echo     "%%      Aug 3, 1992.    miyu@ftp.tohoku.ac.jp"
	echo     ""
	if [ $half ]; then
		echo "% $dpi""x`expr $dpi / 2` dpi"
	else
		echo "% $dpi dpi"
	fi
	echo     "mode_def $modename ="
	echo     "  proofing:=0;"
	echo     "  fontmaking:=1;"
	echo     "  tracingtitles:=0;"
	echo     "  pixels_per_inch:=$dpi;"
	echo     "  blacker:=$blacker;"
	echo     "  fillin:=0;"
	echo     "  o_correction:=$o_correction;"
	if [ $half ]; then
		echo "  aspect_ratio:=1/2;"
	fi
	echo     "enddef;"
	echo     ""
	echo     "localfont:=$modename;"
	echo     ""
	echo     "% Patch plain base"
	echo     "def drawdot expr z = if unknown currentpen_path: def_pen_path fi"
	echo     "  addto_currentpicture contour"
	echo     "  currentpen_path shifted (z.t_) withpen penspeck enddef;"
	echo     ""
} >mode_def-$dpi$half.mf

exit 0

