All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gov.nasa.worldwind.ogc.collada.ColladaFloatArray Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (C) 2012 United States Government as represented by the Administrator of the
 * National Aeronautics and Space Administration.
 * All Rights Reserved.
 */

package gov.nasa.worldwind.ogc.collada;

import gov.nasa.worldwind.util.WWUtil;
import gov.nasa.worldwind.util.xml.XMLEventParserContext;

import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.XMLEvent;

/**
 * Represents the COLLADA float_array element and provides access to its contents.
 *
 * @author pabercrombie
 * @version $Id: ColladaFloatArray.java 662 2012-06-26 19:05:46Z pabercrombie $
 */
public class ColladaFloatArray extends ColladaAbstractObject
{
    /** Floats parsed from this element. */
    protected float[] floats;

    /**
     * Construct an instance.
     *
     * @param ns the qualifying namespace URI. May be null to indicate no namespace qualification.
     */
    public ColladaFloatArray(String ns)
    {
        super(ns);
    }

    /**
     * Indicates the float array contained in this element.
     *
     * @return Floats contained in this element. May return an empty array, but will not return null.
     */
    public float[] getFloats()
    {
        return (this.floats != null) ? this.floats : new float[0];
    }

    /** {@inheritDoc} Overridden to parse character content into a float[]. */
    @Override
    public Object parse(XMLEventParserContext ctx, XMLEvent event, Object... args) throws XMLStreamException
    {
        super.parse(ctx, event, args);

        if (this.hasField(CHARACTERS_CONTENT))
        {
            String s = (String) this.getField(CHARACTERS_CONTENT);
            if (!WWUtil.isEmpty(s))
                this.floats = this.parseFloats(s);

            // Don't need to keep string version of the floats
            this.removeField(CHARACTERS_CONTENT);
        }

        return this;
    }

    /**
     * Parse a string of floats into an array.
     *
     * @param floatArrayString String of floats separated by whitespace.
     *
     * @return Array of parsed floats.
     */
    protected float[] parseFloats(String floatArrayString)
    {
        String[] arrayOfNumbers = floatArrayString.split("\\s");
        float[] ary = new float[arrayOfNumbers.length];

        int i = 0;
        for (String s : arrayOfNumbers)
        {
            if (!WWUtil.isEmpty(s))
                ary[i++] = Float.parseFloat(s);
        }

        return ary;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy