diff --git a/fsl/fsleyes/displaycontext/lightboxopts.py b/fsl/fsleyes/displaycontext/lightboxopts.py index c8cb53c76a47fc72b0fde3d650782ef8a55c2b24..5189ec75790e175d9ef5e4df70d2c4d845753952 100644 --- a/fsl/fsleyes/displaycontext/lightboxopts.py +++ b/fsl/fsleyes/displaycontext/lightboxopts.py @@ -8,12 +8,17 @@ by :class:`.LightBoxPanel` instances for managing their display settings. """ + +import logging import copy import sceneopts import canvasopts +log = logging.getLogger(__name__) + + class LightBoxOpts(sceneopts.SceneOpts): """The ``LightBoxOpts`` class contains display settings for the :class:`.LightBoxPanel` class. @@ -43,3 +48,32 @@ class LightBoxOpts(sceneopts.SceneOpts): """ sceneopts.SceneOpts.__init__(self, *args, **kwargs) self.setConstraint('zoom', 'minval', 10) + + + def _onPerformanceChange(self, *a): + """Overrides :meth:`.SceneOpts._onPerformanceChange`. Changes the + values of the :attr:`renderMode` and :attr:`resolutionLimit` + properties according to the performance setting. + """ + + if self.performance == 4: + self.renderMode = 'onscreen' + self.resolutionLimit = 0 + + elif self.performance == 3: + self.renderMode = 'prerender' + self.resolutionLimit = 0 + + elif self.performance == 2: + self.renderMode = 'prerender' + self.resolutionLimit = 1 + + elif self.performance == 1: + self.renderMode = 'prerender' + self.resolutionLimit = 2 + + log.debug('Performance settings changed: ' + 'renderMode={}, ' + 'resolutionLimit={}'.format( + self.renderMode, + self.resolutionLimit)) diff --git a/fsl/fsleyes/displaycontext/orthoopts.py b/fsl/fsleyes/displaycontext/orthoopts.py index 942b4a53e44ff19785c786c16e8017f35c2a92ad..96927442008db68a37af5f2cd9de90a7fcc07356 100644 --- a/fsl/fsleyes/displaycontext/orthoopts.py +++ b/fsl/fsleyes/displaycontext/orthoopts.py @@ -9,6 +9,7 @@ settings used by the :class:`.OrthoPanel` class. """ +import logging import copy import props @@ -16,6 +17,9 @@ import props import sceneopts +log = logging.getLogger(__name__) + + class OrthoOpts(sceneopts.SceneOpts): """The ``OrthoOpts`` class is used by :class:`.OrthoPanel` instances to manage their display settings. @@ -88,3 +92,32 @@ class OrthoOpts(sceneopts.SceneOpts): self.xzoom = self.zoom self.yzoom = self.zoom self.zzoom = self.zoom + + + def _onPerformanceChange(self, *a): + """Overrides :meth:`.SceneOpts._onPerformanceChange`. Changes the + values of the :attr:`renderMode` and :attr:`resolutionLimit` + properties according to the performance setting. + """ + + if self.performance == 4: + self.renderMode = 'onscreen' + self.resolutionLimit = 0 + + elif self.performance == 3: + self.renderMode = 'offscreen' + self.resolutionLimit = 0 + + elif self.performance == 2: + self.renderMode = 'prerender' + self.resolutionLimit = 0 + + elif self.performance == 1: + self.renderMode = 'prerender' + self.resolutionLimit = 1 + + log.debug('Performance settings changed: ' + 'renderMode={}, ' + 'resolutionLimit={}'.format( + self.renderMode, + self.resolutionLimit)) diff --git a/fsl/fsleyes/displaycontext/sceneopts.py b/fsl/fsleyes/displaycontext/sceneopts.py index 6ef975fe5c220dc66bdda2d1bdd0958e5aed990f..9ad77c9ef9f5dfd56d8cb0965eb1c5b42dfc9508 100644 --- a/fsl/fsleyes/displaycontext/sceneopts.py +++ b/fsl/fsleyes/displaycontext/sceneopts.py @@ -76,37 +76,17 @@ class SceneOpts(props.HasProperties): """ name = '{}_{}'.format(type(self).__name__, id(self)) - self.addListener('performance', name, self.__onPerformanceChange) + self.addListener('performance', name, self._onPerformanceChange) - self.__onPerformanceChange() + self._onPerformanceChange() - - def __onPerformanceChange(self, *a): + + def _onPerformanceChange(self, *a): """Called when the :attr:`performance` property changes. - Changes the values of the :attr:`renderMode` and and - :attr:`resolutionLimit` properties accoridng to the performance - setting. - """ - - if self.performance == 4: - self.renderMode = 'onscreen' - self.resolutionLimit = 0 - - elif self.performance == 3: - self.renderMode = 'offscreen' - self.resolutionLimit = 0 - - elif self.performance == 2: - self.renderMode = 'prerender' - self.resolutionLimit = 0 - - elif self.performance == 1: - self.renderMode = 'prerender' - self.resolutionLimit = 1 - - log.debug('Performance settings changed: ' - 'renderMode={}, ' - 'resolutionLimit={}'.format( - self.renderMode, - self.resolutionLimit)) + This method must be overridden by sub-classes to change the values of + the :attr:`renderMode` and :attr:`resolutionLimit` properties + according to the new performance setting. + """ + raise NotImplementedError('The _onPerformanceChange method must' + 'be implemented by sub-classes') diff --git a/fsl/fsleyes/gl/lightboxcanvas.py b/fsl/fsleyes/gl/lightboxcanvas.py index 3a6a62721d5a998b8844593d2e2aeba7a0ba8ff9..86b48e6974b11cea1772848ef855d04d7d2ac294 100644 --- a/fsl/fsleyes/gl/lightboxcanvas.py +++ b/fsl/fsleyes/gl/lightboxcanvas.py @@ -298,7 +298,7 @@ class LightBoxCanvas(slicecanvas.SliceCanvas): self._offscreenRenderTexture.setSize(768, 768) - # The LightBoxCanvas handles re-render mode + # The LightBoxCanvas handles pre-render mode # the same way as the SliceCanvas - a separate # RenderTextureStack for eacn globject elif self.renderMode == 'prerender':