Add an option to change the brightness of the highlight box color (healthy/infected...
[master-thesis.git] / Parasitemia / ParasitemiaUI / GUI.fs
index a71aa96..2ff3116 100644 (file)
@@ -24,9 +24,6 @@ let run (defaultConfig: Config) (fileToOpen: string option) =
     let mainWindow = Views.MainWindow()
     let ctrl (name: string): 'a = mainWindow.Root.FindName(name) :?> 'a
 
-    let colorRBCHealthy = Brushes.YellowGreen
-    let colorRBCInfected = Brushes.Red
-
     let state = State.State()
     let mutable currentScale = 1.
     let mutable displayHealthy = false
@@ -78,19 +75,19 @@ let run (defaultConfig: Config) (fileToOpen: string option) =
                                                 System.Drawing.Size((if x + w >= img.Width then img.Width - x else w),
                                                                     (if y + h >= img.Height then img.Height - y else h))))
 
-    let setRBCFrameStyle (rbc: RBC) (frame: Views.RBCFrame) =
+    let setRBCFrameStyle (srcImg: SourceImage) (rbc: RBC) (frame: Views.RBCFrame) =
         frame.Opacity <- if displayHealthy || rbc.setManually || rbc.infected then 1. else 0.
-        let color = if rbc.infected then colorRBCInfected else colorRBCHealthy
+        let color = if rbc.infected then srcImg.InfectedRBCColor else srcImg.HealthyRBCColor
         frame.manuallyAdded.Visibility <- if rbc.setManually then Visibility.Visible else Visibility.Hidden
         frame.manuallyAdded.Fill <- color
         frame.border.Stroke <- color
 
-    let RBCFrameFromExisting (rbc: RBC) (frame: Views.RBCFrame) : Views.RBCFrame =
+    let RBCFrameFromExisting (srcImg: SourceImage) (rbc: RBC) (frame: Views.RBCFrame) : Views.RBCFrame =
         frame.Visibility <- Visibility.Visible
         frame.Height <- rbc.size.Height
         frame.Width <- rbc.size.Width
         frame.Tag <- rbc
-        setRBCFrameStyle rbc frame
+        setRBCFrameStyle srcImg rbc frame
         frame.border.StrokeThickness <- 1.
         frame.txtRBCNumber.Text <- rbc.num.ToString()
         frame
@@ -179,7 +176,7 @@ let run (defaultConfig: Config) (fileToOpen: string option) =
             else
                 preview.viewport.Visibility <- Visibility.Hidden
 
-    let rec setAsInfected (rbc: RBC) (infected: bool) =
+    let rec setAsInfected (srcImg: SourceImage) (rbc: RBC) (infected: bool) =
         state.SetAsInfected rbc infected
         canvasCurrentImage.Children
         |> Seq.cast<Views.RBCFrame>
@@ -187,16 +184,16 @@ let run (defaultConfig: Config) (fileToOpen: string option) =
             (fun frame ->
                 if (frame.Tag :?> RBC) = rbc
                 then
-                    setRBCFrameStyle rbc frame)
+                    setRBCFrameStyle srcImg rbc frame)
         updateRBCFramesPreview ()
         updateCurrentImageInformation ()
         updateGlobalParasitemia ()
 
-    and RBCFrame (rbc: RBC) : Views.RBCFrame =
-        let frame = RBCFrameFromExisting rbc (Views.RBCFrame())
+    and RBCFrame (srcImg: SourceImage) (rbc: RBC) : Views.RBCFrame =
+        let frame = RBCFrameFromExisting srcImg rbc (Views.RBCFrame())
         frame.SetValue(Panel.ZIndexProperty, Int32.MaxValue - rbc.num) // To be sure the
-        frame.menuRBCSetAsHealthy.Click.AddHandler(fun obj args -> setAsInfected (frame.Tag :?> RBC) false)
-        frame.menuRBCSetAsInfected.Click.AddHandler(fun obj args -> setAsInfected (frame.Tag :?> RBC) true)
+        frame.menuRBCSetAsHealthy.Click.AddHandler(fun obj args -> setAsInfected srcImg (frame.Tag :?> RBC) false)
+        frame.menuRBCSetAsInfected.Click.AddHandler(fun obj args -> setAsInfected srcImg (frame.Tag :?> RBC) true)
         frame.ContextMenuOpening.AddHandler(
             fun obj args ->
                 if (frame.Tag :?> RBC).infected
@@ -220,9 +217,9 @@ let run (defaultConfig: Config) (fileToOpen: string option) =
                 let previewInfected =
                     if currentPreview < stackRBC.Children.Count
                     then
-                        RBCFrameFromExisting rbc (stackRBC.Children.[currentPreview] :?> Views.RBCFrame)
+                        RBCFrameFromExisting srcImg rbc (stackRBC.Children.[currentPreview] :?> Views.RBCFrame)
                     else
-                        let f = RBCFrame rbc
+                        let f = RBCFrame srcImg rbc
                         f.MouseLeftButtonUp.AddHandler(fun obj args -> zoomToRBC (f.Tag :?> RBC))
                         stackRBC.Children.Add(f) |> ignore
                         f
@@ -246,9 +243,9 @@ let run (defaultConfig: Config) (fileToOpen: string option) =
                 let frame =
                     if currentCanvas < canvasCurrentImage.Children.Count
                     then
-                        RBCFrameFromExisting rbc (canvasCurrentImage.Children.[currentCanvas] :?> Views.RBCFrame)
+                        RBCFrameFromExisting srcImg rbc (canvasCurrentImage.Children.[currentCanvas] :?> Views.RBCFrame)
                     else
-                        let f = RBCFrame rbc
+                        let f = RBCFrame srcImg rbc
                         f.Root.Opacity <- 0.7
                         canvasCurrentImage.Children.Add(f) |> ignore
                         f
@@ -327,8 +324,10 @@ let run (defaultConfig: Config) (fileToOpen: string option) =
 
             updateRBCFramesCurrent ()
             updateRBCFramesPreview ()
+
         | None ->
             imgLogos.Visibility <- Visibility.Visible
+
             stackRBC.Children.Clear()
             canvasCurrentImage.Children.Clear()
             canvasCurrentImage.Background <- canvasCurrentImageColor
@@ -591,4 +590,4 @@ let run (defaultConfig: Config) (fileToOpen: string option) =
     | Some filepath -> loadFile filepath
     | None -> ()
 
-    app.Run()
\ No newline at end of file
+    app.Run()