]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/blobdiff - lib/LaTeX/TikZ/Formatter.pm
Make ->render return one body for each argument
[perl/modules/LaTeX-TikZ.git] / lib / LaTeX / TikZ / Formatter.pm
index 718c3eb8788f39c8c89dc0f063987393561e50bf..efa7dc6ed1da9c6558a18a02940163bdaa3d55b7 100644 (file)
@@ -117,11 +117,7 @@ my $find_mods = do {
 my $translate;
 
 sub render {
- my $tikz = shift;
-
- my $seq = LaTeX::TikZ::Set::Sequence->new(
-  kids => \@_,
- );
+ my ($tikz, @sets) = @_;
 
  unless ($translate) {
   require LaTeX::TikZ::Functor;
@@ -144,9 +140,12 @@ sub render {
  }
 
  my $origin = $tikz->origin;
- $seq = $seq->$translate($origin) if defined $origin;
+ if (defined $origin) {
+  @sets = map $_->$translate($origin), @sets;
+ }
 
  my (@layers, @other_mods);
+ my $seq = LaTeX::TikZ::Set::Sequence->new(kids => \@sets);
  $find_mods->($seq, \@layers, \@other_mods);
 
  my $w = $tikz->width;
@@ -154,11 +153,13 @@ sub render {
  my $canvas = '';
  if (defined $w and defined $h) {
   require LaTeX::TikZ::Set::Rectangle;
-  $seq->clip(LaTeX::TikZ::Set::Rectangle->new(
-   from   => 0,
-   width  => $w,
-   height => $h,
-  ));
+  for (@sets) {
+   $_->clip(LaTeX::TikZ::Set::Rectangle->new(
+    from   => 0,
+    width  => $w,
+    height => $h,
+   ));
+  }
   $_ = $tikz->len($_) for $w, $h;
   $canvas = ",papersize={$w,$h},body={$w,$h}";
  }
@@ -173,13 +174,13 @@ sub render {
  push @decls, LaTeX::TikZ::Mod::Layer->declare(@layers) if  @layers;
  push @decls, $_->declare($tikz)                        for @other_mods;
 
- my @content = (
+ my @bodies = map [
   "\\begin{tikzpicture}",
-  @{ $seq->draw($tikz) },
+  @{ $_->draw($tikz) },
   "\\end{tikzpicture}",
);
], @sets;
 
- return \@header, \@decls, \@content;
+ return \@header, \@decls, @bodies;
 }
 
 sub len {