private static double _get_position_on_shape(Models.ShapeXFormData xform, Models.ShapeRelativePosition pos) { var r = xform.GetRectangle(); switch (pos) { case VisioScripting.Models.ShapeRelativePosition.PinY: return(xform.XFormPinY); case VisioScripting.Models.ShapeRelativePosition.PinX: return(xform.XFormPinX); 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 _get_pin_position_for_corner(Models.ShapeXFormData input_xfrm, VisioAutomation.Geometry.Point new_lower_left, Models.SnapCornerPosition corner) { var size = new VisioAutomation.Geometry.Size(input_xfrm.XFormWidth, input_xfrm.XFormHeight); var locpin = new VisioAutomation.Geometry.Point(input_xfrm.XFormLocPinX, input_xfrm.XFormLocPinY); 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"); } } }