NAME

Prima::Cairo - Prima extension for Cairo drawing

DESCRIPTION

The module allows for programming Cairo library together with Prima widgets.

SYNOPSIS

use strict;
use warnings;
use Cairo;
use Prima qw(Application);
use Prima::Cairo;

my $w = Prima::MainWindow->new( onPaint => sub {
    my ( $self, $canvas ) = @_;
    $canvas->clear;

        my $cr = $canvas->cairo_context;

        $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;
});
run Prima;

Prima::Drawable API

cairo_context %options

Returns the Cairo context bound to the Prima drawable - widget, bitmap etc or an undef.

Options:

transform 'prima' || 'native'

Prima coordinate system is such that lower left pixel is (0,0), while cairo system is that (0,0) is upper left pixel. By default cairo_context returns a context adapted for Prima, but if you want native cairo coordinate system call it like this:

$canvas->cairo_context( transform => 0 );

This also affect font rendering, so when Prima transform is used, Cairo font must not be changed via

$cairo->set_font_size(18)

but rather via

my $matrix = $cairo->get_font_matrix;
$matrix->scale(1.8, 1.8); # default cairo matrix is 10
$cairo->set_font_matrix($matrix);
Cairo::ImageSurface::to_prima_image [ $class = Prima::Image ].

Returns a im::bpp24 (for color surfaces) or im::Byte/im::BW (for a8/a1 mask surfaces) Prima::Image object with pixels copies from the image surface. If $class is 'Prima::Icon' and image surface has 'argb32' format then fills the 1-bit alpha channel in the Prima icon object.

Prima::Image::to_cairo_surface

Returns a rgb24 Cairo::ImageSurface object with pixels copied from the image

Prima::Icon::to_cairo_surface

Returns a argb32 Cairo::ImageSurface object with pixels copied from the image and its mask

Installation on Strawberry win32

Before installing the module, you need to install Cairo perl wrapper. That requires libcairo binaries, includes, and pkg-config.

In case you don't have cairo binaries and include files, grab them here:

http://prima.eu.org/Cairo/cairo-win.zip

unzip and run <code>make install</code>.

Strawberry 5.20 is shipped with a broken pkg-config ( https://rt.cpan.org/Ticket/Display.html?id=96315, https://rt.cpan.org/Ticket/Display.html?id=96317 ), you'll need to install the latest ExtUtils::PkgConfig from CPAN.

This setup is needed both for Cairo and Prima-Cairo.

AUTHOR

Dmitry Karasik, <dmitry@karasik.eu.org>.

SEE ALSO

Prima, Cairo

git clone git@github.com:dk/Prima-Cairo.git

LICENSE

This software is distributed under the BSD License.