#! /bin/csh -f 
# Last edited on 2025-05-01 18:28:21 by stolfi

set usage = "$0 [-originalColors|-stretchedColors] TESTNAME"

set stretched = 0
while ( ( $#argv > 0 ) && ( "/$1" =~ /-* ) )
  if ( ( $#argv >= 1 ) && ( "/$1" == "/-originalColors" ) ) then
    set stretched = 0; shift
  else if ( ( $#argv >= 1 ) && ( "/$1" == "/-stretchedColors" ) ) then
    set stretched = 1; shift
  else
    echo "unrecognized option $1"; exit 1
  endif
end

if ( $#argv != 1 ) then
  echo "usage: ${usage}"; exit 1
endif

set name = "$1"; shift;

set gawkopts = ( )
set pops = \
  ( \
    `cat ${name}.parms | sed -e 's/[#].*//g' | egrep '[-](inGamma|logScale)'` \
    '###' \
  )

while ( $#pops >= 2 )
  if ( ( $#pops >= 4 ) && ( "/${pops[1]}" == "/-inGamma" ) ) then
    set gawkopts = \
      ( ${gawkopts} -v "gmr=${pops[2]}" -v "gmg=${pops[3]}" -v "gmb=${pops[4]}" )
    shift pops; shift pops; shift pops; shift pops;
  else if ( ( $#pops >= 1 ) && ( "/${pops[1]}" == "/-logScale" ) ) then
    set gawkopts = ( ${gawkopts} -v "logScale=1" )
    shift pops;
  else
    echo "unrecognized parms option ${pops[1]}"; exit 1
  endif
end

set gawkopts = ( ${gawkopts} -v "showStretched=${stretched}" )

if ( ${stretched} ) then
  set ppmin = "${name}-xx.ppm"
else
  set ppmin = "${name}.ppm"
endif

set parms = "${name}.parms"

set tmp = "/tmp/$$-${name}"

set hist = "${tmp}.hst"

set gvpxs = "${tmp}.gvpxs"
set gvtet = "${tmp}.gvtet"
set gvtop = "${tmp}.gvtop"

# Add to the prog path some likely locations of tools used
set path = ( ../tools ../../tools ../../../tools ${path} )
set foo = `find ${path} -name ppmhist-to-geomview -print | head -1`
set tooldir = "./${foo:h}"

# Compute color histogram:
cat ${ppmin} \
   | pnmdepth 127 \
   | pnmdepth 255 \
   | ppmhist \
   | gawk '/^ *[0-9]/{print;}' \
   | sort -b -k4nr \
   > ${hist}

# Create geomview file with pixel cloud:
cat ${hist} \
  | ppmhist-to-geomview \
      -f ${tooldir}/color-conv.gawk \
      -v offDir=${tooldir} \
      ${gawkopts} \
  > ${gvpxs}

# Create geomview object showing color tetrahedron:
cat ${parms} \
  | parms-to-geomview \
      -f ${tooldir}/color-conv.gawk \
      -v offDir=${tooldir} \
      ${gawkopts} \
  > ${gvtet}

# Create top-level geomview file:
/bin/rm -f ${gvtop}
echo "{ appearance {" >> ${gvtop}
echo "    lighting { ambient 1 1 1 }" >> ${gvtop}
echo "  }" >> ${gvtop}
echo "  LIST" >> ${gvtop}
echo "  { geom { < ${gvpxs} } } " >> ${gvtop}
echo "  { geom { < ${gvtet} } } " >> ${gvtop}
echo "}" >> ${gvtop}

# Run geomview:
geomview \
    -b 0.9 0.9 0.9 \
    -c '(bbox-draw allgeoms no)' \
    -c '(ui-panel geomview off)' \
    -c '(ui-panel tools off)' \
  ${gvtop}

# Cleanup:
rm ${hist} ${gvpxs} ${gvtet} ${gvtop}
