Alexandre Julliard : buildimage: Store large images as raw PNG files in icons.

Alexandre Julliard julliard at winehq.org
Wed Mar 27 15:40:05 CDT 2013


Module: wine
Branch: master
Commit: 0aa3ae18f8ef828fe08be6ff182862c3ed1086f1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=0aa3ae18f8ef828fe08be6ff182862c3ed1086f1

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Mar 27 13:44:18 2013 +0100

buildimage: Store large images as raw PNG files in icons.

---

 tools/buildimage |   21 ++++++++++++++++-----
 1 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/tools/buildimage b/tools/buildimage
index b307497..442bb3e 100755
--- a/tools/buildimage
+++ b/tools/buildimage
@@ -38,6 +38,7 @@ die "Only BMP and ICO outputs are supported" unless $ext eq "bmp" or $ext eq "ic
 
 my $renderedSVGFileName = "$svgFileName.png";
 my @pngFiles;
+my @pngFilesRaw;
 
 # Get the programs from the environment variables
 my $convert = $ENV{"CONVERT"} || "convert";
@@ -49,6 +50,7 @@ sub cleanup()
 {
     unlink $renderedSVGFileName;
     unlink $_ foreach(@pngFiles);
+    unlink $_ foreach(@pngFilesRaw);
 }
 
 $SIG{"INT"} = "cleanup";
@@ -73,6 +75,8 @@ sub svg_element_start
 
     my $size = 0;
     my $depth = 0;
+    my $width = 0;
+    my $height = 0;
 
     if($ext eq "ico") {
         return unless $id =~ /icon:(\d*)-(\d*)/;
@@ -100,8 +104,8 @@ sub svg_element_start
         # Extract SVG vector images
         my $x = $attr{'x'};
         my $y = $attr{'y'};
-        my $width = $attr{'width'};
-        my $height = $attr{'height'};
+        $width = $attr{'width'};
+        $height = $attr{'height'};
 
         if(defined($x) and defined($x)) {
             if($x =~ /\d*/ and $y =~ /\d*/) {
@@ -126,7 +130,14 @@ sub svg_element_start
         return;
     }
 
-    push(@pngFiles, $pngFileName);
+    if ($width >= 128 && $height >= 128)
+    {
+        push(@pngFilesRaw, $pngFileName);
+    }
+    else
+    {
+        push(@pngFiles, $pngFileName);
+    }
 }
 
 # Render the SVG image
@@ -138,7 +149,7 @@ my $parser = new XML::Parser(
 $parser->parsefile("$svgFileName");
 
 # If no render directives were found, take the full image as-is
-unless(@pngFiles) {
+unless (@pngFiles || @pngFilesRaw) {
     my $pngFileName = "bmp$renderedSVGFileName";
     copy($renderedSVGFileName, $pngFileName) or die "File could not be copied";
     push(@pngFiles, $pngFileName);
@@ -148,7 +159,7 @@ unless(@pngFiles) {
 if($ext eq "ico") {
 
     # Place images into the ICO
-    shell $icotool, "-c", "-o", $outFileName, @pngFiles;
+    shell $icotool, "-c", "-o", $outFileName, @pngFiles, map { "--raw=$_"; } @pngFilesRaw;
 
 } elsif($ext eq "bmp") {
 




More information about the wine-cvs mailing list