public WebcamOverlay(WebcamModel WebcamModel, Settings Settings) : base(true) { _webcamModel = WebcamModel; _settings = Settings.WebcamOverlay; _webcamCapture = WebcamModel.InitCapture(); }
public IBitmapImage Capture(bool IncludeCursor) { var webcamCapture = _webcamModel.InitCapture(); try { return(webcamCapture.Value?.Capture(GraphicsBitmapLoader.Instance)); } finally { _webcamModel.ReleaseCapture(); } }
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(); }
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(); }