#! /bin/bash -u
# Last edited on 2026-10-23 20:58:31 by stolfi

show_4_clusters="$1"; shift
show_6_clusters="$1"; shift
show_ellipses="$1"; shift
show_sequence="$1"; shift

WORK="${HOME}/projects/voynich/work"
BIN="${HOME}/bin"

ofile=annotated-${show_4_clusters}-${show_6_clusters}-${show_ellipses}-${show_sequence}.png

make -f raw.make raw.png 

source define_points.sh

# Lower left:
label_cluster_0=( )
points_cluster_0=(
    -C ${pt20[@]} 04 \
    -C ${pt48[@]} 04 \
    -C ${pt58[@]} 04 \
    -C ${pt52[@]} 04 \
    -C ${pt51[@]} 04 \
    -C ${pt53[@]} 04 \
    -C ${pt55[@]} 04 \
    -C ${pt56[@]} 04 \
    -C ${pt57[@]} 04 \
    -C ${pt59[@]} 04 \
)

# Bottom:
label_cluster_1=( )
points_cluster_1=(
    -C ${pt18[@]} 04 \
    -C ${pt16[@]} 04 \
    -C ${pt19[@]} 04 \
    -C ${pt21[@]} 04 \
    -C ${pt17[@]} 04 \
    -C ${pt15[@]} 04 \
)

# Lower right:
label_cluster_2=( )
points_cluster_2=(
    -C ${pt14[@]} 04 \
    -C ${pt13[@]} 04 \
    -C ${pt05[@]} 04 \
    -C ${pt11[@]} 04 \
    -C ${pt10[@]} 04 \
    -C ${pt04[@]} 04 \
    -C ${pt08[@]} 04 \
    -C ${pt12[@]} 04 \
    -C ${pt02[@]} 04 \
    -C ${pt06[@]} 04 \
    -C ${pt01[@]} 04 \
    -C ${pt07[@]} 04 \
    -C ${pt03[@]} 04 \
    -C ${pt09[@]} 04 \
)

# Upper left:
label_cluster_3=( )
points_cluster_3=(
    -C ${pt49[@]} 04 \
    -C ${pt46[@]} 04 \
    -C ${pt50[@]} 04 \
    -C ${pt47[@]} 04 \
    -C ${pt54[@]} 04 \
)

# Upper right:
label_cluster_4=( )
points_cluster_4=(
    -C ${pt26[@]} 04 \
    -C ${pt24[@]} 04 \
    -C ${pt22[@]} 04 \
    -C ${pt23[@]} 04 \
    -C ${pt27[@]} 04 \
    -C ${pt25[@]} 04 \
)

# Upper middle:
label_cluster_5=( )
points_cluster_5=(
    -C ${pt38[@]} 04 \
    -C ${pt32[@]} 04 \
    -C ${pt40[@]} 04 \
    -C ${pt42[@]} 04 \
    -C ${pt43[@]} 04 \
    -C ${pt29[@]} 04 \
    -C ${pt41[@]} 04 \
    -C ${pt30[@]} 04 \
    -C ${pt36[@]} 04 \
    -C ${pt37[@]} 04 \
    -C ${pt45[@]} 04 \
    -C ${pt39[@]} 04 \
    -C ${pt44[@]} 04 \
    -C ${pt35[@]} 04 \
)

# Upper outliers:
label_cluster_6=( )
points_cluster_6=(
    -C ${pt34[@]} 04 \
    -C ${pt33[@]} 04 \
)

# Middle outliers:
label_cluster_7=( )
points_cluster_7=(
    -C ${pt28[@]} 04 \
    -C ${pt31[@]} 04 \
)

# Ellipsoids:
ellip_cluster_0=(     -E 101 349  +018 -008  +017 +040 1.5 )
ellip_cluster_1=(     -E 446 310  +007 +009  +025 -019 1.5 )
ellip_cluster_2=(     -E 318 442  +003 +012  +046 -010 1.5 )
ellip_cluster_3=(     -E 120 205  +000 +011  +049 +000 1.5 )
ellip_cluster_4=(     -E 426 164  +018 -017  +022 +024 1.5 )
ellip_cluster_5=(     -E 246 136  +000 +014  +042 -000 1.5 )
ellip_cluster_34567=( -E 269 153  +004 +042  +103 -009 1.5 )

show_separators=0
if [[ ( ${show_4_clusters} -ne 0 ) || ( ${show_6_clusters} -ne 0 ) ]]; then
  if [[ ${show_sequence} -eq 0 ]]; then
    show_separators=1
  fi
fi

separators=()
color_cluster_0="blue"
color_cluster_1="blue"
color_cluster_2="blue"
color_cluster_3="blue"
color_cluster_4="blue"
color_cluster_5="blue"
color_cluster_6="blue"
color_cluster_7="blue"
if [[ ${show_4_clusters} -ne 0 ]]; then
  if [[ ${show_separators} -ne 0 ]]; then
    separators+=( \
      -S 300 300  100 520 \
      -S 300 300  520 445 \
      -S 300 300  520 220 \
      -S 300 300  020 250 \
    )
  fi
  color_cluster_0="red"
  label_cluster_0=( -T 040 450 0.5 0.5 "A" )
  color_cluster_1="purple"
  label_cluster_1=( -T 500 360 0.5 0.5 "C" )
  color_cluster_2="green"
  label_cluster_2=( -T 340 500 0.5 0.5 "B" )
  label_cluster_5=( -T 230 040 0.5 0.5 "D" )
  if [[ ${show_ellipses} -ne 0 ]]; then
    ellipses=( \
      ${ellip_cluster_0[@]} \
      ${ellip_cluster_1[@]} \
      ${ellip_cluster_2[@]} \
      ${ellip_cluster_34567[@]} \
    )
  fi
  if [[ ${show_6_clusters} -ne 0 ]]; then
    if [[ ${show_separators} -ne 0 ]]; then
      separators+=( \
        -S 360 278  020 100  \
        -S 360 278  360 020  \
        -S 360 170  204 196  \
        -S 170 020  360 130  \
      ) 
    fi
    color_cluster_3="cyan"
    label_cluster_3=( -T 040 160 0.5 0.5 "D3" )
    color_cluster_4="magenta"
    label_cluster_4=( -T 470 090 0.5 0.5 "D1" )
    label_cluster_5=( -T 150 070 0.5 0.5 "D2" )
    color_cluster_6="lightgray"
    color_cluster_7="lightgray"
    if [[ ${show_ellipses} -ne 0 ]]; then
      ellipses=( \
        ${ellip_cluster_0[@]} \
        ${ellip_cluster_1[@]} \
        ${ellip_cluster_2[@]} \
        ${ellip_cluster_3[@]} \
        ${ellip_cluster_4[@]} \
        ${ellip_cluster_5[@]} \
      )
    fi
  fi
fi
sequence=()
if [[  ${show_sequence} -ne 0 ]]; then
  sequence=( -S \
    ${pt01[@]} ${pt02[@]} ${pt03[@]} ${pt04[@]} ${pt05[@]} \
    ${pt06[@]} ${pt07[@]} ${pt08[@]} ${pt09[@]} ${pt10[@]} \
    ${pt11[@]} ${pt12[@]} ${pt13[@]} ${pt14[@]} ${pt15[@]} \
    ${pt16[@]} ${pt17[@]} ${pt18[@]} ${pt19[@]} ${pt20[@]} \
    ${pt21[@]} ${pt22[@]} ${pt23[@]} ${pt24[@]} ${pt25[@]} \
    ${pt26[@]} ${pt27[@]} ${pt28[@]} ${pt29[@]} ${pt30[@]} \
    ${pt31[@]} ${pt32[@]} ${pt33[@]} ${pt34[@]} ${pt35[@]} \
    ${pt36[@]} ${pt37[@]} ${pt38[@]} ${pt39[@]} ${pt40[@]} \
    ${pt41[@]} ${pt42[@]} ${pt43[@]} ${pt44[@]} ${pt45[@]} \
    ${pt46[@]} ${pt47[@]} ${pt48[@]} ${pt49[@]} ${pt50[@]} \
    ${pt51[@]} ${pt52[@]} ${pt53[@]} ${pt54[@]} ${pt55[@]} \
    ${pt56[@]} ${pt57[@]} ${pt58[@]} ${pt59[@]} \
  )
fi  

echo "annotating ..." 1>&2
annotate_image.sh raw.png \
    -textsize 32 \
    -strokewidth 2.0 \
    -strokecolor red \
    ${sequence[@]} \
    -strokecolor lightgreen \
     \
    ${separators[@]} \
     \
    -strokewidth 1.0 \
    -strokecolor orange \
    -fillcolor none \
    ${ellipses[@]} \
     \
    -strokewidth 1.0 \
    -strokecolor black \
     \
    -fillcolor ${color_cluster_0} \
    ${points_cluster_0[@]} \
    -fillcolor ${color_cluster_1} \
    ${points_cluster_1[@]} \
    -fillcolor ${color_cluster_2} \
    ${points_cluster_2[@]} \
    -fillcolor ${color_cluster_3} \
    ${points_cluster_3[@]} \
    -fillcolor ${color_cluster_4} \
    ${points_cluster_4[@]} \
    -fillcolor ${color_cluster_5} \
    ${points_cluster_5[@]} \
    -fillcolor ${color_cluster_6} \
    ${points_cluster_6[@]} \
    -fillcolor ${color_cluster_7} \
    ${points_cluster_7[@]} \
     \
    -strokecolor none \
    -textcolor black \
    ${label_cluster_0[@]} \
    ${label_cluster_1[@]} \
    ${label_cluster_2[@]} \
    ${label_cluster_3[@]} \
    ${label_cluster_4[@]} \
    ${label_cluster_5[@]} \
    ${label_cluster_6[@]} \
    ${label_cluster_7[@]} \
  > ${ofile}
