[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: gEDA: zooming while drawing concept: discussion
Hi all,
sorry for responding my own mail.
On Tuesday 11 April 2006 21:57, Werner Hoch wrote:
> I'd like to hear some comments about how to fix the rubberband relics
> when zooming while drawing.
>
> All zooming/paning actions have the following actions:
> * Save the current rubberband points (SCREENtoWORLD ...)
> at the moment only start_x/y and last_x/y (second_x/y is missing)
> * recalc the drawing area
> * redraw all objects
> * recalc the saved points (WORLDtoSCREEN ...)
> * the redraw of the rubberbands << missing code
>
> At the moment the redraw of the rubberbands are missing.
> With the next mouse-move-event a XOR-PUT to the (not existing)
> rubberbands are made and the new rubberbands are drawn.
>
> The XOR-PUT of not existing rubberbands causes the rubberband relics.
>
>
> I guess that implementing the redraw of the missing rubberbands is
> not that easy.
> Instead implementing the statment "there are no rubberbands" would be
> easier. Just set every variable of the rubberband to it's "start"
> value.
> The "start" values are those that are in the object draw start
> functions.
>
> For the net it would be: (o_net_start()):
> last_x=second_x=start_x;
> ...
>
> The circle needs: (o_circle_start()):
> last_x=start_x;
> distance=0;
> ...
>
> Ok. Now the length of all rubberbands are zero and there are no
> rubberbands on the screen.
> With the next mouse-move-event the rubberbands are redrawn and
> everything is fine.
>
> What do you think about the concept?
I put the code to CVS last week. Well it is the right way to go as long
as we have no elements that require more than 2 user actions (like
splines).
Following things should work without errors:
* draw primitiv objects (line, arc, circle, net, bus, box, zoombox)
* move and copy of complex objects
> Do you expect bad side effects?
There are some extra XOR-drawings necessary to make move and copy work.
You'll may notice it if you move several large symbols and do some
zooming actions.
[...]
> For other zooming/paning actions and objects the code doesn't work
> that well. There are a lot of places where minor changes are required
> to make zoom-while-drawing work completely. Tracking them will take a
> while.
Works for all zooming/paning actions now. See Changelog notes.
Things that don't work yet:
* zoom while modifying objects
e.g. resize a box and zoom
Rubberband errors not related to zoom/pan.
Jumps between x_states:
* e.g. start drawing a net while drawing a box
a intermediate SELECT state is required to solve this
Component placement:
* zooming while component placement does not change the size of the
symbol
Let me know if you see any problems with the changes.
regards
Werner