private static double GetPositionOnShape(VisioScripting.Models.ShapeXFormData xform, VisioScripting.Models.ShapeRelativePosition pos) { var r = xform.GetRectangle(); switch (pos) { case VisioScripting.Models.ShapeRelativePosition.PinY: return(xform.PinY); case VisioScripting.Models.ShapeRelativePosition.PinX: return(xform.PinX); case VisioScripting.Models.ShapeRelativePosition.Left: return(r.Left); case VisioScripting.Models.ShapeRelativePosition.Right: return(r.Right); case VisioScripting.Models.ShapeRelativePosition.Top: return(r.Top); case VisioScripting.Models.ShapeRelativePosition.Bottom: return(r.Bottom); } throw new System.ArgumentOutOfRangeException(nameof(pos)); }
private static VisioAutomation.Geometry.Point GetPinPositionForCorner(VisioScripting.Models.ShapeXFormData input_xfrm, VisioAutomation.Geometry.Point new_lower_left, VisioScripting.Models.SnapCornerPosition corner) { var size = new VisioAutomation.Geometry.Size(input_xfrm.Width, input_xfrm.Height); var locpin = new VisioAutomation.Geometry.Point(input_xfrm.LocPinX, input_xfrm.LocPinY); switch (corner) { case VisioScripting.Models.SnapCornerPosition.LowerLeft: { return(new_lower_left.Add(locpin.X, locpin.Y)); } case VisioScripting.Models.SnapCornerPosition.UpperRight: { return(new_lower_left.Subtract(size.Width, size.Height).Add(locpin.X, locpin.Y)); } case VisioScripting.Models.SnapCornerPosition.LowerRight: { return(new_lower_left.Subtract(size.Width, 0).Add(locpin.X, locpin.Y)); } case VisioScripting.Models.SnapCornerPosition.UpperLeft: { return(new_lower_left.Subtract(0, size.Height).Add(locpin.X, locpin.Y)); } default: { throw new System.ArgumentOutOfRangeException(nameof(corner), "Unsupported corner"); } } }