Example #1
0
        public WebcamOverlay(WebcamModel WebcamModel, Settings Settings) : base(true)
        {
            _webcamModel = WebcamModel;
            _settings    = Settings.WebcamOverlay;

            _webcamCapture = WebcamModel.InitCapture();
        }
Example #2
0
        public IBitmapImage Capture(bool IncludeCursor)
        {
            var webcamCapture = _webcamModel.InitCapture();

            try
            {
                return(webcamCapture.Value?.Capture(GraphicsBitmapLoader.Instance));
            }
            finally
            {
                _webcamModel.ReleaseCapture();
            }
        }
Example #3
0
        public void SetupPreview()
        {
            _webcamModel.PreviewClicked += SettingsWindow.ShowWebcamPage;

            IsVisibleChanged += (S, E) =>
            {
                if (IsVisible && _webcamCapture == null)
                {
                    _webcamCapture = _webcamModel.InitCapture();

                    if (_webcamCapture.Value is { } capture)
                    {
                        _reactor.WebcamSize.OnNext(new WSize(capture.Width, capture.Height));

                        UpdateWebcamPreview();
                    }
                }
                else if (!IsVisible && _webcamCapture != null)
                {
                    _webcamModel.ReleaseCapture();
                    _webcamCapture = null;
                }
            };

            void OnRegionChange()
            {
                if (!IsVisible)
                {
                    return;
                }

                _reactor.FrameSize.OnNext(new WSize(Img.ActualWidth, Img.ActualHeight));
            }

            PreviewGrid.LayoutUpdated += (S, E) => OnRegionChange();

            _webcamModel
            .ObserveProperty(M => M.SelectedCam)
            .Subscribe(M => UpdateWebcamPreview());

            _reactor.Location
            .CombineLatest(_reactor.Size, (M, N) =>
            {
                UpdateWebcamPreview();
                return(0);
            })
            .Subscribe();

            UpdateWebcamPreview();
        }
Example #4
0
        public void SetupPreview()
        {
            _webcamModel.PreviewClicked += SettingsWindow.ShowWebcamPage;

            IsVisibleChanged += (S, E) =>
            {
                if (IsVisible && _webcamCapture == null)
                {
                    _webcamCapture = _webcamModel.InitCapture();

                    SwitchWebcamPreview();
                }
                else if (!IsVisible && _webcamCapture != null)
                {
                    _webcamModel.ReleaseCapture();
                    _webcamCapture = null;
                }
            };

            void OnRegionChange()
            {
                if (!IsVisible)
                {
                    return;
                }

                _reactor.FrameSize.OnNext(new System.Windows.Size(PreviewGrid.ActualWidth, PreviewGrid.ActualHeight));

                SwitchWebcamPreview();
            }

            PreviewTarget.LayoutUpdated += (S, E) => OnRegionChange();

            _webcamModel
            .ObserveProperty(M => M.SelectedCam)
            .Subscribe(M => SwitchWebcamPreview());

            SwitchWebcamPreview();
        }