Re: Plans for 0.8


On Sun, May 30, 2010 at 1:53 PM, Jiří Techet <techet gmail com> wrote:
> 2. I've been thinking a lot about simplifying ChamplainView which is
> without any doubt the scariest place of libchamplain and a place where
> hard-to-kill bugs live. The bad thing about it is that with the
> current architecture it has to care about too many things - it has to
> redraw polygons, it has to redraw layers, it has to redraw the scale,
> and so on. This architecture also doesn't scale very well - for every
> new graphical element we also have to add a set of functions to
> ChamplainView that manipulate it. To make everything customizable we
> would have to add a huge number of functions.
> What I propose is to make ChamplainView just to draw the map and all
> the rest to be implemented as clutter actors, which can be then
> manually added to ChamplainView. We have to distinguish two types of
> actors:
> a. those which move together with the map (e.g. markers, polygons)
> b. those whose position is static (e.g. the scale)
> I think the current concept of layers for moving actors is OK, so
> there won't be much change here for markers - the only difference will
> be that ChamplainView will not have to know what type of layer is
> redrawn - ChamplainView will just emit signals for particular events
> e.g. when redraw is necessary and it will be the responsibility of the
> layer to subscribe for this signal to get repainted. So apart from
> displaying the layer on top of the map, ChamplainView will not have to
> care about the layers at all.

Yes this part needs to change. I hate it that ChanplainView has
add_layer and add_polygon - it should have only one. To go even
further I would like that a Layer is a representation of a invisible
sheet to which whatever can be added not only markers but also
polygons and pictures. A layer should have then handle all its group
of elements - like show/hide, etc.
Polygons could be seen as a layer on its own but only if BasicMarker
is also a Point or a graphical representation of a Point. The
consequence is that Markers could be connected with each other or even
in a loop.

So one of my suggestion is:
* View has Layers.
* Layers have Markers/Points
* Markers/Points can be connected to form Polygons.

Another suggestion is:
* View has Layers
* Layers has Shapes
* Shapes are either Markers or Polygons
* Polygons are connected Points

Also other enhancements (smaller and bigger) that I have in mind:
* Inconsistencies in naming that I would like it is removed. A Point
has lat, lon and BasicMarker has latitude and longitude. it would be
better either the names are the same or BasicMarker should have a
* ChamplainView should provide a BoundingBox of current view.
longitude and latitude are not needed anymore because of
* There are a lot of get set functions with addition to properties.
Are they still needed?
* Resize on zoom marker - which means that marker changes size (scale)
depending on zoom level which makes the map more readable when zoom
level is bigger.
* When markers are to close together it is hard to select the right
one - somehow make them selectable (maybe like in Google Earth or
Marble). When they are selected have the ability to move the marker to
* Ability to easy move markers and in case of polygons create new
points (like in Google Maps or Merkaartor or JOSM).
* Maybe not something for 0.8 but a WMS as a map source would be cool.
* Another bigger thing map zoom level independent drawing - which
means that zoom is not dependent on what map supports but zoom is
fixed and map is rescaled if necessary.
* Maybe some other things...

Regards, Tomaž

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