Graphics::Primitive.3pm

Langue: en

Version: 2010-03-22 (ubuntu - 24/10/10)

Section: 3 (Bibliothèques de fonctions)

NAME

Graphics::Primitive - Device and library agnostic graphic primitives

SYNOPSIS

Graphics::Primitive is a device and library agnostic system for creating and manipulating various graphical elements such as Borders, Fonts, Paths and the like.
     my $c = Graphics::Primitive::Component->new(
       background_color => Graphics::Color::RGB->new(
           red => 1, green => 0, blue => 0
       ),
       width => 500, height => 350,
       border => new Graphics::Primitive::Border->new( width => 5 )
     );
 
     my $driver = Graphics::Primitive::Driver::Cairo->new(format => 'SVG');
 
     $driver->prepare($c);
     $driver->finalize($c);
     $driver->draw($c);
 
     $driver->write($filename)
 
 

DESCRIPTION

Graphics::Primitive is library agnostic system for drawing things.

The idea is to allow you to create and manipulate graphical components and then pass them off to a Driver for actual drawing.

CONCEPTS

The root object for Graphics::Primitive is the Component. Components contain all the common elements that you'd expect: margins, padding, background color etc.

The next most important is the Container. Containers are Components that can hold other Components. Containers have all the attributes and methods of a Component with the addition of the layout_manager attribute for us with Layout::Manager.

Another important Component is the Canvas. The Canvas differs from other components by being a container for various Geometry::Primitive objects. This allows drawing of arbitrary shapes that do not fit existing components.

DRAWING LIFECYCLE

After creating all your components, there is a lifecycle that allows them to do their internal housekeeping to prepare for eventual drawing. The lifecycle is: prepare, layout and pack. Detailed explanation of these methods can be found in Component.

PREPARATION

Graphics::Primitive::Component has a "prepared" flag. This flag is set as part of the "prepare" method (shocking, I know). If this flag is set, then subsequent calls to "prepare" are ignored. Containers also have a prepare flag, but this flag is not set when calling "prepare". A Container's flag should be set by the layout manager. More information may be found with Layout::Manager.

INSPIRATION

Most of the concepts that you'll find in Graphics::Primitive are inspired by <Cairo>'s API and <CSS>'s box model.

AUTHOR

Cory Watson, "<gphat@cpan.org>"

CONTRIBUTORS

Florian Ragwitz

ACKNOWLEDGEMENTS

Many of the ideas here come from my experience using the Cairo library.

BUGS

Please report any bugs or feature requests to "bug-geometry-primitive at rt.cpan.org", or through the web interface at <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Geometry-Primitive>. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. Copyright 2008-2009 by Cory G Watson.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.