XSDDiagram.Rendering.DiagramItem.HitTest C# (CSharp) Method

HitTest() public method

public HitTest ( Point point, DiagramItem &element, DiagramHitTestRegion &region ) : void
point Point
element DiagramItem
region DiagramHitTestRegion
return void
        public void HitTest(Point point, out DiagramItem element, out DiagramHitTestRegion region)
        {
            element = null;
            if (ScaleRectangle(_boundingBox).Contains(point))
            {
                element = this;
                if (ScaleRectangle(new Rectangle(_location, _size)).Contains(point))
                {
                    if (_hasChildElements && ScaleRectangle(_childExpandButtonBox).Contains(point))
                        region = DiagramHitTestRegion.ChildExpandButton;
                    else
                        region = DiagramHitTestRegion.Element;
                }
                else
                {
                    region = DiagramHitTestRegion.BoundingBox;
                    if (_showChildElements)
                    {
                        foreach (DiagramItem childElement in _childElements)
                        {
                            DiagramItem resultElement;
                            DiagramHitTestRegion resultRegion;
                            childElement.HitTest(point, out resultElement, out resultRegion);
                            if (resultRegion != DiagramHitTestRegion.None)
                            {
                                element = resultElement;
                                region = resultRegion;
                                break;
                            }
                        }
                    }
                }
            }
            else
            {
                region = DiagramHitTestRegion.None;
            }
        }