Output logs to AppUser/Roaming/Parasitemia/Logs
[master-thesis.git] / Parasitemia / ParasitemiaUI / Utils.fs
index 810494e..4dcb7d4 100644 (file)
@@ -3,7 +3,6 @@
 open System.IO
 
 open Newtonsoft.Json
-open Newtonsoft.Json.Converters
 
 open Types
 
@@ -17,18 +16,15 @@ let percentText (nbTotal : int, nb : int) : string =
         let percent = 100. * (float nb) / (float nbTotal)
         sprintf "%.1f %% (%d / %d)" percent nb nbTotal
 
-let roamingDir =
-    Path.Combine (System.Environment.GetFolderPath (System.Environment.SpecialFolder.ApplicationData), "Parasitemia")
-
 let predefinedPPIFilename = "predefined-ppi.json"
-let predefinedPPIFilepath = Path.Combine (roamingDir, predefinedPPIFilename)
+let predefinedPPIFilepath = Path.Combine (Constants.USER_DIRECTORY, predefinedPPIFilename)
 
 let sensorSizesFilename = "sensor-sizes.json"
-let sensorSizesFilepath = Path.Combine (roamingDir, sensorSizesFilename)
+let sensorSizesFilepath = Path.Combine (Constants.USER_DIRECTORY, sensorSizesFilename)
 
 let private savePredefinedPPIToFile (predefinedPPI : PredefinedPPI list) =
     try
-        Directory.CreateDirectory roamingDir |> ignore
+        Directory.CreateDirectory Constants.USER_DIRECTORY |> ignore
         use file = new StreamWriter (predefinedPPIFilepath)
         file.Write (JsonConvert.SerializeObject (predefinedPPI, JsonSerializerSettings (Formatting = Formatting.Indented)))
     with
@@ -37,7 +33,7 @@ let private savePredefinedPPIToFile (predefinedPPI : PredefinedPPI list) =
 
 let private saveSensorSizesToFile (sensorSizes : SensorSize list) =
     try
-        Directory.CreateDirectory roamingDir |> ignore
+        Directory.CreateDirectory Constants.USER_DIRECTORY |> ignore
         use file = new StreamWriter (sensorSizesFilepath)
         file.Write (JsonConvert.SerializeObject (sensorSizes, JsonSerializerSettings (Formatting = Formatting.Indented)))
     with
@@ -62,6 +58,38 @@ let sensorSizes : SensorSize list =
         saveSensorSizesToFile defaultSensorSizes
         defaultSensorSizes
 
+let toRomanNumber (v : int) : string =
+    let rec decompose (v : int) : string =
+        if v >= 1000 then
+           "M" + decompose (v - 1000)
+        elif v >= 900 then
+           "CM" + decompose (v - 900)
+        elif v >= 500 then
+            "D" + decompose (v - 500)
+        elif v >= 400 then
+            "CD" + decompose (v - 400)
+        elif v >= 100 then
+            "C" + decompose (v - 100)
+        elif v >= 90 then
+            "XC" + decompose (v - 90)
+        elif v >= 50 then
+            "L" + decompose (v - 50)
+        elif v >= 40 then
+            "XL" + decompose (v - 40)
+        elif v >= 10 then
+            "X" + decompose (v - 10)
+        elif v >= 9 then
+            "IX" + decompose (v - 9)
+        elif v >= 5 then
+            "V" + decompose (v - 5)
+        elif v >= 4 then
+            "IV" + decompose (v - 4)
+        elif v >= 1 then
+            "I" + decompose (v - 1)
+        else
+            ""
+    decompose v
+
 let argsHelp =
     let programName = System.AppDomain.CurrentDomain.FriendlyName
     "Usage of Parasitemia:\n" +
@@ -70,7 +98,7 @@ let argsHelp =
     "    --folder <folder> : an input folder containing images to analyze\n" +
     "    --file <file> : an image file to be analyzed\n" +
     "    --output <folder> : a folder to put the results\n" +
-    "    --debug : output more information like intermediate images (it takes more CPU and memory)\n" +
+    "    --debug : output more information like intermediate images (it takes more CPU and memory) and write debug information to the log files\n" +
 
     "Interactive mode:\n" +
     (sprintf "  %s [<document-file>] [--debug]\n" programName) +