private void ApplyDropShadowEffectValues(string valuesString, DropShadowEffect effect) { var values = valuesString.Split('|'); foreach (var nameValuePair in values) { var pair = nameValuePair.Split(':'); switch (pair[0]) { case "Darkness": // Fix to prevent BUG-1753 if (pair[1] != null && float.TryParse(pair[1], NumberStyles.Float, _numberFormatInfo, out var darkness)) { if (darkness <= 1.0) { effect.Darkness = darkness; } } break; case "ShadowSize": if (int.TryParse(pair[1], out var shadowSize)) { effect.ShadowSize = shadowSize; } break; case "ShadowOffset": var shadowOffset = new NativePoint(); var coordinates = pair[1].Split(','); if (int.TryParse(coordinates[0], out var shadowOffsetX)) { shadowOffset = shadowOffset.ChangeX(shadowOffsetX); } if (int.TryParse(coordinates[1], out var shadowOffsetY)) { shadowOffset = shadowOffset.ChangeY(shadowOffsetY); } effect.ShadowOffset = shadowOffset; break; } } }
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { // to string if (destinationType == typeof(string)) { var sb = new StringBuilder(); switch (value) { case TornEdgeEffect tornEdgeEffect: RetrieveDropShadowEffectValues(tornEdgeEffect, sb); sb.Append("|"); RetrieveTornEdgeEffectValues(tornEdgeEffect, sb); return(sb.ToString()); case DropShadowEffect dropShadowEffect: RetrieveDropShadowEffectValues(dropShadowEffect, sb); return(sb.ToString()); } } // from string if (!(value is string settings)) { return(base.ConvertTo(context, culture, value, destinationType)); } if (destinationType == typeof(DropShadowEffect)) { var effect = new DropShadowEffect(); ApplyDropShadowEffectValues(settings, effect); return(effect); } if (destinationType == typeof(TornEdgeEffect)) { var effect = new TornEdgeEffect(); ApplyDropShadowEffectValues(settings, effect); ApplyTornEdgeEffectValues(settings, effect); return(effect); } return(base.ConvertTo(context, culture, value, destinationType)); }
private void RetrieveDropShadowEffectValues(DropShadowEffect effect, StringBuilder sb) { // 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); }