Re: Sponsored Canvas (was: Re: The state of the canvas)



On Fri, 2005-11-18 at 11:00 +0100, Sven Herzberg wrote:

>   Good news now: Thomas is sponsoring my work on a cairo based canvas
> which I want to use for my presentation application and which he needs
> for several other projects. The contract says that I will finish my work
> until the middle of February. I still have 3 weeks at my former
> employer, so I'd like to use these three weeks for discussion of the
> canvas and how it should be like.
> 
>   I've already set up a wiki page [1] about this. Feel free to add
> requirement there and please provide API samples if you need special
> features (so I have a clear impression of what you need).
> 
> [1]http://www.criawips.org/wiki/index.php/Canvas
> [2]These limitations are (partially) documented on my canvas wiki page.

Wow, suddenly we have lots and lots of canvases! Cool.

This page describes a canvas that is very flexible and powerful. For an
app like Dia it is very useful. However, this is at a cost of being
pretty complicated, with lots of interfaces, multiple object, etc.
GnomeCanvas was often used for things that were much more like a widget,
only slightly more "custom", like the Evolution calendar view and the
timeline widget in a video editor. I think a canvas is very important
for these kinds of one-shot widgety things, and it has to be very easy
to do it, and it has to integrate well with normal widgets (thus my
offscreen window work).

In fact, I think its more important to have a simple canvas like that
than a really powerful flexible thing to be used for diagram editors and
powerpoint apps for the simple reason that I'm not at all sure such apps
would use a generic canvas. Each major app is gonna have some
requirement that makes them do their own canvas widget anyway. The
canvas is after all an extremely core part of an app like dia,
illustrator or powerpoint. The question is, is it possible to do a
canvas that caters to both usecases?

>From your page its very obvious that your target for this design is Dia,
since you have things like selection and focus handling. This isn't bad
per-se, but its likely that apps may want slightly different behaviour
with such things, and maybe the core should just be powerful enough that
things like that can be implemented in a layer above it.

The "Details" section seems a bit weird to me. It sounds like the model
for that map canvas would be the full data for all of germany in every
detail, and the canvas would iterate over each street in germany
checking the details level for it. Thats not very scalable. In fact,
huge geographic datasets are a pretty special-case thing, and I'm sure
map apps do map-specific things to get good scalability that a general
canvas can't. So, the right thing to do here might be to just feed the
canvas a more limited set of items, based on the zoom level, etc?

One thing your page doesn't mention at all is layouting. Its very nice
to be able to have some form of layout of items in a canvas. For
instance if you put two items in another item you might want the max
width of the two to set the parent item width and the other items width.
Unfortunately, in a model-view system such layouting conflicts with the
sort of view-dependent (zoom dependent really) things you describe on
your page. For instance, if one of the childrens of an item with
layouted children changes with zoom level, then other child items
positions can depend on the zoom level of the view, and have different
positions in different views. Then there is no longer a common model.

Have you looked at Piccolo? The camera model they use is very
interesting, because it allows an item to be visible in multiple places
in the view which allows some cool effects like drop shadowing very
easily.

Another important thing to look at is printing. I didn't see it in your
page. Much of it falls out automatically from using Cairo, but I think
you still have to consider it in the design.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 Alexander Larsson                                            Red Hat, Inc 
                   alexl redhat com    alla lysator liu se 
He's a bookish soccer-playing rock star who knows the secret of the alien 
invasion. She's a blind cigar-chomping pearl diver from aristocratic European 
stock. They fight crime! 




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]