---
name: "Graphics::Primitive::Canvas"
section: "3pm"
platform: "linux"
package: "libgraphics-primitive-perl"
version: "0.67-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Graphics::Primitive::Canvas"
---

# Graphics::Primitive::Canvas(3pm)

Component composed of paths

## 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

- *new*

  Creates a new Graphics::Primitive::Canvas

### Instance Methods

- *do*

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

  ```
    FIXME: Example
  ```

- *path*

  The current path this canvas is using.

- *path\_count*

  Count of paths in *paths*.

- *paths*

  Arrayref of hashrefs representing paths combined with their operations:

  ```
    [
      {
          path => $path,
          op   => $op
      },
    ]
  ```

- *restore*

  Replace the current path by popping the top path from the saved path list.

- *save*

  Copy the current path and push it onto the stack of saved paths.

- *saved\_paths*

  List of saved paths.  Add to the list with *save* and pop from it using *restore*.

- *saved\_path\_count*

  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.
