diff -r 000000000000 -r 05e9090e2422 uigraphics/AknIcon/group/IconId.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uigraphics/AknIcon/group/IconId.pl Thu Dec 17 09:14:12 2009 +0200 @@ -0,0 +1,242 @@ +# +# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# + +my $KAknsConstants_h = "\\epoc32\\include\\middleware\\AknsConstants.h"; +my $KAknsConstants_hrh = "\\epoc32\\include\\middleware\\AknsConstants.hrh"; + +if ($#ARGV != 2) + { + die "usage: MIFList-file build-path out-file\n"; + } + +my @mifList = ReadMifList($ARGV[0]); +my $path = $ARGV[1]; +open (OUTFILE, ">$ARGV[2]") || die "Couldn't open $ARGV[2] for output\n"; +print OUTFILE "Icon ID,file name,SVG name,Skin ID major,Skin ID minor\n"; + +(my $mifName,my $mifPath) = SplitPath($ARGV[0]); + +my %skins = ReadAknsConstants_h($path.$KAknsConstants_h); +my %skinIDVals = ReadAknsConstants_hrh($path.$KAknsConstants_hrh); + +for my $k (0 .. $#mifList) + { + (my $name,my $path) = SplitPath($mifList[$k]); + my $iconId = 2* $k + 16384; + $name =~ s/_//g; + if ($name =~ m/(\S+)\.(\S+)/) #remove extension + { + $name =$1; + } + #print "$k,$name,$path\n"; + if (exists $skins{$name}) + { + my $major = $skins{$name}[0]; + my $minor = $skins{$name}[1]; + my $majorVal = -1; + if (exists $skinIDVals{$major}) + { + $majorVal = $skinIDVals{$major}; + } + else + { + print "not found major $major\n"; + } + my $minorVal = -1; + if (exists $skinIDVals{$minor}) + { + $minorVal = $skinIDVals{$minor}; + } + else + { + print "not found minor $minor\n"; + } + printf(OUTFILE "%d,%s,%s,0x%x,0x%x\n",$iconId,$mifName,$mifList[$k],$majorVal,$minorVal); + #print "found,$majorVal,$minorVal\n"; + } + else + { + #print "not found $name\n"; + } + } + +my $incPath = $path . "\\epoc32\\include"; +opendir DIR,$incPath; +my @files = readdir DIR; +foreach my $f (@files) + { + if ($f =~ /(\S+)\.mbg\z/i) + { + my $fName = lc(embm . $1); + my %list = ReadMbg($incPath . "\\" . $f); + foreach my $k (keys %list) + { + my $svgName = lc($k); + my $iconId = $list{$k}; + my $ind = index($svgName,$fName); + if ($ind >= 0) + { + $ind += length($fName); + my $svg = substr($svgName,$ind); + $svg =~ s/_//g; + if (exists $skins{$svg}) + { + my $major = $skins{$svg}[0]; + my $minor = $skins{$svg}[1]; + my $majorVal = -1; + if (exists $skinIDVals{$major}) + { + $majorVal = $skinIDVals{$major}; + } + else + { + print "not found major $major\n"; + } + my $minorVal = -1; + if (exists $skinIDVals{$minor}) + { + $minorVal = $skinIDVals{$minor}; + } + else + { + print "not found minor $minor\n"; + } + printf(OUTFILE "%d,%s,%s,0x%x,0x%x\n",$iconId,$f,$k,$majorVal,$minorVal); + #print "found,$majorVal,$minorVal\n"; + } + else + { + #print "not found $svg\n"; + } + } + else + { + print "not found,$svgName,$fName\n"; + } + } + } + } +close DIR; + + +close OUTFILE; + +exit(0); + +sub ReadMifList + { + my $file = shift; + my @mifList; + open (INFILE, "<$file") || die "Couldn't open $file for input\n"; + while (my $line=) + { + #if ($line =~ m/\S+\s+(\S+)(\.svg)/) + if ($line =~ m/\S+\s+(\S+)/) + { + push(@mifList,$1); + } + #else + # { + # print "$line\n"; + # } + } + close INFILE; + return @mifList; + } + +sub ReadMbg + { + my $file = shift; + my %mifList; + open (INFILE, "<$file") || die "Couldn't open $file for input\n"; + while (my $line=) + { + if ($line =~ m/(\S+)\s*=\s*(\d+),/) + { + $mifList{$1}=$2; + } + #else + # { + # print "$line\n"; + # } + } + close INFILE; + return %mifList; + } + +sub ReadAknsConstants_h + { + my $file = shift; + my %list; + my $state = 0; + my $name; + open (INFILE, "<$file") || die "Couldn't open $file for input\n"; + while (my $line=) + { + if ($line =~ m/TAknsItemID\s+KAknsIID(\S+)\s*=/) + { + $state = 1; + $name = lc($1); + } + else + { + if ($state == 1) + { + if ($line =~ m/\{\s*(\S+)\s*,\s*(\S+)\s*\}/) + { + $list{$name}[0] = $1; + $list{$name}[1] = $2; + } + $state = 0; + } + } + } + close INFILE; + return %list; + } + +sub ReadAknsConstants_hrh + { + my $file = shift; + my %list; + my $state = 0; + my $name; + open (INFILE, "<$file") || die "Couldn't open $file for input\n"; + while (my $line=) + { + if ($line =~ m/\s*(\S+)\s*=\s*(\S+)(,|\s+)/) + { + my $n = $1; + my $val = hex($2); + $list{$n} = $val; + #print "$n,$val\n"; + } + } + close INFILE; + return %list; + } + +# take a full path name as input, return name and path +sub SplitPath { + if ($_[0] =~ m/\\((\w|[.]|[-])+)(\z)/) + { + return $1,$`; + } + else + { + return $_[0]; + } + }