public System.Windows.Forms.Cursor GetPointCursor(int index) { int translatedIndex; IControlPointsProvider provider = GetProviderByIndex(index, out translatedIndex); return(provider.GetPointCursor(translatedIndex)); }
public JointControlPointsProvider(IControlPointsProvider provider) { _controlPointsProviders = new System.Collections.ArrayList(); _controlPointsProviders.Add(provider); _controlPoints = new JointControlPointCollection(this); _supportedActions = new JointVObjectActionCollection(this); }
public ControlPoint this[int index] { get { int translatedIndex; IControlPointsProvider provider = _host.GetProviderByIndex(index, out translatedIndex); return(provider.ControlPoints[translatedIndex]); } }
public void RemoveProvider(IControlPointsProvider provider) { if (provider == null) { throw new System.ArgumentNullException("provider"); } _controlPointsProviders.Remove(provider); }
public void InsertProvider(int index, IControlPointsProvider provider) { if (provider == null) { throw new System.ArgumentNullException("provider"); } _controlPointsProviders.Insert(index, provider); }
public virtual bool NotifyMouseMove(System.Windows.Forms.MouseEventArgs e) { if (e == null) { throw new System.ArgumentNullException("e"); } if (_gripsProvider == null) { return(false); } if (!_obj.Locked && _dragging && e.Button == System.Windows.Forms.MouseButtons.Left) { System.Drawing.Rectangle invalidRect = GetObjectInvalidationArea(); IControlPointsProvider icpp = _obj as IControlPointsProvider; ResizeMode prevResizeMode = ResizeMode.Arbitrary; bool resizeProportionally = false; if (_resizeProportionallyWithShift && (System.Windows.Forms.Control.ModifierKeys & System.Windows.Forms.Keys.Shift) == System.Windows.Forms.Keys.Shift && icpp != null && icpp.SupportedActions.Contains(VObjectAction.Resize)) { ResizeVObjectAction resizeAction = (ResizeVObjectAction)icpp.SupportedActions[VObjectAction.Resize]; if (resizeAction.ResizeMode != ResizeMode.None) { resizeProportionally = true; prevResizeMode = resizeAction.ResizeMode; resizeAction.ResizeMode = ResizeMode.Proportional; } } _obj.DrawMode = VObjectDrawMode.Draft; _gripsProvider.DragPoint(_dragPointIndex, new System.Drawing.Point(e.X, e.Y)); if (resizeProportionally) { ((ResizeVObjectAction)icpp.SupportedActions[VObjectAction.Resize]).ResizeMode = prevResizeMode; } invalidRect = System.Drawing.Rectangle.Union(invalidRect, GetObjectInvalidationArea()); _objectHost.HostViewer.InvalidateViewer(new MultiLayerViewerInvalidationTarget(invalidRect, _objectHost.CurrentLayer)); } else { UpdateCursor(e.X, e.Y); } return(true); }
internal IControlPointsProvider GetProviderByIndex(int index, out int translatedIndex) { int pointCount = 0; for (int i = 0; i < _controlPointsProviders.Count; i++) { IControlPointsProvider provider = (IControlPointsProvider)_controlPointsProviders[i]; if (index < pointCount + provider.ControlPoints.Count) { translatedIndex = index - pointCount; return(provider); } pointCount += provider.ControlPoints.Count; } throw new System.ArgumentException(StringResources.GetString("ExStrCannotFindIndex"), "index"); }
private void UpdateControlPointsState() { bool enableResize = true, enableSkew = true, enableRotate = true, enableDrag = true; ResizeMode resizeMode = ResizeMode.Arbitrary; foreach (IVObject obj in _children) { IControlPointsProvider icpp = obj as IControlPointsProvider; if (icpp != null) { // Updating resize options IVObjectAction action = icpp.SupportedActions[VObjectAction.Resize]; if (_multipleVObjectsTransformationEnabled && action != null) { enableResize &= action.Enabled; if (((ResizeVObjectAction)action).ResizeMode == ResizeMode.None) { resizeMode = ResizeMode.None; } if (resizeMode != ResizeMode.None && ((ResizeVObjectAction)action).ResizeMode == ResizeMode.Proportional) { resizeMode = ResizeMode.Proportional; } } else { enableResize = false; } // And skew options action = icpp.SupportedActions[VObjectAction.Skew]; if (_multipleVObjectsTransformationEnabled && action != null) { enableSkew &= action.Enabled; } else { enableSkew = false; } // And rotations options action = icpp.SupportedActions[VObjectAction.Rotate]; if (_multipleVObjectsTransformationEnabled && action != null) { enableRotate &= action.Enabled; } else { enableRotate = false; } // And rotations options action = icpp.SupportedActions[VObjectAction.Drag]; if (action != null) { enableDrag &= action.Enabled; } else { enableDrag = false; } } else { enableResize = false; enableSkew = false; enableRotate = false; } } this.SupportedActions[VObjectAction.Rotate].Enabled = enableRotate; this.SupportedActions[VObjectAction.Skew].Enabled = enableSkew; this.SupportedActions[VObjectAction.Resize].Enabled = enableResize; this.SupportedActions[VObjectAction.Drag].Enabled = enableDrag; ((ResizeVObjectAction)this.SupportedActions[VObjectAction.Resize]).ResizeMode = resizeMode; }