Upgrade the logger component
[master-thesis.git] / Parasitemia / ParasitemiaUI / Types.fs
1 module ParasitemiaUI.Types
2
3 open System.Windows
4
5 open Newtonsoft.Json
6
7 open ParasitemiaCore.UnitsOfMeasure
8
9 type RBC =
10 {
11 num : int
12
13 [<JsonIgnore>]
14 mutable infected : bool
15
16 [<JsonIgnore>]
17 mutable setManually : bool
18
19 center : Point
20 size : Size
21 infectedArea : int
22 }
23
24 type PredefinedPPI =
25 {
26 ppi : int<ppi>
27 label : string
28 }
29 override this.ToString () =
30 sprintf "%s: %d" this.label this.ppi
31
32 type SensorSize =
33 {
34 w : float<mm>
35 h : float<mm>
36 label : string
37 }
38 override this.ToString () =
39 sprintf "%g mm × %g mm%s" this.w this.h (if this.label = "" then "" else " (" + this.label + ")")
40
41 let defaultPredefinedPPI =
42 [
43 { ppi = 230000<ppi>; label = "50×" }
44 { ppi = 460000<ppi>; label = "100×" }
45 ]
46
47 let defaultSensorSizes =
48 [
49 { w = 3.2<mm>; h = 2.4<mm>; label = "1/4″" }
50 { w = 4.8<mm>; h = 3.6<mm>; label = "1/3″" }
51 { w = 5.76<mm>; h = 4.29<mm>; label = "1/2.5″" }
52 { w = 6.4<mm>; h = 4.8<mm>; label = "1/2″" }
53 { w = 7.18<mm>; h = 5.32<mm>; label = "1/1.8″" }
54 { w = 7.6<mm>; h = 5.7<mm>; label = "1/1.7″" }
55 { w = 8.8<mm>; h = 6.6<mm>; label = "2/3″" }
56 { w = 13.2<mm>; h = 8.8<mm>; label = "1″" }
57 ]