#!/usr/bin/perl -w

use strict;

my $desktopbg;
my $destdir;
# defaults
my $local_datadir = '/usr/share/moblin';
my $black_overlay = $local_datadir . '/black_overlay.png';
my $center_label = $local_datadir . '/shutdown_label.png';
my $myzone_tile;

sub usage()
{
    print 'moblin-install-artwork desktop-background.[png|jpg] $RPMBUILDDIR/%{_datadir}'."\n";
    print "                       [--myzone-tile myzone-background.png]\n";
    print "                       [--suspend-overlay black-overlay.png]\n";
    print "                       [--center-label shutdown-label.png]\n";
    print "                       [--help]\n";
    exit 1;
}

while (my $arg = shift @ARGV) {
    if ($arg eq '--help' || $arg eq '-h') {
	usage();
    } elsif (!defined $desktopbg) {
	$desktopbg = $arg;
    } elsif (!defined $destdir) {
	$destdir = $arg;
    } elsif ($arg =~ m/--myzone[_-]tile/) {
	$myzone_tile = shift @ARGV;
    } elsif ($arg =~ m/--black[_-]overlay/) {
	$black_overlay = shift @ARGV;
    } elsif ($arg =~ m/--center[_-]label/) {
	$center_label = shift @ARGV;
    }
}

usage() if (!defined $desktopbg);

print "creating directories:\n";
system ("mkdir -p $destdir/mutter-moblin/theme/panel") && die "failed to create dir: $!";
system ("mkdir -p $destdir/plymouth") && die "failed to create dir: $!";

my $workdir = `mktemp -d /tmp/mobinst.XXXXXXXX`;
chomp ($workdir);
print "building images into $workdir\n";

die "no file $desktopbg" if (! -f $desktopbg);

print "converting base image to png / de-alpha-izing\n";
system ("convert -alpha off $desktopbg $destdir/plymouth/splash-vendor.png") && die "failed to install splash";
system ("ln -sf ../../../plymouth/splash-vendor.png $destdir/mutter-moblin/theme/panel/mzone-background.png") && die "failed to link desktop background: $!";

print "building shutdown overlay from $black_overlay and $center_label\n";
system ("convert -format png $desktopbg $workdir/splash-vendor.png") && die "failed to convert $desktopbg: $!";
system ("composite $workdir/splash-vendor.png -compose darken $black_overlay $workdir/intermediate.png") && die "failed to darken: $!";
system ("composite -gravity Center $center_label -compose over $workdir/intermediate.png $workdir/intermediate-rgba.png") && die "failed to compose: $!";
system ("convert -alpha off $workdir/intermediate-rgba.png $destdir/plymouth/shutdown-vendor.png") && die "failed to install shutdown";

print "installing myzone background\n";
if (defined $myzone_tile) {
    system ("convert -alpha off $myzone_tile.png $destdir/mutter-moblin/theme/panel/background-tile-vendor.png") && die "failed to install mzone-tile";
} else {
    system ("ln -sf ../../../plymouth/splash-vendor.png $destdir/mutter-moblin/theme/panel/background-tile-vendor.png")  && die "failed to link mzone-tile: $!";
}

