summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/vwrap (renamed from bin/vcalendar)30
1 files changed, 19 insertions, 11 deletions
diff --git a/bin/vcalendar b/bin/vwrap
index 73995f7..7015d17 100755
--- a/bin/vcalendar
+++ b/bin/vwrap
@@ -6,43 +6,51 @@ use autodie;
use GD;
use Getopt::Std;
+use IPC::Run qw(run);
my %opts;
-getopts('a:cfgC:', \%opts);
+getopts('a:cfgh:o:w:C:', \%opts);
-my $alpha = $opts{'a'} // 0;
+my $alpha = $opts{a} // 0;
+my $width = $opts{w} // 200;
+my $height = $opts{h} // 80;
-my $im = GD::Image->new(200, 80);
+my $outfile = $opts{o} // '/tmp/vwrap.png';
+
+my $im = GD::Image->new($width, $height);
$im->saveAlpha(1);
my $white = $im->colorAllocateAlpha(255, 255, 255, $alpha);
my $gray = $im->colorAllocateAlpha(127, 127, 127, $alpha);
my $fg = $im->colorAllocateAlpha( 0, 0, 0, $alpha);
my $bg = $im->colorAllocateAlpha( 0, 0, 0, 127);
+my $buf;
if ($opts{'C'}) {
$fg = $im->colorAllocateAlpha(split(qr{,}, $opts{'C'}), $alpha);
}
-my @lines = split(/\n/, qx{calendar});
+run(\@ARGV, \undef, \$buf, \*STDERR);
+
+my @lines = split(/\n/, $buf);
if ($opts{'c'}) {
say join("\n", @lines);
}
elsif ($opts{'g'}) {
- $im->filledRectangle(0, 0, 200, 80, $bg);
+ $im->filledRectangle(0, 0, $width, $height, $bg);
my $used_height = @lines * 10;
- if ($used_height > 72) {
- $used_height = 72;
+ if ($used_height > $height) {
+ $used_height = $height;
}
if ($used_height) {
$used_height += 8;
- $im->filledRectangle(0, 0, 200, $used_height, $white);
- $im->rectangle(0, 0, 200, $used_height, $gray);
+ $im->filledRectangle(0, 0, $width, $used_height, $white);
+ $im->rectangle(0, 0, $width, $used_height, $gray);
}
for my $i (0 .. $#lines) {
@@ -50,12 +58,12 @@ elsif ($opts{'g'}) {
$im->string(gdSmallFont, 2, 2 + (10 * $i), $lines[$i], $fg);
}
- open(my $out_fh, '>', '/tmp/vcalendar.png');
+ open(my $out_fh, '>', $outfile);
binmode $out_fh;
print $out_fh $im->png();
close($out_fh);
}
if ($opts{'f'}) {
- exec('feh', '/tmp/vcalendar.png');
+ exec('feh', $outfile);
}