Scroll to navigation

Graphics::Primitive::Canvas(3pm) User Contributed Perl Documentation Graphics::Primitive::Canvas(3pm)

NAME

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

DESCRIPTION

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

SYNOPSIS

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

DESCRIPTION

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.

METHODS

Constructor

Creates a new Graphics::Primitive::Canvas

Instance Methods

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.

AUTHOR

Cory Watson <gphat@cpan.org>

COPYRIGHT & LICENSE

Copyright 2008-2010 by Cory G Watson.

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

2022-06-14 perl v5.34.0