use PDF::Create;
use PDF::Create::Extensions;
####
$page->linecolor(RGB => 0.6, 0.2, 0.2);
##
##
$page->linewidth(0.8, 'join' => 'miter');
##
##
# file PDF/Create/Extensions.pm
package PDF::Create::Extensions;
package PDF::Create::Page::Extensions;
require PDF::Create::Page;
push @PDF::Create::Page::ISA, __PACKAGE__;
use strict;
use Carp;
my %color_mode = (
GRAY => [ G => 1 ],
RGB => [ RG => 3 ],
CMYK => [ K => 4 ],
);
foreach(keys %color_mode) {
$color_mode{uc $color_mode{$_}[0]} ||= $color_mode{$_};
}
$color_mode{GREY} = $color_mode{GRAY};
sub _modecolor {
my $mode = uc shift;
if(my $info = $color_mode{$mode}) {
$#_ = $info->[1] - 1;
return @_, $info->[0];
}
croak "'$mode' is not a valid color mode";
}
sub fillcolor {
my $self = shift;
my @cmd = _modecolor(@_); $_ = lc for $cmd[-1];
$self->{'pdf'}->page_stream($self);
$self->{'pdf'}->add(join ' ', @cmd);
}
sub linecolor {
my $self = shift;
my @cmd = _modecolor(@_); $_ = uc for $cmd[-1];
$self->{'pdf'}->page_stream($self);
$self->{'pdf'}->add(join ' ', @cmd);
}
my %line_styles = (
CAP => [ J => { BUTT => 0, ROUND => 1, 'PROJECTING SQUARE' => 2, SQUARE => 2 }],
JOIN => [ j => { MITER => 0, ROUND => 1, BEVEL => 2 }],
);
sub linewidth {
my $self = shift;
$self->{'pdf'}->page_stream($self);
my @add = (shift, 'w');
while(@_) {
my $key = uc shift;
my $value = uc shift;
if(my $dispatch = $line_styles{$key}) {
if($value =~ /^\d+$/) {
} elsif(exists $dispatch->[1]{$value}) {
$value = $dispatch->[1]{$value};
} else {
croak "'$value' is not a valid parameter for line style mode '$key'";
}
push @add, $value, $dispatch->[0];
} else {
croak "'$key' is not a valid line style key";
}
}
$self->{'pdf'}->add(join ' ', @add);
}
1;