An in between step for fixing the field values.

This commit is contained in:
Robin 2018-06-08 14:55:14 +02:00
commit 99bc5e9eff
27 changed files with 407 additions and 297 deletions

View file

@ -59,25 +59,26 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
{ {
get get
{ {
var lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS); var lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS);
if (lineThickness > 0) if (lineThickness <= 0)
{ {
using (var pen = new Pen(Color.White)) return NativeRect.Empty;
{ }
pen.Width = lineThickness;
SetArrowHeads((ArrowHeadCombination) GetFieldValue(FieldType.ARROWHEADS), pen); using (var pen = new Pen(Color.White))
using (var path = new GraphicsPath()) {
{ pen.Width = lineThickness;
path.AddLine(Left, Top, Left + Width, Top + Height); SetArrowHeads((ArrowHeadCombination) GetFieldValue(FieldTypes.ARROWHEADS), pen);
using (var matrix = new Matrix()) using (var path = new GraphicsPath())
{ {
NativeRectFloat drawingBounds = path.GetBounds(matrix, pen); path.AddLine(Left, Top, Left + Width, Top + Height);
return drawingBounds.Inflate(2, 2).Round(); using (var matrix = new Matrix())
} {
} NativeRectFloat drawingBounds = path.GetBounds(matrix, pen);
} return drawingBounds.Inflate(2, 2).Round();
} }
return NativeRect.Empty; }
}
} }
} }
@ -86,17 +87,17 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
/// </summary> /// </summary>
protected override void InitializeFields() protected override void InitializeFields()
{ {
AddField(GetType(), FieldType.LINE_THICKNESS, 2); AddField(GetType(), FieldTypes.LINE_THICKNESS, 2);
AddField(GetType(), FieldType.LINE_COLOR, Color.Red); AddField(GetType(), FieldTypes.LINE_COLOR, Color.Red);
AddField(GetType(), FieldType.FILL_COLOR, Color.Transparent); AddField(GetType(), FieldTypes.FILL_COLOR, Color.Transparent);
AddField(GetType(), FieldType.SHADOW, true); AddField(GetType(), FieldTypes.SHADOW, true);
AddField(GetType(), FieldType.ARROWHEADS, ArrowHeadCombination.END_POINT); AddField(GetType(), FieldTypes.ARROWHEADS, ArrowHeadCombination.END_POINT);
} }
public override void Draw(Graphics graphics, RenderMode rm) public override void Draw(Graphics graphics, RenderMode rm)
{ {
var lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS); var lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS);
var shadow = GetFieldValueAsBool(FieldType.SHADOW); var shadow = GetFieldValueAsBool(FieldTypes.SHADOW);
if (lineThickness > 0) if (lineThickness > 0)
{ {
@ -104,8 +105,8 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.CompositingQuality = CompositingQuality.HighQuality; graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.PixelOffsetMode = PixelOffsetMode.None; graphics.PixelOffsetMode = PixelOffsetMode.None;
var lineColor = GetFieldValueAsColor(FieldType.LINE_COLOR); var lineColor = GetFieldValueAsColor(FieldTypes.LINE_COLOR);
var heads = (ArrowHeadCombination) GetFieldValue(FieldType.ARROWHEADS); var heads = (ArrowHeadCombination) GetFieldValue(FieldTypes.ARROWHEADS);
if (lineThickness > 0) if (lineThickness > 0)
{ {
if (shadow) if (shadow)
@ -155,13 +156,13 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
public override bool ClickableAt(int x, int y) public override bool ClickableAt(int x, int y)
{ {
var lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS) + 10; var lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS) + 10;
if (lineThickness > 0) if (lineThickness > 0)
{ {
using (var pen = new Pen(Color.White)) using (var pen = new Pen(Color.White))
{ {
pen.Width = lineThickness; pen.Width = lineThickness;
SetArrowHeads((ArrowHeadCombination) GetFieldValue(FieldType.ARROWHEADS), pen); SetArrowHeads((ArrowHeadCombination) GetFieldValue(FieldTypes.ARROWHEADS), pen);
using (var path = new GraphicsPath()) using (var path = new GraphicsPath())
{ {
path.AddLine(Left, Top, Left + Width, Top + Height); path.AddLine(Left, Top, Left + Width, Top + Height);

View file

@ -84,7 +84,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
DisposeImage(); DisposeImage();
DisposeShadow(); DisposeShadow();
_bitmap = value.CloneBitmap(); _bitmap = value.CloneBitmap();
var shadow = GetFieldValueAsBool(FieldType.SHADOW); var shadow = GetFieldValueAsBool(FieldTypes.SHADOW);
CheckShadow(shadow); CheckShadow(shadow);
if (!shadow) if (!shadow)
{ {
@ -157,23 +157,25 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
protected override void InitializeFields() protected override void InitializeFields()
{ {
AddField(GetType(), FieldType.SHADOW, false); AddField(GetType(), FieldTypes.SHADOW, false);
} }
protected void BitmapContainer_OnFieldChanged(object sender, FieldChangedEventArgs e) protected void BitmapContainer_OnFieldChanged(object sender, FieldChangedEventArgs e)
{ {
if (sender.Equals(this)) if (!sender.Equals(this))
{ {
if (FieldType.SHADOW.Equals(e.Field.FieldType)) return;
{ }
ChangeShadowField();
} if (FieldTypes.SHADOW.Equals(e.Field.FieldType))
} {
ChangeShadowField();
}
} }
public void ChangeShadowField() public void ChangeShadowField()
{ {
var shadow = GetFieldValueAsBool(FieldType.SHADOW); var shadow = GetFieldValueAsBool(FieldTypes.SHADOW);
if (shadow) if (shadow)
{ {
CheckShadow(true); CheckShadow(true);
@ -246,7 +248,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
{ {
if (_bitmap != null) if (_bitmap != null)
{ {
var shadow = GetFieldValueAsBool(FieldType.SHADOW); var shadow = GetFieldValueAsBool(FieldTypes.SHADOW);
graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.CompositingQuality = CompositingQuality.HighQuality; graphics.CompositingQuality = CompositingQuality.HighQuality;

View file

@ -73,7 +73,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
protected override void InitializeFields() protected override void InitializeFields()
{ {
AddField(GetType(), FieldType.FLAGS, FieldFlag.CONFIRMABLE); AddField(GetType(), FieldTypes.FLAGS, FieldFlag.CONFIRMABLE);
} }
public override void Invalidate() public override void Invalidate()

View file

@ -292,14 +292,14 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
} }
// Take a base safetymargin // Take a base safetymargin
var lineThickness = 5; var lineThickness = 5;
if (HasField(FieldType.LINE_THICKNESS)) if (HasField(FieldTypes.LINE_THICKNESS))
{ {
lineThickness += GetFieldValueAsInt(FieldType.LINE_THICKNESS); lineThickness += GetFieldValueAsInt(FieldTypes.LINE_THICKNESS);
} }
var offset = lineThickness / 2; var offset = lineThickness / 2;
var shadow = 0; var shadow = 0;
if (accountForShadowChange || HasField(FieldType.SHADOW) && GetFieldValueAsBool(FieldType.SHADOW)) if (accountForShadowChange || HasField(FieldTypes.SHADOW) && GetFieldValueAsBool(FieldTypes.SHADOW))
{ {
accountForShadowChange = false; accountForShadowChange = false;
shadow += 10; shadow += 10;
@ -322,7 +322,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
{ {
return; return;
} }
var lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS); var lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS);
if (horizontalAlignment == HorizontalAlignment.Left) if (horizontalAlignment == HorizontalAlignment.Left)
{ {
Left = lineThickness / 2; Left = lineThickness / 2;
@ -644,7 +644,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
public void HandleFieldChanged(object sender, FieldChangedEventArgs e) public void HandleFieldChanged(object sender, FieldChangedEventArgs e)
{ {
Log.Debug().WriteLine("Field {0} changed", e.Field.FieldType); Log.Debug().WriteLine("Field {0} changed", e.Field.FieldType);
if (Equals(e.Field.FieldType, FieldType.SHADOW)) if (Equals(e.Field.FieldType, FieldTypes.SHADOW))
{ {
accountForShadowChange = true; accountForShadowChange = true;
} }

View file

@ -48,10 +48,10 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
protected override void InitializeFields() protected override void InitializeFields()
{ {
AddField(GetType(), FieldType.LINE_THICKNESS, 2); AddField(GetType(), FieldTypes.LINE_THICKNESS, 2);
AddField(GetType(), FieldType.LINE_COLOR, Color.Red); AddField(GetType(), FieldTypes.LINE_COLOR, Color.Red);
AddField(GetType(), FieldType.FILL_COLOR, Color.Transparent); AddField(GetType(), FieldTypes.FILL_COLOR, Color.Transparent);
AddField(GetType(), FieldType.SHADOW, true); AddField(GetType(), FieldTypes.SHADOW, true);
} }
public override void Draw(Graphics graphics, RenderMode renderMode) public override void Draw(Graphics graphics, RenderMode renderMode)
@ -61,10 +61,10 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
graphics.CompositingQuality = CompositingQuality.HighQuality; graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.PixelOffsetMode = PixelOffsetMode.None; graphics.PixelOffsetMode = PixelOffsetMode.None;
var lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS); var lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS);
var lineColor = GetFieldValueAsColor(FieldType.LINE_COLOR); var lineColor = GetFieldValueAsColor(FieldTypes.LINE_COLOR);
var fillColor = GetFieldValueAsColor(FieldType.FILL_COLOR); var fillColor = GetFieldValueAsColor(FieldTypes.FILL_COLOR);
var shadow = GetFieldValueAsBool(FieldType.SHADOW); var shadow = GetFieldValueAsBool(FieldTypes.SHADOW);
var rect = new NativeRect(Left, Top, Width, Height).Normalize(); var rect = new NativeRect(Left, Top, Width, Height).Normalize();
DrawEllipse(rect, graphics, renderMode, lineThickness, lineColor, fillColor, shadow); DrawEllipse(rect, graphics, renderMode, lineThickness, lineColor, fillColor, shadow);
} }
@ -140,8 +140,8 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
public override bool ClickableAt(int x, int y) public override bool ClickableAt(int x, int y)
{ {
var lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS) + 10; var lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS) + 10;
var fillColor = GetFieldValueAsColor(FieldType.FILL_COLOR); var fillColor = GetFieldValueAsColor(FieldTypes.FILL_COLOR);
var rect = new NativeRect(Left, Top, Width, Height).Normalize(); var rect = new NativeRect(Left, Top, Width, Height).Normalize();
return EllipseClickableAt(rect, lineThickness, fillColor, x, y); return EllipseClickableAt(rect, lineThickness, fillColor, x, y);
} }

View file

@ -56,7 +56,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing.Fields
public FieldAggregator(ISurface parent) public FieldAggregator(ISurface parent)
{ {
foreach (var fieldType in FieldType.Values) foreach (var fieldType in FieldTypes.Values)
{ {
var field = new Field(fieldType, GetType()); var field = new Field(fieldType, GetType());
AddField(field); AddField(field);
@ -199,7 +199,12 @@ namespace Greenshot.Addon.LegacyEditor.Drawing.Fields
return returnFields ?? new List<IField>(); return returnFields ?? new List<IField>();
} }
public void OwnPropertyChanged(object sender, PropertyChangedEventArgs ea) /// <summary>
/// This is called when a property changes
/// </summary>
/// <param name="sender">object</param>
/// <param name="propertyChangedEventArgs">PropertyChangedEventArgs</param>
public void OwnPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs)
{ {
var field = (IField) sender; var field = (IField) sender;
if (_internalUpdateRunning || field.Value == null) if (_internalUpdateRunning || field.Value == null)

View file

@ -35,61 +35,21 @@ namespace Greenshot.Addon.LegacyEditor.Drawing.Fields
/// (The additional value is why this is not an enum) /// (The additional value is why this is not an enum)
/// </summary> /// </summary>
[Serializable] [Serializable]
public class FieldType : IFieldType public class FieldType<T> : IFieldType
{ {
public static readonly IFieldType ARROWHEADS = new FieldType("ARROWHEADS"); internal FieldType(string name)
public static readonly IFieldType BLUR_RADIUS = new FieldType("BLUR_RADIUS");
public static readonly IFieldType BRIGHTNESS = new FieldType("BRIGHTNESS");
public static readonly IFieldType FILL_COLOR = new FieldType("FILL_COLOR");
public static readonly IFieldType FONT_BOLD = new FieldType("FONT_BOLD");
public static readonly IFieldType FONT_FAMILY = new FieldType("FONT_FAMILY");
public static readonly IFieldType FONT_ITALIC = new FieldType("FONT_ITALIC");
public static readonly IFieldType FONT_SIZE = new FieldType("FONT_SIZE");
public static readonly IFieldType TEXT_HORIZONTAL_ALIGNMENT = new FieldType("TEXT_HORIZONTAL_ALIGNMENT");
public static readonly IFieldType TEXT_VERTICAL_ALIGNMENT = new FieldType("TEXT_VERTICAL_ALIGNMENT");
public static readonly IFieldType HIGHLIGHT_COLOR = new FieldType("HIGHLIGHT_COLOR");
public static readonly IFieldType LINE_COLOR = new FieldType("LINE_COLOR");
public static readonly IFieldType LINE_THICKNESS = new FieldType("LINE_THICKNESS");
public static readonly IFieldType MAGNIFICATION_FACTOR = new FieldType("MAGNIFICATION_FACTOR");
public static readonly IFieldType PIXEL_SIZE = new FieldType("PIXEL_SIZE");
public static readonly IFieldType PREVIEW_QUALITY = new FieldType("PREVIEW_QUALITY");
public static readonly IFieldType SHADOW = new FieldType("SHADOW");
public static readonly IFieldType PREPARED_FILTER_OBFUSCATE = new FieldType("PREPARED_FILTER_OBFUSCATE");
public static readonly IFieldType PREPARED_FILTER_HIGHLIGHT = new FieldType("PREPARED_FILTER_HIGHLIGHT");
public static readonly IFieldType FLAGS = new FieldType("FLAGS");
public static IFieldType[] Values =
{ {
ARROWHEADS, Name = name;
BLUR_RADIUS,
BRIGHTNESS,
FILL_COLOR,
FONT_BOLD,
FONT_FAMILY,
FONT_ITALIC,
FONT_SIZE,
TEXT_HORIZONTAL_ALIGNMENT,
TEXT_VERTICAL_ALIGNMENT,
HIGHLIGHT_COLOR,
LINE_COLOR,
LINE_THICKNESS,
MAGNIFICATION_FACTOR,
PIXEL_SIZE,
PREVIEW_QUALITY,
SHADOW,
PREPARED_FILTER_OBFUSCATE,
PREPARED_FILTER_HIGHLIGHT,
FLAGS
};
private FieldType(string name)
{
Name = name;
} }
public string Name { get; set; } public string Name { get; }
public override string ToString() /// <summary>
/// This returns the type which the value has
/// </summary>
public Type ValueType { get; }= typeof(T);
public override string ToString()
{ {
return Name; return Name;
} }
@ -109,7 +69,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing.Fields
public override bool Equals(object obj) public override bool Equals(object obj)
{ {
var other = obj as FieldType; var other = obj as FieldType<T>;
if (other == null) if (other == null)
{ {
return false; return false;
@ -117,12 +77,12 @@ namespace Greenshot.Addon.LegacyEditor.Drawing.Fields
return Equals(Name, other.Name); return Equals(Name, other.Name);
} }
public static bool operator ==(FieldType a, FieldType b) public static bool operator ==(FieldType<T> a, FieldType<T> b)
{ {
return Equals(a, b); return Equals(a, b);
} }
public static bool operator !=(FieldType a, FieldType b) public static bool operator !=(FieldType<T> a, FieldType<T> b)
{ {
return !Equals(a, b); return !Equals(a, b);
} }

View file

@ -0,0 +1,66 @@
#region Greenshot GNU General Public License
// Greenshot - a free and open source screenshot tool
// Copyright (C) 2007-2018 Thomas Braun, Jens Klingen, Robin Krom
//
// For more information see: http://getgreenshot.org/
// The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 1 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#endregion
#region Usings
using System;
using System.Drawing;
using Greenshot.Addons.Interfaces.Drawing;
#endregion
namespace Greenshot.Addon.LegacyEditor.Drawing.Fields
{
/// <summary>
/// Defines all FieldTypes + their default value.
/// (The additional value is why this is not an enum)
/// </summary>
public static class FieldTypes
{
public static readonly IFieldType ARROWHEADS = new FieldType<ArrowContainer.ArrowHeadCombination>("ARROWHEADS");
public static readonly IFieldType BLUR_RADIUS = new FieldType<int>("BLUR_RADIUS");
public static readonly IFieldType BRIGHTNESS = new FieldType<int>("BRIGHTNESS");
public static readonly IFieldType FILL_COLOR = new FieldType<Color>("FILL_COLOR");
public static readonly IFieldType FONT_BOLD = new FieldType<bool>("FONT_BOLD");
public static readonly IFieldType FONT_FAMILY = new FieldType<string>("FONT_FAMILY");
public static readonly IFieldType FONT_ITALIC = new FieldType<bool>("FONT_ITALIC");
public static readonly IFieldType FONT_SIZE = new FieldType<int>("FONT_SIZE");
public static readonly IFieldType TEXT_HORIZONTAL_ALIGNMENT = new FieldType<StringAlignment>("TEXT_HORIZONTAL_ALIGNMENT");
public static readonly IFieldType TEXT_VERTICAL_ALIGNMENT = new FieldType<StringAlignment>("TEXT_VERTICAL_ALIGNMENT");
public static readonly IFieldType HIGHLIGHT_COLOR = new FieldType<Color>("HIGHLIGHT_COLOR");
public static readonly IFieldType LINE_COLOR = new FieldType<Color>("LINE_COLOR");
public static readonly IFieldType LINE_THICKNESS = new FieldType<int>("LINE_THICKNESS");
public static readonly IFieldType MAGNIFICATION_FACTOR = new FieldType<int>("MAGNIFICATION_FACTOR");
public static readonly IFieldType PIXEL_SIZE = new FieldType<int>("PIXEL_SIZE");
public static readonly IFieldType PREVIEW_QUALITY = new FieldType<int>("PREVIEW_QUALITY");
public static readonly IFieldType SHADOW = new FieldType<bool>("SHADOW");
public static readonly IFieldType PREPARED_FILTER_OBFUSCATE = new FieldType<FilterContainer.PreparedFilter>("PREPARED_FILTER_OBFUSCATE");
public static readonly IFieldType PREPARED_FILTER_HIGHLIGHT = new FieldType<FilterContainer.PreparedFilter>("PREPARED_FILTER_HIGHLIGHT");
public static readonly IFieldType FLAGS = new FieldType<FieldFlag>("FLAGS");
public static IFieldType[] Values =
{
ARROWHEADS, BLUR_RADIUS, BRIGHTNESS, FILL_COLOR, FONT_BOLD, FONT_FAMILY, FONT_ITALIC, FONT_SIZE, TEXT_HORIZONTAL_ALIGNMENT, TEXT_VERTICAL_ALIGNMENT, HIGHLIGHT_COLOR, LINE_COLOR, LINE_THICKNESS, MAGNIFICATION_FACTOR, PIXEL_SIZE, PREVIEW_QUALITY, SHADOW, PREPARED_FILTER_OBFUSCATE, PREPARED_FILTER_HIGHLIGHT, FLAGS
};
}
}

View file

@ -65,7 +65,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
public PreparedFilter Filter public PreparedFilter Filter
{ {
get { return (PreparedFilter) GetFieldValue(FieldType.PREPARED_FILTER_HIGHLIGHT); } get { return (PreparedFilter) GetFieldValue(FieldTypes.PREPARED_FILTER_HIGHLIGHT); }
} }
protected override void OnDeserialized(StreamingContext streamingContext) protected override void OnDeserialized(StreamingContext streamingContext)
@ -81,16 +81,16 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
protected override void InitializeFields() protected override void InitializeFields()
{ {
AddField(GetType(), FieldType.LINE_THICKNESS, 0); AddField(GetType(), FieldTypes.LINE_THICKNESS, 0);
AddField(GetType(), FieldType.LINE_COLOR, Color.Red); AddField(GetType(), FieldTypes.LINE_COLOR, Color.Red);
AddField(GetType(), FieldType.SHADOW, false); AddField(GetType(), FieldTypes.SHADOW, false);
} }
public override void Draw(Graphics graphics, RenderMode rm) public override void Draw(Graphics graphics, RenderMode rm)
{ {
var lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS); var lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS);
var lineColor = GetFieldValueAsColor(FieldType.LINE_COLOR); var lineColor = GetFieldValueAsColor(FieldTypes.LINE_COLOR);
var shadow = GetFieldValueAsBool(FieldType.SHADOW); var shadow = GetFieldValueAsBool(FieldTypes.SHADOW);
var lineVisible = lineThickness > 0 && Colors.IsVisible(lineColor); var lineVisible = lineThickness > 0 && Colors.IsVisible(lineColor);
if (lineVisible) if (lineVisible)
{ {

View file

@ -42,8 +42,8 @@ namespace Greenshot.Addon.LegacyEditor.Drawing.Filters
public BlurFilter(DrawableContainer parent) : base(parent) public BlurFilter(DrawableContainer parent) : base(parent)
{ {
AddField(GetType(), FieldType.BLUR_RADIUS, 3); AddField(GetType(), FieldTypes.BLUR_RADIUS, 3);
AddField(GetType(), FieldType.PREVIEW_QUALITY, 1.0d); AddField(GetType(), FieldTypes.PREVIEW_QUALITY, 1.0d);
} }
public double PreviewQuality public double PreviewQuality
@ -58,7 +58,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing.Filters
public override void Apply(Graphics graphics, Bitmap applyBitmap, NativeRect rect, RenderMode renderMode) public override void Apply(Graphics graphics, Bitmap applyBitmap, NativeRect rect, RenderMode renderMode)
{ {
var blurRadius = GetFieldValueAsInt(FieldType.BLUR_RADIUS); var blurRadius = GetFieldValueAsInt(FieldTypes.BLUR_RADIUS);
var applyRect = BitmapHelper.CreateIntersectRectangle(applyBitmap.Size, rect, Invert); var applyRect = BitmapHelper.CreateIntersectRectangle(applyBitmap.Size, rect, Invert);
if (applyRect.Width == 0 || applyRect.Height == 0) if (applyRect.Width == 0 || applyRect.Height == 0)
{ {

View file

@ -40,7 +40,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing.Filters
{ {
public BrightnessFilter(DrawableContainer parent) : base(parent) public BrightnessFilter(DrawableContainer parent) : base(parent)
{ {
AddField(GetType(), FieldType.BRIGHTNESS, 0.9d); AddField(GetType(), FieldTypes.BRIGHTNESS, 0.9d);
} }
/// <summary> /// <summary>
@ -66,7 +66,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing.Filters
graphics.SetClip(applyRect); graphics.SetClip(applyRect);
graphics.ExcludeClip(rect); graphics.ExcludeClip(rect);
} }
var brightness = GetFieldValueAsFloat(FieldType.BRIGHTNESS); var brightness = GetFieldValueAsFloat(FieldTypes.BRIGHTNESS);
using (var ia = AdjustEffect.CreateAdjustAttributes(brightness, 1f, 1f)) using (var ia = AdjustEffect.CreateAdjustAttributes(brightness, 1f, 1f))
{ {
graphics.DrawImage(applyBitmap, applyRect, applyRect.X, applyRect.Y, applyRect.Width, applyRect.Height, GraphicsUnit.Pixel, ia); graphics.DrawImage(applyBitmap, applyRect, applyRect.X, applyRect.Y, applyRect.Width, applyRect.Height, GraphicsUnit.Pixel, ia);

View file

@ -41,7 +41,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing.Filters
{ {
public HighlightFilter(DrawableContainer parent) : base(parent) public HighlightFilter(DrawableContainer parent) : base(parent)
{ {
AddField(GetType(), FieldType.FILL_COLOR, Color.Yellow); AddField(GetType(), FieldTypes.FILL_COLOR, Color.Yellow);
} }
/// <summary> /// <summary>
@ -68,7 +68,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing.Filters
} }
using (var fastBitmap = FastBitmapFactory.CreateCloneOf(applyBitmap, area: applyRect)) using (var fastBitmap = FastBitmapFactory.CreateCloneOf(applyBitmap, area: applyRect))
{ {
var highlightColor = GetFieldValueAsColor(FieldType.FILL_COLOR); var highlightColor = GetFieldValueAsColor(FieldTypes.FILL_COLOR);
Parallel.For(fastBitmap.Top, fastBitmap.Bottom, y => Parallel.For(fastBitmap.Top, fastBitmap.Bottom, y =>
{ {
unsafe unsafe

View file

@ -40,7 +40,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing.Filters
{ {
public MagnifierFilter(DrawableContainer parent) : base(parent) public MagnifierFilter(DrawableContainer parent) : base(parent)
{ {
AddField(GetType(), FieldType.MAGNIFICATION_FACTOR, 2); AddField(GetType(), FieldTypes.MAGNIFICATION_FACTOR, 2);
} }
public override void Apply(Graphics graphics, Bitmap applyBitmap, NativeRect rect, RenderMode renderMode) public override void Apply(Graphics graphics, Bitmap applyBitmap, NativeRect rect, RenderMode renderMode)
@ -52,7 +52,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing.Filters
// nothing to do // nothing to do
return; return;
} }
var magnificationFactor = GetFieldValueAsInt(FieldType.MAGNIFICATION_FACTOR); var magnificationFactor = GetFieldValueAsInt(FieldTypes.MAGNIFICATION_FACTOR);
var state = graphics.Save(); var state = graphics.Save();
if (Invert) if (Invert)
{ {

View file

@ -45,12 +45,12 @@ namespace Greenshot.Addon.LegacyEditor.Drawing.Filters
{ {
public PixelizationFilter(DrawableContainer parent) : base(parent) public PixelizationFilter(DrawableContainer parent) : base(parent)
{ {
AddField(GetType(), FieldType.PIXEL_SIZE, 5); AddField(GetType(), FieldTypes.PIXEL_SIZE, 5);
} }
public override void Apply(Graphics graphics, Bitmap applyBitmap, NativeRect rect, RenderMode renderMode) public override void Apply(Graphics graphics, Bitmap applyBitmap, NativeRect rect, RenderMode renderMode)
{ {
var pixelSize = GetFieldValueAsInt(FieldType.PIXEL_SIZE); var pixelSize = GetFieldValueAsInt(FieldTypes.PIXEL_SIZE);
BitmapHelper.CreateIntersectRectangle(applyBitmap.Size, rect, Invert); BitmapHelper.CreateIntersectRectangle(applyBitmap.Size, rect, Invert);
if (pixelSize <= 1 || rect.Width == 0 || rect.Height == 0) if (pixelSize <= 1 || rect.Width == 0 || rect.Height == 0)
{ {

View file

@ -58,8 +58,8 @@ namespace Greenshot.Addon.LegacyEditor.Drawing {
} }
protected override void InitializeFields() { protected override void InitializeFields() {
AddField(GetType(), FieldType.LINE_THICKNESS, 3); AddField(GetType(), FieldTypes.LINE_THICKNESS, 3);
AddField(GetType(), FieldType.LINE_COLOR, Color.Red); AddField(GetType(), FieldTypes.LINE_COLOR, Color.Red);
} }
public override void Transform(Matrix matrix) public override void Transform(Matrix matrix)
@ -183,8 +183,8 @@ namespace Greenshot.Addon.LegacyEditor.Drawing {
graphics.CompositingQuality = CompositingQuality.HighQuality; graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
int lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS); int lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS);
Color lineColor = GetFieldValueAsColor(FieldType.LINE_COLOR); Color lineColor = GetFieldValueAsColor(FieldTypes.LINE_COLOR);
using (var pen = new Pen(lineColor)) { using (var pen = new Pen(lineColor)) {
pen.Width = lineThickness; pen.Width = lineThickness;
if (!(pen.Width > 0)) if (!(pen.Width > 0))
@ -238,7 +238,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing {
public override NativeRect DrawingBounds { public override NativeRect DrawingBounds {
get { get {
if (!myBounds.IsEmpty) { if (!myBounds.IsEmpty) {
int lineThickness = Math.Max(10, GetFieldValueAsInt(FieldType.LINE_THICKNESS)); int lineThickness = Math.Max(10, GetFieldValueAsInt(FieldTypes.LINE_THICKNESS));
int safetymargin = 10; int safetymargin = 10;
return new NativeRect(myBounds.Left + Left - (safetymargin+lineThickness), myBounds.Top + Top - (safetymargin+lineThickness), myBounds.Width + 2*(lineThickness+safetymargin), myBounds.Height + 2*(lineThickness+safetymargin)); return new NativeRect(myBounds.Left + Left - (safetymargin+lineThickness), myBounds.Top + Top - (safetymargin+lineThickness), myBounds.Width + 2*(lineThickness+safetymargin), myBounds.Height + 2*(lineThickness+safetymargin));
} }
@ -274,7 +274,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing {
public override bool ClickableAt(int x, int y) { public override bool ClickableAt(int x, int y) {
bool returnValue = base.ClickableAt(x, y); bool returnValue = base.ClickableAt(x, y);
if (returnValue) { if (returnValue) {
int lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS); int lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS);
using (var pen = new Pen(Color.White)) { using (var pen = new Pen(Color.White)) {
pen.Width = lineThickness + 10; pen.Width = lineThickness + 10;
lock (_freehandPathLock) lock (_freehandPathLock)

View file

@ -50,7 +50,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
protected override void InitializeFields() protected override void InitializeFields()
{ {
base.InitializeFields(); base.InitializeFields();
AddField(GetType(), FieldType.PREPARED_FILTER_HIGHLIGHT, PreparedFilter.TEXT_HIGHTLIGHT); AddField(GetType(), FieldTypes.PREPARED_FILTER_HIGHLIGHT, PreparedFilter.TEXT_HIGHTLIGHT);
} }
protected override void OnDeserialized(StreamingContext context) protected override void OnDeserialized(StreamingContext context)
@ -70,7 +70,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
{ {
return; return;
} }
if (Equals(e.Field.FieldType, FieldType.PREPARED_FILTER_HIGHLIGHT)) if (Equals(e.Field.FieldType, FieldTypes.PREPARED_FILTER_HIGHLIGHT))
{ {
ConfigurePreparedFilters(); ConfigurePreparedFilters();
} }
@ -78,7 +78,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
private void ConfigurePreparedFilters() private void ConfigurePreparedFilters()
{ {
var preset = (PreparedFilter) GetFieldValue(FieldType.PREPARED_FILTER_HIGHLIGHT); var preset = (PreparedFilter) GetFieldValue(FieldTypes.PREPARED_FILTER_HIGHLIGHT);
while (Filters.Count > 0) while (Filters.Count > 0)
{ {
Remove(Filters[0]); Remove(Filters[0]);

View file

@ -51,9 +51,9 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
protected override void InitializeFields() protected override void InitializeFields()
{ {
AddField(GetType(), FieldType.LINE_THICKNESS, 2); AddField(GetType(), FieldTypes.LINE_THICKNESS, 2);
AddField(GetType(), FieldType.LINE_COLOR, Color.Red); AddField(GetType(), FieldTypes.LINE_COLOR, Color.Red);
AddField(GetType(), FieldType.SHADOW, true); AddField(GetType(), FieldTypes.SHADOW, true);
} }
protected override void OnDeserialized(StreamingContext context) protected override void OnDeserialized(StreamingContext context)
@ -74,9 +74,9 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
graphics.CompositingQuality = CompositingQuality.HighQuality; graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.PixelOffsetMode = PixelOffsetMode.None; graphics.PixelOffsetMode = PixelOffsetMode.None;
var lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS); var lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS);
var lineColor = GetFieldValueAsColor(FieldType.LINE_COLOR); var lineColor = GetFieldValueAsColor(FieldTypes.LINE_COLOR);
var shadow = GetFieldValueAsBool(FieldType.SHADOW); var shadow = GetFieldValueAsBool(FieldTypes.SHADOW);
if (lineThickness > 0) if (lineThickness > 0)
{ {
@ -112,7 +112,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
public override bool ClickableAt(int x, int y) public override bool ClickableAt(int x, int y)
{ {
var lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS) + 5; var lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS) + 5;
if (lineThickness > 0) if (lineThickness > 0)
{ {
using (var pen = new Pen(Color.White)) using (var pen = new Pen(Color.White))

View file

@ -47,7 +47,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
protected override void InitializeFields() protected override void InitializeFields()
{ {
base.InitializeFields(); base.InitializeFields();
AddField(GetType(), FieldType.PREPARED_FILTER_OBFUSCATE, PreparedFilter.PIXELIZE); AddField(GetType(), FieldTypes.PREPARED_FILTER_OBFUSCATE, PreparedFilter.PIXELIZE);
} }
protected override void OnDeserialized(StreamingContext context) protected override void OnDeserialized(StreamingContext context)
@ -66,7 +66,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
{ {
if (sender.Equals(this)) if (sender.Equals(this))
{ {
if (Equals(e.Field.FieldType, FieldType.PREPARED_FILTER_OBFUSCATE)) if (Equals(e.Field.FieldType, FieldTypes.PREPARED_FILTER_OBFUSCATE))
{ {
ConfigurePreparedFilters(); ConfigurePreparedFilters();
} }
@ -75,7 +75,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
private void ConfigurePreparedFilters() private void ConfigurePreparedFilters()
{ {
var preset = (PreparedFilter) GetFieldValue(FieldType.PREPARED_FILTER_OBFUSCATE); var preset = (PreparedFilter) GetFieldValue(FieldTypes.PREPARED_FILTER_OBFUSCATE);
while (Filters.Count > 0) while (Filters.Count > 0)
{ {
Remove(Filters[0]); Remove(Filters[0]);

View file

@ -55,17 +55,17 @@ namespace Greenshot.Addon.LegacyEditor.Drawing {
} }
protected override void InitializeFields() { protected override void InitializeFields() {
AddField(GetType(), FieldType.LINE_THICKNESS, 2); AddField(GetType(), FieldTypes.LINE_THICKNESS, 2);
AddField(GetType(), FieldType.LINE_COLOR, Color.Red); AddField(GetType(), FieldTypes.LINE_COLOR, Color.Red);
AddField(GetType(), FieldType.FILL_COLOR, Color.Transparent); AddField(GetType(), FieldTypes.FILL_COLOR, Color.Transparent);
AddField(GetType(), FieldType.SHADOW, true); AddField(GetType(), FieldTypes.SHADOW, true);
} }
public override void Draw(Graphics graphics, RenderMode rm) { public override void Draw(Graphics graphics, RenderMode rm) {
int lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS); int lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS);
Color lineColor = GetFieldValueAsColor(FieldType.LINE_COLOR, Color.Red); Color lineColor = GetFieldValueAsColor(FieldTypes.LINE_COLOR, Color.Red);
Color fillColor = GetFieldValueAsColor(FieldType.FILL_COLOR, Color.Transparent); Color fillColor = GetFieldValueAsColor(FieldTypes.FILL_COLOR, Color.Transparent);
bool shadow = GetFieldValueAsBool(FieldType.SHADOW); bool shadow = GetFieldValueAsBool(FieldTypes.SHADOW);
var rect = new NativeRect(Left, Top, Width, Height).Normalize(); var rect = new NativeRect(Left, Top, Width, Height).Normalize();
DrawRectangle(rect, graphics, rm, lineThickness, lineColor, fillColor, shadow); DrawRectangle(rect, graphics, rm, lineThickness, lineColor, fillColor, shadow);
@ -126,8 +126,8 @@ namespace Greenshot.Addon.LegacyEditor.Drawing {
} }
public override bool ClickableAt(int x, int y) { public override bool ClickableAt(int x, int y) {
var rect = new NativeRect(Left, Top, Width, Height).Normalize(); var rect = new NativeRect(Left, Top, Width, Height).Normalize();
int lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS) + 10; int lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS) + 10;
Color fillColor = GetFieldValueAsColor(FieldType.FILL_COLOR); Color fillColor = GetFieldValueAsColor(FieldTypes.FILL_COLOR);
return RectangleClickableAt(rect, lineThickness, fillColor, x, y); return RectangleClickableAt(rect, lineThickness, fillColor, x, y);
} }

View file

@ -60,9 +60,9 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
{ {
if (Status != EditStatus.UNDRAWN) if (Status != EditStatus.UNDRAWN)
{ {
var lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS); var lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS);
var lineColor = GetFieldValueAsColor(FieldType.LINE_COLOR); var lineColor = GetFieldValueAsColor(FieldTypes.LINE_COLOR);
var shadow = GetFieldValueAsBool(FieldType.SHADOW); var shadow = GetFieldValueAsBool(FieldTypes.SHADOW);
using (var pen = new Pen(lineColor, lineThickness)) using (var pen = new Pen(lineColor, lineThickness))
{ {
var inflateValue = lineThickness + 2 + (shadow ? 6 : 0); var inflateValue = lineThickness + 2 + (shadow ? 6 : 0);
@ -84,16 +84,16 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
/// </summary> /// </summary>
protected override void InitializeFields() protected override void InitializeFields()
{ {
AddField(GetType(), FieldType.LINE_THICKNESS, 2); AddField(GetType(), FieldTypes.LINE_THICKNESS, 2);
AddField(GetType(), FieldType.LINE_COLOR, Color.Blue); AddField(GetType(), FieldTypes.LINE_COLOR, Color.Blue);
AddField(GetType(), FieldType.SHADOW, false); AddField(GetType(), FieldTypes.SHADOW, false);
AddField(GetType(), FieldType.FONT_ITALIC, false); AddField(GetType(), FieldTypes.FONT_ITALIC, false);
AddField(GetType(), FieldType.FONT_BOLD, true); AddField(GetType(), FieldTypes.FONT_BOLD, true);
AddField(GetType(), FieldType.FILL_COLOR, Color.White); AddField(GetType(), FieldTypes.FILL_COLOR, Color.White);
AddField(GetType(), FieldType.FONT_FAMILY, FontFamily.GenericSansSerif.Name); AddField(GetType(), FieldTypes.FONT_FAMILY, FontFamily.GenericSansSerif.Name);
AddField(GetType(), FieldType.FONT_SIZE, 20f); AddField(GetType(), FieldTypes.FONT_SIZE, 20f);
AddField(GetType(), FieldType.TEXT_HORIZONTAL_ALIGNMENT, StringAlignment.Center); AddField(GetType(), FieldTypes.TEXT_HORIZONTAL_ALIGNMENT, StringAlignment.Center);
AddField(GetType(), FieldType.TEXT_VERTICAL_ALIGNMENT, StringAlignment.Center); AddField(GetType(), FieldTypes.TEXT_VERTICAL_ALIGNMENT, StringAlignment.Center);
} }
/// <summary> /// <summary>
@ -221,10 +221,10 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
graphics.PixelOffsetMode = PixelOffsetMode.None; graphics.PixelOffsetMode = PixelOffsetMode.None;
graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit; graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
var lineColor = GetFieldValueAsColor(FieldType.LINE_COLOR); var lineColor = GetFieldValueAsColor(FieldTypes.LINE_COLOR);
var fillColor = GetFieldValueAsColor(FieldType.FILL_COLOR); var fillColor = GetFieldValueAsColor(FieldTypes.FILL_COLOR);
var shadow = GetFieldValueAsBool(FieldType.SHADOW); var shadow = GetFieldValueAsBool(FieldTypes.SHADOW);
var lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS); var lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS);
var lineVisible = lineThickness > 0 && Colors.IsVisible(lineColor); var lineVisible = lineThickness > 0 && Colors.IsVisible(lineColor);
var rect = new NativeRect(Left, Top, Width, Height).Normalize(); var rect = new NativeRect(Left, Top, Width, Height).Normalize();
@ -334,8 +334,8 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
var clickedPoint = new NativePoint(x, y); var clickedPoint = new NativePoint(x, y);
if (Status != EditStatus.UNDRAWN) if (Status != EditStatus.UNDRAWN)
{ {
var lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS); var lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS);
var lineColor = GetFieldValueAsColor(FieldType.LINE_COLOR); var lineColor = GetFieldValueAsColor(FieldTypes.LINE_COLOR);
using (var pen = new Pen(lineColor, lineThickness)) using (var pen = new Pen(lineColor, lineThickness))
{ {
using (var bubblePath = CreateBubble(lineThickness)) using (var bubblePath = CreateBubble(lineThickness))

View file

@ -125,9 +125,9 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
/// </summary> /// </summary>
protected override void InitializeFields() protected override void InitializeFields()
{ {
AddField(GetType(), FieldType.FILL_COLOR, Color.DarkRed); AddField(GetType(), FieldTypes.FILL_COLOR, Color.DarkRed);
AddField(GetType(), FieldType.LINE_COLOR, Color.White); AddField(GetType(), FieldTypes.LINE_COLOR, Color.White);
AddField(GetType(), FieldType.FLAGS, FieldFlag.COUNTER); AddField(GetType(), FieldTypes.FLAGS, FieldFlag.COUNTER);
} }
/// <summary> /// <summary>
@ -193,8 +193,8 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit; graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
var text = ((Surface) Parent).CountStepLabels(this).ToString(); var text = ((Surface) Parent).CountStepLabels(this).ToString();
var rect = new NativeRect(Left, Top, Width, Height).Normalize(); var rect = new NativeRect(Left, Top, Width, Height).Normalize();
var fillColor = GetFieldValueAsColor(FieldType.FILL_COLOR); var fillColor = GetFieldValueAsColor(FieldTypes.FILL_COLOR);
var lineColor = GetFieldValueAsColor(FieldType.LINE_COLOR); var lineColor = GetFieldValueAsColor(FieldTypes.LINE_COLOR);
if (_drawAsRectangle) if (_drawAsRectangle)
{ {
RectangleContainer.DrawRectangle(rect, graphics, rm, 0, Color.Transparent, fillColor, false); RectangleContainer.DrawRectangle(rect, graphics, rm, 0, Color.Transparent, fillColor, false);
@ -215,7 +215,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
public override bool ClickableAt(int x, int y) public override bool ClickableAt(int x, int y)
{ {
var rect = new NativeRect(Left, Top, Width, Height).Normalize(); var rect = new NativeRect(Left, Top, Width, Height).Normalize();
var fillColor = GetFieldValueAsColor(FieldType.FILL_COLOR); var fillColor = GetFieldValueAsColor(FieldTypes.FILL_COLOR);
if (_drawAsRectangle) if (_drawAsRectangle)
{ {
return RectangleContainer.RectangleClickableAt(rect, 0, fillColor, x, y); return RectangleContainer.RectangleClickableAt(rect, 0, fillColor, x, y);

View file

@ -1941,14 +1941,14 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
bool italic, bool bold, bool shadow, int borderSize, Color color, Color fillColor) bool italic, bool bold, bool shadow, int borderSize, Color color, Color fillColor)
{ {
var textContainer = new TextContainer(this) {Text = text}; var textContainer = new TextContainer(this) {Text = text};
textContainer.SetFieldValue(FieldType.FONT_FAMILY, family.Name); textContainer.SetFieldValue(FieldTypes.FONT_FAMILY, family.Name);
textContainer.SetFieldValue(FieldType.FONT_BOLD, bold); textContainer.SetFieldValue(FieldTypes.FONT_BOLD, bold);
textContainer.SetFieldValue(FieldType.FONT_ITALIC, italic); textContainer.SetFieldValue(FieldTypes.FONT_ITALIC, italic);
textContainer.SetFieldValue(FieldType.FONT_SIZE, size); textContainer.SetFieldValue(FieldTypes.FONT_SIZE, size);
textContainer.SetFieldValue(FieldType.FILL_COLOR, fillColor); textContainer.SetFieldValue(FieldTypes.FILL_COLOR, fillColor);
textContainer.SetFieldValue(FieldType.LINE_COLOR, color); textContainer.SetFieldValue(FieldTypes.LINE_COLOR, color);
textContainer.SetFieldValue(FieldType.LINE_THICKNESS, borderSize); textContainer.SetFieldValue(FieldTypes.LINE_THICKNESS, borderSize);
textContainer.SetFieldValue(FieldType.SHADOW, shadow); textContainer.SetFieldValue(FieldTypes.SHADOW, shadow);
// Make sure the Text fits // Make sure the Text fits
textContainer.FitToText(); textContainer.FitToText();
// Align to Surface // Align to Surface

View file

@ -95,16 +95,16 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
protected override void InitializeFields() protected override void InitializeFields()
{ {
AddField(GetType(), FieldType.LINE_THICKNESS, 2); AddField(GetType(), FieldTypes.LINE_THICKNESS, 2);
AddField(GetType(), FieldType.LINE_COLOR, Color.Red); AddField(GetType(), FieldTypes.LINE_COLOR, Color.Red);
AddField(GetType(), FieldType.SHADOW, true); AddField(GetType(), FieldTypes.SHADOW, true);
AddField(GetType(), FieldType.FONT_ITALIC, false); AddField(GetType(), FieldTypes.FONT_ITALIC, false);
AddField(GetType(), FieldType.FONT_BOLD, false); AddField(GetType(), FieldTypes.FONT_BOLD, false);
AddField(GetType(), FieldType.FILL_COLOR, Color.Transparent); AddField(GetType(), FieldTypes.FILL_COLOR, Color.Transparent);
AddField(GetType(), FieldType.FONT_FAMILY, FontFamily.GenericSansSerif.Name); AddField(GetType(), FieldTypes.FONT_FAMILY, FontFamily.GenericSansSerif.Name);
AddField(GetType(), FieldType.FONT_SIZE, 11f); AddField(GetType(), FieldTypes.FONT_SIZE, 11f);
AddField(GetType(), FieldType.TEXT_HORIZONTAL_ALIGNMENT, StringAlignment.Center); AddField(GetType(), FieldTypes.TEXT_HORIZONTAL_ALIGNMENT, StringAlignment.Center);
AddField(GetType(), FieldType.TEXT_VERTICAL_ALIGNMENT, StringAlignment.Center); AddField(GetType(), FieldTypes.TEXT_VERTICAL_ALIGNMENT, StringAlignment.Center);
} }
/// <summary> /// <summary>
@ -169,7 +169,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
public void FitToText() public void FitToText()
{ {
Size textSize = TextRenderer.MeasureText(text, _font); Size textSize = TextRenderer.MeasureText(text, _font);
int lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS); int lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS);
Width = textSize.Width + lineThickness; Width = textSize.Width + lineThickness;
Height = textSize.Height + lineThickness; Height = textSize.Height + lineThickness;
} }
@ -288,7 +288,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
{ {
return; return;
} }
Color lc = GetFieldValueAsColor(FieldType.LINE_COLOR); Color lc = GetFieldValueAsColor(FieldTypes.LINE_COLOR);
if (lc.R > 203 && lc.G > 203 && lc.B > 203) if (lc.R > 203 && lc.G > 203 && lc.B > 203)
{ {
_textBox.BackColor = Color.FromArgb(51, 51, 51); _textBox.BackColor = Color.FromArgb(51, 51, 51);
@ -323,9 +323,9 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
int pixelsAfter = rect.Width * rect.Height; int pixelsAfter = rect.Width * rect.Height;
float factor = pixelsAfter / (float)pixelsBefore; float factor = pixelsAfter / (float)pixelsBefore;
float fontSize = GetFieldValueAsFloat(FieldType.FONT_SIZE); float fontSize = GetFieldValueAsFloat(FieldTypes.FONT_SIZE);
fontSize *= factor; fontSize *= factor;
SetFieldValue(FieldType.FONT_SIZE, fontSize); SetFieldValue(FieldTypes.FONT_SIZE, fontSize);
UpdateFormat(); UpdateFormat();
} }
@ -382,10 +382,10 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
{ {
return; return;
} }
string fontFamily = GetFieldValueAsString(FieldType.FONT_FAMILY); string fontFamily = GetFieldValueAsString(FieldTypes.FONT_FAMILY);
bool fontBold = GetFieldValueAsBool(FieldType.FONT_BOLD); bool fontBold = GetFieldValueAsBool(FieldTypes.FONT_BOLD);
bool fontItalic = GetFieldValueAsBool(FieldType.FONT_ITALIC); bool fontItalic = GetFieldValueAsBool(FieldTypes.FONT_ITALIC);
float fontSize = GetFieldValueAsFloat(FieldType.FONT_SIZE); float fontSize = GetFieldValueAsFloat(FieldTypes.FONT_SIZE);
try try
{ {
var newFont = CreateFont(fontFamily, fontBold, fontItalic, fontSize); var newFont = CreateFont(fontFamily, fontBold, fontItalic, fontSize);
@ -399,7 +399,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
try try
{ {
fontFamily = FontFamily.GenericSansSerif.Name; fontFamily = FontFamily.GenericSansSerif.Name;
SetFieldValue(FieldType.FONT_FAMILY, fontFamily); SetFieldValue(FieldTypes.FONT_FAMILY, fontFamily);
var newFont = CreateFont(fontFamily, fontBold, fontItalic, fontSize); var newFont = CreateFont(fontFamily, fontBold, fontItalic, fontSize);
_font?.Dispose(); _font?.Dispose();
_font = newFont; _font = newFont;
@ -421,8 +421,8 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
private void UpdateAlignment() private void UpdateAlignment()
{ {
_stringFormat.Alignment = (StringAlignment)GetFieldValue(FieldType.TEXT_HORIZONTAL_ALIGNMENT); _stringFormat.Alignment = (StringAlignment)GetFieldValue(FieldTypes.TEXT_HORIZONTAL_ALIGNMENT);
_stringFormat.LineAlignment = (StringAlignment)GetFieldValue(FieldType.TEXT_VERTICAL_ALIGNMENT); _stringFormat.LineAlignment = (StringAlignment)GetFieldValue(FieldTypes.TEXT_VERTICAL_ALIGNMENT);
} }
/// <summary> /// <summary>
@ -435,7 +435,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
{ {
return; return;
} }
int lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS); int lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS);
int lineWidth = (int)Math.Floor(lineThickness / 2d); int lineWidth = (int)Math.Floor(lineThickness / 2d);
int correction = (lineThickness + 1) % 2; int correction = (lineThickness + 1) % 2;
@ -467,7 +467,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
{ {
return; return;
} }
var alignment = (StringAlignment)GetFieldValue(FieldType.TEXT_HORIZONTAL_ALIGNMENT); var alignment = (StringAlignment)GetFieldValue(FieldTypes.TEXT_HORIZONTAL_ALIGNMENT);
switch (alignment) switch (alignment)
{ {
case StringAlignment.Near: case StringAlignment.Near:
@ -481,7 +481,7 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
break; break;
} }
var lineColor = GetFieldValueAsColor(FieldType.LINE_COLOR); var lineColor = GetFieldValueAsColor(FieldTypes.LINE_COLOR);
_textBox.ForeColor = lineColor; _textBox.ForeColor = lineColor;
} }
@ -546,10 +546,10 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
} }
// we only draw the shadow if there is no background // we only draw the shadow if there is no background
bool shadow = GetFieldValueAsBool(FieldType.SHADOW); bool shadow = GetFieldValueAsBool(FieldTypes.SHADOW);
Color fillColor = GetFieldValueAsColor(FieldType.FILL_COLOR); Color fillColor = GetFieldValueAsColor(FieldTypes.FILL_COLOR);
int lineThickness = GetFieldValueAsInt(FieldType.LINE_THICKNESS); int lineThickness = GetFieldValueAsInt(FieldTypes.LINE_THICKNESS);
Color lineColor = GetFieldValueAsColor(FieldType.LINE_COLOR); Color lineColor = GetFieldValueAsColor(FieldTypes.LINE_COLOR);
bool drawShadow = shadow && (fillColor == Color.Transparent || fillColor == Color.Empty); bool drawShadow = shadow && (fillColor == Color.Transparent || fillColor == Color.Empty);
DrawText(graphics, rect, lineThickness, lineColor, drawShadow, _stringFormat, text, _font); DrawText(graphics, rect, lineThickness, lineColor, drawShadow, _stringFormat, text, _font);

View file

@ -23,50 +23,97 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing;
using Dapplo.Windows.Common.Structs; using Dapplo.Windows.Common.Structs;
using Dapplo.Windows.User32.Enums; using Dapplo.Windows.User32.Enums;
using Dapplo.Windows.User32.Structs; using Dapplo.Windows.User32.Structs;
using Greenshot.Addon.LegacyEditor.Drawing;
using Greenshot.Addon.LegacyEditor.Drawing.Fields; using Greenshot.Addon.LegacyEditor.Drawing.Fields;
using Greenshot.Addons.Interfaces.Drawing; using Greenshot.Addons.Interfaces.Drawing;
namespace Greenshot.Addon.LegacyEditor namespace Greenshot.Addon.LegacyEditor
{ {
/// <summary>
/// Extension methods for the IEditorConfiguration
/// </summary>
public static class EditorConfigurationExtensions public static class EditorConfigurationExtensions
{ {
/// <param name="configuration"></param> /// <summary>
/// This is a factory method for IField which considers the defaults from the configuration
/// </summary>
/// <param name="editorConfiguration"></param>
/// <param name="requestingType">Type of the class for which to create the field</param> /// <param name="requestingType">Type of the class for which to create the field</param>
/// <param name="fieldType">FieldType of the field to construct</param> /// <param name="fieldType">FieldType of the field to construct</param>
/// <param name="preferredDefaultValue"></param> /// <param name="preferredDefaultValue"></param>
/// <returns>a new Field of the given fieldType, with the scope of it's value being restricted to the Type scope</returns> /// <returns>a new Field of the given fieldType, with the scope of it's value being restricted to the Type scope</returns>
public static IField CreateField(this IEditorConfiguration configuration, Type requestingType, IFieldType fieldType, object preferredDefaultValue) public static IField CreateField(this IEditorConfiguration editorConfiguration, Type requestingType, IFieldType fieldType, object preferredDefaultValue)
{ {
var requestingTypeName = requestingType.Name; var requestingTypeName = requestingType.Name;
var requestedField = requestingTypeName + "." + fieldType.Name; var requestedField = requestingTypeName + "." + fieldType.Name;
var fieldValue = preferredDefaultValue; var fieldValue = preferredDefaultValue;
// Check if the configuration exists // Check if the configuration exists
if (configuration.LastUsedFieldValues == null) if (editorConfiguration.LastUsedFieldValues == null)
{ {
configuration.LastUsedFieldValues = new Dictionary<string, object>(); editorConfiguration.LastUsedFieldValues = new Dictionary<string, object>();
} }
// Check if settings for the requesting type exist, if not create! // Check if settings for the requesting type exist, if not create!
if (configuration.LastUsedFieldValues.ContainsKey(requestedField)) if (editorConfiguration.LastUsedFieldValues.ContainsKey(requestedField))
{ {
// Check if a value is set (not null)! // Check if a value is set (not null)!
if (configuration.LastUsedFieldValues[requestedField] != null) if (editorConfiguration.LastUsedFieldValues[requestedField] != null)
{ {
fieldValue = configuration.LastUsedFieldValues[requestedField]; var preferredValue = editorConfiguration.LastUsedFieldValues[requestedField];
if (preferredValue is string preferredStringValue)
{
switch (fieldType.ValueType)
{
case var intType when fieldType.ValueType == typeof(int):
fieldValue = Convert.ToInt32(preferredValue);
break;
case var boolType when fieldType.ValueType == typeof(bool):
fieldValue = Convert.ToBoolean(preferredValue);
break;
case var colorType when fieldType.ValueType == typeof(Color):
var color = Color.FromName(preferredStringValue);
fieldValue = color;
if (Color.Empty == color)
{
fieldValue = Color.FromArgb(Convert.ToInt32(preferredValue));
}
break;
case var allignType when fieldType.ValueType == typeof(StringAlignment):
fieldValue = Enum.Parse(typeof(StringAlignment), preferredStringValue, true);
break;
case var fieldFlagType when fieldType.ValueType == typeof(FieldFlag):
fieldValue = Enum.Parse(typeof(FieldFlag), preferredStringValue, true);
break;
case var preparedFilterType when fieldType.ValueType == typeof(FilterContainer.PreparedFilter):
fieldValue = Enum.Parse(typeof(FilterContainer.PreparedFilter), preferredStringValue, true);
break;
case var arrowHeadCombinationType when fieldType.ValueType == typeof(ArrowContainer.ArrowHeadCombination):
fieldValue = Enum.Parse(typeof(ArrowContainer.ArrowHeadCombination), preferredStringValue, true);
break;
default:
fieldValue = preferredStringValue;
break;
}
}
else
{
fieldValue = preferredValue;
}
} }
else else
{ {
// Overwrite null value // Overwrite null value
configuration.LastUsedFieldValues[requestedField] = fieldValue; editorConfiguration.LastUsedFieldValues[requestedField] = fieldValue;
} }
} }
else else
{ {
configuration.LastUsedFieldValues.Add(requestedField, fieldValue); editorConfiguration.LastUsedFieldValues.Add(requestedField, fieldValue);
} }
return new Field(fieldType, requestingType) return new Field(fieldType, requestingType)
{ {
@ -74,53 +121,71 @@ namespace Greenshot.Addon.LegacyEditor
}; };
} }
/// <summary>
public static void UpdateLastFieldValue(this IEditorConfiguration configuration, IField field) /// Update the last field value in the configuration
/// </summary>
/// <param name="editorConfiguration">IEditorConfiguration</param>
/// <param name="field">IField</param>
public static void UpdateLastFieldValue(this IEditorConfiguration editorConfiguration, IField field)
{ {
var requestedField = field.Scope + "." + field.FieldType.Name; var requestedField = field.Scope + "." + field.FieldType.Name;
// Check if the configuration exists // Check if the configuration exists
if (configuration.LastUsedFieldValues == null) if (editorConfiguration.LastUsedFieldValues == null)
{ {
configuration.LastUsedFieldValues = new Dictionary<string, object>(); editorConfiguration.LastUsedFieldValues = new Dictionary<string, object>();
} }
// check if settings for the requesting type exist, if not create! // check if settings for the requesting type exist, if not create!
if (configuration.LastUsedFieldValues.ContainsKey(requestedField)) if (field.Value is Color color)
{ {
configuration.LastUsedFieldValues[requestedField] = field.Value; editorConfiguration.LastUsedFieldValues[requestedField] = color.ToArgb().ToString();
} }
else else
{ {
configuration.LastUsedFieldValues.Add(requestedField, field.Value); editorConfiguration.LastUsedFieldValues[requestedField] = field.Value.ToString();
} }
} }
public static void ResetEditorPlacement(this IEditorConfiguration configuration) /// <summary>
/// Reset the WindowPlacement for the editor
/// </summary>
/// <param name="editorConfiguration">IEditorConfiguration</param>
public static void ResetEditorPlacement(this IEditorConfiguration editorConfiguration)
{ {
configuration.WindowNormalPosition = new NativeRect(100, 100, 400, 400); editorConfiguration.WindowNormalPosition = new NativeRect(100, 100, 400, 400);
configuration.WindowMaxPosition = new NativePoint(-1, -1); editorConfiguration.WindowMaxPosition = new NativePoint(-1, -1);
configuration.WindowMinPosition = new NativePoint(-1, -1); editorConfiguration.WindowMinPosition = new NativePoint(-1, -1);
configuration.WindowPlacementFlags = 0; editorConfiguration.WindowPlacementFlags = 0;
configuration.ShowWindowCommand = ShowWindowCommands.Normal; editorConfiguration.ShowWindowCommand = ShowWindowCommands.Normal;
} }
public static WindowPlacement GetEditorPlacement(this IEditorConfiguration configuration) /// <summary>
/// Retrieve the WindowPlacement from the configuration
/// </summary>
/// <param name="editorConfiguration">IEditorConfiguration</param>
/// <returns>WindowPlacement</returns>
public static WindowPlacement GetEditorPlacement(this IEditorConfiguration editorConfiguration)
{ {
var placement = WindowPlacement.Create(); var placement = WindowPlacement.Create();
placement.NormalPosition = configuration.WindowNormalPosition; placement.NormalPosition = editorConfiguration.WindowNormalPosition;
placement.MaxPosition = configuration.WindowMaxPosition; placement.MaxPosition = editorConfiguration.WindowMaxPosition;
placement.MinPosition = configuration.WindowMinPosition; placement.MinPosition = editorConfiguration.WindowMinPosition;
placement.ShowCmd = configuration.ShowWindowCommand; placement.ShowCmd = editorConfiguration.ShowWindowCommand;
placement.Flags = configuration.WindowPlacementFlags; placement.Flags = editorConfiguration.WindowPlacementFlags;
return placement; return placement;
} }
public static void SetEditorPlacement(this IEditorConfiguration configuration, WindowPlacement placement) /// <summary>
/// Store the WindowPlacement for the editor
/// </summary>
/// <param name="editorConfiguration">IEditorConfiguration</param>
/// <param name="placement">WindowPlacement</param>
public static void SetEditorPlacement(this IEditorConfiguration editorConfiguration, WindowPlacement placement)
{ {
configuration.WindowNormalPosition = placement.NormalPosition; editorConfiguration.WindowNormalPosition = placement.NormalPosition;
configuration.WindowMaxPosition = placement.MaxPosition; editorConfiguration.WindowMaxPosition = placement.MaxPosition;
configuration.WindowMinPosition = placement.MinPosition; editorConfiguration.WindowMinPosition = placement.MinPosition;
configuration.ShowWindowCommand = placement.ShowCmd; editorConfiguration.ShowWindowCommand = placement.ShowCmd;
configuration.WindowPlacementFlags = placement.Flags; editorConfiguration.WindowPlacementFlags = placement.Flags;
} }
} }
} }

View file

@ -677,23 +677,23 @@ namespace Greenshot.Addon.LegacyEditor.Forms
{ {
_disposables = new CompositeDisposable _disposables = new CompositeDisposable
{ {
new BidirectionalBinding(btnFillColor, "SelectedColor", _surface.FieldAggregator.GetField(FieldType.FILL_COLOR), "Value", NotNullValidator.GetInstance()), new BidirectionalBinding(btnFillColor, "SelectedColor", _surface.FieldAggregator.GetField(FieldTypes.FILL_COLOR), "Value", NotNullValidator.GetInstance()),
new BidirectionalBinding(btnLineColor, "SelectedColor", _surface.FieldAggregator.GetField(FieldType.LINE_COLOR), "Value", NotNullValidator.GetInstance()), new BidirectionalBinding(btnLineColor, "SelectedColor", _surface.FieldAggregator.GetField(FieldTypes.LINE_COLOR), "Value", NotNullValidator.GetInstance()),
new BidirectionalBinding(lineThicknessUpDown, "Value", _surface.FieldAggregator.GetField(FieldType.LINE_THICKNESS), "Value", DecimalIntConverter.GetInstance(),NotNullValidator.GetInstance()), new BidirectionalBinding(lineThicknessUpDown, "Value", _surface.FieldAggregator.GetField(FieldTypes.LINE_THICKNESS), "Value", DecimalIntConverter.GetInstance(),NotNullValidator.GetInstance()),
new BidirectionalBinding(blurRadiusUpDown, "Value", _surface.FieldAggregator.GetField(FieldType.BLUR_RADIUS), "Value", DecimalIntConverter.GetInstance(),NotNullValidator.GetInstance()), new BidirectionalBinding(blurRadiusUpDown, "Value", _surface.FieldAggregator.GetField(FieldTypes.BLUR_RADIUS), "Value", DecimalIntConverter.GetInstance(),NotNullValidator.GetInstance()),
new BidirectionalBinding(magnificationFactorUpDown, "Value", _surface.FieldAggregator.GetField(FieldType.MAGNIFICATION_FACTOR), "Value",DecimalIntConverter.GetInstance(), NotNullValidator.GetInstance()), new BidirectionalBinding(magnificationFactorUpDown, "Value", _surface.FieldAggregator.GetField(FieldTypes.MAGNIFICATION_FACTOR), "Value",DecimalIntConverter.GetInstance(), NotNullValidator.GetInstance()),
new BidirectionalBinding(pixelSizeUpDown, "Value", _surface.FieldAggregator.GetField(FieldType.PIXEL_SIZE), "Value", DecimalIntConverter.GetInstance(),NotNullValidator.GetInstance()), new BidirectionalBinding(pixelSizeUpDown, "Value", _surface.FieldAggregator.GetField(FieldTypes.PIXEL_SIZE), "Value", DecimalIntConverter.GetInstance(),NotNullValidator.GetInstance()),
new BidirectionalBinding(brightnessUpDown, "Value", _surface.FieldAggregator.GetField(FieldType.BRIGHTNESS), "Value", DecimalDoublePercentageConverter.GetInstance(), NotNullValidator.GetInstance()), new BidirectionalBinding(brightnessUpDown, "Value", _surface.FieldAggregator.GetField(FieldTypes.BRIGHTNESS), "Value", DecimalDoublePercentageConverter.GetInstance(), NotNullValidator.GetInstance()),
new BidirectionalBinding(fontFamilyComboBox, "Text", _surface.FieldAggregator.GetField(FieldType.FONT_FAMILY), "Value", NotNullValidator.GetInstance()), new BidirectionalBinding(fontFamilyComboBox, "Text", _surface.FieldAggregator.GetField(FieldTypes.FONT_FAMILY), "Value", NotNullValidator.GetInstance()),
new BidirectionalBinding(fontSizeUpDown, "Value", _surface.FieldAggregator.GetField(FieldType.FONT_SIZE), "Value", DecimalFloatConverter.GetInstance(),NotNullValidator.GetInstance()), new BidirectionalBinding(fontSizeUpDown, "Value", _surface.FieldAggregator.GetField(FieldTypes.FONT_SIZE), "Value", DecimalFloatConverter.GetInstance(),NotNullValidator.GetInstance()),
new BidirectionalBinding(fontBoldButton, "Checked", _surface.FieldAggregator.GetField(FieldType.FONT_BOLD), "Value", NotNullValidator.GetInstance()), new BidirectionalBinding(fontBoldButton, "Checked", _surface.FieldAggregator.GetField(FieldTypes.FONT_BOLD), "Value", NotNullValidator.GetInstance()),
new BidirectionalBinding(fontItalicButton, "Checked", _surface.FieldAggregator.GetField(FieldType.FONT_ITALIC), "Value", NotNullValidator.GetInstance()), new BidirectionalBinding(fontItalicButton, "Checked", _surface.FieldAggregator.GetField(FieldTypes.FONT_ITALIC), "Value", NotNullValidator.GetInstance()),
new BidirectionalBinding(textHorizontalAlignmentButton, "SelectedTag", _surface.FieldAggregator.GetField(FieldType.TEXT_HORIZONTAL_ALIGNMENT), "Value",NotNullValidator.GetInstance()), new BidirectionalBinding(textHorizontalAlignmentButton, "SelectedTag", _surface.FieldAggregator.GetField(FieldTypes.TEXT_HORIZONTAL_ALIGNMENT), "Value",NotNullValidator.GetInstance()),
new BidirectionalBinding(textVerticalAlignmentButton, "SelectedTag", _surface.FieldAggregator.GetField(FieldType.TEXT_VERTICAL_ALIGNMENT), "Value",NotNullValidator.GetInstance()), new BidirectionalBinding(textVerticalAlignmentButton, "SelectedTag", _surface.FieldAggregator.GetField(FieldTypes.TEXT_VERTICAL_ALIGNMENT), "Value",NotNullValidator.GetInstance()),
new BidirectionalBinding(shadowButton, "Checked", _surface.FieldAggregator.GetField(FieldType.SHADOW), "Value", NotNullValidator.GetInstance()), new BidirectionalBinding(shadowButton, "Checked", _surface.FieldAggregator.GetField(FieldTypes.SHADOW), "Value", NotNullValidator.GetInstance()),
new BidirectionalBinding(previewQualityUpDown, "Value", _surface.FieldAggregator.GetField(FieldType.PREVIEW_QUALITY), "Value",DecimalDoublePercentageConverter.GetInstance(), NotNullValidator.GetInstance()), new BidirectionalBinding(previewQualityUpDown, "Value", _surface.FieldAggregator.GetField(FieldTypes.PREVIEW_QUALITY), "Value",DecimalDoublePercentageConverter.GetInstance(), NotNullValidator.GetInstance()),
new BidirectionalBinding(obfuscateModeButton, "SelectedTag", _surface.FieldAggregator.GetField(FieldType.PREPARED_FILTER_OBFUSCATE), "Value"), new BidirectionalBinding(obfuscateModeButton, "SelectedTag", _surface.FieldAggregator.GetField(FieldTypes.PREPARED_FILTER_OBFUSCATE), "Value"),
new BidirectionalBinding(highlightModeButton, "SelectedTag", _surface.FieldAggregator.GetField(FieldType.PREPARED_FILTER_HIGHLIGHT), "Value"), new BidirectionalBinding(highlightModeButton, "SelectedTag", _surface.FieldAggregator.GetField(FieldTypes.PREPARED_FILTER_HIGHLIGHT), "Value"),
new BidirectionalBinding(counterUpDown, "Value", _surface, "CounterStart", DecimalIntConverter.GetInstance(), NotNullValidator.GetInstance()) new BidirectionalBinding(counterUpDown, "Value", _surface, "CounterStart", DecimalIntConverter.GetInstance(), NotNullValidator.GetInstance())
}; };
} }
@ -707,29 +707,29 @@ namespace Greenshot.Addon.LegacyEditor.Forms
if (_surface.HasSelectedElements || _surface.DrawingMode != DrawingModes.None) if (_surface.HasSelectedElements || _surface.DrawingMode != DrawingModes.None)
{ {
var props = _surface.FieldAggregator; var props = _surface.FieldAggregator;
btnFillColor.Visible = props.HasFieldValue(FieldType.FILL_COLOR); btnFillColor.Visible = props.HasFieldValue(FieldTypes.FILL_COLOR);
btnLineColor.Visible = props.HasFieldValue(FieldType.LINE_COLOR); btnLineColor.Visible = props.HasFieldValue(FieldTypes.LINE_COLOR);
lineThicknessLabel.Visible = lineThicknessUpDown.Visible = props.HasFieldValue(FieldType.LINE_THICKNESS); lineThicknessLabel.Visible = lineThicknessUpDown.Visible = props.HasFieldValue(FieldTypes.LINE_THICKNESS);
blurRadiusLabel.Visible = blurRadiusUpDown.Visible = props.HasFieldValue(FieldType.BLUR_RADIUS); blurRadiusLabel.Visible = blurRadiusUpDown.Visible = props.HasFieldValue(FieldTypes.BLUR_RADIUS);
previewQualityLabel.Visible = previewQualityUpDown.Visible = props.HasFieldValue(FieldType.PREVIEW_QUALITY); previewQualityLabel.Visible = previewQualityUpDown.Visible = props.HasFieldValue(FieldTypes.PREVIEW_QUALITY);
magnificationFactorLabel.Visible = magnificationFactorUpDown.Visible = props.HasFieldValue(FieldType.MAGNIFICATION_FACTOR); magnificationFactorLabel.Visible = magnificationFactorUpDown.Visible = props.HasFieldValue(FieldTypes.MAGNIFICATION_FACTOR);
pixelSizeLabel.Visible = pixelSizeUpDown.Visible = props.HasFieldValue(FieldType.PIXEL_SIZE); pixelSizeLabel.Visible = pixelSizeUpDown.Visible = props.HasFieldValue(FieldTypes.PIXEL_SIZE);
brightnessLabel.Visible = brightnessUpDown.Visible = props.HasFieldValue(FieldType.BRIGHTNESS); brightnessLabel.Visible = brightnessUpDown.Visible = props.HasFieldValue(FieldTypes.BRIGHTNESS);
arrowHeadsLabel.Visible = arrowHeadsDropDownButton.Visible = props.HasFieldValue(FieldType.ARROWHEADS); arrowHeadsLabel.Visible = arrowHeadsDropDownButton.Visible = props.HasFieldValue(FieldTypes.ARROWHEADS);
fontFamilyComboBox.Visible = props.HasFieldValue(FieldType.FONT_FAMILY); fontFamilyComboBox.Visible = props.HasFieldValue(FieldTypes.FONT_FAMILY);
fontSizeLabel.Visible = fontSizeUpDown.Visible = props.HasFieldValue(FieldType.FONT_SIZE); fontSizeLabel.Visible = fontSizeUpDown.Visible = props.HasFieldValue(FieldTypes.FONT_SIZE);
fontBoldButton.Visible = props.HasFieldValue(FieldType.FONT_BOLD); fontBoldButton.Visible = props.HasFieldValue(FieldTypes.FONT_BOLD);
fontItalicButton.Visible = props.HasFieldValue(FieldType.FONT_ITALIC); fontItalicButton.Visible = props.HasFieldValue(FieldTypes.FONT_ITALIC);
textHorizontalAlignmentButton.Visible = props.HasFieldValue(FieldType.TEXT_HORIZONTAL_ALIGNMENT); textHorizontalAlignmentButton.Visible = props.HasFieldValue(FieldTypes.TEXT_HORIZONTAL_ALIGNMENT);
textVerticalAlignmentButton.Visible = props.HasFieldValue(FieldType.TEXT_VERTICAL_ALIGNMENT); textVerticalAlignmentButton.Visible = props.HasFieldValue(FieldTypes.TEXT_VERTICAL_ALIGNMENT);
shadowButton.Visible = props.HasFieldValue(FieldType.SHADOW); shadowButton.Visible = props.HasFieldValue(FieldTypes.SHADOW);
counterLabel.Visible = counterUpDown.Visible = props.HasFieldValue(FieldType.FLAGS) counterLabel.Visible = counterUpDown.Visible = props.HasFieldValue(FieldTypes.FLAGS)
&& ((FieldFlag) props.GetFieldValue(FieldType.FLAGS) & FieldFlag.COUNTER) == FieldFlag.COUNTER; && ((FieldFlag) props.GetFieldValue(FieldTypes.FLAGS) & FieldFlag.COUNTER) == FieldFlag.COUNTER;
btnConfirm.Visible = btnCancel.Visible = props.HasFieldValue(FieldType.FLAGS) btnConfirm.Visible = btnCancel.Visible = props.HasFieldValue(FieldTypes.FLAGS)
&& ((FieldFlag) props.GetFieldValue(FieldType.FLAGS) & FieldFlag.CONFIRMABLE) == FieldFlag.CONFIRMABLE; && ((FieldFlag) props.GetFieldValue(FieldTypes.FLAGS) & FieldFlag.CONFIRMABLE) == FieldFlag.CONFIRMABLE;
obfuscateModeButton.Visible = props.HasFieldValue(FieldType.PREPARED_FILTER_OBFUSCATE); obfuscateModeButton.Visible = props.HasFieldValue(FieldTypes.PREPARED_FILTER_OBFUSCATE);
highlightModeButton.Visible = props.HasFieldValue(FieldType.PREPARED_FILTER_HIGHLIGHT); highlightModeButton.Visible = props.HasFieldValue(FieldTypes.PREPARED_FILTER_HIGHLIGHT);
} }
else else
{ {
@ -766,7 +766,7 @@ namespace Greenshot.Addon.LegacyEditor.Forms
var props = _surface.FieldAggregator; var props = _surface.FieldAggregator;
// if a confirmable element is selected, we must disable most of the controls // if a confirmable element is selected, we must disable most of the controls
// since we demand confirmation or cancel for confirmable element // since we demand confirmation or cancel for confirmable element
if (props.HasFieldValue(FieldType.FLAGS) && ((FieldFlag) props.GetFieldValue(FieldType.FLAGS) & FieldFlag.CONFIRMABLE) == FieldFlag.CONFIRMABLE) if (props.HasFieldValue(FieldTypes.FLAGS) && ((FieldFlag) props.GetFieldValue(FieldTypes.FLAGS) & FieldFlag.CONFIRMABLE) == FieldFlag.CONFIRMABLE)
{ {
// disable most controls // disable most controls
if (!_controlsDisabledDueToConfirmable) if (!_controlsDisabledDueToConfirmable)
@ -814,7 +814,7 @@ namespace Greenshot.Addon.LegacyEditor.Forms
private void ArrowHeadsToolStripMenuItemClick(object sender, EventArgs e) private void ArrowHeadsToolStripMenuItemClick(object sender, EventArgs e)
{ {
_surface.FieldAggregator.GetField(FieldType.ARROWHEADS).Value = (ArrowContainer.ArrowHeadCombination) ((ToolStripMenuItem) sender).Tag; _surface.FieldAggregator.GetField(FieldTypes.ARROWHEADS).Value = (ArrowContainer.ArrowHeadCombination) ((ToolStripMenuItem) sender).Tag;
} }
private void EditToolStripMenuItemClick(object sender, EventArgs e) private void EditToolStripMenuItemClick(object sender, EventArgs e)
@ -880,7 +880,7 @@ namespace Greenshot.Addon.LegacyEditor.Forms
{ {
// in addition to selection, deselection of elements, we need to // in addition to selection, deselection of elements, we need to
// refresh toolbar if prepared filter mode is changed // refresh toolbar if prepared filter mode is changed
if (Equals(e.Field.FieldType, FieldType.PREPARED_FILTER_HIGHLIGHT)) if (Equals(e.Field.FieldType, FieldTypes.PREPARED_FILTER_HIGHLIGHT))
{ {
RefreshFieldControls(); RefreshFieldControls();
} }

View file

@ -15,6 +15,12 @@
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<TargetFrameworkProfile /> <TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
<LangVersion>latest</LangVersion>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Autofac, Version=4.8.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL"> <Reference Include="Autofac, Version=4.8.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
<HintPath>..\packages\Autofac.4.8.1\lib\net45\Autofac.dll</HintPath> <HintPath>..\packages\Autofac.4.8.1\lib\net45\Autofac.dll</HintPath>
@ -205,6 +211,7 @@
<Compile Include="Drawing\Fields\Binding\NotNullValidator.cs" /> <Compile Include="Drawing\Fields\Binding\NotNullValidator.cs" />
<Compile Include="Drawing\Fields\Field.cs" /> <Compile Include="Drawing\Fields\Field.cs" />
<Compile Include="Drawing\Fields\FieldAggregator.cs" /> <Compile Include="Drawing\Fields\FieldAggregator.cs" />
<Compile Include="Drawing\Fields\FieldTypes.cs" />
<Compile Include="Drawing\Fields\FieldType.cs" /> <Compile Include="Drawing\Fields\FieldType.cs" />
<Compile Include="Drawing\FilterContainer.cs" /> <Compile Include="Drawing\FilterContainer.cs" />
<Compile Include="Drawing\Filters\AbstractFilter.cs" /> <Compile Include="Drawing\Filters\AbstractFilter.cs" />

View file

@ -21,10 +21,14 @@
#endregion #endregion
using System;
namespace Greenshot.Addons.Interfaces.Drawing namespace Greenshot.Addons.Interfaces.Drawing
{ {
public interface IFieldType public interface IFieldType
{ {
string Name { get; set; } string Name { get; }
Type ValueType { get; }
} }
} }