diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/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); } |