visad
Class ImageFlatField

java.lang.Object
  extended by visad.ThingImpl
      extended by visad.DataImpl
          extended by visad.FunctionImpl
              extended by visad.FieldImpl
                  extended by visad.FlatField
                      extended by visad.ImageFlatField
All Implemented Interfaces:
Serializable, Cloneable, Data, Field, FlatFieldIface, Function, Thing

public class ImageFlatField
extends FlatField

ImageFlatField is a VisAD FlatField backed by a java.awt.image.BufferedImage object, instead of the usual float[][] or double[][] samples array. Expands the samples into floats or doubles on demand using unpackFloats(boolean), which can be expensive for repeated operations of certain types. Such calls can be avoided for certain types of visualization using an 8-bit image with ShadowImageFunctionTypeJ3D.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class visad.DataImpl
DataImpl.Syncher
 
Field Summary
static boolean DEBUG
          Debugging flag.
protected  int height
          Dimensions of the image.
protected  BufferedImage image
          The image backing this FlatField.
protected  int num
          Dimensions of the image.
protected  int width
          Dimensions of the image.
 
Fields inherited from class visad.FlatField
RangeCoordinateSystem, RangeCoordinateSystems, RangeUnits, TupleDimension
 
Fields inherited from interface visad.Data
ABS, ACOS, ACOS_DEGREES, ADD, ASIN, ASIN_DEGREES, ATAN, ATAN_DEGREES, ATAN2, ATAN2_DEGREES, CEIL, COS, COS_DEGREES, DEGREES_TO_RADIANS, DEPENDENT, DIVIDE, EXP, FLOOR, INDEPENDENT, INV_ATAN2, INV_ATAN2_DEGREES, INV_DIVIDE, INV_POW, INV_REMAINDER, INV_SUBTRACT, LOG, MAX, MIN, MULTIPLY, NEAREST_NEIGHBOR, NEGATE, NO_ERRORS, NOP, POW, RADIANS_TO_DEGREES, REMAINDER, RINT, ROUND, SIN, SIN_DEGREES, SQRT, SUBTRACT, TAN, TAN_DEGREES, WEIGHTED_AVERAGE
 
Constructor Summary
ImageFlatField(BufferedImage img)
          Constructs an ImageFlatField around the given BufferedImage.
ImageFlatField(FunctionType type)
           
ImageFlatField(FunctionType type, Set domain_set)
           
ImageFlatField(FunctionType type, Set domain_set, CoordinateSystem[] range_coord_syses, Set[] range_sets, Unit[] units)
           
ImageFlatField(FunctionType type, Set domain_set, CoordinateSystem range_coord_sys, CoordinateSystem[] range_coord_syses, Set[] range_sets, Unit[] units)
           
ImageFlatField(FunctionType type, Set domain_set, CoordinateSystem range_coord_sys, Set[] range_sets, Unit[] units)
           
 
Method Summary
 DataShadow computeRanges(ShadowType type, DataShadow shadow)
          This method has been overridden to avoid a call to unpackValues or unpackFloats during range computation.
 RealType[] getDomainTypes()
          Gets RealType for each domain component (X and Y).
 BufferedImage getImage()
          Gets the image backing this FlatField.
 RealType[] getRangeTypes()
          Gets RealType for each range component.
 Data getSample(int index)
          Get the range value at the index-th sample.
 byte[][] grabBytes()
           
static byte[][] grabBytes(BufferedImage image)
           
static BufferedImage make3ByteRGB(BufferedImage image)
          Converts the given BufferedImage to a format efficient with ImageFlatField's grabBytes method and usable with Java3D texturing by reference.
static Set makeDomainSet(BufferedImage img)
          Constructs a domain Set suitable for use with the given image.
static FunctionType makeFunctionType(BufferedImage img)
          Constructs a FunctionType suitable for use with the given image.
protected  void pr(String message)
           
 void setImage(BufferedImage image)
          Sets the image backing this FlatField.
 void setSamples(Data[] range, boolean copy)
          set the range values of the function; the order of range values must be the same as the order of domain indices in the DomainSet; copy argument included for consistency with Field, but ignored
 void setSamples(double[][] range, boolean copy)
          set range array as range values of this FlatField; the array is dimensioned double[number_of_range_components][number_of_range_samples]; the order of range values must be the same as the order of domain indices in the DomainSet; copy array if copy flag is true
 void setSamples(double[][] range, ErrorEstimate[] errors, boolean copy)
          set the range values of the function including ErrorEstimate-s; the order of range values must be the same as the order of domain indices in the DomainSet
 void setSamples(float[][] range, boolean copy)
          set range array as range values of this FlatField; the array is dimensioned float[number_of_range_components][number_of_range_samples]; the order of range values must be the same as the order of domain indices in the DomainSet; copy array if copy flag is true
 void setSamples(float[][] range, ErrorEstimate[] errors, boolean copy)
          set the range values of the function including ErrorEstimate-s; the order of range values must be the same as the order of domain indices in the DomainSet
 void setSamples(int start, double[][] range)
          update a subset of a FlatField's range samples, where start is the index of the first sample to update and range[0].length is the number of samples to update; the array is dimensioned double[number_of_range_components][number_of_range_samples]
protected  float[][] unpackFloats(boolean copy)
          Unpacks an array of floats from field sample values.
protected  float[] unpackFloats(int s_index)
          Unpack the floats at the sample index.
protected  double[] unpackOneRangeComp(int comp)
          Unpack one range component, makes a copy.
protected  double[][] unpackValues(boolean copy)
          Unpacks an array of doubles from field sample values.
protected  double[] unpackValues(int s_index)
          Unpack the double value at the sample index.
 
Methods inherited from class visad.FlatField
adjustSamplingError, binary, clearMissing, clone, cloneDouble, cloneDouble, cloneFloat, cloneFloat, convertToField, derivative, derivative, derivative, derivative, derivative, equals, extract, extract, fillField, getDefaultRangeUnits, getFloats, getFloats, getRangeCoordinateSystem, getRangeCoordinateSystem, getRangeDimension, getRangeErrors, getRangeSets, getRangeUnits, getSample, getStringValues, getValues, getValues, getValues, isFlatField, isMissing, longString, main, makeField, makeField1, makeField2, makeRational, makeRational, nullRanges, resample, resampleDouble, setRangeErrors, setSample, setSample, setSamples, setSamples, setSamples, toString, unary, unpackFloats, unpackOneFloatRangeComp, unpackOneFloatRangeComp, unpackOneRangeComp, unpackValues
 
Methods inherited from class visad.FieldImpl
__getitem__, __len__, __setitem__, __setitem__, combine, combine, combine, combine, combine, domainEnumeration, domainFactor, domainFactor, domainMultiply, domainMultiply, domainMultiply, domainMultiply, extract, extract, getDomainCoordinateSystem, getDomainSet, getDomainUnits, getLength, setSample, setSample, setSample, setSamples
 
Methods inherited from class visad.FunctionImpl
__getitem__, __getitem__, evaluate, evaluate, evaluate, evaluate, getDomainDimension, resample
 
Methods inherited from class visad.DataImpl
__add__, __add__, __div__, __div__, __mod__, __mod__, __mul__, __mul__, __neg__, __pow__, __pow__, __radd__, __rdiv__, __rmod__, __rmul__, __rpow__, __rsub__, __sub__, __sub__, abs, abs, acos, acos, acosDegrees, acosDegrees, add, add, asin, asin, asinDegrees, asinDegrees, atan, atan, atan2, atan2, atan2Degrees, atan2Degrees, atanDegrees, atanDegrees, binary, ceil, ceil, changeMathType, computeRanges, computeRanges, cos, cos, cosDegrees, cosDegrees, dataClone, divide, divide, exp, exp, floor, floor, getType, local, log, log, longString, max, max, min, min, multiply, multiply, negate, negate, notifyReferences, pow, pow, remainder, remainder, rint, rint, round, round, sin, sin, sinDegrees, sinDegrees, sqrt, sqrt, subtract, subtract, tan, tan, tanDegrees, tanDegrees, unary
 
Methods inherited from class visad.ThingImpl
addReference, removeReference
 
Methods inherited from class java.lang.Object
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface visad.Field
domainEnumeration, domainFactor, domainMultiply, domainMultiply, getDomainSet, getLength, setSample, setSample
 
Methods inherited from interface visad.Function
evaluate, evaluate, evaluate, evaluate, getDomainCoordinateSystem, getDomainDimension, getDomainUnits, resample
 
Methods inherited from interface visad.Data
abs, abs, acos, acos, acosDegrees, acosDegrees, add, add, asin, asin, asinDegrees, asinDegrees, atan, atan, atan2, atan2, atan2Degrees, atan2Degrees, atanDegrees, atanDegrees, binary, ceil, ceil, changeMathType, computeRanges, computeRanges, cos, cos, cosDegrees, cosDegrees, dataClone, divide, divide, exp, exp, floor, floor, getType, local, log, log, longString, max, max, min, min, multiply, multiply, negate, negate, pow, pow, remainder, remainder, rint, rint, round, round, sin, sin, sinDegrees, sinDegrees, sqrt, sqrt, subtract, subtract, tan, tan, tanDegrees, tanDegrees, unary
 
Methods inherited from interface visad.Thing
addReference, removeReference
 

Field Detail

DEBUG

public static final boolean DEBUG
Debugging flag.

See Also:
Constant Field Values

image

protected BufferedImage image
The image backing this FlatField.


num

protected int num
Dimensions of the image.


width

protected int width
Dimensions of the image.


height

protected int height
Dimensions of the image.

Constructor Detail

ImageFlatField

public ImageFlatField(BufferedImage img)
               throws VisADException,
                      RemoteException
Constructs an ImageFlatField around the given BufferedImage.

Throws:
VisADException
RemoteException

ImageFlatField

public ImageFlatField(FunctionType type)
               throws VisADException
Throws:
VisADException

ImageFlatField

public ImageFlatField(FunctionType type,
                      Set domain_set)
               throws VisADException
Throws:
VisADException

ImageFlatField

public ImageFlatField(FunctionType type,
                      Set domain_set,
                      CoordinateSystem range_coord_sys,
                      Set[] range_sets,
                      Unit[] units)
               throws VisADException
Throws:
VisADException

ImageFlatField

public ImageFlatField(FunctionType type,
                      Set domain_set,
                      CoordinateSystem[] range_coord_syses,
                      Set[] range_sets,
                      Unit[] units)
               throws VisADException
Throws:
VisADException

ImageFlatField

public ImageFlatField(FunctionType type,
                      Set domain_set,
                      CoordinateSystem range_coord_sys,
                      CoordinateSystem[] range_coord_syses,
                      Set[] range_sets,
                      Unit[] units)
               throws VisADException
Throws:
VisADException
Method Detail

make3ByteRGB

public static BufferedImage make3ByteRGB(BufferedImage image)
Converts the given BufferedImage to a format efficient with ImageFlatField's grabBytes method and usable with Java3D texturing by reference.


makeFunctionType

public static FunctionType makeFunctionType(BufferedImage img)
                                     throws VisADException
Constructs a FunctionType suitable for use with the given image.

Throws:
VisADException

makeDomainSet

public static Set makeDomainSet(BufferedImage img)
                         throws VisADException
Constructs a domain Set suitable for use with the given image.

Throws:
VisADException

getImage

public BufferedImage getImage()
Gets the image backing this FlatField.


setImage

public void setImage(BufferedImage image)
              throws VisADException,
                     RemoteException
Sets the image backing this FlatField.

Throws:
VisADException
RemoteException

getDomainTypes

public RealType[] getDomainTypes()
Gets RealType for each domain component (X and Y).


getRangeTypes

public RealType[] getRangeTypes()
Gets RealType for each range component.


setSamples

public void setSamples(Data[] range,
                       boolean copy)
                throws VisADException,
                       RemoteException
Description copied from class: FlatField
set the range values of the function; the order of range values must be the same as the order of domain indices in the DomainSet; copy argument included for consistency with Field, but ignored

Specified by:
setSamples in interface Field
Overrides:
setSamples in class FlatField
Parameters:
range - The range values
copy - should the range values be copied
Throws:
VisADException
RemoteException

computeRanges

public DataShadow computeRanges(ShadowType type,
                                DataShadow shadow)
                         throws VisADException
This method has been overridden to avoid a call to unpackValues or unpackFloats during range computation.

Specified by:
computeRanges in interface Data
Overrides:
computeRanges in class FlatField
Parameters:
type - ShadowType generated for MathType of this
shadow - DataShadow instance whose contained double[][] array and animation sampling Set are modified according to RealType values in this, and used as return value
Returns:
DataShadow instance containing double[][] array of RealType ranges, and an animation sampling Set
Throws:
VisADException - a VisAD error occurred

unpackValues

protected double[][] unpackValues(boolean copy)
                           throws VisADException
Unpacks an array of doubles from field sample values.

Overrides:
unpackValues in class FlatField
Parameters:
copy - Ignored (always returns a copy).
Throws:
SetException - if an element of FlatField.RangeMode contains an unknown value.
VisADException - if Set.indexToValue(int []) on a range set fails.

unpackFloats

protected float[][] unpackFloats(boolean copy)
                          throws VisADException
Unpacks an array of floats from field sample values.

Overrides:
unpackFloats in class FlatField
Parameters:
copy - Ignored (always returns a copy).
Throws:
VisADException

unpackValues

protected double[] unpackValues(int s_index)
                         throws VisADException
Description copied from class: FlatField
Unpack the double value at the sample index.

Overrides:
unpackValues in class FlatField
Parameters:
s_index - sample index
Returns:
array of values at that index
Throws:
VisADException - unable to unpack values

unpackFloats

protected float[] unpackFloats(int s_index)
                        throws VisADException
Description copied from class: FlatField
Unpack the floats at the sample index.

Overrides:
unpackFloats in class FlatField
Parameters:
s_index - sample index
Returns:
array of values at that index
Throws:
VisADException - unable to unpack floats

unpackOneRangeComp

protected double[] unpackOneRangeComp(int comp)
                               throws VisADException
Description copied from class: FlatField
Unpack one range component, makes a copy.

Overrides:
unpackOneRangeComp in class FlatField
Parameters:
comp - component index
Returns:
array of the values
Throws:
VisADException - bad range mode

getSample

public Data getSample(int index)
               throws VisADException,
                      RemoteException
Description copied from class: FlatField
Get the range value at the index-th sample. FlatField does not override evaluate, but the correctness of FlatField.evaluate depends on overriding getSample

Specified by:
getSample in interface Field
Overrides:
getSample in class FlatField
Parameters:
index - index of requested range sample
Returns:
Data object (Real, RealTuple, or Tuple) corresponding to the range at the index-th sample.
Throws:
VisADException - problem getting data
RemoteException - problem getting data from remote object

pr

protected void pr(String message)
Overrides:
pr in class FlatField

setSamples

public void setSamples(double[][] range,
                       boolean copy)
                throws RemoteException,
                       VisADException
Description copied from class: FlatField
set range array as range values of this FlatField; the array is dimensioned double[number_of_range_components][number_of_range_samples]; the order of range values must be the same as the order of domain indices in the DomainSet; copy array if copy flag is true

Specified by:
setSamples in interface FlatFieldIface
Overrides:
setSamples in class FlatField
Throws:
RemoteException
VisADException

setSamples

public void setSamples(float[][] range,
                       boolean copy)
                throws RemoteException,
                       VisADException
Description copied from class: FlatField
set range array as range values of this FlatField; the array is dimensioned float[number_of_range_components][number_of_range_samples]; the order of range values must be the same as the order of domain indices in the DomainSet; copy array if copy flag is true

Specified by:
setSamples in interface FlatFieldIface
Overrides:
setSamples in class FlatField
Throws:
RemoteException
VisADException

setSamples

public void setSamples(double[][] range,
                       ErrorEstimate[] errors,
                       boolean copy)
                throws RemoteException,
                       VisADException
Description copied from class: FlatField
set the range values of the function including ErrorEstimate-s; the order of range values must be the same as the order of domain indices in the DomainSet

Specified by:
setSamples in interface FlatFieldIface
Overrides:
setSamples in class FlatField
Throws:
RemoteException
VisADException

setSamples

public void setSamples(int start,
                       double[][] range)
                throws RemoteException,
                       VisADException
Description copied from class: FlatField
update a subset of a FlatField's range samples, where start is the index of the first sample to update and range[0].length is the number of samples to update; the array is dimensioned double[number_of_range_components][number_of_range_samples]

Specified by:
setSamples in interface FlatFieldIface
Overrides:
setSamples in class FlatField
Throws:
RemoteException
VisADException

setSamples

public void setSamples(float[][] range,
                       ErrorEstimate[] errors,
                       boolean copy)
                throws RemoteException,
                       VisADException
Description copied from class: FlatField
set the range values of the function including ErrorEstimate-s; the order of range values must be the same as the order of domain indices in the DomainSet

Specified by:
setSamples in interface FlatFieldIface
Overrides:
setSamples in class FlatField
Throws:
RemoteException
VisADException

grabBytes

public byte[][] grabBytes()
Specified by:
grabBytes in interface FlatFieldIface
Overrides:
grabBytes in class FlatField

grabBytes

public static byte[][] grabBytes(BufferedImage image)