[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gtk-devel
Subject:    Re: The state of the canvas
From:       Alexander Larsson <alexl () redhat ! com>
Date:       2005-11-18 13:28:41
Message-ID: 1132320521.14985.137.camel () greebo
[Download RAW message or body]

On Thu, 2005-11-17 at 12:44 +0000, Damon Chaplin wrote:
> On Thu, 2005-11-17 at 12:47 +0100, Jean Bréfort wrote:
> > Hi,
> > 
> > It seems that things do not advance a lot by now. AFAIK, no much work
> > have been done except Alexander Larsson's patch available at:
> > http://bugzilla.gnome.org/show_bug.cgi?id=318807
> 
> I've almost got a canvas widget working. It's similar to foocanvas, but
> renders with cairo, has a model/view split, and uses interfaces for
> canvas items and views.
> 
> Here's a demo (basically a port of the foocanvas demo):
> 
>   http://www.dachaplin.dsl.pipex.com/goocanvas
> 
> I should have all the basics sorted out in the next week.
> 
> I'd be interested to hear what essential features people think are
> missing in it.

This looks pretty cool. 

Why don't you split the group only methods from GooCanvasItemIface into,
say GooCavnasCompositeItemIface. Right now you can call
goo_canvas_item_add_child() on any item, but it will crash since
iface->add_child is NULL.

For the text object it would be very nice to have a mode where the text
is zoomlevel independent. As a very easy way to do this, use
CAIRO_HINT_METRICS_OFF for the text layout. Ideally you'd do the full
thing described at: http://people.redhat.com/otaylor/grid-fitting/

There is no support for applying generic affine transformations to the
items. Maybe this is a design decision though? Adding affines to
gnome-canvas was certainly when it started going downhill, which is why
I backed up to before that when I did foocanvas. However, with cairo
instead of libart for the rendering and all rendering being done with
cairo this might be doable in a sane way these days.

Its a shame that GooCanvasView is not an interface. Its used by
GooCanvasItem in create_view, so the items are tightly tied to it. If it
was an interface then you could implement a different view for e.g.
drawing to a pdf surface (i.e. support printing).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 Alexander Larsson                                            Red Hat, Inc 
                   alexl@redhat.com    alla@lysator.liu.se 
He's a scarfaced zombie dwarf who hangs with the wrong crowd. She's an 
artistic mutant doctor with a knack for trouble. They fight crime! 

_______________________________________________
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic