#! /bin/bash
# Last edited on 2023-09-27 07:15:06 by stolfi

# Replaces the coordinates of feature points [PQ][0-9] in "align/raw/*.ipts"
# by the adjusted coordinates in "align/adj/out/*.ipts".  Also saves
# the old files to "align/raw/SAVE/{DATE}/" and "align/ajd/SAVE/{DATE}/".

rawdir="align/raw"
adjdir="align/adj/out"

tmp="/tmp/$$"

today="`yyyy-mm-dd`"
rawdir_save="align/raw/SAVE/${today}"
adjdir_save="align/adj/SAVE/${today}"
mkdir -pv ${rawdir_save} ${adjdir_save}

iptfiles=( `cd ${rawdir} && ls [a-z][a-z][0-9][0-9][0-9][ab].ipts` )

for iptf in ${iptfiles[@]}; do 
  echo "=== ${iptf} ===" 1>&2
  
  for dir in ${rawdir} ${adjdir} ; do 
    if [[ ! ( -s ${dir}/${iptf} ) ]]; then
      echo "** file ${dir}/${iptf} not found" 1>&2; exit 1
    fi
  done
  
  # Convert the adjusted ".ipts" file to a {sed} file: 
  sedf="${tmp}.sed"
  cat ${adjdir}/${iptf} \
    | gawk \
        ' /^[PQ][0-9][ ]/ { 
            tag = $1; x = $2; y = $3; 
            printf "/^%s /s:[ ].*: %6.1f %6.1f:g\n", tag, x, y;
          }
        ' \
    > ${sedf}

  printf "........................................\n"
  cat ${sedf} 1>&2
  printf "........................................\n"
  
  # Apply the {sed} file to the raw file:
  cat ${rawdir}/${iptf} \
    | sed -f ${sedf} \
    > ${rawdir}/${iptf}.new
    
  prdiff -Bb ${rawdir}/${iptf} ${rawdir}/${iptf}.new 1>&2 
  rm -f ${sedf}
  
  mv -vi ${rawdir}/${iptf} ${rawdir_save}/
  mv -vi ${rawdir}/${iptf}.new ${rawdir}/${iptf}
  
  mv -vi ${adjdir}/${iptf} ${adjdir_save}/
done

mv -vi align/adj/deltas_by_hand.txt ${adjdir_save}/
