com.gargoylesoftware.htmlunit.javascript.host.arrays.Float32Array Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of htmlunit Show documentation
Show all versions of htmlunit Show documentation
A headless browser intended for use in testing web-based applications.
/*
* Copyright (c) 2002-2015 Gargoyle Software Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gargoylesoftware.htmlunit.javascript.host.arrays;
import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.FF;
import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.IE;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstant;
import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor;
import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
import net.sourceforge.htmlunit.corejs.javascript.Scriptable;
/**
* Represents an array of 32-bit floating point numbers.
*
* @version $Revision: 10780 $
* @author Ahmed Ashour
* @author Frank Danek
*/
@JsxClass(browsers = { @WebBrowser(FF), @WebBrowser(CHROME), @WebBrowser(value = IE, minVersion = 11) })
public class Float32Array extends ArrayBufferViewBase {
/** The size, in bytes, of each array element. */
@JsxConstant
public static final int BYTES_PER_ELEMENT = 4;
/**
* {@inheritDoc}
*/
@Override
@JsxConstructor
public void constructor(final Object object, final Object byteOffset, final Object length) {
super.constructor(object, byteOffset, length);
}
/**
* {@inheritDoc}
*/
@Override
protected byte[] toArray(final Number number) {
final ByteBuffer buff = ByteBuffer.allocate(BYTES_PER_ELEMENT);
buff.order(ByteOrder.LITTLE_ENDIAN);
buff.putFloat(number.floatValue());
return buff.array();
}
/**
* {@inheritDoc}
*/
@Override
protected Object fromArray(final byte[] array, final int offset) {
if (offset >= array.length) {
return Scriptable.NOT_FOUND;
}
final ByteBuffer buff = ByteBuffer.wrap(array);
buff.order(ByteOrder.LITTLE_ENDIAN);
return buff.getFloat(offset);
}
/**
* {@inheritDoc}
*/
@Override
protected int getBytesPerElement() {
return BYTES_PER_ELEMENT;
}
}