def __init__(self, interactor, **args): ListWidget.__init__(self, interactor, **args) self.lut = vtk.vtkLookupTable() self.image_data = {} self.colorMapManager = ColorMapManager(self.lut) self.textMapper = None self.build()
class ColorbarListWidget(ListWidget): def __init__( self, interactor, **args ): ListWidget.__init__( self, interactor, **args ) self.lut = vtk.vtkLookupTable() self.image_data = {} self.colorMapManager = ColorMapManager( self.lut ) self.textMapper = None self.build() def build(self): cmap_names = self.colorMapManager.getColormapNames() dy = 1.0 / len( cmap_names ) for cmap_index, cmap_name in enumerate( cmap_names ): self.getButton( name=cmap_name, position = ( 1.0, 1.0 - dy * cmap_index ) ) def getButtonRepresentation(self, **args): buttonRepresentation = vtk.vtkTexturedButtonRepresentation2D() cmap_name = args.get( 'name', None ) button_id = args.get( 'id', cmap_name ) if cmap_name: buttonRepresentation.SetNumberOfStates(2) for image_index in range( 2 ): image_data = self.getColorbarImage( cmap_name, invert=(image_index==1) ) buttonRepresentation.SetButtonTexture( image_index, image_data ) # labels = args.get( 'labels', None ) # if labels: # if self.textMapper == None: # size = args.get( 'size', [ 30.0, 30.0 ] ) # self.textMapper = vtk.vtkFreeTypeUtilities() # nstates = len( labels ) # buttonRepresentation.SetNumberOfStates(nstates) # tprop = vtk.vtkTextProperty() # for label_index in range( nstates ): # texture = vtk.vtkImageData() # label = labels[label_index] # if button_id == None: button_id = label # self.textRenderer.RenderString( tprop, label, 0, 0, texture ) # buttonRepresentation.SetButtonTexture( label_index, texture ) return button_id, buttonRepresentation def getColorbarImage(self, cmap_name, **args ): cb_width = args.get( 'width', 40 ) invert = args.get('invert',False) cmap_data = self.colorMapManager.load_array( cmap_name ) * 255.9 if invert: cmap_data = cmap_data[::-1,:] cmap_data = np.expand_dims( cmap_data[:,0:3].astype('uint8'), 0 ) cmap_data = np.tile( cmap_data, ( cb_width, 1, 1 ) ) self.image_data[ cmap_name + ( ".inv" if invert else '' ) ] = cmap_data image = vtk.vtkImageData() image.SetDimensions(256,cb_width,1) vtkdata = vtk.vtkUnsignedCharArray() vtkdata.SetNumberOfComponents( 3 ) vtkdata.SetNumberOfTuples( cb_width * 256 ) vtkdata.SetVoidArray( cmap_data, cmap_data.size, 1 ) ptdata = image.GetPointData() ptdata.SetScalars(vtkdata) return image
def getColormapManager( self, **args ): cmap_index = args.get('index',0) name = args.get('name',None) invert = args.get('invert',None) smooth = args.get('smooth',None) cmap_mgr = self.colormapManagers.get( cmap_index, None ) if cmap_mgr == None: lut = vtk.vtkLookupTable() cmap_mgr = ColorMapManager( lut ) self.colormapManagers[cmap_index] = cmap_mgr if (invert <> None): cmap_mgr.invertColormap = invert if (smooth <> None): cmap_mgr.smoothColormap = smooth if name: cmap_mgr.load_lut( name ) return cmap_mgr
def __init__( self, interactor, **args ): ListWidget.__init__( self, interactor, **args ) self.lut = vtk.vtkLookupTable() self.image_data = {} self.colorMapManager = ColorMapManager( self.lut ) self.textMapper = None self.build()
def getColormapManager(self, **args): cmap_index = args.get('index', 0) name = args.get('name', None) invert = args.get('invert', None) smooth = args.get('smooth', None) cmap_mgr = self.colormapManagers.get(cmap_index, None) if cmap_mgr == None: lut = vtk.vtkLookupTable() cmap_mgr = ColorMapManager(lut) self.colormapManagers[cmap_index] = cmap_mgr if (invert <> None): cmap_mgr.invertColormap = invert if (smooth <> None): cmap_mgr.smoothColormap = smooth if name: cmap_mgr.load_lut(name) return cmap_mgr
class ColorbarListWidget(ListWidget): def __init__(self, interactor, **args): ListWidget.__init__(self, interactor, **args) self.lut = vtk.vtkLookupTable() self.image_data = {} self.colorMapManager = ColorMapManager(self.lut) self.textMapper = None self.build() def build(self): cmap_names = self.colorMapManager.getColormapNames() dy = 1.0 / len(cmap_names) for cmap_index, cmap_name in enumerate(cmap_names): self.getButton(name=cmap_name, position=(1.0, 1.0 - dy * cmap_index)) def getButtonRepresentation(self, **args): buttonRepresentation = vtk.vtkTexturedButtonRepresentation2D() cmap_name = args.get('name', None) button_id = args.get('id', cmap_name) if cmap_name: buttonRepresentation.SetNumberOfStates(2) for image_index in range(2): image_data = self.getColorbarImage(cmap_name, invert=(image_index == 1)) buttonRepresentation.SetButtonTexture(image_index, image_data) # labels = args.get( 'labels', None ) # if labels: # if self.textMapper == None: # size = args.get( 'size', [ 30.0, 30.0 ] ) # self.textMapper = vtk.vtkFreeTypeUtilities() # nstates = len( labels ) # buttonRepresentation.SetNumberOfStates(nstates) # tprop = vtk.vtkTextProperty() # for label_index in range( nstates ): # texture = vtk.vtkImageData() # label = labels[label_index] # if button_id == None: button_id = label # self.textRenderer.RenderString( tprop, label, 0, 0, texture ) # buttonRepresentation.SetButtonTexture( label_index, texture ) return button_id, buttonRepresentation def getColorbarImage(self, cmap_name, **args): cb_width = args.get('width', 40) invert = args.get('invert', False) cmap_data = self.colorMapManager.load_array(cmap_name) * 255.9 if invert: cmap_data = cmap_data[::-1, :] cmap_data = np.expand_dims(cmap_data[:, 0:3].astype('uint8'), 0) cmap_data = np.tile(cmap_data, (cb_width, 1, 1)) self.image_data[cmap_name + (".inv" if invert else '')] = cmap_data image = vtk.vtkImageData() image.SetDimensions(256, cb_width, 1) vtkdata = vtk.vtkUnsignedCharArray() vtkdata.SetNumberOfComponents(3) vtkdata.SetNumberOfTuples(cb_width * 256) vtkdata.SetVoidArray(cmap_data, cmap_data.size, 1) ptdata = image.GetPointData() ptdata.SetScalars(vtkdata) return image