Goo-Canvas

 view release on metacpan or  search on metacpan

xs/goocanvas.xs  view on Meta::CPAN

    );
    $rect->signal_connect('button-press-event',
                          \&on_rect_button_press);

    my $text = Goo::Canvas::Text->new(
        $root, "Hello World", 300, 300, -1, 'center',
        'font' => 'Sans 24',
    );
    $text->rotate(45, 300, 300);
    $window->show_all();
    Gtk2->main;

    sub on_rect_button_press {
        print "Rect item pressed!\n";
        return TRUE;
    }

=head1 DESCRIPTION

GTK+ doesn't has an built-in canvas widget. GooCanvas is wonderful.
It is easy to use and has powerful and extensible methods to create items
in canvas. Just try it.

For more documents, please read GooCanvas Manual and the demo programs
provided in the source distribution in both perl-Goo::Canvas and
GooCanvas.

=cut

GtkWidget*
goo_canvas_new(class)
    C_ARGS:
     /* void */

GooCanvasItem*
goo_canvas_get_root_item(canvas)
    GooCanvas *canvas

void
goo_canvas_set_root_item(canvas, item)
    GooCanvas *canvas
    GooCanvasItem *item

GooCanvasItemModel*
goo_canvas_get_root_item_model(canvas)
    GooCanvas *canvas

void
goo_canvas_set_root_item_model(canvas, model)
    GooCanvas *canvas
    GooCanvasItemModel *model

void
goo_canvas_get_bounds(canvas)
    GooCanvas *canvas
   PREINIT:
    gdouble left;
    gdouble top;
    gdouble right;
    gdouble bottom;
   PPCODE:
    goo_canvas_get_bounds(canvas, &left, &top, &right, &bottom);
    mXPUSHn(left);
    mXPUSHn(top);
    mXPUSHn(right);
    mXPUSHn(bottom);

void
goo_canvas_set_bounds(canvas, left, top, right, bottom)
    GooCanvas *canvas
    gdouble left
    gdouble top
    gdouble right
    gdouble bottom

gdouble
goo_canvas_get_scale(canvas)
    GooCanvas *canvas

void
goo_canvas_set_scale(canvas, scale)
    GooCanvas *canvas
    gdouble scale

GooCanvasItem*
goo_canvas_get_item(canvas, model)
    GooCanvas *canvas
    GooCanvasItemModel *model

GooCanvasItem*
goo_canvas_get_item_at(canvas, x, y, is_pointer_event)
    GooCanvas *canvas
    gdouble x
    gdouble y
    gboolean is_pointer_event

AV*
goo_canvas_get_items_at(canvas, x, y, is_pointer_event)
    GooCanvas *canvas
    gdouble x
    gdouble y
    gboolean is_pointer_event
  PREINIT:
    GList *list, *i;
  CODE:
    list = goo_canvas_get_items_at(canvas, x, y, is_pointer_event);
    RETVAL = newAV();
    for ( i = list; i != NULL; i = i->next ) {
        av_push(RETVAL, newSVGooCanvasItem((GooCanvasItem*)i->data));
    }
    sv_2mortal((SV*)RETVAL);
  OUTPUT:
    RETVAL
  CLEANUP:
    g_list_free (list);

AV*
goo_canvas_get_items_in_area(canvas, area, inside_area, allow_overlaps, include_containers)
    GooCanvas *canvas
    GooCanvasBounds *area
    gboolean inside_area



( run in 1.088 second using v1.01-cache-2.11-cpan-5511b514fd6 )