using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace TeamAAS_VP.Models
{
///
/// 综合结果
///
public class AnalysisResult : INotifyPropertyChanged
{
private double _sharpness;
private CheckerboardResult _checkerboard = new CheckerboardResult();
private double _qualityScore;
private int _frameCount;
private double _bestSharpness;
private DateTime _analysisTime;
private ObservableCollection _suggestions = new ObservableCollection();
public double Sharpness
{
get => _sharpness;
set => SetField(ref _sharpness, value);
}
public CheckerboardResult Checkerboard
{
get => _checkerboard;
set => SetField(ref _checkerboard, value);
}
public double QualityScore
{
get => _qualityScore;
set => SetField(ref _qualityScore, value);
}
public int FrameCount
{
get => _frameCount;
set => SetField(ref _frameCount, value);
}
public double BestSharpness
{
get => _bestSharpness;
set => SetField(ref _bestSharpness, value);
}
public DateTime AnalysisTime
{
get => _analysisTime;
set => SetField(ref _analysisTime, value);
}
public ObservableCollection Suggestions
{
get => _suggestions;
set => SetField(ref _suggestions, value);
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
protected bool SetField(ref T field, T value, [CallerMemberName] string propertyName = null)
{
if (EqualityComparer.Default.Equals(field, value)) return false;
field = value;
OnPropertyChanged(propertyName);
return true;
}
}
}