-
-
29 Jan 2006 19:38:50 UTC
- Distribution: Cairo
- Module version: 0.03
- Source (raw)
- Browse (raw)
- Changes
- How to Contribute
- Issues (2)
- Testers
- Kwalitee
Bus factor: 1- License: unknown
- Activity
24 month- Tools
- Download (30.67KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
- Dependencies
- ExtUtils::Depends
- ExtUtils::PkgConfig
- and possibly others
- Reverse dependencies
- CPAN Testers List
- Dependency graph
NAME
Cairo - Perl interface to the cairo library
SYNOPSIS
use Cairo; my $surface = Cairo::ImageSurface->create ('argb32', 100, 100); my $cr = Cairo::Context->create ($surface); $cr->rectangle (10, 10, 40, 40); $cr->set_source_rgb (0, 0, 0); $cr->fill; $cr->rectangle (50, 50, 40, 40); $cr->set_source_rgb (1, 1, 1); $cr->fill; $cr->show_page; $surface->write_to_png ("output.png");
ABSTRACT
Cairo provides Perl bindings for the vector graphics library cairo. It supports multiple output targets, including the X Window Systems, PDF, and PNG. Cairo produces identical output on all those targets and makes use of hardware acceleration wherever possible.
API DOCUMENTATION
Cairo::Context -- The cairo drawing context
Cairo::Context is the main object used when drawing with Cairo. To draw with Cairo, you create a Cairo::Context, set the target surface, and drawing options for the Cairo::Context, create shapes with methods like
$cr-
move_to> and$cr->line_to
, and then draw shapes with$cr->stroke
or$cr->fill
.Cairo::Context's can be pushed to a stack via
$cr->save
. They may then safely be changed, without loosing the current state. Use$cr->restore
to restore to the saved state.- $cr = Cairo::Context->create ($surface)
- $cr->save
- $cr->restore
- $status = $cr->status
- $surface = $cr->get_target
- $cr->set_source_rgb ($red, $green, $blue)
- $cr->set_source_rgba ($red, $green, $blue, $alpha)
- $cr->set_source ($source)
- $cr->set_source_surface ($surface, $x, $y)
- $source = $cr->get_source ()
- $cr->set_antialias ($antialias)
- $antialias = $cr->get_antialias
- $cr->set_dash ($offset, ...)
- $cr->set_fill_rule ($fill_rule)
- $cr->fill_rule_t $cr->get_fill_rule
- $cr->set_line_cap ($line_cap)
- $line_cap = $cr->get_line_cap
- $cr->set_line_join ($line_join)
- $line_join = $cr->get_line_join
- $cr->set_line_width ($width)
- $width = $cr->get_line_width
- $cr->set_miter_limit ($ limit)
- $limit = $cr->get_miter_limit
- $cr->set_operator ($op)
- $op = $cr->get_operator
- $cr->set_tolerance ($tolerance)
- $tolerance = $cr->get_tolerance
- $cr->clip
- $cr->clip_preserve
- $cr->reset_clip
- $cr->fill
- $cr->fill_preserve
- ($x1, $y1, $x2, $y2) = $cr->fill_extents
- $bool = $cr->in_fill ($x, $y)
- $cr->mask ($pattern)
- $cr->mask_surface ($surface, $surface_x, $surface_y)
- $cr->paint
- $cr->paint_with_alpha ($alpha)
- $cr->stroke
- $cr->stroke_preserve
- ($x1, $y1, $x2, $y2) = $cr->stroke_extents
- $bool = $cr->in_stroke ($x, $y)
- $cr->copy_page
- $cr->show_page
Paths -- Creating paths and manipulating path data
$path = [ { type => "move-to", points => [[1, 2]] }, { type => "line-to", points => [[3, 4]] }, { type => "curve-to", points => [[5, 6], [7, 8], [9, 10]] }, ... { type => "close-path", points => [] }, ];
Cairo::Path is a data structure for holding a path. This data structure serves as the return value for
$cr->copy_path_data
and$cr->copy_path_data_flat
as well the input value for$cr->append_path
.Cairo::Path is represented as an array reference that contains path elements, represented by hash references with two keys: type and points. The value for type can be either of the following:
The value for points is an array reference which contains zero or more points. Points are represented as array references that contain two doubles: x and y. The necessary number of points depends on the type of the path element:
The semantics and ordering of the coordinate values are consistent with
$cr->move_to
,$cr->line_to
,$cr->curve_to
, and$cr->close_path
.- $path = $cr->copy_path
- $path = $cr->copy_path_flat
- $cr->append_path ($path)
- ($x, $y) = $cr->get_current_point
- $cr->new_path
- $cr->close_path
- $cr->arc ($xc, $yc, $radius, $angle1, $angle2)
- $cr->arc_negative ($xc, $yc, $radius, $angle1, $angle2)
- $cr->curve_to ($x1, $y1, $x2, $y2, $x3, $y3)
- $cr->line_to ($x, $y)
- $cr->move_to ($x, $y)
- $cr->rectangle ($x, $y, $width, $height)
- $cr->glyph_path (...)
- $cr->text_path ($utf8)
- $cr->rel_curve_to ($dx1, $dy1, $dx2, $dy2, $dx3, $dy3)
- $cr->rel_line_to ($dx, $dy)
- $cr->rel_move_to ($dx, $dy)
Patterns -- Gradients and filtered sources
- $status = $pattern->status
- $pattern->set_matrix ($matrix)
- $matrix = $pattern->get_matrix
- $pattern = Cairo::SolidPattern->create_rgb ($red, $green, $blue)
- $pattern = Cairo::SolidPattern->create_rgba ($red, $green, $blue, $alpha)
- $matrix = $pattern->get_matrix
- $pattern = Cairo::SurfacePattern->create ($surface)
- $pattern->set_extend ($extend)
- $extend = $pattern->get_extend
- $pattern->set_filter ($filter)
- $filter = $pattern->get_filter
- $pattern = Cairo::LinearGradient->create ($x0, $y0, $x1, $y1)
- $pattern = Cairo::RadialGradient->create ($cx0, $cy0, $radius0, $cx1, $cy1, $radius1)
- $pattern->add_color_stop_rgb (double offset, double red, double green, double blue)
- $pattern->add_color_stop_rgba (double offset, double red, double green, double blue, double alpha)
Transformations -- Manipulating the current transformation matrix
- $cr->translate ($tx, $ty)
- $cr->scale ($sx, $sy)
- $cr->rotate ($angle)
- $cr->transform ($matrix)
- $cr->set_matrix ($matrix)
- $matrix = $cr->get_matrix
- $cr->identity_matrix
- ($x, $y) = $cr->user_to_device ($x, $y)
- ($dx, $dy) = $cr->user_to_device_distance ($dx, $dy)
- ($x, $y) = $cr->device_to_user ($x, $y)
- ($dx, $dy) = $cr->device_to_user_distance ($dx, $dy)
Text -- Rendering text and sets of glyphs
Glyphs are represented as anonymous hash references with three keys: index, x and y. Example:
my @glyphs = ({ index => 1, x => 2, y => 3 }, { index => 2, x => 3, y => 4 }, { index => 3, x => 4, y => 5 });
- $cr->select_font_face ($family, $slant, $weight)
- $cr->set_font_size ($size)
- $cr->set_font_matrix ($matrix)
- $matrix = $cr->get_font_matrix
- $cr->set_font_options ($options)
- $options = $cr->get_font_options
- $cr->show_text ($utf8)
- $cr->show_glyphs (...)
- $face = $cr->get_font_face
- $extents = $cr->font_extents
- $cr->set_font_face ($font_face)
- $extents = $cr->text_extents ($utf8)
- $extents = $cr->glyph_extents (...)
SEE ALSO
- http://cairographics.org/documentation
-
Lists many available resources including tutorials and examples
- http://cairographics.org/manual/
-
Contains the reference manual
AUTHORS
COPYRIGHT
Copyright (C) 2005 by the cairo perl team
Module Install Instructions
To install Cairo, copy and paste the appropriate command in to your terminal.
cpanm Cairo
perl -MCPAN -e shell install Cairo
For more information on module installation, please visit the detailed CPAN module installation guide.