-type RBC = {
- num: int
-
- [<JsonIgnore>]
- mutable infected: bool
-
- [<JsonIgnore>]
- mutable setManually: bool
-
- center: Point
- size: Size
- infectedArea: int }
-
-type SourceImage = {
- mutable num: int
- mutable name: string
-
- mutable config: ParasitemiaCore.Config.Config
- mutable dateLastAnalysis: DateTime // UTC.
- img: Image<Bgr, byte>
- mutable rbcs: RBC list
-
- mutable healthyRBCBrightness: float32
- mutable infectedRBCBrightness: float32 } with
-
- member this.HealthyRBCColor: SolidColorBrush =
- let mutable color = healthyRBColor * this.healthyRBCBrightness
- color.A <- 255uy;
- SolidColorBrush(color)
-
- member this.InfectedRBCColor: SolidColorBrush =
- let mutable color = infectedRBColor * this.infectedRBCBrightness
- color.A <- 255uy;
- SolidColorBrush(color)
-
-type PredefinedPPI = {
- ppi: int<ppi>
- label: string } with
- override this.ToString() =
- sprintf "%s: %d" this.label this.ppi
-
-type SensorSize = {
- w: float<mm>
- h: float<mm>
- label: string } with
- override this.ToString () =
- sprintf "%g mm × %g mm%s" this.w this.h (if this.label = "" then "" else " (" + this.label + ")")
-
-let defaultPredefinedPPI = [
- { ppi = 230000<ppi>; label = "50×" }
- { ppi = 460000<ppi>; label = "100×" } ]
-
-let defaultSensorSizes = [
- { w = 3.2<mm>; h = 2.4<mm>; label = "1/4″" }
- { w = 4.8<mm>; h = 3.6<mm>; label = "1/3″" }
- { w = 5.76<mm>; h = 4.29<mm>; label = "1/2.5″" }
- { w = 6.4<mm>; h = 4.8<mm>; label = "1/2″" }
- { w = 7.18<mm>; h = 5.32<mm>; label = "1/1.8″" }
- { w = 7.6<mm>; h = 5.7<mm>; label = "1/1.7″" }
- { w = 8.8<mm>; h = 6.6<mm>; label = "2/3″" }
- { w = 13.2<mm>; h = 8.8<mm>; label = "1″" } ]
+type RBC =
+ {
+ num : int
+
+ [<JsonIgnore>]
+ mutable infected : bool
+
+ [<JsonIgnore>]
+ mutable setManually : bool
+
+ center : Point
+ size : Size
+ infectedArea : int
+ }
+
+type SourceImage =
+ {
+ mutable num : int
+ mutable name : string
+
+ mutable config : ParasitemiaCore.Config.Config
+ mutable dateLastAnalysis : DateTime // UTC.
+ img : Image<Bgr, byte>
+ mutable rbcs : RBC list
+
+ mutable healthyRBCBrightness : float32
+ mutable infectedRBCBrightness : float32
+ }
+ with
+ member this.HealthyRBCColor : SolidColorBrush =
+ let mutable color = healthyRBColor * this.healthyRBCBrightness
+ color.A <- 255uy
+ SolidColorBrush(color)
+
+ member this.InfectedRBCColor : SolidColorBrush =
+ let mutable color = infectedRBColor * this.infectedRBCBrightness
+ color.A <- 255uy
+ SolidColorBrush(color)
+
+type PredefinedPPI =
+ {
+ ppi : int<ppi>
+ label : string
+ }
+ with
+ override this.ToString() =
+ sprintf "%s: %d" this.label this.ppi
+
+type SensorSize =
+ {
+ w : float<mm>
+ h : float<mm>
+ label : string
+ }
+ with
+ override this.ToString () =
+ sprintf "%g mm × %g mm%s" this.w this.h (if this.label = "" then "" else " (" + this.label + ")")
+
+let defaultPredefinedPPI =
+ [
+ { ppi = 230000<ppi>; label = "50×" }
+ { ppi = 460000<ppi>; label = "100×" }
+ ]
+
+let defaultSensorSizes =
+ [
+ { w = 3.2<mm>; h = 2.4<mm>; label = "1/4″" }
+ { w = 4.8<mm>; h = 3.6<mm>; label = "1/3″" }
+ { w = 5.76<mm>; h = 4.29<mm>; label = "1/2.5″" }
+ { w = 6.4<mm>; h = 4.8<mm>; label = "1/2″" }
+ { w = 7.18<mm>; h = 5.32<mm>; label = "1/1.8″" }
+ { w = 7.6<mm>; h = 5.7<mm>; label = "1/1.7″" }
+ { w = 8.8<mm>; h = 6.6<mm>; label = "2/3″" }
+ { w = 13.2<mm>; h = 8.8<mm>; label = "1″" }
+ ]