← Back to team overview

kicad-developers team mailing list archive

Re: Erasing Tracks without XOR Remnants


Hi Alain,
Hi Dick,

I like your idea, todayś machines are fast and we should use it!

BUT this should be an option, maybe compile time if not possible to be run time. Not every on has fast machines...

This will be up to the implementor. I would not be in favor of maintaining two strategies, it would clutter the code. A $200 computer from Walmart is probably fast enough, but I am guessing.
I am particularly plagued with dirt on the screen specialy from the cursor (and in eeschema) (I am using Linux)

PS: please inform when SVN has a good version for testing...

We are at step 1) below. Guesses are not as helpful as actual tests.


Dick Hollenbeck escreveu:

I have checked in an experimental patch for deleting a track *segment*. It is implemented in just 4 lines or so, and it makes it so that when deleting a "track segment" there is a clean drawing of the screen afterwards. The prior technique, a 1980's technique of XORing of the screen might have made sense when computers were not as fast. Now I'd like to know if this improves deleting segments (only segments, not entire tracks) and does not lead to intolerable delays redrawing the screen.

If this is ok, then we should look for a volunteer to go through all the track deleting code and possibly module delete code and propagate this idea elsewhere. The idea is this, instead of XORing the old item being erased from the screen, you simply redraw the entire screen.

I think this is a good project for a new developer to jump in and get immediate impact into the project. So I would be looking for a volunteer to do this, provided there is near unanimous agreement that this change in strategy is a good thing. Note that the strategy I am talking about does not include "dragging" objects on screen. In the dragging cases, the XOR technique will probably remain best. However at end of drag, the entire screen should probably be redrawn.

See the lines at or near line 122 in file pcbnew/deltrack.cpp as the sample. So to summarize:

1) Test this patch, make sure it is fast enough, cast your vote then.

2) Look for other areas to implement the idea (with modified code as appropriate): delete entire track, delete entire net, delete module, etc. No dragging.

3) Get a volunteer to do 2)



Follow ups