X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FLaTeX%2FTikZ%2FSet%2FCircle.pm;h=06a692aec4f8149a2ac3475b104083b406eb6889;hb=c0c71aaf7da22da2c52cec635cb899a25599dad7;hp=f1bbeab30a9a5942537418fd209c1be1591596ec;hpb=98f997b4a99a2d7cb6ce6bed78f0be22361ad909;p=perl%2Fmodules%2FLaTeX-TikZ.git diff --git a/lib/LaTeX/TikZ/Set/Circle.pm b/lib/LaTeX/TikZ/Set/Circle.pm index f1bbeab..06a692a 100644 --- a/lib/LaTeX/TikZ/Set/Circle.pm +++ b/lib/LaTeX/TikZ/Set/Circle.pm @@ -17,6 +17,9 @@ our $VERSION = '0.01'; use LaTeX::TikZ::Set::Point; +use LaTeX::TikZ::Interface; +use LaTeX::TikZ::Functor; + use LaTeX::TikZ::Tools; use Any::Moose; @@ -49,11 +52,23 @@ sub path { $set->center->path(@_) . ' circle (' . $tikz->len($set->radius) . ')'; } -use LaTeX::TikZ::Interface circle => sub { - shift; +LaTeX::TikZ::Interface->register( + circle => sub { + shift; + + __PACKAGE__->new(center => $_[0], radius => $_[1]); + }, +); - __PACKAGE__->new(center => $_[0], radius => $_[1]); -}; +LaTeX::TikZ::Functor->default_rule( + (__PACKAGE__) => sub { + my ($functor, $set, @args) = @_; + $set->new( + center => $set->center->$functor(@args), + radius => $set->radius, + ); + } +); __PACKAGE__->meta->make_immutable;