diff --git a/fsl/fslview/gl/glrgbvector.py b/fsl/fslview/gl/glrgbvector.py index 47d89ebc56b153169043f77db20fa2c2f9827c04..a30c5475172caf2943e0dd24c3b7f21f289e01c2 100644 --- a/fsl/fslview/gl/glrgbvector.py +++ b/fsl/fslview/gl/glrgbvector.py @@ -9,6 +9,9 @@ vector images in RGB mode. """ import numpy as np +import OpenGL.GL as gl + + import fsl.fslview.gl as fslgl import fsl.fslview.gl.glvector as glvector @@ -25,6 +28,27 @@ class GLRGBVector(glvector.GLVector): glvector.GLVector.__init__(self, image, display, self.__prefilter) fslgl.glrgbvector_funcs.init(self) + self.displayOpts.addListener('interpolation', + self.name, + self.__interpChanged) + + + def destroy(self): + self.displayOpts.removeListener('interpolation', self.name) + glvector.GLVector.destroy(self) + + + def __interpChanged(self, *a): + + opts = self.displayOpts + + if opts.interpolation == 'none': interp = gl.GL_NEAREST + else: interp = gl.GL_LINEAR + + self.imageTexture.set(interp=interp) + self.updateShaderState() + self.onUpdate() + def compileShaders(self): fslgl.glrgbvector_funcs.compileShaders(self) diff --git a/fsl/fslview/gl/glvector.py b/fsl/fslview/gl/glvector.py index 90c4359e0c8d1c6ab2c431d4d35ab7568ee362d7..cdcb1609147045110eb146ad79fc39dce64667f7 100644 --- a/fsl/fslview/gl/glvector.py +++ b/fsl/fslview/gl/glvector.py @@ -147,10 +147,10 @@ class GLVector(globject.GLImageObject): self.refreshImageTexture() self.updateShaderState() self.onUpdate() - + def imageUpdate(*a): - self.imageTexture.set(volume=opts.volume, - resolution=opts.resolution) + + self.imageTexture.set(resolution=opts.resolution) self.updateShaderState() self.onUpdate() @@ -166,11 +166,8 @@ class GLVector(globject.GLImageObject): opts .addListener('suppressZ', name, cmapUpdate, weak=False) opts .addListener('modulate', name, modUpdate, weak=False) opts .addListener('modThreshold', name, shaderUpdate, weak=False) - opts .addListener('volume', name, imageUpdate, weak=False) opts .addListener('resolution', name, imageUpdate, weak=False) - opts.addSyncChangeListener( - 'volume', name, imageRefresh, weak=False) opts.addSyncChangeListener( 'resolution', name, imageRefresh, weak=False) @@ -264,7 +261,7 @@ class GLVector(globject.GLImageObject): norm = False else: - modOpts = self.displayCtx.getOpts(modImage) + modOpts = self.displayOpts.displayCtx.getOpts(modImage) norm = True texName = '{}_{}_{}_modulate'.format(