public void Run(string configFile) { PanoScreen.Initialize(); var mosaicInfo = PanoScreen.GetMosaicInfo(); var screen = new PanoScreen { Resolution = new Size((int)mosaicInfo.ProjectorWidth * 2 - mosaicInfo.Overlap, (int)mosaicInfo.ProjectorHeight), Overlap = mosaicInfo.Overlap }; screen.AddProjectors(mosaicInfo.DisplayId0, mosaicInfo.DisplayId1); var xmlSerializer = new XmlSerializer(typeof(Configuration.Configuration)); Configuration.Configuration config; using (var reader = new XmlTextReader(configFile)) { config = (Configuration.Configuration)xmlSerializer.Deserialize(reader); } Configuration.Configuration.Instance.UpdateConfig(config); screen.Update(config.Settings.PatternSize, new Size(config.Settings.PatternCountX, config.Settings.PatternCountY), config.Settings.KeepCorners, config.Settings.ControlPointsInsideOverlap); screen.UpdateProjectorsFromConfig(ProjectorMapper.MapProjectorsData(Configuration.Configuration.Instance.Projectors)); screen.WarpBlend(false); //screen.Warp(); }
public void Initialize(PanoScreen screen) { var projectorWidth = (screen.Resolution.Width + screen.Overlap) / 2; _projectors[1].ProjectorControl.Margin = new Thickness(projectorWidth - screen.Overlap, 0, 0, 0); _projectors[1].BlacklevelControl.Margin = new Thickness(projectorWidth - screen.Overlap, 0, 0, 0); _projectors[1].Blacklevel2Control.Margin = new Thickness(projectorWidth - screen.Overlap, 0, 0, 0); _projectors[1].BlendRegionControl.Margin = new Thickness(projectorWidth - screen.Overlap, 0, 0, 0); for (var i = 0; i < _projectors.Length; i++) { var projector = _projectors[i]; projector.Projector = screen.Projectors[i]; projector.ProjectorControl.Width = projectorWidth; projector.ProjectorControl.Height = screen.Resolution.Height; projector.ProjectorControl.WireframeType = WireframeType.Trianglestrip; projector.ProjectorControl.Wireframe = projector.Projector.TriangleStrip; projector.ProjectorControl.Initialize(projectorWidth, screen.Resolution.Height); projector.ProjectorControl.ControlPointTypeChanged += OnControlPointTypeChanged; projector.ProjectorControl.ControlPointMoved += OnControlPointMoved; projector.ProjectorControl.ControlPointActivated += UpdateWarpInfo; projector.BlacklevelControl.Width = projectorWidth; projector.BlacklevelControl.Height = screen.Resolution.Height; projector.BlacklevelControl.WireframeType = WireframeType.Connect; projector.BlacklevelControl.Wireframe = projector.Projector.BlacklevelIndexes; projector.BlacklevelControl.Initialize(projectorWidth, screen.Resolution.Height); projector.BlacklevelControl.ControlPointTypeChanged += OnBlacklevelControlPointTypeChanged; projector.BlacklevelControl.ControlPointMoved += OnBlacklevelControlPointMoved; projector.BlacklevelControl.ControlPointActivated += UpdateWarpInfo; projector.Blacklevel2Control.Width = projectorWidth; projector.Blacklevel2Control.Height = screen.Resolution.Height; projector.Blacklevel2Control.WireframeType = WireframeType.Connect; projector.Blacklevel2Control.Wireframe = projector.Projector.Blacklevel2Indexes; projector.Blacklevel2Control.Initialize(projectorWidth, screen.Resolution.Height); projector.Blacklevel2Control.ControlPointTypeChanged += OnBlacklevel2ControlPointTypeChanged; projector.Blacklevel2Control.ControlPointMoved += OnBlacklevel2ControlPointMoved; projector.Blacklevel2Control.ControlPointActivated += UpdateWarpInfo; projector.BlendRegionControl.Width = projectorWidth; projector.BlendRegionControl.Height = screen.Resolution.Height; projector.BlendRegionControl.WireframeType = WireframeType.Connect; projector.BlendRegionControl.Wireframe = projector.Projector.BlendRegionIndexes; projector.BlendRegionControl.Initialize(projectorWidth, screen.Resolution.Height); projector.BlendRegionControl.ControlPointTypeChanged += OnBlendRegionControlPointTypeChanged; projector.BlendRegionControl.ControlPointMoved += OnBlendRegionControlPointMoved; projector.BlendRegionControl.ControlPointActivated += UpdateWarpInfo; } }
public MainWindow() { Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US"); PanoScreen.Initialize(); var mosaicInfo = PanoScreen.GetMosaicInfo(); var screens = Helpers.GetScreens(); var widestScreen = screens.OrderByDescending(s => s.Bounds.Width).First(); var smallestScreen = screens.OrderBy(s => s.Bounds.Width).First(); var screenView = new ScreenView { Left = widestScreen.Bounds.X, Top = widestScreen.Bounds.Y, Overlap = mosaicInfo.Overlap, Resolution = new Size((int)mosaicInfo.ProjectorWidth * 2 - mosaicInfo.Overlap, (int)mosaicInfo.ProjectorHeight) }; InitializeComponent(); _viewModel = new ViewModel(screenView, mosaicInfo, this); DataContext = _viewModel; Loaded += (sender, eventArgs) => { Left = smallestScreen.Bounds.X + 50; Top = smallestScreen.Bounds.Y + 50; _viewModel.Initialize(); _viewModel.LoadSettings(); //EventHelper.SubscribeEvent<CalibrationDataChanged, CalibrationData>(OnCalibrationDataChanged); EventHelper.SendEvent <ApplicationReady, EventArgs>(null); }; }
public void Initialize(PanoScreen screen) { _screen = screen; var width = Resolution.Width; var height = Resolution.Height; Width = width; Height = height; Image1.Width = width; Image1.Height = height; WarpControl1.Initialize(screen); _screen.SetPattern( Configuration.Configuration.Instance.Settings.PatternSize, new Size(Configuration.Configuration.Instance.Settings.PatternCountX, Configuration.Configuration.Instance.Settings.PatternCountY), Configuration.Configuration.Instance.Settings.ControlPointsInsideOverlap, false); _screen.UpdateProjectorsFromConfig(ProjectorMapper.MapProjectorsData(Configuration.Configuration.Instance.Projectors)); //EventHelper.SubscribeEvent<CalibrationDataChanged, CalibrationData>(OnCalibrationDataChanged); EventHelper.SubscribeEvent <ControlPointsMoved, ControlPointData>(OnControlPointsMoved); //EventHelper.SubscribeEvent<ApplicationReady, EventArgs>(OnApplicationReady); }
public ViewModel(ScreenView screen, MosaicInfo mosaicInfo, MainWindow mainWindow) { //if (Helpers.IsDevComputer) //{ // _configFilename = @"C:\Temp\PanoBeam.config"; //} _screenView = screen; _mainWindow = mainWindow; CameraUserControl = new CameraUserControl(); CalibrationUserControl = new CalibrationUserControl(); BlendingUserControl = new BlendingUserControl(); TestImagesUserControl = new TestImagesUserControl(); CalibrationUserControl.Start += CalibrationUserControlOnStart; TestImagesUserControl.ShowImage += TestImagesUserControlOnShowImage; _screen = new PanoScreen { Resolution = _screenView.Resolution, Overlap = _screenView.Overlap, SaveCursorPosition = () => { _mousePosition = Win32.GetMousePosition(); }, RestoreCursorPosition = () => { if (_mousePosition != null) { Win32.SetCursorPos(_mousePosition.X, _mousePosition.Y); } } }; _screen.AddProjectors(mosaicInfo.DisplayId0, mosaicInfo.DisplayId1); //_screen.LoadDefaults(); CalibrationUserControl.Initialize(); BlendingUserControl.Initialize(_screen.Projectors); _screen.CalculationProgress += ScreenOnCalculationProgress; //_screen.SetPattern(50, new Size(8, 9)); }