Abort on all errors
[fgen.git] / fgen.sh
diff --git a/fgen.sh b/fgen.sh
index b3b1d26..99bc69d 100755 (executable)
--- a/fgen.sh
+++ b/fgen.sh
@@ -3,13 +3,16 @@
 # SPDX-License-Identifier: GPL-2.0
 # Copyright (c) 2023 Hugo Villeneuve <hugo@hugovil.com>
 
+# Abort on all errors
+set -e
+
 PROG_NAME=$(basename $0)
 
 # Set default values
 main_layer="Layer 558"
 
 # Pour conversion vidéo:
-fps=3
+fps=8
 
 debug=0
 
@@ -62,10 +65,9 @@ function get_frame_id()
     frame=$(echo "${1}" | grep -e "label:[0-9]" | ${SED} "s/label:\([0-9]\+\),.*/\1/g")
 
     if [ x"${frame}" = x"" ]; then
-        return 1
+        echo ""
     else
         echo "${frame}"
-        return 0
     fi
 }
 
@@ -88,14 +90,18 @@ print_usage()
     echo
     echo "Options:"
     echo "  -d   affiche les informations de debug"
+    echo "  -r   nombre de trames par seconde (FPS)"
     echo "  -h   affiche ce message d'aide"
 }
 
-while getopts "dh" flag ;do
+while getopts "dhr:" flag ;do
     case ${flag} in
         d)
             debug="1"
             ;;
+        r)
+            fps="${OPTARG}"
+            ;;
        h)
            print_usage
             exit 0
@@ -155,12 +161,8 @@ size=$(get_size "${main_layer}")
 
 log_dbg "CANVAS SIZE=${size}"
 
-rm -f ${dest}/frame*.png
-
-# Extract global frame:
-convert ${IM_OPS} ${src}[1] ${dest}/psd0.png
-
-cp ${dest}/psd0.png ${dest}/temp.png
+# Create background frame:
+convert -size ${size} xc:none ${dest}/background.png
 
 # Remove first line (Layer 558):
 ${SED} -i -e '1d' ${layers}
@@ -168,6 +170,8 @@ ${SED} -i -e '1d' ${layers}
 # Will start at frame 2 at first loop iteration
 f=1
 
+files=""
+
 while read l; do
     f=$((${f} + 1))
 
@@ -184,22 +188,17 @@ while read l; do
         continue
     fi
 
-    convert ${IM_OPS} ${src}[${f}] ${dest}/psd${f}.png
-
-    composite ${IM_OPS} -geometry ${p} ${dest}/psd${f}.png ${dest}/temp.png ${dest}/temp.png
+    files="${files} -page ${p} ${src}[${f}]"
 
-if [ x"${nf}" != x"" ]; then
+    if [ x"${nf}" != x"" ]; then
         log_dbg "New frame ID: ${nf}"
-        cp ${dest}/temp.png ${dest}/f${nf}.png
-        cp ${dest}/psd0.png ${dest}/temp.png
+        convert -colorspace sRGB -page +0+0 ${dest}/background.png ${files} -background none -layers merge ${dest}/f${nf}.png
+        files=""
     fi
+
 done <${layers}
 
 if which ffmpeg 1> /dev/null 2>&1; then
     # Conversion vidéo:
     ffmpeg -y -r ${fps} -start_number 1 -i ${dest}/f%d.png ${dest}/sequence.mp4
 fi
-
-rm -f ${dest}/temp.png
-
-#rm -f ${dest}/psd*.png