wesnoth/tools/TeamColorizer.pl
2006-03-03 14:43:26 +00:00

69 lines
2.1 KiB
Perl
Executable File

#!/usr/bin/perl -w
if($#ARGV !=1){
die"TeamColorizer.pl input-file output-file\n";
}
$infilename=shift(@ARGV);
$outfilename=shift(@ARGV);
$team_red=255;
$team_green=0;
$team_blue=0;
$team_red_max=255;
$team_green_max=255;
$team_blue_max=255;
$team_red_min=0;
$team_green_min=0;
$team_blue_min=0;
$flag_rgb="244,154,193,63,0,22,85,0,42,105,0,57,123,0,69,140,0,81,158,0,93,177,0,105,195,0,116,214,0,127,236,0,140,238,61,150,239,91,161,241,114,172,242,135,182,246,173,205,248,193,217,250,213,229,253,233,241";
#$flag_rgb="236,0,140,244,154,193,63,0,22,85,0,42,105,0,57,123,0,69,140,0,81,158,0,93,177,0,105,195,0,116,214,0,127,238,61,150,239,91,161,241,114,172,242,135,182,246,173,205,248,193,217,250,213,229,253,233,241";
@flag=split(/,/,$flag_rgb);
if($#flag<3){die "error, flag_rgb not well defined";}
$base_red=$flag[0];
$base_green=$flag[1];
$base_blue=$flag[2];
$base_sum=$base_red+$base_green+$base_blue;
while($#flag>2){
$red=shift(@flag);
$green=shift(@flag);
$blue=shift(@flag);
$old_rgb=sprintf("%lx", $red*256*256+$green*256+$blue);
$sum=$red+$green+$blue;
if($sum<=$base_sum){
$ratio=$sum/$base_sum;
$new_red=$team_red*$ratio+$team_red_min*(1-$ratio);
$new_green=$team_green*$ratio+$team_green_min*(1-$ratio);
$new_blue=$team_blue*$ratio+$team_blue_min*(1-$ratio);
}else{
$ratio=$base_sum/$sum;
$new_red=$team_red*$ratio+$team_red_max*(1-$ratio);
$new_green=$team_green*$ratio+$team_green_max*(1-$ratio);
$new_blue=$team_blue*$ratio+$team_blue_max*(1-$ratio);
}
$new_red=sprintf("%d",$new_red);
$new_green=sprintf("%d",$new_green);
$new_blue=sprintf("%d",$new_blue);
$new_rgb=sprintf("%lx", $new_red*256*256+$new_green*256+$new_blue);
# print "red: $red\tgreen: $green\tblue: $blue\t$old_rgb\n";
# print "\tred: $new_red\tgreen: $new_green\tblue: $new_blue\t$new_rgb\n";
$fill_cmd="-fill \"#$new_rgb\" -opaque \"#$old_rgb\"";
# print "$fill_cmd\n";
push(@fill,$fill_cmd);
}
$convert="convert ";
foreach(@fill){
# print "$_";
$convert="$convert $_";
}
$convert = "$convert $infilename $outfilename";
print "$convert\n";
system($convert);