+ member this.RemoveSourceImage (srcImg: SourceImage) =
+ let isCurrent =
+ match this.CurrentImage with
+ | Some srcImg' -> srcImg = srcImg'
+ | _ -> false
+
+ if sourceImages.Remove(srcImg)
+ then
+ alteredSinceLastSave <- true
+ if isCurrent
+ then
+ this.CurrentImage <- if sourceImages.Count > 0 then Some sourceImages.[0] else None
+ // Re-numbered the images.
+ sourceImages |> Seq.iteri (fun i srcImg -> srcImg.num <- i + 1)
+
+ member this.SetResult (imgNum: int) (rbcRadius: float) (cells: Cell list) =
+ let sourceImage = sourceImages.Find(fun srcImg -> srcImg.num = imgNum)
+
+ let w = sourceImage.img.Width
+ let h = sourceImage.img.Height
+
+ sourceImage.rbcRadius <- rbcRadius
+ sourceImage.dateLastAnalysis <- DateTime.UtcNow
+
+ // To match with previously manually altered RBC.
+ let manuallyAlteredPreviousRBCS = sourceImage.rbcs |> List.filter (fun rbc -> rbc.setManually)
+ let tolerance = rbcRadius * 0.5 // +/-.
+ let getPreviousRBC (center: Point) : RBC option =
+ manuallyAlteredPreviousRBCS |> List.tryFind (fun rbc -> rbc.center.X > center.X - tolerance && rbc.center.X < center.X + tolerance &&
+ rbc.center.Y > center.Y - tolerance && rbc.center.Y < center.Y + tolerance)
+