summaryrefslogtreecommitdiff
path: root/Models
diff options
context:
space:
mode:
Diffstat (limited to 'Models')
-rw-r--r--Models/ImageModel.cs56
-rw-r--r--Models/Interfaces/IImageModel.cs9
-rw-r--r--Models/Interfaces/SettingsModel.cs12
3 files changed, 77 insertions, 0 deletions
diff --git a/Models/ImageModel.cs b/Models/ImageModel.cs
new file mode 100644
index 0000000..e0bb1af
--- /dev/null
+++ b/Models/ImageModel.cs
@@ -0,0 +1,56 @@
+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;
+ }
+ }
+}
diff --git a/Models/Interfaces/IImageModel.cs b/Models/Interfaces/IImageModel.cs
new file mode 100644
index 0000000..897a221
--- /dev/null
+++ b/Models/Interfaces/IImageModel.cs
@@ -0,0 +1,9 @@
+using Avalonia.Media.Imaging;
+
+namespace Avalar.Models.Interfaces
+{
+ public interface IImageModel
+ {
+ IBitmap LoadImage(string imagePath);
+ }
+}
diff --git a/Models/Interfaces/SettingsModel.cs b/Models/Interfaces/SettingsModel.cs
new file mode 100644
index 0000000..6149c1e
--- /dev/null
+++ b/Models/Interfaces/SettingsModel.cs
@@ -0,0 +1,12 @@
+
+using Avalonia;
+
+namespace Avalar.Models.Interfaces
+{
+ interface ISettingsModel
+ {
+ public double Width { get; set; }
+
+ public double Height { get; set; }
+ }
+}