private static void OnRenderDefaultedChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
        {
            MyButtonChrome chrome = (MyButtonChrome)o;

            if (chrome.Animates)
            {
                if (!chrome.RenderPressed)
                {
                    if ((bool)e.NewValue)
                    {
                        if (chrome._localResources == null)
                        {
                            chrome._localResources = new LocalResources();
                            chrome.InvalidateVisual();
                        }
                        Duration               duration      = new Duration(TimeSpan.FromSeconds(0.3));
                        ColorAnimation         animation     = new ColorAnimation(Color.FromArgb(0xf9, 0, 0xcc, 0xff), duration);
                        GradientStopCollection gradientStops = ((LinearGradientBrush)chrome.InnerBorderPen.Brush).GradientStops;
                        gradientStops[0].BeginAnimation(GradientStop.ColorProperty, animation);
                        gradientStops[1].BeginAnimation(GradientStop.ColorProperty, animation);
                        DoubleAnimationUsingKeyFrames timeline = new DoubleAnimationUsingKeyFrames();
                        timeline.KeyFrames.Add(new LinearDoubleKeyFrame(1.0, TimeSpan.FromSeconds(0.5)));
                        timeline.KeyFrames.Add(new DiscreteDoubleKeyFrame(1.0, TimeSpan.FromSeconds(0.75)));
                        timeline.KeyFrames.Add(new LinearDoubleKeyFrame(0.0, TimeSpan.FromSeconds(2.0)));
                        timeline.RepeatBehavior = RepeatBehavior.Forever;
                        Timeline.SetDesiredFrameRate(timeline, 10);
                        chrome.BackgroundOverlay.BeginAnimation(Brush.OpacityProperty, timeline);
                        chrome.BorderOverlayPen.Brush.BeginAnimation(Brush.OpacityProperty, timeline);
                    }
                    else if (chrome._localResources == null)
                    {
                        chrome.InvalidateVisual();
                    }
                    else
                    {
                        Duration        duration2  = new Duration(TimeSpan.FromSeconds(0.2));
                        DoubleAnimation animation2 = new DoubleAnimation
                        {
                            Duration = duration2
                        };
                        chrome.BorderOverlayPen.Brush.BeginAnimation(Brush.OpacityProperty, animation2);
                        chrome.BackgroundOverlay.BeginAnimation(Brush.OpacityProperty, animation2);
                        ColorAnimation animation3 = new ColorAnimation
                        {
                            Duration = duration2
                        };
                        GradientStopCollection stops2 = ((LinearGradientBrush)chrome.InnerBorderPen.Brush).GradientStops;
                        stops2[0].BeginAnimation(GradientStop.ColorProperty, animation3);
                        stops2[1].BeginAnimation(GradientStop.ColorProperty, animation3);
                    }
                }
            }
            else
            {
                chrome._localResources = null;
                chrome.InvalidateVisual();
            }
        }
        private static void OnRenderMouseOverChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
        {
            MyButtonChrome chrome = (MyButtonChrome)o;

            if (chrome.Animates)
            {
                if (!chrome.RenderPressed)
                {
                    if ((bool)e.NewValue)
                    {
                        if (chrome._localResources == null)
                        {
                            chrome._localResources = new LocalResources();
                            chrome.InvalidateVisual();
                        }
                        Duration        duration  = new Duration(TimeSpan.FromSeconds(0.3));
                        DoubleAnimation animation = new DoubleAnimation(1.0, duration);
                        chrome.BorderOverlayPen.Brush.BeginAnimation(Brush.OpacityProperty, animation);
                        chrome.BackgroundOverlay.BeginAnimation(Brush.OpacityProperty, animation);
                    }
                    else if (chrome._localResources == null)
                    {
                        chrome.InvalidateVisual();
                    }
                    else if (chrome.RenderDefaulted)
                    {
                        double opacity = chrome.BackgroundOverlay.Opacity;
                        double num2    = (1.0 - opacity) * 0.5;
                        DoubleAnimationUsingKeyFrames timeline = new DoubleAnimationUsingKeyFrames();
                        timeline.KeyFrames.Add(new LinearDoubleKeyFrame(1.0, TimeSpan.FromSeconds(num2)));
                        timeline.KeyFrames.Add(new DiscreteDoubleKeyFrame(1.0, TimeSpan.FromSeconds(num2 + 0.25)));
                        timeline.KeyFrames.Add(new LinearDoubleKeyFrame(0.0, TimeSpan.FromSeconds(num2 + 1.5)));
                        timeline.KeyFrames.Add(new LinearDoubleKeyFrame(opacity, TimeSpan.FromSeconds(2.0)));
                        timeline.RepeatBehavior = RepeatBehavior.Forever;
                        Timeline.SetDesiredFrameRate(timeline, 10);
                        chrome.BackgroundOverlay.BeginAnimation(Brush.OpacityProperty, timeline);
                        chrome.BorderOverlayPen.Brush.BeginAnimation(Brush.OpacityProperty, timeline);
                    }
                    else
                    {
                        Duration        duration2  = new Duration(TimeSpan.FromSeconds(0.2));
                        DoubleAnimation animation2 = new DoubleAnimation
                        {
                            Duration = duration2
                        };
                        chrome.BackgroundOverlay.BeginAnimation(Brush.OpacityProperty, animation2);
                        chrome.BorderOverlayPen.Brush.BeginAnimation(Brush.OpacityProperty, animation2);
                    }
                }
            }
            else
            {
                chrome._localResources = null;
                chrome.InvalidateVisual();
            }
        }
        private static void OnRenderPressedChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
        {
            MyButtonChrome chrome = (MyButtonChrome)o;

            if (chrome.Animates)
            {
                if ((bool)e.NewValue)
                {
                    if (chrome._localResources == null)
                    {
                        chrome._localResources = new LocalResources();
                        chrome.InvalidateVisual();
                    }
                    Duration        duration  = new Duration(TimeSpan.FromSeconds(0.1));
                    DoubleAnimation animation = new DoubleAnimation(1.0, duration);
                    chrome.BackgroundOverlay.BeginAnimation(Brush.OpacityProperty, animation);
                    chrome.BorderOverlayPen.Brush.BeginAnimation(Brush.OpacityProperty, animation);
                    chrome.LeftDropShadowBrush.BeginAnimation(Brush.OpacityProperty, animation);
                    chrome.TopDropShadowBrush.BeginAnimation(Brush.OpacityProperty, animation);
                    animation = new DoubleAnimation(0.0, duration);
                    chrome.InnerBorderPen.Brush.BeginAnimation(Brush.OpacityProperty, animation);
                    ColorAnimation         animation2    = new ColorAnimation(Color.FromRgb(0xc2, 0xe4, 0xf6), duration);
                    GradientStopCollection gradientStops = ((LinearGradientBrush)chrome.BackgroundOverlay).GradientStops;
                    gradientStops[0].BeginAnimation(GradientStop.ColorProperty, animation2);
                    gradientStops[1].BeginAnimation(GradientStop.ColorProperty, animation2);
                    animation2 = new ColorAnimation(Color.FromRgb(0xab, 0xda, 0xf3), duration);
                    gradientStops[2].BeginAnimation(GradientStop.ColorProperty, animation2);
                    animation2 = new ColorAnimation(Color.FromRgb(0x90, 0xcb, 0xeb), duration);
                    gradientStops[3].BeginAnimation(GradientStop.ColorProperty, animation2);
                    animation2 = new ColorAnimation(Color.FromRgb(0x2c, 0x62, 0x8b), duration);
                    chrome.BorderOverlayPen.Brush.BeginAnimation(SolidColorBrush.ColorProperty, animation2);
                }
                else if (chrome._localResources == null)
                {
                    chrome.InvalidateVisual();
                }
                else
                {
                    bool            renderMouseOver = chrome.RenderMouseOver;
                    Duration        duration2       = new Duration(TimeSpan.FromSeconds(0.1));
                    DoubleAnimation animation3      = new DoubleAnimation
                    {
                        Duration = duration2
                    };
                    chrome.LeftDropShadowBrush.BeginAnimation(Brush.OpacityProperty, animation3);
                    chrome.TopDropShadowBrush.BeginAnimation(Brush.OpacityProperty, animation3);
                    chrome.InnerBorderPen.Brush.BeginAnimation(Brush.OpacityProperty, animation3);
                    if (!renderMouseOver)
                    {
                        chrome.BorderOverlayPen.Brush.BeginAnimation(Brush.OpacityProperty, animation3);
                        chrome.BackgroundOverlay.BeginAnimation(Brush.OpacityProperty, animation3);
                    }
                    ColorAnimation animation4 = new ColorAnimation
                    {
                        Duration = duration2
                    };
                    chrome.BorderOverlayPen.Brush.BeginAnimation(SolidColorBrush.ColorProperty, animation4);
                    GradientStopCollection stops2 = ((LinearGradientBrush)chrome.BackgroundOverlay).GradientStops;
                    stops2[0].BeginAnimation(GradientStop.ColorProperty, animation4);
                    stops2[1].BeginAnimation(GradientStop.ColorProperty, animation4);
                    stops2[2].BeginAnimation(GradientStop.ColorProperty, animation4);
                    stops2[3].BeginAnimation(GradientStop.ColorProperty, animation4);
                }
            }
            else
            {
                chrome._localResources = null;
                chrome.InvalidateVisual();
            }
        }