public void Water()
        {
            new Thread(() =>
            {
                this.undoRedo.PushToUndoStack((Bitmap)this.model.Image.Clone());
                this.undoRedo.ClearRedoStack();

                DispFilters.Water(this.model.Image, (short)this.filterParam, this.displacementSmooth);
                this.view.RedrawInvoker();
            }).Start();
        }
        public void Sphere()
        {
            this.undoRedo.PushToUndoStack((Bitmap)this.model.Image.Clone());
            this.undoRedo.ClearRedoStack();

            new Thread(() =>
            {
                this.undoRedo.PushToUndoStack((Bitmap)this.model.Image.Clone());
                this.undoRedo.ClearRedoStack();

                DispFilters.Sphere(this.model.Image, this.displacementSmooth);
                this.view.RedrawInvoker();
            }).Start();
        }
        public void Flip()
        {
            this.undoRedo.PushToUndoStack((Bitmap)this.model.Image.Clone());
            this.undoRedo.ClearRedoStack();

            new Thread(() =>
            {
                this.undoRedo.PushToUndoStack((Bitmap)this.model.Image.Clone());
                this.undoRedo.ClearRedoStack();

                if (this.filterParam == 1.0)
                {
                    DispFilters.Flip(this.model.Image, true, false);
                }
                else
                {
                    DispFilters.Flip(this.model.Image, false, true);
                }
                this.view.RedrawInvoker();
            }).Start();
        }