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 @@ +#!/usr/bin/perl -w +# __________ __ ___. +# Open \______ \ ____ ____ | | _\_ |__ _______ ___ +# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / +# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < +# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ +# \/ \/ \/ \/ \/ +# $Id$ +# +# Copyright (C) 2011 Dominik Riebeling +# +# All files in this archive are subject to the GNU General Public License. +# See the file COPYING in the source tree root for full license agreement. +# +# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +# KIND, either express or implied. + + +# This script is to generate an iconset (iconstrip bmp file) from Tango icons. +# It should be usable for other iconsets that are provided as svg images. For +# those adjusting the paths to the icons might need adjustment. +# To be run from the icons/ folder in a Rockbox checkout. + +use File::Temp; + +# list of icons for strip +my @iconlist = ( + "mimetypes/audio-x-generic", # Icon_Audio + "places/folder", # Icon_Folder + "actions/format-indent-more", # Icon_Playlist + "actions/media-playback-start", # Icon_Cursor ### + "apps/preferences-desktop-wallpaper", # Icon_Wps + "devices/computer", # Icon_Firmware ### + "apps/preferences-desktop-font", # Icon_Font + "apps/preferences-desktop-locale", # Icon_Language + "categories/preferences-system", # Icon_Config + "status/software-update-available", # Icon_Plugin + "actions/bookmark-new", # Icon_Bookmark + "places/start-here", # Icon_Preset + "actions/go-jump", # Icon_Queued + "actions/go-next", # Icon_Moving + "devices/input-keyboard", # Icon_Keyboard + "actions/mail-send-receive", # Icon_Reverse_Cursor + "apps/help-browser", # Icon_Questionmark + "actions/document-properties", # Icon_Menu_setting + "categories/applications-other", # Icon_Menu_functioncall + "actions/list-add", # Icon_Submenu + "categories/preferences-system", # Icon_Submenu_Entered + "actions/media-record", # Icon_Recording + "devices/audio-input-microphone", # Icon_Voice ### + "categories/preferences-desktop", # Icon_General_settings_menu + "categories/applications-other", # Icon_System_menu + "actions/media-playback-start", # Icon_Playback_menu + "devices/video-display", # Icon_Display_menu + "devices/video-display", # Icon_Remote_Display_menu + "devices/network-wireless", # Icon_Radio_screen ### + "mimetypes/package-x-generic", # Icon_file_view_menu + "apps/utilities-system-monitor", # Icon_EQ + "../rbutil/rbutilqt/icons/rockbox-clef.svg" # Icon_Rockbox +); + + +if($#ARGV < 1) { + print "Usage: $0 \n"; + exit(); +} +my $tangopath = $ARGV[0]; +my $size = $ARGV[1]; + +# temporary files +my $alphatemp = File::Temp->new(SUFFIX => ".png"); +my $alphatempfname = $alphatemp->filename(); +my $exporttemp = File::Temp->new(SUFFIX => ".png"); +my $exporttempfname = $exporttemp->filename(); +my $tempstrip = File::Temp->new(SUFFIX => ".png"); +my $tempstripfname = $tempstrip->filename(); + +my $newoutput = "tango_icons.$size.bmp"; + +if(-e $newoutput) { + die("output file $newoutput does already exist!"); +} + +print "Creating icon strip as $newoutput\n\n"; + +my $count; +$count = 0; +foreach(@iconlist) { + print "processing $_ ...\n"; + my $file; + if(m/^$/) { + # if nothing is defined make it empty / transparent + my $s = $size . "x" . $size; + `convert -size $s xc:"#f0f" $exporttempfname` + } + elsif(m/\.\./) { + # icon is inside the Rockbox tree + $file = $_; + `inkscape --export-png=$exporttempfname --export-width=$size --export-height=$size $file` + } + else { + # icon is inside the tango tree + $file = "$tangopath/scalable/" . $_ . ".svg"; + `inkscape --export-png=$exporttempfname --export-width=$size --export-height=$size $file` + } + if($count != 0) { + `convert -append $tempstripfname $exporttempfname $tempstripfname`; + } + else { + `convert $exporttempfname $tempstripfname`; + } + $count++; +} +print "masking and converting result ...\n"; +# create mask +`convert $tempstripfname -alpha extract -monochrome -negate -alpha copy -colorize 0,100,0 $alphatempfname`; +# combine mask with image and drop transparency and scale down +`convert -composite $tempstripfname $alphatempfname -flatten -background '#f0f' -alpha off $newoutput`; +print "done!\n"; +