svg2png: Use rsvg-convert if GIMP is not available.
[pspp] / build-aux / svg2png
index 5c41840c5154e1c78387457cd3ed14d42da308be..3587c26167274d234076f9fc08eca3124d3ae2de 100755 (executable)
@@ -1,9 +1,42 @@
 #! /bin/sh
 
-comment=`cat $2`
-gimp -i -b "\
-(let* ((image (car (gimp-file-load 1 \"$1\" \"$1\"))))
-      (gimp-image-attach-parasite image (list \"gimp-comment\" 0 \"$comment\"))
+# Convert svg file to png with a target width and height
+# width and height are derived from the directory name
+# of the target. Width and height must be equal
+
+# Arg1: Source svg file
+# Arg2: Filename for copyright notice
+# Arg3: Target png file
+
+# Extract the icon width from the target path e.g.
+# src/ui/gui/icons/48x48/actions/file-save.png
+# should result in a width of 48
+stripprefix=${3#src*icons\/}
+width=${stripprefix%%x*}
+
+if (gimp --version) >/dev/null 2>&1; then
+    echo "Converting $1 to $3 size $widthx$width with GIMP"
+    comment=`cat $2`
+    # If no width can be extracted from the destination path
+    # then take the natural width by setting width to 0
+    case "$width" in
+       [0-9][0-9] | [0-9][0-9][0-9])  ;;
+       *)                 width="0";;
+    esac
+    gimp -i -d -b "\
+(let* ((image (car (file-svg-load 1 \"$1\" \"$1\" 90 $width $width 0 ))))
+      (gimp-image-attach-parasite image '(\"gimp-comment\" 0 \"$comment\"))
       (gimp-file-save 1 image (car (gimp-image-get-active-drawable image))
                      \"$3\" \"$3\"))
     (gimp-quit 1)"
+elif (rsvg-convert --version) >/dev/null 2>&1; then
+    echo "Converting $1 to $3 size $widthx$width with rsvg-convert"
+    case $width in
+       [0-9][0-9] | [0-9][0-9][0-9]) widthoption="--width=$width --height=$width" ;;
+       *) widthoption= ;;
+    esac
+    rsvg-convert $widthoption "$1" > "$3"
+else
+    echo "$0: can't find gimp or rsvg-convert" >&2
+    exit 1
+fi