On Thu, 24 Oct 2002, ml@knorke.in-berlin.de 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?