Reduce a bit the thickness of selected RBC
[master-thesis.git] / Parasitemia / ParasitemiaUI / PiaZ.fs
index 92ebbe0..18e9d6a 100644 (file)
@@ -2,7 +2,6 @@
 module ParasitemiaUI.PiaZ
 
 open System
-open System.Windows
 open System.IO
 open System.IO.Compression
 
@@ -10,7 +9,6 @@ open Emgu.CV
 open Emgu.CV.Structure
 
 open Newtonsoft.Json
-open Newtonsoft.Json.Converters
 
 open Types
 
@@ -68,23 +66,23 @@ let save (filePath : string) (data : DocumentData) =
 
     // Write each images and the associated information.
     for srcImg in data.images do
-        let imgFilename = (string srcImg.num) + imageExtension
+        let imgFilename = (string srcImg.Num) + imageExtension
         let imgEntry = file.CreateEntry (imgFilename, CompressionLevel.NoCompression) // FIXME: It seems a compression is applied to this file despite of the 'NoCompression' flag.
-        srcImg.img.ToBitmap().Save (imgEntry.Open (), System.Drawing.Imaging.ImageFormat.Tiff)
+        srcImg.Img.ToBitmap().Save (imgEntry.Open (), System.Drawing.Imaging.ImageFormat.Tiff)
 
         let imgJSONEntry = file.CreateEntry (imgFilename + ".json", CompressionLevel.Fastest)
         use imgJSONFileWriter = new StreamWriter (imgJSONEntry.Open ())
         imgJSONFileWriter.Write (
             JsonConvert.SerializeObject (
                 {
-                    num = srcImg.num
-                    name = srcImg.name
-                    RBCRadius = srcImg.config.RBCRadius.Pixel
-                    parameters = srcImg.config.Parameters
-                    dateLastAnalysis = srcImg.dateLastAnalysis
-                    rbcs = srcImg.rbcs
-                    healthyRBCBrightness = srcImg.healthyRBCBrightness
-                    infectedRBCBrightness = srcImg.infectedRBCBrightness
+                    num = srcImg.Num
+                    name = srcImg.Name
+                    RBCRadius = srcImg.Config.RBCRadius.Pixel
+                    parameters = srcImg.Config.Parameters
+                    dateLastAnalysis = srcImg.DateLastAnalysis
+                    rbcs = srcImg.RBCs
+                    healthyRBCBrightness = srcImg.HealthyRBCBrightness
+                    infectedRBCBrightness = srcImg.InfectedRBCBrightness
                 }
             )
         )
@@ -93,14 +91,15 @@ let updateDocumentData (fromVersion : int) (toVersion : int) (data : DocumentDat
     for v in fromVersion + 1 .. toVersion do
         match v with
         | 1 -> // Version 0 -> 1 : set initial brightness for rbc.
-            data.images |> List.iter (fun i -> i.healthyRBCBrightness <- 1.f; i.infectedRBCBrightness <- 1.f)
+            data.images |> List.iter (fun i -> i.HealthyRBCBrightness <- 1.f; i.InfectedRBCBrightness <- 1.f)
         | _ -> ()
     data
 
 /// <summary>
 /// Load document from a give file path.
 /// </summary>
-/// <param name="filePath"></param>
+/// <param name="filePath">Path to the PiaZ file</param>
+/// <param name="defaultConfig"></param>
 /// <exception cref="System.IOException">If the file cannot be read</exception>
 let load (filePath : string) (defaultConfig : ParasitemiaCore.Config.Config) : DocumentData =
     use file = ZipFile.Open (filePath, ZipArchiveMode.Read)
@@ -118,7 +117,7 @@ let load (filePath : string) (defaultConfig : ParasitemiaCore.Config.Config) : D
                     for imgEntry in file.Entries do
                         if imgEntry.Name.EndsWith (imageExtension) then
                             use bitmap = new System.Drawing.Bitmap (imgEntry.Open (), false)
-                            let img = new Image<Bgr, byte> (bitmap)
+                            let img = bitmap.ToImage<Bgr, byte> ()
                             imgNum <- imgNum + 1
                             let imgJSONEntry = file.GetEntry (imgEntry.Name + ".json")
                             use imgJSONFileReader = new StreamReader (imgJSONEntry.Open ())
@@ -132,16 +131,7 @@ let load (filePath : string) (defaultConfig : ParasitemiaCore.Config.Config) : D
                                 }
 
                             config.SetRBCRadius imgInfo.RBCRadius
-                            yield
-                                {
-                                    num = imgNum
-                                    name = imgInfo.name
-                                    config = config
-                                    dateLastAnalysis = imgInfo.dateLastAnalysis
-                                    img = img
-                                    rbcs = imgInfo.rbcs
-                                    healthyRBCBrightness = imgInfo.healthyRBCBrightness
-                                    infectedRBCBrightness = imgInfo.infectedRBCBrightness
-                                }
+
+                            SourceImage (imgNum, imgInfo.name, config, imgInfo.dateLastAnalysis, img, imgInfo.rbcs, HealthyRBCBrightness = imgInfo.healthyRBCBrightness, InfectedRBCBrightness = imgInfo.infectedRBCBrightness)
                 ]
         }
\ No newline at end of file