using Avalar.Models.Interfaces; using Avalonia.Media.Imaging; using ReactiveUI; using System; namespace Avalar.Models { public class ImageModel : ReactiveObject, IImageModel, ISettingsModel, IDisposable { private IBitmap m_OriginalBitmap; private IBitmap m_LatestResult; private double m_Width; public double Width { get => m_Width; set => this.RaiseAndSetIfChanged(ref m_Width, value); } private double m_Height; public double Height { get => m_Height; set => this.RaiseAndSetIfChanged(ref m_Height, value); } public IBitmap LoadImage(string imagePath) { m_OriginalBitmap = new Bitmap(imagePath); m_LatestResult = m_OriginalBitmap; return m_LatestResult; } private bool disposed = false; public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (disposed) return; if (disposing) { m_OriginalBitmap.Dispose(); m_LatestResult.Dispose(); } disposed = true; } } }