in reply to Re: Gdk, Pixbuf, Cairo, build them up
in thread Gdk, Pixbuf, Cairo, build them up

Actually, I'm not playing with GUI. I just want to create a command line program. It still helps, especially this sentence: "Gtk2::Gdk::Pixmap IS a drawable".

I also found that using Cairo only is enough for me, as Cairo has function cairo_image_surface_create_for_data, which allows to create cairo surface from packed scalar. However I have some other problems:

1: I create the scalar using $data .= pack 'CCCC',255,$value,$value,$value; where $value is int from 0 to 255, and Cairo surface is created in argb32 format. I got a picture with good outlook, but all points are in yellow color.

2: When I added all my data to $data and went to create the surface, it caused a segfault. However, if only half data are added to $data, it won't fault. Why?

Replies are listed 'Best First'.
Re^3: Gdk, Pixbuf, Cairo, build them up
by zentara (Cardinal) on Oct 27, 2010 at 11:08 UTC
    code segfaults sometimes......Why?

    I can't say without seeing some code, and you may be better off asking on the Perl/Gtk2 maillist, but they will want a simple example also.

    Try to use the latest version of Cairo, and look at the examples. For example, regarding your yellow problem, the module's /examples/png subdir shows a stars.pl example, which shows setting color by

    $cr->set_source_rgb (0, 0, 0);
    to set the color,

    and the perldoc shows 2 ways, 1 with an alpha layer

    $cr->set_source_rgb ($red, $green, $blue) $red: double $green: double $blue: double
    for rgb32 you get an alpha layer
    $cr->set_source_rgba ($red, $green, $blue, $alpha) $red: double $green: double $blue: double $alpha: double
    Now your setting $data with

    $data .= pack 'CCCC',255,$value,$value,$value; where $value is int from 0 to 255

    dosn't seem to to be doing what is needed to set the stroke color....you almost appear to have the alpha setting (255) at the wrong end of the list, and additionally I'm not sure pack 'CCCC' is the right pack option.


    I'm not really a human, but I play one on earth.
    Old Perl Programmer Haiku ................... flash japh
      Everything solved. The segfault is caused by my wrong height count, and the weird color is caused by wrong position of that 255. Thanks!