Class Volume3DInt

All Implemented Interfaces:
java.awt.datatransfer.Transferable, java.lang.Comparable<InterfaceShape>, AttributeListener, AttributeObject, InterfaceObject, PersistentObject, ColourMapListener, VariableObject, PopupMenuObject, NamedObject, InterfaceQueryObject, InterfaceShapeQueryObject, ShapeListener, VertexDataColumnListener, InterfaceTransferable, TreeObject, CleanableObject, XMLObject, IconObject, org.jogamp.java3d.GeometryUpdater, org.jogamp.java3d.ImageComponent3D.Updater
Direct Known Subclasses:
TensorVolume3DInt, Volume4DInt, VolumeSet3DInt

public class Volume3DInt
extends Shape3DInt
implements ColourMapListener, org.jogamp.java3d.ImageComponent3D.Updater, ShapeListener
Class acting as interface to a volume shape, as defined by the Grid3D geometry class. Volume3D provides a Texture3D node and also defines the appearance of the voxel set in terms of colour or intensity mapping.
Since:
1.0
Version:
1.0
Author:
Andrew Reid
  • Field Details

    • renderer

      protected Volume3DRenderer renderer
    • textureSet

      protected boolean textureSet
    • updater

      protected org.jogamp.java3d.ImageComponent3D.Updater updater
    • dataFile

      protected java.io.File dataFile
    • loader

      protected VolumeFileLoader loader
    • intRect3D

      protected ShapeSceneNode intRect3D
    • colour_models

      protected java.util.HashMap<java.lang.String,​WindowedColourModel> colour_models
    • masks

      protected java.util.HashMap<java.lang.String,​boolean[][][]> masks
    • apply_mask

      protected java.util.HashMap<java.lang.String,​java.lang.Boolean> apply_mask
    • composite_alphas

      protected java.util.HashMap<java.lang.String,​java.lang.Double> composite_alphas
    • show_in_composite

      protected java.util.HashMap<java.lang.String,​java.lang.Boolean> show_in_composite
    • composite_column_order

      protected java.util.ArrayList<java.lang.String> composite_column_order
    • group_node

      protected org.jogamp.java3d.BranchGroup group_node
    • render_node

      protected org.jogamp.java3d.BranchGroup render_node
    • box_node

      protected org.jogamp.java3d.BranchGroup box_node
    • xml_is_reading_header

      protected boolean xml_is_reading_header
      Sets the variable's values with the values object, which must be one of the following types:
      • ArrayList<BufferedImage[]>
      • DataBufferDouble
      If not, a value of false is returned.
    • xml_is_reading_composite_order

      protected boolean xml_is_reading_composite_order
    • xml_composite_column_order

      protected java.util.ArrayList<java.lang.String> xml_composite_column_order
    • xml_composite_alphas

      protected java.util.HashMap<java.lang.String,​java.lang.Double> xml_composite_alphas
    • xml_show_in_composite

      protected java.util.HashMap<java.lang.String,​java.lang.Boolean> xml_show_in_composite
  • Constructor Details

    • Volume3DInt

      public Volume3DInt()
    • Volume3DInt

      public Volume3DInt​(Grid3D g)
    • Volume3DInt

      public Volume3DInt​(Grid3D g, ColourMap cmap)
  • Method Details

    • updateDataColumns

      protected void updateDataColumns()
      Overrides:
      updateDataColumns in class InterfaceShape
    • renameVertexDataColumn

      public boolean renameVertexDataColumn​(java.lang.String old_name, java.lang.String new_name)
      Description copied from class: InterfaceShape
      Renames the current column.
      Overrides:
      renameVertexDataColumn in class InterfaceShape
      Returns:
      false if a column named new_name already exists, or no column named old_name exists; true otherwise
    • setCompositeIndex

      public void setCompositeIndex​(java.lang.String column, int index)
      Adjusts the order of column column in the composite rendering stack.
      Parameters:
      column -
      index -
    • setCompositeIndex

      public void setCompositeIndex​(java.lang.String column, int index, boolean notify)
      Adjusts the order of column column in the composite rendering stack.
      Parameters:
      column -
      index -
    • getCompositeOrderedColumns

      public java.util.ArrayList<java.lang.String> getCompositeOrderedColumns()
    • getGeometryInstance

      public Shape getGeometryInstance()
      Description copied from class: InterfaceShape
      Returns an instance of this InterfaceShape's geometry class.
      Overrides:
      getGeometryInstance in class Shape3DInt
      Returns:
    • setParentSet

      public void setParentSet​(ShapeSet set)
      Overrides InterfaceShape.setParentSet to add itself as a listener to the parent
      Overrides:
      setParentSet in class InterfaceShape
    • getClosestVertex

      public int getClosestVertex​(org.jogamp.vecmath.Point3f point)
      Description copied from class: Shape3DInt
      Returns the index of the vertex of this shape which is closest to point.
      Overrides:
      getClosestVertex in class Shape3DInt
      Returns:
    • shapeUpdated

      public void shapeUpdated​(ShapeEvent e)
      Description copied from interface: ShapeListener
      A shape that this object is listening to has been updated. The specific type of event is defined by ShapeEvent.EventType.
      Specified by:
      shapeUpdated in interface ShapeListener
    • setIcon

      protected void setIcon()
      Overrides:
      setIcon in class Shape3DInt
    • init

      protected void init()
      Overrides:
      init in class Shape3DInt
    • getMasks

      public java.util.HashMap<java.lang.String,​boolean[][][]> getMasks()
    • addVertexData

      public boolean addVertexData​(java.lang.String column, java.util.ArrayList<MguiNumber> data, NameMap nmap, ColourMap cmap)
      Description copied from class: InterfaceShape
      Adds vertex-wise data to this shape.
      Overrides:
      addVertexData in class InterfaceShape
      Parameters:
      column - The key by which this column is to be referred
      data - The values for this column
      nmap - Name map [optionally null] associating integer keys to names
      cmap - Colour map [optionally null] associating values to colours
      Returns:
    • addVertexData

      public boolean addVertexData​(VertexDataColumn column)
      Description copied from class: InterfaceShape
      Add a vertex-wise data column of type DataBuffer.TYPE_DOUBLE.
      Overrides:
      addVertexData in class InterfaceShape
    • addVertexData

      public boolean addVertexData​(java.lang.String column, int data_type)
      Description copied from class: InterfaceShape
      Add a vertex-wise data column of type dataType, which must be one of DataBuffer.TYPE_DOUBLE, DataBuffer.TYPE_FLOAT, or DataBuffer.TYPE_INT. If an incorrect type is specified, this method creates a column of type DataBuffer.TYPE_DOUBLE.
      Overrides:
      addVertexData in class InterfaceShape
      Parameters:
      column - The key associated with the data column
      data_type - The data type with which to store the data
    • removeVertexData

      public void removeVertexData​(java.lang.String column)
      Description copied from class: InterfaceShape
      Remove a vertex data column from this shape. This also removes all associated data, and calls listeners to update, for instance, tree nodes.
      Overrides:
      removeVertexData in class InterfaceShape
    • isComposite

      public void isComposite​(boolean show)
      Set the flag which determines whether this volume should render as a composite of its columns show == true, or as the current column only show == false.
      Parameters:
      show -
    • isComposite

      public void isComposite​(boolean show, boolean update)
      Set the flag which determines whether this volume should render as a composite of its columns show == true, or as the current column only show == false.
      Parameters:
      show -
      update - Whether to notify attribute listeners
    • isComposite

      public boolean isComposite()
      Determines whether this volume is current set to render as a composite of its columns true, or as the current column only false.
    • setCompositeAlpha

      public void setCompositeAlpha​(java.lang.String column, double value)
      Sets the alpha value for column, which determines its transparency if composite mode is set. Also fires a ShapeEvent.
      Parameters:
      key -
      value -
    • setCompositeAlpha

      public void setCompositeAlpha​(java.lang.String column, double value, boolean update)
      Sets the alpha value for column, which determines its transparency if composite mode is set.
      Parameters:
      key -
      value -
      update - Whether to notify listeners of the change
    • getCompositeAlpha

      public double getCompositeAlpha​(java.lang.String column)
    • showInComposite

      public void showInComposite​(java.lang.String column, boolean show)
      Sets whether to include column's data in the composite image
      Parameters:
      column -
      show -
    • showInComposite

      public void showInComposite​(java.lang.String column, boolean show, boolean update)
      Sets whether to include column's data in the composite image.
      Parameters:
      column -
      show -
      update - Whether to notify this volume's listeners
    • showInComposite

      public boolean showInComposite​(java.lang.String column)
      Returns whether column's data is to be included in the composite image.
      Parameters:
      column -
      Returns:
    • addMask

      public void addMask​(java.lang.String name, boolean[][][] mask)
      Adds a boolean mask to this volume. Set = true by default.
      Parameters:
      name -
      mask -
    • addMask

      public void addMask​(java.lang.String name, boolean[][][] mask, boolean apply)
      Adds a boolean mask to this volume.
      Parameters:
      name -
      mask -
      set -
    • clearMask

      public void clearMask​(java.lang.String name)
    • invertMask

      public void invertMask​(java.lang.String name)
    • isMaskedAtPoint

      public boolean isMaskedAtPoint​(org.jogamp.vecmath.Point3f point)
      Determines whether the voxel enclosing point is masked.
      Parameters:
      p -
      Returns:
    • isMaskedAtVoxel

      public boolean isMaskedAtVoxel​(int[] voxel)
      Determines whether voxel is masked by any active mask
      Parameters:
      voxel -
      Returns:
    • isMaskedAtVoxel

      public boolean isMaskedAtVoxel​(int i, int j, int k)
      Determines whether voxel is masked by any active mask
      Parameters:
      voxel -
      Returns:
    • getCenterOfVoxel

      public org.jogamp.vecmath.Point3f getCenterOfVoxel​(int i, int j, int k)
    • isMaskApplied

      public boolean isMaskApplied​(java.lang.String name)
    • getMaskNames

      public java.util.ArrayList<java.lang.String> getMaskNames()
      Returns an ordered list of mask names for this volume.
      Returns:
    • getEffectiveMask

      public boolean[][][] getEffectiveMask()
      Returns the union of all masks which are currently set.
      Returns:
    • setMaskApplied

      public void setMaskApplied​(java.lang.String name, boolean b)
    • removeMask

      public void removeMask​(java.lang.String name)
    • getMask

      public boolean[][][] getMask​(java.lang.String name)
    • setMask

      public void setMask​(java.lang.String name, boolean show)
    • setMask

      public void setMask​(java.lang.String name, boolean[][][] mask)
    • unionMaskWithVolume

      public boolean unionMaskWithVolume​(java.lang.String name, Volume3DInt volume)
      Sets mask name to a new mask which is a union between its current state and the mask specified by volume, where all zero-valued voxels are masked.
      Parameters:
      name -
      volume -
      column - The data column of volume containing the mask
      Returns:
    • unionMaskWithVolume

      public boolean unionMaskWithVolume​(java.lang.String name, Volume3DInt volume, java.lang.String column)
      Sets mask name to a new mask which is a union between its current state and the mask specified by volume, where all zero-valued voxels are masked.
      Parameters:
      name -
      volume -
      column - The data column of volume containing the mask
      Returns:
    • unionMask

      public boolean unionMask​(java.lang.String name, boolean[][][] to_merge)
    • setAllMasks

      public void setAllMasks​(boolean show)
    • applyMask

      public void applyMask()
      Applies the mask specified in params to the data in this volume. NOTE: temporary until I can get the updater to work. This function reloads data from the file filter and applies the given mask to it, whereas I'd prefer to update referenced data directly, since this is much quicker and more seamless.
      Parameters:
      params -
    • setUpdater

      public void setUpdater​(Volume3DUpdater u)
      Sets an updater class, descended from Volume3DUpdater, with which to update the data in this volume's grid. All updates to Volume3DInt data for objects with live scene nodes must be performed using such an updater. Grid data must be set by reference (isByRef() = true) in order to set an updater.
      Parameters:
      u - Volume3DUpdater with which to update this volume's data
    • update

      public void update​(Volume3DTexture.UpdateTextureType type)
      Updates this volume's grid data with the current Volume3DUpdater object. Does nothing if this Volume3DInt is not set by reference (isByRef() = true), or if no updater is currently set. Updaters can be set using the setUpdater method.
      Parameters:
      type - The type of update to perform: Values only, Colour map only, or both
    • isByRef

      public boolean isByRef()
    • getGrid

      public Grid3D getGrid()
      Returns the Grid3D associated with this volume.
      Returns:
    • getVertexIndex

      public int getVertexIndex​(int[] voxel)
      Obtains an absolute (vertex) index for the specified voxel indices
      Parameters:
      voxel -
      Returns:
    • getVertexIndex

      public int getVertexIndex​(int i, int j, int k)
      Obtains an absolute (vertex) index for the specified voxel indices
      Parameters:
      voxel -
      Returns:
    • getDatumAtVoxel

      public MguiNumber getDatumAtVoxel​(int[] voxel)
      Returns the datum from the current column at index.
      Parameters:
      index -
      Returns:
    • getDatumAtVoxel

      public MguiNumber getDatumAtVoxel​(java.lang.String column, int i, int j, int k)
      Returns the datum from column at index.
      Parameters:
      column -
      i -
      j -
      k -
      Returns:
    • getDatumAtVoxel

      public MguiNumber getDatumAtVoxel​(int i, int j, int k)
      Returns the datum from the current column at index.
      Parameters:
      index -
      Returns:
    • getDatumAtVoxel

      public MguiNumber getDatumAtVoxel​(java.lang.String column, int[] voxel)
      Returns the datum from column at index.
      Parameters:
      column -
      index -
      Returns:
    • setDatumAtVoxel

      public boolean setDatumAtVoxel​(int[] voxel, MguiNumber datum)
      Sets the datum from the current column at index.
      Parameters:
      index -
      Returns:
    • setDatumAtVoxel

      public boolean setDatumAtVoxel​(java.lang.String column, int[] voxel, MguiNumber datum)
      Sets the datum from column at index.
      Parameters:
      column -
      index -
      Returns:
    • setDatumAtVoxel

      public boolean setDatumAtVoxel​(int[] voxel, double datum)
      Sets the datum from the current column at index.
      Parameters:
      index -
      Returns:
    • setDatumAtVoxel

      public boolean setDatumAtVoxel​(java.lang.String column, int[] voxel, double datum)
      Sets the datum from column at index.
      Parameters:
      column -
      index -
      Returns:
    • setDatumAtVoxel

      public boolean setDatumAtVoxel​(int i, int j, int k, MguiNumber datum)
      Sets the datum from the current column at index.
      Parameters:
      index -
      Returns:
    • setDatumAtVoxel

      public boolean setDatumAtVoxel​(java.lang.String column, int i, int j, int k, MguiNumber datum)
      Sets the datum from column at index.
      Parameters:
      column -
      index -
      Returns:
    • setDatumAtVoxel

      public boolean setDatumAtVoxel​(int i, int j, int k, double datum)
      Sets the datum from the current column at index.
      Parameters:
      index -
      Returns:
    • setDatumAtVoxel

      public boolean setDatumAtVoxel​(java.lang.String column, int i, int j, int k, double datum)
      Sets the datum from column at index.
      Parameters:
      column -
      index -
      Returns:
    • getDatumAtPoint

      public MguiNumber getDatumAtPoint​(org.jogamp.vecmath.Point3f point)
      Returns the datum from the current column for the voxel enclosing point.
      Parameters:
      point -
      Returns:
      The value, or Double.NaN is point is not enclosed by this volume
    • getDatumAtPoint

      public MguiNumber getDatumAtPoint​(java.lang.String column, org.jogamp.vecmath.Point3f point)
      Returns the datum from the column for the voxel enclosing point.
      Parameters:
      column -
      point -
      Returns:
      The value, or null if point is not enclosed by this volume
    • getInterpolatedValueAtPoint

      public double getInterpolatedValueAtPoint​(org.jogamp.vecmath.Point3f p, int t)
      Returns a value which is interpolated from the voxel enclosing p and its nearest neighbours. Interpolation is an average weighted by the inverse distance of the center points of these neighbouring voxels to p. Uses the current data column.
      Parameters:
      p - The geometric point at which to sample
      t - The time, if this is a stack of time points
      Returns:
      The sampled value, or Double.NaN if this point is not within the bounds of this grid
    • getInterpolatedValueAtPoint

      public double getInterpolatedValueAtPoint​(org.jogamp.vecmath.Point3f p)
      Returns a value which is interpolated from the voxel enclosing p and its nearest neighbours. Interpolation is an average weighted by the inverse distance of the center points of these neighbouring voxels to p. Time point is assumed to be 1. Uses the current data column.
      Parameters:
      p - The geometric point at which to sample
      Returns:
      The sampled value, or Double.NaN if this point is not within the bounds of this grid
    • getInterpolatedValueAtPoint

      public double getInterpolatedValueAtPoint​(java.lang.String column, org.jogamp.vecmath.Point3f p)
      Returns a value which is interpolated from the voxel enclosing p and its nearest neighbours. Interpolation is an average weighted by the inverse distance of the center points of these neighbouring voxels to p. Time point is assumed to be 1. Uses the current data column.
      Parameters:
      column - The vertex data column
      p - The geometric point at which to sample
      Returns:
      The sampled value, or Double.NaN if this point is not within the bounds of this grid
    • getInterpolatedValueAtPoint

      public double getInterpolatedValueAtPoint​(java.lang.String column, org.jogamp.vecmath.Point3f p, int t)
      Returns a value which is interpolated from the voxel enclosing p and its nearest neighbours. Interpolation is an average weighted by the inverse distance of the center points of these neighbouring voxels to p.
      Parameters:
      column - The vertex data column
      p - The geometric point at which to sample
      t - The time, if this is a stack of time points
      Returns:
      The sampled value, or Double.NaN if this point is not within the bounds of this grid
    • sampleFromVolume

      public boolean sampleFromVolume​(Volume3DInt sample_volume)
      Samples sample_volume where its geometric bounds cross the bounds of this volume. All non-crossing voxels will be assigned a value of data_min. Source and target columns are the current columns of either volume.
      Parameters:
      sample_grid -
      Returns:
    • sampleFromVolume

      public boolean sampleFromVolume​(Volume3DInt sample_volume, double nan_value)
      Samples sample_volume where its geometric bounds cross the bounds of this volume. All non-crossing voxels will be assigned a value of nan_value. Source and target columns are the current columns of either volume.
      Parameters:
      sample_grid -
      nan_value - Value to assign if voxel is outside sample_volume
      Returns:
    • sampleFromVolume

      public boolean sampleFromVolume​(Volume3DInt sample_volume, java.lang.String source_column, java.lang.String target_column)
      Samples sample_volume where its geometric bounds cross the bounds of this volume. All non-crossing voxels will be assigned a value of data_min.
      Parameters:
      sample_grid -
      source_column - The column in sample_volume from which to sample.
      target_column - The target column in this volume. Will be created if it does not exist; otherwise, will be overwritten
      Returns:
    • sampleFromVolume

      public boolean sampleFromVolume​(Volume3DInt sample_volume, java.lang.String source_column, java.lang.String target_column, double nan_value)
      Samples sample_volume where its geometric bounds cross the bounds of this volume. All non-crossing voxels will be assigned a value of nan_value.
      Parameters:
      sample_grid -
      source_column - The column in sample_volume from which to sample.
      target_column - The target column in this volume. Will be created if it does not exist; otherwise, will be overwritten
      nan_value - Value to assign if voxel is outside sample_volume
      Returns:
    • getDataType

      public int getDataType()
      Returns the data type of the current column. Returns -1 if no current column is set.
      Returns:
    • getDataType

      public int getDataType​(java.lang.String column)
      Returns the data type of column. Returns -1 if there is no column by that name.
      Returns:
    • vertexDataColumnColourMapChanged

      public void vertexDataColumnColourMapChanged​(VertexDataColumnEvent event)
      Specified by:
      vertexDataColumnColourMapChanged in interface VertexDataColumnListener
      Overrides:
      vertexDataColumnColourMapChanged in class InterfaceShape
    • vertexDataColumnChanged

      public void vertexDataColumnChanged​(VertexDataColumnEvent event)
      Specified by:
      vertexDataColumnChanged in interface VertexDataColumnListener
      Overrides:
      vertexDataColumnChanged in class InterfaceShape
    • setMapMax

      public void setMapMax​(float m)
    • getMapMax

      public float getMapMax()
    • setMapMin

      public void setMapMin​(float m)
    • getMapMin

      public float getMapMin()
    • setGrid

      public void setGrid​(Grid3D grid)
    • setGrid

      public void setGrid​(Grid3D grid, boolean fire)
    • registerCameraListener

      public void registerCameraListener​(Camera3D camera)
      Overrides:
      registerCameraListener in class Shape3DInt
    • deregisterCameraListener

      public void deregisterCameraListener​(Camera3D c)
      Overrides:
      deregisterCameraListener in class Shape3DInt
    • getCameraListener

      public Camera3DListener getCameraListener()
      Overrides:
      getCameraListener in class Shape3DInt
    • setTexture

      public void setTexture()
      Resets the texture for this volume's renderer.
    • setTexture

      public void setTexture​(boolean setModel)
      Resets the texture for this volume's renderer.
      Parameters:
      setModel - - Also resets the colour model
    • updateTextureValues

      public void updateTextureValues()
      Texture values have changed, so the texture must be updated. Does not reset the colour model; use updateTextureColourMap() to do this.
    • updateTextureColourMap

      public void updateTextureColourMap()
      Texture values have changed, so the texture must be updated. Does not reset the colour model; use updateTextureColourMap() to do this.
    • updateTexture

      public void updateTexture()
      Texture has changed, so the texture must be updated. Also resets the colour model.
    • getColourModel

      public WindowedColourModel getColourModel()
      Returns the colour model for the current column, or null if there is no current column.
      Returns:
    • getColourModel

      public WindowedColourModel getColourModel​(java.lang.String column)
    • attributeUpdated

      public void attributeUpdated​(AttributeEvent e)
      Description copied from class: Shape3DInt
      Responds to an update in one of this shape's attributes.

      Subclasses should override and call this super method AFTER handling the attribute change appropriately. Subclasses should also override needsRedraw() to indicate whether the scene node should be regenerated.

      Specified by:
      attributeUpdated in interface AttributeListener
      Overrides:
      attributeUpdated in class Shape3DInt
      Parameters:
      e - an AttributeEvent specifying which attribute has been changed
    • setApplyMasks

      public void setApplyMasks​(boolean b)
      Sets whether currently set masks are to be applied or not.
    • getApplyMasks

      public boolean getApplyMasks()
      Whether currently set masks are to be applied or not.
      Returns:
    • getTexture

      public Volume3DTexture getTexture()
    • setBounds

      public void setBounds​(Box3D box)
    • updateShape

      public void updateShape()
      Description copied from class: Shape3DInt
      Updates the geometric bounds of this ShapeInt. Does not call Shape3DInt.setScene3DObject().
      Overrides:
      updateShape in class Shape3DInt
    • updateSceneNode

      protected void updateSceneNode()
    • updateData

      public void updateData​(org.jogamp.java3d.ImageComponent3D imageComponent, int index, int x, int y, int width, int height)
      Updates the underlying images for by-reference textures
      Specified by:
      updateData in interface org.jogamp.java3d.ImageComponent3D.Updater
    • setScene3DObject

      public void setScene3DObject​(boolean make_live)
      Description copied from class: Shape3DInt
      Sets this ShapeInt's Java3D scene node from its current geometry and rendering attributes. This node should be retrieved using the Shape3DInt.getShapeSceneNode() method. A scene node will only created if one of these conditions is met:
      • The shape is auxiliary (i.e., not a model shape, but a helper shape such as a section polygon)
      • The shape is associated with a ShapeModel3D, and this model is live (is associated with at least one Java3D scene graph).
      Subclasses which call this super method should always check that a scene node has indeed been created.
      Overrides:
      setScene3DObject in class Shape3DInt
    • getRenderMode

      public java.lang.String getRenderMode()
      Returns the current render mode of this volume
      Returns:
    • setRenderMode

      public void setRenderMode​(java.lang.String mode)
      Sets the current render mode of this volume
      Parameters:
      mode -
    • getBox

      public Box3D getBox()
    • hasAlpha

      public boolean hasAlpha()
      Description copied from class: InterfaceShape
      Queries whether this shape has transparency.
      Overrides:
      hasAlpha in class Shape3DInt
      Returns:
    • getShape2D

      protected Shape2DInt getShape2D​(Plane3D plane, float above_dist, float below_dist, org.jogamp.vecmath.Matrix4d transform)
      Description copied from class: Shape3DInt
      To be overridden by subclasses implementing a 2D representation
      Overrides:
      getShape2D in class Shape3DInt
      Parameters:
      plane - Plane on which to render
      above_dist - Distance above plane within which to project a shape
      below_dist - Distance below plane within which to project a shape
      Returns:
    • colourMapChanged

      public void colourMapChanged​(ColourMap map)
      Specified by:
      colourMapChanged in interface ColourMapListener
    • hasAlpha

      public void hasAlpha​(boolean b)
      Description copied from class: InterfaceShape
      Specifies whether this shape has transparency.
      Overrides:
      hasAlpha in class Shape3DInt
    • hasAlpha

      public void hasAlpha​(java.lang.String column, boolean b)
    • toString

      public java.lang.String toString()
      Overrides:
      toString in class Shape3DInt
    • handleXMLElementStart

      public void handleXMLElementStart​(java.lang.String localName, org.xml.sax.Attributes attributes, XMLObject.XMLType type) throws org.xml.sax.SAXException
      Description copied from interface: XMLObject
      Handles the start of an XML element.
      Specified by:
      handleXMLElementStart in interface XMLObject
      Overrides:
      handleXMLElementStart in class InterfaceShape
      Parameters:
      localName - Local name of the element
      attributes - Set of element attributes
      type - The XMLType of this element
      Throws:
      org.xml.sax.SAXException
    • handleXMLElementEnd

      public void handleXMLElementEnd​(java.lang.String localName) throws org.xml.sax.SAXException
      Description copied from interface: XMLObject
      Handles the end of an XML element.
      Specified by:
      handleXMLElementEnd in interface XMLObject
      Overrides:
      handleXMLElementEnd in class InterfaceShape
      Parameters:
      localName - Local name of the element
      Throws:
      org.xml.sax.SAXException
    • writeXML

      public void writeXML​(int tab, java.io.Writer writer, XMLOutputOptions options, ProgressUpdater progress_bar) throws java.io.IOException
      Description copied from interface: XMLObject
      Writes the XML representation of this object to file. The basic contract for this method is that it should not write a newline character at its start or end. The default format of XMLFormat.Ascii will be used.
      Specified by:
      writeXML in interface XMLObject
      Overrides:
      writeXML in class InterfaceShape
      Parameters:
      tab - The number of tabs to place before the XML text
      writer - The writer
      options - XMLOutputOptions defining the write parameters
      progress_bar - Optional progress updater (may be null)
      Throws:
      java.io.IOException
    • writeFullXML

      protected void writeFullXML​(int tab, java.io.Writer writer, XMLOutputOptions options, ProgressUpdater progress_bar) throws java.io.IOException
      Throws:
      java.io.IOException