Adjust project structure
This commit is contained in:
1 parent
d38912f5da
commit
e3c436f939
2111 files changed
+14028
-47199
No files matched your search
@@ -0,0 +1,76 @@
|
||||
using System;
|
||||
using System.Windows;
|
||||
|
||||
namespace HandyControl.Expression.Media
|
||||
{
|
||||
internal class DrawingPropertyMetadata : FrameworkPropertyMetadata
|
||||
{
|
||||
#pragma warning disable 414
|
||||
private DrawingPropertyMetadataOptions options;
|
||||
#pragma warning restore 414
|
||||
|
||||
private PropertyChangedCallback propertyChangedCallback;
|
||||
|
||||
public static event EventHandler<DrawingPropertyChangedEventArgs> DrawingPropertyChanged;
|
||||
|
||||
static DrawingPropertyMetadata()
|
||||
{
|
||||
DrawingPropertyChanged += delegate (object sender, DrawingPropertyChangedEventArgs args) {
|
||||
if ((sender is IShape shape) && args.Metadata.AffectsRender)
|
||||
{
|
||||
InvalidateGeometryReasons reasons = InvalidateGeometryReasons.PropertyChanged;
|
||||
if (args.IsAnimated)
|
||||
{
|
||||
reasons |= InvalidateGeometryReasons.IsAnimated;
|
||||
}
|
||||
shape.InvalidateGeometry(reasons);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public DrawingPropertyMetadata(object defaultValue) : this(defaultValue, DrawingPropertyMetadataOptions.None, null)
|
||||
{
|
||||
}
|
||||
|
||||
public DrawingPropertyMetadata(PropertyChangedCallback propertyChangedCallback) : this(DependencyProperty.UnsetValue, DrawingPropertyMetadataOptions.None, propertyChangedCallback)
|
||||
{
|
||||
}
|
||||
|
||||
private DrawingPropertyMetadata(DrawingPropertyMetadataOptions options, object defaultValue) : base(defaultValue, (FrameworkPropertyMetadataOptions)options)
|
||||
{
|
||||
}
|
||||
|
||||
public DrawingPropertyMetadata(object defaultValue, DrawingPropertyMetadataOptions options) : this(defaultValue, options, null)
|
||||
{
|
||||
}
|
||||
|
||||
public DrawingPropertyMetadata(object defaultValue, DrawingPropertyMetadataOptions options, PropertyChangedCallback propertyChangedCallback) : base(defaultValue, (FrameworkPropertyMetadataOptions)options, AttachCallback(defaultValue, options, propertyChangedCallback))
|
||||
{
|
||||
}
|
||||
|
||||
private static PropertyChangedCallback AttachCallback(object defaultValue, DrawingPropertyMetadataOptions options, PropertyChangedCallback propertyChangedCallback)
|
||||
{
|
||||
DrawingPropertyMetadata metadata = new DrawingPropertyMetadata(options, defaultValue)
|
||||
{
|
||||
options = options,
|
||||
propertyChangedCallback = propertyChangedCallback
|
||||
};
|
||||
return metadata.InternalCallback;
|
||||
}
|
||||
|
||||
private void InternalCallback(DependencyObject sender, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
if (DrawingPropertyChanged != null)
|
||||
{
|
||||
DrawingPropertyChangedEventArgs args = new DrawingPropertyChangedEventArgs
|
||||
{
|
||||
Metadata = this,
|
||||
IsAnimated = DependencyPropertyHelper.GetValueSource(sender, e.Property).IsAnimated
|
||||
};
|
||||
DrawingPropertyChanged(sender, args);
|
||||
}
|
||||
|
||||
propertyChangedCallback?.Invoke(sender, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user