On Fri, 2006-12-15 at 17:47 +0100, Patrick Bernaud wrote: > Sure. > > The purpose of the alternative is to avoid modifying any object before > the user confirms the action. At any time during the action the user > can cancel and it is guaranteed that the data has not been modified. > > To do so, a list of pointers to the objects concerned is built (a GList > in PAGE) and populated with either objects from the place list (a > single list for complex, attribs and text), for place, buffer actions > or from the main object list, for move and copy actions. > > Every time the user moves the pointer (translation), require a > rotation or a symetry, a matrix is updated to record the changes the > user requested. This matrix is passed to the draw_xor() function that > display the object transformed but without modifying it. > > When the user cancels, it just discards the matrix and the objects > from the place list (if used). > > When the user applies the changes, the final matrix is broken down in > a combination of mirror, rotation, translation that is only now > applied to the objects.
Can I just say... Fantastic! I was greatly impressed by the amount of cleanup achievable in the o_complex_... functions. I look forward to us both being able to merge our changes. With this description, I now understand how you managed such simplifications, and I am very impressed. Regards, Peter C. _______________________________________________ geda-dev mailing list [email protected] http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev
