X-Git-Url: http://git.euphorik.ch/?p=master-thesis.git;a=blobdiff_plain;f=Parasitemia%2FParasitemiaUI%2FDPICalculator.fs;h=c8d25c86f6865d38e3b0136d85bd754c9f7eaecd;hp=c1187ec80ea4df343057066c1ca24de8facd7ba6;hb=b87b35b922551f122228df1fd9c530bbb807935a;hpb=2e3cd07dd099944059ef5e7a7f5ef57ffe3d677b diff --git a/Parasitemia/ParasitemiaUI/DPICalculator.fs b/Parasitemia/ParasitemiaUI/DPICalculator.fs index c1187ec..c8d25c8 100644 --- a/Parasitemia/ParasitemiaUI/DPICalculator.fs +++ b/Parasitemia/ParasitemiaUI/DPICalculator.fs @@ -13,17 +13,17 @@ open ParasitemiaCore.UnitsOfMeasure open Types -let showWindow (parent: Window) : int option = +let showWindow (parent : Window) : int option = let win = Views.PPICalculatorWindow() - win.Root.Owner <- parent - win.Root.Left <- parent.Left + parent.ActualWidth / 2. - win.Root.Width / 2. - win.Root.Top <- parent.Top + parent.ActualHeight / 2. - win.Root.Height / 2. + win.Owner <- parent + win.Left <- parent.Left + parent.ActualWidth / 2. - win.Width / 2. + win.Top <- parent.Top + parent.ActualHeight / 2. - win.Height / 2. for size in Utils.sensorSizes do win.cmbSensorSize.Items.Add(size) |> ignore win.cmbSensorSize.SelectedIndex <- 0 - let resolution (w_p: float) (w_mm: float) (zoom: float) : float = + let resolution (w_p : float) (w_mm : float) (zoom : float) : float = w_p * zoom / mmToInch w_mm let updateCurrentResolution () = @@ -32,24 +32,25 @@ let showWindow (parent: Window) : int option = let parseDouble txt errorMess = match Double.TryParse(txt) with true, value -> Success value | _ -> Fail errorMess - match result - { let! sensorResolution = parseDouble win.txtSensorResolution.Text "The sensor resolution is not valid" - let! zoom = parseDouble win.txtZoom.Text "The zoom is not valid" - let wPixel = 1. * sqrt (sensorResolution * 1e6 / ratio) - return! Success (float <| resolution wPixel w zoom) } with + match + (result { + let! sensorResolution = parseDouble win.txtSensorResolution.Text "The sensor resolution is not valid" + let! zoom = parseDouble win.txtZoom.Text "The zoom is not valid" + let wPixel = 1. * sqrt (sensorResolution * 1e6 / ratio) + return! Success (float <| resolution wPixel w zoom) + }) with | Success res -> win.txtImageResolution.Text <- (int (res / 1000.) * 1000).ToString() | Fail mess -> win.txtImageResolution.Text <- mess - win.butCancel.Click.AddHandler(fun obj args -> win.Root.DialogResult <- Nullable(false); win.Root.Close()) - win.butOK.Click.AddHandler(fun obj args -> win.Root.DialogResult <- Nullable(true); win.Root.Close()) + win.butCancel.Click.AddHandler(fun obj args -> win.DialogResult <- Nullable(false); win.Close()) + win.butOK.Click.AddHandler(fun obj args -> win.DialogResult <- Nullable(true); win.Close()) win.cmbSensorSize.SelectionChanged.AddHandler(fun obj arg -> updateCurrentResolution ()) win.txtSensorResolution.TextChanged.AddHandler(fun obj arg -> updateCurrentResolution ()) win.txtZoom.TextChanged.AddHandler(fun obj arg -> updateCurrentResolution ()) - let result = win.Root.ShowDialog() - if result.HasValue && result.Value - then + let result = win.ShowDialog() + if result.HasValue && result.Value then match Int32.TryParse win.txtImageResolution.Text with | true, res -> Some res | _ -> None