@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(); ArrayBufferView buffer; if (pixels instanceof FloatBuffer) { buffer = webGLArray; } else { int remainingBytes = pixels.remaining() * 4; int byteOffset = webGLArray.byteOffset() + pixels.position() * 4; 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, 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(); ArrayBufferView buffer; if (pixels instanceof FloatBuffer) { buffer = webGLArray; } else { int remainingBytes = pixels.remaining() * 4; int byteOffset = webGLArray.byteOffset() + pixels.position() * 4; 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, format, type, 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 == null) { gl.texImage2D(target, level, internalformat, width, height, border, format, type, null); } else { if (pixels.limit() > 1) { HasArrayBufferView arrayHolder = (HasArrayBufferView)pixels; ArrayBufferView webGLArray = arrayHolder.getTypedArray(); ArrayBufferView buffer; if (pixels instanceof FloatBuffer) { buffer = webGLArray; } else { int remainingBytes = pixels.remaining() * 4; int byteOffset = webGLArray.byteOffset() + pixels.position() * 4; 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)); // Prefer to use the HTMLImageElement when possible, since reading from the CanvasElement can be lossy. if (pixmap.canUseImageElement()) { gl.texImage2D(target, level, internalformat, format, type, pixmap.getImageElement()); } else { gl.texImage2D(target, level, internalformat, format, type, 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 == null) { gl.texImage2D(target, level, internalformat, width, height, border, format, type, null); } else { if (pixels.limit() > 1) { HasArrayBufferView arrayHolder = (HasArrayBufferView)pixels; ArrayBufferView webGLArray = arrayHolder.getTypedArray(); ArrayBufferView buffer; if (pixels instanceof FloatBuffer) { buffer = webGLArray; } else { int remainingBytes = pixels.remaining() * 4; int byteOffset = webGLArray.byteOffset() + pixels.position() * 4; 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)); // Prefer to use the HTMLImageElement when possible, since reading from the CanvasElement can be lossy. if (pixmap.canUseImageElement()) { gl.texImage2D(target, level, internalformat, format, type, pixmap.getImageElement()); } else { gl.texImage2D(target, level, internalformat, format, type, pixmap.getCanvasElement()); } } } }
@Override public Uint8ArrayNative createUint8Array(ArrayBuffer buffer, int byteOffset) { return Uint8ArrayNative.create(buffer, byteOffset); }
/** * Internal constructor for creating an {@link Uint8ClampedArrayNativeEmul} * on an existing {@link ArrayBuffer} instance. * * @param buffer * @param byteOffset * @param length */ protected Uint8ClampedArrayNativeEmul(ArrayBuffer buffer, int byteOffset, int length) { real = Uint8ArrayNative.create(buffer, byteOffset, length); }
@Override public Uint8ArrayNative createUint8Array(ArrayBuffer buffer, int byteOffset, int length) { return Uint8ArrayNative.create(buffer, byteOffset, length); }
@Override public Uint8ArrayNative createUint8Array(ArrayBuffer buffer) { return Uint8ArrayNative.create(buffer); }
@Override public Uint8ArrayNative createUint8Array(int length) { return Uint8ArrayNative.create(length); }
protected DataViewNativeEmul(ArrayBuffer buffer, int byteOffset, int byteLength) { this.buffer = buffer; this.bufferByteOffset = byteOffset; this.byteLength = byteLength; tempBuffer = Uint8ArrayNative.create(ArrayBufferNative.create(8), 0, 8); uint8Array = Uint8ArrayNative.create(buffer, byteOffset, byteLength); }
/** * Create a {@link Uint8Array} instance from an array. * * @param array an array of initial values * @return a {@link Uint8Array} instance */ public static Uint8ArrayNative create(int[] array) { return create(JsArrayUtils.readOnlyJsArray(array)); }
/** * Create a {@link Uint8Array} instance from an array. * * @param array an array of initial values * @return a {@link Uint8Array} instance */ public static Uint8ArrayNative create(short[] array) { return create(JsArrayUtils.readOnlyJsArray(array)); }
@Override public void setUint8(int byteOffset, int value) { Uint8ArrayNative.create(buffer, byteOffset, 1).set(0, value); }
@Override public short getUint8(int byteOffset) { return Uint8ArrayNative.create(buffer, byteOffset, 1).get(0); }
/** * Internal constructor for creating an {@link Uint8ClampedArrayNativeEmul} * on an existing {@link ArrayBuffer} instance. * * @param buffer * @param byteOffset * @param length */ protected Uint8ClampedArrayNativeEmul(ArrayBuffer buffer, int byteOffset, int length) { real = Uint8ArrayNative.create(buffer, byteOffset, length); }
protected DataViewNativeEmul(ArrayBuffer buffer, int byteOffset, int byteLength) { this.buffer = buffer; this.bufferByteOffset = byteOffset; this.byteLength = byteLength; tempBuffer = Uint8ArrayNative.create(ArrayBufferNative.create(8), 0, 8); uint8Array = Uint8ArrayNative.create(buffer, byteOffset, byteLength); }
protected DataViewNativeEmul(ArrayBuffer buffer, int byteOffset, int byteLength) { this.buffer = buffer; this.bufferByteOffset = byteOffset; this.byteLength = byteLength; tempBuffer = Uint8ArrayNative.create(ArrayBufferNative.create(8), 0, 8); uint8Array = Uint8ArrayNative.create(buffer, byteOffset, byteLength); }
/** * Create a {@link Uint8Array} instance from an array. * * @param array an array of initial values * @return a {@link Uint8Array} instance */ public static Uint8ArrayNative create(short[] array) { return create(JsArrayUtils.readOnlyJsArray(array)); }
/** * Create a {@link Uint8Array} instance from an array. * * @param array an array of initial values * @return a {@link Uint8Array} instance */ public static Uint8ArrayNative create(int[] array) { return create(JsArrayUtils.readOnlyJsArray(array)); }
/** * Create a {@link Uint8Array} instance from an array. * * @param array an array of initial values * @return a {@link Uint8Array} instance */ public static Uint8ArrayNative create(short[] array) { return create(JsArrayUtils.readOnlyJsArray(array)); }