#!/usr/bin/perl -w 

# This program reads in an RGB file and writes out an RGBA file,
# with the RGBA file using RGB = 127,127,127 as transparent.

# An alternate form of this file would do the same, but interpret black
# as transparent. 

die "Usage: rgb2rgba.pl <input RGB> <output RGBA> [clear red] [clear green] [clear blue]\n" unless $#ARGV>0;

$in = shift;
$out = shift;
$idx=0;
$red = 0;
$blue = 0;
$green = 0;

$clearRed = 127;
$clearBlue = 127;
$clearGreen = 127; 

if ( @ARGV > 2 )
{
    print "Gotcha\n";
    $clearRed = shift;
    $clearBlue = shift;
    $clearGreen = shift;
}


open(INFILE, "<$in") or die "Can't open $in: $!";
open(OUTFILE, ">$out") or die "Can't open $out: $!";

while( sysread(INFILE, $byte, 1) != 0 ) {
    syswrite OUTFILE, $byte,1;
#    printf("Byte\n");
    $idx++;

    $val = vec($byte, 0, 8);
    if ($idx%3==1) {
	$red = $val;
    }
    if ($idx%3==2) {
	$green = $val;
    }
    if ($idx%3==0) {
	$blue = $val;
    }
    if ( $red == $clearRed && $blue == $clearBlue && $green == $clearGreen )
    {
	$alpha = 0;
    }
    else {
	$alpha = 255;
    }

    if ($idx%3==0) {
        syswrite OUTFILE, (pack("C", $alpha)), 1;
#	printf("Alpha\n");

    }
}
syswrite OUTFILE, (pack("C", 128)), 1;

close INFILE;
close OUTFILE;

