Esempio n. 1
0
        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;
                }
            }
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
 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);
 }