Files
MicrosoftIris/UIX/Microsoft/Iris/Animations/BaseKeyframe.cs
T
2022-03-03 08:14:05 -06:00

140 lines
4.9 KiB
C#

// Decompiled with JetBrains decompiler
// Type: Microsoft.Iris.Animations.BaseKeyframe
// Assembly: UIX, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
// MVID: A56C6C9D-B7F6-46A9-8BDE-B3D9B8D60B11
// Assembly location: C:\Program Files\Zune\UIX.dll
using Microsoft.Iris.Render;
using System;
using System.Text;
namespace Microsoft.Iris.Animations
{
internal abstract class BaseKeyframe : ICloneable
{
private Interpolation _interpolation;
private RelativeTo _relative;
private float _timeValue;
private static RendererProperty[] s_propertyMap = new RendererProperty[20];
static BaseKeyframe()
{
s_propertyMap[0] = new RendererProperty("Position");
s_propertyMap[1] = new RendererProperty("Size");
s_propertyMap[2] = new RendererProperty("Alpha");
s_propertyMap[3] = new RendererProperty("Scale");
s_propertyMap[4] = new RendererProperty("Rotation");
s_propertyMap[5] = new RendererProperty("Orientation");
s_propertyMap[6] = new RendererProperty("Position", "X", "X00");
s_propertyMap[7] = new RendererProperty("Position", "Y", "0X0");
s_propertyMap[8] = new RendererProperty("Size", "X", "X0");
s_propertyMap[9] = new RendererProperty("Size", "Y", "0X");
s_propertyMap[10] = new RendererProperty("Scale", "X", "X00");
s_propertyMap[11] = new RendererProperty("Scale", "Y", "0X0");
s_propertyMap[16] = new RendererProperty("CameraEye");
s_propertyMap[17] = new RendererProperty("CameraAt");
s_propertyMap[18] = new RendererProperty("CameraUp");
s_propertyMap[19] = new RendererProperty("CameraZn");
}
public BaseKeyframe()
: this(0.0f)
{
}
public BaseKeyframe(float timeValue)
{
_timeValue = timeValue;
_relative = RelativeTo.Final;
}
public void AddtoAnimation(
AnimationTemplate anim,
ActiveSequence aseq,
string property,
ref AnimationArgs args,
ref AnimationProxy animation)
{
if (animation == null)
animation = CreateProxy(anim, aseq, property);
PopulateAnimationWorker(aseq.Target, animation, ref args);
}
protected virtual AnimationProxy CreateProxy(
AnimationTemplate anim,
ActiveSequence aseq,
string property)
{
StopCommand stopCommand = anim.GetStopCommand(Type);
RendererProperty rendererProperty = property != null ? new RendererProperty(property) : s_propertyMap[(int)Type];
return new AnimationProxy(aseq, aseq.Target, Type, rendererProperty, anim.Loop, stopCommand);
}
public BaseKeyframe Clone() => (BaseKeyframe)MemberwiseClone();
object ICloneable.Clone() => Clone();
protected abstract void PopulateAnimationWorker(
IAnimatable targetObject,
AnimationProxy animation,
ref AnimationArgs args);
public float Time
{
get => _timeValue;
set => _timeValue = value;
}
public RelativeTo RelativeTo
{
get => _relative == null ? RelativeTo.Absolute : _relative;
set => _relative = value;
}
public bool IsRelativeToObject => RelativeTo.IsRelativeToObject;
public Interpolation Interpolation
{
get => _interpolation;
set => _interpolation = value;
}
public abstract AnimationType Type { get; }
public abstract object ObjectValue { get; }
public abstract void Apply(IAnimatableOwner animationTarget, ref AnimationArgs args);
public abstract void MagnifyValue(float magnifyValue);
public virtual bool Multiply => false;
public override string ToString()
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append("<");
stringBuilder.Append(GetType().Name);
stringBuilder.Append(" Time=\"");
stringBuilder.Append(_timeValue);
stringBuilder.Append("\"");
if (_interpolation != null)
{
stringBuilder.Append(" Interpolation=\"");
stringBuilder.Append(_interpolation.ToString());
stringBuilder.Append("\"");
}
if (_relative != RelativeTo.Absolute)
{
stringBuilder.Append(" RelativeTo=\"");
stringBuilder.Append(_relative);
stringBuilder.Append("\"");
}
stringBuilder.Append(" Value=\"");
stringBuilder.Append(ObjectValue);
stringBuilder.Append("\"");
stringBuilder.Append("/>");
return stringBuilder.ToString();
}
}
}