2011-05-31 21:08:29 +00:00
|
|
|
#!/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;
|
2011-11-26 16:01:11 +00:00
|
|
|
use Getopt::Long;
|
2011-05-31 21:08:29 +00:00
|
|
|
|
|
|
|
# list of icons for strip
|
2011-11-26 16:01:11 +00:00
|
|
|
# Use relative paths to point to icons in the tree, relative to the icons/ folder
|
|
|
|
# (must start with . or ..)
|
|
|
|
# Other are treated relatively to the tango sources tree
|
2011-05-31 21:08:29 +00:00
|
|
|
my @iconlist = (
|
2011-11-26 16:01:11 +00:00
|
|
|
"./tango-svg/audio-x-generic", # Icon_Audio
|
|
|
|
"./tango-svg/folder", # Icon_Folder
|
|
|
|
"./tango-svg/format-indent-more", # Icon_Playlist
|
|
|
|
"./new_icons-svg/media-playback-start-green", # Icon_Cursor ###
|
|
|
|
"./tango-svg/preferences-desktop-wallpaper", # Icon_Wps
|
|
|
|
"./tango-svg/media-flash", # Icon_Firmware ###
|
|
|
|
"./tango-svg/preferences-desktop-font", # Icon_Font
|
|
|
|
"./tango-svg/preferences-desktop-locale", # Icon_Language
|
|
|
|
"./tango-svg/preferences-system", # Icon_Config
|
|
|
|
"./tango-svg/software-update-available", # Icon_Plugin
|
|
|
|
"./tango-svg/bookmark-new", # Icon_Bookmark
|
|
|
|
"./tango-svg/start-here", # Icon_Preset
|
|
|
|
"./tango-svg/go-jump", # Icon_Queued
|
|
|
|
"./tango-svg/go-next", # Icon_Moving
|
|
|
|
"./tango-svg/input-keyboard", # Icon_Keyboard
|
|
|
|
"./tango-svg/go-previous", # Icon_Reverse_Cursor
|
|
|
|
"./tango-svg/help-browser", # Icon_Questionmark
|
|
|
|
"./tango-svg/document-properties", # Icon_Menu_setting
|
|
|
|
"./tango-svg/applications-other", # Icon_Menu_functioncall
|
|
|
|
"./tango-svg/list-add", # Icon_Submenu
|
|
|
|
"./tango-svg/preferences-system", # Icon_Submenu_Entered
|
|
|
|
"./tango-svg/media-record", # Icon_Recording
|
|
|
|
"./new_icons-svg/face-shout", # Icon_Voice ###
|
|
|
|
"./tango-svg/preferences-desktop", # Icon_General_settings_menu
|
|
|
|
"./tango-svg/emblem-system", # Icon_System_menu
|
|
|
|
"./tango-svg/media-playback-start", # Icon_Playback_menu
|
|
|
|
"./tango-svg/video-display", # Icon_Display_menu
|
|
|
|
"./tango-svg/network-receive", # Icon_Remote_Display_menu
|
|
|
|
"./tango-svg/network-wireless", # Icon_Radio_screen ###
|
|
|
|
"./tango-svg/system-file-manager", # Icon_file_view_menu
|
|
|
|
"./tango-svg/utilities-system-monitor", # Icon_EQ
|
|
|
|
"../docs/logo/rockbox-clef" # Icon_Rockbox
|
2011-05-31 21:08:29 +00:00
|
|
|
);
|
2011-11-26 16:01:11 +00:00
|
|
|
my @iconlist_viewers = (
|
|
|
|
"./tango-svg/applications-graphics", # bmp
|
|
|
|
"./tango-svg/applications-multimedia", # mpeg
|
|
|
|
"./tango-svg/applications-other", # ch8, tap, sna, tzx, z80
|
|
|
|
"./tango-svg/audio-x-generic", # mp3, mid, rmi, wav
|
|
|
|
"./tango-svg/format-justify-left", # txt, nfo
|
|
|
|
"./tango-svg/text-x-generic-template", # ss
|
|
|
|
"./mint-x-svg/applications-games", # gb, gbc
|
|
|
|
"./tango-svg/image-x-generic", # jpg, jpe, jpeg
|
|
|
|
"./tango-svg/format-indent-more", # m3u
|
|
|
|
"./mint-x-svg/gnome-glchess", # pgn
|
|
|
|
"./tango-svg/dialog-information", # zzz
|
|
|
|
);
|
|
|
|
|
2011-05-31 21:08:29 +00:00
|
|
|
|
2011-11-26 16:01:11 +00:00
|
|
|
my $help;
|
|
|
|
my $do_viewers;
|
|
|
|
my $tangopath="";
|
|
|
|
my $size;
|
|
|
|
my @list = @iconlist;
|
|
|
|
my $output = "tango_icons";
|
2011-05-31 21:08:29 +00:00
|
|
|
|
2011-11-26 16:01:11 +00:00
|
|
|
GetOptions ( 'v' => \$do_viewers,
|
|
|
|
't|tango-path=s' => \$tangopath,
|
|
|
|
'o|output=s' => \$output,
|
|
|
|
'h|help' => \$help,
|
|
|
|
);
|
|
|
|
|
|
|
|
if($#ARGV != 0 or $help) {
|
|
|
|
print "Usage: $0 [-v] [-t <path to iconset>] [-o <output prefix>] SIZE\n";
|
|
|
|
print "\n";
|
|
|
|
print "\t-v\tGenerate viewer icons\n";
|
|
|
|
print "\t-t\tPath to source of tango iconset if required\n";
|
|
|
|
print "\t-t\tPath to source of tango iconset if required\n";
|
|
|
|
print "\t-o\tUse <output prefix> instead of \"tango_icons\" for the output filename\n";
|
|
|
|
print "\n";
|
|
|
|
print "\tSIZE can be in the form of NN or NNxNN and will be used for the output filename\n";
|
2011-05-31 21:08:29 +00:00
|
|
|
exit();
|
|
|
|
}
|
|
|
|
|
2011-11-26 16:01:11 +00:00
|
|
|
|
|
|
|
$size = $ARGV[0];
|
|
|
|
|
|
|
|
if ($do_viewers) {
|
|
|
|
$output .= "_viewers";
|
|
|
|
@list = @iconlist_viewers;
|
|
|
|
}
|
2011-05-31 21:08:29 +00:00
|
|
|
# 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();
|
|
|
|
|
2011-11-26 16:01:11 +00:00
|
|
|
my $newoutput = "$output.$size.bmp";
|
2011-05-31 21:08:29 +00:00
|
|
|
|
|
|
|
if(-e $newoutput) {
|
|
|
|
die("output file $newoutput does already exist!");
|
|
|
|
}
|
|
|
|
|
|
|
|
print "Creating icon strip as $newoutput\n\n";
|
|
|
|
|
|
|
|
my $count;
|
|
|
|
$count = 0;
|
2011-11-26 16:01:11 +00:00
|
|
|
|
|
|
|
foreach(@list) {
|
2011-05-31 21:08:29 +00:00
|
|
|
print "processing $_ ...\n";
|
|
|
|
my $file;
|
|
|
|
if(m/^$/) {
|
|
|
|
# if nothing is defined make it empty / transparent
|
|
|
|
my $s = $size . "x" . $size;
|
2011-11-26 16:01:11 +00:00
|
|
|
`convert -size $s xc:"#ff00ff" -alpha transparent $exporttempfname`
|
2011-05-31 21:08:29 +00:00
|
|
|
}
|
2011-11-26 16:01:11 +00:00
|
|
|
elsif(m/\./) {
|
2011-05-31 21:08:29 +00:00
|
|
|
# icon is inside the Rockbox tree
|
2011-11-26 16:01:11 +00:00
|
|
|
$file = $_ . ".svg";
|
2011-05-31 21:08:29 +00:00
|
|
|
`inkscape --export-png=$exporttempfname --export-width=$size --export-height=$size $file`
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
# icon is inside the tango tree
|
2011-11-26 16:01:11 +00:00
|
|
|
if ($tangopath eq "") {
|
|
|
|
print "Path to tango sources needed but not given!\n";
|
|
|
|
exit(1);
|
|
|
|
}
|
2011-05-31 21:08:29 +00:00
|
|
|
$file = "$tangopath/scalable/" . $_ . ".svg";
|
2011-11-26 16:01:11 +00:00
|
|
|
#~ `inkscape --export-png=$exporttempfname --export-width=$size --export-height=$size $file`
|
|
|
|
`cp $file tango-svg/`;
|
2011-05-31 21:08:29 +00:00
|
|
|
}
|
|
|
|
if($count != 0) {
|
|
|
|
`convert -append $tempstripfname $exporttempfname $tempstripfname`;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
`convert $exporttempfname $tempstripfname`;
|
|
|
|
}
|
|
|
|
$count++;
|
|
|
|
}
|
2011-11-26 16:01:11 +00:00
|
|
|
print "Converting result ...\n";
|
|
|
|
`convert $tempstripfname $newoutput`;
|
|
|
|
print "Done!\n";
|
2011-05-31 21:08:29 +00:00
|
|
|
|