protected virtual void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (_dynamicRenderEventPublisher != null)
                {
                    _dynamicRenderEventPublisher.Cancel();
                    _dynamicRenderEventPublisher.Dispose();
                    _dynamicRenderEventPublisher = null;
                }

                if (_vtkRenderWindow != null)
                {
                    _vtkRenderWindow.Dispose();
                    _vtkRenderWindow = null;
                }

                if (_vtkRenderer != null)
                {
                    _vtkRenderer.Dispose();
                    _vtkRenderer = null;
                }

                if (_sceneGraphRoot != null)
                {
                    _sceneGraphRoot.Dispose();
                    _sceneGraphRoot = null;
                }

                if (_imageBuffer != null)
                {
                    _imageBuffer.Dispose();
                    _imageBuffer = null;
                }

                if (_overlayBuffer != null)
                {
                    _overlayBuffer.Dispose();
                    _overlayBuffer = null;
                }

                if (_finalBuffer != null)
                {
                    _finalBuffer.Dispose();
                    _finalBuffer = null;
                }
            }
        }
예제 #2
0
        public override void Stop()
        {
            base.Stop();

            if (_delaySetFileStoreDirectory != null)
            {
                _delaySetFileStoreDirectory.Cancel();
                _delaySetFileStoreDirectory.Dispose();
                _delaySetFileStoreDirectory = null;
            }

            if (_activityMonitor != null)
            {
                _activityMonitor.IsConnectedChanged -= ActivityMonitorOnIsConnectedChanged;
                _activityMonitor.Dispose();
            }
        }
예제 #3
0
        /// <summary>
        /// Called by the view layer so that the <see cref="PrintTileController"/> can process the <paramref name="message"/>.
        /// </summary>
        public bool ProcessMessage(object message)
        {
            // if the user does anything other than mouse tracking, cancel any pending delayed context menu events
            if (!(message is TrackMousePositionMessage))
            {
                // we allow mouse tracking because of the small movement tolerance
                _delayedContextMenuRequestPublisher.Cancel();
            }

            if (message is LostFocusMessage)
            {
                this.CaptureMouseWheelHandler = null;
                return(true);
            }
            else if (message is KeyboardButtonDownPreview)
            {
                //Right now, we can't determine what these keystrokes are going to do, so we just release mouse wheel capture.
                KeyboardButtonDownPreview preview = message as KeyboardButtonDownPreview;
                if (preview.Shortcut.KeyData != XKeys.None)
                {
                    this.CaptureMouseWheelHandler = null;
                }
                return(false);
            }
            else if (message is MouseButtonMessage)
            {
                return(ProcessMouseButtonMessage(message as MouseButtonMessage));
            }
            else if (message is TrackMousePositionMessage)
            {
                return(ProcessTrackMessage(message as TrackMousePositionMessage));
            }

            if (message is MouseWheelMessage)
            {
                bool returnValue = ProcessMouseWheelMessage(message as MouseWheelMessage);
                TrackCurrentPosition();
                return(returnValue);
            }

            if (_tile.PresentationImage != null)
            {
                if (message is KeyboardButtonMessage)
                {
                    bool returnValue = ProcessKeyboardMessage(message as KeyboardButtonMessage);
                    TrackCurrentPosition();
                    return(returnValue);
                }
                else if (message is ReleaseCaptureMessage)
                {
                    ReleaseCapture(true);
                    TrackCurrentPosition();
                    return(true);
                }
                else if (message is MouseLeaveMessage)
                {
                    _tile.PresentationImage.FocussedGraphic = null;
                }
            }
            else
            {
                // We should respond to keyboard even when there's no presentation image.
                if (message is KeyboardButtonMessage)
                {
                    bool returnValue = ProcessKeyboardMessage(message as KeyboardButtonMessage);
                    return(returnValue);
                }
            }
            return(false);
        }