#!/bin/sh

fx="$1"; export fx
[ ! "${fx}" ] && exit
[ ! -s "${fx}" ] && exit

mar=22; export mar
row="$( head -1 ${fx} )"; export row
w="${#row}"; export w
w=$(( ${w} - 2 ))
h="$( cat ${fx} | wc -l | tr -dc "[0-9]" )"; export h
h=$(( ${h} - 2 ))

wrk="tmp/getcode.$$.wrk"; export wrk

xinc="$( echo "6 k ${w} ${mar} - ${mar} - 45 / p q" | dc )"; export xinc
xstart="$( echo "6 k ${xinc} 2 / ${mar} + p q" | dc )"; export xstart
xend="$( echo "6 k ${w} ${mar} - 2 + p q" | dc )"; export xend

yinc="$( echo "6 k ${h} ${mar} - ${mar} - 45 / p q" | dc )"; export yinc
ystart="$( echo "6 k ${yinc} 2 / ${mar} + p q" | dc )"; export ystart
yend="$( echo "6 k ${h} ${mar} - 2 + p q" | dc )"; export yend

y=${ystart}
yr="$( echo "6 k ${y} 0.5 + p q" | dc )"; export yr
yn="$( echo "0 k ${yr} 1 / p q" | dc )"; export yn
yendn="$( echo "0 k ${yend} 1 / p q" | dc )"; export yendn
while [ ${yn} -lt ${yendn} ]
do

x=${xstart}
xr="$( echo "6 k ${x} 0.5 + p q" | dc )"; export xr
xn="$( echo "0 k ${xr} 1 / p q" | dc )"; export xn
xendn="$( echo "0 k ${xend} 1 / p q" | dc )"; export xendn
while [ ${xn} -lt ${xendn} ]
do
####echo "${xn} ${yn}"
<${fx} head -${yn} | tail -1 | cut -c ${xn}-${xn} | tr -d "\n"
x="$( echo "6 k ${x} ${xinc} + p q" | dc )"
xn="$( echo "0 k ${x} 1 / p q" | dc )"; export xn
done
echo ""

y="$( echo "6 k ${y} ${yinc} + p q" | dc )"
yn="$( echo "0 k ${y} 1 / p q" | dc )"; export yn
done
