def __init__(self, sliceWidget): super(ThresholdEffectTool,self).__init__(sliceWidget) # create a logic instance to do the non-gui work self.logic = ThresholdEffectLogic(self.sliceWidget.sliceLogic()) self.logic.undoRedo = self.undoRedo # interaction state variables self.min = 0 self.max = 0 # class instances self.lut = None self.thresh = None self.map = None # feedback actor self.cursorDummyImage = vtk.vtkImageData() self.cursorDummyImage.AllocateScalars() self.cursorMapper = vtk.vtkImageMapper() self.cursorMapper.SetInput( self.cursorDummyImage ) self.cursorActor = vtk.vtkActor2D() self.cursorActor.VisibilityOff() self.cursorActor.SetMapper( self.cursorMapper ) self.cursorMapper.SetColorWindow( 255 ) self.cursorMapper.SetColorLevel( 128 ) self.actors.append( self.cursorActor ) self.renderer.AddActor2D( self.cursorActor )
def __init__(self, sliceWidget): super(ThresholdEffectTool, self).__init__(sliceWidget) # create a logic instance to do the non-gui work self.logic = ThresholdEffectLogic(self.sliceWidget.sliceLogic()) self.logic.undoRedo = self.undoRedo # interaction state variables self.min = 0 self.max = 0 # class instances self.lut = None self.thresh = None self.map = None # feedback actor self.cursorDummyImage = vtk.vtkImageData() self.cursorDummyImage.AllocateScalars() self.cursorMapper = vtk.vtkImageMapper() self.cursorMapper.SetInput(self.cursorDummyImage) self.cursorActor = vtk.vtkActor2D() self.cursorActor.VisibilityOff() self.cursorActor.SetMapper(self.cursorMapper) self.cursorMapper.SetColorWindow(255) self.cursorMapper.SetColorLevel(128) self.actors.append(self.cursorActor) self.renderer.AddActor2D(self.cursorActor)
def addWebActor(self): self.webView = qt.QWebView() self.webView.setWindowFlags(0x800) self.webView.setStyleSheet('background:transparent;') w, h = self.sliceView.width,self.sliceView.height self.qImage = qt.QImage(w, h, qt.QImage.Format_ARGB32) self.vtkImage = vtk.vtkImageData() self.mapper = vtk.vtkImageMapper() self.mapper.SetColorLevel(128) self.mapper.SetColorWindow(255) self.mapper.SetInput(self.vtkImage) self.actor2D = vtk.vtkActor2D() self.actor2D.SetMapper(self.mapper) self.imageActor = vtk.vtkImageActor() #self.imageActor.SetPosition(0,-1000,0) self.renderWindow = self.sliceView.renderWindow() self.renderer = self.renderWindow.GetRenderers().GetItemAsObject(0) self.renderer.AddActor2D(self.actor2D) globals()['slicer'].ia = self.imageActor self.webView.connect('loadFinished(bool)', lambda worked : self.onLoadFinished(worked) ) #self.webView.page().connect('repaintRequested(QRect)', lambda rect : onLoadFinished(rect, self.webView, self.qImage) ) self.style = self.sliceView.interactor() events = ("ModifiedEvent", "MouseMoveEvent", "EnterEvent", "LeaveEvent",) for event in events: tag = self.style.AddObserver(event, self.processEvent) self.observerTags.append([self.style,tag])
def __init__(self, parent=None, width=400, height=400, showWidget=False, scale=False): super(LayerReveal, self).__init__() self.width = width self.height = height self.showWidget = showWidget self.scale = scale self.renderer = None # utility Qt instances for use in methods self.gray = qt.QColor() self.gray.setRedF(0.5) self.gray.setGreenF(0.5) self.gray.setBlueF(0.5) # a painter to use for various jobs self.painter = qt.QPainter() # make a qwidget display if self.showWidget: self.frame = qt.QFrame(parent) mw = slicer.util.mainWindow() self.frame.setGeometry(mw.x, mw.y, self.width, self.height) self.frameLayout = qt.QVBoxLayout(self.frame) self.label = qt.QLabel() self.frameLayout.addWidget(self.label) self.frame.show() # make an image actor in the slice view self.vtkImage = vtk.vtkImageData() self.mrmlUtils = slicer.qMRMLUtils() self.imageMapper = vtk.vtkImageMapper() self.imageMapper.SetColorLevel(128) self.imageMapper.SetColorWindow(255) if vtk.VTK_MAJOR_VERSION <= 5: self.imageMapper.SetInput(self.vtkImage) else: self.imageMapper.SetInputData(self.vtkImage) self.actor2D = vtk.vtkActor2D() self.actor2D.SetMapper(self.imageMapper)
def __init__(self,parent=None,width=400,height=400,showWidget=False,scale=False): super(LayerReveal,self).__init__() self.width = width self.height = height self.showWidget = showWidget self.scale = scale self.renderer = None # utility Qt instances for use in methods self.gray = qt.QColor() self.gray.setRedF(0.5) self.gray.setGreenF(0.5) self.gray.setBlueF(0.5) # a painter to use for various jobs self.painter = qt.QPainter() # make a qwidget display if self.showWidget: self.frame = qt.QFrame(parent) mw = slicer.util.mainWindow() self.frame.setGeometry(mw.x, mw.y, self.width, self.height) self.frameLayout = qt.QVBoxLayout(self.frame) self.label = qt.QLabel() self.frameLayout.addWidget(self.label) self.frame.show() # make an image actor in the slice view self.vtkImage = vtk.vtkImageData() self.mrmlUtils = slicer.qMRMLUtils() self.imageMapper = vtk.vtkImageMapper() self.imageMapper.SetColorLevel(128) self.imageMapper.SetColorWindow(255) if vtk.VTK_MAJOR_VERSION <= 5: self.imageMapper.SetInput(self.vtkImage) else: self.imageMapper.SetInputData(self.vtkImage) self.actor2D = vtk.vtkActor2D() self.actor2D.SetMapper(self.imageMapper)
def __init__(self, sliceWidget): self.initialized = False super(IsobrushEffectTool, self).__init__(sliceWidget) # create a logic instance to do the non-gui work self.logic = IsobrushEffectLogic(self.sliceWidget.sliceLogic()) # interaction state variables - track if painting or not self.actionState = None self.mode = 'isograph' # TODO: could be a node setting controlled by gui # # cursor actor (paint preview) # self.cursorMapper = vtk.vtkImageMapper() self.cursorDummyImage = vtk.vtkImageData() self.cursorDummyImage.AllocateScalars(vtk.VTK_UNSIGNED_INT, 1) self.cursorMapper.SetInputData(self.cursorDummyImage) self.cursorActor = vtk.vtkActor2D() self.cursorActor.VisibilityOff() self.cursorActor.SetMapper(self.cursorMapper) self.cursorMapper.SetColorWindow(255) self.cursorMapper.SetColorLevel(128) self.actors.append(self.cursorActor) self.renderer.AddActor2D(self.cursorActor) # # Shader computation # - need to import class from module here since it may not be in sys.path # at startup time # - uses dummy render window for framebuffer object context # try: from vtkSlicerShadedActorModuleLogicPython import vtkOpenGLShaderComputation from vtkSlicerShadedActorModuleLogicPython import vtkOpenGLTextureImage except ImportError: import vtkAddon vtkOpenGLShaderComputation = vtkAddon.vtkOpenGLShaderComputation vtkOpenGLTextureImage = vtkAddon.vtkOpenGLTextureImage self.shaderComputation = vtkOpenGLShaderComputation() self.backgroundTextureImage = vtkOpenGLTextureImage() self.labelTextureImage = vtkOpenGLTextureImage() self.resultImageTexture = vtkOpenGLTextureImage() self.iterationImageTexture = vtkOpenGLTextureImage() self.backgroundTextureImage.SetShaderComputation( self.shaderComputation) self.labelTextureImage.SetShaderComputation(self.shaderComputation) self.resultImageTexture.SetShaderComputation(self.shaderComputation) self.iterationImageTexture.SetShaderComputation(self.shaderComputation) self.shaderComputation.SetVertexShaderSource(""" #version 120 attribute vec3 vertexAttribute; attribute vec2 textureCoordinateAttribute; varying vec3 interpolatedTextureCoordinate; void main() { interpolatedTextureCoordinate = vec3(textureCoordinateAttribute, .5); gl_Position = vec4(vertexAttribute, 1.); } """) self.initialized = True self.previewOn()
def __init__(self, sliceWidget): self.initialized = False super(IsobrushEffectTool,self).__init__(sliceWidget) # create a logic instance to do the non-gui work self.logic = IsobrushEffectLogic(self.sliceWidget.sliceLogic()) # interaction state variables - track if painting or not self.actionState = None # # cursor actor (paint preview) # self.cursorMapper = vtk.vtkImageMapper() self.cursorDummyImage = vtk.vtkImageData() self.cursorDummyImage.AllocateScalars(vtk.VTK_UNSIGNED_INT, 1) self.cursorMapper.SetInputData( self.cursorDummyImage ) self.cursorActor = vtk.vtkActor2D() self.cursorActor.VisibilityOff() self.cursorActor.SetMapper( self.cursorMapper ) self.cursorMapper.SetColorWindow( 255 ) self.cursorMapper.SetColorLevel( 128 ) self.actors.append( self.cursorActor ) self.renderer.AddActor2D( self.cursorActor ) # # Shader computation # - need to import class from module here since it may not be in sys.path # at startup time # - uses dummy render window for framebuffer object context # try: from vtkSlicerShadedActorModuleLogicPython import vtkOpenGLShaderComputation from vtkSlicerShadedActorModuleLogicPython import vtkOpenGLTextureImage except ImportError: import vtkAddon vtkOpenGLShaderComputation=vtkAddon.vtkOpenGLShaderComputation vtkOpenGLTextureImage=vtkAddon.vtkOpenGLTextureImage self.shaderComputation=vtkOpenGLShaderComputation() self.backgroundTextureImage=vtkOpenGLTextureImage() self.labelTextureImage=vtkOpenGLTextureImage() self.resultImageTexture=vtkOpenGLTextureImage() self.iterationImageTexture=vtkOpenGLTextureImage() self.backgroundTextureImage.SetShaderComputation(self.shaderComputation) self.labelTextureImage.SetShaderComputation(self.shaderComputation) self.resultImageTexture.SetShaderComputation(self.shaderComputation) self.iterationImageTexture.SetShaderComputation(self.shaderComputation) self.shaderComputation.SetVertexShaderSource(""" #version 120 attribute vec3 vertexAttribute; attribute vec2 textureCoordinateAttribute; varying vec3 interpolatedTextureCoordinate; void main() { interpolatedTextureCoordinate = vec3(textureCoordinateAttribute, .5); gl_Position = vec4(vertexAttribute, 1.); } """) self.initialized = True self.previewOn()
def __init__(self,parent=None,width=400,height=400,showWidget=False,scale=False): super(ROIManager,self).__init__() self.width = width self.height = height self.showWidget = showWidget self.scale = scale self.renderer = None self.ROIRadius = 20.0 self.minValueBG=0 self.maxValueBG=0 self.minValueFG=0 self.maxValueFG=0 self.probeWidget = None self.drawOverlay = 0 # utility Qt instances for use in methods self.gray = qt.QColor() self.gray.setRedF(0.5) self.gray.setGreenF(0.5) self.gray.setBlueF(0.5) # a painter to use for various jobs self.painter = qt.QPainter() # make a qwidget display if self.showWidget: self.frame = qt.QFrame(parent) mw = slicer.util.mainWindow() self.frame.setGeometry(mw.x, mw.y, self.width, self.height) self.frameLayout = qt.QVBoxLayout(self.frame) self.label = qt.QLabel() self.frameLayout.addWidget(self.label) self.frame.show() # make an image actor in the slice view self.vtkImage = vtk.vtkImageData() self.mrmlUtils = slicer.qMRMLUtils() self.imageMapper = vtk.vtkImageMapper() self.imageMapper.SetColorLevel(128) self.imageMapper.SetColorWindow(255) if vtk.VTK_MAJOR_VERSION <= 5: self.imageMapper.SetInput(self.vtkImage) else: self.imageMapper.SetInputData(self.vtkImage) self.actor2D = vtk.vtkActor2D() self.actor2D.SetMapper(self.imageMapper) # make a circle actor self.circle = vtk.vtkRegularPolygonSource() self.circle.SetNumberOfSides(50) self.circle.SetRadius(5) self.circle.SetCenter(0,0,0) self.circle.GeneratePolylineOn() self.circle.GeneratePolygonOff() self.circle.Update() self.mapper = vtk.vtkPolyDataMapper2D() self.actor = vtk.vtkActor2D() if vtk.VTK_MAJOR_VERSION <= 5: self.mapper.SetInput(self.circle.GetOutput()) else: self.mapper.SetInputConnection(self.circle.GetOutputPort()) self.actor.SetMapper(self.mapper) property_ = self.actor.GetProperty() property_.SetColor(1,1,0) property_.SetLineWidth(1)