diff options
Diffstat (limited to 'icons/create-icons-from-tango.pl')
-rwxr-xr-x | icons/create-icons-from-tango.pl | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/icons/create-icons-from-tango.pl b/icons/create-icons-from-tango.pl new file mode 100755 index 0000000000..00328d7c7b --- /dev/null +++ b/icons/create-icons-from-tango.pl | |||
@@ -0,0 +1,120 @@ | |||
1 | #!/usr/bin/perl -w | ||
2 | # __________ __ ___. | ||
3 | # Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | # \/ \/ \/ \/ \/ | ||
8 | # $Id$ | ||
9 | # | ||
10 | # Copyright (C) 2011 Dominik Riebeling | ||
11 | # | ||
12 | # All files in this archive are subject to the GNU General Public License. | ||
13 | # See the file COPYING in the source tree root for full license agreement. | ||
14 | # | ||
15 | # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
16 | # KIND, either express or implied. | ||
17 | |||
18 | |||
19 | # This script is to generate an iconset (iconstrip bmp file) from Tango icons. | ||
20 | # It should be usable for other iconsets that are provided as svg images. For | ||
21 | # those adjusting the paths to the icons might need adjustment. | ||
22 | # To be run from the icons/ folder in a Rockbox checkout. | ||
23 | |||
24 | use File::Temp; | ||
25 | |||
26 | # list of icons for strip | ||
27 | my @iconlist = ( | ||
28 | "mimetypes/audio-x-generic", # Icon_Audio | ||
29 | "places/folder", # Icon_Folder | ||
30 | "actions/format-indent-more", # Icon_Playlist | ||
31 | "actions/media-playback-start", # Icon_Cursor ### | ||
32 | "apps/preferences-desktop-wallpaper", # Icon_Wps | ||
33 | "devices/computer", # Icon_Firmware ### | ||
34 | "apps/preferences-desktop-font", # Icon_Font | ||
35 | "apps/preferences-desktop-locale", # Icon_Language | ||
36 | "categories/preferences-system", # Icon_Config | ||
37 | "status/software-update-available", # Icon_Plugin | ||
38 | "actions/bookmark-new", # Icon_Bookmark | ||
39 | "places/start-here", # Icon_Preset | ||
40 | "actions/go-jump", # Icon_Queued | ||
41 | "actions/go-next", # Icon_Moving | ||
42 | "devices/input-keyboard", # Icon_Keyboard | ||
43 | "actions/mail-send-receive", # Icon_Reverse_Cursor | ||
44 | "apps/help-browser", # Icon_Questionmark | ||
45 | "actions/document-properties", # Icon_Menu_setting | ||
46 | "categories/applications-other", # Icon_Menu_functioncall | ||
47 | "actions/list-add", # Icon_Submenu | ||
48 | "categories/preferences-system", # Icon_Submenu_Entered | ||
49 | "actions/media-record", # Icon_Recording | ||
50 | "devices/audio-input-microphone", # Icon_Voice ### | ||
51 | "categories/preferences-desktop", # Icon_General_settings_menu | ||
52 | "categories/applications-other", # Icon_System_menu | ||
53 | "actions/media-playback-start", # Icon_Playback_menu | ||
54 | "devices/video-display", # Icon_Display_menu | ||
55 | "devices/video-display", # Icon_Remote_Display_menu | ||
56 | "devices/network-wireless", # Icon_Radio_screen ### | ||
57 | "mimetypes/package-x-generic", # Icon_file_view_menu | ||
58 | "apps/utilities-system-monitor", # Icon_EQ | ||
59 | "../rbutil/rbutilqt/icons/rockbox-clef.svg" # Icon_Rockbox | ||
60 | ); | ||
61 | |||
62 | |||
63 | if($#ARGV < 1) { | ||
64 | print "Usage: $0 <path to iconset> <size>\n"; | ||
65 | exit(); | ||
66 | } | ||
67 | my $tangopath = $ARGV[0]; | ||
68 | my $size = $ARGV[1]; | ||
69 | |||
70 | # temporary files | ||
71 | my $alphatemp = File::Temp->new(SUFFIX => ".png"); | ||
72 | my $alphatempfname = $alphatemp->filename(); | ||
73 | my $exporttemp = File::Temp->new(SUFFIX => ".png"); | ||
74 | my $exporttempfname = $exporttemp->filename(); | ||
75 | my $tempstrip = File::Temp->new(SUFFIX => ".png"); | ||
76 | my $tempstripfname = $tempstrip->filename(); | ||
77 | |||
78 | my $newoutput = "tango_icons.$size.bmp"; | ||
79 | |||
80 | if(-e $newoutput) { | ||
81 | die("output file $newoutput does already exist!"); | ||
82 | } | ||
83 | |||
84 | print "Creating icon strip as $newoutput\n\n"; | ||
85 | |||
86 | my $count; | ||
87 | $count = 0; | ||
88 | foreach(@iconlist) { | ||
89 | print "processing $_ ...\n"; | ||
90 | my $file; | ||
91 | if(m/^$/) { | ||
92 | # if nothing is defined make it empty / transparent | ||
93 | my $s = $size . "x" . $size; | ||
94 | `convert -size $s xc:"#f0f" $exporttempfname` | ||
95 | } | ||
96 | elsif(m/\.\./) { | ||
97 | # icon is inside the Rockbox tree | ||
98 | $file = $_; | ||
99 | `inkscape --export-png=$exporttempfname --export-width=$size --export-height=$size $file` | ||
100 | } | ||
101 | else { | ||
102 | # icon is inside the tango tree | ||
103 | $file = "$tangopath/scalable/" . $_ . ".svg"; | ||
104 | `inkscape --export-png=$exporttempfname --export-width=$size --export-height=$size $file` | ||
105 | } | ||
106 | if($count != 0) { | ||
107 | `convert -append $tempstripfname $exporttempfname $tempstripfname`; | ||
108 | } | ||
109 | else { | ||
110 | `convert $exporttempfname $tempstripfname`; | ||
111 | } | ||
112 | $count++; | ||
113 | } | ||
114 | print "masking and converting result ...\n"; | ||
115 | # create mask | ||
116 | `convert $tempstripfname -alpha extract -monochrome -negate -alpha copy -colorize 0,100,0 $alphatempfname`; | ||
117 | # combine mask with image and drop transparency and scale down | ||
118 | `convert -composite $tempstripfname $alphatempfname -flatten -background '#f0f' -alpha off $newoutput`; | ||
119 | print "done!\n"; | ||
120 | |||