Hi there,
another feature suggestion coming up...
In our use of Flowchart.NET, we have to deal with the situation that some DiagramItems/DiagramNodes are overlapping each other.
We make use of the DiagramItem.Locked property, DiagramItem.Visible, as well as threshold on finding items with GetNodeAt().
As a result, we now find ourselves in a situation where, when using the GetNodeAt() method, we get the wrong result.
Consider node X and node Y. Node X.Visible = false. Node X is on top of node Y. We expect to get node Y, when using GetNodeAt(), but actually get node X.
I guess we could solve the issue on our side by using GetNodesAt(), though that does not provide the override accepting a threshold.
Another solution would be for the GetNodeAt() ignoring hidden objects (like it is already capable of ignoring selected and locked objects), but I think that would just be yet another override of the method, which would become insufficient as soon as someone else wants yet another kind of filtering.
So my feature suggestion this time is an "open" GetNodeAt() filtering mechanism, through either a delegate or interface argument:
public DiagramNode GetNodeAt(PointF point, float threshold, Predicate<T> match );
In this way the client can put in any condition of satisfaction he wants in the predicate function, like the .NET List<T>.Find( Predicate<T> match ), just that in this case, we get the basic threshold and coordinate matching functionality from FlowChart.NET.
|