]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/blobdiff - lib/LaTeX/TikZ/Set.pm
Inline LaTeX::TikZ::Set->mods_unique
[perl/modules/LaTeX-TikZ.git] / lib / LaTeX / TikZ / Set.pm
index 655eb2fc2470f56605a271cfb8e49caa7e700614..e0886cb1bdd04560ea125857d5e774c20acde08b 100644 (file)
@@ -44,9 +44,10 @@ my $ltmc_tc = LaTeX::TikZ::Tools::type_constraint('LaTeX::TikZ::Mod::Clip');
 sub mod {
  my $set = shift;
 
- push @{$set->_mods},
-  map { $ltm_tc->check($_) ? $_ : $ltm_tc->coerce($_) }
-   @_;
+ my @mods = map $ltm_tc->coerce($_), @_;
+ $ltm_tc->assert_valid($_) for @mods;
+
+ push @{$set->_mods}, @mods;
 
  $set;
 }
@@ -55,8 +56,22 @@ sub mod {
  our %mods;
  our $last_mod = 0;
 
- sub mods_unique {
-  my ($set) = @_;
+ around 'draw' => sub {
+  my ($orig, $set, $tikz) = @_;
+
+  local $last_mod = $last_mod;
+
+  # Save a deep copy
+  my %saved_idx = map { $_ => $#{$mods{$_}} } keys %mods;
+  my $guard     = Scope::Guard->new(sub {
+   for (keys %mods) {
+    if (exists $saved_idx{$_}) {
+     $#{$mods{$_}} = $saved_idx{$_};
+    } else {
+     delete $mods{$_};
+    }
+   }
+  });
 
   my (@mods, $last_layer);
 MOD:
@@ -83,28 +98,6 @@ MOD:
                    values %mods;
   }
 
-  return @mods;
- }
-
- around 'draw' => sub {
-  my ($orig, $set, $tikz) = @_;
-
-  local $last_mod = $last_mod;
-
-  # Save a deep copy
-  my %saved_idx = map { $_ => $#{$mods{$_}} } keys %mods;
-  my $guard     = Scope::Guard->new(sub {
-   for (keys %mods) {
-    if (exists $saved_idx{$_}) {
-     $#{$mods{$_}} = $saved_idx{$_};
-    } else {
-     delete $mods{$_};
-    }
-   }
-  });
-
-  my @mods = $set->mods_unique;
-
   my $body = $set->$orig($tikz);
 
   if (@mods) {
@@ -133,7 +126,7 @@ sub clip {
 
  $_[0]->mod(
   map {
-   $ltmc_tc->check($_) ? $_ : LaTeX::TikZ::Mod::Clip->new($_)
+   $ltmc_tc->check($_) ? $_ : LaTeX::TikZ::Mod::Clip->new(clip => $_)
   } @_[1 .. $#_]
  )
 }