mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
45 lines
1.4 KiB
C#
45 lines
1.4 KiB
C#
using System.Windows;
|
|
using System.Windows.Media;
|
|
using Artemis.Core.Utilities;
|
|
using Humanizer;
|
|
|
|
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Timeline
|
|
{
|
|
public class TimelineEasingViewModel
|
|
{
|
|
private readonly TimelineKeyframeViewModel _keyframeViewModel;
|
|
private bool _isEasingModeSelected;
|
|
|
|
public TimelineEasingViewModel(TimelineKeyframeViewModel keyframeViewModel, Easings.Functions easingFunction)
|
|
{
|
|
_keyframeViewModel = keyframeViewModel;
|
|
_isEasingModeSelected = keyframeViewModel.BaseLayerPropertyKeyframe.EasingFunction == easingFunction;
|
|
|
|
EasingFunction = easingFunction;
|
|
Description = easingFunction.Humanize();
|
|
|
|
EasingPoints = new PointCollection();
|
|
for (var i = 1; i <= 10; i++)
|
|
{
|
|
var x = i;
|
|
var y = Easings.Interpolate(i / 10.0, EasingFunction) * 10;
|
|
EasingPoints.Add(new Point(x, y));
|
|
}
|
|
}
|
|
|
|
public Easings.Functions EasingFunction { get; }
|
|
public PointCollection EasingPoints { get; }
|
|
public string Description { get; }
|
|
|
|
public bool IsEasingModeSelected
|
|
{
|
|
get => _isEasingModeSelected;
|
|
set
|
|
{
|
|
_isEasingModeSelected = value;
|
|
if (_isEasingModeSelected)
|
|
_keyframeViewModel.SelectEasingMode(this);
|
|
}
|
|
}
|
|
}
|
|
} |