Example #1
0
        ControlCorner CornerOfRect(CGRect rect, CGPoint point)
        {
            var closestDistance = nfloat.MaxValue;
            var closestCorner   = ControlCorner.None;

            Tuple <ControlCorner, CGPoint> [] corners =
            {
                Tuple(ControlCorner.TopLeft,     rect.CornerTopLeft()),
                Tuple(ControlCorner.TopRight,    rect.CornerTopRight()),
                Tuple(ControlCorner.BottomLeft,  rect.CornerBottomLeft()),
                Tuple(ControlCorner.BottomRight, rect.CornerBottomRight())
            };

            // corner, cornerPoint
            foreach (var tpl in corners)
            {
                var corner      = tpl.Item1;
                var cornerPoint = tpl.Item2;

                var dX       = point.X - cornerPoint.X;
                var dY       = point.Y - cornerPoint.Y;
                var distance = NMath.Sqrt((dX * dX) + (dY * dY));

                if (distance < closestDistance)
                {
                    closestDistance = distance;
                    closestCorner   = corner;
                }
            }

            if (closestDistance > regionOfInterestCornerTouchThreshold)
            {
                closestCorner = ControlCorner.None;
            }

            return(closestCorner);
        }
Example #2
0
		ControlCorner CornerOfRect (CGRect rect, CGPoint point)
		{
			var closestDistance = nfloat.MaxValue;
			var closestCorner = ControlCorner.None;
			Tuple<ControlCorner, CGPoint> [] corners = {
				Tuple (ControlCorner.TopLeft, rect.CornerTopLeft()),
				Tuple (ControlCorner.TopRight, rect.CornerTopRight ()),
				Tuple (ControlCorner.BottomLeft, rect.CornerBottomLeft ()),
				Tuple (ControlCorner.BottomRight, rect.CornerBottomRight())
			};

			// corner, cornerPoint
			foreach (var tpl in corners) {
				var corner = tpl.Item1;
				var cornerPoint = tpl.Item2;

				var dX = point.X - cornerPoint.X;
				var dY = point.Y - cornerPoint.Y;
				var distance = NMath.Sqrt ((dX * dX) + (dY * dY));

				if (distance < closestDistance) {
					closestDistance = distance;
					closestCorner = corner;
				}
			}

			if (closestDistance > regionOfInterestCornerTouchThreshold)
				closestCorner = ControlCorner.None;

			return closestCorner;
		}