symbolic icons: add contact sheet & extractor
[mypaint:mypaint.git] / svg / tango / export-icons.sh
1 #!/bin/sh
2 # by Deevad
3 # Mypaint icon exporter 2012-01-30
4 # --------------------------------
5 # what it does : export *.svgz Mypaint icons templates  ( from mypaint/svg folder ) to the right folders automagically with right names. Finish long export time with Inkscape !
6 # what it needs : Inkscape installed.
7 # how to use : save your *.svgz file ( done from template ) in mypaint/svg with the background layer hidden, then call the script. 
8 # ./0_icon-exporter.sh %f
9 # --------------------------------
10
11
12 if [ $# -eq 0 ]; then
13     echo "usage: icon-exporter [SVGZFILE [...]]"
14     echo 
15     echo "SVG files must have a hidden layer with rects having the IDs"
16     echo "16x16, 22x22, 24x24, 32x32, and 48x48. SVG export involves"
17     echo "manual steps; see the instructions in the terminal output."
18     exit 0
19 fi
20
21 OUTPUT_DIR=../desktop/icons/hicolor
22
23
24 for arg in "$@"; do
25     targetpngfilename=$(echo $arg|sed 's/\(.*\)\..\+/\1/')".png"
26     targetsvgfilename=$(echo $arg|sed 's/\(.*\)\..\+/\1/')".svg"
27     targetsvgzfilename="${targetsvgfilename}.tmp.svgz"
28
29     for s in 16x16 22x22 24x24 32x32 48x48; do
30         echo "Exporting $s slice to PNG..."
31             inkscape -f "$arg" -i $s -y 0 -z -e "$targetpngfilename"
32             mv -v "$targetpngfilename" "$OUTPUT_DIR/$s/actions/$targetpngfilename"
33     done
34         
35     # Scalable SVG from the 48x48 slice
36     # Begin by cropping the page to the sice rect
37     cp "$arg" "$targetsvgzfilename"
38     echo "Scripted page resize to the 48x48 slice..."
39     inkscape --select=48x48 --verb FitCanvasToSelectionOrDrawing \
40         --verb EditSelectAll --verb EditDelete \
41         --verb FileSave --verb FileClose \
42         "$targetsvgzfilename"
43     # Make plain SVG: simpler and quicker to edit.
44     inkscape --export-plain-svg="$targetsvgfilename" -z "$targetsvgzfilename"
45     rm -v -f "$targetsvgzfilename"
46     # Final cleanup step has to be done manually.
47     echo "*** Now manually remove unwanted elements, Vacuum Defs, and save"
48     inkscape --verb ZoomDrawing --verb EditSelectAllInAllLayers \
49             --verb SelectionUnGroup --verb EditDeselect \
50             $targetsvgfilename
51         mv -v "$targetsvgfilename" "$OUTPUT_DIR/scalable/actions/$targetsvgfilename"
52 done