Example usage for com.google.gwt.typedarrays.client Uint16Array create

List of usage examples for com.google.gwt.typedarrays.client Uint16Array create

Introduction

In this page you can find the example usage for com.google.gwt.typedarrays.client Uint16Array create.

Prototype

public static final Uint16Array create(short[] data, int offset, int len) 

Source Link

Usage

From source file:playn.html.HtmlGL20.java

License:Apache License

/**
 * Returns the typed array of the given native buffer.
 * Set byteSize to -1 to use remaining()
 *///  w w  w . j  a va2 s .c o m
protected ArrayBufferView getTypedArray(Buffer buffer, int type, int byteSize) {
    if (!(buffer instanceof HasArrayBufferView)) {
        throw new RuntimeException("Native buffer required " + buffer);
    }
    HasArrayBufferView arrayHolder = (HasArrayBufferView) buffer;
    int bufferElementSize = arrayHolder.getElementSize();

    ArrayBufferView webGLArray = arrayHolder.getTypedArray();
    if (byteSize == -1) {
        byteSize = buffer.remaining() * bufferElementSize;
    }
    if (byteSize == buffer.capacity() * bufferElementSize && type == arrayHolder.getElementType()) {
        return webGLArray;
    }

    int byteOffset = webGLArray.getByteOffset() + buffer.position() * bufferElementSize;

    switch (type) {
    case FLOAT:
        return Float32Array.create(webGLArray.getBuffer(), byteOffset, byteSize / 4);
    case UNSIGNED_BYTE:
        return Uint8Array.create(webGLArray.getBuffer(), byteOffset, byteSize);
    case UNSIGNED_SHORT:
        return Uint16Array.create(webGLArray.getBuffer(), byteOffset, byteSize / 2);
    case INT:
        return Int32Array.create(webGLArray.getBuffer(), byteOffset, byteSize / 4);
    case SHORT:
        return Int16Array.create(webGLArray.getBuffer(), byteOffset, byteSize / 2);
    case BYTE:
        return Int8Array.create(webGLArray.getBuffer(), byteOffset, byteSize);
    default:
        throw new IllegalArgumentException("Type: " + type);
    }
}