#!/bin/bash
#	convertir imagenes pixelares a vectores (SVG)
#	AGPLv3+ - Ernesto Bazzano - 2021


TEMP=$1
SALIDA=$2

ENTRADA="$*"
SALIDA="${ENTRADA%%.*}.svg"
TEMP=$(mktemp -d)
echo $TEMP
COLORES=$(convert $ENTRADA -format %c -alpha off histogram:info:- | grep -o "#.*\ " )
echo "$COLORES"| while read COLORA; do
	[ "#FFFFFF" == "$COLORA" ] && FG="white" || FG="black"
	[ "#FFFFFF" == "$COLORA" ] && BG="black" || BG="white"
	[ "#FFFFFF" == "$COLORA" ] && INVERT="-negate" || INVERT=""
	convert "$ENTRADA" -background $BG -flatten -alpha off -fill $BG $( echo "$COLORES" | while read COLORB; do
		[ "$COLORA" == "$COLORB" ] && continue
		echo " -opaque $COLORB "
	done) -fill $FG -opaque "$COLORA" -threshold 50% -colors 2 $INVERT ppm:- \
	| potrace -C "$COLORA" --fillcolor "#000000" --opaque -s -o "$TEMP/${COLORA}.svg"
done

echo $(cat $(ls $TEMP/*svg | head -n1)) | grep -o "^.*metadata>" > $SALIDA
ls -S "$TEMP" | while read F; do
	cat "$TEMP/$F" | tr "\n" " " | grep -o "<g.*</g>"
done  >> $SALIDA
echo "</svg>" >> $SALIDA

## Idea
# - convierte las capas de color en PNG
# - convierte cada color en un svg
#- une los SVGs
# - vector magico!