Manual Reference Pages - GRAPHICS::PRIMITIVE (3)
Graphics::Primitive - Device and library agnostic graphic primitives
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);
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
The root object for Graphics::Primitive is the
Component. Components contain all the
common elements that youd 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.
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: <B>prepareB>, <B>layoutB> and <B>packB>. Detailed explanation of
these methods can be found in Component.
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 <B>notB> set when calling prepare. A Containers flag
should be set by the layout manager. More information may be found with
Most of the concepts that youll find in Graphics::Primitive are inspired by
Cairo <http://cairographics.org>s API and
CSS <http://www.w3.org/Style/CSS/>s box model.
Cory Watson, <firstname.lastname@example.org>
Many of the ideas here come from my experience using the Cairo library.
COPYRIGHT & LICENSE
Copyright 2008-2010 by Cory G Watson.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
|perl v5.20.3 ||GRAPHICS::PRIMITIVE (3) ||2015-01-22 |
Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.