Provided by: libgraphics-primitive-perl_0.67-1_all bug

NAME

       Graphics::Primitive::Driver - Role for driver implementations

DESCRIPTION

       What good is a library agnostic intermediary representation of graphical components if you
       can't feed them to a library specific implementation that turns them into drawings? Psht,
       none!

       To write a driver for Graphics::Primitive implement this role.

SYNOPSIS

         my $c = Graphics::Primitive::Component->new({
           origin => Geometry::Primitive::Point->new({
               x => $x, y => $y
           }),
           width => 500, height => 350
         });

CANVASES

       When a path is added to the internal list via do, it is stored in the paths attribute as a
       hashref.  The hashref has two keys: path and op.  The path is, well, the path.  The op is
       the operation provided to do.  As canvases are just lists of paths you should consult the
       next section as well.

PATHS AND HINTING

       Paths are lists of primitives.  Primitives are all descendants of Geometry::Shape and
       therefore have point_start and point_end.  These two attributes allow the chaining of
       primitives.  To draw a path you should iterate over the primitives, drawing each.

       When you pull each path from the arrayref you should pull it's accompanying hints via
       get_hint (the indexes match).  The hint may provide you with additional information:

   PRIMITIVE HINTS
       contiguous
           True if this primitive is contiguous with the previous one.  Example: Used to
           determine if a new sub-path is needed for the Cairo driver.

   OPERATION HINTS
       preserve

WARNING

       Only this class or the driver itself should call methods starting with an underscore, as
       this interface may change.

METHODS

       _do_stroke ($strokeop)
           Perform a stroke.

       _do_fill ($fillop)
           Perform a fill.

       _draw_arc ($arc)
           Draw an arc.

       _draw_canvas ($canvas)
           Draw a canvas.

       _draw_component ($comp)
           Draw a component.

       _draw_line ($line)
           Draw a line.

       _draw_rectangle ($rect)
           Draw a rectangle.

       _draw_textbox
           Draw a textbox.

       _resize ($width, $height)
           Resize the current working surface to the size specified.

       _finish_page
           Finish the current 'page' and start a new one.  Some drivers that are not paginated
           may need to emulate this behaviour.

       data
           Retrieve the results of this driver's operations.

       draw
           Draws the given Graphics::Primitive::Component.  If the component is a container then
           all components therein are drawn, recursively.

       get_text_bounding_box
           Given a Font and a string, returns a bounding box of the rendered text.

       finalize
           Finalize the supplied component and any child components, recursively.

       prepare
           Prepare the supplied component and any child components, recursively.

       write
           Write out the results of this driver's operations to the specified file.

AUTHOR

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

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.