Class MFColorRGBA

java.lang.Object
org.web3d.x3d.jsail.fields.X3DConcreteField
org.web3d.x3d.jsail.fields.MFColorRGBA
All Implemented Interfaces:
MFColorRGBA, MField, X3DField

public class MFColorRGBA extends X3DConcreteField implements MFColorRGBA
This utility class provides a concrete implementation corresponding to MFColorRGBA X3D field type.

Warning: this is an abstract interface that cannot be instantiated as a concrete object. Java programmers typically only need to use concrete objects provided by the org.web3d.x3d.jsail classes.
Note that SFColor provides a variety of color constants.

Package hint: This specification class is defined by the X3D Java Language Binding Specification for the Scene Authoring Interface (SAI). MFColorRGBA specifies zero or more SFColorRGBA 4-tuples, where each color value is an RGBA 4-tuple of floating point numbers in range [0,1]. Alpha (opacity) values = (1 - transparency). The default value of an uninitialized MFColor field is the empty list. Individual SFColorRGBA array values are optionally separated by commas in XML syntax.

Related field object: SFColorRGBA
See Also:
  • Field Details

  • Constructor Details

    • MFColorRGBA

      public MFColorRGBA()
      Constructor for MFColorRGBA performs value initialization.
    • MFColorRGBA

      public MFColorRGBA(MFColorRGBA newValue)
      Constructor to copy an MFColorRGBA value as initial value for this new field object.
      Parameters:
      newValue - The newValue to apply
    • MFColorRGBA

      public MFColorRGBA(float[] newValue)
      Constructor for MFColorRGBA using a corresponding Java primitive float[] array as new initial value.
      Parameters:
      newValue - is new value to assign Warning: newValue array length must correspond to tuple size for base type MFColorRGBA tuple size of 4. setContainerFieldOverride(containerFieldName); // apply checksConcreteField#getTupleSize(String)
    • MFColorRGBA

      public MFColorRGBA(SFColorRGBA newValue)
      Utility constructor for MFColorRGBA to assign a single SFColorRGBA as new initial value.
      Parameters:
      newValue - is new value to assign
    • MFColorRGBA

      public MFColorRGBA(double[] newValue)
      Utility constructor for MFColorRGBA using an alternatively typed Java double[] array as new initial value.
      Parameters:
      newValue - is new value to assign
  • Method Details

    • isArray

      public static final boolean isArray()
      Whether or not this field type is an array (true)
      Returns:
      true if array type
    • initialize

      public final void initialize()
      Initialization for MFColorRGBA applies default initial value. Static initializer also provided to verify that the regex pattern compiles and matches that default value.
      Specified by:
      initialize in class X3DConcreteField
      See Also:
    • equals

      public boolean equals(MFColorRGBA comparisonMFColorRGBA)
      Determine whether two objects contain equal values.
      Parameters:
      comparisonMFColorRGBA - field type to compare
      Returns:
      true if equivalent, false otherwise
    • validate

      public final String validate()
      Validate current value via get/set comparison tests
      Returns:
      empty string if get/set testing passes, warning otherwise
      See Also:
    • validateRegex

      public final String validateRegex()
      Validate current value via regular expression (regex) check of current object's toString() value, reporting errors only if found.
      Returns:
      empty string if PATTERN matches, warning otherwise
      See Also:
    • matches

      public final boolean matches()
      Test PATTERN match via regular expression (regex) check of current object's toString() value.
      Returns:
      true if PATTERN matches, false otherwise
      See Also:
    • matches

      public static final boolean matches(String value)
      Test PATTERN match with regular expression (regex) of provided value.
      Parameters:
      value - String to check against regex pattern for successful match
      Returns:
      true if PATTERN matches, false otherwise
      See Also:
    • setValueByString

      public MFColorRGBA setValueByString(String newValue) throws InvalidFieldValueException
      Utility accessor for MFColorRGBA using String value (which must pass parsing validation checks).

      Warning: this method is not type safe at compile time! Best practice for X3DJSAIL programmers is to use strongly typed methods instead, in order to avoid potential for run-time errors.
      Parameters:
      newValue - is new value to assign, if empty then assign DEFAULT_VALUE
      Returns:
      MFMatrix4d - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same node object).
      Throws:
      InvalidFieldValueException
      See Also:
    • set1Value

      public MFColorRGBA set1Value(int index, int hexColorValue, float alpha) throws ArrayIndexOutOfBoundsException
      Replace a single value at the appropriate location in the existing value array. Size of the current underlying value array does not change. Warning: newValue array length must correspond to tuple size for base type MFColorRGBA tuple size of 4.
      Parameters:
      index - is position of selected value in current array
      hexColorValue - The HTML color value (such as 0xAA2288) to apply
      alpha - fourth component for opaqueness (1 - transparency)
      Returns:
      MFColorRGBA - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      Throws:
      ArrayIndexOutOfBoundsException
      See Also:
    • complementRGB

      public MFColorRGBA complementRGB()
      Complement all color values of array in RGB space (i.e. subtract each component from 1).
      Returns:
      MFColorRGBA - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      See Also:
    • complementAlpha

      public MFColorRGBA complementAlpha()
      Complement each alpha value of array by subtracting it from 1, note transparency = (1 - alpha).
      Returns:
      MFColorRGBA - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      See Also:
    • normalizeClip

      public MFColorRGBA normalizeClip()
      Ensure all component color values are within range [0-1] by clipping as necessary.
      Returns:
      MFColorRGBA - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      See Also:
    • toString

      public static String toString(float[] value)
      Static utility method to provide String representation of a correctly typed input value.
      Parameters:
      value - The value to convert to a String
      Returns:
      String version of the provided value, with trailing zeroes and decimal points omitted.
      See Also:
    • getValue

      public void getValue(float[] valueDestination)
      Get the current value of this MFColorRGBA by copying it into the valueDestination array, leaving the current object unchanged.
      Specified by:
      getValue in interface MFColorRGBA
      Parameters:
      valueDestination - The array to be filled in with current field values.
    • getPrimitiveValue

      public float[] getPrimitiveValue()
      Provides current value of the field as a Java primitive type.
      Returns:
      current value
    • toString

      public String toString()
      Provides current value as a String.
      Overrides:
      toString in class Object
      Returns:
      String version of the provided value, with trailing zeroes and decimal points omitted.
      See Also:
    • get1Value

      public void get1Value(int index, float[] destinationValue)

      Get an individual value from the existing field array.

      If the index is outside the bounds of the current array of data values, an ArrayIndexOutOfBoundsException is thrown.

      Specified by:
      get1Value in interface MFColorRGBA
      Parameters:
      index - is position of selected value in current array
      destinationValue - where to place result for selected value
      Throws:
      ArrayIndexOutOfBoundsException - The index was outside of the bounds of the current array.
    • setValue

      public void setValue(int size, float[] newValue)
      Assign an array subset to this field. Warning: newValue array length must correspond to tuple size for base type MFColorRGBA tuple size of 4.
      Specified by:
      setValue in interface MFColorRGBA
      Parameters:
      size - indicates size of result to copy (i.e. the number of typed singleton values) from beginning of newValue array.
      newValue - The replacement value array to (potentially) slice and then assign.
      See Also:
    • setValue

      public void setValue(float[] newValue)
      Assign a new float[] value to this field. Warning: newValue array length must correspond to tuple size for base type MFColorRGBA tuple size of 4.
      Parameters:
      newValue - is replacement value array to assign
      See Also:
    • setValue

      public MFColorRGBA setValue(double[] newValue)
      Assign a double-precision array value to this single-precision field.

      Warning: this method casts type of input values from higher precision to lower precision.

      Warning: newValue array length must correspond to tuple size for base type MFColorRGBA tuple size of 4.
      Parameters:
      newValue - is replacement value array to assign
      Returns:
      MFColorRGBA - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      See Also:
    • setValue

      public MFColorRGBA setValue(SFColorRGBA newValue)
      Assign a single-field SFColorRGBA as new array value.
      Parameters:
      newValue - The replacement value to assign.
      Returns:
      MFColorRGBA - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same node object).
    • set1Value

      public void set1Value(int index, float[] newValue) throws ArrayIndexOutOfBoundsException
      Replace a single value at the appropriate location in the existing value array. Size of the current underlying value array does not change. Warning: newValue array length must correspond to tuple size for base type MFColorRGBA tuple size of 4.
      Specified by:
      set1Value in interface MFColorRGBA
      Parameters:
      index - is position of selected value in current array
      newValue - provides new value to apply
      Throws:
      ArrayIndexOutOfBoundsException
      See Also:
    • append

      public void append(float[] newValue)
      Places new value(s) at the end of the existing value array, increasing the field length accordingly. Warning: newValue array length must correspond to tuple size for base type MFColorRGBA tuple size of 4.
      Specified by:
      append in interface MFColorRGBA
      Parameters:
      newValue - The newValue to append
      See Also:
    • append

      public MFColorRGBA append(SFColorRGBA newValue)
      Appends a new singleton typed value at the end of the existing value array, increasing the field length accordingly. Note: this method can be useful for incrementally constructing arrays.
      Parameters:
      newValue - The newValue to append
      Returns:
      MFColorRGBA - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • append

      public MFColorRGBA append(MFColorRGBA newValue)
      Appends a new MFColorRGBA to the end of the existing value array, increasing the field length accordingly. Note: this method can be useful for constructing long arrays.
      Parameters:
      newValue - The newValue to append
      Returns:
      MFColorRGBA - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      See Also:
    • insertValue

      public void insertValue(int index, float[] newValue)
      Insert a new value prior to the index location in the existing value array, increasing the field length accordingly. Warning: newValue array length must correspond to tuple size for base type MFColorRGBA tuple size of 4.
      Specified by:
      insertValue in interface MFColorRGBA
      Parameters:
      index - The position for the inserted value in the current array
      newValue - The newValue to insert
      See Also:
    • size

      public int size()
      Get the size of the underlying data array, meaning the number of simple SFColorRGBA elements for the given data type.
      Specified by:
      size in interface MField
      Returns:
      The number of SFColorRGBA elements in this field array.
    • clear

      public void clear()
      Removes all values in the field array, changing the array size to zero.
      Specified by:
      clear in interface MField
    • remove

      public void remove(int index)
      Remove one SFColorRGBA element of the field array at index position, if found. Initial element is at index 0.
      Specified by:
      remove in interface MField
      Parameters:
      index - position of element in field array that gets removed
    • getValue

      public void getValue(float[][] valueDestination)
      Write out the current value of this field into the external valueDestination array.
      Specified by:
      getValue in interface MFColorRGBA
      Parameters:
      valueDestination - The array to be filled in with current field values.
      Throws:
      ArrayIndexOutOfBoundsException - The provided valueDestination array was too small.
    • setValue

      public void setValue(int size, float[][] newValue)
      Assign an array subset to this field. Warning: newValue array length must correspond to tuple size for base type MFColorRGBA tuple size of 4.
      Specified by:
      setValue in interface MFColorRGBA
      Parameters:
      size - indicates size of result to copy (i.e. the number of typed singleton values) from beginning of newValue array.
      newValue - The replacement value array to (potentially) slice and then assign.
      See Also:
    • toFloatArray

      public float[] toFloatArray()
      Provide float array for this field type.
      Returns:
      Array of floats in this field array.
    • setValue

      public MFColorRGBA setValue(MFColorRGBA newValue)
      Apply an MFColorRGBA value to this field.
      Parameters:
      newValue - The newValue to apply
      Returns:
      MFColorRGBA - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • isDefaultValue

      public boolean isDefaultValue()
      Determine whether current value matches DEFAULT_VALUE
      Returns:
      whether current value matches DEFAULT_VALUE
      See Also: