uigraphics/AknIcon/group/IconLoads.pl
changeset 0 05e9090e2422
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uigraphics/AknIcon/group/IconLoads.pl	Thu Dec 17 09:14:12 2009 +0200
@@ -0,0 +1,230 @@
+#
+# 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: 
+#
+
+if ($#ARGV != 2)
+    {
+    die "usage: iconlist iconloads out-file\n";
+    }
+
+my %iconList = ReadIconList($ARGV[0]);
+my @iconLoads = ReadIconLoads($ARGV[1]);
+
+my @result;
+my $count = 0;
+open (OUTFILE, ">$ARGV[2]") || die "Couldn't open $ARGV[2] for output\n";
+for my $k (0 .. $#iconLoads)
+    {
+    my $name = $iconLoads[$k][0];
+    my $bitmapId = 16384+$iconLoads[$k][1];
+    my $maskId = 16384+$iconLoads[$k][2];
+    
+    $result[$count][2] = $name;
+    $result[$count][3] = $bitmapId;
+    $result[$count][4] = $maskId;
+    $result[$count][5] = $iconLoads[$k][3];
+    $result[$count][6] = $iconLoads[$k][4];
+    $result[$count][7] = $iconLoads[$k][5];
+    $result[$count][8] = $iconLoads[$k][6];
+    $result[$count][9] = $iconLoads[$k][7];
+    if (exists $iconList{$name}{$bitmapId})
+        {
+        #print "$name,$bitmapId\n";
+        my $major = $iconList{$name}{$bitmapId}[1];
+        my $minor = $iconList{$name}{$bitmapId}[2];
+        $result[$count][0] = $major;
+        $result[$count][1] = $minor;
+        if ($name eq "series60skin")
+            {
+            #try to find out fallback file
+            my $mask = 0;
+            if ($result[$count][4] >= 0)
+                {
+                $mask = 1;
+                }
+            $result[$count][2] = "";
+            $result[$count][3] = -1;
+            $result[$count][4] = -1;
+            foreach my $f (keys %iconList)
+                {
+                if ($f eq "series60skin")
+                    {
+                    }
+                else
+                    {
+                    for my $id ( keys %{ $iconList{$f} } )
+                        {
+                        if (($iconList{$f}{$id}[1] eq $major) && ($iconList{$f}{$id}[2] eq $minor))
+                            {
+                            $result[$count][2] = $f;
+                            $result[$count][3] = $id;
+                            if ($mask)
+                                {
+                                $result[$count][4] = $id + 1;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        $count += 1;
+        }
+    else
+        {
+        $result[$count][0] = -1;
+        $result[$count][1] = -1;
+        if ($name eq "series60skin")
+            {
+            print "skin ID not found from $name,$bitmapId, cannot store to precache\n";
+            }
+        else
+            {
+            print "skin ID not found from $name,$bitmapId\n";
+            $count += 1;
+            }
+        }
+    }
+
+for my $k (0 .. $#result)
+    {
+    if ($result[$count][8] == 0 && $result[$count][9] == 0) # rotation and color
+        {
+        if (length($result[$k][2]) > 0)
+            {
+            my $temp = $result[$k][2];
+            if ($temp eq "avkon")
+                {
+                $temp = "avkon2";
+                }
+            $result[$k][2] = "z:\\\\resource\\\\apps\\\\" . $temp . ".mif";
+            }
+        print OUTFILE "ICON2\n";
+        print OUTFILE "    {\n";
+        print OUTFILE "    skin_id_major = $result[$k][0];\n";
+        print OUTFILE "    skin_id_minor = $result[$k][1];\n";
+        print OUTFILE "    fallback_icon_file = \"$result[$k][2]\";\n";
+        print OUTFILE "    fallback_icon_id = $result[$k][3];\n";
+        print OUTFILE "    fallback_mask_id = $result[$k][4];\n";
+        print OUTFILE "    icon_width = $result[$k][5];\n";
+        print OUTFILE "    icon_height = $result[$k][6];\n";
+        print OUTFILE "    icon_mode = $result[$k][7];\n";
+        print OUTFILE "    },\n";
+        }
+    }
+
+close OUTFILE;
+exit(0);
+
+sub ReadIconList
+    {
+    my $file = shift;
+    my %iconList;
+    open (INFILE, "<$file") || die "Couldn't open $file for input\n";
+    my $line = <INFILE>; # ignore heading line
+    while ($line=<INFILE>)
+        {
+        chomp($line);
+        my @array = split(/,/,$line);
+        my $iconId = $array[0];
+        my $name = lc($array[1]);
+        if ($name =~ m/\Aseries60skin/)
+            {
+            $name = "series60skin";
+            }
+        else
+            {
+            if ($name =~ m/(\S+)\.(\S+)/) #remove extension
+                {
+                $name =$1;
+                }
+            }
+        $iconList{$name}{$iconId}[0] = $array[2]; # filename
+        $iconList{$name}{$iconId}[1] = $array[3]; # major id
+        $iconList{$name}{$iconId}[2] = $array[4]; # minor id
+        #print "add,$name,$iconId\n";
+        }
+    close INFILE;
+    return %iconList;
+    }
+
+sub ReadIconLoads
+    {
+    my $file = shift;
+    my @iconLoads;
+    open (INFILE, "<$file") || die "Couldn't open $file for input\n";
+    my $count = 0;
+    while ($line=<INFILE>)
+        {
+        $line =~ s/'//g;
+        if ($line =~ m/AKNICON load,(.*)/)
+            {
+            my @array = split(/,/,$1);
+            my $name = lc($array[0]);
+            ($name,my $path) = SplitPath($name);
+            if ($name =~ m/(\S+)\.(\S+)/) #remove extension
+                {
+                $name =$1;
+                }
+            if ($name eq "avkon2")
+                {
+                $name = "avkon";
+                }
+            $iconLoads[$count][0] = $name;
+            $iconLoads[$count][1] = $array[1];
+            $iconLoads[$count][2] = $array[2];
+            $iconLoads[$count][3] = $array[3]; #width
+            $iconLoads[$count][4] = $array[4]; #height
+            $iconLoads[$count][5] = $array[5];
+            $iconLoads[$count][6] = $array[6];
+            $iconLoads[$count][7] = $array[7];
+            $iconLoads[$count][8] = $array[8]; # DisableCompression
+
+            if ($iconLoads[$count][6] != 0)
+                {
+                print "cannot precache because rotation is not zero, rotation = $iconLoads[$count][6]\n";
+                }
+            elsif ($iconLoads[$count][7] != 0)
+                {
+                print "cannot precache because color is not zero, color = $iconLoads[$count][7]\n";
+                }
+            elsif ($iconLoads[$count][8])
+                {
+                print "cannot precache because compression is disabled, compression = $iconLoads[$count][8]\n";
+                }
+            elsif ($iconLoads[$count][3] == 0 || $iconLoads[$count][4] == 0)
+                {
+                print "cannot precache because icon size is zero, width = $iconLoads[$count][3], height = $iconLoads[$count][4]\n";
+                }
+            else
+                {
+                $count++;
+                }
+            }
+        }
+    close INFILE;
+    return @iconLoads;
+    }
+
+# take a full path name as input, return name and path
+sub SplitPath {
+    if ($_[0] =~ m/\\((\w|[.]|[-])+)(\z)/)
+        {
+        return $1,$`;
+        }
+    else
+        {
+        return $_[0];
+        }
+    }
\ No newline at end of file