mirror of
https://github.com/greenshot/greenshot
synced 2025-08-22 06:23:24 -07:00
Main redact functionality
This commit is contained in:
parent
9634f8abbc
commit
ead7fdc4ba
5 changed files with 126 additions and 28 deletions
|
@ -35,6 +35,7 @@ namespace Greenshot.Base.Interfaces
|
||||||
Bitmap,
|
Bitmap,
|
||||||
Path,
|
Path,
|
||||||
SpeechBubble,
|
SpeechBubble,
|
||||||
StepLabel
|
StepLabel,
|
||||||
|
Redact,
|
||||||
}
|
}
|
||||||
}
|
}
|
60
src/Greenshot.Editor/Drawing/RedactionContainer.cs
Normal file
60
src/Greenshot.Editor/Drawing/RedactionContainer.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -754,6 +754,9 @@ namespace Greenshot.Editor.Drawing
|
||||||
case DrawingModes.Rect:
|
case DrawingModes.Rect:
|
||||||
_undrawnElement = new RectangleContainer(this);
|
_undrawnElement = new RectangleContainer(this);
|
||||||
break;
|
break;
|
||||||
|
case DrawingModes.Redact:
|
||||||
|
_undrawnElement = new RedactionContainer(this);
|
||||||
|
break;
|
||||||
case DrawingModes.Ellipse:
|
case DrawingModes.Ellipse:
|
||||||
_undrawnElement = new EllipseContainer(this);
|
_undrawnElement = new EllipseContainer(this);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -62,6 +62,7 @@ namespace Greenshot.Editor.Forms {
|
||||||
this.btnCursor = new GreenshotToolStripButton();
|
this.btnCursor = new GreenshotToolStripButton();
|
||||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.btnRect = new GreenshotToolStripButton();
|
this.btnRect = new GreenshotToolStripButton();
|
||||||
|
this.btnRedact = new GreenshotToolStripButton();
|
||||||
this.btnEllipse = new GreenshotToolStripButton();
|
this.btnEllipse = new GreenshotToolStripButton();
|
||||||
this.btnLine = new GreenshotToolStripButton();
|
this.btnLine = new GreenshotToolStripButton();
|
||||||
this.btnArrow = new GreenshotToolStripButton();
|
this.btnArrow = new GreenshotToolStripButton();
|
||||||
|
@ -100,6 +101,7 @@ namespace Greenshot.Editor.Forms {
|
||||||
this.insert_window_toolstripmenuitem = new GreenshotToolStripMenuItem();
|
this.insert_window_toolstripmenuitem = new GreenshotToolStripMenuItem();
|
||||||
this.objectToolStripMenuItem = new GreenshotToolStripMenuItem();
|
this.objectToolStripMenuItem = new GreenshotToolStripMenuItem();
|
||||||
this.addRectangleToolStripMenuItem = new GreenshotToolStripMenuItem();
|
this.addRectangleToolStripMenuItem = new GreenshotToolStripMenuItem();
|
||||||
|
this.redactToolStripMenuItem = new GreenshotToolStripMenuItem();
|
||||||
this.addEllipseToolStripMenuItem = new GreenshotToolStripMenuItem();
|
this.addEllipseToolStripMenuItem = new GreenshotToolStripMenuItem();
|
||||||
this.drawLineToolStripMenuItem = new GreenshotToolStripMenuItem();
|
this.drawLineToolStripMenuItem = new GreenshotToolStripMenuItem();
|
||||||
this.drawArrowToolStripMenuItem = new GreenshotToolStripMenuItem();
|
this.drawArrowToolStripMenuItem = new GreenshotToolStripMenuItem();
|
||||||
|
@ -329,6 +331,7 @@ namespace Greenshot.Editor.Forms {
|
||||||
this.btnCursor,
|
this.btnCursor,
|
||||||
this.toolStripSeparator1,
|
this.toolStripSeparator1,
|
||||||
this.btnRect,
|
this.btnRect,
|
||||||
|
this.btnRedact,
|
||||||
this.btnEllipse,
|
this.btnEllipse,
|
||||||
this.btnLine,
|
this.btnLine,
|
||||||
this.btnArrow,
|
this.btnArrow,
|
||||||
|
@ -377,6 +380,16 @@ namespace Greenshot.Editor.Forms {
|
||||||
this.btnRect.Name = "btnRect";
|
this.btnRect.Name = "btnRect";
|
||||||
this.btnRect.Click += new System.EventHandler(this.BtnRectClick);
|
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
|
// btnEllipse
|
||||||
//
|
//
|
||||||
this.btnEllipse.CheckOnClick = true;
|
this.btnEllipse.CheckOnClick = true;
|
||||||
|
@ -688,6 +701,7 @@ namespace Greenshot.Editor.Forms {
|
||||||
//
|
//
|
||||||
this.objectToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.objectToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.addRectangleToolStripMenuItem,
|
this.addRectangleToolStripMenuItem,
|
||||||
|
this.redactToolStripMenuItem,
|
||||||
this.addEllipseToolStripMenuItem,
|
this.addEllipseToolStripMenuItem,
|
||||||
this.drawLineToolStripMenuItem,
|
this.drawLineToolStripMenuItem,
|
||||||
this.drawArrowToolStripMenuItem,
|
this.drawArrowToolStripMenuItem,
|
||||||
|
@ -714,6 +728,13 @@ namespace Greenshot.Editor.Forms {
|
||||||
this.addRectangleToolStripMenuItem.Name = "addRectangleToolStripMenuItem";
|
this.addRectangleToolStripMenuItem.Name = "addRectangleToolStripMenuItem";
|
||||||
this.addRectangleToolStripMenuItem.Click += new System.EventHandler(this.AddRectangleToolStripMenuItemClick);
|
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
|
// addEllipseToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.addEllipseToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("addEllipseToolStripMenuItem.Image")));
|
this.addEllipseToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("addEllipseToolStripMenuItem.Image")));
|
||||||
|
@ -2001,6 +2022,7 @@ namespace Greenshot.Editor.Forms {
|
||||||
private GreenshotToolStripMenuItem addCounterToolStripMenuItem;
|
private GreenshotToolStripMenuItem addCounterToolStripMenuItem;
|
||||||
private GreenshotToolStripMenuItem addEllipseToolStripMenuItem;
|
private GreenshotToolStripMenuItem addEllipseToolStripMenuItem;
|
||||||
private GreenshotToolStripMenuItem addRectangleToolStripMenuItem;
|
private GreenshotToolStripMenuItem addRectangleToolStripMenuItem;
|
||||||
|
private GreenshotToolStripMenuItem redactToolStripMenuItem;
|
||||||
private GreenshotToolStripMenuItem objectToolStripMenuItem;
|
private GreenshotToolStripMenuItem objectToolStripMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem undoToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem undoToolStripMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem redoToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem redoToolStripMenuItem;
|
||||||
|
@ -2025,6 +2047,7 @@ namespace Greenshot.Editor.Forms {
|
||||||
private GreenshotToolStripButton btnEllipse;
|
private GreenshotToolStripButton btnEllipse;
|
||||||
private GreenshotToolStripButton btnSave;
|
private GreenshotToolStripButton btnSave;
|
||||||
private GreenshotToolStripButton btnRect;
|
private GreenshotToolStripButton btnRect;
|
||||||
|
private GreenshotToolStripButton btnRedact;
|
||||||
private System.Windows.Forms.ToolStripContainer topToolStripContainer;
|
private System.Windows.Forms.ToolStripContainer topToolStripContainer;
|
||||||
private ToolStripEx destinationsToolStrip;
|
private ToolStripEx destinationsToolStrip;
|
||||||
private NonJumpingPanel panel1;
|
private NonJumpingPanel panel1;
|
||||||
|
|
|
@ -689,6 +689,12 @@ namespace Greenshot.Editor.Forms
|
||||||
RefreshFieldControls();
|
RefreshFieldControls();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void BtnRedactClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
_surface.DrawingMode = DrawingModes.Redact;
|
||||||
|
RefreshFieldControls();
|
||||||
|
}
|
||||||
|
|
||||||
private void BtnTextClick(object sender, EventArgs e)
|
private void BtnTextClick(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
_surface.DrawingMode = DrawingModes.Text;
|
_surface.DrawingMode = DrawingModes.Text;
|
||||||
|
@ -768,6 +774,11 @@ namespace Greenshot.Editor.Forms
|
||||||
BtnRectClick(sender, e);
|
BtnRectClick(sender, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void RedactToolStripMenuItemClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
BtnRedactClick(sender, e);
|
||||||
|
}
|
||||||
|
|
||||||
private void DrawFreehandToolStripMenuItemClick(object sender, EventArgs e)
|
private void DrawFreehandToolStripMenuItemClick(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
BtnFreehandClick(sender, e);
|
BtnFreehandClick(sender, e);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue