@Override public void glTexImage2D (int target, int level, int internalformat, int width, int height, int border, int format, int type, Buffer pixels) { if (pixels.limit() > 1) { HasArrayBufferView arrayHolder = (HasArrayBufferView) pixels; ArrayBufferView webGLArray = arrayHolder.getTypedArray(); int remainingBytes = pixels.remaining() * 4; int byteOffset = webGLArray.byteOffset() + pixels.position() * 4; Uint8Array buffer = Uint8ArrayNative.create(webGLArray.buffer(), byteOffset, remainingBytes); gl.texImage2D(target, level, internalformat, width, height, border, format, type, buffer); } else { Pixmap pixmap = Pixmap.pixmaps.get(((IntBuffer)pixels).get(0)); gl.texImage2D(target, level, internalformat, format, type, pixmap.getCanvasElement()); } }
@Override public void glTexSubImage2D (int target, int level, int xoffset, int yoffset, int width, int height, int format, int type, Buffer pixels) { if (pixels.limit() > 1) { HasArrayBufferView arrayHolder = (HasArrayBufferView) pixels; ArrayBufferView webGLArray = arrayHolder.getTypedArray(); int remainingBytes = pixels.remaining() * 4; int byteOffset = webGLArray.byteOffset() + pixels.position() * 4; Uint8Array buffer = Uint8ArrayNative.create(webGLArray.buffer(), byteOffset, remainingBytes); gl.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, buffer); } else { Pixmap pixmap = Pixmap.pixmaps.get(((IntBuffer) pixels).get(0)); gl.texSubImage2D(target, level, xoffset, yoffset, width, height, pixmap.getCanvasElement()); } }
@Override public void glTexImage2D (int target, int level, int internalformat, int width, int height, int border, int format, int type, Buffer pixels) { if (pixels.limit() > 1) { HasArrayBufferView arrayHolder = (HasArrayBufferView) pixels; ArrayBufferView webGLArray = arrayHolder.getTypedArray(); int remainingBytes = pixels.remaining() * 4; int byteOffset = webGLArray.byteOffset() + pixels.position() * 4; Uint8Array buffer = Uint8ArrayNative.create(webGLArray.buffer(), byteOffset, remainingBytes); gl.texImage2D(target, level, internalformat, width, height, border, format, type, buffer); } else { // Put this back later Pixmap pixmap = Pixmap.pixmaps.get(((IntBuffer)pixels).get(0)); gl.texImage2D(target, level, internalformat, format, type, pixmap.getCanvasElement()); } }
@Override public void glTexSubImage2D (int target, int level, int xoffset, int yoffset, int width, int height, int format, int type, Buffer pixels) { if (pixels.limit() > 1) { HasArrayBufferView arrayHolder = (HasArrayBufferView) pixels; ArrayBufferView webGLArray = arrayHolder.getTypedArray(); int remainingBytes = pixels.remaining() * 4; int byteOffset = webGLArray.byteOffset() + pixels.position() * 4; Uint8Array buffer = Uint8ArrayNative.create(webGLArray.buffer(), byteOffset, remainingBytes); gl.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, buffer); } else { // Put this back later Pixmap pixmap = Pixmap.pixmaps.get(((IntBuffer) pixels).get(0)); gl.texSubImage2D(target, level, xoffset, yoffset, width, height, pixmap.getCanvasElement()); } }
public Face newMemoryFace (ByteBuffer buffer, int faceIndex) { ArrayBufferView buf = ((HasArrayBufferView)buffer).getTypedArray(); int[] addressToFree = new int[] {0}; // Hacky way to get two return values int face = newMemoryFace(address, buf, buffer.remaining(), faceIndex, addressToFree); if (face == 0) { if (addressToFree[0] != 0) { // 'Zero' would mean allocating the buffer failed nativeFree(addressToFree[0]); } throw new GdxRuntimeException("Couldn't load font"); } else { fontData.put(face, addressToFree[0]); return new Face(face, this); } }
public Float32Array copy (FloatBuffer buffer) { if (GWT.isProdMode()) { return ((Float32Array)((HasArrayBufferView)buffer).getTypedArray()).subarray(buffer.position(), buffer.remaining()); } else { ensureCapacity(buffer); for (int i = buffer.position(), j = 0; i < buffer.limit(); i++, j++) { floatBuffer.set(j, buffer.get(i)); } return floatBuffer.subarray(0, buffer.remaining()); } }
public Int16Array copy (ShortBuffer buffer) { if (GWT.isProdMode()) { return ((Int16Array)((HasArrayBufferView)buffer).getTypedArray()).subarray(buffer.position(), buffer.remaining()); } else { ensureCapacity(buffer); for (int i = buffer.position(), j = 0; i < buffer.limit(); i++, j++) { shortBuffer.set(j, buffer.get(i)); } return shortBuffer.subarray(0, buffer.remaining()); } }
public Int32Array copy (IntBuffer buffer) { if (GWT.isProdMode()) { return ((Int32Array)((HasArrayBufferView)buffer).getTypedArray()).subarray(buffer.position(), buffer.remaining()); } else { ensureCapacity(buffer); for (int i = buffer.position(), j = 0; i < buffer.limit(); i++, j++) { intBuffer.set(j, buffer.get(i)); } return intBuffer.subarray(0, buffer.remaining()); } }
public void putPixelsBack (ByteBuffer pixels) { if (getWidth() == 0 || getHeight() == 0) return; putPixelsBack(((HasArrayBufferView)pixels).getTypedArray(), getWidth(), getHeight(), getContext()); }