mirror of
https://github.com/greenshot/greenshot
synced 2025-08-20 13:33:27 -07:00
Changes for Thomas & fixed undo/redo for background changes
git-svn-id: http://svn.code.sf.net/p/greenshot/code/trunk@1647 7dccd23d-a4a3-4e1f-8c07-b4c1b4018ab4
This commit is contained in:
parent
a7b082d6ba
commit
46758d238c
8 changed files with 164 additions and 31 deletions
|
@ -552,20 +552,28 @@ namespace Greenshot.Drawing {
|
|||
Point offset = Point.Empty;
|
||||
switch (effect) {
|
||||
case Effects.Shadow:
|
||||
newImage = ImageHelper.CreateShadow((Bitmap)Image, 1f, 10, Image.PixelFormat, out offset);
|
||||
offset = new Point(6, 6);
|
||||
newImage = ImageHelper.CreateShadow((Bitmap)Image, 1f, 7, offset, PixelFormat.Format24bppRgb); //Image.PixelFormat);
|
||||
break;
|
||||
case Effects.TornEdge:
|
||||
offset = new Point(5, 5);
|
||||
using (Bitmap tmpImage = ImageHelper.CreateTornEdge((Bitmap)Image)) {
|
||||
newImage = ImageHelper.CreateShadow(tmpImage, 1f, 8, Image.PixelFormat, out offset);
|
||||
newImage = ImageHelper.CreateShadow(tmpImage, 1f, 6, offset, PixelFormat.Format24bppRgb); //Image.PixelFormat);
|
||||
}
|
||||
break;
|
||||
case Effects.Border:
|
||||
newImage = ImageHelper.CreateBorder((Bitmap)Image, 2, Color.Black, Image.PixelFormat, out offset);
|
||||
break;
|
||||
case Effects.Grayscale:
|
||||
newImage = ImageHelper.CreateGrayscale((Bitmap)Image);
|
||||
break;
|
||||
}
|
||||
|
||||
if (newImage != null) {
|
||||
// Make sure the elements move according to the offset the effect made the bitmap move
|
||||
elements.MoveBy(offset.X, offset.Y);
|
||||
// Make undoable
|
||||
MakeUndoable(new SurfaceCropMemento(this, imageRectangle), false);
|
||||
MakeUndoable(new SurfaceBackgroundChangeMemento(this, offset), false);
|
||||
SetImage(newImage, false);
|
||||
Invalidate();
|
||||
}
|
||||
|
@ -600,11 +608,12 @@ namespace Greenshot.Drawing {
|
|||
Bitmap tmpImage = ((Bitmap)Image).Clone(cropRectangle, Image.PixelFormat);
|
||||
tmpImage.SetResolution(Image.HorizontalResolution, Image.VerticalResolution);
|
||||
|
||||
Point offset = new Point(-cropRectangle.Left, -cropRectangle.Top);
|
||||
// Make undoable
|
||||
MakeUndoable(new SurfaceCropMemento(this, cropRectangle), false);
|
||||
MakeUndoable(new SurfaceBackgroundChangeMemento(this, offset), false);
|
||||
|
||||
SetImage(tmpImage, false);
|
||||
elements.MoveBy(-cropRectangle.Left, -cropRectangle.Top);
|
||||
elements.MoveBy(offset.X, offset.Y);
|
||||
if (SurfaceSizeChanged != null) {
|
||||
SurfaceSizeChanged(this);
|
||||
}
|
||||
|
@ -613,10 +622,10 @@ namespace Greenshot.Drawing {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void UndoCrop(Image previous, Rectangle cropRectangle) {
|
||||
|
||||
public void UndoBackgroundChange(Image previous, Point offset) {
|
||||
SetImage(previous, false);
|
||||
elements.MoveBy(cropRectangle.Left, cropRectangle.Top);
|
||||
elements.MoveBy(offset.X, offset.Y);
|
||||
if (SurfaceSizeChanged != null) {
|
||||
SurfaceSizeChanged(this);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue