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);
        }
示例#3
0
 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);
        }
示例#6
0
        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");
        }
示例#8
0
        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;
        }