Hello Wang and Readers,

On Fri, Feb 27, 2009 at 05:05, Wang Kunshan <wks1...@gmail.com> wrote:
> Currently self.translation is referenced all around the code.  It
> should be taken seriously whether to introduce
> self.central_point_of_view and remove self.translation.

The code is quite a mess, indeed. Oh, and nice analysis of the zoom
problem. I had a hard time doing it correctly and it never worked they
way I wanted it to do.

> Summary:
>
> 1. The current implementation of scroll() is obviously incorrect.
> 2. The self.translation is strange.  It is difficult to understand and
> difficult to use.
> 3. Introducing self.central_point_of_view will simplify coordinate
> handling, but will result in many code-changes.

The way labyrinth is working with all those nifty details of a canvas
is rather awkward, that's right. In the last week I needed something
similar to represent a directed graph in a python application.
However, the "canvas" (or MMapArea) of Labyrinth is too tied to the
rest of the code, to be useful for any other application.

I checked out other gtk canvas widgets which might be useful for
Labyrinth [1]. The pros and cons of adopting an existing canvas widget
are obvious:

 + well tested
 + we can spend time on Labyrinth's real problems
 + with a proper widget a11y is already done
 - might not be that flexible

A must-have for our purpose seems to be Cairo rendering. GnomeCanvas
seems to be a no-go, whereas (py)goocanvas and ccc are already adopted
by some projects. Clutter on the other hand is a bit overkill for our
purposes, I think.

So we have several options:

 * GooCanvas: has a11y support, very low-level (zooming and dnd must
be done by us)
 * ccc: according to the wiki page it seems ok, but it looks like it
is abandoned
 * CrCanvas [2]: this is my all-time favor, it has builtin panning,
zooming and infinite scrolling and is made with performance in mind
(this is where Labyrinth really sucks)
 * make our own generic canvas from scratch

And I have a question regarding the vcs. I would like to use git or
some other kind of dvcs, however the git-to-svn-bridge I used sucked a
little bit. Has anyone objections of moving to a distributed vcs?

So I would suggest to release the next version of Labyrinth asap and
then make a hard break.


[1] http://live.gnome.org/ProjectRidley/CanvasOverview
[2] http://geocanvas.sourceforge.net/crcanvas/index.html

-- 
Matthias Vogelgesang
Public-Key: http://tinyurl.com/2qcydl

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Labyrinth Discussion" group.
To post to this group, send email to labyrinth-devel@googlegroups.com
To unsubscribe from this group, send email to 
labyrinth-devel+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/labyrinth-devel?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to