X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FLaTeX%2FTikZ%2FFormatter.pm;h=b3c242ad2ae5aa8f96c4fd50adddcc2f9a45e8eb;hb=d934d1a7f7268b248687f14e0ede2723010bf243;hp=64266072622b8dac002b407a7c57fa534e13e358;hpb=93bfe14caec156fc11587863a486220b986b6b2e;p=perl%2Fmodules%2FLaTeX-TikZ.git diff --git a/lib/LaTeX/TikZ/Formatter.pm b/lib/LaTeX/TikZ/Formatter.pm index 6426607..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'; @@ -62,13 +72,11 @@ $find_mods = do { Sub::Name::subname('find_mods' => sub { my ($set, $layers, $others) = @_; - if ($set->isa('LaTeX::TikZ::Set::Mod')) { - for ($set->mods) { - if ($_->isa('LaTeX::TikZ::Mod::Layer')) { - push @$layers, $_; - } else { - push @$others, $_; - } + for ($set->mods) { + if ($_->isa('LaTeX::TikZ::Mod::Layer')) { + push @$layers, $_; + } else { + push @$others, $_; } } @@ -99,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}"; } @@ -111,16 +124,12 @@ sub render { ); my @decls; - if (@layers) { - push @decls, LaTeX::TikZ::Mod::Layer->declare(@layers); - } - for (@other_mods) { - push @decls, $_->declare($tikz); - } + push @decls, LaTeX::TikZ::Mod::Layer->declare(@layers) if @layers; + push @decls, $_->declare($tikz) for @other_mods; my @content = ( "\\begin{tikzpicture}", - $seq->draw($tikz)->instantiate, + @{ $seq->draw($tikz) }, "\\end{tikzpicture}", ); @@ -160,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