Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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;
            }
        }
Exemplo n.º 3
0
        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);
            };
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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));
        }