Fix missing fonts in splash.png and try to prevent graphics update happening with...
[dcpomatic.git] / graphics / update
1 #!/bin/bash
2 #
3 # Update generated stuff in graphics/ from the source files.
4 #
5 # It would be nice to do this with waf but:
6 # a) getting the wscript right is a complete pain in the arse
7 # b) running Inkscape from the command line on OS X is a complete pain in the arse
8
9 pwd=`pwd`
10 if [ `basename $pwd` != "graphics" ]; then
11     echo "$0: run within graphics/"
12     exit 1
13 fi
14
15 function required_font()
16 {
17     check=$(fc-list | grep "$1")
18     if [ "$check" == "" ]; then
19         echo "Missing font $1"
20         exit 1
21     fi
22 }
23
24 svg_apps="dcpomatic2_kdm dcpomatic2_server dcpomatic2_batch dcpomatic2_player dcpomatic2_playlist dcpomatic2_disk"
25 required_font "Libre Baskerville"
26
27
28 if [ `uname -s` == "Darwin" ]; then
29     # Convert OS X icons using OS X-only iconutil
30     for p in dcpomatic2 $svg_apps; do
31         iconutil --convert icns --output osx/$p.icns osx/$p.iconset
32     done
33 else
34
35     for c in icotool convert inkscape inkbatch; do
36         if [ ! -x "$(command -v $c)" ]; then
37             echo "$c is required"
38             exit 1
39         fi
40     done
41
42     INKSCAPE="inkscape -C --export-type=png"
43
44     # OS X application icons
45     mkdir -p osx
46     for r in 16 32 128 256 512; do
47         for p in dcpomatic2; do
48             mkdir -p osx/$p.iconset
49             convert src/dcpomatic.png -resize $rx$r osx/$p.iconset/icon_${r}x${r}.png
50             convert src/dcpomatic.png -resize $rx$r osx/$p.iconset/icon_${r}x${r}@2x.png
51         done
52         for p in $svg_apps; do
53             mkdir -p osx/$p.iconset
54             $INKSCAPE --export-filename=osx/$p.iconset/icon_${r}x${r}.png -w $r -h $r src/$p.svg
55             $INKSCAPE --export-filename=osx/$p.iconset/icon_${r}x${r}@2x.png -w $r -h $r src/$p.svg
56         done
57     done
58
59     # Linux application icons
60     mkdir -p linux
61     for r in 16 22 32 48 64 128 256 512; do
62         mkdir -p linux/$r
63         convert src/dcpomatic.png -resize $rx$r linux/$r/dcpomatic2.png
64         for p in $svg_apps; do
65             $INKSCAPE --export-filename=linux/$r/$p.png src/$p.svg -w $r -h $r
66         done
67     done
68
69     # Windows application icons
70     mkdir -p windows
71     for p in dcpomatic2 $svg_apps; do
72         icotool -c -o windows/$p.ico linux/16/$p.png linux/32/$p.png linux/48/$p.png linux/64/$p.png linux/128/$p.png
73     done
74     convert src/dcpomatic.png -resize 400x400 windows/dcpomatic.bmp
75
76     # OS X preferences icons
77     mkdir -p osx/preferences
78     for i in defaults email kdm_email cover_sheet keys tms notifications locations sound identifiers servers general advanced; do
79         inkbatch -i bounds-$i -o osx/preferences/$i.png --width 32 --height 32 src/preferences.svg
80         inkbatch -i bounds-$i -o osx/preferences/$i@2x.png --width 64 --height 64 src/preferences.svg
81     done
82
83     # OS X menu bar icon for the server
84     $INKSCAPE --export-filename=osx/dcpomatic_small.png -w 64 -h 64 src/dcpomatic_small.svg
85
86     # Splash screen (all platforms)
87     $INKSCAPE --export-filename=splash.png src/splash.svg -w 400 -h 300
88
89     # Timeline toolbar icons (all platforms)
90     for i in select zoom zoom_all snap sequence; do
91         $INKSCAPE --export-filename=$i.png src/$i.svg -w 32 -h 32
92     done
93
94     # Playlist editor tick/no-tick
95     $INKSCAPE --export-filename=tick.png src/tick.svg -w 16 -h 16
96     $INKSCAPE --export-filename=no_tick.png src/no_tick.svg -w 16 -h 16
97
98     # Link icon
99     $INKSCAPE --export-filename=link.png src/link.svg -w 9 -h 16
100
101     # favicon
102     mkdir -p web
103     convert src/web.png -resize 256x256 -transparent white web/favicon-256x256.png
104     for r in 16 32 64 128; do
105         convert web/favicon-256x256.png -resize $rx$r web/favicon-${r}x${r}.png
106     done
107     convert web/favicon-16x16.png web/favicon-32x32.png web/favicon-64x64.png web/favicon-128x128.png web/favicon-256x256.png web/favicon.ico
108     convert src/web.png -resize 123x123 -transparent white web/logo.png
109 fi