Example #1
0
        private void OnUIGestureEnd(object sender, RoutedEventArgs e)
        {
            using (this.onUIGestureRegion.UseEnterScope())
            {
                UIElement source = e.Source as UIElement;
                if (source != null)
                {
                    FloodFillToolHandleType handleType = FloodFillToolUIBase <MagicWandTool, MagicWandToolChanges> .GetHandleType(source);

                    switch (handleType)
                    {
                    case FloodFillToolHandleType.Canvas:
                    case FloodFillToolHandleType.Origin:
                    case FloodFillToolHandleType.Move:
                        if ((this.State != TransactedToolState.Drawing) || !this.mouseInputDrawingAgent.IsActive)
                        {
                            break;
                        }
                        this.mouseInputDrawingAgent.TransactionToken.End();
                        base.VerifyState(TransactedToolState.Dirty);
                        return;

                    default:
                        throw ExceptionUtil.InvalidEnumArgumentException <FloodFillToolHandleType>(handleType, "sender.(MagicWandToolUI.HandleType)");
                    }
                    if ((this.State == TransactedToolState.Editing) && this.mouseInputEditingAgent.IsActive)
                    {
                        this.mouseInputEditingAgent.TransactionToken.End();
                        base.VerifyState(TransactedToolState.Dirty);
                    }
                }
            }
        }
Example #2
0
        private void OnUIDragMove(object sender, MouseEventArgs e)
        {
            using (this.onUIGestureRegion.UseEnterScope())
            {
                MagicWandToolChanges changes2;
                UIElement            source = e.Source as UIElement;
                if (source != null)
                {
                    PointDouble             position   = e.GetPosition(this.UI);
                    FloodFillToolHandleType handleType = FloodFillToolUIBase <MagicWandTool, MagicWandToolChanges> .GetHandleType(source);

                    PointDouble?nullable = null;
                    switch (handleType)
                    {
                    case FloodFillToolHandleType.Canvas:
                        if ((this.State == TransactedToolState.Drawing) && this.mouseInputDrawingAgent.IsActive)
                        {
                            nullable = new PointDouble?(this.gestureBeginCanvasPt);
                        }
                        break;

                    case FloodFillToolHandleType.Origin:
                    case FloodFillToolHandleType.Move:
                        if ((this.State == TransactedToolState.Editing) && this.mouseInputEditingAgent.IsActive)
                        {
                            nullable = new PointDouble?(base.ChangesBeforeEditing.OriginPoint);
                        }
                        break;

                    default:
                        throw ExceptionUtil.InvalidEnumArgumentException <FloodFillToolHandleType>(handleType, "sender.(MagicWandToolUI.HandleType)");
                    }
                    if (nullable.HasValue)
                    {
                        VectorDouble         num2        = (VectorDouble)(position - this.gestureBeginCanvasPt);
                        PointDouble          originPoint = nullable.Value + num2;
                        MagicWandToolChanges changes     = base.Changes;
                        changes2 = new MagicWandToolChanges(changes.DrawingSettingsValues, originPoint, changes.SelectionCombineModeOverride, changes.FloodModeOverride, changes.BaseGeometryPersistenceKey);
                        if (!changes.Equals((ReferenceValue)changes2))
                        {
                            switch (handleType)
                            {
                            case FloodFillToolHandleType.Canvas:
                                this.mouseInputDrawingAgent.TransactionToken.Changes = changes2;
                                break;

                            case FloodFillToolHandleType.Origin:
                            case FloodFillToolHandleType.Move:
                                goto Label_0139;
                            }
                        }
                    }
                }
                return;

Label_0139:
                this.mouseInputEditingAgent.TransactionToken.Changes = changes2;
            }
        }
Example #3
0
 private void OnUIDragEnd(object sender, MouseEventArgs e)
 {
     using (this.onUIGestureRegion.UseEnterScope())
     {
         UIElement source = e.Source as UIElement;
         if (source != null)
         {
             FloodFillToolHandleType handleType = FloodFillToolUIBase <MagicWandTool, MagicWandToolChanges> .GetHandleType(source);
         }
     }
 }
Example #4
0
        private void OnUIGestureBegin(object sender, MouseEventArgs e)
        {
            using (this.onUIGestureRegion.UseEnterScope())
            {
                UIElement source = e.Source as UIElement;
                if (source != null)
                {
                    PointDouble position = e.GetPosition(this.UI);
                    this.gestureBeginCanvasPt = position;
                    if ((this.State == TransactedToolState.Drawing) && !this.mouseInputDrawingAgent.IsActive)
                    {
                        this.RequestCancelDrawing();
                        base.VerifyState(TransactedToolState.Idle);
                    }
                    if ((this.State == TransactedToolState.Editing) && !this.mouseInputEditingAgent.IsActive)
                    {
                        this.RequestEndEditing();
                        base.VerifyState(TransactedToolState.Dirty);
                    }
                    FloodFillToolHandleType handleType = FloodFillToolUIBase <MagicWandTool, MagicWandToolChanges> .GetHandleType(source);

                    switch (handleType)
                    {
                    case FloodFillToolHandleType.Canvas:
                        if (this.State == TransactedToolState.Dirty)
                        {
                            base.CommitChanges();
                            base.VerifyState(TransactedToolState.Idle);
                        }
                        if (this.State == TransactedToolState.Idle)
                        {
                            SelectionHistoryMemento selectionHistoryMementoAndPrepareForBeginDrawing = base.GetSelectionHistoryMementoAndPrepareForBeginDrawing();
                            GeometryList            cachedGeometryList           = base.Selection.GetCachedGeometryList();
                            SelectionCombineMode?   selectionCombineModeOverride = base.GetSelectionCombineModeOverride();
                            FloodMode?           floodModeOverride = ((base.PresentationSource.PrimaryKeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) ? ((FloodMode?)1) : null;
                            MagicWandToolChanges initialChanges    = new MagicWandToolChanges(base.DrawingSettingsValues, position, selectionCombineModeOverride, floodModeOverride, cachedGeometryList);
                            base.BeginDrawing(this.mouseInputDrawingAgent, initialChanges, selectionHistoryMementoAndPrepareForBeginDrawing);
                        }
                        return;

                    case FloodFillToolHandleType.Origin:
                    case FloodFillToolHandleType.Move:
                        if (this.State == TransactedToolState.Dirty)
                        {
                            base.BeginEditing(this.mouseInputEditingAgent);
                        }
                        return;
                    }
                    throw ExceptionUtil.InvalidEnumArgumentException <FloodFillToolHandleType>(handleType, "sender.(MagicWandToolUI.HandleType)");
                }
            }
        }
Example #5
0
 public static void SetHandleType(UIElement target, FloodFillToolHandleType value)
 {
     target.SetValue(FloodFillToolUIBase <TTool, TChanges> .HandleTypeProperty, EnumUtil.GetBoxed <FloodFillToolHandleType>(value));
 }