logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Graphics::Primitive::Driver::Cairo - Cairo backend for Graphics::Primitive

Acknowledgements

       Danny Luna

Attributes

antialias_mode
       Set/Get the antialias mode of this driver. Options are default, none, gray and subpixel.

   cairo
       This driver's Cairo::Context object

   format
       Get the format for this driver.

   surface
       Get/Set the surface on which this driver is operating.

Author

       Cory G Watson <gphat@cpan.org>

Description

       This module draws Graphics::Primitive objects using Cairo.

Implementation Details

Borders
           Borders  are drawn clockwise starting with the top one.  Since cairo can't do line-joins on different
           colored lines, each border overlaps those before it.  This is not the way I'd like it  to  work,  but
           i'm opting to fix this later.  Consider yourself warned.

Methods

data
       Get the data in a scalar for this driver.

   write($file)
       Write this driver's data to the specified file.

   get_text_bounding_box($font,$text,$angle)
       Returns two Rectangles that encloses the supplied text. The origin's x and y maybe negative, meaning that
       the glyphs in the text extending left of x or above y.

       The  first  rectangle  is  the bounding box required for a container that wants to contain the text.  The
       second box is only useful if an optional angle is provided.  This second rectangle is the bounding box of
       the un-rotated text that allows for a controlled  rotation.   If  no  angle  is  supplied  then  the  two
       rectangles are actually the same object.

       If the optional angle is supplied the text will be rotated by the supplied amount in radians.

   get_textbox_layout($tb)
       Returns a Graphics::Primitive::Driver::TextLayout for the supplied textbox.

   reset
       Reset the driver.

   draw
       Draws the specified component.  Container's components are drawn recursively.

Name

       Graphics::Primitive::Driver::Cairo - Cairo backend for Graphics::Primitive

Synopsis

           use Graphics::Primitive::Component;
           use Graphics::Primitive::Driver::Cairo;

           my $driver = Graphics::Primitive::Driver::Cairo->new;
           my $container = Graphics::Primitive::Container->new(
               width => 800,
               height => 600
           );
           my $black = Graphics::Primitive::Color->new(red => 0, green => 0, blue => 0);
           $container->border->width(1);
           $container->border->color($black);
           $container->padding(
               Graphics::Primitive::Insets->new(top => 5, bottom => 5, left => 5, right => 5)
           );
           my $comp = Graphics::Primitive::Component->new;
           $comp->background_color($black);
           $container->add_component($comp, 'c');

           my $lm = Layout::Manager::Compass->new;
           $lm->do_layout($container);

           my $driver = Graphics::Primitive::Driver::Cairo->new(
               format => 'PDF'
           );
           $driver->draw($container);
           $driver->write('/Users/gphat/foo.pdf');

Version

       version 0.47

See Also