From 3adb9278d0ca0f50638490512ef6be90313c2ed5 Mon Sep 17 00:00:00 2001 From: Robin Date: Thu, 19 Feb 2015 13:04:50 +0100 Subject: [PATCH] BUG-1753: Fixing problems with saving/loading the configuration of the DropShadowEffect and TornEdgeEffect --- Greenshot/Forms/TornEdgeSettingsForm.cs | 3 ++- GreenshotPlugin/Core/Effects.cs | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Greenshot/Forms/TornEdgeSettingsForm.cs b/Greenshot/Forms/TornEdgeSettingsForm.cs index 606a01e23..82d0c3889 100644 --- a/Greenshot/Forms/TornEdgeSettingsForm.cs +++ b/Greenshot/Forms/TornEdgeSettingsForm.cs @@ -36,7 +36,8 @@ namespace Greenshot.Forms { private void ShowSettings() { shadowCheckbox.Checked = effect.GenerateShadow; - shadowDarkness.Value = (int)(effect.Darkness * 40); + // Fix to prevent BUG-1753 + shadowDarkness.Value = Math.Max(shadowDarkness.Minimum, Math.Min(shadowDarkness.Maximum, (int)(effect.Darkness * shadowDarkness.Maximum))); offsetX.Value = effect.ShadowOffset.X; offsetY.Value = effect.ShadowOffset.Y; toothsize.Value = effect.ToothHeight; diff --git a/GreenshotPlugin/Core/Effects.cs b/GreenshotPlugin/Core/Effects.cs index 2ebcacb5a..2e832c004 100644 --- a/GreenshotPlugin/Core/Effects.cs +++ b/GreenshotPlugin/Core/Effects.cs @@ -26,6 +26,7 @@ using System.ComponentModel; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; +using System.Globalization; using System.Text; namespace Greenshot.Core { @@ -353,6 +354,14 @@ namespace Greenshot.Core { } public class EffectConverter : TypeConverter { + // Fix to prevent BUG-1753 + private NumberFormatInfo numberFormatInfo = new NumberFormatInfo(); + + public EffectConverter() : base() { + numberFormatInfo.NumberDecimalSeparator = "."; + numberFormatInfo.NumberGroupSeparator = ","; + } + public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string)) { return true; @@ -427,8 +436,11 @@ namespace Greenshot.Core { switch (pair[0]) { case "Darkness" : float darkness; - if (float.TryParse(pair[1], out darkness)) { - effect.Darkness = darkness; + // Fix to prevent BUG-1753 + if (pair[1] != null && float.TryParse(pair[1], NumberStyles.Float, numberFormatInfo, out darkness)) { + if (darkness <= 1.0) { + effect.Darkness = darkness; + } } break; case "ShadowSize": @@ -504,7 +516,8 @@ namespace Greenshot.Core { } private void RetrieveDropShadowEffectValues(DropShadowEffect effect, StringBuilder sb) { - sb.AppendFormat("Darkness:{0:F2}|ShadowSize:{1}|ShadowOffset:{2},{3}", effect.Darkness, effect.ShadowSize, effect.ShadowOffset.X, effect.ShadowOffset.Y); + // Fix to prevent BUG-1753 is to use the numberFormatInfo + sb.AppendFormat("Darkness:{0}|ShadowSize:{1}|ShadowOffset:{2},{3}", effect.Darkness.ToString("F2", numberFormatInfo), effect.ShadowSize, effect.ShadowOffset.X, effect.ShadowOffset.Y); } private void RetrieveTornEdgeEffectValues(TornEdgeEffect effect, StringBuilder sb) { sb.AppendFormat("GenerateShadow:{0}|ToothHeight:{1}|HorizontalToothRange:{2}|VerticalToothRange:{3}|Edges:{4},{5},{6},{7}", effect.GenerateShadow, effect.ToothHeight, effect.HorizontalToothRange, effect.VerticalToothRange, effect.Edges[0], effect.Edges[1], effect.Edges[2], effect.Edges[3]);