Hi all,

the magnetic net mode uncovered some integer arithmetic errors whenever 
the coordinates are changed between screen and world (e.g. with the 
fix_x() function).
http://sourceforge.net/tracker/index.php?func=detail&aid=1928544&group_id=161080&atid=818426

Thus I'd like to change the screen related variables from the screen 
coordinates to the world coordinates.

The affected variables are start_x, second_x, last_x, loc_x and maybe 
some more.

To do this I'd change this with the following steps:

1. create a set of world variables in GSCHEM_TOPLEVEL:
   start_x -->  first_wx
   last_x -->  second_wx
   second_x --> third_wx
The renaming is intentional, because the second_x causes confusions in 
the net code whenever I read it.

2. add world coordinates to all screen events (mouse move, ...)
   SCREENtoWORLD(toplevel, x,y, &wx, &wy);
   wx = snap_grid(toplevel, wx);
   wy = snap_grid(toplevel, wy);
   
3. subsequently switch each drawing mode (net, line, box, ...) to use
   the world coordinates.
   (the coordinates are only converted back to screen inside drawing
   functions)

4. remove the old variables:
   start_x, last_x, ...

5. remove fix_x, fix_y functions from libgeda.


Please let me know what you think about the changes.
Any suggestions and additions are welcome.

@Ales: 
When do you plan to create a new release of gEDA?

Regards
Werner


_______________________________________________
geda-dev mailing list
[email protected]
http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev

Reply via email to