X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FLaTeX%2FTikZ%2FFormatter.pm;h=b3c242ad2ae5aa8f96c4fd50adddcc2f9a45e8eb;hb=d934d1a7f7268b248687f14e0ede2723010bf243;hp=da0656c288fbe4bf358bc4e6066d6b4ca8cc98eb;hpb=cb3b916e0590c6a0b70b60f30304921385462faa;p=perl%2Fmodules%2FLaTeX-TikZ.git diff --git a/lib/LaTeX/TikZ/Formatter.pm b/lib/LaTeX/TikZ/Formatter.pm index da0656c..b3c242a 100644 --- a/lib/LaTeX/TikZ/Formatter.pm +++ b/lib/LaTeX/TikZ/Formatter.pm @@ -51,10 +51,20 @@ has 'height' => ( ); has 'origin' => ( - is => 'ro', - does => 'Maybe[LaTeX::TikZ::Point]', + is => 'ro', + isa => 'Maybe[LaTeX::TikZ::Point::Autocoerce]', + coerce => 1, ); +sub id { + my $tikz = shift; + + join $;, map { + my $val = $tikz->$_; + defined($val) ? "$val" : '(undef)'; + } qw/unit format scale width height origin/; +} + my $find_mods; $find_mods = do { no warnings 'recursion'; @@ -97,7 +107,12 @@ sub render { my $h = $tikz->height; my $canvas = ''; if (defined $w and defined $h) { - $seq->clip(Tikz->rectangle(Tikz->point(0) => [ $w, $h ])); + require LaTeX::TikZ::Set::Rectangle; + $seq->clip(LaTeX::TikZ::Set::Rectangle->new( + from => 0, + width => $w, + height => $h, + )); $_ = $tikz->len($_) for $w, $h; $canvas = ",papersize={$w,$h},body={$w,$h}"; } @@ -154,6 +169,12 @@ sub thickness { 0.8 * $width * ($tikz->scale / 5); } +use LaTeX::TikZ::Interface formatter => sub { + shift; + + __PACKAGE__->new(@_); +}; + __PACKAGE__->meta->make_immutable; =head1 AUTHOR