Browse Source

Add `Rect` animation handler.

pull/2163/head
Jumar Macato 7 years ago
parent
commit
6a1b8e6a8a
No known key found for this signature in database GPG Key ID: B19884DAC3A5BF3F
  1. 23
      src/Avalonia.Visuals/Animation/Animators/RectAnimator.cs
  2. 4
      src/Avalonia.Visuals/Media/Color.cs
  3. 6
      src/Avalonia.Visuals/Rect.cs

23
src/Avalonia.Visuals/Animation/Animators/RectAnimator.cs

@ -0,0 +1,23 @@
using System;
using Avalonia.Logging;
using Avalonia.Media;
namespace Avalonia.Animation.Animators
{
/// <summary>
/// Animator that handles <see cref="Rect"/> properties.
/// </summary>
public class RectAnimator : Animator<Rect>
{
public override Rect Interpolate(double progress, Rect oldValue, Rect newValue)
{
var deltaPos = newValue.Position - oldValue.Position;
var deltaSize = newValue.Size - oldValue.Size;
var newPos = (deltaPos * progress) + oldValue.Position;
var newSize = (deltaSize * progress) + oldValue.Size;
return new Rect(newPos, newSize);
}
}
}

4
src/Avalonia.Visuals/Media/Color.cs

@ -15,9 +15,9 @@ namespace Avalonia.Media
{
static Color()
{
Animation.Animation.RegisterAnimator<ColorAnimator>(prop => typeof(Color).IsAssignableFrom(prop.PropertyType));
Animation.Animation.RegisterAnimator<ColorAnimator>(prop => typeof(IBrush).IsAssignableFrom(prop.PropertyType));
}
/// <summary>
/// Gets or sets the Alpha component of the color.
/// </summary>

6
src/Avalonia.Visuals/Rect.cs

@ -3,6 +3,7 @@
using System;
using System.Globalization;
using Avalonia.Animation.Animators;
using Avalonia.Utilities;
namespace Avalonia
@ -12,6 +13,11 @@ namespace Avalonia
/// </summary>
public readonly struct Rect
{
static Rect()
{
Animation.Animation.RegisterAnimator<RectAnimator>(prop => typeof(Rect).IsAssignableFrom(prop.PropertyType));
}
/// <summary>
/// An empty rectangle.
/// </summary>

Loading…
Cancel
Save