protected override void OnUntouchedCore(Point imagePoint)
        {
            touchedPointerStyle = TouchPointerStyle.None;
            touchedPoint        = VisualZoomCropController.TouchPoint.None;
            touchedCell         = new Point(-1, -1);

            if (suspendImageChangedEventOnTouch)
            {
                SourceImage.TriggerImageChanged();
                suspendImageChangedEventOnTouch = false;
            }
            base.OnUntouchedCore(imagePoint);
        }
 public void Fill(Point point)
 {
     if (MouseColor != null && point.X >= 0 && point.X < SourceImage.Size.Width && point.Y >= 0 && point.Y < SourceImage.Size.Height)
     {
         using (SuspendUpdateVisualImage())
             using (SourceImage.Palette.SuppressRemoveColorsWithoutOccurrences())
                 using (UndoRedo.BeginMultiActionsUndoRedoStep(UndoRedoProvider.UndoRedoActionFillRegion))
                 {
                     ImagePainter.Fill(SourceImage, MouseColor, point.X, point.Y);
                     SourceImage.TriggerImageChanged();
                 }
     }
 }
 public void Pen(Point point)
 {
     if (MouseColor != null && point.X >= 0 && point.X < SourceImage.Size.Width && point.Y >= 0 && point.Y < SourceImage.Size.Height)
     {
         using (SuspendUpdateVisualImage())
             using (SourceImage.Palette.SuppressRemoveColorsWithoutOccurrences())
             {
                 SourceImage[point.X, point.Y] = MouseColor;
                 if (!suspendImageChangedEventOnTouch)
                 {
                     SourceImage.TriggerImageChanged();
                 }
             }
     }
 }
        public void Redo()
        {
            using (SuspendUpdateVisualImage())
            {
                if (MouseMode == MouseActionMode.MoveSelection)
                {
                    FinishMoveSelection();
                }

                if (UndoRedo.CanRedo)
                {
                    UndoRedo.Redo();
                    SourceImage.TriggerImageChanged();
                }
            }
        }
        public void FinishMoveSelection()
        {
            if (GridPainter.InsertedBlock != null)
            {
                using (SuspendUpdateVisualImage())
                    using (SourceImage.Palette.SuppressRemoveColorsWithoutOccurrences())
                        using (UndoRedo.BeginMultiActionsUndoRedoStep(UndoRedoProvider.UndoRedoActionPaste))
                        {
                            ImageCopier.CopyWithPalette(GridPainter.InsertedBlock, SourceImage, new Point(SelectedRect.Left, SelectedRect.Top));

                            GridPainter.InsertedBlock = null;

                            if (MouseMode == MouseActionMode.MoveSelection)
                            {
                                MouseMode = MouseActionMode.Shift;
                            }

                            UpdateVisualImage();
                            SourceImage.TriggerImageChanged();
                        }
            }
        }