On Thu, 24 Oct 2002, [EMAIL PROTECTED] wrote: > On Thu, Oct 24, 2002 at 09:23:48AM -0500, Lars Clausen wrote: >> The right place to add a checking call would be in >> layer_find_closest_connectionpoint() in app/diagramdata.c. Problem is, >> that loop goes over all objects in a layer, so we can't afford to spend >> a lot of time there. Well, we can keep it within the if, that'll cut >> out most of it. And instead of adding code to DrawFunc, a new object >> func should be defined for it. > > OK, I try to resume: > > 1. A restriction on possible connections seems to be a good > idea. Think of network diagrams, not to speak of > UML/Database/SDL/... code generation. > > 2. Of course, this must be an option to the user. Maybe a > diagram specific or a global option?
Hmmm... good question. Global options are easier to make and do away with. I really don't know which is better. > 3. The method to check has to be a new object function. > Something like: > > typedef gboolean (*AllowConnectFunc) (Object* obj_me, > Object* obj_other, > ... /* ? */ ); You may want to give the handle and connection point to the function. Could be some objects will allow objects to connect in certain ways and not in others. > 4. This function will be called twice (once for the > connecting object, once for the connected one) from > layer_find_closest_connectionpoint(). I don't see > performance hits, if functions will be called after > the "if (dist<mindist)" and only if the option is set. Sounds about right. -Lars -- Lars Clausen (http://shasta.cs.uiuc.edu/~lrclause)| Hårdgrim of Numenor "I do not agree with a word that you say, but I |---------------------------- will defend to the death your right to say it." | Where are we going, and --Evelyn Beatrice Hall paraphrasing Voltaire | what's with the handbasket? _______________________________________________ Dia-list mailing list [EMAIL PROTECTED] http://mail.gnome.org/mailman/listinfo/dia-list FAQ at http://www.lysator.liu.se/~alla/dia/faq.html Main page at http://www.lysator.liu.se/~alla/dia