Example #1
0
        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());
        }
Example #5
0
        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));
        }
Example #6
0
        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;
            }
        }
Example #7
0
 public static extern void hdUpdateCalibration(CalibrationStyle style);
Example #8
0
 public static extern void hdUpdateCalibration(CalibrationStyle style);