public static async Task Calibrate(CalibrationStyle style) { var bounds = Windows.UI.Core.CoreWindow.GetForCurrentThread().Bounds; LcdCalibrationView view = new LcdCalibrationView(_device) { Width = bounds.Width, Height = bounds.Height }; Popup p = new Popup() { Child = view, Margin = new Thickness(0), IsOpen = true }; // Disable normal touch events, they interfere with the calibration. _processor.Uninitialize(); try { var calibrationParameters = await view.CalibrateAsync(style); _device.CalibrationMatrix = calibrationParameters.ToMatrix3x2(); } finally { p.IsOpen = false; _processor.Initialize(); } }
private async Task<AffineTransformationParameters> CalibrateAsync(CalibrationStyle style) { await _LoadTask.Task; double margin = 50; List<Tuple<Point, Point>> measurements = new List<Tuple<Point, Point>>(); measurements.Add(new Tuple<Point, Point>(new Point(margin, margin), new Point())); //Top left if(style == CalibrationStyle.SevenPoint) measurements.Add(new Tuple<Point, Point>(new Point(this.ActualWidth * .5, margin), new Point())); //Top center measurements.Add(new Tuple<Point, Point>(new Point(this.ActualWidth - margin, margin), new Point())); //Top right measurements.Add(new Tuple<Point, Point>(new Point(this.ActualWidth - margin, this.ActualHeight - margin), new Point())); //Bottom right if (style == CalibrationStyle.SevenPoint) measurements.Add(new Tuple<Point, Point>(new Point(this.ActualWidth * .5, this.ActualHeight - margin), new Point())); //Bottom center measurements.Add(new Tuple<Point, Point>(new Point(margin, this.ActualHeight - margin), new Point())); //Bottom left if (style == CalibrationStyle.CornersAndCenter || style == CalibrationStyle.SevenPoint) measurements.Add(new Tuple<Point, Point>(new Point(this.ActualWidth * .5, this.ActualHeight * .5), new Point())); //Center for (int i = 0; i < measurements.Count; i++) { progress.Value = i * 100d / measurements.Count; var p = measurements[i].Item1; CalibrationMarker.RenderTransform = new TranslateTransform() { X = p.X, Y = p.Y }; var p1 = await GetRawTouchEventAsync(); measurements[i] = new Tuple<Point, Point>(p, p1); } var lsa = new LeastSquaresAdjustment(measurements.Select(t => t.Item1), measurements.Select(t => t.Item2)); return lsa.GetTransformation(); }
public static async Task<AffineTransformationParameters> CalibrateScreenAsync(ITouchDevice device, CalibrationStyle style = CalibrationStyle.CornersAndCenter) { var bounds = Windows.UI.Core.CoreWindow.GetForCurrentThread().Bounds; LcdCalibrationView view = new LcdCalibrationView(device); view.Width = bounds.Width; view.Height = bounds.Height; Popup p = new Popup() { Child = view, Margin = new Thickness(0), IsOpen = true }; try { return await view.CalibrateAsync(style); } finally { p.IsOpen = false; } }
private async Task <AffineTransformationParameters> CalibrateAsync(CalibrationStyle style) { await _LoadTask.Task.ConfigureAwait(true); double margin = 50; List <Tuple <Point, Point> > measurements = new List <Tuple <Point, Point> > { new Tuple <Point, Point>(new Point(margin, margin), new Point()) //Top left }; if (style == CalibrationStyle.SevenPoint) { measurements.Add(new Tuple <Point, Point>(new Point(this.ActualWidth * .5, margin), new Point())); //Top center } measurements.Add(new Tuple <Point, Point>(new Point(this.ActualWidth - margin, margin), new Point())); //Top right measurements.Add(new Tuple <Point, Point>(new Point(this.ActualWidth - margin, this.ActualHeight - margin), new Point())); //Bottom right if (style == CalibrationStyle.SevenPoint) { measurements.Add(new Tuple <Point, Point>(new Point(this.ActualWidth * .5, this.ActualHeight - margin), new Point())); //Bottom center } measurements.Add(new Tuple <Point, Point>(new Point(margin, this.ActualHeight - margin), new Point())); //Bottom left if (style == CalibrationStyle.CornersAndCenter || style == CalibrationStyle.SevenPoint) { measurements.Add(new Tuple <Point, Point>(new Point(this.ActualWidth * .5, this.ActualHeight * .5), new Point())); //Center } for (int i = 0; i < measurements.Count; i++) { progress.Value = i * 100d / measurements.Count; var p = measurements[i].Item1; CalibrationMarker.RenderTransform = new TranslateTransform() { X = p.X, Y = p.Y }; var p1 = await GetRawTouchEventAsync().ConfigureAwait(true); measurements[i] = new Tuple <Point, Point>(p, p1); } var lsa = new LeastSquaresAdjustment(measurements.Select(t => t.Item1), measurements.Select(t => t.Item2)); return(lsa.GetTransformation()); }
public async Task <AffineTransformationParameters> CalibrateAsync(CalibrationStyle style) { await _loaded.Task; double margin = 50; List <Point> references = new List <Point>(); references.Add(new Point(margin, margin)); //Top left if (style == CalibrationStyle.SevenPoint) { references.Add(new Point(this.ActualWidth * .5, margin)); //Top center } references.Add(new Point(this.ActualWidth - margin, margin)); //Top right references.Add(new Point(this.ActualWidth - margin, this.ActualHeight - margin)); //Bottom right if (style == CalibrationStyle.SevenPoint) { references.Add(new Point(this.ActualWidth * .5, this.ActualHeight - margin)); //Bottom center } references.Add(new Point(margin, this.ActualHeight - margin)); //Bottom left if (style == CalibrationStyle.CornersAndCenter || style == CalibrationStyle.SevenPoint) { references.Add(new Point(this.ActualWidth * .5, this.ActualHeight * .5)); //Center } List <Point> measurements = new List <Point>(); foreach (var reference in references) { progress.Value = measurements.Count * 100d / references.Count; CalibrationMarker.RenderTransform = new TranslateTransform() { X = reference.X, Y = reference.Y }; var measurement = await GetRawTouchEventAsync(); measurements.Add(measurement); } return(LeastSquaresAdjustment.GetTransformation(references, measurements)); }
public static async Task <AffineTransformationParameters> CalibrateScreenAsync(ITouchDevice device, CalibrationStyle style = CalibrationStyle.CornersAndCenter) { var bounds = Windows.UI.Core.CoreWindow.GetForCurrentThread().Bounds; LcdCalibrationView view = new LcdCalibrationView(device); view.Width = bounds.Width; view.Height = bounds.Height; var p = new Popup { Child = view, Margin = new Thickness(0), IsOpen = true }; try { return(await view.CalibrateAsync(style)); } finally { p.IsOpen = false; } }
public static extern void hdUpdateCalibration(CalibrationStyle style);