mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-04-11 19:56:36 +08:00
线条动画支持大小切换
This commit is contained in:
@@ -9,7 +9,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
||||
{
|
||||
if (value is ArrowPathStyle arrowStyle)
|
||||
if (value is PathStyle arrowStyle)
|
||||
{
|
||||
return ArrowPathData.Arrow[arrowStyle];
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
||||
{
|
||||
if (value is ArrowSizeStyle arrowStyle)
|
||||
if (value is SizeStyle arrowStyle)
|
||||
{
|
||||
return (int)arrowStyle;
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ using System.Text;
|
||||
|
||||
namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public enum ArrowPathStyle
|
||||
public enum PathStyle
|
||||
{
|
||||
None,
|
||||
Arrow,
|
||||
@@ -5,7 +5,7 @@ using System.Text;
|
||||
|
||||
namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public enum ArrowSizeStyle
|
||||
public enum SizeStyle
|
||||
{
|
||||
[Description("非常小")]
|
||||
VerySmall = 6,
|
||||
@@ -223,12 +223,14 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
public static IAnimationViewModel Mapper(IAnimationViewModel s)
|
||||
{
|
||||
var d = CopyHelper.Mapper<AnimationViewModel, IAnimationViewModel>(s);
|
||||
d.AnimationPath = CopyHelper.Mapper<SharpPath, ISharpPath>(s.AnimationPath);
|
||||
return d;
|
||||
}
|
||||
|
||||
public static T Mapper<T>(IAnimationViewModel s) where T : IAnimationViewModel
|
||||
{
|
||||
var d = CopyHelper.Mapper<T, IAnimationViewModel>(s);
|
||||
d.AnimationPath = CopyHelper.Mapper<SharpPathItem, ISharpPath>(s.AnimationPath);
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
@@ -419,7 +419,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
public class AnimationItem : IAnimationViewModel
|
||||
{
|
||||
[XmlAttribute]
|
||||
public LineAnimation LineAnimation
|
||||
public LineAnimation Animation
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
@@ -434,7 +434,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
public Color Color
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
}
|
||||
|
||||
[JsonIgnore]
|
||||
[XmlElement("Color")]
|
||||
@@ -450,22 +450,24 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string Path
|
||||
[XmlIgnore]
|
||||
public ISharpPath AnimationPath
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public double Width
|
||||
[JsonIgnore]
|
||||
[XmlElement("AnimationPath")]
|
||||
public SharpPathItem XmlAnimationPath
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public double Height
|
||||
{
|
||||
get; set;
|
||||
get
|
||||
{
|
||||
return AnimationPath as SharpPathItem;
|
||||
}
|
||||
set
|
||||
{
|
||||
AnimationPath = value;
|
||||
}
|
||||
}
|
||||
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
@@ -871,13 +873,13 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public ArrowPathStyle PathStyle
|
||||
public PathStyle PathStyle
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public ArrowSizeStyle SizeStyle
|
||||
public SizeStyle SizeStyle
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
@@ -6,12 +6,12 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class ArrowPathData
|
||||
{
|
||||
public static readonly Dictionary<ArrowPathStyle, string> Arrow = new Dictionary<ArrowPathStyle, string>()
|
||||
public static readonly Dictionary<PathStyle, string> Arrow = new Dictionary<PathStyle, string>()
|
||||
{
|
||||
{ ArrowPathStyle.None, "" },
|
||||
{ ArrowPathStyle.Arrow, "M 0 -5 10 0 0 5 z" },
|
||||
{ ArrowPathStyle.Circle, "M 0, 0 a 5,5 0 1,0 10,0 a 5,5 0 1,0 -10,0" },
|
||||
{ ArrowPathStyle.Square, "M 0 -5 10 -5 10 5 0 5 z" },
|
||||
{ PathStyle.None, "" },
|
||||
{ PathStyle.Arrow, "M 0 -5 10 0 0 5 z" },
|
||||
{ PathStyle.Circle, "M 0, 0 a 5,5 0 1,0 10,0 a 5,5 0 1,0 -10,0" },
|
||||
{ PathStyle.Square, "M 0 -5 10 -5 10 5 0 5 z" },
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,10 +106,10 @@
|
||||
|
||||
<Path x:Name="ball"
|
||||
Stretch="Fill"
|
||||
Data="{Binding AnimationViewModel.Path}"
|
||||
Fill="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}"
|
||||
Width="{Binding ColorViewModel.LineWidth,Converter={StaticResource MathAddConverter},ConverterParameter=4}"
|
||||
Height="{Binding ColorViewModel.LineWidth,Converter={StaticResource MathAddConverter},ConverterParameter=4}"
|
||||
Data="{Binding AnimationViewModel.AnimationPath.Path}"
|
||||
Fill="{Binding AnimationViewModel.Color,Converter={StaticResource ColorBrushConverter}}"
|
||||
Width="{Binding AnimationViewModel.AnimationPath.Width}"
|
||||
Height="{Binding ColorViewModel.AnimationPath.Height}"
|
||||
Panel.ZIndex="1" />
|
||||
</Canvas>
|
||||
</Grid>
|
||||
|
||||
@@ -30,16 +30,16 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
private void LineControl_Unloaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (this.DataContext is ConnectionViewModel connector && connector.ColorViewModel != null)
|
||||
if (this.DataContext is ConnectionViewModel connector && connector.AnimationViewModel != null)
|
||||
{
|
||||
connector.ColorViewModel.PropertyChanged -= Connector_PropertyChanged;
|
||||
connector.AnimationViewModel.PropertyChanged -= Connector_PropertyChanged;
|
||||
}
|
||||
_story?.Stop();
|
||||
}
|
||||
|
||||
private async void PathAnimation_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (this.DataContext is ConnectionViewModel connector && connector.ColorViewModel != null)
|
||||
if (this.DataContext is ConnectionViewModel connector && connector.AnimationViewModel != null)
|
||||
{
|
||||
connector.AnimationViewModel.PropertyChanged -= Connector_PropertyChanged;
|
||||
connector.AnimationViewModel.PropertyChanged += Connector_PropertyChanged;
|
||||
@@ -52,7 +52,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
switch (e.PropertyName)
|
||||
{
|
||||
case nameof(AnimationViewModel.LineAnimation):
|
||||
case nameof(AnimationViewModel.Animation):
|
||||
case nameof(AnimationViewModel.Duration):
|
||||
await DoAnimation();
|
||||
break;
|
||||
@@ -65,7 +65,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
if (this.DataContext is ConnectionViewModel connector && connector.IsFullConnection)
|
||||
{
|
||||
await System.Threading.Tasks.Task.Delay(100);
|
||||
switch (connector.AnimationViewModel.LineAnimation)
|
||||
switch (connector.AnimationViewModel.Animation)
|
||||
{
|
||||
case LineAnimation.None:
|
||||
_story?.Stop(this);
|
||||
|
||||
@@ -6,17 +6,17 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
[Serializable]
|
||||
public class AnimationViewModel : BindableBase, IAnimationViewModel
|
||||
{
|
||||
private LineAnimation _lineAnimation = LineAnimation.None;
|
||||
private LineAnimation _animation = LineAnimation.None;
|
||||
[CanDo]
|
||||
public LineAnimation LineAnimation
|
||||
public LineAnimation Animation
|
||||
{
|
||||
get
|
||||
{
|
||||
return _lineAnimation;
|
||||
return _animation;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _lineAnimation, value);
|
||||
SetProperty(ref _animation, value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
SetProperty(ref _duration, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Color _color = Colors.Red;
|
||||
[CanDo]
|
||||
@@ -51,45 +51,39 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
|
||||
private string _path = "M 10,20 A 20,20 0 1 1 50,20 A 20,20 0 1 1 10,20";
|
||||
[CanDo]
|
||||
public string Path
|
||||
private ISharpPath _animationPath = SharpPath.Circle;
|
||||
public ISharpPath AnimationPath
|
||||
{
|
||||
get
|
||||
{
|
||||
return _path;
|
||||
return _animationPath;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _path, value);
|
||||
if (_animationPath != value)
|
||||
{
|
||||
if (_animationPath != null && _animationPath is SharpPath _sharpPath1)
|
||||
{
|
||||
_sharpPath1.PropertyChanged -= AnimationViewModel_PropertyChanged;
|
||||
}
|
||||
SetProperty(ref _animationPath, value);
|
||||
if (_animationPath != null && _animationPath is SharpPath _sharpPath2)
|
||||
{
|
||||
_sharpPath2.PropertyChanged += AnimationViewModel_PropertyChanged;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
RaisePropertyChanged(nameof(AnimationPath));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private double _witdh;
|
||||
[CanDo]
|
||||
public double Width
|
||||
private void AnimationViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
{
|
||||
get
|
||||
if (sender == AnimationPath)
|
||||
{
|
||||
return _witdh;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _witdh, value);
|
||||
}
|
||||
}
|
||||
|
||||
private double _height;
|
||||
[CanDo]
|
||||
public double Height
|
||||
{
|
||||
get
|
||||
{
|
||||
return _height;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _height, value);
|
||||
RaisePropertyChanged(nameof(AnimationPath));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public interface IAnimationViewModel
|
||||
{
|
||||
LineAnimation LineAnimation
|
||||
LineAnimation Animation
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
@@ -22,15 +22,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
string Path
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
double Width
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
double Height
|
||||
ISharpPath AnimationPath
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public interface ISharpPath
|
||||
{
|
||||
string Path
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
double Width
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
double Height
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
PathStyle PathStyle
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
SizeStyle SizeStyle
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -75,152 +75,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
|
||||
public class SharpPath : BindableBase, ISharpPath
|
||||
{
|
||||
public static SharpPath None { get; } = new SharpPath("", 10, 10, ArrowPathStyle.None, ArrowSizeStyle.Middle);
|
||||
public static SharpPath Arrow { get; } = new SharpPath("M 0 -5 10 0 0 5 z", 10, 10, ArrowPathStyle.Arrow, ArrowSizeStyle.Middle);
|
||||
public static SharpPath Circle { get; } = new SharpPath("M 0, 0 a 5,5 0 1,0 10,0 a 5,5 0 1,0 -10,0", 10, 10, ArrowPathStyle.Circle, ArrowSizeStyle.Middle);
|
||||
public static SharpPath Square { get; } = new SharpPath("M 0 -5 10 -5 10 5 0 5 z", 10, 10, ArrowPathStyle.Square, ArrowSizeStyle.Middle);
|
||||
|
||||
|
||||
public static readonly Dictionary<ArrowPathStyle, string> ArrowDictionary = new Dictionary<ArrowPathStyle, string>()
|
||||
{
|
||||
{ ArrowPathStyle.None, None.Path },
|
||||
{ ArrowPathStyle.Arrow, Arrow.Path },
|
||||
{ ArrowPathStyle.Circle, Circle.Path },
|
||||
{ ArrowPathStyle.Square, Square.Path },
|
||||
};
|
||||
|
||||
public SharpPath()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public SharpPath(string path, double width, double height, ArrowPathStyle arrowPathStyle, ArrowSizeStyle arrowSizeStyle)
|
||||
{
|
||||
Path = path;
|
||||
Width = width;
|
||||
Height = height;
|
||||
_pathStyle = arrowPathStyle;
|
||||
_sizeStyle = arrowSizeStyle;
|
||||
}
|
||||
|
||||
private string _path;
|
||||
[CanDo]
|
||||
public string Path
|
||||
{
|
||||
get
|
||||
{
|
||||
return _path;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _path, value);
|
||||
}
|
||||
}
|
||||
|
||||
private double _witdh;
|
||||
[CanDo]
|
||||
public double Width
|
||||
{
|
||||
get
|
||||
{
|
||||
return _witdh;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _witdh, value);
|
||||
}
|
||||
}
|
||||
|
||||
private double _height;
|
||||
[CanDo]
|
||||
public double Height
|
||||
{
|
||||
get
|
||||
{
|
||||
return _height;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _height, value);
|
||||
}
|
||||
}
|
||||
|
||||
private ArrowPathStyle _pathStyle = ArrowPathStyle.None;
|
||||
[CanDo]
|
||||
public ArrowPathStyle PathStyle
|
||||
{
|
||||
get
|
||||
{
|
||||
return _pathStyle;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (SetProperty(ref _pathStyle, value))
|
||||
{
|
||||
if (ArrowDictionary.ContainsKey(_pathStyle))
|
||||
{
|
||||
Path = ArrowDictionary[_pathStyle];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private ArrowSizeStyle _sizeStyle = ArrowSizeStyle.Middle;
|
||||
[CanDo]
|
||||
public ArrowSizeStyle SizeStyle
|
||||
{
|
||||
get
|
||||
{
|
||||
return _sizeStyle;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (SetProperty(ref _sizeStyle, value))
|
||||
{
|
||||
Width = (double)_sizeStyle;
|
||||
Height = (double)_sizeStyle;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static SharpPath NewArrow(double width, double height)
|
||||
=> new SharpPath(FormattableString.Invariant($"M 0 -{height / 2} {width} 0 0 {height / 2}"), width, height, ArrowPathStyle.Arrow, (ArrowSizeStyle)width);
|
||||
|
||||
public static SharpPath NewCircle(double r)
|
||||
=> new SharpPath(FormattableString.Invariant($"M 0, 0 a {r},{r} 0 1,0 {r * 2},0 a {r},{r} 0 1,0 -{r * 2},0"), r * 2, r * 2, ArrowPathStyle.Circle, (ArrowSizeStyle)(r * 2));
|
||||
|
||||
public static SharpPath NewRectangle(double width, double height)
|
||||
=> new SharpPath(FormattableString.Invariant($"M 0 -{height / 2} {width} -{height / 2} {width} {height / 2} 0 {height / 2} z"), width, height, ArrowPathStyle.Square, (ArrowSizeStyle)width);
|
||||
|
||||
public static SharpPath NewSquare(double size) => NewRectangle(size, size);
|
||||
}
|
||||
|
||||
public interface ISharpPath
|
||||
{
|
||||
string Path
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
double Width
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
double Height
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
ArrowPathStyle PathStyle
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
ArrowSizeStyle SizeStyle
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class SharpPath : BindableBase, ISharpPath
|
||||
{
|
||||
public static SharpPath None { get; } = new SharpPath("", 10, 10, PathStyle.None, SizeStyle.Middle);
|
||||
public static SharpPath Arrow { get; } = new SharpPath("M 0 -5 10 0 0 5 z", 10, 10, PathStyle.Arrow, SizeStyle.Middle);
|
||||
public static SharpPath Circle { get; } = new SharpPath("M 0, 0 a 5,5 0 1,0 10,0 a 5,5 0 1,0 -10,0", 10, 10, PathStyle.Circle, SizeStyle.Middle);
|
||||
public static SharpPath Square { get; } = new SharpPath("M 0 -5 10 -5 10 5 0 5 z", 10, 10, PathStyle.Square, SizeStyle.Middle);
|
||||
|
||||
public static readonly Dictionary<PathStyle, string> ArrowDictionary = new Dictionary<PathStyle, string>()
|
||||
{
|
||||
{ PathStyle.None, None.Path },
|
||||
{ PathStyle.Arrow, Arrow.Path },
|
||||
{ PathStyle.Circle, Circle.Path },
|
||||
{ PathStyle.Square, Square.Path },
|
||||
};
|
||||
|
||||
public SharpPath()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public SharpPath(string path, double width, double height, PathStyle arrowPathStyle, SizeStyle arrowSizeStyle)
|
||||
{
|
||||
Path = path;
|
||||
Width = width;
|
||||
Height = height;
|
||||
_pathStyle = arrowPathStyle;
|
||||
_sizeStyle = arrowSizeStyle;
|
||||
}
|
||||
|
||||
private string _path;
|
||||
[CanDo]
|
||||
public string Path
|
||||
{
|
||||
get
|
||||
{
|
||||
return _path;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _path, value);
|
||||
}
|
||||
}
|
||||
|
||||
private double _witdh;
|
||||
[CanDo]
|
||||
public double Width
|
||||
{
|
||||
get
|
||||
{
|
||||
return _witdh;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _witdh, value);
|
||||
}
|
||||
}
|
||||
|
||||
private double _height;
|
||||
[CanDo]
|
||||
public double Height
|
||||
{
|
||||
get
|
||||
{
|
||||
return _height;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _height, value);
|
||||
}
|
||||
}
|
||||
|
||||
private PathStyle _pathStyle = PathStyle.None;
|
||||
[CanDo]
|
||||
public PathStyle PathStyle
|
||||
{
|
||||
get
|
||||
{
|
||||
return _pathStyle;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (SetProperty(ref _pathStyle, value))
|
||||
{
|
||||
if (ArrowDictionary.ContainsKey(_pathStyle))
|
||||
{
|
||||
Path = ArrowDictionary[_pathStyle];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private SizeStyle _sizeStyle = SizeStyle.Middle;
|
||||
[CanDo]
|
||||
public SizeStyle SizeStyle
|
||||
{
|
||||
get
|
||||
{
|
||||
return _sizeStyle;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (SetProperty(ref _sizeStyle, value))
|
||||
{
|
||||
Width = (double)_sizeStyle;
|
||||
Height = (double)_sizeStyle;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static SharpPath NewArrow(double width, double height)
|
||||
=> new SharpPath(FormattableString.Invariant($"M 0 -{height / 2} {width} 0 0 {height / 2}"), width, height, PathStyle.Arrow, (SizeStyle)width);
|
||||
|
||||
public static SharpPath NewCircle(double r)
|
||||
=> new SharpPath(FormattableString.Invariant($"M 0, 0 a {r},{r} 0 1,0 {r * 2},0 a {r},{r} 0 1,0 -{r * 2},0"), r * 2, r * 2, PathStyle.Circle, (SizeStyle)(r * 2));
|
||||
|
||||
public static SharpPath NewRectangle(double width, double height)
|
||||
=> new SharpPath(FormattableString.Invariant($"M 0 -{height / 2} {width} -{height / 2} {width} {height / 2} 0 {height / 2} z"), width, height, PathStyle.Square, (SizeStyle)width);
|
||||
|
||||
public static SharpPath NewSquare(double size) => NewRectangle(size, size);
|
||||
}
|
||||
}
|
||||
@@ -62,7 +62,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
this.Root = root ?? sourceConnectorInfo.Root;
|
||||
if (sinkConnectorInfo is FullyCreatedConnectorInfo sink && sink.DataItem.ShowArrow == false)
|
||||
{
|
||||
this.ShapeViewModel.SinkMarker = new SharpPath("", 10, 10, ArrowPathStyle.None, ArrowSizeStyle.Middle);
|
||||
this.ShapeViewModel.SinkMarker = new SharpPath("", 10, 10, PathStyle.None, SizeStyle.Middle);
|
||||
}
|
||||
var routetype = TypeHelper.GetType(RouterMode);
|
||||
Router = routetype != null ? (System.Activator.CreateInstance(routetype) as IRouter) : new RouterNormal();
|
||||
@@ -661,7 +661,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
}
|
||||
|
||||
private PointBase? GetPortPositionBasedOnAlignment(ConnectorInfoBase port, ArrowSizeStyle marker)
|
||||
private PointBase? GetPortPositionBasedOnAlignment(ConnectorInfoBase port, SizeStyle marker)
|
||||
{
|
||||
if (port == null)
|
||||
return null;
|
||||
|
||||
@@ -9,14 +9,14 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class LogicalConnectorInfo : FullyCreatedConnectorInfo
|
||||
{
|
||||
public LogicalConnectorInfo(DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, bool isPortless = false, ConnectorValueType valueTypePoint = ConnectorValueType.Real) : base(dataItem, orientation, isInnerPoint, isPortless)
|
||||
public LogicalConnectorInfo(DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, bool isPortless = false, ConnectorValueType connectorValueType = ConnectorValueType.Real) : base(dataItem, orientation, isInnerPoint, isPortless)
|
||||
{
|
||||
this.ConnectorValueType = valueTypePoint;
|
||||
this.ConnectorValueType = connectorValueType;
|
||||
}
|
||||
|
||||
public LogicalConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, bool isPortless = false, ConnectorValueType valueTypePoint = ConnectorValueType.Real) : base(root, dataItem, orientation, isInnerPoint, isPortless)
|
||||
public LogicalConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, bool isPortless = false, ConnectorValueType connectorValueType = ConnectorValueType.Real) : base(root, dataItem, orientation, isInnerPoint, isPortless)
|
||||
{
|
||||
this.ConnectorValueType = valueTypePoint;
|
||||
this.ConnectorValueType = connectorValueType;
|
||||
}
|
||||
|
||||
public LogicalConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, SelectableItemBase designer) : base(root, dataItem, designer)
|
||||
|
||||
@@ -220,48 +220,19 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return connector;
|
||||
}
|
||||
|
||||
public List<ConnectorValueType> ValueTypeInput
|
||||
public virtual List<ConnectorValueType> ValueTypeInput
|
||||
{
|
||||
get
|
||||
{
|
||||
if (LogicalType == LogicalType.NOT)
|
||||
{
|
||||
return new List<ConnectorValueType>() { ConnectorValueType.Bool };
|
||||
}
|
||||
else if (LogicalType == LogicalType.AND || LogicalType == LogicalType.OR || LogicalType == LogicalType.XOR
|
||||
|| LogicalType == LogicalType.SHL || LogicalType == LogicalType.SHR || LogicalType == LogicalType.ROL || LogicalType == LogicalType.ROR)
|
||||
{
|
||||
return new List<ConnectorValueType>() { ConnectorValueType.Int };
|
||||
}
|
||||
else if (LogicalType == LogicalType.SEL)
|
||||
{
|
||||
return new List<ConnectorValueType>() { ConnectorValueType.Bool, ConnectorValueType.Real, ConnectorValueType.Real };
|
||||
}
|
||||
else
|
||||
{
|
||||
return new List<ConnectorValueType>() { ConnectorValueType.Real };
|
||||
}
|
||||
return new List<ConnectorValueType>() { ConnectorValueType.Real };
|
||||
}
|
||||
}
|
||||
|
||||
public List<ConnectorValueType> ValueTypeOutput
|
||||
public virtual List<ConnectorValueType> ValueTypeOutput
|
||||
{
|
||||
get
|
||||
{
|
||||
if (LogicalType == LogicalType.GT || LogicalType == LogicalType.LT || LogicalType == LogicalType.GE || LogicalType == LogicalType.LE || LogicalType == LogicalType.EQ || LogicalType == LogicalType.NE
|
||||
|| LogicalType == LogicalType.NOT)
|
||||
{
|
||||
return new List<ConnectorValueType>() { ConnectorValueType.Bool };
|
||||
}
|
||||
else if (LogicalType == LogicalType.AND || LogicalType == LogicalType.OR || LogicalType == LogicalType.XOR
|
||||
|| LogicalType == LogicalType.SHL || LogicalType == LogicalType.SHR || LogicalType == LogicalType.ROL || LogicalType == LogicalType.ROR)
|
||||
{
|
||||
return new List<ConnectorValueType>() { ConnectorValueType.Int };
|
||||
}
|
||||
else
|
||||
{
|
||||
return new List<ConnectorValueType>() { ConnectorValueType.Real };
|
||||
}
|
||||
return new List<ConnectorValueType>() { ConnectorValueType.Real };
|
||||
}
|
||||
}
|
||||
|
||||
@@ -270,6 +241,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
GetInput();
|
||||
CalculateOutput();
|
||||
}
|
||||
|
||||
public virtual void GetInput()
|
||||
{
|
||||
foreach (var input in Input)
|
||||
|
||||
@@ -398,6 +398,8 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
void SetSharp(IShapeViewModel shapeViewModel, string propertyName, List<SelectableDesignerItemViewModelBase> items);
|
||||
|
||||
void SetAnimation(IAnimationViewModel animationViewModel, string propertyName, List<SelectableDesignerItemViewModelBase> items);
|
||||
|
||||
void SetQuickItem(IQuickThemeViewModel quickThemeViewModel, string propertyName, List<SelectableDesignerItemViewModelBase> items);
|
||||
|
||||
void LockAction(LockObject lockObject, string propertyName, List<SelectableDesignerItemViewModelBase> items);
|
||||
|
||||
Reference in New Issue
Block a user