hmi.graphics.collada
Class Accessor

java.lang.Object
  extended by hmi.xml.XMLStructureAdapter
      extended by hmi.graphics.collada.ColladaElement
          extended by hmi.graphics.collada.Accessor
All Implemented Interfaces:
XMLStructure

public class Accessor
extends ColladaElement

Collada Accessor nodes provide access to some data array, like a FloatArray or an IntArray. The actual type of the accessor is determined from the type of its array. We assume that parameters have the same type. The data array must first be "resolved" before it can be accessed, by calling the resolve() method.

Author:
Job Zwiers

Field Summary
private  int aOffset
           
private  String arrayId
           
private  int arrayType
           
private  int blockSize
           
private  int bOffset
           
private  boolean[] bools
           
private  int count
           
private static int[] EMPTYFIELD_OFFSETS
           
private static int[] EMPTYFIELD_SIZES
           
private  Map<String,Integer> fieldOffsets
           
private  Map<String,Integer> fieldSizes
           
private static String FLOATFIELDNAMES
           
private  float[] floats
           
private  int gOffset
           
private  String[] idrefs
           
private  int[] ints
           
private static int LISTSIZE
           
private  String[] names
           
private  int nrOfNamedParams
           
private  int nrOfPars
           
private  int offset
           
private  int[] paramOffsets
           
private  ArrayList<Param> params
           
private  int[] paramSizes
           
private  int[] parOffsets
           
private  int[] parSizes
           
private  int pOffset
           
private  int qOffset
           
private  boolean resolved
           
private  int rOffset
           
private  int sOffset
           
private  String sourceURL
           
private  int stride
           
private  int tOffset
           
private  int totalLength
           
private  int wOffset
           
private static String XMLTAG
          The XML Stag for XML encoding
private  int xOffset
           
private  int yOffset
           
private  int zOffset
           
 
Fields inherited from class hmi.graphics.collada.ColladaElement
COLLADANAMESPACE
 
Fields inherited from class hmi.xml.XMLStructureAdapter
ATTRIBUTE_TOKEN_DELIMITERS, COMMA_SEPARATOR, DECODEDARRAYSIZE, DEFAULT_RECOVER_MODE, NEWLINE, SYSTEMNEWLINE, TAB, TAB_STRING
 
Constructor Summary
Accessor()
          Default constructor
Accessor(Collada collada, XMLTokenizer tokenizer)
          Constructor used to create an Accessor Object from XML
 
Method Summary
 StringBuilder appendAttributes(StringBuilder buf)
          appends a String of attributes to buf.
 StringBuilder appendContent(StringBuilder buf, XMLFormatting fmt)
          Appends a String to buf that encodes the contents for the XML encoding.
private  void calcTmpVars(String[] fieldNames)
           
 void decodeAttributes(HashMap<String,String> attrMap, XMLTokenizer tokenizer)
          decodes the XML attributes
 void decodeContent(XMLTokenizer tokenizer)
          decodes the XML contents, i.e. the XML between the STag and ETag of the encoding.
private  int getFieldOffset(String fieldName)
           
private  int[] getFieldOffsets(String[] fieldNames)
           
private  int getFieldSize(String fieldName)
           
private  int[] getFieldSizes(String[] fieldNames)
           
 boolean[] getHomogeneousBoolData()
          Like getHomogeneousFloatData, but accesses BoolArray data.
 boolean[] getHomogeneousBoolData(String[] fieldNames)
          Like getHomogeneousFloatData, but accesses BoolArray data.
 float[] getHomogeneousFloatData()
          Like getHomogeneousFloatData(null);
 float[] getHomogeneousFloatData(String[] fieldNames)
          returns the float data from from the Collada FloatArray in a Java float array.
 String[] getHomogeneousIDREFData()
          Like getHomogeneousFloatData, but accesses IDREFArray data.
 String[] getHomogeneousIDREFData(String[] fieldNames)
          Like getHomogeneousFloatData, but accesses IDREFArray data.
 int[] getHomogeneousIntData(String[] fieldNames)
          Like getHomogeneousFloatData, but accesses IntArray data.
 String[] getHomogeneousNameData()
          Like getHomogeneousFloatData, but accesses NameArray data.
 String[] getHomogeneousNameData(String[] fieldNames)
          Like getHomogeneousFloatData, but accesses NameArray data.
 int getNrOfNamedParams()
          Returns the number of named parameters for this Accessor
 String getXMLTag()
          returns the XML Stag for XML encoding
 void resolve()
          method that should be called in order to resolve the source data array, before the accessor can be used to actually access data.
static String xmlTag()
          The XML Stag for XML encoding
 
Methods inherited from class hmi.graphics.collada.ColladaElement
addColladaNode, addColladaNodes, addToIdMap, getCollada, getColladaNodes, getId, getIdMap, getIdOrName, getIds, getName, getNamespace, getRecursiveColladaNodes, getRecursiveColladaNodes, getResources, getSid, report, reportNode, setCollada, setId, setName, setSid, urlToId
 
Methods inherited from class hmi.xml.XMLStructureAdapter
appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttribute, appendAttributes, appendAttributeString, appendAttributeString, appendBooleans, appendCloseEmptyTag, appendCloseSTag, appendComment, appendContent, appendDoubleElement, appendEmptyTag, appendEmptyTag, appendEmptyTag, appendEmptyTag, appendEmptyTag, appendEmptyTag, appendETag, appendETag, appendFloatArrayElement, appendFloatElement, appendFloats, appendIntArrayElement, appendIntElement, appendInts, appendLongElement, appendNewLine, appendNewLine, appendNewLine, appendOpenSTag, appendOptionalDoubleElement, appendOptionalFloatElement, appendOptionalIntElement, appendOptionalLongElement, appendSpaces, appendSpaces, appendSTag, appendSTag, appendSTag, appendStringArrayElement, appendStrings, appendSystemNewLine, appendTab, appendTextElement, appendXML, appendXML, appendXML, appendXML, appendXML, appendXMLStructure, appendXMLStructureList, appendXMLTextElementList, countTokens, countTokens, decodeAttribute, decodeAttribute, decodeBoolean, decodeBooleanArray, decodeBooleanArray, decodeBooleanArray, decodeBooleanArray, decodeDouble, decodeDoubleArray, decodeDoubleArray, decodeDoubleArray, decodeDoubleArray, decodeFloat, decodeFloatArray, decodeFloatArray, decodeFloatArray, decodeFloatArray, decodeInt, decodeIntArray, decodeIntArray, decodeIntArray, decodeIntArray, decodeLong, decodeStringArray, decodeStringArray, decodeStringArray, decodeStringArray, decodeXMLStructureList, decodeXMLValueElement, getOptionalAttribute, getOptionalAttribute, getOptionalBooleanAttribute, getOptionalDoubleAttribute, getOptionalFloatAttribute, getOptionalIntAttribute, getOptionalLongAttribute, getRequiredAttribute, getRequiredBooleanAttribute, getRequiredDoubleAttribute, getRequiredFloatAttribute, getRequiredIntAttribute, getRequiredLongAttribute, getTagLine, hasContent, parseXMLElement, postProcess, preProcess, readXML, readXML, readXML, setConsoleAttributeEnabled, setDefaultRecoverMode, setRecoverMode, spaces, toString, toXMLString, toXMLString, toXMLString, toXMLString, toXMLString, toXMLString, writeXML, writeXML, writeXML, writeXML
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

count

private int count

offset

private int offset

stride

private int stride

sourceURL

private String sourceURL

arrayType

private int arrayType

arrayId

private String arrayId

floats

private float[] floats

ints

private int[] ints

bools

private boolean[] bools

names

private String[] names

idrefs

private String[] idrefs

resolved

private boolean resolved

LISTSIZE

private static final int LISTSIZE
See Also:
Constant Field Values

params

private ArrayList<Param> params

nrOfNamedParams

private int nrOfNamedParams

paramOffsets

private int[] paramOffsets

paramSizes

private int[] paramSizes

xOffset

private int xOffset

yOffset

private int yOffset

zOffset

private int zOffset

wOffset

private int wOffset

sOffset

private int sOffset

tOffset

private int tOffset

pOffset

private int pOffset

qOffset

private int qOffset

aOffset

private int aOffset

rOffset

private int rOffset

gOffset

private int gOffset

bOffset

private int bOffset

FLOATFIELDNAMES

private static final String FLOATFIELDNAMES
See Also:
Constant Field Values

fieldOffsets

private Map<String,Integer> fieldOffsets

fieldSizes

private Map<String,Integer> fieldSizes

nrOfPars

private int nrOfPars

parOffsets

private int[] parOffsets

parSizes

private int[] parSizes

blockSize

private int blockSize

totalLength

private int totalLength

EMPTYFIELD_OFFSETS

private static final int[] EMPTYFIELD_OFFSETS

EMPTYFIELD_SIZES

private static final int[] EMPTYFIELD_SIZES

XMLTAG

private static final String XMLTAG
The XML Stag for XML encoding

See Also:
Constant Field Values
Constructor Detail

Accessor

public Accessor()
Default constructor


Accessor

public Accessor(Collada collada,
                XMLTokenizer tokenizer)
         throws IOException
Constructor used to create an Accessor Object from XML

Throws:
IOException
Method Detail

resolve

public void resolve()
method that should be called in order to resolve the source data array, before the accessor can be used to actually access data.


getNrOfNamedParams

public int getNrOfNamedParams()
Returns the number of named parameters for this Accessor


calcTmpVars

private void calcTmpVars(String[] fieldNames)

getHomogeneousFloatData

public float[] getHomogeneousFloatData(String[] fieldNames)
returns the float data from from the Collada FloatArray in a Java float array. The number of floats equals the number of (named) parameters times the "count" attribute of this accessor. The FloatArray is accessed in accordance with the offset and stride attributes of this Accessor; No such offset and stride apply to the destination, i.e. the result is a simple, homogeneous array of consecutive data. If the result turns out to be an exact copy of the floats FloatArray, a reference to the floats array of the latter is returned. Otherwise, a new float array is allocated, and the requied data is copied.


getHomogeneousFloatData

public float[] getHomogeneousFloatData()
Like getHomogeneousFloatData(null);


getHomogeneousIntData

public int[] getHomogeneousIntData(String[] fieldNames)
Like getHomogeneousFloatData, but accesses IntArray data.


getHomogeneousBoolData

public boolean[] getHomogeneousBoolData(String[] fieldNames)
Like getHomogeneousFloatData, but accesses BoolArray data.


getHomogeneousBoolData

public boolean[] getHomogeneousBoolData()
Like getHomogeneousFloatData, but accesses BoolArray data.


getHomogeneousNameData

public String[] getHomogeneousNameData(String[] fieldNames)
Like getHomogeneousFloatData, but accesses NameArray data.


getHomogeneousNameData

public String[] getHomogeneousNameData()
Like getHomogeneousFloatData, but accesses NameArray data.


getHomogeneousIDREFData

public String[] getHomogeneousIDREFData(String[] fieldNames)
Like getHomogeneousFloatData, but accesses IDREFArray data.


getHomogeneousIDREFData

public String[] getHomogeneousIDREFData()
Like getHomogeneousFloatData, but accesses IDREFArray data.


getFieldOffset

private int getFieldOffset(String fieldName)

getFieldSize

private int getFieldSize(String fieldName)

getFieldOffsets

private int[] getFieldOffsets(String[] fieldNames)

getFieldSizes

private int[] getFieldSizes(String[] fieldNames)

appendAttributes

public StringBuilder appendAttributes(StringBuilder buf)
appends a String of attributes to buf.

Overrides:
appendAttributes in class ColladaElement

decodeAttributes

public void decodeAttributes(HashMap<String,String> attrMap,
                             XMLTokenizer tokenizer)
decodes the XML attributes

Overrides:
decodeAttributes in class ColladaElement

appendContent

public StringBuilder appendContent(StringBuilder buf,
                                   XMLFormatting fmt)
Description copied from class: XMLStructureAdapter
Appends a String to buf that encodes the contents for the XML encoding. MUST BE OVERWRITTEN BY IMPLEMENTATIONS. (The default implementation appends nothing). The encoding should start on a new line, using indentation equal to tab. There should be no newline after the encoding.

Overrides:
appendContent in class XMLStructureAdapter

decodeContent

public void decodeContent(XMLTokenizer tokenizer)
                   throws IOException
Description copied from class: XMLStructureAdapter
decodes the XML contents, i.e. the XML between the STag and ETag of the encoding. MUST BE OVERWRITTEN BY IMPLEMENTATIONS.

Overrides:
decodeContent in class XMLStructureAdapter
Throws:
IOException

xmlTag

public static String xmlTag()
The XML Stag for XML encoding


getXMLTag

public String getXMLTag()
returns the XML Stag for XML encoding

Specified by:
getXMLTag in interface XMLStructure
Overrides:
getXMLTag in class XMLStructureAdapter