Main redact functionality

This commit is contained in:
Nathan Brown 2022-10-09 22:24:04 -07:00
commit ead7fdc4ba
5 changed files with 126 additions and 28 deletions

View file

@ -35,6 +35,7 @@ namespace Greenshot.Base.Interfaces
Bitmap,
Path,
SpeechBubble,
StepLabel
StepLabel,
Redact,
}
}

View file

@ -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
{
/// <summary>
/// Represents a redaction object on the Surface
/// </summary>
[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();
}
/// <summary>
/// Do some logic to make sure all fields are initiated correctly
/// </summary>
/// <param name="streamingContext">StreamingContext</param>
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);
}
}
}

View file

@ -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;

View file

@ -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;

View file

@ -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);