#!/bin/sh -eu

# Make png+map files in OUT_DIR dir
#
# Arguments: names with or without paths.
# No arguments: process all new vmap files
# Version for mapsoft2, 2025-01-03

##################################################

# read global configuration and functions
. vmaps.sh ||:

# read local configuration
. ./vmaps.conf ||:

if [ "$OUT_DIR" = "" ]; then
  echo "vmaps_png: OUT_DIR is not set, exiting"
  exit
fi

##################################################

# Update colormap if needed
if [ ! -f "$CMAP" ]; then
  echo "Colormap is missing. Updating $CMAP"
  vmap_update_cmap $CMAP_SRC $CMAP
fi

##################################################
# If argument list is empty, find only old files
files=${@:-$(list_vmap_nt_png)}

# check that git is clean (print warnings, ignore result)
vmap_git_status_list $files ||:

##################################################
mkdir -p "$OUT_DIR"
for i in $files; do
  name=${i%.*}
  name=${name##*/}
  vmap="$VMAP_DIR/$name.$VMAP_EXT"
  if [ ! -f "$vmap" ]; then
    echo "can't find file: $vmap"
    continue
  fi

  png="$OUT_DIR/$name.png"
  jpg="$OUT_DIR/$name.jpg"
  map="$OUT_DIR/$name.map"

  # Update PNG and MAP
  echo "Making PNG and MAP: $name"
  title="$name  /last commit: $(vmap_git_date "$vmap"), render: $(date "+%Y-%m-%d")"
  vmap_render_map "$vmap" "$name" "$png" "$map" "$title"

  # Update jpeg preview
  pngtopnm "$png" | pnmscale 0.2 | cjpeg -quality 70 > "$jpg"
done
