//
// Display.java
//
/*
VisAD system for interactive analysis and visualization of numerical
data. Copyright (C) 1996 - 2017 Bill Hibbard, Curtis Rueden, Tom
Rink, Dave Glowacki, Steve Emmerson, Tom Whittaker, Don Murray, and
Tommy Jasmin.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA
*/
package visad;
import java.util.*;
import java.rmi.*;
/**
Display is the VisAD interface for displays. It is runnable.<P>
The display architecture is based on three goals:<P>
<OL>
<LI>Display data according to a set of mappings from RealType's
(e.g., Latitude, Time, Pressure) to DisplayRealTypes (e.g.,
XAxis, RGB, Animation).<P>
<LI>Allow user extensions, to define new DisplayRealTypes,
new DisplayTupleTypes (and hence new display
CoordinateSystems), and new rendering algorithms.<P>
<LI>Support direct manipulation, where users modify Data
values by re-drawing their depictions.<P>
</OL>
*/
public interface Display extends Action {
// system intrinsic DisplayRealType objects
/** display spatial Cartesian X axis coordinate */
DisplayRealType XAxis =
new DisplayRealType("XAxis", true, -1.0, 1.0, 0.0, true);
/** display spatial Cartesian Y axis coordinate */
DisplayRealType YAxis =
new DisplayRealType("YAxis", true, -1.0, 1.0, 0.0, true);
/** display spatial Cartesian Z axis coordinate */
DisplayRealType ZAxis =
new DisplayRealType("ZAxis", true, -1.0, 1.0, 0.0, true);
/** display spatial spherical Latitude coordinate */
DisplayRealType Latitude =
new DisplayRealType("Latitude", true, -90.0, 90.0, 0.0,
CommonUnit.degree, true);
/** display spatial spherical Longitude coordinate */
DisplayRealType Longitude =
new DisplayRealType("Longitude", true, 0.0, 360.0, 0.0,
CommonUnit.degree, true);
/** display spatial spherical Radius coordinate */
DisplayRealType Radius =
new DisplayRealType("Radius", true, 0.01, 2.0, 1.0, true);
/** display spatial cylindrical radius coordinate */
DisplayRealType CylRadius =
new DisplayRealType("CylRadius", true, 0.01, 2.0, 1.0, true);
/** display spatial cylindrical azimuth coordinate */
DisplayRealType CylAzimuth =
new DisplayRealType("CylAzimuth", true, 0.0, 360.0, 0.0,
CommonUnit.degree, true);
/** display spatial cylindrical Z axis coordinate */
DisplayRealType CylZAxis =
new DisplayRealType("CylZAxis", true, -1.0, 1.0, 0.0, true);
/** display spatial offset Cartesian X axis coordinate */
DisplayRealType XAxisOffset =
new DisplayRealType("XAxisOffset", false, -1.0, 1.0, 0.0, null, true);
/** display spatial offset Cartesian Y axis coordinate */
DisplayRealType YAxisOffset =
new DisplayRealType("YAxisOffset", false, -1.0, 1.0, 0.0, null, true);
/** display spatial offset Cartesian Z axis coordinate */
DisplayRealType ZAxisOffset =
new DisplayRealType("ZAxisOffset", false, -1.0, 1.0, 0.0, null, true);
/** list display scalar (not used) */
DisplayRealType List =
new DisplayRealType("List", false, 0.0, true);
/** display color red coordinate (in RGB) */
DisplayRealType Red =
new DisplayRealType("Red", false, 0.0, 1.0, 1.0, null, true);
/** display color green coordinate (in RGB) */
DisplayRealType Green =
new DisplayRealType("Green", false, 0.0, 1.0, 1.0, null, true);
/** display color blue coordinate (in RGB) */
DisplayRealType Blue =
new DisplayRealType("Blue", false, 0.0, 1.0, 1.0, null, true);
/** display color RGB lookup table index */
DisplayRealType RGB =
new DisplayRealType("RGB", false, 0.0, 1.0, 0.0, true);
/** display color RGBA lookup table index */
DisplayRealType RGBA =
new DisplayRealType("RGBA", false, 0.0, 1.0, 0.0, true);
/** display color hue coordinate (in HSV) */
DisplayRealType Hue =
new DisplayRealType("Hue", false, 0.0, 360.0, 0.0,
CommonUnit.degree, true);
/** display color saturation coordinate (in HSV) */
DisplayRealType Saturation =
new DisplayRealType("Saturation", false, 0.0, 1.0, 0.0, null, true);
/** display color value coordinate (in HSV) */
DisplayRealType Value =
new DisplayRealType("Value", false, 0.0, 1.0, 1.0, null, true);
/** display color HSV lookup table index */
DisplayRealType HSV =
new DisplayRealType("HSV", false, 0.0, 1.0, 0.0, true);
/** display color cyan coordinate (in CMY) */
DisplayRealType Cyan =
new DisplayRealType("Cyan", false, 0.0, 1.0, 1.0, null, true);
/** display color magenta coordinate (in CMY) */
DisplayRealType Magenta =
new DisplayRealType("Magenta", false, 0.0, 1.0, 1.0, null, true);
/** display color yellow coordinate (in CMY) */
DisplayRealType Yellow =
new DisplayRealType("Yellow", false, 0.0, 1.0, 1.0, null, true);
/** display color CMY lookup table index */
DisplayRealType CMY =
new DisplayRealType("CMY", false, 0.0, 1.0, 0.0, true);
/** display alpha (transparency) */
DisplayRealType Alpha =
new DisplayRealType("Alpha", false, 0.0, 1.0, 1.0, null, true);
/** display animation */
DisplayRealType Animation =
new DisplayRealType("Animation", true, 0.0, true);
/** display scalar for selecting by a single value */
DisplayRealType SelectValue =
new DisplayRealType("SelectValue", false, 0.0, true);
/** display scalar for selecting by a range of values */
DisplayRealType SelectRange =
new DisplayRealType("SelectRange", false, 0.0, true);
/** display iso-contour */
DisplayRealType IsoContour =
new DisplayRealType("IsoContour", false, 0.0, true);
/** display flow set 1 Cartesian X axis coordinate */
DisplayRealType Flow1X =
new DisplayRealType("Flow1X", true, -1.0, 1.0, 0.0,
CommonUnit.meterPerSecond, true);
/** display flow set 1 Cartesian Y axis coordinate */
DisplayRealType Flow1Y =
new DisplayRealType("Flow1Y", true, -1.0, 1.0, 0.0,
CommonUnit.meterPerSecond, true);
/** display flow set 1 Cartesian Z axis coordinate */
DisplayRealType Flow1Z =
new DisplayRealType("Flow1Z", true, -1.0, 1.0, 0.0,
CommonUnit.meterPerSecond, true);
/** display flow set 1 spherical elevation coordinate */
DisplayRealType Flow1Elevation =
new DisplayRealType("Flow1Elevation", true, -90.0, 90.0, 0.0,
CommonUnit.degree, true);
/** display flow set 1 spherical azimuth coordinate */
DisplayRealType Flow1Azimuth =
new DisplayRealType("Flow1Azimuth", true, 0.0, 360.0, 0.0,
CommonUnit.degree, true);
/** display flow set 1 spherical radial coordinate */
DisplayRealType Flow1Radial =
new DisplayRealType("Flow1Radial", true, 0.0, 1.0, 0.0,
CommonUnit.meterPerSecond, true);
/** display flow set 2 Cartesian X axis coordinate */
DisplayRealType Flow2X =
new DisplayRealType("Flow2X", true, -1.0, 1.0, 0.0,
CommonUnit.meterPerSecond, true);
/** display flow set 2 Cartesian Y axis coordinate */
DisplayRealType Flow2Y =
new DisplayRealType("Flow2Y", true, -1.0, 1.0, 0.0,
CommonUnit.meterPerSecond, true);
/** display flow set 2 Cartesian Z axis coordinate */
DisplayRealType Flow2Z =
new DisplayRealType("Flow2Z", true, -1.0, 1.0, 0.0,
CommonUnit.meterPerSecond, true);
/** display flow set 2 spherical elevation coordinate */
DisplayRealType Flow2Elevation =
new DisplayRealType("Flow2Elevation", true, -90.0, 90.0, 0.0,
CommonUnit.degree, true);
/** display flow set 2 spherical azimuth coordinate */
DisplayRealType Flow2Azimuth =
new DisplayRealType("Flow2Azimuth", true, 0.0, 360.0, 0.0,
CommonUnit.degree, true);
/** display flow set 2 spherical radial coordinate */
DisplayRealType Flow2Radial =
new DisplayRealType("Flow2Radial", true, 0.0, 1.0, 0.0,
CommonUnit.meterPerSecond, true);
/** index into a set of display shapes */
DisplayRealType Shape =
new DisplayRealType("Shape", false, 0.0, true);
/** scale for display shapes */
DisplayRealType ShapeScale =
new DisplayRealType("ShapeScale", true, 0.01, 1.0, 1.0, true);
/** display scalar for text */
DisplayRealType Text =
new DisplayRealType("Text", true, true);
/** line width - ConstantMap only */
DisplayRealType LineWidth =
new DisplayRealType("LineWidth", true, 1.0, true);
/** point size - ConstantMap only */
DisplayRealType PointSize =
new DisplayRealType("PointSize", true, 1.0, true);
/** line style - ConstantMap only */
DisplayRealType LineStyle =
new DisplayRealType("LineStyle", true, 1.0, true);
/** texture enable - ConstantMap only */
DisplayRealType TextureEnable =
new DisplayRealType("TextureEnable", true, -1.0, true);
/** missing transparent - ConstantMap only */
DisplayRealType MissingTransparent =
new DisplayRealType("MissingTransparent", true, -1.0, true);
/** polygon mode - ConstantMap only */
DisplayRealType PolygonMode =
new DisplayRealType("PolygonMode", true, -1.0, true);
/** curved size - ConstantMap only, values must be > 0 */
DisplayRealType CurvedSize =
new DisplayRealType("CurvedSize", true, 0.0, true);
/** color mode - ConstantMap only, values must be > 0 */
DisplayRealType ColorMode =
new DisplayRealType("ColorMode", true, -1.0, true);
/** Polygon offset - ConstantMap only */
DisplayRealType PolygonOffset =
new DisplayRealType("PolygonOffset", true, Double.NaN, true);
/** Polygon offset factor - ConstantMap only */
DisplayRealType PolygonOffsetFactor =
new DisplayRealType("PolygonOffsetFactor", true, Double.NaN, true);
/** Adjust along projection seams - ConstantMap only */
DisplayRealType AdjustProjectionSeam =
new DisplayRealType("AdjustProjectionSeam", true, -1.0, true);
/** texture 3D mode - ConstantMap only, values must be > 0 */
DisplayRealType Texture3DMode =
new DisplayRealType("Texture3DMode", true, -1.0, true);
/** cache appearances - ConstantMap only */
DisplayRealType CacheAppearances =
new DisplayRealType("CacheAppearances", true, -1.0, true);
/** cache appearances - ConstantMap only */
DisplayRealType MergeGeometries =
new DisplayRealType("MergeGeometries", true, -1.0, true);
/** point mode - ConstantMap only */
DisplayRealType PointMode =
new DisplayRealType("PointMode", true, -1.0, true);
/** array of system intrinsic DisplayRealTypes */
DisplayRealType[] DisplayRealArray =
{XAxis, YAxis, ZAxis, Latitude, Longitude, Radius, List, Red, Green, Blue,
RGB, RGBA, Hue, Saturation, Value, HSV, Cyan, Magenta, Yellow, CMY, Alpha,
Animation, SelectValue, SelectRange, IsoContour, Flow1X, Flow1Y, Flow1Z,
Flow2X, Flow2Y, Flow2Z, XAxisOffset, YAxisOffset, ZAxisOffset, Shape,
Text, ShapeScale, LineWidth, PointSize, CylRadius, CylAzimuth, CylZAxis,
Flow1Elevation, Flow1Azimuth, Flow1Radial,
Flow2Elevation, Flow2Azimuth, Flow2Radial,
LineStyle, TextureEnable, MissingTransparent,
PolygonMode, CurvedSize, ColorMode,
PolygonOffset, PolygonOffsetFactor,
AdjustProjectionSeam, Texture3DMode,
CacheAppearances, MergeGeometries, PointMode
};
// system intrinsic DisplayTupleType objects
/** array of 3D Cartesian spatial coordinates */
DisplayRealType[] components3c =
{Display.XAxis, Display.YAxis, Display.ZAxis};
/** system intrinsic DisplayTupleType for 3D Cartesian
spatial coordinates */
DisplayTupleType DisplaySpatialCartesianTuple =
new DisplayTupleType(components3c, true);
/** CoordinateSystem for DisplaySpatialSphericalTuple, with
reference DisplaySpatialCartesianTuple */
CoordinateSystem DisplaySphericalCoordSys =
new SphericalCoordinateSystem(DisplaySpatialCartesianTuple, true);
/** array of 3D spherical spatial coordinates */
DisplayRealType[] components3s =
{Latitude, Longitude, Radius};
/** system intrinsic DisplayTupleType for 3D spherical
spatial coordinates */
DisplayTupleType DisplaySpatialSphericalTuple =
new DisplayTupleType(components3s, DisplaySphericalCoordSys, true);
/** CoordinateSystem for DisplaySpatialCylindricalTuple, with
reference DisplaySpatialCartesianTuple */
CoordinateSystem DisplayCylindricalCoordSys =
new CylindricalCoordinateSystem(DisplaySpatialCartesianTuple, true);
/** array of 3D cylindrical Coordinates */
DisplayRealType[] componentscyl =
{CylRadius, CylAzimuth, CylZAxis};
/** system intrinsic DisplayTupleType for 3D cylindrical
spatial coordinates */
DisplayTupleType DisplaySpatialCylindricalTuple =
new DisplayTupleType(componentscyl, DisplayCylindricalCoordSys, true);
/** array of 3D RGB coordinates */
DisplayRealType[] componentsrgb = {Red, Green, Blue};
/** system intrinsic DisplayTupleType for RGB color coordinates */
DisplayTupleType DisplayRGBTuple =
new DisplayTupleType(componentsrgb, true);
/** CoordinateSystem for DisplayHSVTuple, with reference
DisplayRGBTuple */
CoordinateSystem DisplayHSVCoordSys =
new HSVCoordinateSystem(DisplayRGBTuple, true);
/** array of 3D HSV coordinates */
DisplayRealType[] componentshsv = {Hue, Saturation, Value};
/** system intrinsic DisplayTupleType for HSV color coordinates */
DisplayTupleType DisplayHSVTuple =
new DisplayTupleType(componentshsv, DisplayHSVCoordSys, true);
/** CoordinateSystem for DisplayCMYTuple, with reference
DisplayRGBTuple */
CoordinateSystem DisplayCMYCoordSys =
new CMYCoordinateSystem(DisplayRGBTuple, true);
/** array of 3D CMY coordinates */
DisplayRealType[] componentscmy =
{Cyan, Magenta, Yellow};
/** system intrinsic DisplayTupleType for CMY color coordinates */
DisplayTupleType DisplayCMYTuple =
new DisplayTupleType(componentscmy, DisplayCMYCoordSys, true);
/** array of 3D Cartesian flow set 1 coordinates */
DisplayRealType[] componentsflow1 = {Flow1X, Flow1Y, Flow1Z};
/** system intrinsic DisplayTupleType for 3D Cartesian
flow set 1 coordinates */
DisplayTupleType DisplayFlow1Tuple =
new DisplayTupleType(componentsflow1, true);
/** array of 3D Cartesian flow set 2 coordinates */
DisplayRealType[] componentsflow2 = {Flow2X, Flow2Y, Flow2Z};
/** system intrinsic DisplayTupleType for 3D Cartesian
flow set 2 coordinates */
DisplayTupleType DisplayFlow2Tuple =
new DisplayTupleType(componentsflow2, true);
/** CoordinateSystem for DisplayFlow1SphericalTuple, with reference
DisplayFlow1Tuple */
CoordinateSystem DisplayFlow1SphericalCoordSys =
new FlowSphericalCoordinateSystem(DisplayFlow1Tuple, true);
/** array of 3D spherical flow set 1 coordinates */
DisplayRealType[] componentsflow1s =
{Flow1Elevation, Flow1Azimuth, Flow1Radial};
/** system intrinsic DisplayTupleType for 3D spherical
flow set 1 coordinates */
DisplayTupleType DisplayFlow1SphericalTuple =
new DisplayTupleType(componentsflow1s, DisplayFlow1SphericalCoordSys,
true);
/** CoordinateSystem for DisplayFlow2SphericalTuple, with reference
DisplayFlow2Tuple */
CoordinateSystem DisplayFlow2SphericalCoordSys =
new FlowSphericalCoordinateSystem(DisplayFlow2Tuple, true);
/** array of 3D spherical flow set 2 coordinates */
DisplayRealType[] componentsflow2s =
{Flow2Elevation, Flow2Azimuth, Flow2Radial};
/** system intrinsic DisplayTupleType for 3D spherical
flow set 2 coordinates */
DisplayTupleType DisplayFlow2SphericalTuple =
new DisplayTupleType(componentsflow2s, DisplayFlow2SphericalCoordSys,
true);
/** array of 3D Cartesian spatial offset coordinates */
DisplayRealType[] componentsso =
{XAxisOffset, YAxisOffset, ZAxisOffset};
/** system intrinsic DisplayTupleType for 3D Cartesian
spatial offset coordinates */
DisplayTupleType DisplaySpatialOffsetTuple =
new DisplayTupleType(componentsso, true);
/**
* create link to DataReference, with ConstantMaps;
* invokes ref.addThingChangedListener(ThingChangedListener l, long id)
* @param ref DataReference to link to
* @param constant_maps array of ConstantMaps applied to linked Data
* @throws VisADException a VisAD error occurred
* @throws RemoteException an RMI error occurred
*/
void addReference(DataReference ref,
ConstantMap[] constant_maps) throws VisADException, RemoteException;
/**
* create link to DataReference, with ConstantMaps and DataRenderer;
* invokes ref.addThingChangedListener(ThingChangedListener l, long id)
* @param renderer DataRenderer used to depict linked Data
* @param ref DataReference to link to
* @param constant_maps array of ConstantMaps applied to this Data
* @throws VisADException a VisAD error occurred
* @throws RemoteException an RMI error occurred
*/
void addReferences(DataRenderer renderer, DataReference ref,
ConstantMap[] constant_maps)
throws VisADException, RemoteException;
/**
* link a ScalarMap (may be a ConstantMap) to this Display
* @param map ScalarMap to link
* @throws VisADException a VisAD error occurred
* @throws RemoteException an RMI error occurred
*/
void addMap(ScalarMap map)
throws VisADException, RemoteException;
/**
* remove a ScalarMap (may be a ConstantMap) from this Display
* @param map ScalarMap to remove
* @throws VisADException a VisAD error occurred
* @throws RemoteException an RMI error occurred
*/
void removeMap(ScalarMap map)
throws VisADException, RemoteException;
/**
* remove all ScalarMaps (and ConstantMaps) from this Display
* @throws VisADException a VisAD error occurred
* @throws RemoteException an RMI error occurred
*/
void clearMaps() throws VisADException, RemoteException;
/**
* destroy this display: break all links, stop Threads and
* clear references for garbage collection
*/
void destroy() throws VisADException, RemoteException;
/**
* @return Vector of linked ConstantMaps
*/
Vector getConstantMapVector()
throws VisADException, RemoteException;
/**
* Send a message to all </tt>MessageListener</tt>s.
*
* @param msg Message being sent.
* @throws RemoteException an RMI error occurred
*/
void sendMessage(MessageEvent msg)
throws RemoteException;
/**
* link a slave display to this display
* @param display RemoteSlaveDisplay to link
* @throws VisADException a VisAD error occurred
* @throws RemoteException an RMI error occurred
*/
void addSlave(RemoteSlaveDisplay display)
throws VisADException, RemoteException;
/**
* remove a slave display from this display
* @param display RemoteSlaveDisplay to remove
* @throws VisADException a VisAD error occurred
* @throws RemoteException an RMI error occurred
*/
void removeSlave(RemoteSlaveDisplay display)
throws VisADException, RemoteException;
/**
* remove all slave displays from this display
* @throws VisADException a VisAD error occurred
* @throws RemoteException an RMI error occurred
*/
void removeAllSlaves() throws VisADException, RemoteException;
/**
* @return true if this display has any slave displays
* @throws VisADException a VisAD error occurred
* @throws RemoteException an RMI error occurred
*/
boolean hasSlaves() throws VisADException, RemoteException;
}