in reply to Re: Simple Graphics::Primitive example?
in thread Simple Graphics::Primitive example?

I am just using the debian provided version of driver::cairo (0.46)

here is the code i am using

#!/usr/bin/perl use strict;use warnings; use Graphics::Primitive::Container; use Graphics::Color::RGB; use Graphics::Primitive::Font; use Graphics::Primitive::TextBox; use Graphics::Primitive::Driver::Cairo; use Layout::Manager::Compass; my $black = Graphics::Color::RGB->new(red => 0, green => 0, blue => 0) +; my $container = Graphics::Primitive::Container->new( width => 100, hei +ght => 100); $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; $driver->draw($container); $driver->write('/tmp/foo.png'); __END__

for which i always see this error

dean@laserbeak:/tmp$ perl test.pl Use of uninitialized value in subroutine entry at /usr/share/perl5/Gra +phics/Primitive/Driver/Cairo.pm line 85. Use of uninitialized value in subroutine entry at /usr/share/perl5/Gra +phics/Primitive/Driver/Cairo.pm line 85.

Chart::Clicker works fine, so i know that its possible for Graphics::Primitive::Driver::Cairo to output something

Replies are listed 'Best First'.
Re^3: Simple Graphics::Primitive example?
by tangent (Parson) on Feb 25, 2014 at 23:30 UTC
    Looking at the source of the driver module:
    81 my $width = $self->width; 82 my $height = $self->height; 83 84 if(uc($self->format) eq 'PNG') { 85 $surface = Cairo::ImageSurface->create( 86 'argb32', $width, $height 87 );
    So it seems that both $width and $height are not defined. I note that the example on the Graphics::Primitive page has:
    my $c = Graphics::Primitive::Component->new( width => 500, height => 350, );
    Whereas the example on the Graphics::Primitive::Driver::Cairo page has:
    my $c = Graphics::Primitive::Container->new( width => 500, height => 350, );
    I suggest you try adding the width and height parameters when creating the new Component object (or try just using Component instead of Container) and see if that makes a difference.
      that seems to have done the trick, thank ye!