diff --git a/src/Greenshot.Base/Interfaces/DrawingModes.cs b/src/Greenshot.Base/Interfaces/DrawingModes.cs
index cd84aea4f..38e3ca97f 100644
--- a/src/Greenshot.Base/Interfaces/DrawingModes.cs
+++ b/src/Greenshot.Base/Interfaces/DrawingModes.cs
@@ -35,6 +35,7 @@ namespace Greenshot.Base.Interfaces
Bitmap,
Path,
SpeechBubble,
- StepLabel
+ StepLabel,
+ Redact,
}
}
\ No newline at end of file
diff --git a/src/Greenshot.Editor/Drawing/RedactionContainer.cs b/src/Greenshot.Editor/Drawing/RedactionContainer.cs
new file mode 100644
index 000000000..1b3154b20
--- /dev/null
+++ b/src/Greenshot.Editor/Drawing/RedactionContainer.cs
@@ -0,0 +1,60 @@
+using System;
+using System.Drawing;
+using System.Runtime.Serialization;
+using Dapplo.Windows.Common.Extensions;
+using Dapplo.Windows.Common.Structs;
+using Greenshot.Base.Interfaces;
+using Greenshot.Base.Interfaces.Drawing;
+
+namespace Greenshot.Editor.Drawing
+{
+ ///
+ /// Represents a redaction object on the Surface
+ ///
+ [Serializable]
+ public class RedactionContainer : RectangleContainer
+ {
+ private readonly Color lineColor = Color.Black;
+ private readonly Color fillColor = Color.Black;
+ private readonly int lineThickness = 0;
+ private readonly bool shadow = false;
+
+ public RedactionContainer(ISurface parent) : base(parent)
+ {
+ Init();
+ }
+
+ ///
+ /// Do some logic to make sure all fields are initiated correctly
+ ///
+ /// StreamingContext
+ protected override void OnDeserialized(StreamingContext streamingContext)
+ {
+ base.OnDeserialized(streamingContext);
+ Init();
+ }
+
+ private void Init()
+ {
+ CreateDefaultAdorners();
+ }
+
+ protected override void InitializeFields()
+ {
+ }
+
+ public override void Draw(Graphics graphics, RenderMode rm)
+ {
+ var rect = new NativeRect(Left, Top, Width, Height).Normalize();
+
+ DrawRectangle(rect, graphics, rm, lineThickness, lineColor, fillColor, shadow);
+ }
+
+ public override bool ClickableAt(int x, int y)
+ {
+ var rect = new NativeRect(Left, Top, Width, Height).Normalize();
+
+ return RectangleClickableAt(rect, lineThickness, fillColor, x, y);
+ }
+ }
+}
diff --git a/src/Greenshot.Editor/Drawing/Surface.cs b/src/Greenshot.Editor/Drawing/Surface.cs
index f050374a6..75cb41e21 100644
--- a/src/Greenshot.Editor/Drawing/Surface.cs
+++ b/src/Greenshot.Editor/Drawing/Surface.cs
@@ -754,6 +754,9 @@ namespace Greenshot.Editor.Drawing
case DrawingModes.Rect:
_undrawnElement = new RectangleContainer(this);
break;
+ case DrawingModes.Redact:
+ _undrawnElement = new RedactionContainer(this);
+ break;
case DrawingModes.Ellipse:
_undrawnElement = new EllipseContainer(this);
break;
diff --git a/src/Greenshot.Editor/Forms/ImageEditorForm.Designer.cs b/src/Greenshot.Editor/Forms/ImageEditorForm.Designer.cs
index c0a8f8a63..15e49fafd 100644
--- a/src/Greenshot.Editor/Forms/ImageEditorForm.Designer.cs
+++ b/src/Greenshot.Editor/Forms/ImageEditorForm.Designer.cs
@@ -62,6 +62,7 @@ namespace Greenshot.Editor.Forms {
this.btnCursor = new GreenshotToolStripButton();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.btnRect = new GreenshotToolStripButton();
+ this.btnRedact = new GreenshotToolStripButton();
this.btnEllipse = new GreenshotToolStripButton();
this.btnLine = new GreenshotToolStripButton();
this.btnArrow = new GreenshotToolStripButton();
@@ -99,8 +100,9 @@ namespace Greenshot.Editor.Forms {
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
this.insert_window_toolstripmenuitem = new GreenshotToolStripMenuItem();
this.objectToolStripMenuItem = new GreenshotToolStripMenuItem();
- this.addRectangleToolStripMenuItem = new GreenshotToolStripMenuItem();
- this.addEllipseToolStripMenuItem = new GreenshotToolStripMenuItem();
+ this.addRectangleToolStripMenuItem = new GreenshotToolStripMenuItem();
+ this.redactToolStripMenuItem = new GreenshotToolStripMenuItem();
+ this.addEllipseToolStripMenuItem = new GreenshotToolStripMenuItem();
this.drawLineToolStripMenuItem = new GreenshotToolStripMenuItem();
this.drawArrowToolStripMenuItem = new GreenshotToolStripMenuItem();
this.drawFreehandToolStripMenuItem = new GreenshotToolStripMenuItem();
@@ -329,6 +331,7 @@ namespace Greenshot.Editor.Forms {
this.btnCursor,
this.toolStripSeparator1,
this.btnRect,
+ this.btnRedact,
this.btnEllipse,
this.btnLine,
this.btnArrow,
@@ -366,20 +369,30 @@ namespace Greenshot.Editor.Forms {
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
- //
- // btnRect
- //
- this.btnRect.CheckOnClick = true;
- this.btnRect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
- this.btnRect.Image = ((System.Drawing.Image)(resources.GetObject("btnRect.Image")));
- this.btnRect.ImageTransparentColor = System.Drawing.Color.Magenta;
- this.btnRect.LanguageKey = "editor_drawrectangle";
- this.btnRect.Name = "btnRect";
- this.btnRect.Click += new System.EventHandler(this.BtnRectClick);
- //
- // btnEllipse
- //
- this.btnEllipse.CheckOnClick = true;
+ //
+ // btnRect
+ //
+ this.btnRect.CheckOnClick = true;
+ this.btnRect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.btnRect.Image = ((System.Drawing.Image)(resources.GetObject("btnRect.Image")));
+ this.btnRect.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btnRect.LanguageKey = "editor_drawrectangle";
+ this.btnRect.Name = "btnRect";
+ this.btnRect.Click += new System.EventHandler(this.BtnRectClick);
+ //
+ // btnRedact
+ //
+ this.btnRedact.CheckOnClick = true;
+ this.btnRedact.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.btnRedact.Image = ((System.Drawing.Image)(resources.GetObject("btnRect.Image")));
+ this.btnRedact.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btnRedact.LanguageKey = "editor_drawrectangle";
+ this.btnRedact.Name = "btnRedact";
+ this.btnRedact.Click += new System.EventHandler(this.BtnRedactClick);
+ //
+ // btnEllipse
+ //
+ this.btnEllipse.CheckOnClick = true;
this.btnEllipse.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.btnEllipse.Image = ((System.Drawing.Image)(resources.GetObject("btnEllipse.Image")));
this.btnEllipse.ImageTransparentColor = System.Drawing.Color.Magenta;
@@ -688,6 +701,7 @@ namespace Greenshot.Editor.Forms {
//
this.objectToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.addRectangleToolStripMenuItem,
+ this.redactToolStripMenuItem,
this.addEllipseToolStripMenuItem,
this.drawLineToolStripMenuItem,
this.drawArrowToolStripMenuItem,
@@ -706,17 +720,24 @@ namespace Greenshot.Editor.Forms {
this.objectToolStripMenuItem.Name = "objectToolStripMenuItem";
this.objectToolStripMenuItem.Size = new System.Drawing.Size(54, 20);
this.objectToolStripMenuItem.Text = "Object";
- //
- // addRectangleToolStripMenuItem
- //
- this.addRectangleToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("addRectangleToolStripMenuItem.Image")));
- this.addRectangleToolStripMenuItem.LanguageKey = "editor_drawrectangle";
- this.addRectangleToolStripMenuItem.Name = "addRectangleToolStripMenuItem";
- this.addRectangleToolStripMenuItem.Click += new System.EventHandler(this.AddRectangleToolStripMenuItemClick);
- //
- // addEllipseToolStripMenuItem
- //
- this.addEllipseToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("addEllipseToolStripMenuItem.Image")));
+ //
+ // addRectangleToolStripMenuItem
+ //
+ this.addRectangleToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("addRectangleToolStripMenuItem.Image")));
+ this.addRectangleToolStripMenuItem.LanguageKey = "editor_drawrectangle";
+ this.addRectangleToolStripMenuItem.Name = "addRectangleToolStripMenuItem";
+ this.addRectangleToolStripMenuItem.Click += new System.EventHandler(this.AddRectangleToolStripMenuItemClick);
+ //
+ // redactToolStripMenuItem
+ //
+ this.redactToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("addRectangleToolStripMenuItem.Image")));//TODO
+ this.redactToolStripMenuItem.LanguageKey = "editor_drawrectangle";//TODO
+ this.redactToolStripMenuItem.Name = "redactToolStripMenuItem";
+ this.redactToolStripMenuItem.Click += new System.EventHandler(this.RedactToolStripMenuItemClick);
+ //
+ // addEllipseToolStripMenuItem
+ //
+ this.addEllipseToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("addEllipseToolStripMenuItem.Image")));
this.addEllipseToolStripMenuItem.LanguageKey = "editor_drawellipse";
this.addEllipseToolStripMenuItem.Name = "addEllipseToolStripMenuItem";
this.addEllipseToolStripMenuItem.Click += new System.EventHandler(this.AddEllipseToolStripMenuItemClick);
@@ -2001,6 +2022,7 @@ namespace Greenshot.Editor.Forms {
private GreenshotToolStripMenuItem addCounterToolStripMenuItem;
private GreenshotToolStripMenuItem addEllipseToolStripMenuItem;
private GreenshotToolStripMenuItem addRectangleToolStripMenuItem;
+ private GreenshotToolStripMenuItem redactToolStripMenuItem;
private GreenshotToolStripMenuItem objectToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem undoToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem redoToolStripMenuItem;
@@ -2025,6 +2047,7 @@ namespace Greenshot.Editor.Forms {
private GreenshotToolStripButton btnEllipse;
private GreenshotToolStripButton btnSave;
private GreenshotToolStripButton btnRect;
+ private GreenshotToolStripButton btnRedact;
private System.Windows.Forms.ToolStripContainer topToolStripContainer;
private ToolStripEx destinationsToolStrip;
private NonJumpingPanel panel1;
diff --git a/src/Greenshot.Editor/Forms/ImageEditorForm.cs b/src/Greenshot.Editor/Forms/ImageEditorForm.cs
index 87c3813c7..4b430c34e 100644
--- a/src/Greenshot.Editor/Forms/ImageEditorForm.cs
+++ b/src/Greenshot.Editor/Forms/ImageEditorForm.cs
@@ -689,6 +689,12 @@ namespace Greenshot.Editor.Forms
RefreshFieldControls();
}
+ private void BtnRedactClick(object sender, EventArgs e)
+ {
+ _surface.DrawingMode = DrawingModes.Redact;
+ RefreshFieldControls();
+ }
+
private void BtnTextClick(object sender, EventArgs e)
{
_surface.DrawingMode = DrawingModes.Text;
@@ -768,6 +774,11 @@ namespace Greenshot.Editor.Forms
BtnRectClick(sender, e);
}
+ private void RedactToolStripMenuItemClick(object sender, EventArgs e)
+ {
+ BtnRedactClick(sender, e);
+ }
+
private void DrawFreehandToolStripMenuItemClick(object sender, EventArgs e)
{
BtnFreehandClick(sender, e);