DOKK / manpages / debian 10 / libgraphics-primitive-perl / Graphics::Primitive::Canvas.3pm.en
Graphics::Primitive::Canvas(3pm) User Contributed Perl Documentation Graphics::Primitive::Canvas(3pm)

Graphics::Primitive::Canvas - Component composed of paths

Graphics::Primitive::Canvas is a component for drawing arbitrary things. It holds Paths and Operations.

  use Graphics::Primitive::Canvas;
  my $canvas = Graphics::Primitive::Canvas->new;
  $canvas->move_to($point); # or just $x, $y
  $canvas->do($op);

The Canvas is a container for multiple Paths. It has a path that is the operative path for all path-related methods. You can treat the Canvas as if it was a path, calling methods like line_to or move_to.

When you are ready to perform an operation on the path, call the do method with the operation you want to call as an argument. Drawing a line and stroking it would look like:

  $canvas->move_to(0, 0);
  $canvas->line_to(10, 10);
  my $op = Graphics::Primitive::Operation::Stroke->new;
  $stroke->brush->color(
      Graphics::Color::RGB->new(red => 0, blue => 1, green => 1)
  );
  $canvas->do($op);

When you instantiate a Canvas a newly instantiated path resides in path. After you call do that current path is moved to the paths list and new path is placed in current_path. If you want to keep the path around you can call save before do then call restore to put a saved copy of the path back into path.

Creates a new Graphics::Primitive::Canvas

Given an operation, pushes the current path onto the path stack.

  FIXME: Example
    
The current path this canvas is using.
Count of paths in paths.
Arrayref of hashrefs representing paths combined with their operations:

  [
    {
        path => $path,
        op   => $op
    },
  ]
    
Replace the current path by popping the top path from the saved path list.
Copy the current path and push it onto the stack of saved paths.
List of saved paths. Add to the list with save and pop from it using restore.
Count of paths saved in saved_paths.

Cory Watson <gphat@cpan.org>

Copyright 2008-2010 by Cory G Watson.

You can redistribute and/or modify this code under the same terms as Perl itself.

2015-01-04 perl v5.20.2