++ed by:

1 PAUSE user
1 non-PAUSE user.

Dmitry Karasik


Prima::Cairo - Prima extension for Cairo drawing


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


    use strict;
    use warnings;
    use Cairo;
    use Prima qw(Application);
    use Prima::Cairo;
    my $w = Prima::MainWindow->new( onPaint => sub {
        my ( $self, $canvas ) = @_;

            my $cr = $canvas->cairo_context;
            $cr->rectangle (10, 10, 40, 40);
            $cr->set_source_rgb (0, 0, 0);
            $cr->rectangle (50, 50, 40, 40);
            $cr->set_source_rgb (1, 1, 1);
    run Prima;

Prima::Drawable API

cairo_context %options

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


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 );

Returns a im::bpp24 Prima::Image object with pixels copies from the image surface


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

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://karasik.eu.org/misc/cairo/cairo-win32.zip .

Hack lib/pkgconfig/cairo.pc and point PKG_CONFIG_PATH to the directory where it is located or copy it to where your system pkgconfig files are.

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.


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


Prima, Cairo

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


This software is distributed under the BSD License.