56 lines
1.7 KiB
C#
56 lines
1.7 KiB
C#
using System.Windows;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Effects;
|
|
|
|
namespace HandyControl.Interactivity
|
|
{
|
|
public abstract class TransitionEffect : ShaderEffect
|
|
{
|
|
// Fields
|
|
public static readonly DependencyProperty InputProperty =
|
|
RegisterPixelShaderSamplerProperty("Input", typeof(TransitionEffect), 0, SamplingMode.NearestNeighbor);
|
|
|
|
public static readonly DependencyProperty OldImageProperty =
|
|
RegisterPixelShaderSamplerProperty("OldImage", typeof(TransitionEffect), 1, SamplingMode.NearestNeighbor);
|
|
|
|
public static readonly DependencyProperty ProgressProperty = DependencyProperty.Register("Progress",
|
|
typeof(double), typeof(TransitionEffect), new PropertyMetadata(0.0, PixelShaderConstantCallback(0)));
|
|
|
|
// Methods
|
|
protected TransitionEffect()
|
|
{
|
|
UpdateShaderValue(InputProperty);
|
|
UpdateShaderValue(OldImageProperty);
|
|
UpdateShaderValue(ProgressProperty);
|
|
}
|
|
|
|
// Properties
|
|
public Brush Input
|
|
{
|
|
get =>
|
|
(Brush) GetValue(InputProperty);
|
|
set => SetValue(InputProperty, value);
|
|
}
|
|
|
|
public Brush OldImage
|
|
{
|
|
get =>
|
|
(Brush) GetValue(OldImageProperty);
|
|
set => SetValue(OldImageProperty, value);
|
|
}
|
|
|
|
public double Progress
|
|
{
|
|
get =>
|
|
(double) GetValue(ProgressProperty);
|
|
set => SetValue(ProgressProperty, value);
|
|
}
|
|
|
|
public new TransitionEffect CloneCurrentValue()
|
|
{
|
|
return (TransitionEffect) base.CloneCurrentValue();
|
|
}
|
|
|
|
protected abstract TransitionEffect DeepCopy();
|
|
}
|
|
} |