Sophie

Sophie

distrib > Mandriva > 10.2 > x86_64 > by-pkgid > 6636512f7ab99e63fc7eb86a6cbc03a6 > files > 231

OpenOffice.org-1.1.4-7.1.102mdk.src.rpm

#!/usr/bin/perl -w

# Newer ImageMagick's don't like some of the
# broken icons OO.o contains.
$lc_good = 'res/lc00000.bmp';
$sc_good = 'res/sc00000.bmp';

# beautiful hard-coding action.
@scale_dirs = (
	'res',
	'sc/res/imglst/apptbx',
	'sc/res/imglst/navipi',
	'sd/res/imagelst',
	'sd/res/imagelst/korean',
	'sw/win/imglst', 
	'sw/win/imglst/korean',
	'sch/res',
	'offmgr/res',
	'res/enus',
	'dbaccess/res',
	'sc/res',
	'sd/res',
	'sw/win/res',
	'starmath/res',
	'res/arab',
	'res/basq',
	'res/catalan',
	'res/chinsim',
	'res/chintrad',
	'res/czech',
	'res/dtch',
	'res/fren',
	'res/hung',
	'res/hebrew',
	'res/ital',
	'res/japn',
	'res/korean',
	'res/pol',
	'res/poln',
	'res/port',
	'res/portbr',
	'res/russ',
	'res/slovak',
	'res/slovenian',
	'res/span',
	'res/turk'
	       );

%scale_exceptions = (
	'sw/win/imglst' => '[sn][cr][0-9]*\.bmp',
	'sc/res/imglst/navipi' => 'na0.*\.bmp',
	'res' => '[si][cm][0-9]*\.bmp'
);

sub usage {
    printf "Usage: scale-icons </path/to/ooo_checkout> [--quiet] [--backupdir=</path/for/original_bmps>\n";
}

if (@ARGV < 1) {
    usage ();
    exit (1);
}

$OOO_PATH = shift (@ARGV);

if ($OOO_PATH =~ m/--.*/) {
    usage ();
    exit (1);
}

$lc_good = "$OOO_PATH/$lc_good";
$sc_good = "$OOO_PATH/$sc_good";

$quiet = 0;
$remove = 0;
$backupdir = "";

foreach $a (@ARGV) {
    if ($a eq '--quiet') {
	$quiet = 1;
    } elsif ($a eq '--remove') {
	$remove = 1;
    } elsif ($a =~ m/--backupdir=(.*)/) {
	$backupdir = $1;
    }
}

sub handle_scaled {
    my $relinstdir = shift;
    my $small_regex = shift;
    my $large_regex = shift;
    my ($dirhandle, $file);
    my $instdir = "$OOO_PATH/$relinstdir";
    my $STAMPNAME = "$instdir/ooo-convert-stamp";

    if (! -d $instdir) {
	print "skipping $instdir\n";
	next;
    }

    if ($remove) {
	-f $STAMPNAME || return;
    } else {
	-f $STAMPNAME && return;
    }

    print "Scaling: '$instdir'\n";
    
    opendir ($dirhandle, $instdir) || die "can't opendir $instdir: $!";
    
    while ($file = readdir ($dirhandle)) {
	if ($file =~ m/^$small_regex$|^$large_regex$/) {
	    my $src = "$instdir/$file";
	    my $dest = "$instdir/ooo-convert-tmp-$file";

	    if ($remove) {
		$quiet || print "Remove '$src'\n";
		unlink ($src);
		next;
	    }
	    $quiet || print "Convert '$src'\n";

	    -f $src || die "Internal error";

	    if ($src =~ /$small_regex/) {
		if (system ("convert -mattecolor '#e6e7e6' -frame 2x2 -crop 16x16+2+2 $src $dest") != 0) {
		    print "*** Warning: convert failed; trying copy\n";
		    system ("cp -f $sc_good $dest");
		}
	    } elsif ($src =~ /$large_regex/) {
		if (system ("convert -mattecolor '#e6e7e6' -frame 2x2 -crop 24x24+3+2 $src $dest") != 0) {
		    print "*** Warning: convert failed; trying copy\n";
		    system ("cp -f $lc_good $dest");
		}
	    }
	    if (-f $dest) {
		print $backupdir ? "$backupdir/$relinstdir/$file" : "$src.orig", "\n";
		rename ($src,
			$backupdir ? "$backupdir/$relinstdir/$file" : "$src.orig");
		rename ($dest, $src);
	    }
	}
    }
   
    closedir ($dirhandle);

    if ($remove) {
	unlink ("$STAMPNAME");
    } else {
	my $stamphandle;
	open ($stamphandle, ">$STAMPNAME") || die "Error stamping $STAMPNAME $!";
	print $stamphandle "Stamp\n";
	close ($stamphandle);
    }
}

for $a (@scale_dirs) {
    my $small_regex;
    if (defined ($scale_exceptions{$a})) {
	$small_regex = $scale_exceptions{$a};
	print "Exception on '$a' => '$small_regex'\n";
    } else {
	$small_regex = 'sc[0-9]*\.bmp';
    }
    if ($backupdir) {
	if (system ("mkdir -p $backupdir/$a\n") != 0) {
	    print "*** Warning: could not create $backupdir/$a\n" ;
	    $backupdir = "";
	}
    }
    handle_scaled ("$a", $small_regex, 'lc[0-9]*\.bmp');
}

print "Binning dupped icons\n";
-f "$OOO_PATH/extras/source/symbols/makefile.mk" || die "No dupped icon directory";

my $SymbolsDir;
my $symbols_dir = "$OOO_PATH/extras/source/symbols";
my $symbols_backup = "$backupdir/extras/source/symbols";

system ("mkdir -p $symbols_backup");

opendir ($SymbolsDir, $symbols_dir) || die "No symbols: $!";
while (my $fname = readdir ($SymbolsDir)) {
#    $fname =~ m/\.bmp$/ || next;
    $fname =~ m/[l][cox]\d\d\d\d\d\.bmp$/ || next;
    if ($backupdir) {
	system ("cp -a $symbols_dir/$fname $symbols_backup");
    }
    unlink "$symbols_dir/$fname" || die "Can't delete $symbols_dir/$fname: $!";
}
closedir($SymbolsDir);

print "Completed cleanly.\n";
exit (0);