diff --git a/CanvasNative.podspec b/CanvasNative.podspec index 45998748..68f74ebe 100644 --- a/CanvasNative.podspec +++ b/CanvasNative.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "CanvasNative" - s.version = "1.0.0-alpha.2" + s.version = "1.0.0-alpha.3" s.summary = "A Canvas library" diff --git a/apps/demo-vue/app/plugin-demos/canvas-babylon.vue b/apps/demo-vue/app/plugin-demos/canvas-babylon.vue new file mode 100644 index 00000000..aa03c10e --- /dev/null +++ b/apps/demo-vue/app/plugin-demos/canvas-babylon.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/apps/demo-vue/app/plugin-demos/canvas-media.vue b/apps/demo-vue/app/plugin-demos/canvas-media.vue new file mode 100644 index 00000000..998e6e18 --- /dev/null +++ b/apps/demo-vue/app/plugin-demos/canvas-media.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/apps/demo-vue/app/plugin-demos/canvas-phaser-ce.vue b/apps/demo-vue/app/plugin-demos/canvas-phaser-ce.vue new file mode 100644 index 00000000..8251998c --- /dev/null +++ b/apps/demo-vue/app/plugin-demos/canvas-phaser-ce.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/apps/demo-vue/app/plugin-demos/canvas-phaser.vue b/apps/demo-vue/app/plugin-demos/canvas-phaser.vue new file mode 100644 index 00000000..3b78f8b0 --- /dev/null +++ b/apps/demo-vue/app/plugin-demos/canvas-phaser.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/apps/demo-vue/app/plugin-demos/canvas-pixi.vue b/apps/demo-vue/app/plugin-demos/canvas-pixi.vue new file mode 100644 index 00000000..47fa5267 --- /dev/null +++ b/apps/demo-vue/app/plugin-demos/canvas-pixi.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/apps/demo-vue/app/plugin-demos/canvas-polyfill.vue b/apps/demo-vue/app/plugin-demos/canvas-polyfill.vue new file mode 100644 index 00000000..0da23b6c --- /dev/null +++ b/apps/demo-vue/app/plugin-demos/canvas-polyfill.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/apps/demo-vue/app/plugin-demos/canvas-three.vue b/apps/demo-vue/app/plugin-demos/canvas-three.vue new file mode 100644 index 00000000..55c0a03c --- /dev/null +++ b/apps/demo-vue/app/plugin-demos/canvas-three.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/apps/demo-vue/app/plugin-demos/canvas.vue b/apps/demo-vue/app/plugin-demos/canvas.vue new file mode 100644 index 00000000..82ce46be --- /dev/null +++ b/apps/demo-vue/app/plugin-demos/canvas.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/apps/demo/package.json b/apps/demo/package.json index 03ecf20e..a3cadbe5 100644 --- a/apps/demo/package.json +++ b/apps/demo/package.json @@ -13,6 +13,7 @@ "@nativescript/canvas-polyfill": "file:../../packages/canvas-polyfill", "@nativescript/canvas-three": "file:../../packages/canvas-three", "@nativescript/core": "file:../../node_modules/@nativescript/core", + "@nativescript/webpack": "^5.0.0", "babylonjs": "file:../../node_modules/babylonjs", "babylonjs-materials": "file:../../node_modules/babylonjs-materials", "chart.js": "file:../../node_modules/chart.js", @@ -27,7 +28,7 @@ "zen-3d": "file:../../node_modules/zen-3d" }, "devDependencies": { - "@nativescript/android": "8.0.0", + "@nativescript/android": "8.2.0-alpha.2", "@nativescript/ios": "8.0.0" } } diff --git a/apps/demo/src/main-page.xml b/apps/demo/src/main-page.xml index 1a5c4a37..f1187ceb 100644 --- a/apps/demo/src/main-page.xml +++ b/apps/demo/src/main-page.xml @@ -1,4 +1,4 @@ - + diff --git a/package.json b/package.json index b34cf366..c2f64864 100644 --- a/package.json +++ b/package.json @@ -27,10 +27,10 @@ "@angular/router": "^12.0.0", "@nativescript-community/gesturehandler": "^0.1.45", "@nativescript/angular": "^12.0.0", - "@nativescript/core": "^8.0.0", + "@nativescript/core": "~8.1.0", "@nativescript/plugin-tools": "2.1.0", "@nativescript/types": "^8.0.0", - "@nativescript/webpack": "beta", + "@nativescript/webpack": "~5.0.0", "@ngtools/webpack": "^12.0.0", "babylonjs": "^4.1.0", "babylonjs-materials": "^4.1.0", @@ -57,7 +57,7 @@ "rxjs": "~6.6.0", "svelte-native": "^0.9.3", "three": "^0.123.0", - "typescript": "4.3.5", + "typescript": "~4.3.0", "vexflow": "^3.0.9", "xmldom": "~0.6.0", "zen-3d": "0.0.3", @@ -68,4 +68,4 @@ "npx prettier --write" ] } -} \ No newline at end of file +} diff --git a/packages/canvas-media/package.json b/packages/canvas-media/package.json index 408ee946..6447e174 100644 --- a/packages/canvas-media/package.json +++ b/packages/canvas-media/package.json @@ -1,6 +1,6 @@ { "name": "@nativescript/canvas-media", - "version": "0.11.0", + "version": "0.12.0", "description": "Canvas media", "main": "index", "typings": "index.d.ts", diff --git a/packages/canvas-media/platforms/android/canvas_media.aar b/packages/canvas-media/platforms/android/canvas_media.aar index 7f47714b..ebd103a7 100644 Binary files a/packages/canvas-media/platforms/android/canvas_media.aar and b/packages/canvas-media/platforms/android/canvas_media.aar differ diff --git a/packages/canvas-media/platforms/android/include.gradle b/packages/canvas-media/platforms/android/include.gradle index ba6aa1b7..048bd248 100644 --- a/packages/canvas-media/platforms/android/include.gradle +++ b/packages/canvas-media/platforms/android/include.gradle @@ -5,7 +5,11 @@ android { } } +repositories { + google() +} + dependencies { - implementation 'com.google.android.exoplayer:exoplayer:2.13.2' - implementation 'com.google.android.exoplayer:exoplayer-ui:2.13.2' + implementation 'com.google.android.exoplayer:exoplayer:2.13.3' + implementation 'com.google.android.exoplayer:exoplayer-ui:2.13.3' } diff --git a/packages/canvas-media/video/common.ts b/packages/canvas-media/video/common.ts index 450ee3a0..6ab9349e 100644 --- a/packages/canvas-media/video/common.ts +++ b/packages/canvas-media/video/common.ts @@ -90,7 +90,10 @@ export abstract class VideoBase extends ContentView implements AddChildFromBuild } } _removeListener(type: string, listener: Function, listeners: any) { - if (listener && listeners && typeof listeners === 'object') { + if(!this._listeners){ + this._listeners = {}; + } + if (typeof listener === 'function' && listeners && typeof listeners === 'object') { const currentEvents = listeners[type]; if (Array.isArray(currentEvents)) { const size = currentEvents.length; @@ -111,7 +114,7 @@ export abstract class VideoBase extends ContentView implements AddChildFromBuild _listenerExist(type: string, listener: Function, listeners: any): boolean { let has = false; - if (listener && listeners && typeof listeners === 'object') { + if (typeof listener === 'function' && listeners && typeof listeners === 'object') { const currentEvents = listeners[type]; if (Array.isArray(currentEvents)) { const size = currentEvents.length; @@ -127,6 +130,9 @@ export abstract class VideoBase extends ContentView implements AddChildFromBuild return has; } addEventListener(type: string, listener: Function, useCapture: boolean | any) { + if(!this._listeners){ + this._listeners = {}; + } let isCapture = false; if (typeof useCapture === 'boolean') { isCapture = true; @@ -136,16 +142,16 @@ export abstract class VideoBase extends ContentView implements AddChildFromBuild if (isCapture) { if (!this._listenerExist(type, listener, this._capturedListeners)) { - if (Array.isArray(this._capturedListeners[type])) { - this._capturedListeners[type]?.push?.(listener); + if (Array.isArray(this._capturedListeners?.[type])) { + this._capturedListeners?.[type]?.push?.(listener); } else { this._capturedListeners[type] = [listener]; } } } else { if (!this._listenerExist(type, listener, this._listeners)) { - if (Array.isArray(this._listeners[type])) { - this._listeners[type]?.push?.(listener); + if (Array.isArray(this._listeners?.[type])) { + this._listeners?.[type]?.push?.(listener); } else { this._listeners[type] = [listener]; } @@ -163,7 +169,7 @@ export abstract class VideoBase extends ContentView implements AddChildFromBuild if (isCapture) { if (!this._listenerExist(type, listener, this._capturedListeners)) { if (Array.isArray(this._capturedListeners[type])) { - this._capturedListeners[type]?.push?.(listener); + this._capturedListeners?.[type]?.push?.(listener); } else { this._capturedListeners[type] = [listener]; } @@ -171,7 +177,7 @@ export abstract class VideoBase extends ContentView implements AddChildFromBuild } else { if (!this._listenerExist(type, listener, this._listeners)) { if (Array.isArray(this._listeners[type])) { - this._listeners[type]?.push?.(listener); + this._listeners?.[type]?.push?.(listener); } else { this._listeners[type] = [listener]; } diff --git a/packages/canvas-phaser-ce/phaser.ts b/packages/canvas-phaser-ce/phaser.ts index 414eeedd..914a0c43 100644 --- a/packages/canvas-phaser-ce/phaser.ts +++ b/packages/canvas-phaser-ce/phaser.ts @@ -1,5 +1,14 @@ import '@nativescript/canvas-polyfill'; + +interface TNSPhaserCe { + PIXI: any; + Phaser: any; +} + +export declare var global: NodeJS.Global & typeof globalThis & TNSPhaserCe; + + function initPhaser() { (global as any).PIXI = (global as any).window.PIXI = (global as any).PIXI || require('phaser-ce/build/custom/pixi'); (global as any).p2 = (global as any).window.p2 = (global as any).p2 || require('phaser-ce/build/custom/p2'); diff --git a/packages/canvas-polyfill/tsconfig.json b/packages/canvas-polyfill/tsconfig.json index ddc2d9b5..bba92f9a 100644 --- a/packages/canvas-polyfill/tsconfig.json +++ b/packages/canvas-polyfill/tsconfig.json @@ -2,7 +2,8 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "rootDir": "." + "rootDir": ".", + "target": "es5" }, "exclude": ["**/*.spec.ts", "angular", "src-native"], "include": ["**/*.ts", "references.d.ts"] diff --git a/packages/canvas/Canvas/common.ts b/packages/canvas/Canvas/common.ts index 4cba4a99..cee867d1 100644 --- a/packages/canvas/Canvas/common.ts +++ b/packages/canvas/Canvas/common.ts @@ -14,6 +14,9 @@ export const ignorePixelScalingProperty = new Property({ valueConverter: booleanConverter }); + +import { observe as gestureObserve } from '@nativescript-community/gesturehandler/gestures_override'; + @CSSType('Canvas') export abstract class CanvasBase extends View implements ICanvasBase { public static readyEvent = 'ready'; @@ -38,6 +41,22 @@ export abstract class CanvasBase extends View implements ICanvasBase { this.off('touch, pan, pinch', this._touchEvent, this); } } + + + _observe(type: GestureTypes, callback: (args: GestureEventData) => void, thisArg?: any): void { + if (!this._gestureObservers[type]) { + this._gestureObservers[type] = []; + } + + this._gestureObservers[type].push(gestureObserve(this, type, callback, thisArg)); + if (global.isAndroid) { + if (this.isLoaded && !(this).touchListenerIsSet) { + this.setOnTouchListener(); + } + } + } + + public addEventListener(arg: string, callback: any, thisArg?: any) { super.addEventListener(arg, callback, thisArg); if (WEB_GESTURE_EVENTS.indexOf(arg) !== -1) { @@ -401,19 +420,4 @@ export abstract class CanvasBase extends View implements ICanvasBase { } } - -(CanvasBase.prototype as any)._observe = function (type: GestureTypes, callback: (args: GestureEventData) => void, thisArg?: any): void { - const gestureObserve = require('@nativescript-community/gesturehandler/gestures_override').observe; - if (!this._gestureObservers[type]) { - this._gestureObservers[type] = []; - } - - this._gestureObservers[type].push(gestureObserve(this, type, callback, thisArg)); - if (global.isAndroid) { - if (this.isLoaded && !this.touchListenerIsSet) { - this.setOnTouchListener(); - } - } -}; - ignorePixelScalingProperty.register(CanvasBase); \ No newline at end of file diff --git a/packages/canvas/SVG/Image.ts b/packages/canvas/SVG/Image.ts index b0fb9039..987d6ef7 100644 --- a/packages/canvas/SVG/Image.ts +++ b/packages/canvas/SVG/Image.ts @@ -30,7 +30,9 @@ export class Image extends SVGItem { href: string; x: any = 0; y: any = 0; + // @ts-ignore #loadedSrc: string; + // @ts-ignore #asset = new ImageAsset(); constructor(){ diff --git a/packages/canvas/TextDecoder/TextDecoder.android.ts b/packages/canvas/TextDecoder/TextDecoder.android.ts index 241389c4..f7c38ae1 100644 --- a/packages/canvas/TextDecoder/TextDecoder.android.ts +++ b/packages/canvas/TextDecoder/TextDecoder.android.ts @@ -1,46 +1,52 @@ import { TextDecoderBase } from './common'; - +import { Utils } from '../utils'; export class TextDecoder extends TextDecoderBase { - constructor(encoding: string = 'utf-8') { super(new org.nativescript.canvas.TNSTextDecoder(encoding)); } + get _isSupported() { + return Utils.IS_SUPPORTED_TYPED_ARRAYS_VERSION; + } + get encoding(): string { return this.native.getEncoding(); } decode(buffer?: ArrayBuffer | ArrayBufferView, options?: any): string { - if ( - buffer instanceof ArrayBuffer || - buffer instanceof Uint8Array || - buffer instanceof Int8Array || - buffer instanceof Uint16Array || - buffer instanceof Int16Array || - buffer instanceof Uint32Array || - buffer instanceof Int32Array || - buffer instanceof Float32Array || buffer instanceof Uint8ClampedArray - ) { + if (buffer instanceof ArrayBuffer || buffer instanceof Uint8Array || buffer instanceof Int8Array || buffer instanceof Uint16Array || buffer instanceof Int16Array || buffer instanceof Uint32Array || buffer instanceof Int32Array || buffer instanceof Float32Array || buffer instanceof Uint8ClampedArray) { if (buffer instanceof Uint8Array || buffer instanceof Int8Array || buffer instanceof Uint8ClampedArray) { - const nativeBuffer = java.nio.ByteBuffer.wrap(Array.from(buffer)); - return this.native.decode(nativeBuffer.array()); + if (this._isSupported) { + return this.native.decodeByteBuffer(buffer as any); + } + return this.native.decodeByte(Array.from(buffer as any)); } else if (buffer instanceof Uint16Array || buffer instanceof Int16Array) { - const nativeBuffer = java.nio.ShortBuffer.wrap(Array.from(buffer)); - return this.native.decode(nativeBuffer.array()); + if (this._isSupported) { + return this.native.decodeShortBuffer(buffer as any); + } + return this.native.decodeShort(Array.from(buffer as any)); } else if (buffer instanceof Int32Array || buffer instanceof Uint32Array) { - const nativeBuffer = java.nio.IntBuffer.wrap(Array.from(buffer)); - return this.native.decode(nativeBuffer.array()); + if (this._isSupported) { + return this.native.decodeIntBuffer(buffer as any); + } + return this.native.decodeInt(Array.from(buffer as any)); } else if (buffer instanceof Float32Array) { - const nativeBuffer = java.nio.FloatBuffer.wrap(Array.from(buffer)); - return this.native.decode(nativeBuffer.array()); + if (this._isSupported) { + return this.native.decodeFloatBuffer(buffer as any); + } + return this.native.decodeFloat(Array.from(buffer as any)); } else if (buffer instanceof Float64Array) { - const nativeBuffer = java.nio.DoubleBuffer.wrap(Array.from(buffer)); - return this.native.decode(nativeBuffer.array()); + if (this._isSupported) { + return this.native.decodeDoubleBuffer(buffer as any); + } + return this.native.decodeDouble(Array.from(buffer as any)); } - const nativeBuffer = java.nio.ByteBuffer.wrap(Array.from(buffer as any)); - return this.native.decode(nativeBuffer.array()); + if (this._isSupported) { + return this.native.decodeByteBuffer(buffer as any); + } + return this.native.decodeByte(Array.from(buffer as any)); } else { return ''; } diff --git a/packages/canvas/TextDecoder/TextDecoder.ios.ts b/packages/canvas/TextDecoder/TextDecoder.ios.ts index da373eef..ef6529c4 100644 --- a/packages/canvas/TextDecoder/TextDecoder.ios.ts +++ b/packages/canvas/TextDecoder/TextDecoder.ios.ts @@ -1,53 +1,35 @@ import { TextDecoderBase } from './common'; -declare let TNSTextDecoder; +//declare let TNSTextDecoder; export class TextDecoder extends TextDecoderBase { - constructor(encoding: string = 'utf-8') { - super(TNSTextDecoder.alloc().initWithEncoding(encoding)); - } + constructor(encoding: string = 'utf-8') { + super(TNSTextDecoder.alloc().initWithEncoding(encoding)); + } - get encoding(): string { - return this.native.encoding; - } + get encoding(): string { + return this.native.encoding; + } - decode(buffer?: ArrayBuffer | ArrayBufferView, options?: any): string { - if ( - buffer instanceof ArrayBuffer || - buffer instanceof Uint8ClampedArray || - buffer instanceof Uint8Array || - buffer instanceof Int8Array || - buffer instanceof Uint16Array || - buffer instanceof Int16Array || - buffer instanceof Uint32Array || - buffer instanceof Int32Array || - buffer instanceof Float32Array - ) { - if ( - buffer instanceof Uint8Array || buffer instanceof Uint8ClampedArray - ) { - return this.native.decodeWithBytes(Array.from(buffer)); - } else if ( - buffer instanceof Int8Array - ) { - return this.native.decodeWithI8(Array.from(buffer)); - } - if ( - buffer instanceof Uint16Array - ) { - return this.native.decodeWithU16(Array.from(buffer)); - } else if ( - buffer instanceof Int16Array - ) { - return this.native.decodeWithI16(Array.from(buffer)); - } else if ( - buffer instanceof Int32Array - ) { - return this.native.decodeWithI32(Array.from(buffer)); - } - return this.native.decodeWithBuffer(NSData.dataWithData(buffer as any)); - } else { - return ''; - } - } + decode(buffer?: ArrayBuffer | ArrayBufferView, options?: any): string { + if (buffer instanceof ArrayBuffer || buffer instanceof Uint8ClampedArray || buffer instanceof Uint8Array || buffer instanceof Int8Array || buffer instanceof Uint16Array || buffer instanceof Int16Array || buffer instanceof Uint32Array || buffer instanceof Int32Array || buffer instanceof Float32Array) { + if (buffer instanceof Uint8Array || buffer instanceof Uint8ClampedArray) { + return this.native.decodeWithU8Offset(buffer, buffer.byteLength, buffer.byteOffset); + } else if (buffer instanceof Int8Array) { + return this.native.decodeWithI8Offset(buffer, buffer.byteLength, buffer.byteOffset); + } else if (buffer instanceof Uint16Array) { + return this.native.decodeWithU16Offset(buffer, buffer.byteLength, buffer.byteOffset); + } else if (buffer instanceof Int16Array) { + return this.native.decodeWithI16Offset(buffer, buffer.byteLength, buffer.byteOffset); + } else if (buffer instanceof Int32Array) { + return this.native.decodeWithI32Offset(buffer, buffer.byteLength, buffer.byteOffset); + } else if (buffer instanceof Uint32Array) { + return this.native.decodeWithI32Offset(buffer, buffer.byteLength, buffer.byteOffset); + } + + return this.native.decodeWithU8(buffer as any, buffer.byteLength); + } else { + return ''; + } + } } diff --git a/packages/canvas/WebGL/WebGLRenderingContext/index.android.ts b/packages/canvas/WebGL/WebGLRenderingContext/index.android.ts index 3ea1ff9c..4e905c44 100644 --- a/packages/canvas/WebGL/WebGLRenderingContext/index.android.ts +++ b/packages/canvas/WebGL/WebGLRenderingContext/index.android.ts @@ -39,12 +39,11 @@ import { import { ImageAsset } from '../../ImageAsset'; import { Canvas } from '../../Canvas'; import { ImageBitmap } from '../../ImageBitmap'; - +import { Utils } from '../../utils'; export class WebGLRenderingContext extends WebGLRenderingContextBase { public static isDebug = false; public static filter: 'both' | 'error' | 'args' = 'both'; private context: org.nativescript.canvas.TNSWebGLRenderingContext; - constructor(context) { super(context); this.context = context; @@ -230,6 +229,10 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { return [] as any; } + get _isSupported() { + return Utils.IS_SUPPORTED_TYPED_ARRAYS_VERSION; + } + bufferData(target: number, size: number, usage: number): void; bufferData(target: number, srcData: ArrayBuffer | ArrayBufferView, usage: number): void; @@ -245,7 +248,11 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { // @ts-ignore this.context.bufferData(target, srcData.nativeObject, usage); } else { - this.context.bufferDataByte(target, Array.from(new Uint8Array(srcData as any)), usage); + if (this._isSupported) { + this.context.bufferDataByteBuffer(target, srcData as any, usage); + } else { + this.context.bufferDataByte(target, Array.from(new Uint8Array(srcData as any)), usage); + } } //this.context.bufferData(target, this.toNativeArray(new Uint8Array(srcData as any) as any, 'byte'), usage); } else if (srcData && srcData.buffer instanceof ArrayBuffer) { @@ -255,17 +262,29 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { this.context.bufferData(target, offset, srcData.buffer.nativeObject); } else { if (srcData instanceof Uint8Array || srcData instanceof Uint8ClampedArray) { - //this.context.bufferData(target, this.toNativeArray(srcData as any, 'byte'), usage); - this.context.bufferDataByte(target, Array.from(srcData), usage); + if (this._isSupported) { + this.context.bufferDataByteBuffer(target, srcData as any, usage); + } else { + this.context.bufferDataByte(target, Array.from(srcData), usage); + } } else if (srcData instanceof Uint16Array || srcData instanceof Int16Array) { - //this.context.bufferData(target, this.toNativeArray(srcData as any, 'short'), usage); - this.context.bufferDataShort(target, Array.from(srcData), usage); + if (this._isSupported) { + this.context.bufferDataShortBuffer(target, srcData as any, usage); + } else { + this.context.bufferDataShort(target, Array.from(srcData), usage); + } } else if (srcData instanceof Uint32Array || srcData instanceof Int32Array) { - //this.context.bufferData(target, this.toNativeArray(srcData as any, 'int'), usage); - this.context.bufferDataInt(target, Array.from(srcData), usage); + if (this._isSupported) { + this.context.bufferDataIntBuffer(target, srcData as any, usage); + } else { + this.context.bufferDataInt(target, Array.from(srcData), usage); + } } else if (srcData instanceof Float32Array) { - //this.context.bufferData(target, this.toNativeArray(srcData as any, 'float'), usage); - this.context.bufferDataFloat(target, Array.from(srcData), usage); + if (this._isSupported) { + this.context.bufferDataFloatBuffer(target, srcData as any, usage); + } else { + this.context.bufferDataFloat(target, Array.from(srcData), usage); + } } } } else if (arguments.length === 3 && !srcData) { @@ -283,7 +302,11 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { // @ts-ignore this.context.bufferSubData(target, offset, srcData.nativeObject); } else { - this.context.bufferSubDataByte(target, offset, Array.from(new Uint8Array(srcData as any))); + if (this._isSupported) { + this.context.bufferSubDataByteBuffer(target, offset, srcData as any); + } else { + this.context.bufferSubDataByte(target, offset, Array.from(new Uint8Array(srcData as any))); + } } } else if (srcData && srcData.buffer instanceof ArrayBuffer) { // @ts-ignore @@ -292,17 +315,29 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { this.context.bufferSubData(target, offset, srcData.buffer.nativeObject); } else { if (srcData instanceof Uint8Array || srcData instanceof Uint8ClampedArray) { - //this.context.bufferSubData(target, offset, this.toNativeArray(srcData as any, 'byte')); - this.context.bufferSubDataByte(target, offset, Array.from(srcData)); + if (this._isSupported) { + this.context.bufferSubDataByteBuffer(target, offset, srcData as any); + } else { + this.context.bufferSubDataByte(target, offset, Array.from(srcData)); + } } else if (srcData instanceof Uint16Array || srcData instanceof Int16Array) { - // this.context.bufferSubData(target, offset, this.toNativeArray(srcData as any, 'short')); - this.context.bufferSubDataShort(target, offset, Array.from(srcData)); + if (this._isSupported) { + this.context.bufferSubDataShortBuffer(target, offset, srcData as any); + } else { + this.context.bufferSubDataShort(target, offset, Array.from(srcData)); + } } else if (srcData instanceof Uint32Array || srcData instanceof Int32Array) { - // this.context.bufferSubData(target, offset, this.toNativeArray(srcData as any, 'int')); - this.context.bufferSubDataInt(target, offset, Array.from(srcData)); + if (this._isSupported) { + this.context.bufferSubDataIntBuffer(target, offset, srcData as any); + } else { + this.context.bufferSubDataInt(target, offset, Array.from(srcData)); + } } else if (srcData instanceof Float32Array) { - // this.context.bufferSubData(target, offset, this.toNativeArray(srcData as any, 'float')); - this.context.bufferSubDataFloat(target, offset, Array.from(srcData)); + if (this._isSupported) { + this.context.bufferSubDataFloatBuffer(target, offset, srcData as any); + } else { + this.context.bufferSubDataFloat(target, offset, Array.from(srcData)); + } } } } @@ -1008,27 +1043,42 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { this.context.readPixels(x, y, width, height, format, type, pixels.buffer.nativeObject); } else { if (pixels instanceof Uint8Array) { - // this.context.readPixels(x, y, width, height, format, type, this.toNativeArray(pixels as any, 'byte')); - this.context.readPixelsByte(x, y, width, height, format, type, Array.from(pixels)); + if (this._isSupported) { + this.context.readPixelsByteBuffer(x, y, width, height, format, type, pixels as any); + } else { + this.context.readPixelsByte(x, y, width, height, format, type, Array.from(pixels)); + } } else if (pixels instanceof Uint16Array || pixels instanceof Int16Array) { - // this.context.readPixels(x, y, width, height, format, type, this.toNativeArray(pixels as any, 'short')); - this.context.readPixelsShort(x, y, width, height, format, type, Array.from(pixels)); + if (this._isSupported) { + this.context.readPixelsShortBuffer(x, y, width, height, format, type, pixels as any); + } else { + this.context.readPixelsShort(x, y, width, height, format, type, Array.from(pixels)); + } } else if (pixels instanceof Uint32Array || pixels instanceof Int32Array) { - // this.context.readPixels(x, y, width, height, format, type, this.toNativeArray(pixels as any, 'int')); - this.context.readPixelsInt(x, y, width, height, format, type, Array.from(pixels)); + if (this._isSupported) { + this.context.readPixelsIntBuffer(x, y, width, height, format, type, pixels as any); + } else { + this.context.readPixelsInt(x, y, width, height, format, type, Array.from(pixels)); + } } else if (pixels instanceof Float32Array) { - // this.context.readPixels(x, y, width, height, format, type, this.toNativeArray(pixels as any, 'float')); - this.context.readPixelsFloat(x, y, width, height, format, type, Array.from(pixels)); + if (this._isSupported) { + this.context.readPixelsFloatBuffer(x, y, width, height, format, type, pixels as any); + } else { + this.context.readPixelsFloat(x, y, width, height, format, type, Array.from(pixels)); + } } } } else if (pixels instanceof ArrayBuffer) { - // this.context.readPixels(x, y, width, height, format, type, this.toNativeArray(new Uint8Array(pixels as any) as any, 'byte')); // @ts-ignore if (pixels.nativeObject) { // @ts-ignore this.context.readPixels(x, y, width, height, format, type, pixels.nativeObject); } else { - this.context.readPixelsByte(x, y, width, height, format, type, Array.from(new Uint8Array(pixels as any))); + if (this._isSupported) { + this.context.readPixelsByteBuffer(x, y, width, height, format, type, pixels as any); + } else { + this.context.readPixelsByte(x, y, width, height, format, type, Array.from(new Uint8Array(pixels as any))); + } } } } @@ -1106,10 +1156,6 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { texImage2D(target: any, level: any, internalformat: any, width: any, height: any, border: any, format?: any, type?: any, pixels?: any) { this._glCheckError('texImage2D'); this._checkArgs('texImage2D', arguments); - /* TODO */ - // this.blendFunc(this.SRC_ALPHA, this.ONE_MINUS_SRC_ALPHA); - // this.enable(this.BLEND); - /* TODO */ if (arguments.length === 9) { if (pixels && pixels.buffer instanceof ArrayBuffer) { if (pixels.buffer.nativeObject) { @@ -1117,17 +1163,29 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { this.context.texImage2D(target, level, internalformat, width, height, border, format, type, pixels.buffer.nativeObject); } else { if (pixels instanceof Uint8Array) { - // this.context.texImage2D(target, level, internalformat, width, height, border, format, type, this.toNativeArray(pixels as any, 'byte')); - this.context.texImage2DByte(target, level, internalformat, width, height, border, format, type, Array.from(pixels)); + if (this._isSupported) { + this.context.texImage2DByteBuffer(target, level, internalformat, width, height, border, format, type, pixels as any); + } else { + this.context.texImage2DByte(target, level, internalformat, width, height, border, format, type, Array.from(pixels)); + } } else if (pixels instanceof Uint16Array || pixels instanceof Int16Array) { - // this.context.texImage2D(target, level, internalformat, width, height, border, format, type, this.toNativeArray(pixels as any, 'short')); - this.context.texSubImage2DShort(target, level, internalformat, width, height, border, format, type, Array.from(pixels)); + if (this._isSupported) { + this.context.texSubImage2DShortBuffer(target, level, internalformat, width, height, border, format, type, pixels as any); + } else { + this.context.texSubImage2DShort(target, level, internalformat, width, height, border, format, type, Array.from(pixels)); + } } else if (pixels instanceof Uint32Array || pixels instanceof Int32Array) { - // this.context.texImage2D(target, level, internalformat, width, height, border, format, type, this.toNativeArray(pixels as any, 'int')); - this.context.texImage2DInt(target, level, internalformat, width, height, border, format, type, Array.from(pixels)); + if (this._isSupported) { + this.context.texImage2DIntBuffer(target, level, internalformat, width, height, border, format, type, pixels as any); + } else { + this.context.texImage2DInt(target, level, internalformat, width, height, border, format, type, Array.from(pixels)); + } } else if (pixels instanceof Float32Array) { - // this.context.texImage2D(target, level, internalformat, width, height, border, format, type, this.toNativeArray(pixels as any, 'float')); - this.context.texImage2DFloat(target, level, internalformat, width, height, border, format, type, Array.from(pixels)); + if (this._isSupported) { + this.context.texImage2DFloatBuffer(target, level, internalformat, width, height, border, format, type, pixels as any); + } else { + this.context.texImage2DFloat(target, level, internalformat, width, height, border, format, type, Array.from(pixels)); + } } } } else if (pixels instanceof ArrayBuffer) { @@ -1136,8 +1194,11 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { // @ts-ignore this.context.texImage2D(target, level, internalformat, width, height, border, format, type, pixels.nativeObject); } else { - // this.context.texImage2D(target, level, internalformat, width, height, border, format, type, this.toNativeArray(new Uint8Array(pixels as any) as any, 'byte')); - this.context.texImage2DByte(target, level, internalformat, width, height, border, format, type, Array.from(new Uint8Array(pixels))); + if (this._isSupported) { + this.context.texImage2DByteBuffer(target, level, internalformat, width, height, border, format, type, pixels as any); + } else { + this.context.texImage2DByte(target, level, internalformat, width, height, border, format, type, Array.from(new Uint8Array(pixels))); + } } } else { this.context.texImage2D(target, level, internalformat, width, height, border, format, type, pixels as any); @@ -1169,8 +1230,6 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { this.context.texImage2D(target, level, internalformat, width, height, border._canvas.android); } } - // this.blendFunc(this.SRC_ALPHA, this.ZERO); - // this.disable(this.BLEND); } texParameterf(target: number, pname: number, param: number): void { @@ -1198,28 +1257,42 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { this.context.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels.buffer.nativeObject); } else { if (pixels instanceof Uint8Array) { - // this.context.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, this.toNativeArray(pixels as any, 'byte')); - this.context.texSubImage2DByte(target, level, xoffset, yoffset, width, height, format, type, Array.from(pixels)); + if (this._isSupported) { + this.context.texSubImage2DByteBuffer(target, level, xoffset, yoffset, width, height, format, type, pixels as any); + } else { + this.context.texSubImage2DByte(target, level, xoffset, yoffset, width, height, format, type, Array.from(pixels)); + } } else if (pixels instanceof Uint16Array || pixels instanceof Int16Array) { - // this.context.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, this.toNativeArray(pixels as any, 'short')); - this.context.texSubImage2DShort(target, level, xoffset, yoffset, width, height, format, type, Array.from(pixels)); + if (this._isSupported) { + this.context.texSubImage2DShortBuffer(target, level, xoffset, yoffset, width, height, format, type, pixels as any); + } else { + this.context.texSubImage2DShort(target, level, xoffset, yoffset, width, height, format, type, Array.from(pixels)); + } } else if (pixels instanceof Uint32Array || pixels instanceof Int32Array) { - // this.context.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, this.toNativeArray(pixels as any, 'int')); - this.context.texSubImage2DInt(target, level, xoffset, yoffset, width, height, format, type, Array.from(pixels)); + if (this._isSupported) { + this.context.texSubImage2DIntBuffer(target, level, xoffset, yoffset, width, height, format, type, pixels as any); + } else { + this.context.texSubImage2DInt(target, level, xoffset, yoffset, width, height, format, type, Array.from(pixels)); + } } else if (pixels instanceof Float32Array) { - // this.context.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, this.toNativeArray(pixels as any, 'float')); - this.context.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, Array.from(pixels)); + if (this._isSupported) { + this.context.texSubImage2DByte(target, level, xoffset, yoffset, width, height, format, type, pixels as any); + } else { + this.context.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, Array.from(pixels)); + } } } - } else if (pixels instanceof ArrayBuffer) { - // this.context.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, this.toNativeArray(new Uint8Array(pixels as any) as any, 'byte')); // @ts-ignore if (pixels.nativeObject) { // @ts-ignore this.context.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels.nativeObject); } else { - this.context.texSubImage2DByte(target, level, xoffset, yoffset, width, height, format, type, Array.from(new Uint8Array(pixels))); + if (this._isSupported) { + this.context.texSubImage2DByteBuffer(target, level, xoffset, yoffset, width, height, format, type, pixels as any); + } else { + this.context.texSubImage2DByte(target, level, xoffset, yoffset, width, height, format, type, Array.from(new Uint8Array(pixels))); + } } } } else if (arguments.length === 7) { @@ -1256,21 +1329,39 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { uniform1iv(location: WebGLUniformLocation, value: number[]): void { this._glCheckError('uniform1iv'); this._checkArgs('uniform1iv', arguments); - if (!Array.isArray(value)) { - value = Array.from(value); - } const loc = location ? location.native : 0; - this.context.uniform1iv(loc, value); + if (this._isSupported) { + if (!Array.isArray(value)) { + this.context.uniform1ivBuffer(loc, value); + } else { + this.context.uniform1iv(loc, value); + } + } else { + if (!Array.isArray(value)) { + this.context.uniform1iv(loc, Array.from(value)); + } else { + this.context.uniform1iv(loc, value); + } + } } uniform1fv(location: WebGLUniformLocation, value: number[]): void { this._glCheckError('uniform1fv'); this._checkArgs('uniform1fv', arguments); - if (!Array.isArray(value)) { - value = Array.from(value); - } const loc = location ? location.native : 0; - this.context.uniform1fv(loc, value); + if (this._isSupported) { + if (!Array.isArray(value)) { + this.context.uniform1fvBuffer(loc, value); + } else { + this.context.uniform1fv(loc, value); + } + } else { + if (!Array.isArray(value)) { + this.context.uniform1fv(loc, Array.from(value)); + } else { + this.context.uniform1fv(loc, value); + } + } } uniform1i(location: WebGLUniformLocation, v0: number): void { @@ -1290,21 +1381,39 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { uniform2iv(location: WebGLUniformLocation, value: number[]): void { this._glCheckError('uniform2iv'); this._checkArgs('uniform2iv', arguments); - if (!Array.isArray(value)) { - value = Array.from(value); - } const loc = location ? location.native : 0; - this.context.uniform2iv(loc, value); + if (this._isSupported) { + if (!Array.isArray(value)) { + this.context.uniform2ivBuffer(loc, value); + } else { + this.context.uniform2iv(loc, value); + } + } else { + if (!Array.isArray(value)) { + this.context.uniform2iv(loc, Array.from(value)); + } else { + this.context.uniform2iv(loc, value); + } + } } uniform2fv(location: WebGLUniformLocation, value: number[]): void { this._glCheckError('uniform2fv'); this._checkArgs('uniform2fv', arguments); - if (!Array.isArray(value)) { - value = Array.from(value); - } const loc = location ? location.native : 0; - this.context.uniform2fv(loc, value); + if (this._isSupported) { + if (!Array.isArray(value)) { + this.context.uniform2fvBuffer(loc, value); + } else { + this.context.uniform2fv(loc, value); + } + } else { + if (!Array.isArray(value)) { + this.context.uniform2fv(loc, Array.from(value)); + } else { + this.context.uniform2fv(loc, value); + } + } } uniform2i(location: WebGLUniformLocation, v0: number, v1: number): void { @@ -1324,21 +1433,39 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { uniform3iv(location: WebGLUniformLocation, value: number[]): void { this._glCheckError('uniform3iv'); this._checkArgs('uniform3iv', arguments); - if (!Array.isArray(value)) { - value = Array.from(value); - } const loc = location ? location.native : 0; - this.context.uniform3iv(loc, value); + if (this._isSupported) { + if (!Array.isArray(value)) { + this.context.uniform3ivBuffer(loc, value); + } else { + this.context.uniform3iv(loc, value); + } + } else { + if (!Array.isArray(value)) { + this.context.uniform3iv(loc, Array.from(value)); + } else { + this.context.uniform3iv(loc, value); + } + } } uniform3fv(location: WebGLUniformLocation, value: number[]): void { this._glCheckError('uniform3fv'); this._checkArgs('uniform3fv', arguments); - if (!Array.isArray(value)) { - value = Array.from(value); - } const loc = location ? location.native : 0; - this.context.uniform3fv(loc, value); + if (this._isSupported) { + if (!Array.isArray(value)) { + this.context.uniform3fvBuffer(loc, value); + } else { + this.context.uniform3fv(loc, value); + } + } else { + if (!Array.isArray(value)) { + this.context.uniform3fv(loc, Array.from(value)); + } else { + this.context.uniform3fv(loc, value); + } + } } uniform3i(location: WebGLUniformLocation, v0: number, v1: number, v2: number): void { @@ -1358,21 +1485,39 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { uniform4iv(location: WebGLUniformLocation, value: number[]): void { this._glCheckError('uniform4iv'); this._checkArgs('uniform4iv', arguments); - if (!Array.isArray(value)) { - value = Array.from(value); - } const loc = location ? location.native : 0; - this.context.uniform4iv(loc, value); + if (this._isSupported) { + if (!Array.isArray(value)) { + this.context.uniform4ivBuffer(loc, value); + } else { + this.context.uniform4iv(loc, value); + } + } else { + if (!Array.isArray(value)) { + this.context.uniform4iv(loc, Array.from(value)); + } else { + this.context.uniform4iv(loc, value); + } + } } uniform4fv(location: WebGLUniformLocation, value: number[]): void { this._glCheckError('uniform4fv'); this._checkArgs('uniform4fv', arguments); - if (!Array.isArray(value)) { - value = Array.from(value); - } const loc = location ? location.native : 0; - this.context.uniform4fv(loc, value); + if (this._isSupported) { + if (!Array.isArray(value)) { + this.context.uniform4fvBuffer(loc, value); + } else { + this.context.uniform4fv(loc, value); + } + } else { + if (!Array.isArray(value)) { + this.context.uniform4fv(loc, Array.from(value)); + } else { + this.context.uniform4fv(loc, value); + } + } } uniform4i(location: WebGLUniformLocation, v0: number, v1: number, v2: number, v3: number): void { @@ -1385,31 +1530,58 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { uniformMatrix2fv(location: WebGLUniformLocation, transpose: boolean, value: number[]): void { this._glCheckError('uniformMatrix2fv'); this._checkArgs('uniformMatrix2fv', arguments); - if (!Array.isArray(value)) { - value = Array.from(value); - } const loc = location ? location.native : 0; - this.context.uniformMatrix2fv(loc, transpose, value); + if (this._isSupported) { + if (!Array.isArray(value)) { + this.context.uniformMatrix2fvBuffer(loc, transpose, value); + } else { + this.context.uniformMatrix2fv(loc, transpose, value); + } + } else { + if (!Array.isArray(value)) { + this.context.uniformMatrix2fv(loc, transpose, Array.from(value)); + } else { + this.context.uniformMatrix2fv(loc, transpose, value); + } + } } uniformMatrix3fv(location: WebGLUniformLocation, transpose: boolean, value: number[]): void { this._glCheckError('uniformMatrix3fv'); this._checkArgs('uniformMatrix3fv', arguments); - if (!Array.isArray(value)) { - value = Array.from(value); - } const loc = location ? location.native : 0; - this.context.uniformMatrix3fv(loc, transpose, value); + if (this._isSupported) { + if (!Array.isArray(value)) { + this.context.uniformMatrix3fvBuffer(loc, transpose, value); + } else { + this.context.uniformMatrix3fv(loc, transpose, value); + } + } else { + if (!Array.isArray(value)) { + this.context.uniformMatrix3fv(loc, transpose, Array.from(value)); + } else { + this.context.uniformMatrix3fv(loc, transpose, value); + } + } } uniformMatrix4fv(location: WebGLUniformLocation, transpose: boolean, value: number[]): void { this._glCheckError('uniformMatrix4fv'); this._checkArgs('uniformMatrix4fv', arguments); - if (!Array.isArray(value)) { - value = Array.from(value); - } const loc = location ? location.native : 0; - this.context.uniformMatrix4fv(loc, transpose, value); + if (this._isSupported) { + if (!Array.isArray(value)) { + this.context.uniformMatrix4fvBuffer(loc, transpose, value); + } else { + this.context.uniformMatrix4fv(loc, transpose, value); + } + } else { + if (!Array.isArray(value)) { + this.context.uniformMatrix4fv(loc, transpose, Array.from(value)); + } else { + this.context.uniformMatrix4fv(loc, transpose, value); + } + } } useProgram(program: WebGLProgram): void { @@ -1435,10 +1607,19 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { vertexAttrib1fv(index: number, value: number[]): void { this._glCheckError('vertexAttrib1fv'); this._checkArgs('vertexAttrib1fv', arguments); - if (!Array.isArray(value)) { - value = Array.from(value); + if (this._isSupported) { + if (!Array.isArray(value)) { + this.context.vertexAttrib1fvBuffer(index, value); + } else { + this.context.vertexAttrib1fv(index, value); + } + } else { + if (!Array.isArray(value)) { + this.context.vertexAttrib1fv(index, Array.from(value)); + } else { + this.context.vertexAttrib1fv(index, value); + } } - this.context.vertexAttrib1fv(index, value); } vertexAttrib2f(index: number, v0: number, v1: number): void { @@ -1450,10 +1631,19 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { vertexAttrib2fv(index: number, value: number[]): void { this._glCheckError('vertexAttrib2fv'); this._checkArgs('vertexAttrib2fv', arguments); - if (!Array.isArray(value)) { - value = Array.from(value); + if (this._isSupported) { + if (!Array.isArray(value)) { + this.context.vertexAttrib2fvBuffer(index, value); + } else { + this.context.vertexAttrib2fv(index, value); + } + } else { + if (!Array.isArray(value)) { + this.context.vertexAttrib2fv(index, Array.from(value)); + } else { + this.context.vertexAttrib2fv(index, value); + } } - this.context.vertexAttrib2fv(index, value); } vertexAttrib3f(index: number, v0: number, v1: number, v2: number): void { @@ -1465,10 +1655,19 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { vertexAttrib3fv(index: number, value: number[]): void { this._glCheckError('vertexAttrib3fv'); this._checkArgs('vertexAttrib3fv', arguments); - if (!Array.isArray(value)) { - value = Array.from(value); + if (this._isSupported) { + if (!Array.isArray(value)) { + this.context.vertexAttrib3fvBuffer(index, value); + } else { + this.context.vertexAttrib3fv(index, value); + } + } else { + if (!Array.isArray(value)) { + this.context.vertexAttrib3fv(index, Array.from(value)); + } else { + this.context.vertexAttrib3fv(index, value); + } } - this.context.vertexAttrib3fv(index, value); } vertexAttrib4f(index: number, v0: number, v1: number, v2: number, v3: number): void { @@ -1480,10 +1679,19 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { vertexAttrib4fv(index: number, value: number[]): void { this._glCheckError('vertexAttrib4fv'); this._checkArgs('vertexAttrib4fv', arguments); - if (!Array.isArray(value)) { - value = Array.from(value); + if (this._isSupported) { + if (!Array.isArray(value)) { + this.context.vertexAttrib4fvBuffer(index, value); + } else { + this.context.vertexAttrib4fv(index, value); + } + } else { + if (!Array.isArray(value)) { + this.context.vertexAttrib4fv(index, Array.from(value)); + } else { + this.context.vertexAttrib4fv(index, value); + } } - this.context.vertexAttrib4fv(index, value); } vertexAttribPointer(index: number, size: number, type: number, normalized: boolean, stride: number, offset: number): void { diff --git a/packages/canvas/WebGL/WebGLRenderingContext/index.ios.ts b/packages/canvas/WebGL/WebGLRenderingContext/index.ios.ts index 98019f77..38b8f331 100644 --- a/packages/canvas/WebGL/WebGLRenderingContext/index.ios.ts +++ b/packages/canvas/WebGL/WebGLRenderingContext/index.ios.ts @@ -150,13 +150,9 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { if (typeof srcData === 'number') { this.context.bufferDataSize(target, srcData, usage); } else if (srcData instanceof ArrayBuffer) { - this.context.bufferDataSrcDataSize( - target, srcData as any, srcData.byteLength, usage - ); - } else if (srcData && srcData.buffer instanceof ArrayBuffer) { - this.context.bufferDataSrcDataSize( - target, srcData as any, srcData.byteLength, usage - ); + this.context.bufferDataSrcDataSize(target, srcData as any, srcData.byteLength, usage); + } else if (Utils.isTypedArray(srcData)) { + this.context.bufferDataSrcDataSizeOffset(target, srcData as any, srcData.byteLength, usage, srcData.byteOffset); } else { this.context.bufferDataSrcData(target, srcData, usage); } @@ -165,10 +161,11 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { bufferSubData(target: number, offset: number, srcData: ArrayBuffer | ArrayBufferView): void { this._glCheckError('bufferSubData'); this._checkArgs('bufferSubData', arguments); - - this.context.bufferSubDataSrcDataSize( - target, offset, srcData as any, srcData.byteLength - ); + if (Utils.isTypedArray(srcData)) { + this.context.bufferSubDataSrcDataSizeOs(target, offset, srcData as any, srcData.byteLength, (srcData as any).byteOffset); + } else { + this.context.bufferSubDataSrcDataSize(target, offset, srcData as any, srcData.byteLength); + } } checkFramebufferStatus(target: number): number { @@ -578,19 +575,19 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { return new Float32Array(Utils.toJSArray(value)); case this.ARRAY_BUFFER_BINDING: case this.ELEMENT_ARRAY_BUFFER_BINDING: - if(value){ + if (value) { return new WebGLBuffer(value); } return null; case this.CURRENT_PROGRAM: - if(value){ + if (value) { return new WebGLProgram(value); } return null; case this.COMPRESSED_TEXTURE_FORMATS: return new Uint32Array(Utils.toJSArray(value)); case this.RENDERBUFFER_BINDING: - if(value){ + if (value) { return new WebGLRenderbuffer(value); } return null; @@ -848,9 +845,9 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { readPixels(x: number, y: number, width: number, height: number, format: number, type: number, pixels: ArrayBufferView): void { this._glCheckError('readPixels'); this._checkArgs('readPixels', arguments); - if ((pixels && pixels.buffer instanceof ArrayBuffer)) { - this.context.readPixels(x, y, width, height, format, type, pixels.buffer as any); - }else if(pixels instanceof ArrayBuffer){ + if (Utils.isTypedArray(pixels)) { + this.context.readPixelsOffset(x, y, width, height, format, type, pixels as any, pixels.byteOffset); + } else if (pixels instanceof ArrayBuffer) { this.context.readPixels(x, y, width, height, format, type, pixels as any); } } @@ -932,23 +929,23 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { // this.enable(this.BLEND); /* TODO */ if (arguments.length === 9) { - if ((pixels && pixels.buffer) || pixels instanceof ArrayBuffer) { - this.context.texImage2DPixelsSize( - target, level, internalformat, width, height, border, format, type, pixels as any, pixels.byteLength - ) + if (pixels instanceof ArrayBuffer) { + this.context.texImage2DPixelsSize(target, level, internalformat, width, height, border, format, type, pixels as any, pixels.byteLength); + }else if(Utils.isTypedArray(pixels)){ + this.context.texImage2DPixelsSizeOffset(target, level, internalformat, width, height, border, format, type, pixels as any, pixels.byteLength, pixels.byteOffset); } else { this.context.texImage2D(target, level, internalformat, width, height, border, format, type, pixels as any); } } else if (arguments.length === 6) { if (border && typeof border.tagName === 'string' && (border.tagName === 'VID' || border.tagName === 'VIDEO') && border._video && typeof border._video.getCurrentFrame === 'function') { - border._video.getCurrentFrame(this.context,this, target, level, internalformat, width, height); + border._video.getCurrentFrame(this.context, this, target, level, internalformat, width, height); } else if (border && typeof border.getCurrentFrame === 'function') { border.getCurrentFrame(this.context, this, target, level, internalformat, width, height); } else if (border instanceof ImageAsset) { this.context.texImage2DAsset(target, level, internalformat, width, height, border.native); } else if (border instanceof ImageBitmap) { this.context.texImage2DBitmap(target, level, internalformat, width, height, border.native); - } else if (border instanceof ImageSource) { + } else if (border instanceof ImageSource) { this.context.texImage2DPixels(target, level, internalformat, width, height, border.ios); } else if (border instanceof UIImage) { this.context.texImage2DPixels(target, level, internalformat, width, height, border); @@ -991,17 +988,18 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { this._glCheckError('texSubImage2D'); this._checkArgs('texSubImage2D', arguments); if (arguments.length === 9) { - if ((pixels && pixels.buffer) || pixels instanceof ArrayBuffer) { - this.context.texSubImage2DPixelsSize( - target, level, xoffset, yoffset, width, height, format, type, pixels as any, pixels.byteLength - ); + if (pixels instanceof ArrayBuffer) { + this.context.texSubImage2DPixelsSize(target, level, xoffset, yoffset, width, height, format, type, pixels as any, pixels.byteLength); + }else if(Utils.isTypedArray(pixels)){ + this.context.texSubImage2DPixelsSizeOffset(target, level, xoffset, yoffset, width, height, format, type, pixels as any, pixels.byteLength, pixels.byteOffset); } else { this.context.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels as any); } } else if (arguments.length === 7) { if (format instanceof ImageAsset) { this.context.texSubImage2DAsset(target, level, xoffset, yoffset, width, height, format.native); - }if (format instanceof ImageBitmap) { + } + if (format instanceof ImageBitmap) { this.context.texSubImage2DBitmap(target, level, xoffset, yoffset, width, height, format.native); } else if (format instanceof UIImage) { this.context.texSubImage2DPixels(target, level, xoffset, yoffset, width, height, format); @@ -1038,16 +1036,16 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { if (!(value instanceof Int32Array)) { value = new Int32Array(value) as any; } - this.context.uniform1iv(location.native, value as any, value.length); + this.context.uniform1ivOffset(location.native, value as any, value.length, (value as any).byteOffset); } uniform1fv(location: WebGLUniformLocation, value: number[]): void { this._glCheckError('uniform1fv'); this._checkArgs('uniform1fv', arguments); if (!(value instanceof Float32Array)) { - value = new Float32Array(value)as any; + value = new Float32Array(value) as any; } - this.context.uniform1fv(location.native, value as any, value.length); + this.context.uniform1fvOffset(location.native, value as any, value.length, (value as any).byteOffset); } uniform1i(location: WebGLUniformLocation, v0: number): void { @@ -1068,7 +1066,7 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { if (!(value instanceof Int32Array)) { value = new Int32Array(value) as any; } - this.context.uniform2iv(location.native, value as any, value.length); + this.context.uniform2ivOffset(location.native, value as any, value.length, (value as any).byteOffset); } uniform2fv(location: WebGLUniformLocation, value: number[]): void { @@ -1077,7 +1075,7 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { if (!(value instanceof Float32Array)) { value = new Float32Array(value) as any; } - this.context.uniform2fv(location.native, value as any, value.length); + this.context.uniform2fvOffset(location.native, value as any, value.length, (value as any).byteOffset); } uniform2i(location: WebGLUniformLocation, v0: number, v1: number): void { @@ -1098,7 +1096,7 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { if (!(value instanceof Int32Array)) { value = new Int32Array(value) as any; } - this.context.uniform3iv(location.native, value as any, value.length); + this.context.uniform3ivOffset(location.native, value as any, value.length, (value as any).byteOffset); } uniform3fv(location: WebGLUniformLocation, value: number[]): void { @@ -1107,7 +1105,7 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { if (!(value instanceof Float32Array)) { value = new Float32Array(value) as any; } - this.context.uniform3fv(location.native, value as any, value.length); + this.context.uniform3fvOffset(location.native, value as any, value.length, (value as any).byteOffset); } uniform3i(location: WebGLUniformLocation, v0: number, v1: number, v2: number): void { @@ -1128,7 +1126,7 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { if (!(value instanceof Int32Array)) { value = new Int32Array(value) as any; } - this.context.uniform4iv(location.native, value as any, value.length); + this.context.uniform4ivOffset(location.native, value as any, value.length, (value as any).byteOffset); } uniform4fv(location: WebGLUniformLocation, value: number[]): void { @@ -1137,7 +1135,7 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { if (!(value instanceof Float32Array)) { value = new Float32Array(value) as any; } - this.context.uniform4fv(location.native, value as any, value.length); + this.context.uniform4fvOffset(location.native, value as any, value.length, (value as any).byteOffset); } uniform4i(location: WebGLUniformLocation, v0: number, v1: number, v2: number, v3: number): void { @@ -1152,7 +1150,7 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { if (!(value instanceof Float32Array)) { value = new Float32Array(value) as any; } - this.context.uniformMatrix2fv(location.native, transpose, value as any, value.length); + this.context.uniformMatrix2fvOffset(location.native, transpose, value as any, value.length, (value as any).byteOffset); } uniformMatrix3fv(location: WebGLUniformLocation, transpose: boolean, value: number[]): void { @@ -1161,7 +1159,7 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { if (!(value instanceof Float32Array)) { value = new Float32Array(value) as any; } - this.context.uniformMatrix3fv(location.native, transpose, value as any, value.length); + this.context.uniformMatrix3fvOffset(location.native, transpose, value as any, value.length, (value as any).byteOffset); } uniformMatrix4fv(location: WebGLUniformLocation, transpose: boolean, value: number[]): void { @@ -1170,7 +1168,7 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { if (!(value instanceof Float32Array)) { value = new Float32Array(value) as any; } - this.context.uniformMatrix4fv(location.native, transpose, value as any, value.length); + this.context.uniformMatrix4fvOffset(location.native, transpose, value as any, value.length, (value as any).byteOffset); } useProgram(program: WebGLProgram): void { @@ -1199,7 +1197,7 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { if (!(value instanceof Float32Array)) { value = new Float32Array(value) as any; } - this.context.vertexAttrib1fv(index, value as any); + this.context.vertexAttrib1fvOffset(index, value as any, (value as any).byteOffset); } vertexAttrib2f(index: number, v0: number, v1: number): void { @@ -1214,7 +1212,7 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { if (!(value instanceof Float32Array)) { value = new Float32Array(value) as any; } - this.context.vertexAttrib2fv(index, value as any); + this.context.vertexAttrib2fvOffset(index, value as any, (value as any).byteOffset); } vertexAttrib3f(index: number, v0: number, v1: number, v2: number): void { @@ -1229,7 +1227,7 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { if (!(value instanceof Float32Array)) { value = new Float32Array(value) as any; } - this.context.vertexAttrib3fv(index, value as any); + this.context.vertexAttrib3fvOffset(index, value as any, (value as any).byteOffset); } vertexAttrib4f(index: number, v0: number, v1: number, v2: number, v3: number): void { @@ -1244,7 +1242,7 @@ export class WebGLRenderingContext extends WebGLRenderingContextBase { if (!(value instanceof Float32Array)) { value = new Float32Array(value) as any; } - this.context.vertexAttrib4fv(index, value as any); + this.context.vertexAttrib4fvOffset(index, value as any, (value as any).byteOffset); } vertexAttribPointer(index: number, size: number, type: number, normalized: boolean, stride: number, offset: number): void { diff --git a/packages/canvas/WebGL2/WebGL2RenderingContext/index.ios.ts b/packages/canvas/WebGL2/WebGL2RenderingContext/index.ios.ts index 6dc24a73..58fedc02 100644 --- a/packages/canvas/WebGL2/WebGL2RenderingContext/index.ios.ts +++ b/packages/canvas/WebGL2/WebGL2RenderingContext/index.ios.ts @@ -80,7 +80,7 @@ export class WebGL2RenderingContext extends WebGL2RenderingContextBase { if (!(values instanceof Float32Array)) { values = new Float32Array(values) as any; } - this.native.clearBufferfv(buffer.native, drawbuffer, values as any); + this.native.clearBufferfvOffset(buffer.native, drawbuffer, values as any, (values as any).byteOffset); } clearBufferiv(buffer: WebGLBuffer, drawbuffer: number, values: number[] | Int32Array): void { @@ -88,7 +88,7 @@ export class WebGL2RenderingContext extends WebGL2RenderingContextBase { if (!(values instanceof Int32Array)) { values = new Int32Array(values) as any; } - this.native.clearBufferiv(buffer.native, drawbuffer, values as any); + this.native.clearBufferivOffset(buffer.native, drawbuffer, values as any, (values as any).byteOffset); } clearBufferuiv(buffer: WebGLBuffer, drawbuffer: number, values: number[] | Uint32Array): void { @@ -96,7 +96,7 @@ export class WebGL2RenderingContext extends WebGL2RenderingContextBase { if (!(values instanceof Uint32Array)) { values = new Uint32Array(values) as any; } - this.native.clearBufferuiv(buffer.native, drawbuffer, values as any); + this.native.clearBufferuivOffset(buffer.native, drawbuffer, values as any, (values as any).byteOffset); } clientWaitSync(sync: WebGLSync, flags: number, timeout: number): number { @@ -586,7 +586,7 @@ export class WebGL2RenderingContext extends WebGL2RenderingContextBase { uniform1uiv(location: number, data: Uint32Array): void { this._glCheckError('uniform1uiv'); - this.native.uniform1uiv(location, data as any, data.length); + this.native.uniform1uivOffset(location, data as any, data.length, data.byteOffset); } uniform2ui(location: number, v0: number, v1: number): void { @@ -596,7 +596,7 @@ export class WebGL2RenderingContext extends WebGL2RenderingContextBase { uniform2uiv(location: number, data: Uint32Array): void { this._glCheckError('uniform2uiv'); - this.native.uniform2uiv(location, data as any, data.length); + this.native.uniform2uivOffset(location, data as any, data.length, data.byteOffset); } /* Sync objects */ @@ -610,7 +610,7 @@ export class WebGL2RenderingContext extends WebGL2RenderingContextBase { uniform3uiv(location: number, data: Uint32Array): void { this._glCheckError('uniform3uiv'); - this.native.uniform3uiv(location, data as any, data.length); + this.native.uniform3uivOffset(location, data as any, data.length, data.byteOffset); } uniform4ui(location: number, v0: number, v1: number, v2: number, v3: number): void { @@ -620,7 +620,7 @@ export class WebGL2RenderingContext extends WebGL2RenderingContextBase { uniform4uiv(location: number, data: Uint32Array): void { this._glCheckError('uniform4uiv'); - this.native.uniform4uiv(location, data as any, data.length); + this.native.uniform4uivOffset(location, data as any, data.length, data.byteOffset); } uniformBlockBinding(program: WebGLProgram, uniformBlockIndex: number, uniformBlockBinding: number): void { @@ -630,22 +630,22 @@ export class WebGL2RenderingContext extends WebGL2RenderingContextBase { uniformMatrix2x3fv(location: WebGLUniformLocation, transpose: boolean, data: Float32Array): void { this._glCheckError('uniformMatrix2x3fv'); - this.native.uniformMatrix2x3fv(location.native, transpose, data as any, data.length); + this.native.uniformMatrix2x3fvOffset(location.native, transpose, data as any, data.length, data.byteOffset); } uniformMatrix2x4fv(location: WebGLUniformLocation, transpose: boolean, data: Float32Array): void { this._glCheckError('uniformMatrix2x4fv'); - this.native.uniformMatrix2x4fv(location.native, transpose, data as any, data.length); + this.native.uniformMatrix2x4fvOffset(location.native, transpose, data as any, data.length, data.byteOffset); } uniformMatrix3x2fv(location: WebGLUniformLocation, transpose: boolean, data: Float32Array): void { this._glCheckError('uniformMatrix3x2fv'); - this.native.uniformMatrix3x2fv(location.native, transpose, data as any, data.length); + this.native.uniformMatrix3x2fvOffset(location.native, transpose, data as any, data.length, data.byteOffset); } uniformMatrix3x4fv(location: WebGLUniformLocation, transpose: boolean, data: Float32Array): void { this._glCheckError('uniformMatrix3x4fv'); - this.native.uniformMatrix3x4fv(location.native, transpose, data as any, data.length); + this.native.uniformMatrix3x4fvOffset(location.native, transpose, data as any, data.length, data.byteOffset); } uniformMatrix4x2fv(location: WebGLUniformLocation, transpose: boolean, data: Float32Array): void { @@ -655,7 +655,7 @@ export class WebGL2RenderingContext extends WebGL2RenderingContextBase { uniformMatrix4x3fv(location: WebGLUniformLocation, transpose: boolean, data: Float32Array): void { this._glCheckError('uniformMatrix4x3fv'); - this.native.uniformMatrix4x3fv(location.native, transpose, data as any, data.length); + this.native.uniformMatrix4x3fvOffset(location.native, transpose, data as any, data.length, data.byteOffset); } vertexAttribDivisor(index: number, divisor: number): void { @@ -673,7 +673,7 @@ export class WebGL2RenderingContext extends WebGL2RenderingContextBase { if (!(value instanceof Int32Array)) { value = new Int32Array(value) as any; } - this.native.vertexAttribI4iv(index, value as any); + this.native.vertexAttribI4ivOffset(index, value as any, (value as any).byteOffset); } vertexAttribI4ui(index: number, v0: number, v1: number, v2: number, v3: number): void { @@ -686,7 +686,7 @@ export class WebGL2RenderingContext extends WebGL2RenderingContextBase { if (!(value instanceof Uint32Array)) { value = new Uint32Array(value) as any; } - this.native.vertexAttribI4uiv(index, value as any); + this.native.vertexAttribI4uivOffset(index, value as any, (value as any).byteOffset); } /* Miscellaneous constants */ diff --git a/packages/canvas/angular/index.ts b/packages/canvas/angular/index.ts index 9281b11e..6ce422d4 100644 --- a/packages/canvas/angular/index.ts +++ b/packages/canvas/angular/index.ts @@ -1,7 +1,7 @@ import {NgModule, NO_ERRORS_SCHEMA} from '@angular/core'; import {registerElement} from '@nativescript/angular'; -registerElement('Canvas', () => require('Canvas').Canvas); +registerElement('Canvas', () => require('@nativescript/canvas').Canvas); @NgModule({ diff --git a/packages/canvas/package.json b/packages/canvas/package.json index 070cd433..9ed18f75 100644 --- a/packages/canvas/package.json +++ b/packages/canvas/package.json @@ -1,6 +1,6 @@ { "name": "@nativescript/canvas", - "version": "1.0.0-alpha.2", + "version": "1.0.0-alpha.3", "description": "DOM Canvas API for NativeScript", "main": "index", "typings": "index.d.ts", @@ -33,7 +33,7 @@ "readmeFilename": "README.md", "bootstrapper": "@nativescript/plugin-seed", "dependencies": { - "@nativescript-community/gesturehandler": "~0.1.45", + "@nativescript-community/gesturehandler": "~0.1.47", "xmldom": "~0.6.0" } } diff --git a/packages/canvas/platforms/android/include.gradle b/packages/canvas/platforms/android/include.gradle index 867a2baa..fd80113c 100644 --- a/packages/canvas/platforms/android/include.gradle +++ b/packages/canvas/platforms/android/include.gradle @@ -6,5 +6,24 @@ allprojects { } dependencies { - implementation 'org.nativescript:canvas:1.0.0-alpha.2' + implementation 'org.nativescript:canvas:1.0.0-alpha.4' + implementation "androidx.multidex:multidex:2.0.1" } + + +android { + defaultConfig { + multiDexEnabled true + } + packagingOptions { + exclude 'META-INF/DEPENDENCIES' + exclude 'META-INF/LICENSE' + exclude 'META-INF/LICENSE.txt' + exclude 'META-INF/license.txt' + exclude 'META-INF/NOTICE' + exclude 'META-INF/NOTICE.txt' + exclude 'META-INF/notice.txt' + exclude 'META-INF/ASL2.0' + exclude("META-INF/*.kotlin_module") + } +} \ No newline at end of file diff --git a/packages/canvas/platforms/ios/Podfile b/packages/canvas/platforms/ios/Podfile index 2d1ddb93..da529781 100644 --- a/packages/canvas/platforms/ios/Podfile +++ b/packages/canvas/platforms/ios/Podfile @@ -1,6 +1,6 @@ use_frameworks! platform :ios, '11.0' -pod 'CanvasNative' , '~> 1.0.0.alpha.2' +pod 'CanvasNative' , '~> 1.0.0.alpha.3' #pod 'CanvasNative', :path => "$(SRCROOT)/../../../../../" #pod 'CanvasNative', :git => 'https://github.com/NativeScript/canvas.git', :tag => '1.0.0-alpha.2' diff --git a/packages/canvas/src-native/canvas-android/app/src/main/java/org/nativescript/canvasdemo/MainActivity.kt b/packages/canvas/src-native/canvas-android/app/src/main/java/org/nativescript/canvasdemo/MainActivity.kt index cdef43aa..d6991016 100644 --- a/packages/canvas/src-native/canvas-android/app/src/main/java/org/nativescript/canvasdemo/MainActivity.kt +++ b/packages/canvas/src-native/canvas-android/app/src/main/java/org/nativescript/canvasdemo/MainActivity.kt @@ -34,8 +34,8 @@ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) - //canvas = findViewById(R.id.canvasView) - svg = findViewById(R.id.svgView) + canvas = findViewById(R.id.canvasView) + //svg = findViewById(R.id.svgView) svg?.ignorePixelScaling = false // findViewById(R.id.parent) // .addView(canvas) @@ -244,7 +244,7 @@ class MainActivity : AppCompatActivity() { // drawTransformGradientSvg() // drawClipPathUnitsSvg() - downloadSvg() + // downloadSvg() // svg?.setSrc(""" // // @@ -314,6 +314,35 @@ class MainActivity : AppCompatActivity() { } + fun issue54(){ + executor.execute { + try { + val patternFile = File(filesDir, "pattern.svg") + if (patternFile.exists()) { + patternFile.delete() + } + + val url = + URL("https://mdn.mozillademos.org/files/222/Canvas_createpattern.png") + val fs = FileOutputStream(patternFile) + url.openStream().use { input -> + fs.use { output -> + input.copyTo(output) + } + } + + val ctx = canvas?.getContext("2d") as TNSCanvasRenderingContext2D? + val asset = TNSImageAsset() + val bm = BitmapFactory.decodeFile(patternFile.absolutePath) + val pattern = ctx?.createPattern(bm) + Log.d("com.test","issue54") + Log.d("com.test", "" + pattern) + } catch (e: IOException) { + e.printStackTrace() + } + } + } + fun goToVideo(view: View) { val intent = Intent(this, VideoActivity::class.java) startActivity(intent) @@ -493,7 +522,7 @@ class MainActivity : AppCompatActivity() { } val url = - URL("https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/tiger.svg") + URL("https://upload.wikimedia.org/wikipedia/commons/9/9d/The_Rhodopes_on_The_Paths_Of_Orpheus_And_Eurydice_Project_Map.svg") val fs = FileOutputStream(svgFile) url.openStream().use { input -> fs.use { output -> @@ -1476,18 +1505,19 @@ class MainActivity : AppCompatActivity() { @SuppressLint("NewApi") fun drawFill(view: View) { + issue54() //addPath(canvas!!) //decodeFile() //drawRemoteGLImage(canvas!!) - ctx = canvas?.getContext("2d") as TNSCanvasRenderingContext2D? + // ctx = canvas?.getContext("2d") as TNSCanvasRenderingContext2D? //drawText(ctx!!) // ballExample(ctx!!) //drawPattern(canvas!!) - drawFace(ctx!!) + //drawFace(ctx!!) //drawPattern(canvas!!) // drawElements(canvas!!) // drawPatterWithCanvas(canvas!!) - executor.submit { + // executor.submit { // drawPatterWithCanvas(canvas!!) // drawPatterWithCanvas(canvas!!) // canvas?.isHandleInvalidationManually = true @@ -1496,7 +1526,7 @@ class MainActivity : AppCompatActivity() { //drawFace(ctx!!) //canvas?.flush() // ballExample(ctx!!) - } + //} //getImageData(ctx!!) // drawImageExample(ctx!!) //drawPattern(canvas!!) diff --git a/packages/canvas/src-native/canvas-android/app/src/main/res/layout/activity_main.xml b/packages/canvas/src-native/canvas-android/app/src/main/res/layout/activity_main.xml index b8e39085..046f3e7b 100644 --- a/packages/canvas/src-native/canvas-android/app/src/main/res/layout/activity_main.xml +++ b/packages/canvas/src-native/canvas-android/app/src/main/res/layout/activity_main.xml @@ -59,19 +59,19 @@ app:layout_constraintVertical_bias="0.5" />--> - + app:layout_constraintTop_toTopOf="parent" /> - + app:layout_constraintTop_toTopOf="parent" />--> diff --git a/packages/canvas/src-native/canvas-android/canvas/publish.gradle b/packages/canvas/src-native/canvas-android/canvas/publish.gradle index d8bb8828..f7dd4315 100644 --- a/packages/canvas/src-native/canvas-android/canvas/publish.gradle +++ b/packages/canvas/src-native/canvas-android/canvas/publish.gradle @@ -21,7 +21,7 @@ signing { group = "org.nativescript" archivesBaseName = "canvas" -version = "1.0.0-alpha.2" +version = "1.0.0-alpha.4" uploadArchives { repositories { diff --git a/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/GLContext.kt b/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/GLContext.kt index 77b075bd..a68fca63 100644 --- a/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/GLContext.kt +++ b/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/GLContext.kt @@ -73,7 +73,7 @@ internal class GLContext { if (offscreenTexture != null) { GLES20.glClearColor(0f, 0f, 0f, 0f) GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT) - if (!swapBuffers(mEGLSurface)) { + if (!mGLThread!!.getPaused() && !swapBuffers(mEGLSurface)) { Log.e("JS", "GLContext: Cannot swap buffers!") } offscreenTexture!!.release() @@ -115,7 +115,7 @@ internal class GLContext { } else { GLES20.glClearColor(0f, 0f, 0f, 0f) GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT) - if (!swapBuffers(mEGLSurface)) { + if (!mGLThread!!.getPaused() && !swapBuffers(mEGLSurface)) { Log.e("JS", "GLContext: Cannot swap buffers!") } if (canvasView.nativeContext > 0) { @@ -151,13 +151,13 @@ internal class GLContext { val canvasView = reference!!.get() if (canvasView != null && canvasView.nativeContext != 0L && canvasView.pendingInvalidate) { TNSCanvas.nativeFlush(canvasView.nativeContext) - if (!swapBuffers(mEGLSurface)) { + if (!mGLThread!!.getPaused() && !swapBuffers(mEGLSurface)) { Log.e("JS", "GLContext: Cannot swap buffers!") } canvasView.pendingInvalidate = false } else { // WebGL - if (!swapBuffers(mEGLSurface)) { + if (!mGLThread!!.getPaused() && !swapBuffers(mEGLSurface)) { Log.e("JS", "GLContext: Cannot swap buffers!") } if (canvasView != null) { @@ -222,7 +222,7 @@ internal class GLContext { ) } if (mGLThread != null) { - mGLThread!!.setPaused(false) + mGLThread!!.setPaused(true) } }) } @@ -268,7 +268,8 @@ internal class GLContext { @JvmField var isStarted = false - private var isPaused = false + + internal var isPaused = false var type = TNSCanvas.ContextType.NONE @@ -277,6 +278,11 @@ internal class GLContext { isPaused = paused } + @Synchronized + fun getPaused(): Boolean { + return isPaused + } + @Synchronized override fun start() { super.start() @@ -501,7 +507,7 @@ internal class GLContext { bit = bit or GLES20.GL_STENCIL_BUFFER_BIT } GLES20.glClear(bit) - if (!swapBuffers(mEGLSurface)) { + if (!mGLThread!!.getPaused() && !swapBuffers(mEGLSurface)) { Log.e("JS", "GLContext: Cannot swap buffers!") } diff --git a/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSCanvasRenderingContext2D.kt b/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSCanvasRenderingContext2D.kt index f1492702..6341afcd 100644 --- a/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSCanvasRenderingContext2D.kt +++ b/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSCanvasRenderingContext2D.kt @@ -821,6 +821,7 @@ class TNSCanvasRenderingContext2D internal constructor(val canvas: TNSCanvas) : height: Int, repetition: Int ): TNSPattern? { + printLog("createPattern: imagebitmap") val lock = CountDownLatch(1) var value: TNSPattern? = null canvas.queueEvent { @@ -828,6 +829,7 @@ class TNSCanvasRenderingContext2D internal constructor(val canvas: TNSCanvas) : canvas.nativeContext, data, width, height, repetition ) + if (id > 0L) { value = TNSPattern(id) } @@ -869,7 +871,7 @@ class TNSCanvasRenderingContext2D internal constructor(val canvas: TNSCanvas) : src: TNSImageBitmap?, repetition: TNSPatternRepetition = TNSPatternRepetition.Repeat ): TNSPattern? { - printLog("createPattern: asset") + printLog("createPattern: imagebitmap") if (src == null) return null val lock = CountDownLatch(1) var value: TNSPattern? = null @@ -1612,6 +1614,14 @@ class TNSCanvasRenderingContext2D internal constructor(val canvas: TNSCanvas) : repetition: Int ): Long + + @JvmStatic + private external fun nativeCreatePatternEncoded( + context: Long, + data: ByteArray, + repetition: Int + ): Long + @JvmStatic private external fun nativeCreatePatternWithAsset( context: Long, diff --git a/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSTextDecoder.kt b/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSTextDecoder.kt index 8b7bf767..74b2c072 100644 --- a/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSTextDecoder.kt +++ b/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSTextDecoder.kt @@ -1,6 +1,7 @@ package org.nativescript.canvas import java.nio.* +import java.nio.charset.Charset /** * Created by triniwiz on 5/15/20 @@ -25,34 +26,88 @@ class TNSTextDecoder { nativeDestroy(nativeDecoder) } - fun decode(buffer: ByteArray): String { - return nativeDecode(nativeDecoder, buffer) + fun decode(buffer: ByteBuffer): String { + val result = nativeDecodeBufferToBytes(nativeDecoder, buffer) + return String(result, Charset.defaultCharset()) } - fun decode(buffer: ByteBuffer): String { - return nativeDecodeBuffer(nativeDecoder, buffer) + fun decode(bytes: ByteArray): String { + val result = nativeDecodeToBytes(nativeDecoder, bytes) + return String(result, Charset.defaultCharset()) } fun decode(bytes: ShortArray): String { val buffer = ShortBuffer.wrap(bytes) - return nativeDecodeBuffer(nativeDecoder, buffer) + val result = nativeDecodeBufferToBytes(nativeDecoder, buffer) + return String(result, Charset.defaultCharset()) } fun decode(bytes: IntArray): String { val buffer = IntBuffer.wrap(bytes) - return nativeDecodeBuffer(nativeDecoder, buffer) + val result = nativeDecodeBufferToBytes(nativeDecoder, buffer) + return String(result, Charset.defaultCharset()) } fun decode(bytes: FloatArray): String { val buffer = FloatBuffer.wrap(bytes) - return nativeDecodeBuffer(nativeDecoder, buffer) + val result = nativeDecodeBufferToBytes(nativeDecoder, buffer) + return String(result, Charset.defaultCharset()) } fun decode(bytes: DoubleArray): String { val buffer = DoubleBuffer.wrap(bytes) - return nativeDecodeBuffer(nativeDecoder, buffer) + val result = nativeDecodeBufferToBytes(nativeDecoder, buffer) + return String(result, Charset.defaultCharset()) + } + + + fun decodeByteBuffer(buffer: ByteBuffer): String { + val result = nativeDecodeBufferToBytes(nativeDecoder, buffer) + return String(result, Charset.defaultCharset()) + } + + fun decodeShortBuffer(buffer: ShortBuffer): String { + val result = nativeDecodeBufferToBytes(nativeDecoder, buffer) + return String(result, Charset.defaultCharset()) } + fun decodeIntBuffer(buffer: IntBuffer): String { + val result = nativeDecodeBufferToBytes(nativeDecoder, buffer) + return String(result, Charset.defaultCharset()) + } + + fun decodeFloatBuffer(buffer: FloatBuffer): String { + val result = nativeDecodeBufferToBytes(nativeDecoder, buffer) + return String(result, Charset.defaultCharset()) + } + + fun decodeDoubleBuffer(buffer: DoubleBuffer): String { + val result = nativeDecodeBufferToBytes(nativeDecoder, buffer) + return String(result, Charset.defaultCharset()) + } + + + fun decodeByte(bytes: ByteArray): String { + return decode(bytes) + } + + fun decodeShort(bytes: ShortArray): String { + return decode(bytes) + } + + fun decodeInt(bytes: IntArray): String { + return decode(bytes) + } + + fun decodeFloat(bytes: FloatArray): String { + return decode(bytes) + } + + fun decodeDouble(bytes: FloatArray): String { + return decode(bytes) + } + + val encoding: String get() = nativeGetEncoding(nativeDecoder) @@ -71,5 +126,11 @@ class TNSTextDecoder { @JvmStatic private external fun nativeDecodeBuffer(decoder: Long, bytes: Buffer): String + + @JvmStatic + private external fun nativeDecodeToBytes(decoder: Long, bytes: ByteArray): ByteArray + + @JvmStatic + private external fun nativeDecodeBufferToBytes(decoder: Long, bytes: Buffer): ByteArray } } diff --git a/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSWebGL2RenderingContext.kt b/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSWebGL2RenderingContext.kt index 031eb79b..e6d1a7d4 100644 --- a/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSWebGL2RenderingContext.kt +++ b/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSWebGL2RenderingContext.kt @@ -261,6 +261,81 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { } } + fun compressedTexSubImage3DByteBuffer( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + zoffset: Int, + width: Int, + height: Int, + depth: Int, + format: Int, + srcData: ByteBuffer, + srcOffset: Int, + srcLengthOverride: Int + ) { + compressedTexSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + srcData, + srcOffset, + srcLengthOverride + ) + } + + + fun compressedTexSubImage3D( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + zoffset: Int, + width: Int, + height: Int, + depth: Int, + format: Int, + srcData: ByteBuffer, + srcOffset: Int, + srcLengthOverride: Int + ) { + val lock = CountDownLatch(1) + runOnGLThread { + var size = srcData.capacity() + if (srcLengthOverride == 0) { + size -= srcOffset + } else if (srcLengthOverride > size - srcOffset) { + + } + srcData.position(srcOffset) + GLES30.glCompressedTexSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + size, + srcData + ) + lock.countDown() + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + fun copyBufferSubData( readTarget: Int, writeTarget: Int, @@ -478,6 +553,23 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { } } + + fun drawBuffersBuffer(buffers: IntBuffer) { + drawBuffers(buffers) + } + + fun drawBuffers(buffers: IntBuffer) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + GLES30.glDrawBuffers(buffers.capacity(), buffers) + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + fun endQuery(target: Int) { val lock = CountDownLatch(1) runOnGLThread(Runnable { @@ -936,7 +1028,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { info[0] = null return@Runnable } - var name: ByteArray? = ByteArray(maxNameLength[0]) + var name = ByteArray(maxNameLength[0]) val length = IntArray(1) val size = IntArray(1) val type = IntArray(1) @@ -957,7 +1049,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { info[0] = null return@Runnable } - name = Arrays.copyOfRange(name, 0, length[0]) + name = name.copyOfRange(0, length[0]) val nameValue = String(name) info[0] = WebGLActiveInfo(nameValue, size[0], type[0]) lock.countDown() @@ -1235,7 +1327,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { val lock = CountDownLatch(1) runOnGLThread(Runnable { source?.let { - if(it.isDirect){ + if (it.isDirect) { nativeTexImage3DBuffer( target, level, @@ -1249,7 +1341,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { it, flipYWebGL ) - }else { + } else { nativeTexImage3DByteArray( target, level, @@ -1302,7 +1394,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { val lock = CountDownLatch(1) runOnGLThread(Runnable { source?.let { - if(it.isDirect){ + if (it.isDirect) { nativeTexImage3DBuffer( target, level, @@ -1316,7 +1408,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { it, flipYWebGL ) - }else { + } else { nativeTexImage3DShortArray( target, level, @@ -1369,7 +1461,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { val lock = CountDownLatch(1) runOnGLThread(Runnable { source?.let { - if(it.isDirect){ + if (it.isDirect) { nativeTexImage3DBuffer( target, level, @@ -1383,7 +1475,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { it, flipYWebGL ) - }else { + } else { nativeTexImage3DIntArray( target, level, @@ -1436,7 +1528,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { val lock = CountDownLatch(1) runOnGLThread(Runnable { source?.let { - if(it.isDirect){ + if (it.isDirect) { nativeTexImage3DBuffer( target, level, @@ -1450,7 +1542,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { it, flipYWebGL ) - }else { + } else { nativeTexImage3DLongArray( target, level, @@ -1503,7 +1595,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { val lock = CountDownLatch(1) runOnGLThread(Runnable { source?.let { - if(it.isDirect){ + if (it.isDirect) { nativeTexImage3DBuffer( target, level, @@ -1517,7 +1609,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { it, flipYWebGL ) - }else { + } else { nativeTexImage3DFloatArray( target, level, @@ -1570,7 +1662,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { val lock = CountDownLatch(1) runOnGLThread(Runnable { source?.let { - if(it.isDirect){ + if (it.isDirect) { nativeTexImage3DBuffer( target, level, @@ -1584,7 +1676,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { it, flipYWebGL ) - }else { + } else { nativeTexImage3DDoubleArray( target, level, @@ -1621,6 +1713,98 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { } } + + fun texImage3DByteBuffer( + target: Int, + level: Int, + internalformat: Int, + width: Int, + height: Int, + depth: Int, + border: Int, + format: Int, + type: Int, + source: ByteBuffer? + ) { + texImage3D(target, level, internalformat, width, height, depth, border, format, type, source) + } + + + fun texImage3DShortBuffer( + target: Int, + level: Int, + internalformat: Int, + width: Int, + height: Int, + depth: Int, + border: Int, + format: Int, + type: Int, + source: ShortBuffer? + ) { + texImage3D(target, level, internalformat, width, height, depth, border, format, type, source) + } + + fun texImage3DIntBuffer( + target: Int, + level: Int, + internalformat: Int, + width: Int, + height: Int, + depth: Int, + border: Int, + format: Int, + type: Int, + source: IntBuffer? + ) { + texImage3D(target, level, internalformat, width, height, depth, border, format, type, source) + } + + fun texImage3DLongBuffer( + target: Int, + level: Int, + internalformat: Int, + width: Int, + height: Int, + depth: Int, + border: Int, + format: Int, + type: Int, + source: LongBuffer? + ) { + texImage3D(target, level, internalformat, width, height, depth, border, format, type, source) + } + + fun texImage3DFloatBuffer( + target: Int, + level: Int, + internalformat: Int, + width: Int, + height: Int, + depth: Int, + border: Int, + format: Int, + type: Int, + source: FloatBuffer? + ) { + texImage3D(target, level, internalformat, width, height, depth, border, format, type, source) + } + + fun texImage3DDoubleBuffer( + target: Int, + level: Int, + internalformat: Int, + width: Int, + height: Int, + depth: Int, + border: Int, + format: Int, + type: Int, + source: DoubleBuffer? + ) { + texImage3D(target, level, internalformat, width, height, depth, border, format, type, source) + } + fun texImage3DByte( target: Int, level: Int, @@ -1632,7 +1816,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { format: Int, type: Int, source: ByteArray? - ){ + ) { texImage3D(target, level, internalformat, width, height, depth, border, format, type, source) } @@ -1648,7 +1832,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { format: Int, type: Int, source: ShortArray? - ){ + ) { texImage3D(target, level, internalformat, width, height, depth, border, format, type, source) } @@ -1663,7 +1847,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { format: Int, type: Int, source: IntArray? - ){ + ) { texImage3D(target, level, internalformat, width, height, depth, border, format, type, source) } @@ -1678,7 +1862,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { format: Int, type: Int, source: LongArray? - ){ + ) { texImage3D(target, level, internalformat, width, height, depth, border, format, type, source) } @@ -1693,7 +1877,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { format: Int, type: Int, source: FloatArray? - ){ + ) { texImage3D(target, level, internalformat, width, height, depth, border, format, type, source) } @@ -1708,7 +1892,7 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { format: Int, type: Int, source: DoubleArray? - ){ + ) { texImage3D(target, level, internalformat, width, height, depth, border, format, type, source) } @@ -2320,8 +2504,21 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { type: Int, srcData: ByteArray?, srcOffset: Int = 0 - ){ - texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, srcData, srcOffset) + ) { + texSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + srcData, + srcOffset + ) } @@ -2338,8 +2535,21 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { type: Int, srcData: ShortArray?, srcOffset: Int = 0 - ){ - texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, srcData, srcOffset) + ) { + texSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + srcData, + srcOffset + ) } fun texSubImage3DInt( @@ -2355,8 +2565,21 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { type: Int, srcData: IntArray?, srcOffset: Int = 0 - ){ - texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, srcData, srcOffset) + ) { + texSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + srcData, + srcOffset + ) } @@ -2373,8 +2596,21 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { type: Int, srcData: LongArray?, srcOffset: Int = 0 - ){ - texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, srcData, srcOffset) + ) { + texSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + srcData, + srcOffset + ) } @@ -2391,8 +2627,21 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { type: Int, srcData: FloatArray?, srcOffset: Int = 0 - ){ - texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, srcData, srcOffset) + ) { + texSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + srcData, + srcOffset + ) } @@ -2409,12 +2658,28 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { type: Int, srcData: DoubleArray?, srcOffset: Int = 0 - ){ - texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, srcData, srcOffset) + ) { + texSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + srcData, + srcOffset + ) } - fun texSubImage3D( + + + + fun texSubImage3DByteBuffer( target: Int, level: Int, xoffset: Int, @@ -2428,48 +2693,24 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { srcData: ByteBuffer?, srcOffset: Int = 0 ) { - val lock = CountDownLatch(1) - runOnGLThread(Runnable { - srcData?.let { - it.position(srcOffset) - nativeTexSubImage3DBuffer( - target, - level, - xoffset, - yoffset, - zoffset, - width, - height, - depth, - format, - type, - it, - flipYWebGL - ) - } ?: run { - GLES30.glTexSubImage3D( - target, - level, - xoffset, - yoffset, - zoffset, - width, - height, - depth, - format, - type, - null - ) - } - lock.countDown() - }) - try { - lock.await() - } catch (ignored: InterruptedException) { - } + texSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + srcData, + srcOffset + ) } - fun texSubImage3D( + + fun texSubImage3DShortBuffer( target: Int, level: Int, xoffset: Int, @@ -2480,48 +2721,540 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { depth: Int, format: Int, type: Int, - srcData: ByteArray?, + srcData: ShortBuffer?, srcOffset: Int = 0 ) { - val lock = CountDownLatch(1) - runOnGLThread(Runnable { - srcData?.let { - val size = it.size - val buffer = ByteBuffer.allocateDirect(size).order(ByteOrder.nativeOrder()) - buffer.put(it) - buffer.rewind() - buffer.position(srcOffset) - nativeTexSubImage3DBuffer( - target, - level, - xoffset, - yoffset, - zoffset, - width, - height, - depth, - format, - type, - buffer, - flipYWebGL - ) - } ?: run { - GLES30.glTexSubImage3D( - target, - level, - xoffset, - yoffset, - zoffset, - width, - height, - depth, - format, - type, - null - ) - } - lock.countDown() - }) + texSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + srcData, + srcOffset + ) + } + + fun texSubImage3DIntBuffer( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + zoffset: Int, + width: Int, + height: Int, + depth: Int, + format: Int, + type: Int, + srcData: IntBuffer?, + srcOffset: Int = 0 + ) { + texSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + srcData, + srcOffset + ) + } + + + fun texSubImage3DLongBuffer( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + zoffset: Int, + width: Int, + height: Int, + depth: Int, + format: Int, + type: Int, + srcData: LongBuffer?, + srcOffset: Int = 0 + ) { + texSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + srcData, + srcOffset + ) + } + + + fun texSubImage3DFloatBuffer( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + zoffset: Int, + width: Int, + height: Int, + depth: Int, + format: Int, + type: Int, + srcData: FloatBuffer?, + srcOffset: Int = 0 + ) { + texSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + srcData, + srcOffset + ) + } + + + fun texSubImage3DDoubleBuffer( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + zoffset: Int, + width: Int, + height: Int, + depth: Int, + format: Int, + type: Int, + srcData: DoubleBuffer?, + srcOffset: Int = 0 + ) { + texSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + srcData, + srcOffset + ) + } + + + + fun texSubImage3D( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + zoffset: Int, + width: Int, + height: Int, + depth: Int, + format: Int, + type: Int, + srcData: ByteBuffer?, + srcOffset: Int = 0 + ) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + srcData?.let { + it.position(srcOffset) + nativeTexSubImage3DBuffer( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + it, + flipYWebGL + ) + } ?: run { + GLES30.glTexSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + null + ) + } + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + + fun texSubImage3D( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + zoffset: Int, + width: Int, + height: Int, + depth: Int, + format: Int, + type: Int, + srcData: ShortBuffer?, + srcOffset: Int = 0 + ) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + srcData?.let { + it.position(srcOffset) + nativeTexSubImage3DBuffer( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + it, + flipYWebGL + ) + } ?: run { + GLES30.glTexSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + null + ) + } + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + + + + fun texSubImage3D( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + zoffset: Int, + width: Int, + height: Int, + depth: Int, + format: Int, + type: Int, + srcData: IntBuffer?, + srcOffset: Int = 0 + ) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + srcData?.let { + it.position(srcOffset) + nativeTexSubImage3DBuffer( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + it, + flipYWebGL + ) + } ?: run { + GLES30.glTexSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + null + ) + } + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + + fun texSubImage3D( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + zoffset: Int, + width: Int, + height: Int, + depth: Int, + format: Int, + type: Int, + srcData: LongBuffer?, + srcOffset: Int = 0 + ) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + srcData?.let { + it.position(srcOffset) + nativeTexSubImage3DBuffer( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + it, + flipYWebGL + ) + } ?: run { + GLES30.glTexSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + null + ) + } + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + + fun texSubImage3D( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + zoffset: Int, + width: Int, + height: Int, + depth: Int, + format: Int, + type: Int, + srcData: FloatBuffer?, + srcOffset: Int = 0 + ) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + srcData?.let { + it.position(srcOffset) + nativeTexSubImage3DBuffer( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + it, + flipYWebGL + ) + } ?: run { + GLES30.glTexSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + null + ) + } + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + + fun texSubImage3D( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + zoffset: Int, + width: Int, + height: Int, + depth: Int, + format: Int, + type: Int, + srcData: DoubleBuffer?, + srcOffset: Int = 0 + ) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + srcData?.let { + it.position(srcOffset) + nativeTexSubImage3DBuffer( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + it, + flipYWebGL + ) + } ?: run { + GLES30.glTexSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + null + ) + } + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun texSubImage3D( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + zoffset: Int, + width: Int, + height: Int, + depth: Int, + format: Int, + type: Int, + srcData: ByteArray?, + srcOffset: Int = 0 + ) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + srcData?.let { + val size = it.size + val buffer = ByteBuffer.allocateDirect(size).order(ByteOrder.nativeOrder()) + buffer.put(it) + buffer.rewind() + buffer.position(srcOffset) + nativeTexSubImage3DBuffer( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + buffer, + flipYWebGL + ) + } ?: run { + GLES30.glTexSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + null + ) + } + lock.countDown() + }) try { lock.await() } catch (ignored: InterruptedException) { @@ -2938,6 +3671,60 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { } } + + + fun uniform1uivBuffer(location: Int, data: IntBuffer) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + val count = data.capacity() / 1 + GLES30.glUniform1uiv(location, count, data) + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniform2uivBuffer(location: Int, data: IntBuffer) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + val count = data.capacity() / 2 + GLES30.glUniform2uiv(location, count, data) + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniform3uivBuffer(location: Int, data: IntBuffer) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + val count = data.capacity() / 3 + GLES30.glUniform3uiv(location, count, data) + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniform4uivBuffer(location: Int, data: IntBuffer) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + val count = data.capacity() / 4 + GLES30.glUniform4uiv(location, count, data) + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + fun uniformBlockBinding(program: Int, uniformBlockIndex: Int, uniformBlockBinding: Int) { val lock = CountDownLatch(1) runOnGLThread(Runnable { @@ -3028,6 +3815,89 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { } } + + + + fun uniformMatrix3x2fvBuffer(location: Int, transpose: Boolean, data: FloatBuffer) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + val count = data.capacity() / 6 + GLES30.glUniformMatrix3x2fv(location, count, transpose, data) + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniformMatrix4x2fvBuffer(location: Int, transpose: Boolean, data: FloatBuffer) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + val count = data.capacity() / 8 + GLES30.glUniformMatrix4x2fv(location, count, transpose, data) + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniformMatrix2x3fvBuffer(location: Int, transpose: Boolean, data: FloatBuffer) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + val count = data.capacity() / 6 + GLES30.glUniformMatrix2x3fv(location, count, transpose, data) + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniformMatrix4x3fvBuffer(location: Int, transpose: Boolean, data: FloatBuffer) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + val count = data.capacity() / 12 + GLES30.glUniformMatrix4x3fv(location, count, transpose, data) + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniformMatrix2x4fvBuffer(location: Int, transpose: Boolean, data: FloatBuffer) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + val count = data.capacity() / 8 + GLES30.glUniformMatrix2x4fv(location, count, transpose, data) + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniformMatrix3x4fvBuffer(location: Int, transpose: Boolean, data: FloatBuffer) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + val count = data.capacity() / 12 + GLES30.glUniformMatrix3x4fv(location, count, transpose, data) + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + + fun vertexAttribDivisor(index: Int, divisor: Int) { val lock = CountDownLatch(1) runOnGLThread(Runnable { @@ -3088,6 +3958,31 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { } } + + fun vertexAttribI4ivBuffer(index: Int, value: IntBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + GLES30.glVertexAttribI4iv(index, value) + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun vertexAttribI4uivBuffer(index: Int, value: IntBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread(Runnable { + GLES30.glVertexAttribI4uiv(index, value) + lock.countDown() + }) + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + /* Getting GL parameter information */ val READ_BUFFER = GLES30.GL_READ_BUFFER val UNPACK_ROW_LENGTH = GLES30.GL_UNPACK_ROW_LENGTH @@ -3446,7 +4341,6 @@ class TNSWebGL2RenderingContext : TNSWebGLRenderingContext { ) - @JvmStatic private external fun nativeTexImage3DShortArray( target: Int, diff --git a/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSWebGLRenderingContext.kt b/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSWebGLRenderingContext.kt index 0ece9cbe..8ad44861 100644 --- a/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSWebGLRenderingContext.kt +++ b/packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSWebGLRenderingContext.kt @@ -57,10 +57,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun activeTexture(texture: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glActiveTexture(texture) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -69,10 +69,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun attachShader(program: Int, shader: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glAttachShader(program, shader) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -81,10 +81,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bindAttribLocation(program: Int, index: Int, name: String?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBindAttribLocation(program, index, name) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -93,10 +93,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bindBuffer(target: Int, buffer: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBindBuffer(target, buffer) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -105,10 +105,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bindBuffer(target: Int, buffer: Any?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBindBuffer(target, 0) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -117,10 +117,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bindFramebuffer(target: Int, framebuffer: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBindFramebuffer(target, framebuffer) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -129,10 +129,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bindRenderbuffer(target: Int, renderbuffer: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBindRenderbuffer(target, renderbuffer) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -141,10 +141,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bindTexture(target: Int, texture: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBindTexture(target, texture) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -153,10 +153,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun blendColor(red: Float, green: Float, blue: Float, alpha: Float) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBlendColor(red, green, blue, alpha) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -165,10 +165,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun blendEquation(mode: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBlendEquation(mode) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -177,10 +177,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun blendEquationSeparate(modeRGB: Int, modeAlpha: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBlendEquationSeparate(modeRGB, modeAlpha) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -189,10 +189,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun blendFunc(sfactor: Int, dfactor: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBlendFunc(sfactor, dfactor) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -201,10 +201,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun blendFuncSeparate(srcRGB: Int, dstRGB: Int, srcAlpha: Int, dstAlpha: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -213,10 +213,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bufferData(target: Int, size: Int, usage: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBufferData(target, size, null, usage) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -225,39 +225,39 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bufferData(target: Int, srcData: Any?, usage: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBufferData(target, 0, null, usage) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { } } - fun bufferDataByte(target: Int, srcData: ByteArray, usage: Int){ + fun bufferDataByte(target: Int, srcData: ByteArray, usage: Int) { bufferData(target, srcData, usage); } - fun bufferDataShort(target: Int, srcData: ShortArray, usage: Int){ + fun bufferDataShort(target: Int, srcData: ShortArray, usage: Int) { bufferData(target, srcData, usage) } - fun bufferDataFloat(target: Int, srcData: FloatArray, usage: Int){ + fun bufferDataFloat(target: Int, srcData: FloatArray, usage: Int) { bufferData(target, srcData, usage) } - fun bufferDataInt(target: Int, srcData: IntArray, usage: Int){ + fun bufferDataInt(target: Int, srcData: IntArray, usage: Int) { bufferData(target, srcData, usage) } fun bufferData(target: Int, srcData: ByteArray, usage: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val buffer = ByteBuffer.wrap(srcData) GLES20.glBufferData(target, srcData.size, buffer, usage) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -266,12 +266,12 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bufferData(target: Int, srcData: ShortArray, usage: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val size = srcData.size * SIZE_OF_SHORT val buffer = ShortBuffer.wrap(srcData) GLES20.glBufferData(target, size, buffer, usage) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -280,12 +280,12 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bufferData(target: Int, srcData: FloatArray, usage: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val size = srcData.size * SIZE_OF_FLOAT val buffer = FloatBuffer.wrap(srcData) GLES20.glBufferData(target, size, buffer, usage) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -294,24 +294,42 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bufferData(target: Int, srcData: IntArray, usage: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val size = srcData.size * SIZE_OF_INT val buffer = IntBuffer.wrap(srcData) GLES20.glBufferData(target, size, buffer, usage) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { } } + + fun bufferDataByteBuffer(target: Int, srcData: ByteBuffer, usage: Int) { + bufferData(target, srcData, usage); + } + + fun bufferDataShortBuffer(target: Int, srcData: ShortBuffer, usage: Int) { + bufferData(target, srcData, usage) + } + + fun bufferDataFloatBuffer(target: Int, srcData: FloatBuffer, usage: Int) { + bufferData(target, srcData, usage) + } + + fun bufferDataIntBuffer(target: Int, srcData: IntBuffer, usage: Int) { + bufferData(target, srcData, usage) + } + + fun bufferData(target: Int, srcData: ByteBuffer, usage: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBufferData(target, srcData.capacity(), srcData, usage) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -320,10 +338,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bufferData(target: Int, srcData: ShortBuffer, usage: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBufferData(target, srcData.capacity() * SIZE_OF_SHORT, srcData, usage) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -332,10 +350,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bufferData(target: Int, srcData: IntBuffer, usage: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBufferData(target, srcData.capacity() * SIZE_OF_INT, srcData, usage) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -344,40 +362,40 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bufferData(target: Int, srcData: FloatBuffer, usage: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBufferData(target, srcData.capacity() * SIZE_OF_FLOAT, srcData, usage) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { } } - fun bufferSubDataByte(target: Int, offset: Int, srcData: ByteArray){ + fun bufferSubDataByte(target: Int, offset: Int, srcData: ByteArray) { bufferSubData(target, offset, srcData) } - fun bufferSubDataShort(target: Int, offset: Int, srcData: ShortArray){ + fun bufferSubDataShort(target: Int, offset: Int, srcData: ShortArray) { bufferSubData(target, offset, srcData) } - fun bufferSubDataInt(target: Int, offset: Int, srcData: IntArray){ + fun bufferSubDataInt(target: Int, offset: Int, srcData: IntArray) { bufferSubData(target, offset, srcData) } - fun bufferSubDataFloat(target: Int, offset: Int, srcData: FloatArray){ + fun bufferSubDataFloat(target: Int, offset: Int, srcData: FloatArray) { bufferSubData(target, offset, srcData) } fun bufferSubData(target: Int, offset: Int, srcData: ByteArray) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val size = srcData.size val buffer = ByteBuffer.wrap(srcData) GLES20.glBufferSubData(target, offset, size, buffer) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -386,13 +404,13 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bufferSubData(target: Int, offset: Int, srcData: ShortArray) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val size = srcData.size * SIZE_OF_SHORT val buffer = ShortBuffer.wrap(srcData) val os = SIZE_OF_SHORT * offset GLES20.glBufferSubData(target, os, size, buffer) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -401,13 +419,13 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bufferSubData(target: Int, offset: Int, srcData: IntArray) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val size = srcData.size * SIZE_OF_INT val buffer = IntBuffer.wrap(srcData) val os = SIZE_OF_INT * offset GLES20.glBufferSubData(target, os, size, buffer) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -416,25 +434,43 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bufferSubData(target: Int, offset: Int, srcData: FloatArray) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val size = srcData.size * SIZE_OF_FLOAT val buffer = FloatBuffer.wrap(srcData) val os = SIZE_OF_FLOAT * offset GLES20.glBufferSubData(target, os, size, buffer) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { } } + + fun bufferSubDataByteBuffer(target: Int, offset: Int, srcData: ByteBuffer) { + bufferSubData(target, offset, srcData) + } + + fun bufferSubDataShortBuffer(target: Int, offset: Int, srcData: ShortBuffer) { + bufferSubData(target, offset, srcData) + } + + fun bufferSubDataIntBuffer(target: Int, offset: Int, srcData: IntBuffer) { + bufferSubData(target, offset, srcData) + } + + fun bufferSubDataFloatBuffer(target: Int, offset: Int, srcData: FloatBuffer) { + bufferSubData(target, offset, srcData) + } + + fun bufferSubData(target: Int, offset: Int, srcData: ByteBuffer) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBufferSubData(target, offset, srcData.capacity(), srcData) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -443,10 +479,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bufferSubData(target: Int, offset: Int, srcData: ShortBuffer) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBufferSubData(target, offset, srcData.capacity() * SIZE_OF_SHORT, srcData) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -455,10 +491,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bufferSubData(target: Int, offset: Int, srcData: IntBuffer) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBufferSubData(target, offset, srcData.capacity() * SIZE_OF_INT, srcData) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -467,10 +503,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun bufferSubData(target: Int, offset: Int, srcData: FloatBuffer) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glBufferSubData(target, offset, srcData.capacity() * SIZE_OF_FLOAT, srcData) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -480,10 +516,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun checkFramebufferStatus(target: Int): Int { val lock = CountDownLatch(1) val status = IntArray(1) - runOnGLThread(Runnable { + runOnGLThread { status[0] = GLES20.glCheckFramebufferStatus(target) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -493,13 +529,13 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun clear(mask: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { if (clearIfComposited(mask) !== HowToClear.CombinedClear) { GLES20.glClear(mask) } updateCanvas() lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -512,10 +548,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { canvas.mClearColor[1] = green canvas.mClearColor[2] = blue canvas.mClearColor[3] = alpha - runOnGLThread(Runnable { + runOnGLThread { GLES20.glClearColor(red, green, blue, alpha) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -525,10 +561,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun clearDepth(depth: Float) { val lock = CountDownLatch(1) canvas.mClearDepth = depth - runOnGLThread(Runnable { + runOnGLThread { GLES20.glClearDepthf(depth) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -538,10 +574,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun clearStencil(stencil: Int) { val lock = CountDownLatch(1) canvas.mClearStencil = stencil - runOnGLThread(Runnable { + runOnGLThread { GLES20.glClearStencil(stencil) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -554,10 +590,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { canvas.mColorMask[1] = green canvas.mColorMask[2] = blue canvas.mColorMask[3] = alpha - runOnGLThread(Runnable { + runOnGLThread { GLES20.glColorMask(red, green, blue, alpha) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -649,16 +685,70 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun compileShader(shader: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glCompileShader(shader) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { } } + + + + fun compressedTexImage2DByteBuffer( + target: Int, + level: Int, + internalformat: Int, + width: Int, + height: Int, + border: Int, + pixels: ByteBuffer + ) { + compressedTexImage2D(target, level, internalformat, width, height, border, pixels) + } + + fun compressedTexImage2DShortBuffer( + target: Int, + level: Int, + internalformat: Int, + width: Int, + height: Int, + border: Int, + pixels: ShortBuffer + ) { + compressedTexImage2D(target, level, internalformat, width, height, border, pixels) + } + + + fun compressedTexImage2DIntBuffer( + target: Int, + level: Int, + internalformat: Int, + width: Int, + height: Int, + border: Int, + pixels: IntBuffer + ) { + compressedTexImage2D(target, level, internalformat, width, height, border, pixels) + } + + + fun compressedTexImage2DFloatBuffer( + target: Int, + level: Int, + internalformat: Int, + width: Int, + height: Int, + border: Int, + pixels: FloatBuffer + ) { + compressedTexImage2D(target, level, internalformat, width, height, border, pixels) + } + + fun compressedTexImage2DByte( target: Int, level: Int, @@ -667,7 +757,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { height: Int, border: Int, pixels: ByteArray - ){ + ) { compressedTexImage2D(target, level, internalformat, width, height, border, pixels) } @@ -679,7 +769,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { height: Int, border: Int, pixels: ShortArray - ){ + ) { compressedTexImage2D(target, level, internalformat, width, height, border, pixels) } @@ -692,7 +782,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { height: Int, border: Int, pixels: IntArray - ){ + ) { compressedTexImage2D(target, level, internalformat, width, height, border, pixels) } @@ -705,10 +795,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { height: Int, border: Int, pixels: FloatArray - ){ + ) { compressedTexImage2D(target, level, internalformat, width, height, border, pixels) } + fun compressedTexImage2D( target: Int, level: Int, @@ -716,10 +807,12 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { width: Int, height: Int, border: Int, - pixels: ByteBuffer + pixels: ByteArray ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { + val size = pixels.size + val buffer = ByteBuffer.wrap(pixels) GLES20.glCompressedTexImage2D( target, level, @@ -727,11 +820,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { width, height, border, - pixels.capacity(), - pixels + size, + buffer ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -745,10 +838,12 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { width: Int, height: Int, border: Int, - pixels: ShortBuffer + pixels: ShortArray ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { + val size = pixels.size * SIZE_OF_SHORT + val buffer = ShortBuffer.wrap(pixels) GLES20.glCompressedTexImage2D( target, level, @@ -756,11 +851,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { width, height, border, - pixels.capacity() * SIZE_OF_SHORT, - pixels + size, + buffer ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -774,10 +869,12 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { width: Int, height: Int, border: Int, - pixels: IntBuffer + pixels: IntArray ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { + val size = pixels.size * SIZE_OF_INT + val buffer = IntBuffer.wrap(pixels) GLES20.glCompressedTexImage2D( target, level, @@ -785,11 +882,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { width, height, border, - pixels.capacity() * SIZE_OF_INT, - pixels + size, + buffer ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -803,10 +900,12 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { width: Int, height: Int, border: Int, - pixels: FloatBuffer + pixels: FloatArray ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { + val size = pixels.size * SIZE_OF_FLOAT + val buffer = FloatBuffer.wrap(pixels) GLES20.glCompressedTexImage2D( target, level, @@ -814,17 +913,19 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { width, height, border, - pixels.capacity() * SIZE_OF_FLOAT, - pixels + size, + buffer ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { } } + + fun compressedTexImage2D( target: Int, level: Int, @@ -832,12 +933,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { width: Int, height: Int, border: Int, - pixels: ByteArray + pixels: ByteBuffer ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { - val size = pixels.size - val buffer = ByteBuffer.wrap(pixels) + runOnGLThread { GLES20.glCompressedTexImage2D( target, level, @@ -845,11 +944,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { width, height, border, - size, - buffer + pixels.capacity(), + pixels ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -863,12 +962,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { width: Int, height: Int, border: Int, - pixels: ShortArray + pixels: ShortBuffer ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { - val size = pixels.size * SIZE_OF_SHORT - val buffer = ShortBuffer.wrap(pixels) + runOnGLThread { GLES20.glCompressedTexImage2D( target, level, @@ -876,11 +973,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { width, height, border, - size, - buffer + pixels.capacity() * SIZE_OF_SHORT, + pixels ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -894,12 +991,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { width: Int, height: Int, border: Int, - pixels: IntArray + pixels: IntBuffer ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { - val size = pixels.size * SIZE_OF_INT - val buffer = IntBuffer.wrap(pixels) + runOnGLThread { GLES20.glCompressedTexImage2D( target, level, @@ -907,11 +1002,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { width, height, border, - size, - buffer + pixels.capacity() * SIZE_OF_INT, + pixels ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -925,12 +1020,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { width: Int, height: Int, border: Int, - pixels: FloatArray + pixels: FloatBuffer ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { - val size = pixels.size * SIZE_OF_FLOAT - val buffer = FloatBuffer.wrap(pixels) + runOnGLThread { GLES20.glCompressedTexImage2D( target, level, @@ -938,11 +1031,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { width, height, border, - size, - buffer + pixels.capacity() * SIZE_OF_FLOAT, + pixels ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -950,6 +1043,63 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { } + + + fun compressedTexSubImage2DByteBuffer( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + width: Int, + height: Int, + format: Int, + pixels: ByteBuffer + ) { + compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, pixels) + } + + + fun compressedTexSubImage2DShortBuffer( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + width: Int, + height: Int, + format: Int, + pixels: ShortBuffer + ) { + compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, pixels) + } + + fun compressedTexSubImage2DIntBuffer( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + width: Int, + height: Int, + format: Int, + pixels: IntBuffer + ) { + compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, pixels) + } + + fun compressedTexSubImage2DFloatBuffer( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + width: Int, + height: Int, + format: Int, + pixels: FloatBuffer + ) { + compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, pixels) + } + + + fun compressedTexSubImage2DByte( target: Int, level: Int, @@ -1014,7 +1164,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: ByteBuffer ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glCompressedTexSubImage2D( target, level, @@ -1027,7 +1177,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1046,7 +1196,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: ShortBuffer ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glCompressedTexSubImage2D( target, level, @@ -1059,7 +1209,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1078,7 +1228,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: IntBuffer ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glCompressedTexSubImage2D( target, level, @@ -1091,7 +1241,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1109,7 +1259,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: FloatBuffer ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glCompressedTexSubImage2D( target, level, @@ -1122,7 +1272,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1141,7 +1291,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: ByteArray ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val size = pixels.size val buffer = ByteBuffer.wrap(pixels) GLES20.glCompressedTexSubImage2D( @@ -1156,7 +1306,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { buffer ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1174,7 +1324,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: ShortArray ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val size = pixels.size * SIZE_OF_SHORT val buffer = ShortBuffer.wrap(pixels) GLES20.glCompressedTexSubImage2D( @@ -1189,7 +1339,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { buffer ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1207,7 +1357,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: IntArray ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val size = pixels.size * SIZE_OF_INT val buffer = IntBuffer.wrap(pixels) GLES20.glCompressedTexSubImage2D( @@ -1222,7 +1372,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { buffer ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1240,7 +1390,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: FloatArray ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val size = pixels.size * SIZE_OF_FLOAT val buffer = FloatBuffer.wrap(pixels) GLES20.glCompressedTexSubImage2D( @@ -1255,7 +1405,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { buffer ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1273,11 +1423,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { border: Int ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { clearIfComposited() GLES20.glCopyTexImage2D(target, level, internalformat, x, y, width, height, border) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1295,11 +1445,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { height: Int ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { clearIfComposited() GLES20.glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1309,10 +1459,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun createBuffer(): Int { val lock = CountDownLatch(1) val bufferId = IntArray(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glGenBuffers(1, bufferId, 0) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1323,10 +1473,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun createFramebuffer(): Int { val lock = CountDownLatch(1) val frameBufferId = IntArray(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glGenFramebuffers(1, frameBufferId, 0) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1337,10 +1487,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun createProgram(): Int { val lock = CountDownLatch(1) val program = IntArray(1) - runOnGLThread(Runnable { + runOnGLThread { program[0] = GLES20.glCreateProgram() lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1351,10 +1501,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun createRenderbuffer(): Int { val lock = CountDownLatch(1) val renderBufferId = IntArray(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glGenRenderbuffers(1, renderBufferId, 0) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1365,10 +1515,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun createShader(type: Int): Int { val lock = CountDownLatch(1) val shader = IntArray(1) - runOnGLThread(Runnable { + runOnGLThread { shader[0] = GLES20.glCreateShader(type) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1379,10 +1529,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun createTexture(): Int { val lock = CountDownLatch(1) val textureId = IntArray(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glGenTextures(1, textureId, 0) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1392,10 +1542,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun cullFace(mode: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glCullFace(mode) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1404,11 +1554,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun deleteBuffer(buffer: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val id = intArrayOf(buffer) GLES20.glDeleteBuffers(1, id, 0) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1417,11 +1567,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun deleteFramebuffer(frameBuffer: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val id = intArrayOf(frameBuffer) GLES20.glDeleteFramebuffers(1, id, 0) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1430,10 +1580,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun deleteProgram(program: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glDeleteProgram(program) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1442,11 +1592,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun deleteRenderbuffer(renderbuffer: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val id = intArrayOf(renderbuffer) GLES20.glDeleteRenderbuffers(1, id, 0) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1455,10 +1605,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun deleteShader(shader: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glDeleteShader(shader) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1467,11 +1617,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun deleteTexture(texture: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val id = intArrayOf(texture) GLES20.glDeleteTextures(1, id, 0) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1480,10 +1630,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun depthFunc(func: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glDepthFunc(func) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1492,10 +1642,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun depthMask(flag: Boolean) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glDepthMask(flag) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1504,10 +1654,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun depthRange(zNear: Float, zFar: Float) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glDepthRangef(zNear, zFar) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1516,10 +1666,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun detachShader(program: Int, shader: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glDetachShader(program, shader) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1528,10 +1678,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun disable(cap: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glDisable(cap) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1540,10 +1690,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun disableVertexAttribArray(index: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glDisableVertexAttribArray(index) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1552,12 +1702,12 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun drawArrays(mode: Int, first: Int, count: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { clearIfComposited() GLES20.glDrawArrays(mode, first, count) updateCanvas() lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1566,12 +1716,12 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun drawElements(mode: Int, count: Int, type: Int, offset: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { clearIfComposited() GLES20.glDrawElements(mode, count, type, offset) updateCanvas() lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1580,10 +1730,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun enable(cap: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glEnable(cap) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1592,10 +1742,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun enableVertexAttribArray(index: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glEnableVertexAttribArray(index) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1604,10 +1754,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun finish() { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glFinish() lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1616,10 +1766,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun flush() { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glFlush() lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1633,10 +1783,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { renderbuffer: Int ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1645,10 +1795,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: Int, level: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glFramebufferTexture2D(target, attachment, textarget, texture, level) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1657,10 +1807,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun frontFace(mode: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glFrontFace(mode) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1669,10 +1819,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun generateMipmap(target: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glGenerateMipmap(target) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1682,7 +1832,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun getActiveAttrib(program: Int, index: Int): WebGLActiveInfo { val lock = CountDownLatch(1) val info = WebGLActiveInfo() - runOnGLThread(Runnable { //IntBuffer length = IntBuffer.allocate(1); + runOnGLThread { //IntBuffer length = IntBuffer.allocate(1); //GLES20.glGetProgramiv(program, GLES20.GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, length); val length = IntArray(1) GLES20.glGetProgramiv(program, GLES20.GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, length, 0) @@ -1705,7 +1855,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { info.size = size[0] info.type = type[0] lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1716,7 +1866,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun getActiveUniform(program: Int, index: Int): WebGLActiveInfo { val lock = CountDownLatch(1) val info = WebGLActiveInfo() - runOnGLThread(Runnable { + runOnGLThread { val length = IntArray(1) val size = IntArray(1) val type = IntArray(1) @@ -1738,7 +1888,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { info.size = size[0] info.type = type[0] lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1749,7 +1899,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun getAttachedShaders(program: Int): IntArray? { val lock = CountDownLatch(1) val shadersList = arrayOfNulls(1) - runOnGLThread(Runnable { + runOnGLThread { val count = IntArray(1) GLES20.glGetProgramiv(program, GLES20.GL_ATTACHED_SHADERS, count, 0) val shaders = IntArray(count[0]) @@ -1757,7 +1907,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { GLES20.glGetAttachedShaders(program, count[0], written, 0, shaders, 0) shadersList[0] = shaders lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1768,10 +1918,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun getAttribLocation(program: Int, name: String?): Int { val lock = CountDownLatch(1) val location = IntArray(1) - runOnGLThread(Runnable { + runOnGLThread { location[0] = GLES20.glGetAttribLocation(program, name) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1782,13 +1932,13 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun getBufferParameter(target: Int, pname: Int): Int { val lock = CountDownLatch(1) val parameter = IntArray(1) - runOnGLThread(Runnable { // IntBuffer params = IntBuffer.allocate(1); + runOnGLThread { // IntBuffer params = IntBuffer.allocate(1); // GLES20.glGetBufferParameteriv(target, pname, params); val params = IntArray(1) GLES20.glGetBufferParameteriv(target, pname, params, 0) parameter[0] = params[0] lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1826,10 +1976,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { get() { val lock = CountDownLatch(1) val error = IntArray(1) - runOnGLThread(Runnable { + runOnGLThread { error[0] = GLES20.glGetError() lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1840,7 +1990,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun getExtension(name: String): Any? { val lock = CountDownLatch(1) val value = arrayOfNulls(1) - runOnGLThread(Runnable { + runOnGLThread { val extensions = GLES20.glGetString(GLES20.GL_EXTENSIONS) if (name == "EXT_blend_minmax" && extensions.contains("GL_EXT_blend_minmax")) { value[0] = EXT_blend_minmax() @@ -1921,7 +2071,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { value[0] = null } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1936,7 +2086,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { ): TNSFramebufferAttachmentParameter { val lock = CountDownLatch(1) val result = TNSFramebufferAttachmentParameter() - runOnGLThread(Runnable { // IntBuffer params = IntBuffer.allocate(1); + runOnGLThread { // IntBuffer params = IntBuffer.allocate(1); // GLES20.glGetFramebufferAttachmentParameteriv(target, attachment, pname, params); val params = IntArray(1) GLES20.glGetFramebufferAttachmentParameteriv(target, attachment, pname, params, 0) @@ -1966,7 +2116,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { result.value = params[0] } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -1981,7 +2131,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { open fun getParameter(pname: Int): Any? { val lock = CountDownLatch(1) val parameter = arrayOfNulls(1) - runOnGLThread(Runnable { + runOnGLThread { when (pname) { ACTIVE_TEXTURE, ALPHA_BITS, ARRAY_BUFFER_BINDING, BLEND_DST_ALPHA, BLEND_DST_RGB, BLEND_EQUATION, BLEND_EQUATION_ALPHA, BLEND_SRC_ALPHA, BLEND_SRC_RGB, BLUE_BITS, CULL_FACE_MODE, CURRENT_PROGRAM, DEPTH_BITS, DEPTH_FUNC, ELEMENT_ARRAY_BUFFER_BINDING, FRAMEBUFFER_BINDING, FRONT_FACE, GENERATE_MIPMAP_HINT, GREEN_BITS, IMPLEMENTATION_COLOR_READ_FORMAT, IMPLEMENTATION_COLOR_READ_TYPE, MAX_COMBINED_TEXTURE_IMAGE_UNITS, MAX_CUBE_MAP_TEXTURE_SIZE, MAX_FRAGMENT_UNIFORM_VECTORS, MAX_RENDERBUFFER_SIZE, MAX_TEXTURE_IMAGE_UNITS, MAX_TEXTURE_SIZE, MAX_VARYING_VECTORS, MAX_VERTEX_ATTRIBS, MAX_VERTEX_TEXTURE_IMAGE_UNITS, MAX_VERTEX_UNIFORM_VECTORS, PACK_ALIGNMENT, RED_BITS, RENDERBUFFER_BINDING, SAMPLE_BUFFERS, SAMPLES, STENCIL_BACK_FAIL, STENCIL_BACK_FUNC, STENCIL_BACK_PASS_DEPTH_FAIL, STENCIL_BACK_PASS_DEPTH_PASS, STENCIL_BACK_REF, STENCIL_BACK_VALUE_MASK, STENCIL_BACK_WRITEMASK, STENCIL_BITS, STENCIL_CLEAR_VALUE, STENCIL_FAIL, STENCIL_FUNC, STENCIL_PASS_DEPTH_FAIL, STENCIL_PASS_DEPTH_PASS, STENCIL_REF, STENCIL_VALUE_MASK, STENCIL_WRITEMASK, SUBPIXEL_BITS, TEXTURE_BINDING_2D, TEXTURE_BINDING_CUBE_MAP, UNPACK_ALIGNMENT -> { // IntBuffer param = IntBuffer.allocate(1); @@ -2050,7 +2200,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { else -> parameter[0] = null } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2061,10 +2211,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun getProgramInfoLog(program: Int): String? { val lock = CountDownLatch(1) val infoLog = arrayOfNulls(1) - runOnGLThread(Runnable { + runOnGLThread { infoLog[0] = GLES20.glGetProgramInfoLog(program) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2075,7 +2225,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun getProgramParameter(program: Int, pname: Int): Any? { val lock = CountDownLatch(1) val parameter = arrayOfNulls(1) - runOnGLThread(Runnable { + runOnGLThread { val param = IntArray(1) GLES20.glGetProgramiv(program, pname, param, 0) when (pname) { @@ -2085,7 +2235,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { else -> parameter[0] = param[0] } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2096,12 +2246,12 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun getRenderbufferParameter(target: Int, pname: Int): Int { val lock = CountDownLatch(1) val parameter = IntArray(1) - runOnGLThread(Runnable { + runOnGLThread { val params = IntArray(1) GLES20.glGetRenderbufferParameteriv(target, pname, params, 0) parameter[0] = params[0] lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2112,10 +2262,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun getShaderInfoLog(shader: Int): String? { val lock = CountDownLatch(1) val infoLog = arrayOfNulls(1) - runOnGLThread(Runnable { + runOnGLThread { infoLog[0] = GLES20.glGetShaderInfoLog(shader) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2126,7 +2276,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun getShaderParameter(shader: Int, pname: Int): Any? { val lock = CountDownLatch(1) val parameter = arrayOfNulls(1) - runOnGLThread(Runnable { + runOnGLThread { val params = IntArray(1) GLES20.glGetShaderiv(shader, pname, params, 0) when (pname) { @@ -2134,7 +2284,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { else -> parameter[0] = params[0] } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2146,7 +2296,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { val lock = CountDownLatch(1) val precisionFormat = WebGLShaderPrecisionFormat() //final boolean[] hasError = new boolean[1]; - runOnGLThread(Runnable { + runOnGLThread { val range = IntArray(2) val precision = IntArray(1) GLES20.glGetShaderPrecisionFormat(shaderType, precisionType, range, 0, precision, 0) @@ -2160,7 +2310,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { precisionFormat.rangeMax = range[1] precisionFormat.precision = precision[0] lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2173,10 +2323,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun getShaderSource(shader: Int): String? { val lock = CountDownLatch(1) val source = arrayOfNulls(1) - runOnGLThread(Runnable { + runOnGLThread { source[0] = GLES20.glGetShaderSource(shader) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2188,11 +2338,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { get() { val lock = CountDownLatch(1) val extensions = ArrayList>() - runOnGLThread(Runnable { + runOnGLThread { val glExtensions = GLES20.glGetString(GLES20.GL_EXTENSIONS) extensions.add(glExtensions.split(" ").toTypedArray()) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2204,12 +2354,12 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { val lock = CountDownLatch(1) val parameters = IntArray(1) val hasError = BooleanArray(1) - runOnGLThread(Runnable { + runOnGLThread { val params = IntArray(1) GLES20.glGetTexParameteriv(target, pname, params, 0) parameters[0] = params[0] lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2228,7 +2378,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun getUniform(program: Int, location: Int): Any? { val lock = CountDownLatch(1) val uniform = arrayOfNulls(1) - runOnGLThread(Runnable { + runOnGLThread { val type = IntArray(1) GLES20.glGetActiveUniform(program, location, 0, null, 0, null, 0, type, 0, null, 0) when (type[0]) { @@ -2321,7 +2471,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { } } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2332,10 +2482,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun getUniformLocation(program: Int, name: String?): Int { val lock = CountDownLatch(1) val location = IntArray(1) - runOnGLThread(Runnable { + runOnGLThread { location[0] = GLES20.glGetUniformLocation(program, name) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2346,7 +2496,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun getVertexAttrib(index: Int, pname: Int): Any? { val lock = CountDownLatch(1) val attrib = arrayOfNulls(1) - runOnGLThread(Runnable { + runOnGLThread { if (pname == CURRENT_VERTEX_ATTRIB) { val params = FloatArray(4) GLES20.glGetVertexAttribfv(index, pname, params, 0) @@ -2362,7 +2512,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { } } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2373,13 +2523,13 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun getVertexAttribOffset(index: Int, pname: Int): Long { val lock = CountDownLatch(1) val offset = LongArray(1) - runOnGLThread(Runnable { + runOnGLThread { val buffer = ByteBuffer.allocateDirect(SIZE_OF_LONG).order(ByteOrder.nativeOrder()) // LongBuffer buffer = LongBuffer.allocate(1); nativeGetVertexAttribOffset(index, pname, buffer) offset[0] = buffer[0].toLong() lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2389,10 +2539,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun hint(target: Int, mode: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glHint(target, mode) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2402,10 +2552,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun isBuffer(buffer: Int): Boolean { val lock = CountDownLatch(1) val value = BooleanArray(1) - runOnGLThread(Runnable { + runOnGLThread { value[0] = GLES20.glIsBuffer(buffer) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2425,10 +2575,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun isEnabled(cap: Int): Boolean { val lock = CountDownLatch(1) val value = BooleanArray(1) - runOnGLThread(Runnable { + runOnGLThread { value[0] = GLES20.glIsEnabled(cap) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2439,10 +2589,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun isFramebuffer(framebuffer: Int): Boolean { val lock = CountDownLatch(1) val value = BooleanArray(1) - runOnGLThread(Runnable { + runOnGLThread { value[0] = GLES20.glIsFramebuffer(framebuffer) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2453,10 +2603,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun isProgram(program: Int): Boolean { val lock = CountDownLatch(1) val value = BooleanArray(1) - runOnGLThread(Runnable { + runOnGLThread { value[0] = GLES20.glIsProgram(program) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2467,10 +2617,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun isRenderbuffer(renderbuffer: Int): Boolean { val lock = CountDownLatch(1) val value = BooleanArray(1) - runOnGLThread(Runnable { + runOnGLThread { value[0] = GLES20.glIsRenderbuffer(renderbuffer) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2481,10 +2631,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun isShader(shader: Int): Boolean { val lock = CountDownLatch(1) val value = BooleanArray(1) - runOnGLThread(Runnable { + runOnGLThread { value[0] = GLES20.glIsShader(shader) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2495,10 +2645,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun isTexture(texture: Int): Boolean { val lock = CountDownLatch(1) val value = BooleanArray(1) - runOnGLThread(Runnable { + runOnGLThread { value[0] = GLES20.glIsTexture(texture) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2508,10 +2658,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun lineWidth(width: Float) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glLineWidth(width) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2520,10 +2670,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun linkProgram(program: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glLinkProgram(program) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2564,7 +2714,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { private var colorSpaceConversionWebGL = -1 fun pixelStorei(pname: Int, param: Any?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { when (pname) { GLES20.GL_PACK_ALIGNMENT, GLES20.GL_UNPACK_ALIGNMENT -> GLES20.glPixelStorei( pname, @@ -2578,7 +2728,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { } } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2587,10 +2737,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun polygonOffset(factor: Float, units: Float) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glPolygonOffset(factor, units) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2621,6 +2771,20 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { readPixels(x, y, width, height, format, type, pixels) } + + + fun readPixelsInt( + x: Int, + y: Int, + width: Int, + height: Int, + format: Int, + type: Int, + pixels: IntArray + ) { + readPixels(x, y, width, height, format, type, pixels) + } + fun readPixelsFloat( x: Int, y: Int, @@ -2634,18 +2798,56 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { } - fun readPixelsInt( + fun readPixelsByteBuffer( x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, - pixels: IntArray + pixels: ByteBuffer + ) { + readPixels(x, y, width, height, format, type, pixels) + } + + fun readPixelsShortBuffer( + x: Int, + y: Int, + width: Int, + height: Int, + format: Int, + type: Int, + pixels: ShortBuffer + ) { + readPixels(x, y, width, height, format, type, pixels) + } + + + fun readPixelsIntBuffer( + x: Int, + y: Int, + width: Int, + height: Int, + format: Int, + type: Int, + pixels: IntBuffer ) { readPixels(x, y, width, height, format, type, pixels) } + fun readPixelsFloatBuffer( + x: Int, + y: Int, + width: Int, + height: Int, + format: Int, + type: Int, + pixels: FloatBuffer + ) { + readPixels(x, y, width, height, format, type, pixels) + } + + fun readPixels( x: Int, y: Int, @@ -2656,11 +2858,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: ByteBuffer ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { - // clearIfComposited() + runOnGLThread { + // clearIfComposited() GLES20.glReadPixels(x, y, width, height, format, type, pixels) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2677,11 +2879,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: ShortBuffer ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { // clearIfComposited() GLES20.glReadPixels(x, y, width, height, format, type, pixels) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2698,11 +2900,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: IntBuffer ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { - // clearIfComposited() + runOnGLThread { + // clearIfComposited() GLES20.glReadPixels(x, y, width, height, format, type, pixels) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2720,11 +2922,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: FloatBuffer ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { - // clearIfComposited() + runOnGLThread { + // clearIfComposited() GLES20.glReadPixels(x, y, width, height, format, type, pixels) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2742,11 +2944,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: ByteArray ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { - // clearIfComposited() + runOnGLThread { + // clearIfComposited() GLES20.glReadPixels(x, y, width, height, format, type, ByteBuffer.wrap(pixels)) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2763,11 +2965,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: ShortArray ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { - // clearIfComposited() + runOnGLThread { + // clearIfComposited() GLES20.glReadPixels(x, y, width, height, format, type, ShortBuffer.wrap(pixels)) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2784,11 +2986,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: FloatArray ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { - // clearIfComposited() + runOnGLThread { + // clearIfComposited() GLES20.glReadPixels(x, y, width, height, format, type, FloatBuffer.wrap(pixels)) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2805,11 +3007,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: IntArray ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { - // clearIfComposited() + runOnGLThread { + // clearIfComposited() GLES20.glReadPixels(x, y, width, height, format, type, IntBuffer.wrap(pixels)) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2818,10 +3020,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun renderbufferStorage(target: Int, internalFormat: Int, width: Int, height: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glRenderbufferStorage(target, internalFormat, width, height) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2830,10 +3032,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun sampleCoverage(value: Float, invert: Boolean) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glSampleCoverage(value, invert) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2842,10 +3044,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun scissor(x: Int, y: Int, width: Int, height: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glScissor(x, y, width, height) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2854,10 +3056,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun shaderSource(shader: Int, source: String?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glShaderSource(shader, source) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2866,10 +3068,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun stencilFunc(func: Int, ref: Int, mask: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glStencilFunc(func, ref, mask) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2896,10 +3098,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { else -> { } } - runOnGLThread(Runnable { + runOnGLThread { GLES20.glStencilFuncSeparate(face, func, ref, mask) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2910,10 +3112,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { val lock = CountDownLatch(1) canvas.mStencilMask = mask canvas.mStencilMaskBack = mask - runOnGLThread(Runnable { + runOnGLThread { GLES20.glStencilMask(mask) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2937,10 +3139,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { else -> { } } - runOnGLThread(Runnable { + runOnGLThread { GLES20.glStencilMaskSeparate(face, mask) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2949,10 +3151,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun stencilOp(fail: Int, zfail: Int, zpass: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glStencilOp(fail, zfail, zpass) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -2961,16 +3163,76 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun stencilOpSeparate(face: Int, fail: Int, zfail: Int, zpass: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glStencilOpSeparate(face, fail, zfail, zpass) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { } } + fun texImage2DByteBuffer( + target: Int, + level: Int, + internalformat: Int, + width: Int, + height: Int, + border: Int, + format: Int, + type: Int, + pixels: ByteBuffer? + ) { + texImage2D(target, level, internalformat, width, height, border, format, type, pixels) + } + + + fun texImage2DShortBuffer( + target: Int, + level: Int, + internalformat: Int, + width: Int, + height: Int, + border: Int, + format: Int, + type: Int, + pixels: ShortBuffer? + ) { + texImage2D(target, level, internalformat, width, height, border, format, type, pixels) + } + + + fun texImage2DIntBuffer( + target: Int, + level: Int, + internalformat: Int, + width: Int, + height: Int, + border: Int, + format: Int, + type: Int, + pixels: IntBuffer? + ) { + texImage2D(target, level, internalformat, width, height, border, format, type, pixels) + } + + + fun texImage2DFloatBuffer( + target: Int, + level: Int, + internalformat: Int, + width: Int, + height: Int, + border: Int, + format: Int, + type: Int, + pixels: FloatBuffer? + ) { + texImage2D(target, level, internalformat, width, height, border, format, type, pixels) + } + + fun texImage2D( target: Int, level: Int, @@ -2983,7 +3245,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: ByteBuffer? ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { pixels?.let { if (it.isDirect) { nativeTexImage2DBuffer( @@ -3027,7 +3289,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { ) } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3047,7 +3309,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: ShortBuffer? ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { pixels?.let { if (it.isDirect) { nativeTexImage2DBuffer( @@ -3091,13 +3353,14 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { ) } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { } } + fun texImage2D( target: Int, level: Int, @@ -3110,7 +3373,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: IntBuffer? ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { pixels?.let { if (it.isDirect) { nativeTexImage2DBuffer( @@ -3154,7 +3417,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { ) } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3174,7 +3437,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: FloatBuffer? ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { pixels?.let { if (it.isDirect) { nativeTexImage2DBuffer( @@ -3217,7 +3480,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { ) } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3234,7 +3497,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { format: Int, type: Int, pixels: ByteArray? - ){ + ) { texImage2D(target, level, internalformat, width, height, border, format, type, pixels) } @@ -3248,11 +3511,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { format: Int, type: Int, pixels: ShortArray? - ){ + ) { texImage2D(target, level, internalformat, width, height, border, format, type, pixels) } - fun texImage2DInt( target: Int, level: Int, @@ -3263,7 +3525,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { format: Int, type: Int, pixels: IntArray? - ){ + ) { texImage2D(target, level, internalformat, width, height, border, format, type, pixels) } @@ -3277,12 +3539,11 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { format: Int, type: Int, pixels: FloatArray? - ){ + ) { texImage2D(target, level, internalformat, width, height, border, format, type, pixels) } - fun texImage2D( target: Int, level: Int, @@ -3295,7 +3556,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: ByteArray? ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { pixels?.let { nativeTexImage2DByteArray( target, @@ -3323,7 +3584,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { ) } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3342,7 +3603,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: ShortArray? ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { pixels?.let { nativeTexImage2DShortArray( target, @@ -3370,7 +3631,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { ) } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3389,7 +3650,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: IntArray? ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { pixels?.let { nativeTexImage2DIntArray( target, @@ -3417,7 +3678,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { ) } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3436,7 +3697,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: FloatArray? ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { pixels?.let { nativeTexImage2DFloatArray( target, @@ -3464,7 +3725,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { ) } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3481,7 +3742,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { ) { val ss = canvas.snapshot() val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { nativeTexImage2DByteArray( target, level, @@ -3495,7 +3756,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { flipYWebGL ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3511,7 +3772,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { bitmap: TNSImageBitmap ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { nativeTexImage2DAsset( target, level, @@ -3523,7 +3784,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { flipYWebGL ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3539,7 +3800,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { asset: TNSImageAsset ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { nativeTexImage2DAsset( target, level, @@ -3551,7 +3812,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { flipYWebGL ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3567,7 +3828,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: Bitmap ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { nativeTexImage2DBitmap( target, level, @@ -3581,7 +3842,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { flipYWebGL ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3590,10 +3851,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun texParameterf(target: Int, pname: Int, param: Float) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glTexParameterf(target, pname, param) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3602,10 +3863,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun texParameteri(target: Int, pname: Int, param: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glTexParameteri(target, pname, param) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3641,7 +3902,136 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) } - fun texSubImage2DInt( + fun texSubImage2DInt( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + width: Int, + height: Int, + format: Int, + type: Int, + pixels: IntArray? + ) { + texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) + } + + + + + fun texSubImage2DByteBuffer( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + width: Int, + height: Int, + format: Int, + type: Int, + pixels: ByteBuffer? + ) { + texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) + } + + fun texSubImage2DShortBuffer( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + width: Int, + height: Int, + format: Int, + type: Int, + pixels: ShortBuffer? + ) { + texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) + } + + fun texSubImage2DIntBuffer( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + width: Int, + height: Int, + format: Int, + type: Int, + pixels: IntBuffer? + ) { + texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) + } + + fun texSubImage2DFloatBuffer( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + width: Int, + height: Int, + format: Int, + type: Int, + pixels: FloatBuffer? + ) { + texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) + } + + + fun texSubImage2D( + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + width: Int, + height: Int, + format: Int, + type: Int, + pixels: ByteBuffer? + ) { + val lock = CountDownLatch(1) + runOnGLThread { + pixels?.let { + if (it.isDirect) { + nativeTexSubImage2DBuffer( + target, + level, + xoffset, + yoffset, + width, + height, + format, + type, + it, + flipYWebGL + ) + } else { + nativeTexSubImage2DByteArray( + target, + level, + xoffset, + yoffset, + width, + height, + format, + type, + it.array(), + flipYWebGL + ) + + } + } ?: run { + GLES20.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, null) + } + lock.countDown() + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + + + fun texSubImage2D( target: Int, level: Int, xoffset: Int, @@ -3650,12 +4040,21 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { height: Int, format: Int, type: Int, - pixels: IntArray? + pixels: ShortBuffer? ) { - texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) + val lock = CountDownLatch(1) + runOnGLThread { + GLES20.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) + lock.countDown() + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } } - fun texSubImage2DFloat( + + fun texSubImage2D( target: Int, level: Int, xoffset: Int, @@ -3664,9 +4063,17 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { height: Int, format: Int, type: Int, - pixels: FloatArray? + pixels: IntBuffer? ) { - texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) + val lock = CountDownLatch(1) + runOnGLThread { + GLES20.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) + lock.countDown() + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } } @@ -3679,50 +4086,21 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { height: Int, format: Int, type: Int, - pixels: ByteBuffer? + pixels: FloatBuffer? ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { - pixels?.let { - if(it.isDirect){ - nativeTexSubImage2DBuffer( - target, - level, - xoffset, - yoffset, - width, - height, - format, - type, - it, - flipYWebGL - ) - }else { - nativeTexSubImage2DByteArray( - target, - level, - xoffset, - yoffset, - width, - height, - format, - type, - it.array(), - flipYWebGL - ) - - } - } ?: run { - GLES20.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, null) - } + runOnGLThread { + GLES20.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { } } + + fun texSubImage2D( target: Int, level: Int, @@ -3735,7 +4113,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: ByteArray? ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { pixels?.let { nativeTexSubImage2DByteArray( target, @@ -3753,7 +4131,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { GLES20.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, null) } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3772,7 +4150,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: ShortArray? ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { pixels?.let { nativeTexSubImage2DShortArray( target, @@ -3790,7 +4168,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { GLES20.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, null) } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3809,7 +4187,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: IntArray? ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { pixels?.let { nativeTexSubImage2DIntArray( target, @@ -3827,7 +4205,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { GLES20.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, null) } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3846,7 +4224,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: FloatArray? ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { pixels?.let { nativeTexSubImage2DFloatArray( target, @@ -3864,7 +4242,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { GLES20.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, null) } lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3882,7 +4260,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { ) { val lock = CountDownLatch(1) val buffer = canvas.snapshot() - runOnGLThread(Runnable { + runOnGLThread { nativeTexSubImage2DByteArray( target, level, @@ -3896,7 +4274,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { flipYWebGL ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3913,7 +4291,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { pixels: Bitmap ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { nativeTexSubImage2DBitmap( target, level, @@ -3927,7 +4305,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { flipYWebGL ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3944,7 +4322,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { bitmap: TNSImageBitmap ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { nativeTexSubImage2DAsset( target, level, @@ -3956,7 +4334,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { flipYWebGL ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3973,7 +4351,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { asset: TNSImageAsset ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { nativeTexSubImage2DAsset( target, level, @@ -3985,7 +4363,7 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { flipYWebGL ) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -3994,10 +4372,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniform1f(location: Int, v0: Float) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glUniform1f(location, v0) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4006,11 +4384,24 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniform1fv(location: Int, value: FloatArray?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val count = value?.size?.div(1) ?: 1 GLES20.glUniform1fv(location, count, value, 0) lock.countDown() - }) + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniform1fvBuffer(location: Int, value: FloatBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread { + val count = value?.capacity()?.div(1) ?: 1 + GLES20.glUniform1fv(location, count, value) + lock.countDown() + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4019,10 +4410,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniform1i(location: Int, v0: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glUniform1i(location, v0) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4031,11 +4422,24 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniform1iv(location: Int, value: IntArray?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val count = value?.size?.div(1) ?: 1 GLES20.glUniform1iv(location, count, value, 0) lock.countDown() - }) + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniform1ivBuffer(location: Int, value: IntBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread { + val count = value?.capacity()?.div(1) ?: 1 + GLES20.glUniform1iv(location, count, value) + lock.countDown() + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4044,10 +4448,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniform2f(location: Int, v0: Float, v1: Float) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glUniform2f(location, v0, v1) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4056,11 +4460,24 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniform2fv(location: Int, value: FloatArray?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val count = value?.size?.div(2) ?: 2 - GLES20.glUniform1fv(location, count, value, 0) + GLES20.glUniform2fv(location, count, value, 0) + lock.countDown() + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniform2fvBuffer(location: Int, value: FloatBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread { + val count = value?.capacity()?.div(2) ?: 2 + GLES20.glUniform2fv(location, count, value) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4069,10 +4486,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniform2i(location: Int, v0: Int, v1: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glUniform2i(location, v0, v1) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4081,11 +4498,24 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniform2iv(location: Int, value: IntArray?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val count = value?.size?.div(2) ?: 2 GLES20.glUniform2iv(location, count, value, 0) lock.countDown() - }) + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniform2ivBuffer(location: Int, value: IntBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread { + val count = value?.capacity()?.div(2) ?: 2 + GLES20.glUniform2iv(location, count, value) + lock.countDown() + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4094,10 +4524,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniform3f(location: Int, v0: Float, v1: Float, v2: Float) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glUniform3f(location, v0, v1, v2) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4106,11 +4536,24 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniform3fv(location: Int, value: FloatArray?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val count = value?.size?.div(3) ?: 3 GLES20.glUniform3fv(location, count, value, 0) lock.countDown() - }) + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniform3fvBuffer(location: Int, value: FloatBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread { + val count = value?.capacity()?.div(3) ?: 3 + GLES20.glUniform3fv(location, count, value) + lock.countDown() + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4119,10 +4562,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniform3i(location: Int, v0: Int, v1: Int, v2: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glUniform3i(location, v0, v1, v2) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4131,11 +4574,24 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniform3iv(location: Int, value: IntArray?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val count = value?.size?.div(3) ?: 3 GLES20.glUniform3iv(location, count, value, 0) lock.countDown() - }) + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniform3ivBuffer(location: Int, value: IntBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread { + val count = value?.capacity()?.div(3) ?: 3 + GLES20.glUniform3iv(location, count, value) + lock.countDown() + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4144,10 +4600,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniform4f(location: Int, v0: Float, v1: Float, v2: Float, v3: Float) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glUniform4f(location, v0, v1, v2, v3) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4156,11 +4612,24 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniform4fv(location: Int, value: FloatArray?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val count = value?.size?.div(4) ?: 4 GLES20.glUniform4fv(location, count, value, 0) lock.countDown() - }) + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniform4fvBuffer(location: Int, value: FloatBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread { + val count = value?.capacity()?.div(4) ?: 4 + GLES20.glUniform4fv(location, count, value) + lock.countDown() + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4169,10 +4638,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniform4i(location: Int, v0: Int, v1: Int, v2: Int, v3: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glUniform4i(location, v0, v1, v2, v3) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4181,11 +4650,24 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniform4iv(location: Int, value: IntArray?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val count = value?.size?.div(4) ?: 4 GLES20.glUniform4iv(location, count, value, 0) lock.countDown() - }) + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniform4ivBuffer(location: Int, value: IntBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread { + val count = value?.capacity()?.div(4) ?: 4 + GLES20.glUniform4iv(location, count, value) + lock.countDown() + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4194,11 +4676,24 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniformMatrix2fv(location: Int, transpose: Boolean, value: FloatArray?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val count = value?.size?.div(4) ?: 4 GLES20.glUniformMatrix2fv(location, count, transpose, value, 0) lock.countDown() - }) + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniformMatrix2fvBuffer(location: Int, transpose: Boolean, value: FloatBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread { + val count = value?.capacity()?.div(4) ?: 4 + GLES20.glUniformMatrix2fv(location, count, transpose, value) + lock.countDown() + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4207,11 +4702,24 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniformMatrix3fv(location: Int, transpose: Boolean, value: FloatArray?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val count = value?.size?.div(9) ?: 9 GLES20.glUniformMatrix3fv(location, count, transpose, value, 0) lock.countDown() - }) + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniformMatrix3fvBuffer(location: Int, transpose: Boolean, value: FloatBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread { + val count = value?.capacity()?.div(9) ?: 9 + GLES20.glUniformMatrix3fv(location, count, transpose, value) + lock.countDown() + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4220,11 +4728,24 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun uniformMatrix4fv(location: Int, transpose: Boolean, value: FloatArray?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { val count = value?.size?.div(16) ?: 16 GLES20.glUniformMatrix4fv(location, count, transpose, value, 0) lock.countDown() - }) + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun uniformMatrix4fvBuffer(location: Int, transpose: Boolean, value: FloatBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread { + val count = value?.capacity()?.div(16) ?: 16 + GLES20.glUniformMatrix4fv(location, count, transpose, value) + lock.countDown() + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4233,10 +4754,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun useProgram(program: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glUseProgram(program) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4245,10 +4766,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun validateProgram(program: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glValidateProgram(program) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4257,10 +4778,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun vertexAttrib1f(index: Int, v0: Float) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glVertexAttrib1f(index, v0) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4269,10 +4790,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun vertexAttrib2f(index: Int, v0: Float, v1: Float) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glVertexAttrib2f(index, v0, v1) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4281,10 +4802,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun vertexAttrib3f(index: Int, v0: Float, v1: Float, v2: Float) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glVertexAttrib3f(index, v0, v1, v2) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4293,10 +4814,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun vertexAttrib4f(index: Int, v0: Float, v1: Float, v2: Float, v3: Float) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glVertexAttrib4f(index, v0, v1, v2, v3) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4305,10 +4826,22 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun vertexAttrib1fv(index: Int, value: FloatArray?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glVertexAttrib1fv(index, value, 0) lock.countDown() - }) + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun vertexAttrib1fvBuffer(index: Int, value: FloatBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread { + GLES20.glVertexAttrib1fv(index, value) + lock.countDown() + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4317,10 +4850,22 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun vertexAttrib2fv(index: Int, value: FloatArray?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glVertexAttrib2fv(index, value, 0) lock.countDown() - }) + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun vertexAttrib2fvBuffer(index: Int, value: FloatBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread { + GLES20.glVertexAttrib2fv(index, value) + lock.countDown() + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4329,10 +4874,22 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun vertexAttrib3fv(index: Int, value: FloatArray?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glVertexAttrib3fv(index, value, 0) lock.countDown() - }) + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun vertexAttrib3fvBuffer(index: Int, value: FloatBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread { + GLES20.glVertexAttrib3fv(index, value) + lock.countDown() + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4341,10 +4898,22 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun vertexAttrib4fv(index: Int, value: FloatArray?) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glVertexAttrib4fv(index, value, 0) lock.countDown() - }) + } + try { + lock.await() + } catch (ignored: InterruptedException) { + } + } + + fun vertexAttrib4fvBuffer(index: Int, value: FloatBuffer?) { + val lock = CountDownLatch(1) + runOnGLThread { + GLES20.glVertexAttrib4fv(index, value) + lock.countDown() + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4360,10 +4929,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { offset: Int ) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { // GLES20.glVertexAttribPointer(index, size, type, normalized, stride, offset); + runOnGLThread { // GLES20.glVertexAttribPointer(index, size, type, normalized, stride, offset); nativeVertexAttribPointer(index, size, type, normalized, stride, offset) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4372,10 +4941,10 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { fun viewport(x: Int, y: Int, width: Int, height: Int) { val lock = CountDownLatch(1) - runOnGLThread(Runnable { + runOnGLThread { GLES20.glViewport(x, y, width, height) lock.countDown() - }) + } try { lock.await() } catch (ignored: InterruptedException) { @@ -4885,16 +5454,16 @@ open class TNSWebGLRenderingContext : TNSCanvasRenderingContext { @JvmStatic private external fun nativeTexSubImage2DByteArray( - target: Int, - level: Int, - xoffset: Int, - yoffset: Int, - width: Int, - height: Int, - format: Int, - type: Int, - byteArray: ByteArray, - flipY: Boolean + target: Int, + level: Int, + xoffset: Int, + yoffset: Int, + width: Int, + height: Int, + format: Int, + type: Int, + byteArray: ByteArray, + flipY: Boolean ) diff --git a/packages/canvas/src-native/canvas-ios/CanvasDemo/CanvasDemo.xcodeproj/project.xcworkspace/xcuserdata/triniwiz.xcuserdatad/UserInterfaceState.xcuserstate b/packages/canvas/src-native/canvas-ios/CanvasDemo/CanvasDemo.xcodeproj/project.xcworkspace/xcuserdata/triniwiz.xcuserdatad/UserInterfaceState.xcuserstate index 369a0c58..d0244fd4 100644 Binary files a/packages/canvas/src-native/canvas-ios/CanvasDemo/CanvasDemo.xcodeproj/project.xcworkspace/xcuserdata/triniwiz.xcuserdatad/UserInterfaceState.xcuserstate and b/packages/canvas/src-native/canvas-ios/CanvasDemo/CanvasDemo.xcodeproj/project.xcworkspace/xcuserdata/triniwiz.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/packages/canvas/src-native/canvas-ios/CanvasDemo/CanvasDemo/ViewController.swift b/packages/canvas/src-native/canvas-ios/CanvasDemo/CanvasDemo/ViewController.swift index a9f5e8c7..9b1d99de 100644 --- a/packages/canvas/src-native/canvas-ios/CanvasDemo/CanvasDemo/ViewController.swift +++ b/packages/canvas/src-native/canvas-ios/CanvasDemo/CanvasDemo/ViewController.swift @@ -301,7 +301,9 @@ class ViewController: UIViewController, TNSCanvasListener { func drawAll() { - + let data: [UInt8] = [75, 97, 121, 100, 97, 114, 97, 32, 70, 66, 88, 32, 66, 105, 110, 97, 114, 121, 32, 32, 0] + let decoder = TNSTextDecoder() + print(decoder.decode(bytes: data)) // svg?.src = """ // @@ -997,9 +999,9 @@ class ViewController: UIViewController, TNSCanvasListener { gl.clearDepth(1.0) gl.viewport(0, 0, Int32(width), Int32(height)) gl.clear(UInt32(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)) - gl.uniformMatrix4fv(Pmatrix, false, proj_matrix) - gl.uniformMatrix4fv(Vmatrix, false, view_matrix) - gl.uniformMatrix4fv(Mmatrix, false, mov_matrix) + gl.uniformMatrix4fv(Pmatrix, false, &proj_matrix, proj_matrix.count * 4) + gl.uniformMatrix4fv(Vmatrix, false, &view_matrix, proj_matrix.count * 4) + gl.uniformMatrix4fv(Mmatrix, false, &mov_matrix, proj_matrix.count * 4) gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, index_buffer) gl.drawElements(gl.TRIANGLES, Int32(indices.count), gl.UNSIGNED_SHORT, 0) TNSAnimationFrame.requestAnimationFrame { (t) in diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative.xcodeproj/project.xcworkspace/xcuserdata/triniwiz.xcuserdatad/UserInterfaceState.xcuserstate b/packages/canvas/src-native/canvas-ios/CanvasNative.xcodeproj/project.xcworkspace/xcuserdata/triniwiz.xcuserdatad/UserInterfaceState.xcuserstate index bcbc4b27..eb567ee5 100644 Binary files a/packages/canvas/src-native/canvas-ios/CanvasNative.xcodeproj/project.xcworkspace/xcuserdata/triniwiz.xcuserdatad/UserInterfaceState.xcuserstate and b/packages/canvas/src-native/canvas-ios/CanvasNative.xcodeproj/project.xcworkspace/xcuserdata/triniwiz.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.framework.dSYM.zip b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.framework.dSYM.zip index d0240c83..b2d09eff 100644 Binary files a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.framework.dSYM.zip and b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.framework.dSYM.zip differ diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/CanvasNative b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/CanvasNative index c460a29c..aa9f9d27 100755 Binary files a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/CanvasNative and b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/CanvasNative differ diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative-Swift.h b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative-Swift.h index cd44d778..98f9a876 100644 --- a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative-Swift.h +++ b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative-Swift.h @@ -741,11 +741,26 @@ SWIFT_CLASS_NAMED("TNSTextDecoder") - (nonnull instancetype)initWithEncoding:(NSString * _Nonnull)encoding OBJC_DESIGNATED_INITIALIZER; @property (nonatomic, readonly, copy) NSString * _Nonnull encoding; - (NSString * _Nonnull)decodeWithBuffer:(NSData * _Nonnull)buffer SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithBuffer:(NSData * _Nonnull)buffer offset:(NSInteger)offset SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithBuffer:(NSData * _Nonnull)buffer offset:(NSInteger)offset length:(NSInteger)length SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithU8:(void * _Nonnull)buffer :(NSInteger)size SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithU8:(void * _Nonnull)buffer :(NSInteger)size offset:(NSInteger)offset SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithI8:(void * _Nonnull)buffer :(NSInteger)size SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithI8:(void * _Nonnull)buffer :(NSInteger)size offset:(NSInteger)offset SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithU16:(void * _Nonnull)buffer :(NSInteger)size SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithU16:(void * _Nonnull)buffer :(NSInteger)size offset:(NSInteger)offset SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithI16:(void * _Nonnull)buffer :(NSInteger)size SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithI16:(void * _Nonnull)buffer :(NSInteger)size offset:(NSInteger)offset SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithI32:(void * _Nonnull)buffer :(NSInteger)size SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithI32:(void * _Nonnull)buffer :(NSInteger)size offset:(NSInteger)offset SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithU32:(void * _Nonnull)buffer :(NSInteger)size SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithU32:(void * _Nonnull)buffer :(NSInteger)size offset:(NSInteger)offset SWIFT_WARN_UNUSED_RESULT; - (NSString * _Nonnull)decodeWithBytes:(NSArray * _Nonnull)bytes SWIFT_WARN_UNUSED_RESULT; - (NSString * _Nonnull)decodeWithI8:(NSArray * _Nonnull)bytes SWIFT_WARN_UNUSED_RESULT; - (NSString * _Nonnull)decodeWithU16:(NSArray * _Nonnull)bytes SWIFT_WARN_UNUSED_RESULT; - (NSString * _Nonnull)decodeWithI16:(NSArray * _Nonnull)bytes SWIFT_WARN_UNUSED_RESULT; - (NSString * _Nonnull)decodeWithI32:(NSArray * _Nonnull)bytes SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithU32:(NSArray * _Nonnull)bytes SWIFT_WARN_UNUSED_RESULT; @end typedef SWIFT_ENUM_NAMED(NSInteger, TNSTextDirection, "TNSTextDirection", open) { @@ -809,6 +824,7 @@ SWIFT_CLASS_NAMED("TNSWebGLRenderingContext") - (void)bufferData:(uint32_t)target srcData:(NSNull * _Nonnull)srcData :(uint32_t)usage; - (void)bufferData:(uint32_t)target i8:(NSArray * _Nonnull)srcData :(uint32_t)usage; - (void)bufferData:(uint32_t)target srcData:(void * _Nonnull)srcData size:(NSInteger)size :(uint32_t)usage; +- (void)bufferData:(uint32_t)target srcData:(void * _Nonnull)srcData size:(NSInteger)size :(uint32_t)usage offset:(NSInteger)offset; - (void)bufferData:(uint32_t)target u8:(NSArray * _Nonnull)srcData :(uint32_t)usage; - (void)bufferData:(uint32_t)target i16:(NSArray * _Nonnull)srcData :(uint32_t)usage; - (void)bufferData:(uint32_t)target u16:(NSArray * _Nonnull)srcData :(uint32_t)usage; @@ -819,6 +835,7 @@ SWIFT_CLASS_NAMED("TNSWebGLRenderingContext") - (void)bufferSubData:(uint32_t)target :(NSInteger)offset :(NSNull * _Nonnull)srcData; - (void)bufferSubData:(uint32_t)target :(NSInteger)offset i8:(NSArray * _Nonnull)srcData; - (void)bufferSubData:(uint32_t)target :(NSInteger)offset srcData:(void * _Nonnull)srcData size:(NSInteger)size; +- (void)bufferSubData:(uint32_t)target :(NSInteger)offset srcData:(void * _Nonnull)srcData size:(NSInteger)size os:(NSInteger)os; - (void)bufferSubData:(uint32_t)target :(NSInteger)offset u8:(NSArray * _Nonnull)srcData; - (void)bufferSubData:(uint32_t)target :(NSInteger)offset i16:(NSArray * _Nonnull)srcData; - (void)bufferSubData:(uint32_t)target :(NSInteger)offset u16:(NSArray * _Nonnull)srcData; @@ -904,6 +921,7 @@ SWIFT_CLASS_NAMED("TNSWebGLRenderingContext") - (void)pixelStorei:(uint32_t)pname :(uint32_t)param; - (void)polygonOffset:(float)factor :(float)units; - (void)readPixels:(int32_t)x :(int32_t)y :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type :(void * _Nonnull)pixels; +- (void)readPixels:(int32_t)x :(int32_t)y :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type :(void * _Nonnull)pixels offset:(NSInteger)offset; - (void)renderbufferStorage:(uint32_t)target :(uint32_t)internalFormat :(int32_t)width :(int32_t)height; - (void)sampleCoverage:(float)value :(BOOL)invert; - (void)scissor:(int32_t)x :(int32_t)y :(int32_t)width :(int32_t)height; @@ -917,6 +935,7 @@ SWIFT_CLASS_NAMED("TNSWebGLRenderingContext") - (void)texImage2D:(uint32_t)target :(int32_t)level :(int32_t)internalformat :(int32_t)width :(int32_t)height :(int32_t)border :(uint32_t)format :(uint32_t)type data:(NSData * _Nonnull)data; - (void)texImage2D:(uint32_t)target :(int32_t)level :(int32_t)internalformat :(int32_t)width :(int32_t)height :(int32_t)border :(uint32_t)format :(uint32_t)type u8:(NSArray * _Nonnull)pixels; - (void)texImage2D:(uint32_t)target :(int32_t)level :(int32_t)internalformat :(int32_t)width :(int32_t)height :(int32_t)border :(uint32_t)format :(uint32_t)type pixels:(void const * _Nonnull)pixels size:(NSInteger)size; +- (void)texImage2D:(uint32_t)target :(int32_t)level :(int32_t)internalformat :(int32_t)width :(int32_t)height :(int32_t)border :(uint32_t)format :(uint32_t)type pixels:(void const * _Nonnull)pixels size:(NSInteger)size offset:(NSInteger)offset; - (void)texImage2D:(uint32_t)target :(int32_t)level :(int32_t)internalformat :(int32_t)width :(int32_t)height :(int32_t)border :(uint32_t)format :(uint32_t)type u16:(NSArray * _Nonnull)pixels; - (void)texImage2D:(uint32_t)target :(int32_t)level :(int32_t)internalformat :(int32_t)width :(int32_t)height :(int32_t)border :(uint32_t)format :(uint32_t)type u32:(NSArray * _Nonnull)pixels; - (void)texImage2D:(uint32_t)target :(int32_t)level :(int32_t)internalformat :(int32_t)width :(int32_t)height :(int32_t)border :(uint32_t)format :(uint32_t)type f32:(NSArray * _Nonnull)pixels; @@ -931,6 +950,7 @@ SWIFT_CLASS_NAMED("TNSWebGLRenderingContext") - (void)texSubImage2D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type data:(NSData * _Nonnull)data; - (void)texSubImage2D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type u8:(NSArray * _Nonnull)pixels; - (void)texSubImage2D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type pixels:(void * _Nonnull)pixels size:(NSInteger)size; +- (void)texSubImage2D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type pixels:(void * _Nonnull)pixels size:(NSInteger)size offset:(NSInteger)offset; - (void)texSubImage2D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type u16:(NSArray * _Nonnull)pixels; - (void)texSubImage2D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type f32:(NSArray * _Nonnull)pixels; - (void)texSubImage2D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type :(NSNull * _Nonnull)pixels; @@ -941,23 +961,34 @@ SWIFT_CLASS_NAMED("TNSWebGLRenderingContext") - (void)texSubImage2D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(uint32_t)format :(uint32_t)type :(NSNull * _Nonnull)pixels; - (void)uniform1f:(int32_t)location :(float)v0; - (void)uniform1fv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size; +- (void)uniform1fv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniform1i:(int32_t)location :(int32_t)v0; - (void)uniform1iv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size; +- (void)uniform1iv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniform2f:(int32_t)location :(float)v0 :(float)v1; - (void)uniform2fv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size; +- (void)uniform2fv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniform2i:(int32_t)location :(int32_t)v0 :(int32_t)v1; - (void)uniform2iv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size; +- (void)uniform2iv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniform3f:(int32_t)location :(float)v0 :(float)v1 :(float)v2; - (void)uniform3fv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size; +- (void)uniform3fv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniform3i:(int32_t)location :(int32_t)v0 :(int32_t)v1 :(int32_t)v2; - (void)uniform3iv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size; +- (void)uniform3iv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniform4f:(int32_t)location :(float)v0 :(float)v1 :(float)v2 :(float)v3; - (void)uniform4fv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size; +- (void)uniform4fv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniform4i:(int32_t)location :(int32_t)v0 :(int32_t)v1 :(int32_t)v2 :(int32_t)v3; - (void)uniform4iv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size; +- (void)uniform4iv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniformMatrix2fv:(int32_t)location :(BOOL)transpose :(void * _Nonnull)value :(NSInteger)size; +- (void)uniformMatrix2fv:(int32_t)location :(BOOL)transpose :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniformMatrix3fv:(int32_t)location :(BOOL)transpose :(void * _Nonnull)value :(NSInteger)size; +- (void)uniformMatrix3fv:(int32_t)location :(BOOL)transpose :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniformMatrix4fv:(int32_t)location :(BOOL)transpose :(void * _Nonnull)value :(NSInteger)size; +- (void)uniformMatrix4fv:(int32_t)location :(BOOL)transpose :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)useProgram:(uint32_t)program; - (void)validateProgram:(uint32_t)program; - (void)vertexAttrib1f:(uint32_t)index :(float)v0; @@ -965,9 +996,13 @@ SWIFT_CLASS_NAMED("TNSWebGLRenderingContext") - (void)vertexAttrib3f:(uint32_t)index :(float)v0 :(float)v1 :(float)v2; - (void)vertexAttrib4f:(uint32_t)index :(float)v0 :(float)v1 :(float)v2 :(float)v3; - (void)vertexAttrib1fv:(uint32_t)index :(void * _Nonnull)value; +- (void)vertexAttrib1fv:(uint32_t)index :(void * _Nonnull)value offset:(NSInteger)offset; - (void)vertexAttrib2fv:(uint32_t)index :(void * _Nonnull)value; +- (void)vertexAttrib2fv:(uint32_t)index :(void * _Nonnull)value offset:(NSInteger)offset; - (void)vertexAttrib3fv:(uint32_t)index :(void * _Nonnull)value; +- (void)vertexAttrib3fv:(uint32_t)index :(void * _Nonnull)value offset:(NSInteger)offset; - (void)vertexAttrib4fv:(uint32_t)index :(void * _Nonnull)value; +- (void)vertexAttrib4fv:(uint32_t)index :(void * _Nonnull)value offset:(NSInteger)offset; - (void)vertexAttribPointer:(uint32_t)index :(int32_t)size :(uint32_t)type :(BOOL)normalized :(int32_t)stride :(NSInteger)offset; - (void)viewport:(int32_t)x :(int32_t)y :(int32_t)width :(int32_t)height; @property (nonatomic, readonly) uint32_t DEPTH_BUFFER_BIT; @@ -1284,8 +1319,11 @@ SWIFT_CLASS_NAMED("TNSWebGL2RenderingContext") - (void)bindVertexArray:(uint32_t)vertexArray; - (void)blitFramebuffer:(int32_t)srcX0 :(int32_t)srcY0 :(int32_t)srcX1 :(int32_t)srcY1 :(int32_t)dstX0 :(int32_t)dstY0 :(int32_t)dstX1 :(int32_t)dstY1 :(uint32_t)mask :(uint32_t)filter; - (void)clearBufferfv:(uint32_t)buffer :(int32_t)drawbuffer :(void const * _Nonnull)values; +- (void)clearBufferfv:(uint32_t)buffer :(int32_t)drawbuffer :(void const * _Nonnull)values offset:(NSInteger)offset; - (void)clearBufferiv:(uint32_t)buffer :(int32_t)drawbuffer :(void const * _Nonnull)values; +- (void)clearBufferiv:(uint32_t)buffer :(int32_t)drawbuffer :(void const * _Nonnull)values offset:(NSInteger)offset; - (void)clearBufferuiv:(uint32_t)buffer :(int32_t)drawbuffer :(void const * _Nonnull)values; +- (void)clearBufferuiv:(uint32_t)buffer :(int32_t)drawbuffer :(void const * _Nonnull)values offset:(NSInteger)offset; - (void)clearBufferfi:(uint32_t)buffer :(int32_t)drawbuffer :(float)depth :(int32_t)stencil; - (int32_t)clientWaitSync:(GLsync _Nonnull)sync :(uint32_t)flags :(uint64_t)timeout SWIFT_WARN_UNUSED_RESULT; - (void)compressedTexSubImage3D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(int32_t)zoffset :(int32_t)width :(int32_t)height :(int32_t)depth :(uint32_t)format :(int32_t)imageSize :(int32_t)offset; @@ -1320,6 +1358,7 @@ SWIFT_CLASS_NAMED("TNSWebGL2RenderingContext") - (id _Nonnull)getActiveUniformBlockParameter:(uint32_t)program :(uint32_t)uniformBlockIndex :(uint32_t)pname SWIFT_WARN_UNUSED_RESULT; - (id _Nonnull)getActiveUniforms:(uint32_t)program :(NSArray * _Nonnull)uniformIndices :(uint32_t)pname SWIFT_WARN_UNUSED_RESULT; - (void)getBufferSubData:(uint32_t)target :(NSInteger)srcByteOffset :(void * _Nonnull)dstData size:(NSInteger)size :(int32_t)dstOffset :(int32_t)length; +- (void)getBufferSubData:(uint32_t)target :(NSInteger)srcByteOffset :(void * _Nonnull)dstData size:(NSInteger)size :(int32_t)dstOffset :(int32_t)length offset:(NSInteger)offset; - (int32_t)getFragDataLocation:(uint32_t)program :(NSString * _Nonnull)name SWIFT_WARN_UNUSED_RESULT; - (id _Nonnull)getIndexedParameter:(uint32_t)target :(uint32_t)index SWIFT_WARN_UNUSED_RESULT; - (id _Nonnull)getInternalformatParameter:(uint32_t)target :(uint32_t)internalformat :(uint32_t)pname SWIFT_WARN_UNUSED_RESULT; @@ -1396,21 +1435,33 @@ SWIFT_CLASS_NAMED("TNSWebGL2RenderingContext") - (void)uniform3ui:(int32_t)location :(uint32_t)v0 :(uint32_t)v1 :(uint32_t)v2; - (void)uniform4ui:(int32_t)location :(uint32_t)v0 :(uint32_t)v1 :(uint32_t)v2 :(uint32_t)v3; - (void)uniform1uiv:(int32_t)location :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniform1uiv:(int32_t)location :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniform2uiv:(int32_t)location :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniform2uiv:(int32_t)location :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniform3uiv:(int32_t)location :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniform3uiv:(int32_t)location :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniform4uiv:(int32_t)location :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniform4uiv:(int32_t)location :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniformBlockBinding:(uint32_t)program :(uint32_t)uniformBlockIndex :(uint32_t)uniformBlockBinding; - (void)uniformMatrix3x2fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniformMatrix3x2fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniformMatrix4x2fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniformMatrix4x2fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniformMatrix2x3fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniformMatrix2x3fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniformMatrix4x3fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniformMatrix4x3fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniformMatrix2x4fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniformMatrix2x4fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniformMatrix3x4fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniformMatrix3x4fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)vertexAttribDivisor:(uint32_t)index :(uint32_t)divisor; - (void)vertexAttribI4i:(uint32_t)index :(int32_t)v0 :(int32_t)v1 :(int32_t)v2 :(int32_t)v3; - (void)vertexAttribI4ui:(uint32_t)index :(uint32_t)v0 :(uint32_t)v1 :(uint32_t)v2 :(uint32_t)v3; - (void)vertexAttribI4iv:(uint32_t)index :(void const * _Nonnull)value; +- (void)vertexAttribI4iv:(uint32_t)index :(void const * _Nonnull)value offset:(NSInteger)offset; - (void)vertexAttribI4uiv:(uint32_t)index :(void const * _Nonnull)value; +- (void)vertexAttribI4uiv:(uint32_t)index :(void const * _Nonnull)value offset:(NSInteger)offset; @property (nonatomic, readonly) uint32_t READ_BUFFER; @property (nonatomic, readonly) uint32_t UNPACK_ROW_LENGTH; @property (nonatomic, readonly) uint32_t UNPACK_SKIP_ROWS; diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h index 22090130..63b8bf98 100644 --- a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h +++ b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h @@ -926,12 +926,24 @@ long long text_decoder_create(const char *decoding); const char *text_decoder_decode(long long decoder, const uint8_t *data, uintptr_t len); +U8Array *text_decoder_decode_bytes(long long decoder, const uint8_t *data, uintptr_t len); + const char *text_decoder_decode_i16(long long decoder, const int16_t *data, uintptr_t len); +U8Array *text_decoder_decode_i16_bytes(long long decoder, const int16_t *data, uintptr_t len); + const char *text_decoder_decode_i32(long long decoder, const int32_t *data, uintptr_t len); +U8Array *text_decoder_decode_i32_bytes(long long decoder, const int32_t *data, uintptr_t len); + +const U8Array *text_decoder_decode_to_bytes(long long decoder, const uint8_t *data, uintptr_t len); + const char *text_decoder_decode_u16(long long decoder, const uint16_t *data, uintptr_t len); +U8Array *text_decoder_decode_u16_bytes(long long decoder, const uint16_t *data, uintptr_t len); + +U8Array *text_decoder_decode_u32_bytes(long long decoder, const uint32_t *data, uintptr_t len); + const char *text_decoder_get_encoding(long long decoder); long long text_encoder_create(const char *encoding); diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Info.plist b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Info.plist index 255c71cd..bc0c7c66 100644 Binary files a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Info.plist and b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Info.plist differ diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface index 859cb888..ca4c1838 100644 --- a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface +++ b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface @@ -378,8 +378,11 @@ extension RangeReplaceableCollection { @objc public func bindVertexArray(_ vertexArray: Swift.UInt32) @objc public func blitFramebuffer(_ srcX0: Swift.Int32, _ srcY0: Swift.Int32, _ srcX1: Swift.Int32, _ srcY1: Swift.Int32, _ dstX0: Swift.Int32, _ dstY0: Swift.Int32, _ dstX1: Swift.Int32, _ dstY1: Swift.Int32, _ mask: Swift.UInt32, _ filter: Swift.UInt32) @objc public func clearBufferfv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer) + @objc public func clearBufferfv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public func clearBufferiv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer) + @objc public func clearBufferiv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public func clearBufferuiv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer) + @objc public func clearBufferuiv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public func clearBufferfi(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ depth: Swift.Float32, _ stencil: Swift.Int32) @objc public func clientWaitSync(_ sync: OpenGLES.GLsync, _ flags: Swift.UInt32, _ timeout: Swift.UInt64) -> Swift.Int32 @objc public func compressedTexSubImage3D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ zoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ depth: Swift.Int32, _ format: Swift.UInt32, _ imageSize: Swift.Int32, _ offset: Swift.Int32) @@ -414,6 +417,7 @@ extension RangeReplaceableCollection { @objc public func getActiveUniformBlockParameter(_ program: Swift.UInt32, _ uniformBlockIndex: Swift.UInt32, _ pname: Swift.UInt32) -> Any @objc public func getActiveUniforms(_ program: Swift.UInt32, _ uniformIndices: [Swift.UInt32], _ pname: Swift.UInt32) -> Any @objc public func getBufferSubData(_ target: Swift.UInt32, _ srcByteOffset: Swift.Int, _ dstData: Swift.UnsafeMutableRawPointer, size: Swift.Int, _ dstOffset: Swift.Int32, _ length: Swift.Int32) + @objc public func getBufferSubData(_ target: Swift.UInt32, _ srcByteOffset: Swift.Int, _ dstData: Swift.UnsafeMutableRawPointer, size: Swift.Int, _ dstOffset: Swift.Int32, _ length: Swift.Int32, offset: Swift.Int) @objc public func getFragDataLocation(_ program: Swift.UInt32, _ name: Swift.String) -> Swift.Int32 @objc public func getIndexedParameter(_ target: Swift.UInt32, _ index: Swift.UInt32) -> Any @objc public func getInternalformatParameter(_ target: Swift.UInt32, _ internalformat: Swift.UInt32, _ pname: Swift.UInt32) -> Any @@ -490,21 +494,33 @@ extension RangeReplaceableCollection { @objc public func uniform3ui(_ location: Swift.Int32, _ v0: Swift.UInt32, _ v1: Swift.UInt32, _ v2: Swift.UInt32) @objc public func uniform4ui(_ location: Swift.Int32, _ v0: Swift.UInt32, _ v1: Swift.UInt32, _ v2: Swift.UInt32, _ v3: Swift.UInt32) @objc public func uniform1uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniform1uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform2uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniform2uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform3uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniform3uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform4uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniform4uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformBlockBinding(_ program: Swift.UInt32, _ uniformBlockIndex: Swift.UInt32, _ uniformBlockBinding: Swift.UInt32) @objc public func uniformMatrix3x2fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix3x2fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix4x2fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix4x2fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix2x3fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix2x3fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix4x3fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix4x3fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix2x4fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix2x4fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix3x4fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix3x4fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func vertexAttribDivisor(_ index: Swift.UInt32, _ divisor: Swift.UInt32) @objc public func vertexAttribI4i(_ index: Swift.UInt32, _ v0: Swift.Int32, _ v1: Swift.Int32, _ v2: Swift.Int32, _ v3: Swift.Int32) @objc public func vertexAttribI4ui(_ index: Swift.UInt32, _ v0: Swift.UInt32, _ v1: Swift.UInt32, _ v2: Swift.UInt32, _ v3: Swift.UInt32) @objc public func vertexAttribI4iv(_ index: Swift.UInt32, _ value: Swift.UnsafeRawPointer) + @objc public func vertexAttribI4iv(_ index: Swift.UInt32, _ value: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public func vertexAttribI4uiv(_ index: Swift.UInt32, _ value: Swift.UnsafeRawPointer) + @objc public func vertexAttribI4uiv(_ index: Swift.UInt32, _ value: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public var READ_BUFFER: Swift.UInt32 { @objc get } @@ -1362,11 +1378,26 @@ extension RangeReplaceableCollection { @objc get } @objc public func decode(buffer: Foundation.Data) -> Swift.String + @objc public func decode(buffer: Foundation.Data, offset: Swift.Int) -> Swift.String + @objc public func decode(buffer: Foundation.Data, offset: Swift.Int, length: Swift.Int) -> Swift.String + @objc public func decode(u8 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(u8 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(i8 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(i8 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(u16 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(u16 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(i16 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(i16 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(i32 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(i32 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(u32 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(u32 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String @objc public func decode(bytes: [Swift.UInt8]) -> Swift.String @objc public func decode(i8 bytes: [Swift.Int8]) -> Swift.String @objc public func decode(u16 bytes: [Swift.UInt16]) -> Swift.String @objc public func decode(i16 bytes: [Swift.Int16]) -> Swift.String @objc public func decode(i32 bytes: [Swift.Int32]) -> Swift.String + @objc public func decode(u32 bytes: [Swift.UInt32]) -> Swift.String @objc deinit } @objcMembers @objc(TNSWebGLActiveInfo) public class TNSWebGLActiveInfo : ObjectiveC.NSObject { @@ -1432,6 +1463,7 @@ extension RangeReplaceableCollection { @objc public func bufferData(_ target: Swift.UInt32, srcData: Foundation.NSNull, _ usage: Swift.UInt32) @objc public func bufferData(_ target: Swift.UInt32, i8 srcData: [Swift.Int8], _ usage: Swift.UInt32) @objc public func bufferData(_ target: Swift.UInt32, srcData: Swift.UnsafeMutableRawPointer, size: Swift.Int, _ usage: Swift.UInt32) + @objc public func bufferData(_ target: Swift.UInt32, srcData: Swift.UnsafeMutableRawPointer, size: Swift.Int, _ usage: Swift.UInt32, offset: Swift.Int) @objc public func bufferData(_ target: Swift.UInt32, u8 srcData: [Swift.UInt8], _ usage: Swift.UInt32) @objc public func bufferData(_ target: Swift.UInt32, i16 srcData: [Swift.Int16], _ usage: Swift.UInt32) @objc public func bufferData(_ target: Swift.UInt32, u16 srcData: [Swift.UInt16], _ usage: Swift.UInt32) @@ -1442,6 +1474,7 @@ extension RangeReplaceableCollection { @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, _ srcData: Foundation.NSNull) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, i8 srcData: [Swift.Int8]) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, srcData: Swift.UnsafeMutableRawPointer, size: Swift.Int) + @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, srcData: Swift.UnsafeMutableRawPointer, size: Swift.Int, os: Swift.Int) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, u8 srcData: [Swift.UInt8]) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, i16 srcData: [Swift.Int16]) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, u16 srcData: [Swift.UInt16]) @@ -1527,6 +1560,7 @@ extension RangeReplaceableCollection { @objc public func pixelStorei(_ pname: Swift.UInt32, _ param: Swift.UInt32) @objc public func polygonOffset(_ factor: Swift.Float32, _ units: Swift.Float32) @objc public func readPixels(_ x: Swift.Int32, _ y: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, _ pixels: Swift.UnsafeMutableRawPointer) + @objc public func readPixels(_ x: Swift.Int32, _ y: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, _ pixels: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func renderbufferStorage(_ target: Swift.UInt32, _ internalFormat: Swift.UInt32, _ width: Swift.Int32, _ height: Swift.Int32) @objc public func sampleCoverage(_ value: Swift.Float32, _ invert: Swift.Bool) @objc public func scissor(_ x: Swift.Int32, _ y: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32) @@ -1540,6 +1574,7 @@ extension RangeReplaceableCollection { @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, data: Foundation.NSData) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u8 pixels: [Swift.UInt8]) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, pixels: Swift.UnsafeRawPointer, size: Swift.Int) + @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, pixels: Swift.UnsafeRawPointer, size: Swift.Int, offset: Swift.Int) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u16 pixels: [Swift.UInt16]) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u32 pixels: [Swift.UInt32]) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, f32 pixels: [Swift.Float32]) @@ -1554,6 +1589,7 @@ extension RangeReplaceableCollection { @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, data: Foundation.NSData) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u8 pixels: [Swift.UInt8]) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, pixels: Swift.UnsafeMutableRawPointer, size: Swift.Int) + @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, pixels: Swift.UnsafeMutableRawPointer, size: Swift.Int, offset: Swift.Int) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u16 pixels: [Swift.UInt16]) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, f32 pixels: [Swift.Float32]) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, _ pixels: Foundation.NSNull) @@ -1564,23 +1600,34 @@ extension RangeReplaceableCollection { @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, _ pixels: Foundation.NSNull) @objc public func uniform1f(_ location: Swift.Int32, _ v0: Swift.Float32) @objc public func uniform1fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform1fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform1i(_ location: Swift.Int32, _ v0: Swift.Int32) @objc public func uniform1iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform1iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform2f(_ location: Swift.Int32, _ v0: Swift.Float32, _ v1: Swift.Float32) @objc public func uniform2fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform2fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform2i(_ location: Swift.Int32, _ v0: Swift.Int32, _ v1: Swift.Int32) @objc public func uniform2iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform2iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform3f(_ location: Swift.Int32, _ v0: Swift.Float32, _ v1: Swift.Float32, _ v2: Swift.Float32) @objc public func uniform3fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform3fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform3i(_ location: Swift.Int32, _ v0: Swift.Int32, _ v1: Swift.Int32, _ v2: Swift.Int32) @objc public func uniform3iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform3iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform4f(_ location: Swift.Int32, _ v0: Swift.Float32, _ v1: Swift.Float32, _ v2: Swift.Float32, _ v3: Swift.Float32) @objc public func uniform4fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform4fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform4i(_ location: Swift.Int32, _ v0: Swift.Int32, _ v1: Swift.Int32, _ v2: Swift.Int32, _ v3: Swift.Int32) @objc public func uniform4iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform4iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix2fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix2fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix3fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix3fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix4fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix4fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func useProgram(_ program: Swift.UInt32) @objc public func validateProgram(_ program: Swift.UInt32) @objc public func vertexAttrib1f(_ index: Swift.UInt32, _ v0: Swift.Float32) @@ -1588,9 +1635,13 @@ extension RangeReplaceableCollection { @objc public func vertexAttrib3f(_ index: Swift.UInt32, _ v0: Swift.Float32, _ v1: Swift.Float32, _ v2: Swift.Float32) @objc public func vertexAttrib4f(_ index: Swift.UInt32, _ v0: Swift.Float32, _ v1: Swift.Float32, _ v2: Swift.Float32, _ v3: Swift.Float32) @objc public func vertexAttrib1fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer) + @objc public func vertexAttrib1fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func vertexAttrib2fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer) + @objc public func vertexAttrib2fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func vertexAttrib3fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer) + @objc public func vertexAttrib3fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func vertexAttrib4fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer) + @objc public func vertexAttrib4fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func vertexAttribPointer(_ index: Swift.UInt32, _ size: Swift.Int32, _ type: Swift.UInt32, _ normalized: Swift.Bool, _ stride: Swift.Int32, _ offset: Swift.Int) @objc public func viewport(_ x: Swift.Int32, _ y: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32) @objc public var DEPTH_BUFFER_BIT: Swift.UInt32 { diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftinterface b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftinterface index 859cb888..ca4c1838 100644 --- a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftinterface +++ b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftinterface @@ -378,8 +378,11 @@ extension RangeReplaceableCollection { @objc public func bindVertexArray(_ vertexArray: Swift.UInt32) @objc public func blitFramebuffer(_ srcX0: Swift.Int32, _ srcY0: Swift.Int32, _ srcX1: Swift.Int32, _ srcY1: Swift.Int32, _ dstX0: Swift.Int32, _ dstY0: Swift.Int32, _ dstX1: Swift.Int32, _ dstY1: Swift.Int32, _ mask: Swift.UInt32, _ filter: Swift.UInt32) @objc public func clearBufferfv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer) + @objc public func clearBufferfv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public func clearBufferiv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer) + @objc public func clearBufferiv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public func clearBufferuiv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer) + @objc public func clearBufferuiv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public func clearBufferfi(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ depth: Swift.Float32, _ stencil: Swift.Int32) @objc public func clientWaitSync(_ sync: OpenGLES.GLsync, _ flags: Swift.UInt32, _ timeout: Swift.UInt64) -> Swift.Int32 @objc public func compressedTexSubImage3D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ zoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ depth: Swift.Int32, _ format: Swift.UInt32, _ imageSize: Swift.Int32, _ offset: Swift.Int32) @@ -414,6 +417,7 @@ extension RangeReplaceableCollection { @objc public func getActiveUniformBlockParameter(_ program: Swift.UInt32, _ uniformBlockIndex: Swift.UInt32, _ pname: Swift.UInt32) -> Any @objc public func getActiveUniforms(_ program: Swift.UInt32, _ uniformIndices: [Swift.UInt32], _ pname: Swift.UInt32) -> Any @objc public func getBufferSubData(_ target: Swift.UInt32, _ srcByteOffset: Swift.Int, _ dstData: Swift.UnsafeMutableRawPointer, size: Swift.Int, _ dstOffset: Swift.Int32, _ length: Swift.Int32) + @objc public func getBufferSubData(_ target: Swift.UInt32, _ srcByteOffset: Swift.Int, _ dstData: Swift.UnsafeMutableRawPointer, size: Swift.Int, _ dstOffset: Swift.Int32, _ length: Swift.Int32, offset: Swift.Int) @objc public func getFragDataLocation(_ program: Swift.UInt32, _ name: Swift.String) -> Swift.Int32 @objc public func getIndexedParameter(_ target: Swift.UInt32, _ index: Swift.UInt32) -> Any @objc public func getInternalformatParameter(_ target: Swift.UInt32, _ internalformat: Swift.UInt32, _ pname: Swift.UInt32) -> Any @@ -490,21 +494,33 @@ extension RangeReplaceableCollection { @objc public func uniform3ui(_ location: Swift.Int32, _ v0: Swift.UInt32, _ v1: Swift.UInt32, _ v2: Swift.UInt32) @objc public func uniform4ui(_ location: Swift.Int32, _ v0: Swift.UInt32, _ v1: Swift.UInt32, _ v2: Swift.UInt32, _ v3: Swift.UInt32) @objc public func uniform1uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniform1uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform2uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniform2uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform3uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniform3uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform4uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniform4uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformBlockBinding(_ program: Swift.UInt32, _ uniformBlockIndex: Swift.UInt32, _ uniformBlockBinding: Swift.UInt32) @objc public func uniformMatrix3x2fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix3x2fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix4x2fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix4x2fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix2x3fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix2x3fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix4x3fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix4x3fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix2x4fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix2x4fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix3x4fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix3x4fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func vertexAttribDivisor(_ index: Swift.UInt32, _ divisor: Swift.UInt32) @objc public func vertexAttribI4i(_ index: Swift.UInt32, _ v0: Swift.Int32, _ v1: Swift.Int32, _ v2: Swift.Int32, _ v3: Swift.Int32) @objc public func vertexAttribI4ui(_ index: Swift.UInt32, _ v0: Swift.UInt32, _ v1: Swift.UInt32, _ v2: Swift.UInt32, _ v3: Swift.UInt32) @objc public func vertexAttribI4iv(_ index: Swift.UInt32, _ value: Swift.UnsafeRawPointer) + @objc public func vertexAttribI4iv(_ index: Swift.UInt32, _ value: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public func vertexAttribI4uiv(_ index: Swift.UInt32, _ value: Swift.UnsafeRawPointer) + @objc public func vertexAttribI4uiv(_ index: Swift.UInt32, _ value: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public var READ_BUFFER: Swift.UInt32 { @objc get } @@ -1362,11 +1378,26 @@ extension RangeReplaceableCollection { @objc get } @objc public func decode(buffer: Foundation.Data) -> Swift.String + @objc public func decode(buffer: Foundation.Data, offset: Swift.Int) -> Swift.String + @objc public func decode(buffer: Foundation.Data, offset: Swift.Int, length: Swift.Int) -> Swift.String + @objc public func decode(u8 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(u8 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(i8 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(i8 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(u16 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(u16 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(i16 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(i16 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(i32 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(i32 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(u32 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(u32 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String @objc public func decode(bytes: [Swift.UInt8]) -> Swift.String @objc public func decode(i8 bytes: [Swift.Int8]) -> Swift.String @objc public func decode(u16 bytes: [Swift.UInt16]) -> Swift.String @objc public func decode(i16 bytes: [Swift.Int16]) -> Swift.String @objc public func decode(i32 bytes: [Swift.Int32]) -> Swift.String + @objc public func decode(u32 bytes: [Swift.UInt32]) -> Swift.String @objc deinit } @objcMembers @objc(TNSWebGLActiveInfo) public class TNSWebGLActiveInfo : ObjectiveC.NSObject { @@ -1432,6 +1463,7 @@ extension RangeReplaceableCollection { @objc public func bufferData(_ target: Swift.UInt32, srcData: Foundation.NSNull, _ usage: Swift.UInt32) @objc public func bufferData(_ target: Swift.UInt32, i8 srcData: [Swift.Int8], _ usage: Swift.UInt32) @objc public func bufferData(_ target: Swift.UInt32, srcData: Swift.UnsafeMutableRawPointer, size: Swift.Int, _ usage: Swift.UInt32) + @objc public func bufferData(_ target: Swift.UInt32, srcData: Swift.UnsafeMutableRawPointer, size: Swift.Int, _ usage: Swift.UInt32, offset: Swift.Int) @objc public func bufferData(_ target: Swift.UInt32, u8 srcData: [Swift.UInt8], _ usage: Swift.UInt32) @objc public func bufferData(_ target: Swift.UInt32, i16 srcData: [Swift.Int16], _ usage: Swift.UInt32) @objc public func bufferData(_ target: Swift.UInt32, u16 srcData: [Swift.UInt16], _ usage: Swift.UInt32) @@ -1442,6 +1474,7 @@ extension RangeReplaceableCollection { @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, _ srcData: Foundation.NSNull) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, i8 srcData: [Swift.Int8]) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, srcData: Swift.UnsafeMutableRawPointer, size: Swift.Int) + @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, srcData: Swift.UnsafeMutableRawPointer, size: Swift.Int, os: Swift.Int) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, u8 srcData: [Swift.UInt8]) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, i16 srcData: [Swift.Int16]) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, u16 srcData: [Swift.UInt16]) @@ -1527,6 +1560,7 @@ extension RangeReplaceableCollection { @objc public func pixelStorei(_ pname: Swift.UInt32, _ param: Swift.UInt32) @objc public func polygonOffset(_ factor: Swift.Float32, _ units: Swift.Float32) @objc public func readPixels(_ x: Swift.Int32, _ y: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, _ pixels: Swift.UnsafeMutableRawPointer) + @objc public func readPixels(_ x: Swift.Int32, _ y: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, _ pixels: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func renderbufferStorage(_ target: Swift.UInt32, _ internalFormat: Swift.UInt32, _ width: Swift.Int32, _ height: Swift.Int32) @objc public func sampleCoverage(_ value: Swift.Float32, _ invert: Swift.Bool) @objc public func scissor(_ x: Swift.Int32, _ y: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32) @@ -1540,6 +1574,7 @@ extension RangeReplaceableCollection { @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, data: Foundation.NSData) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u8 pixels: [Swift.UInt8]) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, pixels: Swift.UnsafeRawPointer, size: Swift.Int) + @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, pixels: Swift.UnsafeRawPointer, size: Swift.Int, offset: Swift.Int) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u16 pixels: [Swift.UInt16]) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u32 pixels: [Swift.UInt32]) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, f32 pixels: [Swift.Float32]) @@ -1554,6 +1589,7 @@ extension RangeReplaceableCollection { @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, data: Foundation.NSData) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u8 pixels: [Swift.UInt8]) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, pixels: Swift.UnsafeMutableRawPointer, size: Swift.Int) + @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, pixels: Swift.UnsafeMutableRawPointer, size: Swift.Int, offset: Swift.Int) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u16 pixels: [Swift.UInt16]) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, f32 pixels: [Swift.Float32]) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, _ pixels: Foundation.NSNull) @@ -1564,23 +1600,34 @@ extension RangeReplaceableCollection { @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, _ pixels: Foundation.NSNull) @objc public func uniform1f(_ location: Swift.Int32, _ v0: Swift.Float32) @objc public func uniform1fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform1fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform1i(_ location: Swift.Int32, _ v0: Swift.Int32) @objc public func uniform1iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform1iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform2f(_ location: Swift.Int32, _ v0: Swift.Float32, _ v1: Swift.Float32) @objc public func uniform2fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform2fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform2i(_ location: Swift.Int32, _ v0: Swift.Int32, _ v1: Swift.Int32) @objc public func uniform2iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform2iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform3f(_ location: Swift.Int32, _ v0: Swift.Float32, _ v1: Swift.Float32, _ v2: Swift.Float32) @objc public func uniform3fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform3fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform3i(_ location: Swift.Int32, _ v0: Swift.Int32, _ v1: Swift.Int32, _ v2: Swift.Int32) @objc public func uniform3iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform3iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform4f(_ location: Swift.Int32, _ v0: Swift.Float32, _ v1: Swift.Float32, _ v2: Swift.Float32, _ v3: Swift.Float32) @objc public func uniform4fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform4fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform4i(_ location: Swift.Int32, _ v0: Swift.Int32, _ v1: Swift.Int32, _ v2: Swift.Int32, _ v3: Swift.Int32) @objc public func uniform4iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform4iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix2fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix2fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix3fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix3fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix4fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix4fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func useProgram(_ program: Swift.UInt32) @objc public func validateProgram(_ program: Swift.UInt32) @objc public func vertexAttrib1f(_ index: Swift.UInt32, _ v0: Swift.Float32) @@ -1588,9 +1635,13 @@ extension RangeReplaceableCollection { @objc public func vertexAttrib3f(_ index: Swift.UInt32, _ v0: Swift.Float32, _ v1: Swift.Float32, _ v2: Swift.Float32) @objc public func vertexAttrib4f(_ index: Swift.UInt32, _ v0: Swift.Float32, _ v1: Swift.Float32, _ v2: Swift.Float32, _ v3: Swift.Float32) @objc public func vertexAttrib1fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer) + @objc public func vertexAttrib1fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func vertexAttrib2fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer) + @objc public func vertexAttrib2fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func vertexAttrib3fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer) + @objc public func vertexAttrib3fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func vertexAttrib4fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer) + @objc public func vertexAttrib4fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func vertexAttribPointer(_ index: Swift.UInt32, _ size: Swift.Int32, _ type: Swift.UInt32, _ normalized: Swift.Bool, _ stride: Swift.Int32, _ offset: Swift.Int) @objc public func viewport(_ x: Swift.Int32, _ y: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32) @objc public var DEPTH_BUFFER_BIT: Swift.UInt32 { diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/TNSCanvas.nib b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/TNSCanvas.nib index 54dda1dd..666453fc 100644 Binary files a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/TNSCanvas.nib and b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/TNSCanvas.nib differ diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/CanvasNative b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/CanvasNative index 016eecf7..fe3dbd52 100755 Binary files a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/CanvasNative and b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/CanvasNative differ diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Headers/CanvasNative-Swift.h b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Headers/CanvasNative-Swift.h index cd44d778..98f9a876 100644 --- a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Headers/CanvasNative-Swift.h +++ b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Headers/CanvasNative-Swift.h @@ -741,11 +741,26 @@ SWIFT_CLASS_NAMED("TNSTextDecoder") - (nonnull instancetype)initWithEncoding:(NSString * _Nonnull)encoding OBJC_DESIGNATED_INITIALIZER; @property (nonatomic, readonly, copy) NSString * _Nonnull encoding; - (NSString * _Nonnull)decodeWithBuffer:(NSData * _Nonnull)buffer SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithBuffer:(NSData * _Nonnull)buffer offset:(NSInteger)offset SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithBuffer:(NSData * _Nonnull)buffer offset:(NSInteger)offset length:(NSInteger)length SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithU8:(void * _Nonnull)buffer :(NSInteger)size SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithU8:(void * _Nonnull)buffer :(NSInteger)size offset:(NSInteger)offset SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithI8:(void * _Nonnull)buffer :(NSInteger)size SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithI8:(void * _Nonnull)buffer :(NSInteger)size offset:(NSInteger)offset SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithU16:(void * _Nonnull)buffer :(NSInteger)size SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithU16:(void * _Nonnull)buffer :(NSInteger)size offset:(NSInteger)offset SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithI16:(void * _Nonnull)buffer :(NSInteger)size SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithI16:(void * _Nonnull)buffer :(NSInteger)size offset:(NSInteger)offset SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithI32:(void * _Nonnull)buffer :(NSInteger)size SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithI32:(void * _Nonnull)buffer :(NSInteger)size offset:(NSInteger)offset SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithU32:(void * _Nonnull)buffer :(NSInteger)size SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithU32:(void * _Nonnull)buffer :(NSInteger)size offset:(NSInteger)offset SWIFT_WARN_UNUSED_RESULT; - (NSString * _Nonnull)decodeWithBytes:(NSArray * _Nonnull)bytes SWIFT_WARN_UNUSED_RESULT; - (NSString * _Nonnull)decodeWithI8:(NSArray * _Nonnull)bytes SWIFT_WARN_UNUSED_RESULT; - (NSString * _Nonnull)decodeWithU16:(NSArray * _Nonnull)bytes SWIFT_WARN_UNUSED_RESULT; - (NSString * _Nonnull)decodeWithI16:(NSArray * _Nonnull)bytes SWIFT_WARN_UNUSED_RESULT; - (NSString * _Nonnull)decodeWithI32:(NSArray * _Nonnull)bytes SWIFT_WARN_UNUSED_RESULT; +- (NSString * _Nonnull)decodeWithU32:(NSArray * _Nonnull)bytes SWIFT_WARN_UNUSED_RESULT; @end typedef SWIFT_ENUM_NAMED(NSInteger, TNSTextDirection, "TNSTextDirection", open) { @@ -809,6 +824,7 @@ SWIFT_CLASS_NAMED("TNSWebGLRenderingContext") - (void)bufferData:(uint32_t)target srcData:(NSNull * _Nonnull)srcData :(uint32_t)usage; - (void)bufferData:(uint32_t)target i8:(NSArray * _Nonnull)srcData :(uint32_t)usage; - (void)bufferData:(uint32_t)target srcData:(void * _Nonnull)srcData size:(NSInteger)size :(uint32_t)usage; +- (void)bufferData:(uint32_t)target srcData:(void * _Nonnull)srcData size:(NSInteger)size :(uint32_t)usage offset:(NSInteger)offset; - (void)bufferData:(uint32_t)target u8:(NSArray * _Nonnull)srcData :(uint32_t)usage; - (void)bufferData:(uint32_t)target i16:(NSArray * _Nonnull)srcData :(uint32_t)usage; - (void)bufferData:(uint32_t)target u16:(NSArray * _Nonnull)srcData :(uint32_t)usage; @@ -819,6 +835,7 @@ SWIFT_CLASS_NAMED("TNSWebGLRenderingContext") - (void)bufferSubData:(uint32_t)target :(NSInteger)offset :(NSNull * _Nonnull)srcData; - (void)bufferSubData:(uint32_t)target :(NSInteger)offset i8:(NSArray * _Nonnull)srcData; - (void)bufferSubData:(uint32_t)target :(NSInteger)offset srcData:(void * _Nonnull)srcData size:(NSInteger)size; +- (void)bufferSubData:(uint32_t)target :(NSInteger)offset srcData:(void * _Nonnull)srcData size:(NSInteger)size os:(NSInteger)os; - (void)bufferSubData:(uint32_t)target :(NSInteger)offset u8:(NSArray * _Nonnull)srcData; - (void)bufferSubData:(uint32_t)target :(NSInteger)offset i16:(NSArray * _Nonnull)srcData; - (void)bufferSubData:(uint32_t)target :(NSInteger)offset u16:(NSArray * _Nonnull)srcData; @@ -904,6 +921,7 @@ SWIFT_CLASS_NAMED("TNSWebGLRenderingContext") - (void)pixelStorei:(uint32_t)pname :(uint32_t)param; - (void)polygonOffset:(float)factor :(float)units; - (void)readPixels:(int32_t)x :(int32_t)y :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type :(void * _Nonnull)pixels; +- (void)readPixels:(int32_t)x :(int32_t)y :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type :(void * _Nonnull)pixels offset:(NSInteger)offset; - (void)renderbufferStorage:(uint32_t)target :(uint32_t)internalFormat :(int32_t)width :(int32_t)height; - (void)sampleCoverage:(float)value :(BOOL)invert; - (void)scissor:(int32_t)x :(int32_t)y :(int32_t)width :(int32_t)height; @@ -917,6 +935,7 @@ SWIFT_CLASS_NAMED("TNSWebGLRenderingContext") - (void)texImage2D:(uint32_t)target :(int32_t)level :(int32_t)internalformat :(int32_t)width :(int32_t)height :(int32_t)border :(uint32_t)format :(uint32_t)type data:(NSData * _Nonnull)data; - (void)texImage2D:(uint32_t)target :(int32_t)level :(int32_t)internalformat :(int32_t)width :(int32_t)height :(int32_t)border :(uint32_t)format :(uint32_t)type u8:(NSArray * _Nonnull)pixels; - (void)texImage2D:(uint32_t)target :(int32_t)level :(int32_t)internalformat :(int32_t)width :(int32_t)height :(int32_t)border :(uint32_t)format :(uint32_t)type pixels:(void const * _Nonnull)pixels size:(NSInteger)size; +- (void)texImage2D:(uint32_t)target :(int32_t)level :(int32_t)internalformat :(int32_t)width :(int32_t)height :(int32_t)border :(uint32_t)format :(uint32_t)type pixels:(void const * _Nonnull)pixels size:(NSInteger)size offset:(NSInteger)offset; - (void)texImage2D:(uint32_t)target :(int32_t)level :(int32_t)internalformat :(int32_t)width :(int32_t)height :(int32_t)border :(uint32_t)format :(uint32_t)type u16:(NSArray * _Nonnull)pixels; - (void)texImage2D:(uint32_t)target :(int32_t)level :(int32_t)internalformat :(int32_t)width :(int32_t)height :(int32_t)border :(uint32_t)format :(uint32_t)type u32:(NSArray * _Nonnull)pixels; - (void)texImage2D:(uint32_t)target :(int32_t)level :(int32_t)internalformat :(int32_t)width :(int32_t)height :(int32_t)border :(uint32_t)format :(uint32_t)type f32:(NSArray * _Nonnull)pixels; @@ -931,6 +950,7 @@ SWIFT_CLASS_NAMED("TNSWebGLRenderingContext") - (void)texSubImage2D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type data:(NSData * _Nonnull)data; - (void)texSubImage2D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type u8:(NSArray * _Nonnull)pixels; - (void)texSubImage2D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type pixels:(void * _Nonnull)pixels size:(NSInteger)size; +- (void)texSubImage2D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type pixels:(void * _Nonnull)pixels size:(NSInteger)size offset:(NSInteger)offset; - (void)texSubImage2D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type u16:(NSArray * _Nonnull)pixels; - (void)texSubImage2D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type f32:(NSArray * _Nonnull)pixels; - (void)texSubImage2D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(int32_t)width :(int32_t)height :(uint32_t)format :(uint32_t)type :(NSNull * _Nonnull)pixels; @@ -941,23 +961,34 @@ SWIFT_CLASS_NAMED("TNSWebGLRenderingContext") - (void)texSubImage2D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(uint32_t)format :(uint32_t)type :(NSNull * _Nonnull)pixels; - (void)uniform1f:(int32_t)location :(float)v0; - (void)uniform1fv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size; +- (void)uniform1fv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniform1i:(int32_t)location :(int32_t)v0; - (void)uniform1iv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size; +- (void)uniform1iv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniform2f:(int32_t)location :(float)v0 :(float)v1; - (void)uniform2fv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size; +- (void)uniform2fv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniform2i:(int32_t)location :(int32_t)v0 :(int32_t)v1; - (void)uniform2iv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size; +- (void)uniform2iv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniform3f:(int32_t)location :(float)v0 :(float)v1 :(float)v2; - (void)uniform3fv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size; +- (void)uniform3fv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniform3i:(int32_t)location :(int32_t)v0 :(int32_t)v1 :(int32_t)v2; - (void)uniform3iv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size; +- (void)uniform3iv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniform4f:(int32_t)location :(float)v0 :(float)v1 :(float)v2 :(float)v3; - (void)uniform4fv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size; +- (void)uniform4fv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniform4i:(int32_t)location :(int32_t)v0 :(int32_t)v1 :(int32_t)v2 :(int32_t)v3; - (void)uniform4iv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size; +- (void)uniform4iv:(int32_t)location :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniformMatrix2fv:(int32_t)location :(BOOL)transpose :(void * _Nonnull)value :(NSInteger)size; +- (void)uniformMatrix2fv:(int32_t)location :(BOOL)transpose :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniformMatrix3fv:(int32_t)location :(BOOL)transpose :(void * _Nonnull)value :(NSInteger)size; +- (void)uniformMatrix3fv:(int32_t)location :(BOOL)transpose :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)uniformMatrix4fv:(int32_t)location :(BOOL)transpose :(void * _Nonnull)value :(NSInteger)size; +- (void)uniformMatrix4fv:(int32_t)location :(BOOL)transpose :(void * _Nonnull)value :(NSInteger)size offset:(NSInteger)offset; - (void)useProgram:(uint32_t)program; - (void)validateProgram:(uint32_t)program; - (void)vertexAttrib1f:(uint32_t)index :(float)v0; @@ -965,9 +996,13 @@ SWIFT_CLASS_NAMED("TNSWebGLRenderingContext") - (void)vertexAttrib3f:(uint32_t)index :(float)v0 :(float)v1 :(float)v2; - (void)vertexAttrib4f:(uint32_t)index :(float)v0 :(float)v1 :(float)v2 :(float)v3; - (void)vertexAttrib1fv:(uint32_t)index :(void * _Nonnull)value; +- (void)vertexAttrib1fv:(uint32_t)index :(void * _Nonnull)value offset:(NSInteger)offset; - (void)vertexAttrib2fv:(uint32_t)index :(void * _Nonnull)value; +- (void)vertexAttrib2fv:(uint32_t)index :(void * _Nonnull)value offset:(NSInteger)offset; - (void)vertexAttrib3fv:(uint32_t)index :(void * _Nonnull)value; +- (void)vertexAttrib3fv:(uint32_t)index :(void * _Nonnull)value offset:(NSInteger)offset; - (void)vertexAttrib4fv:(uint32_t)index :(void * _Nonnull)value; +- (void)vertexAttrib4fv:(uint32_t)index :(void * _Nonnull)value offset:(NSInteger)offset; - (void)vertexAttribPointer:(uint32_t)index :(int32_t)size :(uint32_t)type :(BOOL)normalized :(int32_t)stride :(NSInteger)offset; - (void)viewport:(int32_t)x :(int32_t)y :(int32_t)width :(int32_t)height; @property (nonatomic, readonly) uint32_t DEPTH_BUFFER_BIT; @@ -1284,8 +1319,11 @@ SWIFT_CLASS_NAMED("TNSWebGL2RenderingContext") - (void)bindVertexArray:(uint32_t)vertexArray; - (void)blitFramebuffer:(int32_t)srcX0 :(int32_t)srcY0 :(int32_t)srcX1 :(int32_t)srcY1 :(int32_t)dstX0 :(int32_t)dstY0 :(int32_t)dstX1 :(int32_t)dstY1 :(uint32_t)mask :(uint32_t)filter; - (void)clearBufferfv:(uint32_t)buffer :(int32_t)drawbuffer :(void const * _Nonnull)values; +- (void)clearBufferfv:(uint32_t)buffer :(int32_t)drawbuffer :(void const * _Nonnull)values offset:(NSInteger)offset; - (void)clearBufferiv:(uint32_t)buffer :(int32_t)drawbuffer :(void const * _Nonnull)values; +- (void)clearBufferiv:(uint32_t)buffer :(int32_t)drawbuffer :(void const * _Nonnull)values offset:(NSInteger)offset; - (void)clearBufferuiv:(uint32_t)buffer :(int32_t)drawbuffer :(void const * _Nonnull)values; +- (void)clearBufferuiv:(uint32_t)buffer :(int32_t)drawbuffer :(void const * _Nonnull)values offset:(NSInteger)offset; - (void)clearBufferfi:(uint32_t)buffer :(int32_t)drawbuffer :(float)depth :(int32_t)stencil; - (int32_t)clientWaitSync:(GLsync _Nonnull)sync :(uint32_t)flags :(uint64_t)timeout SWIFT_WARN_UNUSED_RESULT; - (void)compressedTexSubImage3D:(uint32_t)target :(int32_t)level :(int32_t)xoffset :(int32_t)yoffset :(int32_t)zoffset :(int32_t)width :(int32_t)height :(int32_t)depth :(uint32_t)format :(int32_t)imageSize :(int32_t)offset; @@ -1320,6 +1358,7 @@ SWIFT_CLASS_NAMED("TNSWebGL2RenderingContext") - (id _Nonnull)getActiveUniformBlockParameter:(uint32_t)program :(uint32_t)uniformBlockIndex :(uint32_t)pname SWIFT_WARN_UNUSED_RESULT; - (id _Nonnull)getActiveUniforms:(uint32_t)program :(NSArray * _Nonnull)uniformIndices :(uint32_t)pname SWIFT_WARN_UNUSED_RESULT; - (void)getBufferSubData:(uint32_t)target :(NSInteger)srcByteOffset :(void * _Nonnull)dstData size:(NSInteger)size :(int32_t)dstOffset :(int32_t)length; +- (void)getBufferSubData:(uint32_t)target :(NSInteger)srcByteOffset :(void * _Nonnull)dstData size:(NSInteger)size :(int32_t)dstOffset :(int32_t)length offset:(NSInteger)offset; - (int32_t)getFragDataLocation:(uint32_t)program :(NSString * _Nonnull)name SWIFT_WARN_UNUSED_RESULT; - (id _Nonnull)getIndexedParameter:(uint32_t)target :(uint32_t)index SWIFT_WARN_UNUSED_RESULT; - (id _Nonnull)getInternalformatParameter:(uint32_t)target :(uint32_t)internalformat :(uint32_t)pname SWIFT_WARN_UNUSED_RESULT; @@ -1396,21 +1435,33 @@ SWIFT_CLASS_NAMED("TNSWebGL2RenderingContext") - (void)uniform3ui:(int32_t)location :(uint32_t)v0 :(uint32_t)v1 :(uint32_t)v2; - (void)uniform4ui:(int32_t)location :(uint32_t)v0 :(uint32_t)v1 :(uint32_t)v2 :(uint32_t)v3; - (void)uniform1uiv:(int32_t)location :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniform1uiv:(int32_t)location :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniform2uiv:(int32_t)location :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniform2uiv:(int32_t)location :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniform3uiv:(int32_t)location :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniform3uiv:(int32_t)location :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniform4uiv:(int32_t)location :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniform4uiv:(int32_t)location :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniformBlockBinding:(uint32_t)program :(uint32_t)uniformBlockIndex :(uint32_t)uniformBlockBinding; - (void)uniformMatrix3x2fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniformMatrix3x2fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniformMatrix4x2fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniformMatrix4x2fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniformMatrix2x3fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniformMatrix2x3fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniformMatrix4x3fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniformMatrix4x3fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniformMatrix2x4fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniformMatrix2x4fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)uniformMatrix3x4fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size; +- (void)uniformMatrix3x4fv:(uint32_t)location :(BOOL)transpose :(void const * _Nonnull)data :(NSInteger)size offset:(NSInteger)offset; - (void)vertexAttribDivisor:(uint32_t)index :(uint32_t)divisor; - (void)vertexAttribI4i:(uint32_t)index :(int32_t)v0 :(int32_t)v1 :(int32_t)v2 :(int32_t)v3; - (void)vertexAttribI4ui:(uint32_t)index :(uint32_t)v0 :(uint32_t)v1 :(uint32_t)v2 :(uint32_t)v3; - (void)vertexAttribI4iv:(uint32_t)index :(void const * _Nonnull)value; +- (void)vertexAttribI4iv:(uint32_t)index :(void const * _Nonnull)value offset:(NSInteger)offset; - (void)vertexAttribI4uiv:(uint32_t)index :(void const * _Nonnull)value; +- (void)vertexAttribI4uiv:(uint32_t)index :(void const * _Nonnull)value offset:(NSInteger)offset; @property (nonatomic, readonly) uint32_t READ_BUFFER; @property (nonatomic, readonly) uint32_t UNPACK_ROW_LENGTH; @property (nonatomic, readonly) uint32_t UNPACK_SKIP_ROWS; diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h index 22090130..63b8bf98 100644 --- a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h +++ b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h @@ -926,12 +926,24 @@ long long text_decoder_create(const char *decoding); const char *text_decoder_decode(long long decoder, const uint8_t *data, uintptr_t len); +U8Array *text_decoder_decode_bytes(long long decoder, const uint8_t *data, uintptr_t len); + const char *text_decoder_decode_i16(long long decoder, const int16_t *data, uintptr_t len); +U8Array *text_decoder_decode_i16_bytes(long long decoder, const int16_t *data, uintptr_t len); + const char *text_decoder_decode_i32(long long decoder, const int32_t *data, uintptr_t len); +U8Array *text_decoder_decode_i32_bytes(long long decoder, const int32_t *data, uintptr_t len); + +const U8Array *text_decoder_decode_to_bytes(long long decoder, const uint8_t *data, uintptr_t len); + const char *text_decoder_decode_u16(long long decoder, const uint16_t *data, uintptr_t len); +U8Array *text_decoder_decode_u16_bytes(long long decoder, const uint16_t *data, uintptr_t len); + +U8Array *text_decoder_decode_u32_bytes(long long decoder, const uint32_t *data, uintptr_t len); + const char *text_decoder_get_encoding(long long decoder); long long text_encoder_create(const char *encoding); diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Info.plist b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Info.plist index f8dae105..58e502af 100644 Binary files a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Info.plist and b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Info.plist differ diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface index 784913ce..9fbf1572 100644 --- a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +++ b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface @@ -378,8 +378,11 @@ extension RangeReplaceableCollection { @objc public func bindVertexArray(_ vertexArray: Swift.UInt32) @objc public func blitFramebuffer(_ srcX0: Swift.Int32, _ srcY0: Swift.Int32, _ srcX1: Swift.Int32, _ srcY1: Swift.Int32, _ dstX0: Swift.Int32, _ dstY0: Swift.Int32, _ dstX1: Swift.Int32, _ dstY1: Swift.Int32, _ mask: Swift.UInt32, _ filter: Swift.UInt32) @objc public func clearBufferfv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer) + @objc public func clearBufferfv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public func clearBufferiv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer) + @objc public func clearBufferiv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public func clearBufferuiv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer) + @objc public func clearBufferuiv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public func clearBufferfi(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ depth: Swift.Float32, _ stencil: Swift.Int32) @objc public func clientWaitSync(_ sync: OpenGLES.GLsync, _ flags: Swift.UInt32, _ timeout: Swift.UInt64) -> Swift.Int32 @objc public func compressedTexSubImage3D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ zoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ depth: Swift.Int32, _ format: Swift.UInt32, _ imageSize: Swift.Int32, _ offset: Swift.Int32) @@ -414,6 +417,7 @@ extension RangeReplaceableCollection { @objc public func getActiveUniformBlockParameter(_ program: Swift.UInt32, _ uniformBlockIndex: Swift.UInt32, _ pname: Swift.UInt32) -> Any @objc public func getActiveUniforms(_ program: Swift.UInt32, _ uniformIndices: [Swift.UInt32], _ pname: Swift.UInt32) -> Any @objc public func getBufferSubData(_ target: Swift.UInt32, _ srcByteOffset: Swift.Int, _ dstData: Swift.UnsafeMutableRawPointer, size: Swift.Int, _ dstOffset: Swift.Int32, _ length: Swift.Int32) + @objc public func getBufferSubData(_ target: Swift.UInt32, _ srcByteOffset: Swift.Int, _ dstData: Swift.UnsafeMutableRawPointer, size: Swift.Int, _ dstOffset: Swift.Int32, _ length: Swift.Int32, offset: Swift.Int) @objc public func getFragDataLocation(_ program: Swift.UInt32, _ name: Swift.String) -> Swift.Int32 @objc public func getIndexedParameter(_ target: Swift.UInt32, _ index: Swift.UInt32) -> Any @objc public func getInternalformatParameter(_ target: Swift.UInt32, _ internalformat: Swift.UInt32, _ pname: Swift.UInt32) -> Any @@ -490,21 +494,33 @@ extension RangeReplaceableCollection { @objc public func uniform3ui(_ location: Swift.Int32, _ v0: Swift.UInt32, _ v1: Swift.UInt32, _ v2: Swift.UInt32) @objc public func uniform4ui(_ location: Swift.Int32, _ v0: Swift.UInt32, _ v1: Swift.UInt32, _ v2: Swift.UInt32, _ v3: Swift.UInt32) @objc public func uniform1uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniform1uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform2uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniform2uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform3uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniform3uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform4uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniform4uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformBlockBinding(_ program: Swift.UInt32, _ uniformBlockIndex: Swift.UInt32, _ uniformBlockBinding: Swift.UInt32) @objc public func uniformMatrix3x2fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix3x2fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix4x2fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix4x2fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix2x3fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix2x3fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix4x3fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix4x3fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix2x4fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix2x4fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix3x4fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix3x4fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func vertexAttribDivisor(_ index: Swift.UInt32, _ divisor: Swift.UInt32) @objc public func vertexAttribI4i(_ index: Swift.UInt32, _ v0: Swift.Int32, _ v1: Swift.Int32, _ v2: Swift.Int32, _ v3: Swift.Int32) @objc public func vertexAttribI4ui(_ index: Swift.UInt32, _ v0: Swift.UInt32, _ v1: Swift.UInt32, _ v2: Swift.UInt32, _ v3: Swift.UInt32) @objc public func vertexAttribI4iv(_ index: Swift.UInt32, _ value: Swift.UnsafeRawPointer) + @objc public func vertexAttribI4iv(_ index: Swift.UInt32, _ value: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public func vertexAttribI4uiv(_ index: Swift.UInt32, _ value: Swift.UnsafeRawPointer) + @objc public func vertexAttribI4uiv(_ index: Swift.UInt32, _ value: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public var READ_BUFFER: Swift.UInt32 { @objc get } @@ -1362,11 +1378,26 @@ extension RangeReplaceableCollection { @objc get } @objc public func decode(buffer: Foundation.Data) -> Swift.String + @objc public func decode(buffer: Foundation.Data, offset: Swift.Int) -> Swift.String + @objc public func decode(buffer: Foundation.Data, offset: Swift.Int, length: Swift.Int) -> Swift.String + @objc public func decode(u8 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(u8 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(i8 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(i8 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(u16 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(u16 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(i16 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(i16 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(i32 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(i32 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(u32 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(u32 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String @objc public func decode(bytes: [Swift.UInt8]) -> Swift.String @objc public func decode(i8 bytes: [Swift.Int8]) -> Swift.String @objc public func decode(u16 bytes: [Swift.UInt16]) -> Swift.String @objc public func decode(i16 bytes: [Swift.Int16]) -> Swift.String @objc public func decode(i32 bytes: [Swift.Int32]) -> Swift.String + @objc public func decode(u32 bytes: [Swift.UInt32]) -> Swift.String @objc deinit } @objcMembers @objc(TNSWebGLActiveInfo) public class TNSWebGLActiveInfo : ObjectiveC.NSObject { @@ -1432,6 +1463,7 @@ extension RangeReplaceableCollection { @objc public func bufferData(_ target: Swift.UInt32, srcData: Foundation.NSNull, _ usage: Swift.UInt32) @objc public func bufferData(_ target: Swift.UInt32, i8 srcData: [Swift.Int8], _ usage: Swift.UInt32) @objc public func bufferData(_ target: Swift.UInt32, srcData: Swift.UnsafeMutableRawPointer, size: Swift.Int, _ usage: Swift.UInt32) + @objc public func bufferData(_ target: Swift.UInt32, srcData: Swift.UnsafeMutableRawPointer, size: Swift.Int, _ usage: Swift.UInt32, offset: Swift.Int) @objc public func bufferData(_ target: Swift.UInt32, u8 srcData: [Swift.UInt8], _ usage: Swift.UInt32) @objc public func bufferData(_ target: Swift.UInt32, i16 srcData: [Swift.Int16], _ usage: Swift.UInt32) @objc public func bufferData(_ target: Swift.UInt32, u16 srcData: [Swift.UInt16], _ usage: Swift.UInt32) @@ -1442,6 +1474,7 @@ extension RangeReplaceableCollection { @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, _ srcData: Foundation.NSNull) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, i8 srcData: [Swift.Int8]) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, srcData: Swift.UnsafeMutableRawPointer, size: Swift.Int) + @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, srcData: Swift.UnsafeMutableRawPointer, size: Swift.Int, os: Swift.Int) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, u8 srcData: [Swift.UInt8]) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, i16 srcData: [Swift.Int16]) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, u16 srcData: [Swift.UInt16]) @@ -1527,6 +1560,7 @@ extension RangeReplaceableCollection { @objc public func pixelStorei(_ pname: Swift.UInt32, _ param: Swift.UInt32) @objc public func polygonOffset(_ factor: Swift.Float32, _ units: Swift.Float32) @objc public func readPixels(_ x: Swift.Int32, _ y: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, _ pixels: Swift.UnsafeMutableRawPointer) + @objc public func readPixels(_ x: Swift.Int32, _ y: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, _ pixels: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func renderbufferStorage(_ target: Swift.UInt32, _ internalFormat: Swift.UInt32, _ width: Swift.Int32, _ height: Swift.Int32) @objc public func sampleCoverage(_ value: Swift.Float32, _ invert: Swift.Bool) @objc public func scissor(_ x: Swift.Int32, _ y: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32) @@ -1540,6 +1574,7 @@ extension RangeReplaceableCollection { @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, data: Foundation.NSData) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u8 pixels: [Swift.UInt8]) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, pixels: Swift.UnsafeRawPointer, size: Swift.Int) + @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, pixels: Swift.UnsafeRawPointer, size: Swift.Int, offset: Swift.Int) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u16 pixels: [Swift.UInt16]) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u32 pixels: [Swift.UInt32]) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, f32 pixels: [Swift.Float32]) @@ -1554,6 +1589,7 @@ extension RangeReplaceableCollection { @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, data: Foundation.NSData) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u8 pixels: [Swift.UInt8]) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, pixels: Swift.UnsafeMutableRawPointer, size: Swift.Int) + @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, pixels: Swift.UnsafeMutableRawPointer, size: Swift.Int, offset: Swift.Int) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u16 pixels: [Swift.UInt16]) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, f32 pixels: [Swift.Float32]) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, _ pixels: Foundation.NSNull) @@ -1564,23 +1600,34 @@ extension RangeReplaceableCollection { @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, _ pixels: Foundation.NSNull) @objc public func uniform1f(_ location: Swift.Int32, _ v0: Swift.Float32) @objc public func uniform1fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform1fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform1i(_ location: Swift.Int32, _ v0: Swift.Int32) @objc public func uniform1iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform1iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform2f(_ location: Swift.Int32, _ v0: Swift.Float32, _ v1: Swift.Float32) @objc public func uniform2fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform2fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform2i(_ location: Swift.Int32, _ v0: Swift.Int32, _ v1: Swift.Int32) @objc public func uniform2iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform2iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform3f(_ location: Swift.Int32, _ v0: Swift.Float32, _ v1: Swift.Float32, _ v2: Swift.Float32) @objc public func uniform3fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform3fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform3i(_ location: Swift.Int32, _ v0: Swift.Int32, _ v1: Swift.Int32, _ v2: Swift.Int32) @objc public func uniform3iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform3iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform4f(_ location: Swift.Int32, _ v0: Swift.Float32, _ v1: Swift.Float32, _ v2: Swift.Float32, _ v3: Swift.Float32) @objc public func uniform4fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform4fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform4i(_ location: Swift.Int32, _ v0: Swift.Int32, _ v1: Swift.Int32, _ v2: Swift.Int32, _ v3: Swift.Int32) @objc public func uniform4iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform4iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix2fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix2fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix3fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix3fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix4fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix4fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func useProgram(_ program: Swift.UInt32) @objc public func validateProgram(_ program: Swift.UInt32) @objc public func vertexAttrib1f(_ index: Swift.UInt32, _ v0: Swift.Float32) @@ -1588,9 +1635,13 @@ extension RangeReplaceableCollection { @objc public func vertexAttrib3f(_ index: Swift.UInt32, _ v0: Swift.Float32, _ v1: Swift.Float32, _ v2: Swift.Float32) @objc public func vertexAttrib4f(_ index: Swift.UInt32, _ v0: Swift.Float32, _ v1: Swift.Float32, _ v2: Swift.Float32, _ v3: Swift.Float32) @objc public func vertexAttrib1fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer) + @objc public func vertexAttrib1fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func vertexAttrib2fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer) + @objc public func vertexAttrib2fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func vertexAttrib3fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer) + @objc public func vertexAttrib3fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func vertexAttrib4fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer) + @objc public func vertexAttrib4fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func vertexAttribPointer(_ index: Swift.UInt32, _ size: Swift.Int32, _ type: Swift.UInt32, _ normalized: Swift.Bool, _ stride: Swift.Int32, _ offset: Swift.Int) @objc public func viewport(_ x: Swift.Int32, _ y: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32) @objc public var DEPTH_BUFFER_BIT: Swift.UInt32 { diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64.swiftinterface b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64.swiftinterface index 784913ce..9fbf1572 100644 --- a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64.swiftinterface +++ b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64.swiftinterface @@ -378,8 +378,11 @@ extension RangeReplaceableCollection { @objc public func bindVertexArray(_ vertexArray: Swift.UInt32) @objc public func blitFramebuffer(_ srcX0: Swift.Int32, _ srcY0: Swift.Int32, _ srcX1: Swift.Int32, _ srcY1: Swift.Int32, _ dstX0: Swift.Int32, _ dstY0: Swift.Int32, _ dstX1: Swift.Int32, _ dstY1: Swift.Int32, _ mask: Swift.UInt32, _ filter: Swift.UInt32) @objc public func clearBufferfv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer) + @objc public func clearBufferfv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public func clearBufferiv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer) + @objc public func clearBufferiv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public func clearBufferuiv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer) + @objc public func clearBufferuiv(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ values: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public func clearBufferfi(_ buffer: Swift.UInt32, _ drawbuffer: Swift.Int32, _ depth: Swift.Float32, _ stencil: Swift.Int32) @objc public func clientWaitSync(_ sync: OpenGLES.GLsync, _ flags: Swift.UInt32, _ timeout: Swift.UInt64) -> Swift.Int32 @objc public func compressedTexSubImage3D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ zoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ depth: Swift.Int32, _ format: Swift.UInt32, _ imageSize: Swift.Int32, _ offset: Swift.Int32) @@ -414,6 +417,7 @@ extension RangeReplaceableCollection { @objc public func getActiveUniformBlockParameter(_ program: Swift.UInt32, _ uniformBlockIndex: Swift.UInt32, _ pname: Swift.UInt32) -> Any @objc public func getActiveUniforms(_ program: Swift.UInt32, _ uniformIndices: [Swift.UInt32], _ pname: Swift.UInt32) -> Any @objc public func getBufferSubData(_ target: Swift.UInt32, _ srcByteOffset: Swift.Int, _ dstData: Swift.UnsafeMutableRawPointer, size: Swift.Int, _ dstOffset: Swift.Int32, _ length: Swift.Int32) + @objc public func getBufferSubData(_ target: Swift.UInt32, _ srcByteOffset: Swift.Int, _ dstData: Swift.UnsafeMutableRawPointer, size: Swift.Int, _ dstOffset: Swift.Int32, _ length: Swift.Int32, offset: Swift.Int) @objc public func getFragDataLocation(_ program: Swift.UInt32, _ name: Swift.String) -> Swift.Int32 @objc public func getIndexedParameter(_ target: Swift.UInt32, _ index: Swift.UInt32) -> Any @objc public func getInternalformatParameter(_ target: Swift.UInt32, _ internalformat: Swift.UInt32, _ pname: Swift.UInt32) -> Any @@ -490,21 +494,33 @@ extension RangeReplaceableCollection { @objc public func uniform3ui(_ location: Swift.Int32, _ v0: Swift.UInt32, _ v1: Swift.UInt32, _ v2: Swift.UInt32) @objc public func uniform4ui(_ location: Swift.Int32, _ v0: Swift.UInt32, _ v1: Swift.UInt32, _ v2: Swift.UInt32, _ v3: Swift.UInt32) @objc public func uniform1uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniform1uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform2uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniform2uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform3uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniform3uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform4uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniform4uiv(_ location: Swift.Int32, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformBlockBinding(_ program: Swift.UInt32, _ uniformBlockIndex: Swift.UInt32, _ uniformBlockBinding: Swift.UInt32) @objc public func uniformMatrix3x2fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix3x2fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix4x2fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix4x2fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix2x3fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix2x3fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix4x3fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix4x3fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix2x4fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix2x4fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix3x4fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix3x4fv(_ location: Swift.UInt32, _ transpose: Swift.Bool, _ data: Swift.UnsafeRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func vertexAttribDivisor(_ index: Swift.UInt32, _ divisor: Swift.UInt32) @objc public func vertexAttribI4i(_ index: Swift.UInt32, _ v0: Swift.Int32, _ v1: Swift.Int32, _ v2: Swift.Int32, _ v3: Swift.Int32) @objc public func vertexAttribI4ui(_ index: Swift.UInt32, _ v0: Swift.UInt32, _ v1: Swift.UInt32, _ v2: Swift.UInt32, _ v3: Swift.UInt32) @objc public func vertexAttribI4iv(_ index: Swift.UInt32, _ value: Swift.UnsafeRawPointer) + @objc public func vertexAttribI4iv(_ index: Swift.UInt32, _ value: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public func vertexAttribI4uiv(_ index: Swift.UInt32, _ value: Swift.UnsafeRawPointer) + @objc public func vertexAttribI4uiv(_ index: Swift.UInt32, _ value: Swift.UnsafeRawPointer, offset: Swift.Int) @objc public var READ_BUFFER: Swift.UInt32 { @objc get } @@ -1362,11 +1378,26 @@ extension RangeReplaceableCollection { @objc get } @objc public func decode(buffer: Foundation.Data) -> Swift.String + @objc public func decode(buffer: Foundation.Data, offset: Swift.Int) -> Swift.String + @objc public func decode(buffer: Foundation.Data, offset: Swift.Int, length: Swift.Int) -> Swift.String + @objc public func decode(u8 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(u8 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(i8 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(i8 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(u16 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(u16 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(i16 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(i16 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(i32 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(i32 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String + @objc public func decode(u32 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) -> Swift.String + @objc public func decode(u32 buffer: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) -> Swift.String @objc public func decode(bytes: [Swift.UInt8]) -> Swift.String @objc public func decode(i8 bytes: [Swift.Int8]) -> Swift.String @objc public func decode(u16 bytes: [Swift.UInt16]) -> Swift.String @objc public func decode(i16 bytes: [Swift.Int16]) -> Swift.String @objc public func decode(i32 bytes: [Swift.Int32]) -> Swift.String + @objc public func decode(u32 bytes: [Swift.UInt32]) -> Swift.String @objc deinit } @objcMembers @objc(TNSWebGLActiveInfo) public class TNSWebGLActiveInfo : ObjectiveC.NSObject { @@ -1432,6 +1463,7 @@ extension RangeReplaceableCollection { @objc public func bufferData(_ target: Swift.UInt32, srcData: Foundation.NSNull, _ usage: Swift.UInt32) @objc public func bufferData(_ target: Swift.UInt32, i8 srcData: [Swift.Int8], _ usage: Swift.UInt32) @objc public func bufferData(_ target: Swift.UInt32, srcData: Swift.UnsafeMutableRawPointer, size: Swift.Int, _ usage: Swift.UInt32) + @objc public func bufferData(_ target: Swift.UInt32, srcData: Swift.UnsafeMutableRawPointer, size: Swift.Int, _ usage: Swift.UInt32, offset: Swift.Int) @objc public func bufferData(_ target: Swift.UInt32, u8 srcData: [Swift.UInt8], _ usage: Swift.UInt32) @objc public func bufferData(_ target: Swift.UInt32, i16 srcData: [Swift.Int16], _ usage: Swift.UInt32) @objc public func bufferData(_ target: Swift.UInt32, u16 srcData: [Swift.UInt16], _ usage: Swift.UInt32) @@ -1442,6 +1474,7 @@ extension RangeReplaceableCollection { @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, _ srcData: Foundation.NSNull) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, i8 srcData: [Swift.Int8]) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, srcData: Swift.UnsafeMutableRawPointer, size: Swift.Int) + @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, srcData: Swift.UnsafeMutableRawPointer, size: Swift.Int, os: Swift.Int) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, u8 srcData: [Swift.UInt8]) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, i16 srcData: [Swift.Int16]) @objc public func bufferSubData(_ target: Swift.UInt32, _ offset: Swift.Int, u16 srcData: [Swift.UInt16]) @@ -1527,6 +1560,7 @@ extension RangeReplaceableCollection { @objc public func pixelStorei(_ pname: Swift.UInt32, _ param: Swift.UInt32) @objc public func polygonOffset(_ factor: Swift.Float32, _ units: Swift.Float32) @objc public func readPixels(_ x: Swift.Int32, _ y: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, _ pixels: Swift.UnsafeMutableRawPointer) + @objc public func readPixels(_ x: Swift.Int32, _ y: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, _ pixels: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func renderbufferStorage(_ target: Swift.UInt32, _ internalFormat: Swift.UInt32, _ width: Swift.Int32, _ height: Swift.Int32) @objc public func sampleCoverage(_ value: Swift.Float32, _ invert: Swift.Bool) @objc public func scissor(_ x: Swift.Int32, _ y: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32) @@ -1540,6 +1574,7 @@ extension RangeReplaceableCollection { @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, data: Foundation.NSData) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u8 pixels: [Swift.UInt8]) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, pixels: Swift.UnsafeRawPointer, size: Swift.Int) + @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, pixels: Swift.UnsafeRawPointer, size: Swift.Int, offset: Swift.Int) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u16 pixels: [Swift.UInt16]) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u32 pixels: [Swift.UInt32]) @objc public func texImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ internalformat: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ border: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, f32 pixels: [Swift.Float32]) @@ -1554,6 +1589,7 @@ extension RangeReplaceableCollection { @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, data: Foundation.NSData) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u8 pixels: [Swift.UInt8]) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, pixels: Swift.UnsafeMutableRawPointer, size: Swift.Int) + @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, pixels: Swift.UnsafeMutableRawPointer, size: Swift.Int, offset: Swift.Int) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, u16 pixels: [Swift.UInt16]) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, f32 pixels: [Swift.Float32]) @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, _ pixels: Foundation.NSNull) @@ -1564,23 +1600,34 @@ extension RangeReplaceableCollection { @objc public func texSubImage2D(_ target: Swift.UInt32, _ level: Swift.Int32, _ xoffset: Swift.Int32, _ yoffset: Swift.Int32, _ format: Swift.UInt32, _ type: Swift.UInt32, _ pixels: Foundation.NSNull) @objc public func uniform1f(_ location: Swift.Int32, _ v0: Swift.Float32) @objc public func uniform1fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform1fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform1i(_ location: Swift.Int32, _ v0: Swift.Int32) @objc public func uniform1iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform1iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform2f(_ location: Swift.Int32, _ v0: Swift.Float32, _ v1: Swift.Float32) @objc public func uniform2fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform2fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform2i(_ location: Swift.Int32, _ v0: Swift.Int32, _ v1: Swift.Int32) @objc public func uniform2iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform2iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform3f(_ location: Swift.Int32, _ v0: Swift.Float32, _ v1: Swift.Float32, _ v2: Swift.Float32) @objc public func uniform3fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform3fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform3i(_ location: Swift.Int32, _ v0: Swift.Int32, _ v1: Swift.Int32, _ v2: Swift.Int32) @objc public func uniform3iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform3iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform4f(_ location: Swift.Int32, _ v0: Swift.Float32, _ v1: Swift.Float32, _ v2: Swift.Float32, _ v3: Swift.Float32) @objc public func uniform4fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform4fv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniform4i(_ location: Swift.Int32, _ v0: Swift.Int32, _ v1: Swift.Int32, _ v2: Swift.Int32, _ v3: Swift.Int32) @objc public func uniform4iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniform4iv(_ location: Swift.Int32, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix2fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix2fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix3fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix3fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func uniformMatrix4fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int) + @objc public func uniformMatrix4fv(_ location: Swift.Int32, _ transpose: Swift.Bool, _ value: Swift.UnsafeMutableRawPointer, _ size: Swift.Int, offset: Swift.Int) @objc public func useProgram(_ program: Swift.UInt32) @objc public func validateProgram(_ program: Swift.UInt32) @objc public func vertexAttrib1f(_ index: Swift.UInt32, _ v0: Swift.Float32) @@ -1588,9 +1635,13 @@ extension RangeReplaceableCollection { @objc public func vertexAttrib3f(_ index: Swift.UInt32, _ v0: Swift.Float32, _ v1: Swift.Float32, _ v2: Swift.Float32) @objc public func vertexAttrib4f(_ index: Swift.UInt32, _ v0: Swift.Float32, _ v1: Swift.Float32, _ v2: Swift.Float32, _ v3: Swift.Float32) @objc public func vertexAttrib1fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer) + @objc public func vertexAttrib1fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func vertexAttrib2fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer) + @objc public func vertexAttrib2fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func vertexAttrib3fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer) + @objc public func vertexAttrib3fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func vertexAttrib4fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer) + @objc public func vertexAttrib4fv(_ index: Swift.UInt32, _ value: Swift.UnsafeMutableRawPointer, offset: Swift.Int) @objc public func vertexAttribPointer(_ index: Swift.UInt32, _ size: Swift.Int32, _ type: Swift.UInt32, _ normalized: Swift.Bool, _ stride: Swift.Int32, _ offset: Swift.Int) @objc public func viewport(_ x: Swift.Int32, _ y: Swift.Int32, _ width: Swift.Int32, _ height: Swift.Int32) @objc public var DEPTH_BUFFER_BIT: Swift.UInt32 { diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/TNSCanvas.nib b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/TNSCanvas.nib index 96610767..43b150ed 100644 Binary files a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/TNSCanvas.nib and b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/TNSCanvas.nib differ diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources index a36ac52c..cb9d44b6 100644 --- a/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources +++ b/packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/ios-x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources @@ -6,7 +6,7 @@ Headers/CanvasNative-Swift.h - 3HDtqbBA4FBey6rLPuMhApQnwQ0= + JMWeYNrpIfO6pzS2Oc7rsAHS2rA= Headers/CanvasNative.h @@ -18,11 +18,11 @@ Headers/canvas_native.h - JBEHCnVjN1SpLXcOHlPXnZMvFl8= + l02LsGzuUJYjCERKxkX4JxaRm5A= Info.plist - HOEHIwq2Z3tqqCiiakOqXW9Siw0= + xZUhVT/S76IiuyBJD4xRxHMGg0o= Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftdoc @@ -30,11 +30,11 @@ Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface - y3+bGnsZwzVOIxumXiWIHMRmApY= + adE/I5R9zKvcGm+lIttRD5+LsKc= Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftmodule - wbnKZn6k9LN62vW1Zc6YojyDaKw= + kJ41lnYhILnEdsD3yiqF00OvyYM= Modules/CanvasNative.swiftmodule/x86_64.swiftdoc @@ -42,11 +42,11 @@ Modules/CanvasNative.swiftmodule/x86_64.swiftinterface - y3+bGnsZwzVOIxumXiWIHMRmApY= + adE/I5R9zKvcGm+lIttRD5+LsKc= Modules/CanvasNative.swiftmodule/x86_64.swiftmodule - wbnKZn6k9LN62vW1Zc6YojyDaKw= + kJ41lnYhILnEdsD3yiqF00OvyYM= Modules/module.modulemap @@ -54,7 +54,7 @@ TNSCanvas.nib - pJjdL09MQqqeG+XrH+hSY/xdrZA= + +8rMBPhP9t1f1bM4Bm48DbFUFTo= files2 @@ -63,11 +63,11 @@ hash - 3HDtqbBA4FBey6rLPuMhApQnwQ0= + JMWeYNrpIfO6pzS2Oc7rsAHS2rA= hash2 - 1qyYBTgl8YPN0BhSjIiDmOwxSs4f2K3MZnbWTisQwkk= + vvrsjRmfLUu/ck2CkPYIILEur65ieBHd75t7vai+otM= Headers/CanvasNative.h @@ -96,11 +96,11 @@ hash - JBEHCnVjN1SpLXcOHlPXnZMvFl8= + l02LsGzuUJYjCERKxkX4JxaRm5A= hash2 - hlN+nXj0ZkmIhXhI4ITbl3VVvTgLwmPe6nWOwmbuamY= + 0KuwX/WeX2o8zbHzyrzfOZqTpUfR6rM0DzIhy3P7ih8= Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftdoc @@ -118,22 +118,22 @@ hash - y3+bGnsZwzVOIxumXiWIHMRmApY= + adE/I5R9zKvcGm+lIttRD5+LsKc= hash2 - 5xhMuWjN4dTjlz0mCNoj8h6dqRFGyg69tMMPVbAZzUc= + qJqOSnVQEBl44tcRT331cJDy7uWzusKuk/50788JeIo= Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftmodule hash - wbnKZn6k9LN62vW1Zc6YojyDaKw= + kJ41lnYhILnEdsD3yiqF00OvyYM= hash2 - 7j/lof3QLX1GWXWNVabdQr6zboJkEMXzIw8ZmqYfpcQ= + HJYz/wNS9QrR89ojBNhgIoDF7MjLEJH8cn6G7dXt2eE= Modules/CanvasNative.swiftmodule/x86_64.swiftdoc @@ -151,22 +151,22 @@ hash - y3+bGnsZwzVOIxumXiWIHMRmApY= + adE/I5R9zKvcGm+lIttRD5+LsKc= hash2 - 5xhMuWjN4dTjlz0mCNoj8h6dqRFGyg69tMMPVbAZzUc= + qJqOSnVQEBl44tcRT331cJDy7uWzusKuk/50788JeIo= Modules/CanvasNative.swiftmodule/x86_64.swiftmodule hash - wbnKZn6k9LN62vW1Zc6YojyDaKw= + kJ41lnYhILnEdsD3yiqF00OvyYM= hash2 - 7j/lof3QLX1GWXWNVabdQr6zboJkEMXzIw8ZmqYfpcQ= + HJYz/wNS9QrR89ojBNhgIoDF7MjLEJH8cn6G7dXt2eE= Modules/module.modulemap @@ -184,11 +184,11 @@ hash - pJjdL09MQqqeG+XrH+hSY/xdrZA= + +8rMBPhP9t1f1bM4Bm48DbFUFTo= hash2 - faADmLL4+evF5iFymM7Yeg66Do5u7+AWd9Wchnx8d2Q= + CLvnlP0qr9q+wTuSMpnmxyrM6E/9c9f3cUshNZdbIM8= diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Source/TNSTextDecoder.swift b/packages/canvas/src-native/canvas-ios/CanvasNative/Source/TNSTextDecoder.swift index 0192590d..e0fa6a72 100644 --- a/packages/canvas/src-native/canvas-ios/CanvasNative/Source/TNSTextDecoder.swift +++ b/packages/canvas/src-native/canvas-ios/CanvasNative/Source/TNSTextDecoder.swift @@ -9,110 +9,170 @@ import Foundation @objcMembers @objc(TNSTextDecoder) public class TNSTextDecoder: NSObject { - + private var decoder: Int64 = 0 public override init() { super.init() create(encoding: "utf-8") } - + public init(encoding: String){ super.init() create(encoding: encoding) } - + private func create(encoding: String){ let type = (encoding as NSString).utf8String decoder = text_decoder_create(type) } - + public var encoding: String { let raw = text_decoder_get_encoding(decoder) if(raw == nil){ - // Return default utf8 ? - return String() + return "" } let encoding = String(cString: raw!) destroy_string(raw) return encoding } - - public func decode(buffer: Data) -> String{ - var data = [UInt8](buffer) - let raw = text_decoder_decode(decoder, &data, UInt(buffer.count)) + + private func handleRaw(_ raw: UnsafeMutablePointer?) -> String { if(raw == nil){ - return String() + return "" } - let result = String(cString: raw!) - destroy_string(raw) - return result + let data = Data(bytes: raw!.pointee.data, count: Int(raw!.pointee.data_len)) + let result = String(bytes: data, encoding: .utf8) + destroy_u8_array(raw) + return (result ?? "") as String } - - public func decode(bytes: [UInt8]) -> String{ - var data = bytes - let raw = text_decoder_decode(decoder, &data, UInt(bytes.count)) + + + + + private func handleRaw(_ raw: UnsafePointer?) -> String { if(raw == nil){ - return String() + return "" } - let result = String(cString: raw!) + let result = NSString(utf8String: raw!) destroy_string(raw) - return result + return (result ?? "") as String } - - + + + + public func decode(buffer: Data) -> String { + return decode(buffer: buffer, offset: 0) + } + + public func decode(buffer: Data, offset: Int) -> String { + return decode(buffer: buffer, offset: offset, length: buffer.count) + } + + public func decode(buffer: Data, offset: Int, length: Int) -> String { + var data = buffer + let ptr = data.withUnsafeMutableBytes { ptr in + return ptr.baseAddress?.assumingMemoryBound(to: UInt8.self).advanced(by: offset) + } + return handleRaw(text_decoder_decode_bytes(decoder, ptr, UInt(length))) + } + + public func decode(u8 buffer: UnsafeMutableRawPointer, _ size: Int) -> String { + return decode(u8: buffer, size, offset: 0) + } + + public func decode(u8 buffer: UnsafeMutableRawPointer, _ size: Int, offset: Int) -> String { + return handleRaw(text_decoder_decode_bytes(decoder, buffer.assumingMemoryBound(to: UInt8.self).advanced(by: offset), UInt(size))) + } + + + public func decode(i8 buffer: UnsafeMutableRawPointer, _ size: Int) -> String { + return decode(i8: buffer, size, offset: 0) + } + + + public func decode(i8 buffer: UnsafeMutableRawPointer, _ size: Int, offset: Int) -> String { + return handleRaw(text_decoder_decode_bytes(decoder, buffer.assumingMemoryBound(to: UInt8.self).advanced(by: offset), UInt(size))) + } + + + public func decode(u16 buffer: UnsafeMutableRawPointer, _ size: Int) -> String { + return decode(u16: buffer, size, offset: 0) + } + + public func decode(u16 buffer: UnsafeMutableRawPointer, _ size: Int, offset: Int) -> String { + return handleRaw(text_decoder_decode_u16_bytes(decoder, buffer.assumingMemoryBound(to: UInt16.self), UInt(size))) + } + + + public func decode(i16 buffer: UnsafeMutableRawPointer, _ size: Int) -> String { + return decode(i16: buffer, size, offset: 0) + } + + + public func decode(i16 buffer: UnsafeMutableRawPointer, _ size: Int, offset: Int) -> String { + return handleRaw(text_decoder_decode_i16_bytes(decoder, buffer.assumingMemoryBound(to: Int16.self), UInt(size))) + } + + public func decode(i32 buffer: UnsafeMutableRawPointer, _ size: Int) -> String { + return decode(i32: buffer, size, offset: 0) + } + + + public func decode(i32 buffer: UnsafeMutableRawPointer, _ size: Int, offset: Int) -> String { + return handleRaw(text_decoder_decode_i32_bytes(decoder, buffer.assumingMemoryBound(to: Int32.self), UInt(size))) + } + + + public func decode(u32 buffer: UnsafeMutableRawPointer, _ size: Int) -> String { + return decode(u32: buffer, size, offset: 0) + } + + public func decode(u32 buffer: UnsafeMutableRawPointer, _ size: Int, offset: Int) -> String { + return handleRaw(text_decoder_decode_u32_bytes(decoder, buffer.assumingMemoryBound(to: UInt32.self), UInt(size))) + } + + + + public func decode(bytes: [UInt8]) -> String{ + var data = bytes + return handleRaw(text_decoder_decode_bytes(decoder, &data, UInt(bytes.count))) + } + + public func decode(i8 bytes: [Int8]) -> String{ let data = bytes.withUnsafeBytes { (buf) -> UnsafePointer? in return buf.baseAddress?.assumingMemoryBound(to: UInt8.self) } - let raw = text_decoder_decode(decoder, data, UInt(bytes.count)) - if(raw == nil){ - return String() - } - let result = String(cString: raw!) - destroy_string(raw) - return result + return handleRaw(text_decoder_decode_bytes(decoder, data, UInt(bytes.count))) } - - - + + + public func decode(u16 bytes: [UInt16]) -> String { var data = bytes - let raw = text_decoder_decode_u16(decoder, &data, UInt(bytes.count)) - if(raw == nil){ - return String() - } - let result = String(cString: raw!) - destroy_string(raw) - return result + return handleRaw(text_decoder_decode_u16_bytes(decoder, &data, UInt(bytes.count))) } - - + + public func decode(i16 bytes: [Int16]) -> String{ var data = bytes - let raw = text_decoder_decode_i16(decoder, &data, UInt(bytes.count)) - if(raw == nil){ - return String() - } - let result = String(cString: raw!) - destroy_string(raw) - return result + return handleRaw(text_decoder_decode_i16_bytes(decoder, &data, UInt(bytes.count))) } - - - + + + public func decode(i32 bytes: [Int32]) -> String{ - let data = bytes - let raw = text_decoder_decode_i32(decoder, data, UInt(bytes.count)) - if(raw == nil){ - return String() - } - let result = String(cString: raw!) - destroy_string(raw) - return result + return handleRaw(text_decoder_decode_i32_bytes(decoder, bytes, UInt(bytes.count))) } - + + + public func decode(u32 bytes: [UInt32]) -> String{ + return handleRaw(text_decoder_decode_u32_bytes(decoder, bytes, UInt(bytes.count))) + } + + deinit { destroy_text_decoder(decoder) } - + } diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Source/TNSWebGL2RenderingContext.swift b/packages/canvas/src-native/canvas-ios/CanvasNative/Source/TNSWebGL2RenderingContext.swift index c5e6e7b4..0611698c 100644 --- a/packages/canvas/src-native/canvas-ios/CanvasNative/Source/TNSWebGL2RenderingContext.swift +++ b/packages/canvas/src-native/canvas-ios/CanvasNative/Source/TNSWebGL2RenderingContext.swift @@ -64,18 +64,33 @@ public class TNSWebGL2RenderingContext: TNSWebGLRenderingContext { } public func clearBufferfv(_ buffer: UInt32,_ drawbuffer: Int32,_ values: UnsafeRawPointer){ + clearBufferfv(buffer, drawbuffer, values, offset: 0) + } + + + public func clearBufferfv(_ buffer: UInt32,_ drawbuffer: Int32,_ values: UnsafeRawPointer, offset: Int){ let _ = canvas.renderer.ensureIsContextIsCurrent() - glClearBufferfv(buffer, drawbuffer,values.assumingMemoryBound(to: GLfloat.self)) + glClearBufferfv(buffer, drawbuffer,values.assumingMemoryBound(to: GLfloat.self).advanced(by: offset)) } + public func clearBufferiv(_ buffer: UInt32, _ drawbuffer: Int32, _ values: UnsafeRawPointer){ + clearBufferiv(buffer, drawbuffer, values, offset: 0) + } + + public func clearBufferiv(_ buffer: UInt32, _ drawbuffer: Int32, _ values: UnsafeRawPointer, offset: Int){ let _ = canvas.renderer.ensureIsContextIsCurrent() - glClearBufferiv(buffer, drawbuffer, values.assumingMemoryBound(to: GLint.self)) + glClearBufferiv(buffer, drawbuffer, values.assumingMemoryBound(to: GLint.self).advanced(by: offset)) } + public func clearBufferuiv(_ buffer: UInt32, _ drawbuffer: Int32,_ values: UnsafeRawPointer){ + clearBufferuiv(buffer, drawbuffer, values, offset: 0) + } + + public func clearBufferuiv(_ buffer: UInt32, _ drawbuffer: Int32,_ values: UnsafeRawPointer, offset: Int){ let _ = canvas.renderer.ensureIsContextIsCurrent() - glClearBufferuiv(buffer, drawbuffer, values.assumingMemoryBound(to: GLuint.self)) + glClearBufferuiv(buffer, drawbuffer, values.assumingMemoryBound(to: GLuint.self).advanced(by: offset)) } public func clearBufferfi(_ buffer: UInt32,_ drawbuffer: Int32,_ depth: Float32,_ stencil: Int32){ @@ -328,11 +343,11 @@ public class TNSWebGL2RenderingContext: TNSWebGLRenderingContext { } public func drawBuffers(_ buffers: [UInt32]){ - let _ = canvas.renderer.ensureIsContextIsCurrent() - var bufs = buffers - glDrawBuffers(GLsizei(bufs.count), &bufs) - } - + let _ = canvas.renderer.ensureIsContextIsCurrent() + var bufs = buffers + glDrawBuffers(GLsizei(bufs.count), &bufs) + } + public func endQuery(_ target: UInt32){ let _ = canvas.renderer.ensureIsContextIsCurrent() @@ -441,11 +456,16 @@ public class TNSWebGL2RenderingContext: TNSWebGLRenderingContext { public func getBufferSubData(_ target: UInt32,_ srcByteOffset: Int, _ dstData: UnsafeMutableRawPointer, size: Int ,_ dstOffset: Int32,_ length: Int32) { + getBufferSubData(target, srcByteOffset, dstData, size: size, dstOffset, length, offset: 0) + } + + public func getBufferSubData(_ target: UInt32,_ srcByteOffset: Int, _ dstData: UnsafeMutableRawPointer, size: Int ,_ dstOffset: Int32,_ length: Int32, offset: Int) { let _ = canvas.renderer.ensureIsContextIsCurrent() + if(length == 0){ } - + let typeSize = SIZE_OF_BYTE var byteLength = 0 if (length > 0) { @@ -468,7 +488,7 @@ public class TNSWebGL2RenderingContext: TNSWebGLRenderingContext { // var offset = srcByteOffset * SIZE_OF_BYTE - glBufferSubData(target, byteOffset, byteLength, dstData) + glBufferSubData(target, byteOffset, byteLength, dstData.advanced(by: offset)) } @@ -513,28 +533,28 @@ public class TNSWebGL2RenderingContext: TNSWebGLRenderingContext { public func getInternalformatParameter(_ target: UInt32,_ internalformat: UInt32,_ pname: UInt32)-> Any { let _ = canvas.renderer.ensureIsContextIsCurrent() switch (internalformat) { - // Renderbuffer doesn't support unsized internal formats, + // Renderbuffer doesn't support unsized internal formats, // though GL_RGB and GL_RGBA are color-renderable. case RGB, RGBA, // Multisampling is not supported for signed and unsigned integer internal - // formats. - R8UI, - R8I, - R16UI, - R16I, - R32UI, - R32I, - RG8UI, - RG8I, - RG16UI, - RG16I, - RG32UI, - RG32I, - RGBA8UI, - RGBA8I, - RGB10_A2UI, - RGBA16UI,RGBA16I,RGBA32UI,RGBA32I: + // formats. + R8UI, + R8I, + R16UI, + R16I, + R32UI, + R32I, + RG8UI, + RG8I, + RG16UI, + RG16I, + RG32UI, + RG32I, + RGBA8UI, + RGBA8I, + RGB10_A2UI, + RGBA16UI,RGBA16I,RGBA32UI,RGBA32I: return Array(repeating: Int32(), count: 0) case R8,RG8,RG8,RGB565,RGBA8,SRGB8_ALPHA8,RGB5_A1, RGBA4,RGB10_A2,DEPTH_COMPONENT16,DEPTH_COMPONENT24, @@ -876,7 +896,7 @@ public class TNSWebGL2RenderingContext: TNSWebGLRenderingContext { var buff = pixels.withUnsafeMutableBytes {$0.load(as: UInt8.self)} offsetU8By(&buff, srcOffset) if(flipYWebGL){ - GLUtils.flipYInPlace3D(&buff, Int(pixels.count * SIZE_OF_FLOAT), Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height), Int(depth)) + GLUtils.flipYInPlace3D(&buff, Int(pixels.count * SIZE_OF_FLOAT), Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height), Int(depth)) } glTexImage3D(target, level, internalformat, width, height, depth, border,format,type, &buff) } @@ -888,7 +908,7 @@ public class TNSWebGL2RenderingContext: TNSWebGLRenderingContext { var buff = pixels.withUnsafeMutableBytes {$0.load(as: UInt8.self)} offsetU8By(&buff, srcOffset) if(flipYWebGL){ - GLUtils.flipYInPlace3D(&buff, Int(pixels.count * SIZE_OF_DOUBLE), Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height), Int(depth)) + GLUtils.flipYInPlace3D(&buff, Int(pixels.count * SIZE_OF_DOUBLE), Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height), Int(depth)) } glTexImage3D(target, level, internalformat, width, height, depth, border,format,type,&buff) } @@ -1028,7 +1048,7 @@ public class TNSWebGL2RenderingContext: TNSWebGLRenderingContext { var buf = pixels.withUnsafeMutableBytes{$0.load(as: UInt8.self)} offsetU8By(&buf, srcOffset) if(flipYWebGL){ - GLUtils.flipYInPlace3D(&buf,Int(srcData.count * SIZE_OF_SHORT), Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height), Int(depth)) + GLUtils.flipYInPlace3D(&buf,Int(srcData.count * SIZE_OF_SHORT), Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height), Int(depth)) } glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels) } @@ -1050,7 +1070,7 @@ public class TNSWebGL2RenderingContext: TNSWebGLRenderingContext { var buf = pixels.withUnsafeMutableBytes{$0.load(as: UInt8.self)} offsetU8By(&buf, srcOffset) if(flipYWebGL){ - GLUtils.flipYInPlace3D(&buf,Int(srcData.count * SIZE_OF_INT), Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height), Int(depth)) + GLUtils.flipYInPlace3D(&buf,Int(srcData.count * SIZE_OF_INT), Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height), Int(depth)) } glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels) } @@ -1084,7 +1104,7 @@ public class TNSWebGL2RenderingContext: TNSWebGLRenderingContext { _ = Int(srcData.size.height) if(flipYWebGL){ - GLUtils.flipYInPlace3D(buffer?.assumingMemoryBound(to: UInt8.self),size, Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height), Int(depth)) + GLUtils.flipYInPlace3D(buffer?.assumingMemoryBound(to: UInt8.self),size, Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height), Int(depth)) } glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, buffer) buffer?.deallocate() @@ -1140,54 +1160,106 @@ public class TNSWebGL2RenderingContext: TNSWebGLRenderingContext { } public func uniform1uiv(_ location: Int32,_ data: UnsafeRawPointer,_ size: Int){ + uniform1uiv(location, data, size, offset: 0) + } + + public func uniform1uiv(_ location: Int32,_ data: UnsafeRawPointer,_ size: Int, offset: Int){ let _ = canvas.renderer.ensureIsContextIsCurrent() - glUniform1uiv(location, GLsizei(size/1), data.assumingMemoryBound(to: UInt32.self)) + glUniform1uiv(location, GLsizei(size/1), data.assumingMemoryBound(to: UInt32.self).advanced(by: offset)) } public func uniform2uiv(_ location: Int32,_ data: UnsafeRawPointer,_ size: Int){ + uniform2uiv(location, data, size, offset: 0) + } + + public func uniform2uiv(_ location: Int32,_ data: UnsafeRawPointer,_ size: Int, offset: Int){ let _ = canvas.renderer.ensureIsContextIsCurrent() - glUniform2uiv(location, GLsizei(size/2), data.assumingMemoryBound(to: UInt32.self)) + glUniform2uiv(location, GLsizei(size/2), data.assumingMemoryBound(to: UInt32.self).advanced(by: offset)) } + + public func uniform3uiv(_ location: Int32, _ data: UnsafeRawPointer,_ size: Int){ + uniform3uiv(location, data, size, offset: 0) + } + + + public func uniform3uiv(_ location: Int32, _ data: UnsafeRawPointer,_ size: Int, offset: Int){ let _ = canvas.renderer.ensureIsContextIsCurrent() - glUniform3uiv(location, GLsizei(size / 3), data.assumingMemoryBound(to: UInt32.self)) + glUniform3uiv(location, GLsizei(size / 3), data.assumingMemoryBound(to: UInt32.self).advanced(by: offset)) } public func uniform4uiv(_ location: Int32,_ data: UnsafeRawPointer,_ size: Int){ + uniform4uiv(location, data, size, offset: 0) + } + + public func uniform4uiv(_ location: Int32,_ data: UnsafeRawPointer,_ size: Int, offset: Int){ let _ = canvas.renderer.ensureIsContextIsCurrent() - glUniform4uiv(location, GLsizei(size / 4), data.assumingMemoryBound(to: UInt32.self)) + glUniform4uiv(location, GLsizei(size / 4), data.assumingMemoryBound(to: UInt32.self).advanced(by: offset)) } public func uniformBlockBinding(_ program: UInt32,_ uniformBlockIndex: UInt32,_ uniformBlockBinding: UInt32){ let _ = canvas.renderer.ensureIsContextIsCurrent() glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding) } + + public func uniformMatrix3x2fv(_ location: UInt32,_ transpose: Bool,_ data: UnsafeRawPointer,_ size: Int){ + uniformMatrix3x2fv(location, transpose, data, size, offset: 0) + } + + + public func uniformMatrix3x2fv(_ location: UInt32,_ transpose: Bool,_ data: UnsafeRawPointer,_ size: Int, offset: Int){ let _ = canvas.renderer.ensureIsContextIsCurrent() - glUniformMatrix3x2fv(GLint(location), GLsizei(size/6), boolConverter(transpose), data.assumingMemoryBound(to: Float32.self)) + glUniformMatrix3x2fv(GLint(location), GLsizei(size/6), boolConverter(transpose), data.assumingMemoryBound(to: Float32.self).advanced(by: offset)) } + + public func uniformMatrix4x2fv(_ location: UInt32,_ transpose: Bool,_ data: UnsafeRawPointer,_ size: Int){ + uniformMatrix4x2fv(location, transpose, data, size, offset: 0) + } + + public func uniformMatrix4x2fv(_ location: UInt32,_ transpose: Bool,_ data: UnsafeRawPointer,_ size: Int, offset: Int){ let _ = canvas.renderer.ensureIsContextIsCurrent() - glUniformMatrix4x2fv(GLint(location), GLsizei(size/8), boolConverter(transpose), data.assumingMemoryBound(to: Float32.self)) + glUniformMatrix4x2fv(GLint(location), GLsizei(size/8), boolConverter(transpose), data.assumingMemoryBound(to: Float32.self).advanced(by: offset)) } + public func uniformMatrix2x3fv(_ location: UInt32,_ transpose: Bool,_ data: UnsafeRawPointer,_ size: Int){ + uniformMatrix2x3fv(location, transpose, data, size, offset: 0) + } + + public func uniformMatrix2x3fv(_ location: UInt32,_ transpose: Bool,_ data: UnsafeRawPointer,_ size: Int, offset: Int){ let _ = canvas.renderer.ensureIsContextIsCurrent() - glUniformMatrix2x3fv(GLint(location), GLsizei(size/6), boolConverter(transpose), data.assumingMemoryBound(to: Float32.self)) + glUniformMatrix2x3fv(GLint(location), GLsizei(size/6), boolConverter(transpose), data.assumingMemoryBound(to: Float32.self).advanced(by: offset)) } + + public func uniformMatrix4x3fv(_ location: UInt32,_ transpose: Bool,_ data: UnsafeRawPointer,_ size: Int){ + uniformMatrix4x3fv(location, transpose, data, size, offset: 0) + } + + public func uniformMatrix4x3fv(_ location: UInt32,_ transpose: Bool,_ data: UnsafeRawPointer,_ size: Int, offset: Int){ let _ = canvas.renderer.ensureIsContextIsCurrent() - glUniformMatrix4x3fv(GLint(location),GLsizei(size/12), boolConverter(transpose), data.assumingMemoryBound(to: Float32.self)) + glUniformMatrix4x3fv(GLint(location),GLsizei(size/12), boolConverter(transpose), data.assumingMemoryBound(to: Float32.self).advanced(by: offset)) } public func uniformMatrix2x4fv(_ location: UInt32,_ transpose: Bool,_ data: UnsafeRawPointer,_ size: Int){ + uniformMatrix2x4fv(location, transpose, data, size, offset: 0) + } + + public func uniformMatrix2x4fv(_ location: UInt32,_ transpose: Bool,_ data: UnsafeRawPointer,_ size: Int, offset: Int){ let _ = canvas.renderer.ensureIsContextIsCurrent() - glUniformMatrix2x4fv(GLint(location), GLsizei(size/8), boolConverter(transpose), data.assumingMemoryBound(to: Float32.self)) + glUniformMatrix2x4fv(GLint(location), GLsizei(size/8), boolConverter(transpose), data.assumingMemoryBound(to: Float32.self).advanced(by: offset)) } + public func uniformMatrix3x4fv(_ location: UInt32,_ transpose: Bool,_ data: UnsafeRawPointer,_ size: Int){ + uniformMatrix3x4fv(location, transpose, data, size, offset: 0) + } + + public func uniformMatrix3x4fv(_ location: UInt32,_ transpose: Bool,_ data: UnsafeRawPointer,_ size: Int, offset: Int){ let _ = canvas.renderer.ensureIsContextIsCurrent() - glUniformMatrix3x4fv(GLint(location), GLsizei(size / 12), boolConverter(transpose), data.assumingMemoryBound(to: Float32.self)) + glUniformMatrix3x4fv(GLint(location), GLsizei(size / 12), boolConverter(transpose), data.assumingMemoryBound(to: Float32.self).advanced(by: offset)) } public func vertexAttribDivisor(_ index: UInt32,_ divisor: UInt32){ let _ = canvas.renderer.ensureIsContextIsCurrent() @@ -1203,14 +1275,24 @@ public class TNSWebGL2RenderingContext: TNSWebGLRenderingContext { glVertexAttribI4ui(index, v0, v1, v2, v3) } + public func vertexAttribI4iv(_ index: UInt32,_ value: UnsafeRawPointer){ + vertexAttribI4iv(index, value, offset: 0) + } + + public func vertexAttribI4iv(_ index: UInt32,_ value: UnsafeRawPointer, offset: Int){ let _ = canvas.renderer.ensureIsContextIsCurrent() - glVertexAttribI4iv(index, value.assumingMemoryBound(to: Int32.self)) + glVertexAttribI4iv(index, value.assumingMemoryBound(to: Int32.self).advanced(by: offset)) } + public func vertexAttribI4uiv(_ index: UInt32,_ value: UnsafeRawPointer){ + vertexAttribI4uiv(index, value, offset: 0) + } + + public func vertexAttribI4uiv(_ index: UInt32,_ value: UnsafeRawPointer, offset: Int){ let _ = canvas.renderer.ensureIsContextIsCurrent() - glVertexAttribI4uiv(index, value.assumingMemoryBound(to: UInt32.self)) + glVertexAttribI4uiv(index, value.assumingMemoryBound(to: UInt32.self).advanced(by: offset)) } /* Getting GL parameter information */ diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/Source/TNSWebGLRenderingContext.swift b/packages/canvas/src-native/canvas-ios/CanvasNative/Source/TNSWebGLRenderingContext.swift index 1aa00d15..a5d79938 100644 --- a/packages/canvas/src-native/canvas-ios/CanvasNative/Source/TNSWebGLRenderingContext.swift +++ b/packages/canvas/src-native/canvas-ios/CanvasNative/Source/TNSWebGLRenderingContext.swift @@ -16,7 +16,7 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { var SIZE_OF_FLOAT = MemoryLayout.size var SIZE_OF_INT = MemoryLayout.size var SIZE_OF_DOUBLE = MemoryLayout.size - + private var alpha: Bool = true private var antialias: Bool = false private var depth:Bool = true @@ -29,14 +29,14 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { var flipYWebGL: Bool = false var premultiplyAlphaWebGL: Bool = false var colorSpaceConversionWebGL: UInt32 = 0 - + var canvas: TNSCanvas public init(_ canvas: TNSCanvas) { self.canvas = canvas super.init() canvas.renderer.ensureIsContextIsCurrent() } - + public init(_ canvas: TNSCanvas,_ attrs: [String: Any]) { self.canvas = canvas super.init() @@ -62,18 +62,18 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { case "stencil": case "desynchronized": default: - + } } */ } - + public func getCanvas() -> TNSCanvas { return canvas } - - - + + + let _GL_UNSIGNED_BYTE: UInt32 = 0x1401; let _GL_FLOAT: UInt32 = 0x1406; let _GL_HALF_FLOAT: UInt32 = 0x140B; @@ -85,25 +85,25 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { let _GL_LUMINANCE_ALPHA: UInt32 = 0x190A; let _GL_RGB: UInt32 = 0x1907; let _GL_RGBA: UInt32 = 0x1908; - + func bytes_per_pixel(pixel_type: UInt32, format: UInt32) -> Int32 { var bytes_per_component: Int32 = 0 switch pixel_type { case _GL_UNSIGNED_BYTE: - bytes_per_component = 1 - break + bytes_per_component = 1 + break case _GL_FLOAT: - bytes_per_component = 4 - break + bytes_per_component = 4 + break case _GL_HALF_FLOAT: - bytes_per_component = 2 + bytes_per_component = 2 break case _GL_UNSIGNED_SHORT_5_6_5, _GL_UNSIGNED_SHORT_4_4_4_4 , _GL_UNSIGNED_SHORT_5_5_5_1: return 2 default: break } - + switch format { case _GL_LUMINANCE , _GL_ALPHA: return 1 * bytes_per_component @@ -118,41 +118,41 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } return 0 } - - + + public var drawingBufferWidth: Int32 { get { return Int32(canvas.renderer.drawingBufferWidth) } } - + public var drawingBufferHeight: Int32 { get{ return Int32(canvas.renderer.drawingBufferHeight) } } - + public func activeTexture(_ texture: UInt32){ canvas.renderer.ensureIsContextIsCurrent() glActiveTexture(texture) } - + public func attachShader(_ program: UInt32, _ shader: UInt32){ canvas.renderer.ensureIsContextIsCurrent() glAttachShader(program, shader) } - + public func bindAttribLocation(_ program: UInt32, _ index: UInt32, _ name: String){ canvas.renderer.ensureIsContextIsCurrent() let bindName = (name as NSString).utf8String glBindAttribLocation(program, index, bindName) } - + public func bindBuffer(_ target: UInt32, _ buffer: UInt32){ canvas.renderer.ensureIsContextIsCurrent() glBindBuffer(target, buffer) } - + public func bindFramebuffer(_ target: UInt32,_ framebuffer: UInt32){ canvas.renderer.ensureIsContextIsCurrent() if(framebuffer == 0 && target == GL_FRAMEBUFFER){ @@ -161,7 +161,7 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } glBindFramebuffer(target, framebuffer) } - + public func bindRenderbuffer(_ target: UInt32, _ renderbuffer: UInt32){ canvas.renderer.ensureIsContextIsCurrent() if(renderbuffer == 0 && target == GL_RENDERER){ @@ -170,48 +170,48 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } glBindRenderbuffer(target, renderbuffer) } - + public func bindTexture(_ target: UInt32,_ texture: UInt32) { canvas.renderer.ensureIsContextIsCurrent() glBindTexture(target, texture) } - + public func blendColor(_ red: Float32,_ green: Float32,_ blue: Float32,_ alpha: Float32) { canvas.renderer.ensureIsContextIsCurrent() glBlendColor(red, green, blue, alpha) } - + public func blendEquation(_ mode: UInt32){ canvas.renderer.ensureIsContextIsCurrent() glBlendEquation(mode) } - + public func blendEquationSeparate(_ modeRGB: UInt32,_ modeAlpha: UInt32){ canvas.renderer.ensureIsContextIsCurrent() glBlendEquationSeparate(modeRGB, modeAlpha) } - + public func blendFunc(_ sfactor: UInt32,_ dfactor: UInt32){ canvas.renderer.ensureIsContextIsCurrent() glBlendFunc(sfactor, dfactor) } - + public func blendFuncSeparate(_ srcRGB: UInt32,_ dstRGB: UInt32,_ srcAlpha: UInt32,_ dstAlpha: UInt32){ canvas.renderer.ensureIsContextIsCurrent() glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha) } - - + + public func bufferData(_ target: UInt32, size: Int,_ usage: UInt32){ canvas.renderer.ensureIsContextIsCurrent() glBufferData(target, size, nil, usage) } - + public func bufferData(_ target: UInt32, srcData: NSNull,_ usage: UInt32){ canvas.renderer.ensureIsContextIsCurrent() glBufferData(target, 0, nil, usage) } - + public func bufferData(_ target: UInt32, i8 srcData: [Int8], _ usage: UInt32){ canvas.renderer.ensureIsContextIsCurrent() var buffer = srcData @@ -219,14 +219,17 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } - public func bufferData(_ target: UInt32, srcData: UnsafeMutableRawPointer, size: Int, _ usage: UInt32){ + bufferData(target, srcData: srcData, size: size, usage, offset: 0) + } + + public func bufferData(_ target: UInt32, srcData: UnsafeMutableRawPointer, size: Int, _ usage: UInt32, offset: Int){ canvas.renderer.ensureIsContextIsCurrent() - glBufferData(target, size , srcData, usage) + glBufferData(target, size , srcData.advanced(by: offset), usage) } - - + + public func bufferData(_ target: UInt32, u8 srcData: [UInt8], _ usage: UInt32){ canvas.renderer.ensureIsContextIsCurrent() var buffer = srcData @@ -234,52 +237,52 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } - + public func bufferData(_ target: UInt32, i16 srcData: [Int16], _ usage: UInt32){ canvas.renderer.ensureIsContextIsCurrent() var buffer = srcData glBufferData(target, buffer.count * SIZE_OF_SHORT, &buffer, usage) } - + public func bufferData(_ target: UInt32, u16 srcData: [UInt16], _ usage: UInt32){ canvas.renderer.ensureIsContextIsCurrent() var buffer = srcData glBufferData(target, buffer.count * SIZE_OF_SHORT, &buffer, usage) } - - + + public func bufferData(_ target: UInt32, i32 srcData: [Int32], _ usage: UInt32){ canvas.renderer.ensureIsContextIsCurrent() var buffer = srcData glBufferData(target, buffer.count * SIZE_OF_INT, &buffer, usage) } - + public func bufferData(_ target: UInt32, u32 srcData: [UInt32], _ usage: UInt32){ canvas.renderer.ensureIsContextIsCurrent() var buffer = srcData glBufferData(target, buffer.count * SIZE_OF_INT, &buffer, usage) } - - + + public func bufferData(_ target: UInt32, f32 srcData: [Float32], _ usage: UInt32){ canvas.renderer.ensureIsContextIsCurrent() var buffer = srcData glBufferData(target, buffer.count * SIZE_OF_FLOAT, &buffer, usage) } - + public func bufferData(_ target: UInt32, f64 srcData: [Float64], _ usage: UInt32){ canvas.renderer.ensureIsContextIsCurrent() var buffer = srcData glBufferData(target, buffer.count * SIZE_OF_DOUBLE, &buffer, usage) } - - + + public func bufferSubData(_ target: UInt32,_ offset: Int,_ srcData: NSNull){ canvas.renderer.ensureIsContextIsCurrent() glBufferSubData(target, offset, 0, nil) } - - + + public func bufferSubData(_ target: UInt32,_ offset: Int,i8 srcData: [Int8]){ canvas.renderer.ensureIsContextIsCurrent() var buffer = srcData @@ -287,71 +290,74 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } - public func bufferSubData(_ target: UInt32,_ offset: Int, srcData: UnsafeMutableRawPointer, size: Int){ + bufferSubData(target, offset, srcData: srcData, size: size, os: 0) + } + + public func bufferSubData(_ target: UInt32,_ offset: Int, srcData: UnsafeMutableRawPointer, size: Int, os: Int){ canvas.renderer.ensureIsContextIsCurrent() - glBufferSubData(target, offset, size, srcData) + glBufferSubData(target, offset, size, srcData.advanced(by: os)) } - + public func bufferSubData(_ target: UInt32,_ offset: Int,u8 srcData: [UInt8]){ canvas.renderer.ensureIsContextIsCurrent() var buffer = srcData glBufferSubData(target, offset, buffer.count, &buffer) } - - + + public func bufferSubData(_ target: UInt32,_ offset: Int,i16 srcData: [Int16]){ canvas.renderer.ensureIsContextIsCurrent() var buffer = srcData glBufferSubData(target, offset, buffer.count * SIZE_OF_SHORT, &buffer) } - + public func bufferSubData(_ target: UInt32,_ offset: Int,u16 srcData: [UInt16]){ canvas.renderer.ensureIsContextIsCurrent() var buffer = srcData glBufferSubData(target, offset, buffer.count * SIZE_OF_SHORT, &buffer) } - + public func bufferSubData(_ target: UInt32,_ offset: Int,i32 srcData: [Int32]){ canvas.renderer.ensureIsContextIsCurrent() var buffer = srcData glBufferSubData(target, offset, buffer.count * SIZE_OF_INT, &buffer) } - + public func bufferSubData(_ target: UInt32,_ offset: Int,u32 srcData: [UInt32]){ canvas.renderer.ensureIsContextIsCurrent() var buffer = srcData glBufferSubData(target, offset, buffer.count * SIZE_OF_INT, &buffer) } - + public func bufferSubData(_ target: UInt32,_ offset: Int,f32 srcData: [Float32]){ canvas.renderer.ensureIsContextIsCurrent() var buffer = srcData glBufferSubData(target, offset, buffer.count * SIZE_OF_FLOAT, &buffer) } - + public func bufferSubData(_ target: UInt32,_ offset: Int,f64 srcData: [Float64]){ canvas.renderer.ensureIsContextIsCurrent() var buffer = srcData glBufferSubData(target, offset, buffer.count * SIZE_OF_DOUBLE, &buffer) } - - + + public func checkFramebufferStatus(_ target: UInt32) -> UInt32 { canvas.renderer.ensureIsContextIsCurrent() return glCheckFramebufferStatus(target) } - + public func clear(_ mask: UInt32){ canvas.renderer.ensureIsContextIsCurrent() - if(clearIfComposited(mask) != .CombinedClear){ + if(clearIfComposited(mask) != .CombinedClear){ glClear(mask) } - canvas.doDraw() + canvas.doDraw() } - + public func clearColor(_ red: Float32,_ green: Float32,_ blue: Float32,_ alpha: Float32){ canvas.renderer.ensureIsContextIsCurrent() canvas.mClearColor[0] = red @@ -360,30 +366,30 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { canvas.mClearColor[3] = alpha glClearColor(red, green, blue,canvas.contextAlpha ? alpha : 1) } - + public func clearDepth(_ depth: Float32){ canvas.renderer.ensureIsContextIsCurrent() canvas.mClearDepth = depth glClearDepthf(depth) } - + public func clearStencil(_ stencil: Int32){ canvas.renderer.ensureIsContextIsCurrent() canvas.mClearStencil = stencil glClearStencil(stencil) } - + func boolConverter(_ value: Bool) -> UInt8 { if(value){ return UInt8(GL_TRUE) } return UInt8(GL_FALSE) } - + func toBool(value: Int32) -> Bool { return value == GL_TRUE } - + public func colorMask(_ red: Bool, _ green: Bool, _ blue: Bool, _ alpha: Bool){ canvas.renderer.ensureIsContextIsCurrent() canvas.mColorMask[0] = red @@ -392,7 +398,7 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { canvas.mColorMask[3] = alpha glColorMask(boolConverter(red), boolConverter(green), boolConverter(blue), boolConverter(alpha)) } - + func reset(){ glDisable(GLenum(GL_SCISSOR_TEST)) glClearColor(0, 0, 0, canvas.contextAlpha ? 0 : 1) @@ -409,9 +415,9 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { glStencilMaskSeparate(GLenum(GL_FRONT), 0xFFFFFFFF) } } - - - + + + func restoreStateAfterClear() { // Restore the state that the context set. @@ -426,7 +432,7 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { glStencilMaskSeparate(GLenum(GL_FRONT), canvas.mStencilMask) glDepthMask(boolConverter(canvas.mDepthMask)) } - + @discardableResult func clearIfComposited(_ mask: GLbitfield = 0) -> HowToClear { let combinedClear = (mask > 0) && !canvas.mScissorEnabled let m = (mask & UInt32(GL_COLOR_BUFFER_BIT)) @@ -440,8 +446,8 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } else { glClearColor(0, 0, 0, canvas.contextAlpha ? 0 : 1) } - - + + glColorMask(GLboolean(GL_TRUE),GLboolean(GL_TRUE),GLboolean(GL_TRUE),GLboolean(GL_TRUE)) var clearMask = GL_COLOR_BUFFER_BIT if (canvas.contextDepth) { @@ -463,108 +469,108 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { glClear(GLbitfield(mask)) restoreStateAfterClear() return combinedClear ? .CombinedClear : .JustClear - + } - + public func commit(){ // NOOP } - + public func compileShader(_ shader: UInt32){ canvas.renderer.ensureIsContextIsCurrent() glCompileShader(shader) } - - + + public func compressedTexImage2D(_ target: UInt32,_ level: Int32,_ internalformat: UInt32,_ width: Int32,_ height: Int32,_ border: Int32, _ pixels: Data?){ canvas.renderer.ensureIsContextIsCurrent() var data = pixels glCompressedTexImage2D(target, level, internalformat, width, height, border, GLsizei(pixels?.count ?? 0), &data) } - - + + public func compressedTexSubImage2D(_ target: UInt32,_ level: Int32,_ xoffset: Int32,_ yoffset: Int32,_ width: Int32, _ height: Int32, _ format: UInt32, _ pixels: Data?){ canvas.renderer.ensureIsContextIsCurrent() var data = pixels glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, GLsizei(data?.count ?? 0), &data) } - - - + + + public func copyTexImage2D(_ target: UInt32,_ level: Int32,_ internalformat: UInt32, _ x: Int32,_ y: Int32,_ width: Int32,_ height: Int32,_ border: Int32) { canvas.renderer.ensureIsContextIsCurrent() clearIfComposited() glCopyTexImage2D(target, level, internalformat, x, y, width, height, border) } - - + + public func copyTexSubImage2D(_ target: UInt32, _ level: Int32,_ xoffset: Int32,_ yoffset: Int32,_ x: Int32,_ y: Int32,_ width: Int32, _ height: Int32){ canvas.renderer.ensureIsContextIsCurrent() clearIfComposited() glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height) } - + public func createBuffer() -> UInt32 { canvas.renderer.ensureIsContextIsCurrent() var bufferId = GLuint() glGenBuffers(1, &bufferId) return bufferId } - + public func createFramebuffer() -> UInt32 { canvas.renderer.ensureIsContextIsCurrent() var frameBufferId = GLuint() glGenFramebuffers(1, &frameBufferId) return frameBufferId } - + public func createProgram() -> UInt32 { canvas.renderer.ensureIsContextIsCurrent() return glCreateProgram() } - + public func createRenderbuffer() -> UInt32 { canvas.renderer.ensureIsContextIsCurrent() var renderBufferId = GLuint() glGenRenderbuffers(1, &renderBufferId) return renderBufferId } - - + + public func createShader(_ type: UInt32) -> UInt32{ canvas.renderer.ensureIsContextIsCurrent() return glCreateShader(type) } - + public func createTexture() -> UInt32 { canvas.renderer.ensureIsContextIsCurrent() var textureId = GLuint() glGenTextures(1, &textureId) return textureId } - + public func cullFace(_ mode: UInt32){ canvas.renderer.ensureIsContextIsCurrent() glCullFace(mode) } - + public func deleteBuffer(_ buffer: UInt32){ canvas.renderer.ensureIsContextIsCurrent() var id = buffer glDeleteBuffers(1, &id) } - + public func deleteFramebuffer(_ frameBuffer: UInt32){ canvas.renderer.ensureIsContextIsCurrent() var id = frameBuffer glDeleteFramebuffers(1, &id) } - + public func deleteProgram(_ program: UInt32){ canvas.renderer.ensureIsContextIsCurrent() glDeleteProgram(program) } - + public func deleteRenderbuffer(_ renderbuffer: UInt32){ canvas.renderer.ensureIsContextIsCurrent() var id = renderbuffer @@ -609,15 +615,15 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { glDrawArrays(mode, first, count) canvas.doDraw() } - + func BUFFER_OFFSET(n: Int) -> UnsafeRawPointer? { return UnsafeRawPointer(bitPattern: n) } - + func BUFFER_OFFSET_MUTABLE(n: Int) -> UnsafeMutableRawPointer? { return UnsafeMutableRawPointer(bitPattern: n) } - + public func drawElements(_ mode: UInt32,_ count: Int32,_ type: UInt32,_ offset: Int) { canvas.renderer.ensureIsContextIsCurrent() let ptr = BUFFER_OFFSET(n: offset) @@ -625,58 +631,58 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { glDrawElements(mode, count, type, ptr) canvas.doDraw() } - + public func enable(_ cap: UInt32) { canvas.renderer.ensureIsContextIsCurrent() glEnable(cap) } - + public func enableVertexAttribArray(_ index: UInt32) { canvas.renderer.ensureIsContextIsCurrent() glEnableVertexAttribArray(index) } - + public func finish(){ canvas.renderer.ensureIsContextIsCurrent() glFinish() } - + public func flush(){ canvas.renderer.ensureIsContextIsCurrent() glFlush() } - - + + public func framebufferRenderbuffer(_ target: UInt32,_ attachment: UInt32,_ renderbuffertarget: UInt32,_ renderbuffer: UInt32) { canvas.renderer.ensureIsContextIsCurrent() /*if(attachment == GL_DEPTH_ATTACHMENT){ if let renderer = canvas.renderer as? GLRenderer { glFramebufferRenderbuffer(GLenum(target), GLenum(GL_DEPTH_ATTACHMENT), GLenum(renderbuffertarget),renderer.displayRenderbuffer) - + glFramebufferRenderbuffer(GLenum(target), GLenum(GL_DEPTH_ATTACHMENT), GLenum(renderbuffertarget), renderbuffer) - + glFramebufferRenderbuffer(GLenum(target), GLenum(GL_STENCIL_ATTACHMENT), GLenum(renderbuffertarget), renderer.displayRenderbuffer) } }else if(attachment == GL_STENCIL_ATTACHMENT){ if let renderer = canvas.renderer as? GLRenderer { glFramebufferRenderbuffer(GLenum(target), GLenum(GL_DEPTH_STENCIL_ATTACHMENT), GLenum(GL_RENDERBUFFER),renderer.displayRenderbuffer) - + glFramebufferRenderbuffer(GLenum(target), GLenum(GL_DEPTH_ATTACHMENT), GLenum(GL_RENDERBUFFER), renderer.displayRenderbuffer) - - + + glFramebufferRenderbuffer(GLenum(target), GLenum(GL_STENCIL_ATTACHMENT), GLenum(GL_RENDERBUFFER), renderbuffer) - + } }else if(attachment == GL_DEPTH_STENCIL_ATTACHMENT){ if let renderer = canvas.renderer as? GLRenderer { glFramebufferRenderbuffer(GLenum(target), GLenum(GL_DEPTH_ATTACHMENT), GLenum(GL_RENDERBUFFER),renderer.displayRenderbuffer) - - + + glFramebufferRenderbuffer(GLenum(target), GLenum(GL_STENCIL_ATTACHMENT), GLenum(GL_RENDERBUFFER), renderer.displayRenderbuffer) - + glFramebufferRenderbuffer(GLenum(target), GLenum(GL_DEPTH_STENCIL_ATTACHMENT), GLenum(GL_RENDERBUFFER), renderbuffer) - - + + } }else { /* @@ -684,32 +690,32 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { */ if let renderer = canvas.renderer as? GLRenderer { glFramebufferRenderbuffer(GLenum(target), GLenum(GL_DEPTH_STENCIL_ATTACHMENT), GLenum(GL_RENDERBUFFER), renderer.displayRenderbuffer) - + glFramebufferRenderbuffer(GLenum(target), GLenum(GL_DEPTH_ATTACHMENT), GLenum(GL_RENDERBUFFER), renderer.displayRenderbuffer) - + glFramebufferRenderbuffer(GLenum(target), GLenum(GL_STENCIL_ATTACHMENT), GLenum(GL_RENDERBUFFER), renderer.displayRenderbuffer) } } */ - + glFramebufferRenderbuffer(target, attachment, renderbuffertarget,renderbuffer) } - + public func framebufferTexture2D(_ target: UInt32,_ attachment:UInt32,_ textarget: UInt32,_ texture: UInt32,_ level: Int32) { canvas.renderer.ensureIsContextIsCurrent() glFramebufferTexture2D(target, attachment, textarget, texture, level) } - + public func frontFace(_ mode: UInt32) { canvas.renderer.ensureIsContextIsCurrent() glFrontFace(mode) } - + public func generateMipmap(_ target: UInt32) { canvas.renderer.ensureIsContextIsCurrent() glGenerateMipmap(target) } - + public func getActiveAttrib(_ program: UInt32,_ index: UInt32) -> TNSWebGLActiveInfo{ canvas.renderer.ensureIsContextIsCurrent() var length = GLint() @@ -723,8 +729,8 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { name.resize(Int(nameLength), fillWith: 0) return TNSWebGLActiveInfo(name: String(cString: &name), size: size, type: type) } - - + + public func getActiveUniform(_ program: UInt32,_ index: UInt32) -> TNSWebGLActiveInfo{ canvas.renderer.ensureIsContextIsCurrent() var size = GLint() @@ -738,7 +744,7 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { name.resize(Int(nameLength), fillWith: 0) return TNSWebGLActiveInfo(name: String(cString: &name), size: size, type: type) } - + public func getAttachedShaders(_ program: UInt32) -> [UInt32]{ canvas.renderer.ensureIsContextIsCurrent() var count = GLint() @@ -748,21 +754,21 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { glGetAttachedShaders(program, count, nil, &shaders) return shaders } - + public func getAttribLocation(_ program: UInt32,_ name: String) -> Int32 { canvas.renderer.ensureIsContextIsCurrent() let ptr = (name as NSString).cString(using: String.Encoding.utf8.rawValue) return glGetAttribLocation(program, ptr) } - + public func getBufferParameter(_ target: UInt32,_ pname: UInt32) -> Int32 { canvas.renderer.ensureIsContextIsCurrent() var params = GLint() glGetBufferParameteriv(target, pname, ¶ms) return params } - - + + public func getContextAttributes() -> Any { // Return nil if context is lost if(isContextLost()){ @@ -781,19 +787,19 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { "xrCompatible": canvas.contextXrCompatible ] } - + public func getError() -> UInt32 { canvas.renderer.ensureIsContextIsCurrent() return glGetError() } - + private func getRealExtName(name: String) -> String { if(name.starts(with: "WEBGL_")){ return name } return "GL_" + name } - + private func toUpperCase(name: String) -> String { return name.uppercased() } @@ -877,17 +883,17 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { return TNS_OES_texture_half_float_linear() case getRealExtName(name: "OES_depth_texture"): return TNS_WEBGL_depth_texture() - // N/A - //EXT_float_blend - //EXT_frag_depth - //EXT_texture_compression_bptc - //EXT_texture_compression_rgtc - //OVR_multiview2 - //WEBGL_compressed_texture_astc - //WEBGL_compressed_texture_atc - //WEBGL_compressed_texture_s3tc - //WEBGL_compressed_texture_s3tc_srgb - //WEBGL_debug_renderer_info + // N/A + //EXT_float_blend + //EXT_frag_depth + //EXT_texture_compression_bptc + //EXT_texture_compression_rgtc + //OVR_multiview2 + //WEBGL_compressed_texture_astc + //WEBGL_compressed_texture_atc + //WEBGL_compressed_texture_s3tc + //WEBGL_compressed_texture_s3tc_srgb + //WEBGL_debug_renderer_info //EBGL_debug_shaders default: return NSNull() @@ -897,7 +903,7 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } return NSNull() } - + public func getFramebufferAttachmentParameter(_ target: UInt32, _ attachment: UInt32,_ pname: UInt32) -> TNSFramebufferAttachmentParameter { canvas.renderer.ensureIsContextIsCurrent() var params = GLint() @@ -922,12 +928,12 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } return result } - - - func fromGLboolean(value: UInt8) -> Bool{ + + + func fromGLboolean(value: UInt8) -> Bool{ return value == GL_TRUE } - + func fromGLbooleanArray(value: [UInt8]) -> [Bool]{ return value.map { val -> Bool in return val == GL_TRUE @@ -1003,7 +1009,7 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { return nil } } - + public func getProgramInfoLog(_ program: UInt32) -> String { canvas.renderer.ensureIsContextIsCurrent() var length = GLint() @@ -1012,8 +1018,8 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { glGetProgramInfoLog(program, length, nil, &info) return (NSString(cString: &info, encoding: String.Encoding.utf8.rawValue) ?? "") as String } - - + + public func getProgramParameter(_ program: UInt32,_ pname: UInt32) -> Any { canvas.renderer.ensureIsContextIsCurrent() var param = GLint() @@ -1038,15 +1044,15 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { return param } } - - + + public func getRenderbufferParameter(_ target: UInt32, _ pname: UInt32) -> Int32{ canvas.renderer.ensureIsContextIsCurrent() var params = GLint() glGetRenderbufferParameteriv(target, pname, ¶ms) return params } - + public func getShaderInfoLog(_ shader: UInt32) -> String { canvas.renderer.ensureIsContextIsCurrent() var length = GLint() @@ -1055,7 +1061,7 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { glGetShaderInfoLog(shader, length, nil, &info) return (NSString(cString: &info, encoding: String.Encoding.utf8.rawValue) ?? "") as String } - + public func getShaderParameter(_ shader: UInt32,_ pname: UInt32) -> Any { canvas.renderer.ensureIsContextIsCurrent() var params = GLint() @@ -1075,7 +1081,7 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { return params } } - + public func getShaderPrecisionFormat(_ shaderType: UInt32, _ precisionType: UInt32) -> TNSWebGLShaderPrecisionFormat { canvas.renderer.ensureIsContextIsCurrent() var range: [GLint] = Array(repeating: 0, count: 2) @@ -1083,7 +1089,7 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { glGetShaderPrecisionFormat(shaderType, precisionType, &range, &precision) return TNSWebGLShaderPrecisionFormat(rangeMin: range[0], rangeMax: range[1], precision: precision) } - + public func getShaderSource(_ shader: UInt32) -> String { canvas.renderer.ensureIsContextIsCurrent() var length = GLint() @@ -1092,7 +1098,7 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { glGetShaderSource(shader, length, nil, &source) return String(cString: source) } - + public func getSupportedExtensions() -> [String]{ canvas.renderer.ensureIsContextIsCurrent() let extensions = String(cString: glGetString(GLenum(GL_EXTENSIONS))) @@ -1102,7 +1108,7 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { let _ = list.popLast() } } - + list.append("EXT_blend_minmax") list.append("EXT_color_buffer_float") list.append("EXT_color_buffer_half_float") @@ -1122,26 +1128,26 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { list.append("WEBGL_compressed_texture_pvrtc") list.append("WEBGL_depth_texture") list.append("WEBGL_lose_context") - + return list } - - + + public func getTexParameter(_ target: UInt32, _ pname: UInt32) -> Int32{ canvas.renderer.ensureIsContextIsCurrent() var params = GLint() glGetTexParameteriv(target, pname, ¶ms) return params } - + func getFloatSlice(_ count: Int) -> [Float]{ return Array(repeating: 0, count: count) } - + func getIntSlice(_ count: Int) -> [Int32] { return Array(repeating: 0, count: count) } - + public func getUniform(_ program: UInt32,_ location: Int32) -> Any { canvas.renderer.ensureIsContextIsCurrent() var type = GLuint() @@ -1222,17 +1228,17 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { default: return NSNull() } - + } - + public func getUniformLocation(_ program: UInt32,_ name: String) -> Int32 { canvas.renderer.ensureIsContextIsCurrent() let namePtr = (name as NSString).cString(using: String.Encoding.utf8.rawValue) return glGetUniformLocation(program, namePtr) } - - - + + + public func getVertexAttrib(_ index: UInt32, _ pname: UInt32) -> Any { canvas.renderer.ensureIsContextIsCurrent() if(pname == CURRENT_VERTEX_ATTRIB){ @@ -1257,74 +1263,74 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { return params } } - - + + public func getVertexAttribOffset(_ index: UInt32,_ pname: UInt32) -> Int { canvas.renderer.ensureIsContextIsCurrent() - return Int(gl_get_vertex_attrib_offset(index, pname)) + return Int(gl_get_vertex_attrib_offset(index, pname)) } - - + + public func hint(_ target: UInt32,_ mode: UInt32){ canvas.renderer.ensureIsContextIsCurrent() glHint(target, mode) } - - + + public func isBuffer(_ buffer: UInt32) -> Bool{ canvas.renderer.ensureIsContextIsCurrent() return glIsBuffer(buffer) == GL_TRUE } - + public func isContextLost() -> Bool { return canvas.isContextLost } - - + + public func isEnabled(_ cap: UInt32) -> Bool { canvas.renderer.ensureIsContextIsCurrent() return glIsEnabled(cap) == GL_TRUE } - - + + public func isFramebuffer(_ framebuffer: UInt32) -> Bool { canvas.renderer.ensureIsContextIsCurrent() return glIsFramebuffer(framebuffer) == GL_TRUE } - - + + public func isProgram(_ program: UInt32) -> Bool { canvas.renderer.ensureIsContextIsCurrent() return glIsProgram(program) == GL_TRUE } - + public func isRenderbuffer(_ renderbuffer: UInt32) -> Bool { canvas.renderer.ensureIsContextIsCurrent() return glIsRenderbuffer(renderbuffer) == GL_TRUE } - + public func isShader(_ shader: UInt32) ->Bool { canvas.renderer.ensureIsContextIsCurrent() return glIsShader(shader) == GL_TRUE } - + public func isTexture(_ texture: UInt32) -> Bool { canvas.renderer.ensureIsContextIsCurrent() return glIsTexture(texture) == GL_TRUE } - + public func lineWidth(_ width: Float32){ canvas.renderer.ensureIsContextIsCurrent() glLineWidth(width) } - + public func linkProgram(_ program: UInt32){ canvas.renderer.ensureIsContextIsCurrent() glLinkProgram(program) } - - - + + + private func anyToInt(_ value: Any?, _ defaultValue: Int32) -> Int32 { if (value != nil) { if let intVal = value as? Int32 { @@ -1334,7 +1340,7 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } return defaultValue } - + private func anyToBoolean(_ value: Any?, _ defaultValue: Bool) -> Bool { if (value != nil) { if let boolVal = value as? Bool { @@ -1344,7 +1350,7 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } return defaultValue } - + private func anyToColorSpace(_ value: Any?, _ defaultValue: UInt32) -> UInt32 { if (value != nil) { if let intVal = value as? UInt32 { @@ -1357,8 +1363,8 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } return defaultValue } - - + + public func pixelStorei(_ pname: UInt32, _ param: UInt32) { canvas.renderer.ensureIsContextIsCurrent() switch pname { @@ -1375,49 +1381,53 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { break; } } - - + + public func polygonOffset(_ factor: Float32, _ units: Float32){ canvas.renderer.ensureIsContextIsCurrent() glPolygonOffset(factor, units) } - + public func readPixels(_ x: Int32,_ y: Int32,_ width: Int32,_ height: Int32,_ format: UInt32,_ type: UInt32,_ pixels: UnsafeMutableRawPointer) { + readPixels(x, y, width, height, format, type, pixels, offset: 0) + } + + public func readPixels(_ x: Int32,_ y: Int32,_ width: Int32,_ height: Int32,_ format: UInt32,_ type: UInt32,_ pixels: UnsafeMutableRawPointer, offset: Int) { canvas.renderer.ensureIsContextIsCurrent() clearIfComposited() - glReadPixels(x, y, width, height, format, type, pixels) + glReadPixels(x, y, width, height, format, type, pixels.advanced(by: offset)) } - + public func renderbufferStorage(_ target: UInt32,_ internalFormat: UInt32,_ width: Int32,_ height: Int32) { canvas.renderer.ensureIsContextIsCurrent() glRenderbufferStorage(target, internalFormat, width, height) } - - + + public func sampleCoverage(_ value:Float32 ,_ invert: Bool){ canvas.renderer.ensureIsContextIsCurrent() glSampleCoverage(value, boolConverter(invert)) } - - + + public func scissor(_ x: Int32,_ y: Int32,_ width: Int32,_ height: Int32){ canvas.renderer.ensureIsContextIsCurrent() glScissor(x, y, width, height) } - + public func shaderSource(_ shader: UInt32,_ source: String) { canvas.renderer.ensureIsContextIsCurrent() var ptr = (source as NSString).cString(using: String.Encoding.utf8.rawValue) glShaderSource(shader, 1, &ptr, nil) } - + public func stencilFunc(_ fn:UInt32, _ ref: Int32,_ mask: UInt32) { canvas.renderer.ensureIsContextIsCurrent() glStencilFunc(fn, ref, mask) } - - + + public func stencilFuncSeparate(_ face: UInt32,_ fn: UInt32, _ ref:Int32,_ mask: UInt32){ canvas.renderer.ensureIsContextIsCurrent() switch Int32(face) { @@ -1441,14 +1451,14 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } glStencilFuncSeparate(face, fn, ref, mask) } - + public func stencilMask(_ mask: UInt32){ canvas.renderer.ensureIsContextIsCurrent() canvas.mStencilMask = mask canvas.mStencilMaskBack = mask glStencilMask(mask) } - + public func stencilMaskSeparate(_ face: UInt32,_ mask: UInt32) { canvas.renderer.ensureIsContextIsCurrent() switch Int32(face) { @@ -1465,12 +1475,12 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } glStencilMaskSeparate(face, mask) } - + public func stencilOp(_ fail: UInt32,_ zfail: UInt32,_ zpass: UInt32) { canvas.renderer.ensureIsContextIsCurrent() glStencilOp(fail, zfail, zpass) } - + public func stencilOpSeparate(_ face: UInt32,_ fail: UInt32,_ zfail: UInt32,_ zpass: UInt32) { canvas.renderer.ensureIsContextIsCurrent() glStencilOpSeparate(face, fail, zfail, zpass) @@ -1486,8 +1496,8 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { glTexImage2D(target, level, internalformat, width, height, border, format, type, &bytes) } - - + + public func texImage2D(_ target: UInt32,_ level: Int32,_ internalformat: Int32,_ width: Int32,_ height: Int32,_ border: Int32,_ format: UInt32,_ type: UInt32, u8 pixels: [UInt8]) { canvas.renderer.ensureIsContextIsCurrent() var data = pixels @@ -1499,22 +1509,26 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { public func texImage2D(_ target: UInt32,_ level: Int32,_ internalformat: Int32,_ width: Int32,_ height: Int32,_ border: Int32,_ format: UInt32,_ type: UInt32, pixels: UnsafeRawPointer, size: Int) { + texImage2D(target, level, internalformat, width, height, border, format, type, pixels: pixels, size: size, offset: 0) + } + + public func texImage2D(_ target: UInt32,_ level: Int32,_ internalformat: Int32,_ width: Int32,_ height: Int32,_ border: Int32,_ format: UInt32,_ type: UInt32, pixels: UnsafeRawPointer, size: Int, offset: Int) { canvas.renderer.ensureIsContextIsCurrent() if(flipYWebGL){ var px = Data(bytes: pixels, count: size) px.withUnsafeMutableBytes { ptr in - let pointer = ptr.baseAddress?.assumingMemoryBound(to: UInt8.self) + let pointer = ptr.baseAddress?.assumingMemoryBound(to: UInt8.self).advanced(by: offset) GLUtils.flipYInPlace(pointer,size, Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height)) glTexImage2D(target, level, internalformat, width, height, border, format, type, pointer) } }else { - glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels) + glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels.advanced(by: offset)) } } - - + + public func texImage2D(_ target: UInt32,_ level: Int32,_ internalformat: Int32,_ width: Int32,_ height: Int32,_ border: Int32,_ format: UInt32,_ type: UInt32,u16 pixels: [UInt16]) { canvas.renderer.ensureIsContextIsCurrent() var data = pixels @@ -1524,9 +1538,9 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { glTexImage2D(target, level, internalformat, width, height, border, format, type, &data) } - - - + + + public func texImage2D(_ target: UInt32,_ level: Int32,_ internalformat: Int32,_ width: Int32,_ height: Int32,_ border: Int32,_ format: UInt32,_ type: UInt32,u32 pixels: [UInt32]) { canvas.renderer.ensureIsContextIsCurrent() var data = pixels @@ -1535,8 +1549,8 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } glTexImage2D(target, level, internalformat, width, height, border, format, type, &data) } - - + + public func texImage2D(_ target: UInt32,_ level: Int32,_ internalformat: Int32,_ width: Int32,_ height: Int32,_ border: Int32,_ format: UInt32,_ type: UInt32,f32 pixels: [Float32]) { canvas.renderer.ensureIsContextIsCurrent() var data = pixels @@ -1545,14 +1559,14 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } glTexImage2D(target, level, internalformat, width, height, border, format, type, &data) } - + public func texImage2D(_ target: UInt32,_ level: Int32,_ internalformat: Int32,_ width: Int32,_ height: Int32,_ border: Int32,_ format: UInt32,_ type: UInt32,_ pixels: NSNull) { canvas.renderer.ensureIsContextIsCurrent() glTexImage2D(target, level, internalformat, width, height, border, format, type, nil) } - - - + + + public func texImage2D(_ target: UInt32,_ level: Int32,_ internalformat: Int32,_ format: UInt32,_ type: UInt32, pixels: UIImage) { let (buffer,size) = GLUtils.getBytesFromImage(pixels: pixels) canvas.renderer.ensureIsContextIsCurrent() @@ -1561,32 +1575,31 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { if(flipYWebGL){ GLUtils.flipYInPlace(buffer?.assumingMemoryBound(to: UInt8.self),size, Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height)) } - - // Use RGBA for now + glTexImage2D(target, level, internalformat, GLsizei(width), GLsizei(height), 0, format, type, buffer) - + buffer?.deallocate() - + } - + public func texImage2D(_ target: UInt32,_ level: Int32,_ internalformat: Int32,_ format: UInt32,_ type: UInt32, asset: TNSImageAsset) { canvas.renderer.ensureIsContextIsCurrent() gl_tex_image_2D_asset(target, level, internalformat, 0, format, type, asset.asset, flipYWebGL) - + } public func texImage2D(_ target: UInt32,_ level: Int32,_ internalformat: Int32,_ format: UInt32,_ type: UInt32, bitmap: TNSImageBitmap) { canvas.renderer.ensureIsContextIsCurrent() gl_tex_image_2D_asset(target, level, internalformat, 0, format, type, bitmap.asset, flipYWebGL) - + } - + public func texImage2D(_ target: UInt32,_ level: Int32,_ internalformat: Int32,_ format: UInt32,_ type: UInt32,_ pixels: NSNull) { canvas.renderer.ensureIsContextIsCurrent() glTexImage2D(target, level, internalformat, 0, 0, 0, format, type, nil) } - + public func texImage2D(_ target: UInt32,_ level: Int32,_ internalformat: Int32,_ format: UInt32,_ type: UInt32, canvas: TNSCanvas) { var snapshot = canvas.snapshot() let width = canvas.renderer.drawingBufferWidth @@ -1597,19 +1610,19 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } glTexImage2D(target, level, internalformat, GLsizei(width), GLsizei(height), 0, format, type, &snapshot) } - - + + public func texParameterf(_ target: UInt32,_ pname: UInt32,_ param: Float32) { canvas.renderer.ensureIsContextIsCurrent() glTexParameterf(target, pname, param) } - + public func texParameteri(_ target: UInt32,_ pname: UInt32,_ param: Int32) { canvas.renderer.ensureIsContextIsCurrent() glTexParameteri(target, pname, param) } - + public func texSubImage2D(_ target: UInt32,_ level: Int32,_ xoffset: Int32,_ yoffset: Int32,_ width: Int32,_ height: Int32, _ format: UInt32,_ type: UInt32,data: NSData){ canvas.renderer.ensureIsContextIsCurrent() @@ -1618,7 +1631,7 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { GLUtils.flipYInPlace(&bytes,bytes.count, Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height)) } glTexSubImage2D(GLenum(target), level, xoffset, yoffset, width, height, GLenum(format), GLenum(type), &bytes) - + } @@ -1629,18 +1642,22 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { GLUtils.flipYInPlace(&data,data.count, Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height)) } glTexSubImage2D(GLenum(target), level, xoffset, yoffset, width, height, GLenum(format), GLenum(type), &data) - + } - - - public func texSubImage2D(_ target: UInt32,_ level: Int32,_ xoffset: Int32,_ yoffset: Int32,_ width: Int32,_ height: Int32, _ format: UInt32,_ type: UInt32,pixels: UnsafeMutableRawPointer, size: Int){ + + public func texSubImage2D(_ target: UInt32,_ level: Int32,_ xoffset: Int32,_ yoffset: Int32,_ width: Int32,_ height: Int32, _ format: UInt32,_ type: UInt32,pixels: UnsafeMutableRawPointer, size: Int) { + texSubImage2D(target, level, xoffset,yoffset, width, height, format, type, pixels: pixels, size: size, offset: 0) + } + + + public func texSubImage2D(_ target: UInt32,_ level: Int32,_ xoffset: Int32,_ yoffset: Int32,_ width: Int32,_ height: Int32, _ format: UInt32,_ type: UInt32,pixels: UnsafeMutableRawPointer, size: Int, offset: Int){ canvas.renderer.ensureIsContextIsCurrent() if(flipYWebGL){ var px = Data(bytes: pixels, count: size) px.withUnsafeMutableBytes { ptr in - let pointer = ptr.baseAddress?.assumingMemoryBound(to: UInt8.self) + let pointer = ptr.baseAddress?.assumingMemoryBound(to: UInt8.self).advanced(by: offset) GLUtils.flipYInPlace(pointer,size, Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height)) glTexSubImage2D(GLenum(target), level, xoffset, yoffset, width, height, GLenum(format), GLenum(type), pixels) @@ -1651,7 +1668,7 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } } - + public func texSubImage2D(_ target: UInt32,_ level: Int32,_ xoffset: Int32,_ yoffset: Int32,_ width: Int32,_ height: Int32, _ format: UInt32,_ type: UInt32,u16 pixels: [UInt16]){ canvas.renderer.ensureIsContextIsCurrent() var data = pixels @@ -1660,8 +1677,8 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } glTexSubImage2D(GLenum(target), level, xoffset, yoffset, width, height, GLenum(format), GLenum(type), &data) } - - + + public func texSubImage2D(_ target: UInt32,_ level: Int32,_ xoffset: Int32,_ yoffset: Int32,_ width: Int32,_ height: Int32, _ format: UInt32,_ type: UInt32,f32 pixels: [Float32]){ canvas.renderer.ensureIsContextIsCurrent() var data = pixels @@ -1670,14 +1687,14 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { } glTexSubImage2D(GLenum(target), level, xoffset, yoffset, width, height, GLenum(format), GLenum(type), &data) } - + public func texSubImage2D(_ target: UInt32,_ level: Int32,_ xoffset: Int32,_ yoffset: Int32,_ width: Int32,_ height: Int32, _ format: UInt32,_ type: UInt32,_ pixels: NSNull){ canvas.renderer.ensureIsContextIsCurrent() glTexSubImage2D(GLenum(target), level, xoffset, yoffset, width, height, GLenum(format), GLenum(type), nil) } - - - + + + public func texSubImage2D(_ target: UInt32,_ level: Int32,_ xoffset: Int32,_ yoffset: Int32,_ format: UInt32,_ type: UInt32,pixels: UIImage) { let (buffer, size) = GLUtils.getBytesFromImage(pixels: pixels) canvas.renderer.ensureIsContextIsCurrent() @@ -1686,12 +1703,12 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { if(flipYWebGL){ GLUtils.flipYInPlace(buffer?.assumingMemoryBound(to: UInt8.self),size, Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height)) } - + glTexSubImage2D(target, level, xoffset, yoffset, GLsizei(width), GLsizei(height),format, type, buffer) buffer?.deallocate() } - - + + public func texSubImage2D(_ target: UInt32,_ level: Int32,_ xoffset: Int32,_ yoffset: Int32,_ format: UInt32,_ type:UInt32, asset: TNSImageAsset) { canvas.renderer.ensureIsContextIsCurrent() gl_tex_sub_image_2D_asset(target, level, xoffset, yoffset, format, type, asset.asset, flipYWebGL) @@ -1701,8 +1718,8 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { canvas.renderer.ensureIsContextIsCurrent() gl_tex_sub_image_2D_asset(target, level, xoffset, yoffset, format, type, bitmap.asset, flipYWebGL) } - - + + public func texSubImage2D(_ target: UInt32,_ level: Int32,_ xoffset: Int32,_ yoffset: Int32,_ format: UInt32,_ type:UInt32, canvas: TNSCanvas) { let width = Int32(canvas.renderer.drawingBufferWidth) let height = Int32(canvas.renderer.drawingBufferWidth) @@ -1711,871 +1728,936 @@ public class TNSWebGLRenderingContext: TNSCanvasRenderingContext { if(flipYWebGL){ GLUtils.flipYInPlace(&snapshot,snapshot.count, Int(width * bytes_per_pixel(pixel_type: type, format: format)), Int(height)) } - + glTexSubImage2D(GLenum(target), level, xoffset, yoffset, GLsizei(width), GLsizei(height),format, type, &snapshot) } - + public func texSubImage2D(_ target: UInt32,_ level: Int32,_ xoffset: Int32,_ yoffset: Int32,_ format: UInt32,_ type:UInt32, _ pixels: NSNull) { canvas.renderer.ensureIsContextIsCurrent() glTexSubImage2D(GLenum(target), level, xoffset, yoffset, 0, 0, format, type, nil) } - - + + public func uniform1f(_ location: Int32,_ v0: Float32) { canvas.renderer.ensureIsContextIsCurrent() glUniform1f(location, v0) } - + + public func uniform1fv(_ location: Int32, _ value: UnsafeMutableRawPointer,_ size: Int) { + uniform1fv(location, value, size, offset: 0) + } + + public func uniform1fv(_ location: Int32, _ value: UnsafeMutableRawPointer,_ size: Int, offset: Int) { canvas.renderer.ensureIsContextIsCurrent() - glUniform1fv(location, GLint(size/1), value.assumingMemoryBound(to: GLfloat.self)) + glUniform1fv(location, GLint(size/1), value.assumingMemoryBound(to: GLfloat.self).advanced(by: offset)) } - - + + public func uniform1i(_ location: Int32,_ v0: Int32) { canvas.renderer.ensureIsContextIsCurrent() glUniform1i(location, v0) } - + public func uniform1iv(_ location: Int32, _ value: UnsafeMutableRawPointer,_ size: Int) { + uniform1iv(location, value, size, offset: 0) + } + + public func uniform1iv(_ location: Int32, _ value: UnsafeMutableRawPointer,_ size: Int, offset: Int) { canvas.renderer.ensureIsContextIsCurrent() - glUniform1iv(location, GLint(size / 1), value.assumingMemoryBound(to: GLint.self)) + glUniform1iv(location, GLint(size / 1), value.assumingMemoryBound(to: GLint.self).advanced(by: offset)) } - - + + public func uniform2f(_ location: Int32,_ v0: Float32,_ v1: Float32) { canvas.renderer.ensureIsContextIsCurrent() glUniform2f(location, v0, v1) } - + + public func uniform2fv(_ location: Int32, _ value: UnsafeMutableRawPointer,_ size: Int) { + uniform2fv(location, value, size, offset: 0) + } + + public func uniform2fv(_ location: Int32, _ value: UnsafeMutableRawPointer,_ size: Int, offset: Int) { canvas.renderer.ensureIsContextIsCurrent() - glUniform1fv(location, GLint(size / 2), value.assumingMemoryBound(to: GLfloat.self)) + glUniform1fv(location, GLint(size / 2), value.assumingMemoryBound(to: GLfloat.self).advanced(by: offset)) } - - + + public func uniform2i(_ location: Int32,_ v0: Int32,_ v1: Int32) { canvas.renderer.ensureIsContextIsCurrent() glUniform2i(location, v0, v1) } - + public func uniform2iv(_ location: Int32, _ value: UnsafeMutableRawPointer,_ size: Int) { - canvas.renderer.ensureIsContextIsCurrent() - glUniform2iv(location, GLint(size / 2), value.assumingMemoryBound(to: GLint.self)) + uniform2iv(location, value, size, offset: 0) } - - + + public func uniform2iv(_ location: Int32, _ value: UnsafeMutableRawPointer,_ size: Int, offset: Int) { + canvas.renderer.ensureIsContextIsCurrent() + glUniform2iv(location, GLint(size / 2), value.assumingMemoryBound(to: GLint.self).advanced(by: offset)) + } + + public func uniform3f(_ location: Int32,_ v0: Float32,_ v1: Float32,_ v2: Float32) { canvas.renderer.ensureIsContextIsCurrent() glUniform3f(location, v0, v1, v2) } - + + public func uniform3fv(_ location: Int32, _ value: UnsafeMutableRawPointer,_ size: Int) { + uniform3fv(location, value, size, offset: 0) + } + + public func uniform3fv(_ location: Int32, _ value: UnsafeMutableRawPointer,_ size: Int, offset: Int) { canvas.renderer.ensureIsContextIsCurrent() - glUniform3fv(location, GLint(size / 3), value.assumingMemoryBound(to: GLfloat.self)) + glUniform3fv(location, GLint(size / 3), value.assumingMemoryBound(to: GLfloat.self).advanced(by: offset)) } - - + + public func uniform3i(_ location: Int32,_ v0: Int32,_ v1: Int32,_ v2: Int32) { canvas.renderer.ensureIsContextIsCurrent() glUniform3i(location, v0, v1, v2) } - + public func uniform3iv(_ location: Int32, _ value: UnsafeMutableRawPointer,_ size: Int) { + uniform3iv(location, value, size, offset: 0) + } + + public func uniform3iv(_ location: Int32, _ value: UnsafeMutableRawPointer,_ size: Int, offset: Int) { canvas.renderer.ensureIsContextIsCurrent() - glUniform3iv(location, GLint(size / 3), value.assumingMemoryBound(to: GLint.self)) + glUniform3iv(location, GLint(size / 3), value.assumingMemoryBound(to: GLint.self).advanced(by: offset)) } - + public func uniform4f(_ location: Int32,_ v0: Float32,_ v1: Float32,_ v2: Float32,_ v3: Float32) { canvas.renderer.ensureIsContextIsCurrent() glUniform4f(location, v0, v1, v2, v3) } - + + public func uniform4fv(_ location: Int32, _ value: UnsafeMutableRawPointer,_ size: Int) { + uniform4fv(location, value, size, offset: 0) + } + + public func uniform4fv(_ location: Int32, _ value: UnsafeMutableRawPointer,_ size: Int, offset: Int) { canvas.renderer.ensureIsContextIsCurrent() - glUniform4fv(location, GLint(size / 4), value.assumingMemoryBound(to: GLfloat.self)) + glUniform4fv(location, GLint(size / 4), value.assumingMemoryBound(to: GLfloat.self).advanced(by: offset)) } - + public func uniform4i(_ location: Int32,_ v0: Int32,_ v1: Int32,_ v2: Int32,_ v3: Int32) { canvas.renderer.ensureIsContextIsCurrent() glUniform4i(location, v0, v1, v2, v3) } - + public func uniform4iv(_ location: Int32, _ value: UnsafeMutableRawPointer,_ size: Int) { + uniform4iv(location, value, size, offset: 0) + } + + public func uniform4iv(_ location: Int32, _ value: UnsafeMutableRawPointer,_ size: Int, offset: Int) { canvas.renderer.ensureIsContextIsCurrent() - glUniform4iv(location, GLint(size / 4) , value.assumingMemoryBound(to: GLint.self)) + glUniform4iv(location, GLint(size / 4) , value.assumingMemoryBound(to: GLint.self).advanced(by: offset)) } - + public func uniformMatrix2fv(_ location: Int32,_ transpose: Bool,_ value: UnsafeMutableRawPointer,_ size: Int) { + uniformMatrix2fv(location, transpose, value, size, offset: 0) + } + + public func uniformMatrix2fv(_ location: Int32,_ transpose: Bool,_ value: UnsafeMutableRawPointer,_ size: Int, offset: Int) { canvas.renderer.ensureIsContextIsCurrent() - glUniformMatrix2fv(location,GLsizei(size / 4), boolConverter(transpose), value.assumingMemoryBound(to: GLfloat.self)) + glUniformMatrix2fv(location,GLsizei(size / 4), boolConverter(transpose), value.assumingMemoryBound(to: GLfloat.self).advanced(by: offset)) } - + public func uniformMatrix3fv(_ location: Int32,_ transpose: Bool,_ value: UnsafeMutableRawPointer,_ size: Int) { + uniformMatrix3fv(location, transpose, value, size, offset: 0) + } + + public func uniformMatrix3fv(_ location: Int32,_ transpose: Bool,_ value: UnsafeMutableRawPointer,_ size: Int, offset: Int) { canvas.renderer.ensureIsContextIsCurrent() - glUniformMatrix3fv(location, GLsizei(size / 9), boolConverter(transpose), value.assumingMemoryBound(to: GLfloat.self)) + glUniformMatrix3fv(location, GLsizei(size / 9), boolConverter(transpose), value.assumingMemoryBound(to: GLfloat.self).advanced(by: offset)) } - - public func uniformMatrix4fv(_ location: Int32,_ transpose: Bool, _ value: UnsafeMutableRawPointer,_ size: Int) { + + public func uniformMatrix4fv(_ location: Int32,_ transpose: Bool, _ value: UnsafeMutableRawPointer,_ size: Int){ + uniformMatrix4fv(location, transpose, value, size, offset: 0) + } + + public func uniformMatrix4fv(_ location: Int32,_ transpose: Bool, _ value: UnsafeMutableRawPointer,_ size: Int, offset: Int) { canvas.renderer.ensureIsContextIsCurrent() - glUniformMatrix4fv(location, GLsizei(size / 16), boolConverter(transpose), value.assumingMemoryBound(to: GLfloat.self)) + glUniformMatrix4fv(location, GLsizei(size / 16), boolConverter(transpose), value.assumingMemoryBound(to: GLfloat.self).advanced(by: offset)) } - + public func useProgram(_ program: UInt32){ canvas.renderer.ensureIsContextIsCurrent() glUseProgram(program) } - + public func validateProgram(_ program: UInt32){ canvas.renderer.ensureIsContextIsCurrent() glValidateProgram(program) } - + public func vertexAttrib1f(_ index: UInt32,_ v0: Float32) { canvas.renderer.ensureIsContextIsCurrent() glVertexAttrib1f(index, v0) } - + public func vertexAttrib2f(_ index: UInt32, _ v0: Float32,_ v1: Float32) { canvas.renderer.ensureIsContextIsCurrent() glVertexAttrib2f(GLuint(index), v0, v1) } - + public func vertexAttrib3f(_ index: UInt32,_ v0: Float32,_ v1: Float32,_ v2: Float32) { canvas.renderer.ensureIsContextIsCurrent() glVertexAttrib3f(index, v0, v1, v2) } - + public func vertexAttrib4f(_ index: UInt32,_ v0: Float32,_ v1: Float32,_ v2: Float32,_ v3: Float32) { canvas.renderer.ensureIsContextIsCurrent() glVertexAttrib4f(index, v0, v1, v2, v3) } - + public func vertexAttrib1fv(_ index: UInt32,_ value: UnsafeMutableRawPointer) { + vertexAttrib1fv(index, value, offset: 0) + } + + public func vertexAttrib1fv(_ index: UInt32,_ value: UnsafeMutableRawPointer, offset: Int) { canvas.renderer.ensureIsContextIsCurrent() - glVertexAttrib1fv(index,value.assumingMemoryBound(to: GLfloat.self)) + glVertexAttrib1fv(index,value.assumingMemoryBound(to: GLfloat.self).advanced(by: offset)) } - + public func vertexAttrib2fv(_ index: UInt32,_ value: UnsafeMutableRawPointer) { + vertexAttrib2fv(index, value, offset: 0) + } + + public func vertexAttrib2fv(_ index: UInt32,_ value: UnsafeMutableRawPointer, offset: Int) { canvas.renderer.ensureIsContextIsCurrent() - glVertexAttrib2fv(index,value.assumingMemoryBound(to: GLfloat.self)) + glVertexAttrib2fv(index,value.assumingMemoryBound(to: GLfloat.self).advanced(by: offset)) } - - public func vertexAttrib3fv(_ index: UInt32, _ value: UnsafeMutableRawPointer) { + + public func vertexAttrib3fv(_ index: UInt32, _ value: UnsafeMutableRawPointer){ + vertexAttrib3fv(index, value, offset: 0) + } + + public func vertexAttrib3fv(_ index: UInt32, _ value: UnsafeMutableRawPointer, offset: Int) { canvas.renderer.ensureIsContextIsCurrent() - glVertexAttrib3fv(GLuint(index),value.assumingMemoryBound(to: GLfloat.self)) + glVertexAttrib3fv(GLuint(index),value.assumingMemoryBound(to: GLfloat.self).advanced(by: offset)) } - + + public func vertexAttrib4fv(_ index: UInt32, _ value: UnsafeMutableRawPointer) { + vertexAttrib4fv(index, value, offset: 0) + } + + public func vertexAttrib4fv(_ index: UInt32, _ value: UnsafeMutableRawPointer, offset: Int) { canvas.renderer.ensureIsContextIsCurrent() - glVertexAttrib4fv(index,value.assumingMemoryBound(to: GLfloat.self)) + glVertexAttrib4fv(index,value.assumingMemoryBound(to: GLfloat.self).advanced(by: offset)) } - + public func vertexAttribPointer(_ index: UInt32,_ size: Int32,_ type: UInt32,_ normalized: Bool,_ stride: Int32,_ offset: Int) { canvas.renderer.ensureIsContextIsCurrent() /*let ptr = BUFFER_OFFSET(n: offset) - glVertexAttribPointer(index, size, type, boolConverter(normalized), stride, ptr) - */ + glVertexAttribPointer(index, size, type, boolConverter(normalized), stride, ptr) + */ gl_vertex_attrib_pointer(index, size, type, normalized, stride, Int64(offset)) } - - + + public func viewport(_ x: Int32,_ y: Int32,_ width: Int32,_ height: Int32){ canvas.renderer.ensureIsContextIsCurrent() glViewport(x, y, width, height) } - - - + + + /* Clearing buffers */ - + public var DEPTH_BUFFER_BIT : UInt32 { return UInt32(GL_DEPTH_BUFFER_BIT) } - + public var COLOR_BUFFER_BIT : UInt32 { return UInt32(GL_COLOR_BUFFER_BIT) } - + public var STENCIL_BUFFER_BIT : UInt32 { return UInt32(GL_STENCIL_BUFFER_BIT) } - + /* Clearing buffers */ - + /* Rendering primitives */ - + public var POINTS : UInt32 { return UInt32(GL_POINTS) } - + public var LINES : UInt32 { return UInt32(GL_LINES) } - + public var LINE_LOOP : UInt32 { return UInt32(GL_LINE_LOOP) } - + public var LINE_STRIP : UInt32 { return UInt32(GL_LINE_STRIP) } - + public var TRIANGLES : UInt32 { return UInt32(GL_TRIANGLES) } - + public var TRIANGLE_STRIP : UInt32 { return UInt32(GL_TRIANGLE_STRIP) } - + public var TRIANGLE_FAN : UInt32 { return UInt32(GL_TRIANGLE_FAN) } - + /* Rendering primitives */ - + /* Blending modes */ - - + + public var ONE : UInt32 { return UInt32(GL_ONE) } - + public var ZERO : UInt32 { return UInt32(GL_ZERO) } public var SRC_COLOR : UInt32 { return UInt32(GL_SRC_COLOR) } - + public var ONE_MINUS_SRC_COLOR : UInt32 { return UInt32(GL_ONE_MINUS_SRC_COLOR) } - + public var SRC_ALPHA : UInt32 { return UInt32(GL_SRC_ALPHA) } - + public var ONE_MINUS_SRC_ALPHA : UInt32 { return UInt32(GL_ONE_MINUS_SRC_ALPHA) } - + public var DST_ALPHA : UInt32 { return UInt32(GL_DST_ALPHA) } - + public var ONE_MINUS_DST_ALPHA : UInt32 { return UInt32(GL_ONE_MINUS_DST_ALPHA) } - + public var DST_COLOR : UInt32 { return UInt32(GL_DST_COLOR) } - + public var ONE_MINUS_DST_COLOR : UInt32 { return UInt32(GL_ONE_MINUS_DST_COLOR) } - + public var SRC_ALPHA_SATURATE : UInt32 { return UInt32(GL_SRC_ALPHA_SATURATE) } - + public var CONSTANT_COLOR : UInt32 { return UInt32(GL_CONSTANT_COLOR) } public var ONE_MINUS_CONSTANT_COLOR : UInt32 { return UInt32(GL_ONE_MINUS_CONSTANT_COLOR) } - + public var CONSTANT_ALPHA : UInt32 { return UInt32(GL_CONSTANT_ALPHA) } public var ONE_MINUS_CONSTANT_ALPHA : UInt32 { return UInt32(GL_ONE_MINUS_CONSTANT_ALPHA) } - + /* Blending modes */ - + /* Blending equations */ public var FUNC_ADD : UInt32 { return UInt32(GL_FUNC_ADD) } - + public var FUNC_SUBTRACT : UInt32 { return UInt32(GL_FUNC_SUBTRACT) } - + public var FUNC_REVERSE_SUBTRACT : UInt32 { return UInt32(GL_FUNC_REVERSE_SUBTRACT) } - + /* Blending equations */ - - + + /* Getting GL parameter information */ - + public var BLEND_EQUATION : UInt32 { return UInt32(GL_BLEND_EQUATION) } - + public var BLEND_EQUATION_RGB : UInt32 { return UInt32(GL_BLEND_EQUATION_RGB) } - + public var BLEND_EQUATION_ALPHA : UInt32 { return UInt32(GL_BLEND_EQUATION_ALPHA) } - + public var BLEND_DST_RGB : UInt32 { return UInt32(GL_BLEND_DST_RGB) } - + public var BLEND_SRC_RGB : UInt32 { return UInt32(GL_BLEND_SRC_RGB) } - + public var BLEND_DST_ALPHA : UInt32 { return UInt32(GL_BLEND_DST_ALPHA) } - + public var BLEND_SRC_ALPHA : UInt32 { return UInt32(GL_BLEND_SRC_ALPHA) } - + public var BLEND_COLOR : UInt32 { return UInt32(GL_BLEND_COLOR) } - + public var ARRAY_BUFFER_BINDING : UInt32 { return UInt32(GL_ARRAY_BUFFER_BINDING) } - + public var ELEMENT_ARRAY_BUFFER_BINDING : UInt32 { return UInt32(GL_ELEMENT_ARRAY_BUFFER_BINDING) } - + public var LINE_WIDTH : UInt32 { return UInt32(GL_LINE_WIDTH) } - + public var ALIASED_POINT_SIZE_RANGE : UInt32 { return UInt32(GL_ALIASED_POINT_SIZE_RANGE) } - + public var ALIASED_LINE_WIDTH_RANGE : UInt32 { return UInt32(GL_ALIASED_LINE_WIDTH_RANGE) } - + public var CULL_FACE_MODE : UInt32 { return UInt32(GL_CULL_FACE_MODE) } - + public var FRONT_FACE : UInt32 { return UInt32(GL_FRONT_FACE) } - + public var DEPTH_RANGE : UInt32 { return UInt32(GL_DEPTH_RANGE) } - + public var DEPTH_WRITEMASK : UInt32 { return UInt32(GL_DEPTH_WRITEMASK) } - + public var DEPTH_CLEAR_VALUE : UInt32 { return UInt32(GL_DEPTH_CLEAR_VALUE) } - + public var DEPTH_FUNC : UInt32 { return UInt32(GL_DEPTH_FUNC) } - + public var STENCIL_CLEAR_VALUE : UInt32 { return UInt32(GL_STENCIL_CLEAR_VALUE) } - + public var STENCIL_FUNC : UInt32 { return UInt32(GL_STENCIL_FUNC) } - + public var STENCIL_FAIL : UInt32 { return UInt32(GL_STENCIL_FAIL) } - + public var STENCIL_PASS_DEPTH_FAIL : UInt32 { return UInt32(GL_STENCIL_PASS_DEPTH_FAIL) } - + public var STENCIL_PASS_DEPTH_PASS : UInt32 { return UInt32(GL_STENCIL_PASS_DEPTH_PASS) } - + public var STENCIL_REF : UInt32 { return UInt32(GL_STENCIL_REF) } - + public var STENCIL_VALUE_MASK : UInt32 { return UInt32(GL_STENCIL_VALUE_MASK) } - + public var STENCIL_WRITEMASK : UInt32 { return UInt32(GL_STENCIL_WRITEMASK) } - + public var STENCIL_BACK_FUNC : UInt32 { return UInt32(GL_STENCIL_BACK_FUNC) } - + public var STENCIL_BACK_FAIL : UInt32 { return UInt32(GL_STENCIL_BACK_FAIL) } - + public var STENCIL_BACK_PASS_DEPTH_FAIL : UInt32 { return UInt32(GL_STENCIL_BACK_PASS_DEPTH_FAIL) } - + public var STENCIL_BACK_PASS_DEPTH_PASS : UInt32 { return UInt32(GL_STENCIL_BACK_PASS_DEPTH_PASS) } - + public var STENCIL_BACK_REF : UInt32 { return UInt32(GL_STENCIL_BACK_REF) } - + public var STENCIL_BACK_VALUE_MASK : UInt32 { return UInt32(GL_STENCIL_BACK_VALUE_MASK) } - + public var STENCIL_BACK_WRITEMASK : UInt32 { return UInt32(GL_STENCIL_BACK_WRITEMASK) } - + public var VIEWPORT : UInt32 { return UInt32(GL_VIEWPORT) } - + public var SCISSOR_BOX : UInt32 { return UInt32(GL_SCISSOR_BOX) } - + public var COLOR_CLEAR_VALUE : UInt32 { return UInt32(GL_COLOR_CLEAR_VALUE) } - + public var COLOR_WRITEMASK : UInt32 { return UInt32(GL_COLOR_WRITEMASK) } - + public var UNPACK_ALIGNMENT : UInt32 { return UInt32(GL_UNPACK_ALIGNMENT) } - + public var PACK_ALIGNMENT : UInt32 { return UInt32(GL_PACK_ALIGNMENT) } - + public var MAX_TEXTURE_SIZE : UInt32 { return UInt32(GL_MAX_TEXTURE_SIZE) } - + public var MAX_VIEWPORT_DIMS : UInt32 { return UInt32(GL_MAX_VIEWPORT_DIMS) } - + public var SUBPIXEL_BITS : UInt32 { return UInt32(GL_SUBPIXEL_BITS) } - + public var RED_BITS : UInt32 { return UInt32(GL_RED_BITS) } - + public var GREEN_BITS : UInt32 { return UInt32(GL_GREEN_BITS) } - + public var BLUE_BITS : UInt32 { return UInt32(GL_BLUE_BITS) } - + public var ALPHA_BITS : UInt32 { return UInt32(GL_ALPHA_BITS) } - + public var DEPTH_BITS : UInt32 { return UInt32(GL_DEPTH_BITS) } - + public var STENCIL_BITS : UInt32 { return UInt32(GL_STENCIL_BITS) } - + public var POLYGON_OFFSET_UNITS : UInt32 { return UInt32(GL_POLYGON_OFFSET_UNITS) } - + public var POLYGON_OFFSET_FACTOR : UInt32 { return UInt32(GL_POLYGON_OFFSET_FACTOR) } - + public var TEXTURE_BINDING_2D : UInt32 { return UInt32(GL_TEXTURE_BINDING_2D) } - + public var SAMPLE_BUFFERS : UInt32 { return UInt32(GL_SAMPLE_BUFFERS) } - + public var SAMPLES : UInt32 { return UInt32(GL_SAMPLES) } - + public var SAMPLE_COVERAGE_VALUE : UInt32 { return UInt32(GL_SAMPLE_COVERAGE_VALUE) } - + public var SAMPLE_COVERAGE_INVERT : UInt32 { return UInt32(GL_SAMPLE_COVERAGE_INVERT) } - + public var COMPRESSED_TEXTURE_FORMATS : UInt32 { return UInt32(GL_COMPRESSED_TEXTURE_FORMATS) } - + public var VENDOR : UInt32 { return UInt32(GL_VENDOR) } - + public var RENDERER : UInt32 { return UInt32(GL_RENDERER) } - + public var VERSION : UInt32 { return UInt32(GL_VERSION) } - + public var IMPLEMENTATION_COLOR_READ_TYPE : UInt32 { return UInt32(GL_IMPLEMENTATION_COLOR_READ_TYPE) } - + public var IMPLEMENTATION_COLOR_READ_FORMAT : UInt32 { return UInt32(GL_IMPLEMENTATION_COLOR_READ_FORMAT) } - + public var BROWSER_DEFAULT_WEBGL : UInt32 { return 0x9244 } - + /* Getting GL parameter information */ - + /* Buffers */ - + public var STATIC_DRAW : UInt32 { return UInt32(GL_STATIC_DRAW) } - + public var STREAM_DRAW : UInt32 { return UInt32(GL_STREAM_DRAW) } - + public var DYNAMIC_DRAW : UInt32 { return UInt32(GL_DYNAMIC_DRAW) } - + public var ARRAY_BUFFER : UInt32 { return UInt32(GL_ARRAY_BUFFER) } - + public var ELEMENT_ARRAY_BUFFER : UInt32 { return UInt32(GL_ELEMENT_ARRAY_BUFFER) } - + public var BUFFER_SIZE : UInt32 { return UInt32(GL_BUFFER_SIZE) } - + public var BUFFER_USAGE : UInt32 { return UInt32(GL_BUFFER_USAGE) } - + /* Buffers */ - + /* Vertex attributes */ - + public var CURRENT_VERTEX_ATTRIB : UInt32 { return UInt32(GL_CURRENT_VERTEX_ATTRIB) } - + public var VERTEX_ATTRIB_ARRAY_ENABLED : UInt32 { return UInt32(GL_VERTEX_ATTRIB_ARRAY_ENABLED) } - + public var VERTEX_ATTRIB_ARRAY_SIZE : UInt32 { return UInt32(GL_VERTEX_ATTRIB_ARRAY_SIZE) } - + public var VERTEX_ATTRIB_ARRAY_STRIDE : UInt32 { return UInt32(GL_VERTEX_ATTRIB_ARRAY_STRIDE) } - + public var VERTEX_ATTRIB_ARRAY_TYPE : UInt32 { return UInt32(GL_VERTEX_ATTRIB_ARRAY_TYPE) } - + public var VERTEX_ATTRIB_ARRAY_NORMALIZED : UInt32 { return UInt32(GL_VERTEX_ATTRIB_ARRAY_NORMALIZED) } - + public var VERTEX_ATTRIB_ARRAY_POINTER : UInt32 { return UInt32(GL_VERTEX_ATTRIB_ARRAY_POINTER) } - + public var VERTEX_ATTRIB_ARRAY_BUFFER_BINDING : UInt32 { return UInt32(GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING) } - + /* Vertex attributes */ - + /* Culling */ - + public var CULL_FACE : UInt32 { return UInt32(GL_CULL_FACE) } - + public var FRONT : UInt32 { return UInt32(GL_FRONT) } - + public var BACK : UInt32 { return UInt32(GL_BACK) } - + public var FRONT_AND_BACK : UInt32 { return UInt32(GL_FRONT_AND_BACK) } - + /* Culling */ - + /* Enabling and disabling */ - + public var BLEND : UInt32 { return UInt32(GL_BLEND) } - + public var DEPTH_TEST : UInt32 { return UInt32(GL_DEPTH_TEST) } - + public var DITHER : UInt32 { return UInt32(GL_DITHER) } - + public var POLYGON_OFFSET_FILL : UInt32 { return UInt32(GL_POLYGON_OFFSET_FILL) } - + public var SAMPLE_ALPHA_TO_COVERAGE : UInt32 { return UInt32(GL_SAMPLE_ALPHA_TO_COVERAGE) } - + public var SAMPLE_COVERAGE : UInt32 { return UInt32(GL_SAMPLE_COVERAGE) } - + public var SCISSOR_TEST : UInt32 { return UInt32(GL_SCISSOR_TEST) } - + public var STENCIL_TEST : UInt32 { return UInt32(GL_STENCIL_TEST) } - + /* Enabling and disabling */ - + /* Errors */ public var NO_ERROR : UInt32 { return UInt32(GL_NO_ERROR) } - + public var INVALID_ENUM : UInt32 { return UInt32(GL_INVALID_ENUM) } - + public var INVALID_VALUE : UInt32 { return UInt32(GL_INVALID_VALUE) } - + public var INVALID_OPERATION : UInt32 { return UInt32(GL_INVALID_OPERATION) } - + public var INVALID_FRAMEBUFFER_OPERATION : UInt32 { return UInt32(GL_INVALID_FRAMEBUFFER_OPERATION) } - + public var OUT_OF_MEMORY : UInt32 { return UInt32(GL_OUT_OF_MEMORY) } - + public var CONTEXT_LOST_WEBGL: UInt32 { return 0x9242 } /* Errors */ - + /* Front face directions */ - + public var CW : UInt32 { return UInt32(GL_CW) } - + public var CCW : UInt32 { return UInt32(GL_CCW) } - + /* Front face directions */ - - + + /* Hints */ - + public var DONT_CARE : UInt32 { return UInt32(GL_DONT_CARE) } - + public var FASTEST : UInt32 { return UInt32(GL_FASTEST) } - + public var NICEST : UInt32 { return UInt32(GL_NICEST) } - + public var GENERATE_MIPMAP_HINT : UInt32 { return UInt32(GL_GENERATE_MIPMAP_HINT) } - + /* Hints */ - - + + /* Data types */ - + public var BYTE : UInt32 { return UInt32(GL_BYTE) } - + public var UNSIGNED_BYTE : UInt32 { return UInt32(GL_UNSIGNED_BYTE) } - + public var UNSIGNED_SHORT : UInt32 { return UInt32(GL_UNSIGNED_SHORT) } - + public var SHORT : UInt32 { return UInt32(GL_SHORT) } - + public var UNSIGNED_INT : UInt32 { return UInt32(GL_UNSIGNED_INT) } - + public var INT : UInt32 { return UInt32(GL_INT) } - + public var FLOAT : UInt32 { return UInt32(GL_FLOAT) } - + /* Data types */ - - + + /* Pixel formats */ - + public var DEPTH_COMPONENT : UInt32 { return UInt32(GL_DEPTH_COMPONENT) } - + public var ALPHA : UInt32 { return UInt32(GL_ALPHA) } - + public var RGB : UInt32 { return UInt32(GL_RGB) } - + public var RGBA : UInt32 { return UInt32(GL_RGBA) } - + public var LUMINANCE : UInt32 { return UInt32(GL_LUMINANCE) } - + public var LUMINANCE_ALPHA : UInt32 { return UInt32(GL_LUMINANCE_ALPHA) } - + /* Pixel formats */ - + /* Pixel types */ - + // public var UNSIGNED_BYTE : UInt32 { return UInt32(GL_UNSIGNED_BYTE) } - + public var UNSIGNED_SHORT_4_4_4_4 : UInt32 { return UInt32(GL_UNSIGNED_SHORT_4_4_4_4) } - + public var UNSIGNED_SHORT_5_5_5_1 : UInt32 { return UInt32(GL_UNSIGNED_SHORT_5_5_5_1) } - + public var UNSIGNED_SHORT_5_6_5 : UInt32 { return UInt32(GL_UNSIGNED_SHORT_5_6_5) } - + /* Pixel types */ - + /* Shaders */ - + public var FRAGMENT_SHADER : UInt32 { return UInt32(GL_FRAGMENT_SHADER) } - + public var VERTEX_SHADER : UInt32 { return UInt32(GL_VERTEX_SHADER) } - + public var COMPILE_STATUS : UInt32 { return UInt32(GL_COMPILE_STATUS) } - + public var DELETE_STATUS : UInt32 { return UInt32(GL_DELETE_STATUS) } - + public var LINK_STATUS : UInt32 { return UInt32(GL_LINK_STATUS) } - + public var VALIDATE_STATUS : UInt32 { return UInt32(GL_VALIDATE_STATUS) } - + public var ATTACHED_SHADERS : UInt32 { return UInt32(GL_ATTACHED_SHADERS) } - + public var ACTIVE_ATTRIBUTES : UInt32 { return UInt32(GL_ACTIVE_ATTRIBUTES) } - + public var ACTIVE_UNIFORMS : UInt32 { return UInt32(GL_ACTIVE_UNIFORMS) } - + public var MAX_VERTEX_UNIFORM_VECTORS : UInt32 { return UInt32(GL_MAX_VERTEX_UNIFORM_VECTORS) } - + public var MAX_VARYING_VECTORS : UInt32 { return UInt32(GL_MAX_VARYING_VECTORS) } - + public var MAX_COMBINED_TEXTURE_IMAGE_UNITS : UInt32 { return UInt32(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS) } - + public var MAX_VERTEX_TEXTURE_IMAGE_UNITS : UInt32 { return UInt32(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS) } - + public var MAX_TEXTURE_IMAGE_UNITS : UInt32 { return UInt32(GL_MAX_TEXTURE_IMAGE_UNITS) } - + public var MAX_VERTEX_ATTRIBS : UInt32 { return UInt32(GL_MAX_VERTEX_ATTRIBS) } - + public var MAX_FRAGMENT_UNIFORM_VECTORS : UInt32 { return UInt32(GL_MAX_FRAGMENT_UNIFORM_VECTORS) } - + public var SHADER_TYPE : UInt32 { return UInt32(GL_SHADER_TYPE) } - + public var SHADING_LANGUAGE_VERSION : UInt32 { return UInt32(GL_SHADING_LANGUAGE_VERSION) } - + public var CURRENT_PROGRAM : UInt32 { return UInt32(GL_CURRENT_PROGRAM) } - + /* Shaders */ - + /* Depth or stencil tests */ - + public var NEVER : UInt32 { return UInt32(GL_NEVER) } - + public var LESS : UInt32 { return UInt32(GL_LESS) } - + public var EQUAL : UInt32 { return UInt32(GL_EQUAL) } - + public var LEQUAL : UInt32 { return UInt32(GL_LEQUAL) } - + public var GREATER : UInt32 { return UInt32(GL_GREATER) } - + public var NOTEQUAL : UInt32 { return UInt32(GL_NOTEQUAL) } - + public var GEQUAL : UInt32 { return UInt32(GL_GEQUAL) } - + public var ALWAYS : UInt32 { return UInt32(GL_ALWAYS) } - + /* Depth or stencil tests */ - + /* Stencil actions */ - + public var KEEP : UInt32 { return UInt32(GL_KEEP) } - + public var REPLACE : UInt32 { return UInt32(GL_REPLACE) } - + public var INCR : UInt32 { return UInt32(GL_INCR) } - + public var DECR : UInt32 { return UInt32(GL_DECR) } - + public var INVERT : UInt32 { return UInt32(GL_INVERT) } - + public var INCR_WRAP : UInt32 { return UInt32(GL_INCR_WRAP) } - + public var DECR_WRAP : UInt32 { return UInt32(GL_DECR_WRAP) } - + /* Stencil actions */ - + /* Textures */ - + public var NEAREST : UInt32 { return UInt32(GL_NEAREST) } - + public var LINEAR : UInt32 { return UInt32(GL_LINEAR) } - + public var NEAREST_MIPMAP_NEAREST : UInt32 { return UInt32(GL_NEAREST_MIPMAP_NEAREST) } - + public var LINEAR_MIPMAP_NEAREST : UInt32 { return UInt32(GL_LINEAR_MIPMAP_NEAREST) } - + public var NEAREST_MIPMAP_LINEAR : UInt32 { return UInt32(GL_NEAREST_MIPMAP_LINEAR) } - + public var LINEAR_MIPMAP_LINEAR : UInt32 { return UInt32(GL_LINEAR_MIPMAP_LINEAR) } - + public var TEXTURE_MAG_FILTER : UInt32 { return UInt32(GL_TEXTURE_MAG_FILTER) } - + public var TEXTURE_MIN_FILTER : UInt32 { return UInt32(GL_TEXTURE_MIN_FILTER) } - + public var TEXTURE_WRAP_S : UInt32 { return UInt32(GL_TEXTURE_WRAP_S) } - + public var TEXTURE_WRAP_T : UInt32 { return UInt32(GL_TEXTURE_WRAP_T) } - + public var TEXTURE_2D : UInt32 { return UInt32(GL_TEXTURE_2D) } - + public var TEXTURE : UInt32 { return UInt32(GL_TEXTURE) } - + public var TEXTURE_CUBE_MAP : UInt32 { return UInt32(GL_TEXTURE_CUBE_MAP) } - + public var TEXTURE_BINDING_CUBE_MAP : UInt32 { return UInt32(GL_TEXTURE_BINDING_CUBE_MAP) } - + public var TEXTURE_CUBE_MAP_POSITIVE_X : UInt32 { return UInt32(GL_TEXTURE_CUBE_MAP_POSITIVE_X) } - + public var TEXTURE_CUBE_MAP_NEGATIVE_X : UInt32 { return UInt32(GL_TEXTURE_CUBE_MAP_NEGATIVE_X) } - + public var TEXTURE_CUBE_MAP_POSITIVE_Y : UInt32 { return UInt32(GL_TEXTURE_CUBE_MAP_POSITIVE_Y) } - + public var TEXTURE_CUBE_MAP_NEGATIVE_Y : UInt32 { return UInt32(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y) } - + public var TEXTURE_CUBE_MAP_POSITIVE_Z : UInt32 { return UInt32(GL_TEXTURE_CUBE_MAP_POSITIVE_Z) } - + public var TEXTURE_CUBE_MAP_NEGATIVE_Z : UInt32 { return UInt32(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z) } - + public var MAX_CUBE_MAP_TEXTURE_SIZE : UInt32 { return UInt32(GL_MAX_CUBE_MAP_TEXTURE_SIZE) } - + public var TEXTURE0 : UInt32 { return UInt32(GL_TEXTURE0) } - + public var TEXTURE1 : UInt32 { return UInt32(GL_TEXTURE1) } - + public var TEXTURE2 : UInt32 { return UInt32(GL_TEXTURE2) } - + public var TEXTURE3 : UInt32 { return UInt32(GL_TEXTURE3) } - + public var TEXTURE4 : UInt32 { return UInt32(GL_TEXTURE4) } - + public var TEXTURE5 : UInt32 { return UInt32(GL_TEXTURE5) } - + public var TEXTURE6 : UInt32 { return UInt32(GL_TEXTURE6) } - + public var TEXTURE7 : UInt32 { return UInt32(GL_TEXTURE7) } - + public var TEXTURE8 : UInt32 { return UInt32(GL_TEXTURE8) } - + public var TEXTURE9 : UInt32 { return UInt32(GL_TEXTURE9) } - + public var TEXTURE10 : UInt32 { return UInt32(GL_TEXTURE10) } - + public var TEXTURE11 : UInt32 { return UInt32(GL_TEXTURE11) } - + public var TEXTURE12 : UInt32 { return UInt32(GL_TEXTURE12) } - + public var TEXTURE13 : UInt32 { return UInt32(GL_TEXTURE13) } - + public var TEXTURE14 : UInt32 { return UInt32(GL_TEXTURE14) } - + public var TEXTURE15 : UInt32 { return UInt32(GL_TEXTURE15) } - + public var TEXTURE16 : UInt32 { return UInt32(GL_TEXTURE16) } - + public var TEXTURE17 : UInt32 { return UInt32(GL_TEXTURE17) } - + public var TEXTURE18 : UInt32 { return UInt32(GL_TEXTURE18) } - + public var TEXTURE19 : UInt32 { return UInt32(GL_TEXTURE19) } - + public var TEXTURE20 : UInt32 { return UInt32(GL_TEXTURE20) } - + public var TEXTURE21 : UInt32 { return UInt32(GL_TEXTURE21) } - + public var TEXTURE22 : UInt32 { return UInt32(GL_TEXTURE22) } - + public var TEXTURE23 : UInt32 { return UInt32(GL_TEXTURE23) } - + public var TEXTURE24 : UInt32 { return UInt32(GL_TEXTURE24) } - + public var TEXTURE25 : UInt32 { return UInt32(GL_TEXTURE25) } - + public var TEXTURE26 : UInt32 { return UInt32(GL_TEXTURE26) } - + public var TEXTURE27 : UInt32 { return UInt32(GL_TEXTURE27) } - + public var TEXTURE28 : UInt32 { return UInt32(GL_TEXTURE28) } - + public var TEXTURE29 : UInt32 { return UInt32(GL_TEXTURE29) } - + public var TEXTURE30 : UInt32 { return UInt32(GL_TEXTURE30) } - + public var TEXTURE31 : UInt32 { return UInt32(GL_TEXTURE31) } - + public var ACTIVE_TEXTURE : UInt32 { return UInt32(GL_ACTIVE_TEXTURE) } - + public var REPEAT : UInt32 { return UInt32(GL_REPEAT) } - + public var CLAMP_TO_EDGE : UInt32 { return UInt32(GL_CLAMP_TO_EDGE) } - + public var MIRRORED_REPEAT : UInt32 { return UInt32(GL_MIRRORED_REPEAT) } - + /* Textures */ - - - + + + /* Uniform types */ - + public var FLOAT_VEC2 : UInt32 { return UInt32(GL_FLOAT_VEC2) } - + public var FLOAT_VEC3 : UInt32 { return UInt32(GL_FLOAT_VEC3) } - + public var FLOAT_VEC4 : UInt32 { return UInt32(GL_FLOAT_VEC4) } - + public var INT_VEC2 : UInt32 { return UInt32(GL_INT_VEC2) } - + public var INT_VEC3 : UInt32 { return UInt32(GL_INT_VEC3) } - + public var INT_VEC4 : UInt32 { return UInt32(GL_INT_VEC4) } - - + + public var BOOL : UInt32 { return UInt32(GL_BOOL) } - - + + public var BOOL_VEC2 : UInt32 { return UInt32(GL_BOOL_VEC2) } - + public var BOOL_VEC3 : UInt32 { return UInt32(GL_BOOL_VEC3) } - + public var BOOL_VEC4 : UInt32 { return UInt32(GL_BOOL_VEC4) } - - + + public var FLOAT_MAT2 : UInt32 { return UInt32(GL_FLOAT_MAT2) } - - + + public var FLOAT_MAT3 : UInt32 { return UInt32(GL_FLOAT_MAT3) } - - + + public var FLOAT_MAT4 : UInt32 { return UInt32(GL_FLOAT_MAT4) } - + public var SAMPLER_2D : UInt32 { return UInt32(GL_SAMPLER_2D) } - + public var SAMPLER_CUBE : UInt32 { return UInt32(GL_SAMPLER_CUBE) } - + /* Uniform types */ - + /* Shader precision-specified types */ - + public var LOW_FLOAT : UInt32 { return UInt32(GL_LOW_FLOAT) } public var MEDIUM_FLOAT : UInt32 { return UInt32(GL_MEDIUM_FLOAT) } public var HIGH_FLOAT : UInt32 { return UInt32(GL_HIGH_FLOAT) } public var LOW_INT : UInt32 { return UInt32(GL_LOW_INT) } public var MEDIUM_INT : UInt32 { return UInt32(GL_MEDIUM_INT) } public var HIGH_INT : UInt32 { return UInt32(GL_HIGH_INT) } - + /* Shader precision-specified types */ - - + + /* Framebuffers and renderbuffers */ - + public var FRAMEBUFFER : UInt32 { return UInt32(GL_FRAMEBUFFER) } - + public var RENDERBUFFER : UInt32 { return UInt32(GL_RENDERBUFFER) } - + public var RGBA4 : UInt32 { return UInt32(GL_RGBA4) } - + public var RGB565 : UInt32 { return UInt32(GL_RGB565) } - + public var RGB5_A1 : UInt32 { return UInt32(GL_RGB5_A1) } - + public var DEPTH_COMPONENT16 : UInt32 { return UInt32(GL_DEPTH_COMPONENT16) } - + public var STENCIL_INDEX8 : UInt32 { return UInt32(GL_STENCIL_INDEX8) } - + public var DEPTH_STENCIL : UInt32 { return 0x84F9 } - + public var RENDERBUFFER_WIDTH : UInt32 { return UInt32(GL_RENDERBUFFER_WIDTH) } - + public var RENDERBUFFER_HEIGHT : UInt32 { return UInt32(GL_RENDERBUFFER_HEIGHT) } - + public var RENDERBUFFER_INTERNAL_FORMAT : UInt32 { return UInt32(GL_RENDERBUFFER_INTERNAL_FORMAT) } - + public var RENDERBUFFER_RED_SIZE : UInt32 { return UInt32(GL_RENDERBUFFER_RED_SIZE) } - + public var RENDERBUFFER_GREEN_SIZE : UInt32 { return UInt32(GL_RENDERBUFFER_GREEN_SIZE) } - + public var RENDERBUFFER_BLUE_SIZE : UInt32 { return UInt32(GL_RENDERBUFFER_BLUE_SIZE) } - + public var RENDERBUFFER_ALPHA_SIZE : UInt32 { return UInt32(GL_RENDERBUFFER_ALPHA_SIZE) } - + public var RENDERBUFFER_DEPTH_SIZE : UInt32 { return UInt32(GL_RENDERBUFFER_DEPTH_SIZE) } - + public var RENDERBUFFER_STENCIL_SIZE : UInt32 { return UInt32(GL_RENDERBUFFER_STENCIL_SIZE) } - + public var FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE : UInt32 { return UInt32(GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) } - + public var FRAMEBUFFER_ATTACHMENT_OBJECT_NAME : UInt32 { return UInt32(GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) } - + public var FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL : UInt32 { return UInt32(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL) } - + public var FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE : UInt32 { return UInt32(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE) } - + public var COLOR_ATTACHMENT0 : UInt32 { return UInt32(GL_COLOR_ATTACHMENT0) } - + public var DEPTH_ATTACHMENT : UInt32 { return UInt32(GL_DEPTH_ATTACHMENT) } - + public var STENCIL_ATTACHMENT : UInt32 { return UInt32(GL_STENCIL_ATTACHMENT) } - + public var DEPTH_STENCIL_ATTACHMENT: UInt32 { return 0x821A } - + public var NONE : UInt32 { return UInt32(GL_NONE) } - + public var FRAMEBUFFER_COMPLETE : UInt32 { return UInt32(GL_FRAMEBUFFER_COMPLETE) } - + public var FRAMEBUFFER_INCOMPLETE_ATTACHMENT : UInt32 { return UInt32(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT) } - + public var FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT : UInt32 { return UInt32(GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT) } - + public var FRAMEBUFFER_INCOMPLETE_DIMENSIONS : UInt32 { return UInt32(GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS) } - + public var FRAMEBUFFER_UNSUPPORTED : UInt32 { return UInt32(GL_FRAMEBUFFER_UNSUPPORTED) } - + public var FRAMEBUFFER_BINDING : UInt32 { return UInt32(GL_FRAMEBUFFER_BINDING) } - + public var RENDERBUFFER_BINDING : UInt32 { return UInt32(GL_RENDERBUFFER_BINDING) } - + public var MAX_RENDERBUFFER_SIZE : UInt32 { return UInt32(GL_MAX_RENDERBUFFER_SIZE) } - + //public var INVALID_FRAMEBUFFER_OPERATION : UInt32 { return UInt32(GL_INVALID_FRAMEBUFFER_OPERATION) } - + /* Framebuffers and renderbuffers */ - + /* Pixel storage modes */ - + public var UNPACK_COLORSPACE_CONVERSION_WEBGL : UInt32 { 0x9243 } - + public var UNPACK_FLIP_Y_WEBGL : UInt32 { return 0x9240 } - + public var UNPACK_PREMULTIPLY_ALPHA_WEBGL : UInt32 { return 0x9241 } - + /* Pixel storage modes */ - - + + } diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/include/canvas_native.h b/packages/canvas/src-native/canvas-ios/CanvasNative/include/canvas_native.h index 22090130..63b8bf98 100644 --- a/packages/canvas/src-native/canvas-ios/CanvasNative/include/canvas_native.h +++ b/packages/canvas/src-native/canvas-ios/CanvasNative/include/canvas_native.h @@ -926,12 +926,24 @@ long long text_decoder_create(const char *decoding); const char *text_decoder_decode(long long decoder, const uint8_t *data, uintptr_t len); +U8Array *text_decoder_decode_bytes(long long decoder, const uint8_t *data, uintptr_t len); + const char *text_decoder_decode_i16(long long decoder, const int16_t *data, uintptr_t len); +U8Array *text_decoder_decode_i16_bytes(long long decoder, const int16_t *data, uintptr_t len); + const char *text_decoder_decode_i32(long long decoder, const int32_t *data, uintptr_t len); +U8Array *text_decoder_decode_i32_bytes(long long decoder, const int32_t *data, uintptr_t len); + +const U8Array *text_decoder_decode_to_bytes(long long decoder, const uint8_t *data, uintptr_t len); + const char *text_decoder_decode_u16(long long decoder, const uint16_t *data, uintptr_t len); +U8Array *text_decoder_decode_u16_bytes(long long decoder, const uint16_t *data, uintptr_t len); + +U8Array *text_decoder_decode_u32_bytes(long long decoder, const uint32_t *data, uintptr_t len); + const char *text_decoder_get_encoding(long long decoder); long long text_encoder_create(const char *encoding); diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/libs/arm64-iphoneos/libcanvasnative.a b/packages/canvas/src-native/canvas-ios/CanvasNative/libs/arm64-iphoneos/libcanvasnative.a index 07babd32..98f432c5 100644 Binary files a/packages/canvas/src-native/canvas-ios/CanvasNative/libs/arm64-iphoneos/libcanvasnative.a and b/packages/canvas/src-native/canvas-ios/CanvasNative/libs/arm64-iphoneos/libcanvasnative.a differ diff --git a/packages/canvas/src-native/canvas-ios/CanvasNative/libs/x86_64-iphonesimulator/libcanvasnative.a b/packages/canvas/src-native/canvas-ios/CanvasNative/libs/x86_64-iphonesimulator/libcanvasnative.a index 545d47b0..b716388e 100644 Binary files a/packages/canvas/src-native/canvas-ios/CanvasNative/libs/x86_64-iphonesimulator/libcanvasnative.a and b/packages/canvas/src-native/canvas-ios/CanvasNative/libs/x86_64-iphonesimulator/libcanvasnative.a differ diff --git a/packages/canvas/src-native/canvas-native/canvas-core/Cargo.toml b/packages/canvas/src-native/canvas-native/canvas-core/Cargo.toml index 498b7f81..67af675f 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/Cargo.toml +++ b/packages/canvas/src-native/canvas-native/canvas-core/Cargo.toml @@ -32,9 +32,9 @@ stringreader = "0.1.1" [target.'cfg(target_os="android")'.dependencies] jni = { version = "0.19.0", default-features = false } android_logger = "0.9.0" -skia-safe = { git = "https://github.com/triniwiz/rust-skia.git", rev = "d60f2c94d811d2bc661ae88f6aacc73031303bdc" , features = ["gl"] } +skia-safe = { version = "0.43.0", features = ["gl"] } [target.'cfg(target_os="ios")'.dependencies] -skia-safe = { git = "https://github.com/triniwiz/rust-skia.git", rev = "d60f2c94d811d2bc661ae88f6aacc73031303bdc" , features = ["gl"] } +skia-safe = { version = "0.43.0", features = ["gl"] } cocoa = { version = "0.24.0" } objc = { version = "0.2.4" } block = "0.1.6" diff --git a/packages/canvas/src-native/canvas-native/canvas-core/build.rs b/packages/canvas/src-native/canvas-native/canvas-core/build.rs index bffe9f43..ea3ec7d7 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/build.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/build.rs @@ -1,7 +1,7 @@ -use std::{env, fmt}; use std::borrow::Borrow; use std::fmt::{Display, Formatter}; use std::path::PathBuf; +use std::{env, fmt}; use bindgen; @@ -88,7 +88,7 @@ fn main() { println!("cargo:rustc-link-search=native={}", include_dir); println!("cargo:rustc-link-lib=jnigraphics"); // the "-l" flag println!("cargo:rustc-link-lib=android"); // the "-l" flag - // the resulting bindings. + // the resulting bindings. let bindings = bindgen::Builder::default() // The input header we would like to generate // bindings for. diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/context.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/context.rs index 5c15fe5c..6febea88 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/context.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/context.rs @@ -914,7 +914,7 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSCanvasRenderingContext2D_nativ } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSCanvasRenderingContext2D_nativeCreatePattern( +pub extern "C" fn Java_org_nativescript_canvas_TNSCanvasRenderingContext2D_nativeCreatePatternEncoded( env: JNIEnv, _: JClass, context: jlong, @@ -944,6 +944,39 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSCanvasRenderingContext2D_nativ } } +#[no_mangle] +pub extern "C" fn Java_org_nativescript_canvas_TNSCanvasRenderingContext2D_nativeCreatePattern( + env: JNIEnv, + _: JClass, + context: jlong, + image_data: jbyteArray, + width: jint, + height: jint, + repetition: jint, +) -> jlong { + use log::{debug, info}; + unsafe { + if context == 0 { + return 0; + } + let context: *mut Context = context as _; + let context = &mut *context; + if let Ok(val) = env.get_byte_array_elements(image_data, ReleaseMode::NoCopyBack) { + let length = val.size().unwrap_or(0) as usize; + let buf = std::slice::from_raw_parts( + std::mem::transmute::<*mut i8, *mut u8>(val.as_ptr()), + length, + ); + if let Some(image) = from_image_slice(buf, width, height) { + return Box::into_raw(Box::new(PaintStyle::Pattern( + context.create_pattern(image, Repetition::from(repetition)), + ))) as jlong; + } + } + 0 + } +} + #[no_mangle] pub extern "C" fn Java_org_nativescript_canvas_TNSCanvasRenderingContext2D_nativeCreatePatternWithAsset( _: JNIEnv, diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/gl/mod.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/gl/mod.rs index 39a05b50..7c59a3b3 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/gl/mod.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/gl/mod.rs @@ -1,4 +1,4 @@ -pub mod webgl_rendering_context; -pub mod webgl2_rendering_context; +pub(crate) mod surface_texture; mod texture_render; -pub(crate) mod surface_texture; \ No newline at end of file +pub mod webgl2_rendering_context; +pub mod webgl_rendering_context; diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/gl/surface_texture.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/gl/surface_texture.rs index 9b4608fc..2e6ad525 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/gl/surface_texture.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/gl/surface_texture.rs @@ -3,7 +3,6 @@ #![allow(non_snake_case)] #![allow(dead_code)] - #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct ANativeWindow { @@ -16,8 +15,6 @@ pub struct ASurfaceTexture { _unused: [u8; 0], } - - extern "system" { #[doc = " Release the reference to the native ASurfaceTexture acquired with"] #[doc = " ASurfaceTexture_fromSurfaceTexture()."] @@ -127,4 +124,4 @@ extern "system" { #[doc = ""] #[doc = " \\param st A ASurfaceTexture reference acquired with ASurfaceTexture_fromSurfaceTexture()"] pub fn ASurfaceTexture_getTimestamp(st: *mut ASurfaceTexture) -> i64; -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/gl/texture_render.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/gl/texture_render.rs index 764efebc..984c3d0c 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/gl/texture_render.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/gl/texture_render.rs @@ -1,7 +1,7 @@ use std::os::raw::c_void; use jni::objects::{JClass, JObject, ReleaseMode}; -use jni::sys::{jfloatArray, jint, jboolean}; +use jni::sys::{jboolean, jfloatArray, jint}; use jni::JNIEnv; const SURFACE_TEXTURE_CLASS: &'static str = "android/graphics/SurfaceTexture"; @@ -69,8 +69,18 @@ pub unsafe extern "C" fn Java_org_nativescript_canvas_TextureRender_nativeDrawFr gl_bindings::glBindRenderbuffer(gl_bindings::GL_RENDERBUFFER, rbo as u32); if render_width != width || render_height != height { - gl_bindings::glRenderbufferStorage(gl_bindings::GL_RENDERBUFFER, gl_bindings::GL_DEPTH24_STENCIL8, width, height); - gl_bindings::glFramebufferRenderbuffer(gl_bindings::GL_FRAMEBUFFER, gl_bindings::GL_DEPTH_STENCIL_ATTACHMENT, gl_bindings::GL_RENDERBUFFER, rbo as u32); + gl_bindings::glRenderbufferStorage( + gl_bindings::GL_RENDERBUFFER, + gl_bindings::GL_DEPTH24_STENCIL8, + width, + height, + ); + gl_bindings::glFramebufferRenderbuffer( + gl_bindings::GL_FRAMEBUFFER, + gl_bindings::GL_DEPTH_STENCIL_ATTACHMENT, + gl_bindings::GL_RENDERBUFFER, + rbo as u32, + ); gl_bindings::glBindTexture(gl_bindings::GL_TEXTURE_2D, previous_texture[0] as u32); gl_bindings::glTexImage2D( @@ -139,7 +149,6 @@ pub unsafe extern "C" fn Java_org_nativescript_canvas_TextureRender_nativeDrawFr gl_bindings::glClearColor(0., 0., 0., 1.); gl_bindings::glClear(gl_bindings::GL_COLOR_BUFFER_BIT | gl_bindings::GL_DEPTH_BUFFER_BIT); - gl_bindings::glUseProgram(program as u32); gl_bindings::glBindBuffer(gl_bindings::GL_ARRAY_BUFFER, array_buffer as u32); gl_bindings::glVertexAttribPointer( @@ -153,19 +162,15 @@ pub unsafe extern "C" fn Java_org_nativescript_canvas_TextureRender_nativeDrawFr gl_bindings::glEnableVertexAttribArray(pos as u32); - let _ = env.call_method(surface_texture_object, "updateTexImage", "()V", &[]); - let _ = env.call_method( - surface_texture_object, - "getTransformMatrix", - "([F)V", - &[matrix.into()], - ); - - + let _ = env.call_method( + surface_texture_object, + "getTransformMatrix", + "([F)V", + &[matrix.into()], + ); if let Ok(matrix) = env.get_primitive_array_critical(matrix, ReleaseMode::CopyBack) { - // super::surface_texture::ASurfaceTexture_updateTexImage(std::mem::transmute( // surface_texture_object.into_inner(), // )); @@ -221,14 +226,17 @@ pub unsafe extern "C" fn Java_org_nativescript_canvas_TextureRender_nativeDrawFr gl_bindings::glDrawArrays(gl_bindings::GL_TRIANGLE_STRIP, 0, draw_count); - // gl_bindings::glFinish(); + // gl_bindings::glFinish(); //gl_bindings::glBindTexture(gl_bindings::GL_TEXTURE_EXTERNAL_OES, 0); // gl_bindings::glBindRenderbuffer(gl_bindings::GL_RENDERBUFFER, previous_render_buffer[0] as u32); } - gl_bindings::glBindRenderbuffer(gl_bindings::GL_RENDERBUFFER, previous_render_buffer[0] as u32); + gl_bindings::glBindRenderbuffer( + gl_bindings::GL_RENDERBUFFER, + previous_render_buffer[0] as u32, + ); gl_bindings::glBindFramebuffer(gl_bindings::GL_FRAMEBUFFER, previous_frame_buffer[0] as u32); gl_bindings::glViewport( diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/gradient.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/gradient.rs index 7c843a83..bf2a8ad5 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/gradient.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/gradient.rs @@ -1,14 +1,19 @@ use std::ffi::CStr; use std::os::raw::{c_char, c_float, c_longlong}; -use jni::JNIEnv; use jni::objects::{JClass, JString}; +use jni::JNIEnv; use crate::common::context::fill_and_stroke_styles::paint::PaintStyle; #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSCanvasGradient_nativeAddColorStop(env: JNIEnv, - _: JClass, style: c_longlong, stop: c_float, color: JString) { +pub extern "C" fn Java_org_nativescript_canvas_TNSCanvasGradient_nativeAddColorStop( + env: JNIEnv, + _: JClass, + style: c_longlong, + stop: c_float, + color: JString, +) { if style == 0 { return; } @@ -20,16 +25,19 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSCanvasGradient_nativeAddColorS if let Ok(color) = env.get_string(color) { let color = color.to_string_lossy(); if let Ok(color) = color.as_ref().parse::() { - gradient.add_color_stop(stop, skia_safe::Color::from_argb( - (color.a * 255.0) as u8, - color.r, - color.g, - color.b, - )) + gradient.add_color_stop( + stop, + skia_safe::Color::from_argb( + (color.a * 255.0) as u8, + color.r, + color.g, + color.b, + ), + ) } } } _ => {} } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/image_asset.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/image_asset.rs index 445388bd..8e9946f6 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/image_asset.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/image_asset.rs @@ -2,9 +2,9 @@ #![allow(non_camel_case_types)] #![allow(non_snake_case)] -use jni::JNIEnv; use jni::objects::{JClass, JString}; -use jni::sys::{jboolean, jbyteArray, jint, jlong, JNI_FALSE, JNI_TRUE, jobject, jstring}; +use jni::sys::{jboolean, jbyteArray, jint, jlong, jobject, jstring, JNI_FALSE, JNI_TRUE}; +use jni::JNIEnv; use crate::common::context::image_asset::{ImageAsset, OutputFormat}; @@ -37,7 +37,6 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSImageAsset_nativeGetBytes( } } - #[no_mangle] pub extern "C" fn Java_org_nativescript_canvas_TNSImageAsset_nativeGetWidth( _env: JNIEnv, @@ -153,7 +152,6 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSImageAsset_nativeSave( JNI_FALSE } - #[no_mangle] pub extern "C" fn Java_org_nativescript_canvas_TNSImageAsset_nativeGetError( env: JNIEnv, @@ -230,7 +228,6 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSImageAsset_nativeLoadAssetPath JNI_FALSE } - #[no_mangle] pub extern "C" fn Java_org_nativescript_canvas_TNSImageAsset_nativeLoadAssetBytes( env: JNIEnv, @@ -244,7 +241,9 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSImageAsset_nativeLoadAssetByte if let Ok(size) = env.get_array_length(buffer) { let mut buf = vec![0u8; size as usize]; unsafe { - if let Ok(_) = env.get_byte_array_region(buffer, 0, std::mem::transmute(buf.as_mut_slice())) { + if let Ok(_) = + env.get_byte_array_region(buffer, 0, std::mem::transmute(buf.as_mut_slice())) + { let asset: *mut ImageAsset = asset as _; let asset = &mut *asset; if asset.load_from_bytes(buf.as_slice()) { diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/image_bitmap.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/image_bitmap.rs index 90c399db..dbadcf2c 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/image_bitmap.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/image_bitmap.rs @@ -154,8 +154,6 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSImageBitmap_nativeCreateFromBu } } - - #[no_mangle] pub extern "C" fn Java_org_nativescript_canvas_TNSImageBitmap_nativeCreateFromBufferEncoded( env: JNIEnv, diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/image_data.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/image_data.rs index 72dc85a6..3c53ca4f 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/image_data.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/image_data.rs @@ -1,23 +1,25 @@ -use jni::JNIEnv; use jni::objects::JClass; use jni::sys::{jint, jlong, jobject}; +use jni::JNIEnv; use crate::common::context::pixel_manipulation::image_data::ImageData; #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeInit(_: JNIEnv, - _: JClass, width: jint, height: jint) -> jlong { - Box::into_raw( - Box::new( - ImageData::new(width, height) - ) - ) as jlong +pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeInit( + _: JNIEnv, + _: JClass, + width: jint, + height: jint, +) -> jlong { + Box::into_raw(Box::new(ImageData::new(width, height))) as jlong } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeWidth(_: JNIEnv, - _: JClass, image_data: jlong) -> jint { +pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeWidth( + _: JNIEnv, + _: JClass, + image_data: jlong, +) -> jint { if image_data == 0 { return 0; } @@ -29,8 +31,11 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeWidth(_: JNIEn } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeHeight(_: JNIEnv, - _: JClass, image_data: jlong) -> jint { +pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeHeight( + _: JNIEnv, + _: JClass, + image_data: jlong, +) -> jint { if image_data == 0 { return 0; } @@ -41,10 +46,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeHeight(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeData(env: JNIEnv, - _: JClass, image_data: jlong) -> jobject { +pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeData( + env: JNIEnv, + _: JClass, + image_data: jlong, +) -> jobject { if image_data == 0 { let mut slice = [0u8; 0]; return env.new_direct_byte_buffer(&mut slice).unwrap().into_inner(); @@ -62,8 +69,11 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeData(env: JNIE } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeDataLength(_: JNIEnv, - _: JClass, image_data: jlong) -> jint { +pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeDataLength( + _: JNIEnv, + _: JClass, + image_data: jlong, +) -> jint { if image_data == 0 { return 0; } @@ -74,10 +84,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeDataLength(_: } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeDestroy(_: JNIEnv, - _: JClass, image_data: jlong) { +pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeDestroy( + _: JNIEnv, + _: JClass, + image_data: jlong, +) { if image_data == 0 { return; } @@ -86,4 +98,3 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSImageData_nativeDestroy(_: JNI let _ = Box::from_raw(image_data); } } - diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/matrix.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/matrix.rs index 36b6b88b..265de892 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/matrix.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/matrix.rs @@ -1,23 +1,24 @@ -use jni::JNIEnv; use jni::objects::JClass; use jni::sys::{jfloat, jfloatArray, jlong}; +use jni::JNIEnv; use crate::common::context::matrix::Matrix; #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeInit(_: JNIEnv, - _: JClass) -> jlong { - Box::into_raw( - Box::new( - Matrix::new() - ) - ) as jlong +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeInit( + _: JNIEnv, + _: JClass, +) -> jlong { + Box::into_raw(Box::new(Matrix::new())) as jlong } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeUpdate(env: JNIEnv, - _: JClass, matrix: jlong, data: jfloatArray) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeUpdate( + env: JNIEnv, + _: JClass, + matrix: jlong, + data: jfloatArray, +) { if matrix == 0 { return; } @@ -31,10 +32,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeUpdate(env: JN } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeA(_: JNIEnv, - _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeA( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -46,7 +49,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeA(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetA(_: JNIEnv, _: JClass, matrix: jlong, a: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetA( + _: JNIEnv, + _: JClass, + matrix: jlong, + a: jfloat, +) { if matrix == 0 { return; } @@ -57,9 +65,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetA(_: JNIEnv } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeB(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeB( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -71,7 +82,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeB(_: JNIEnv, _ } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetB(_: JNIEnv, _: JClass, matrix: jlong, b: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetB( + _: JNIEnv, + _: JClass, + matrix: jlong, + b: jfloat, +) { if matrix == 0 { return; } @@ -82,9 +98,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetB(_: JNIEnv } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeC(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeC( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -96,7 +115,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeC(_: JNIEnv, _ } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetC(_: JNIEnv, _: JClass, matrix: jlong, c: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetC( + _: JNIEnv, + _: JClass, + matrix: jlong, + c: jfloat, +) { if matrix == 0 { return; } @@ -108,7 +132,11 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetC(_: JNIEnv } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeD(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeD( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -120,7 +148,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeD(_: JNIEnv, _ } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetD(_: JNIEnv, _: JClass, matrix: jlong, d: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetD( + _: JNIEnv, + _: JClass, + matrix: jlong, + d: jfloat, +) { if matrix == 0 { return; } @@ -132,7 +165,11 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetD(_: JNIEnv } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeE(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeE( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -144,7 +181,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeE(_: JNIEnv, _ } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetE(_: JNIEnv, _: JClass, matrix: jlong, e: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetE( + _: JNIEnv, + _: JClass, + matrix: jlong, + e: jfloat, +) { if matrix == 0 { return; } @@ -156,7 +198,11 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetE(_: JNIEnv } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeF(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeF( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -168,7 +214,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeF(_: JNIEnv, _ } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetF(_: JNIEnv, _: JClass, matrix: jlong, f: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetF( + _: JNIEnv, + _: JClass, + matrix: jlong, + f: jfloat, +) { if matrix == 0 { return; } @@ -179,9 +230,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetF(_: JNIEnv } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM11(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM11( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -193,7 +247,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM11(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM11(_: JNIEnv, _: JClass, matrix: jlong, m11: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM11( + _: JNIEnv, + _: JClass, + matrix: jlong, + m11: jfloat, +) { if matrix == 0 { return; } @@ -204,9 +263,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM11(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM12(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM12( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -218,7 +280,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM12(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM12(_: JNIEnv, _: JClass, matrix: jlong, m12: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM12( + _: JNIEnv, + _: JClass, + matrix: jlong, + m12: jfloat, +) { if matrix == 0 { return; } @@ -229,9 +296,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM12(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM13(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM13( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -243,7 +313,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM13(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM13(_: JNIEnv, _: JClass, matrix: jlong, m13: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM13( + _: JNIEnv, + _: JClass, + matrix: jlong, + m13: jfloat, +) { if matrix == 0 { return; } @@ -254,9 +329,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM13(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM14(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM14( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -268,7 +346,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM14(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM14(_: JNIEnv, _: JClass, matrix: jlong, m14: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM14( + _: JNIEnv, + _: JClass, + matrix: jlong, + m14: jfloat, +) { if matrix == 0 { return; } @@ -279,9 +362,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM14(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM21(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM21( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -293,7 +379,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM21(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM21(_: JNIEnv, _: JClass, matrix: jlong, m21: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM21( + _: JNIEnv, + _: JClass, + matrix: jlong, + m21: jfloat, +) { if matrix == 0 { return; } @@ -304,9 +395,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM21(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM22(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM22( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -318,7 +412,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM22(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM22(_: JNIEnv, _: JClass, matrix: jlong, m22: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM22( + _: JNIEnv, + _: JClass, + matrix: jlong, + m22: jfloat, +) { if matrix == 0 { return; } @@ -329,9 +428,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM22(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM23(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM23( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -343,7 +445,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM23(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM23(_: JNIEnv, _: JClass, matrix: jlong, m23: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM23( + _: JNIEnv, + _: JClass, + matrix: jlong, + m23: jfloat, +) { if matrix == 0 { return; } @@ -354,9 +461,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM23(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM24(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM24( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -368,7 +478,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM24(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM24(_: JNIEnv, _: JClass, matrix: jlong, m24: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM24( + _: JNIEnv, + _: JClass, + matrix: jlong, + m24: jfloat, +) { if matrix == 0 { return; } @@ -379,9 +494,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM24(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM31(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM31( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -393,7 +511,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM31(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM31(_: JNIEnv, _: JClass, matrix: jlong, m31: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM31( + _: JNIEnv, + _: JClass, + matrix: jlong, + m31: jfloat, +) { if matrix == 0 { return; } @@ -404,9 +527,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM31(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM32(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM32( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -418,7 +544,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM32(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM32(_: JNIEnv, _: JClass, matrix: jlong, m32: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM32( + _: JNIEnv, + _: JClass, + matrix: jlong, + m32: jfloat, +) { if matrix == 0 { return; } @@ -429,9 +560,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM32(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM33(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM33( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -443,7 +577,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM33(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM33(_: JNIEnv, _: JClass, matrix: jlong, m33: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM33( + _: JNIEnv, + _: JClass, + matrix: jlong, + m33: jfloat, +) { if matrix == 0 { return; } @@ -454,9 +593,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM33(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM34(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM34( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -468,7 +610,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM34(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM34(_: JNIEnv, _: JClass, matrix: jlong, m34: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM34( + _: JNIEnv, + _: JClass, + matrix: jlong, + m34: jfloat, +) { if matrix == 0 { return; } @@ -479,9 +626,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM34(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM41(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM41( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -493,7 +643,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM41(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM41(_: JNIEnv, _: JClass, matrix: jlong, m41: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM41( + _: JNIEnv, + _: JClass, + matrix: jlong, + m41: jfloat, +) { if matrix == 0 { return; } @@ -504,9 +659,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM41(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM42(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM42( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -518,7 +676,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM42(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM42(_: JNIEnv, _: JClass, matrix: jlong, m42: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM42( + _: JNIEnv, + _: JClass, + matrix: jlong, + m42: jfloat, +) { if matrix == 0 { return; } @@ -529,9 +692,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM42(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM43(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM43( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -543,7 +709,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM43(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM43(_: JNIEnv, _: JClass, matrix: jlong, m43: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM43( + _: JNIEnv, + _: JClass, + matrix: jlong, + m43: jfloat, +) { if matrix == 0 { return; } @@ -554,9 +725,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM43(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM44(_: JNIEnv, _: JClass, matrix: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM44( + _: JNIEnv, + _: JClass, + matrix: jlong, +) -> jfloat { if matrix == 0 { return 0.0; } @@ -568,7 +742,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeM44(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM44(_: JNIEnv, _: JClass, matrix: jlong, m44: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM44( + _: JNIEnv, + _: JClass, + matrix: jlong, + m44: jfloat, +) { if matrix == 0 { return; } @@ -579,9 +758,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeSetM44(_: JNIE } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeDestroy(_: JNIEnv, _: JClass, matrix: jlong) { +pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeDestroy( + _: JNIEnv, + _: JClass, + matrix: jlong, +) { if matrix == 0 { return; } @@ -589,4 +771,4 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSDOMMatrix_nativeDestroy(_: JNI let matrix: *mut Matrix = matrix as _; let _ = Box::from_raw(matrix); } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/mod.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/mod.rs index 32cf7159..6c25d366 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/mod.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/mod.rs @@ -1,25 +1,28 @@ use std::os::raw::c_void; use android_logger::Config; -use jni::JNIEnv; use jni::objects::{JByteBuffer, JClass, JObject, JString}; -use jni::sys::{jboolean, jbyteArray, jfloat, jint, jlong, JNI_FALSE, JNI_TRUE, jobject, jstring}; -use log::{debug, info}; +use jni::sys::{jboolean, jbyteArray, jfloat, jint, jlong, jobject, jstring, JNI_FALSE, JNI_TRUE}; +use jni::JNIEnv; use log::Level; -use skia_safe::{AlphaType, Color, ColorType, EncodedImageFormat, ImageInfo, IPoint, ISize, PixelGeometry, Rect, Size, Surface, RCHandle}; +use log::{debug, info}; use skia_safe::gpu::gl::Interface; use skia_safe::image::CachingHint; +use skia_safe::{ + AlphaType, Color, ColorType, EncodedImageFormat, IPoint, ISize, ImageInfo, PixelGeometry, + RCHandle, Rect, Size, Surface, +}; - -use crate::common::context::{Context, Device, State}; use crate::common::context::paths::path::Path; use crate::common::context::text_styles::text_direction::TextDirection; +use crate::common::context::{Context, Device, State}; use crate::common::to_data_url; pub mod context; pub mod gl; pub mod gradient; pub mod image_asset; +pub mod image_bitmap; pub mod image_data; pub mod matrix; pub mod paint; @@ -30,7 +33,6 @@ pub mod text_decoder; pub mod text_encoder; pub mod text_metrics; pub mod utils; -pub mod image_bitmap; const GR_GL_RGB565: u32 = 0x8D62; const GR_GL_RGBA8: u32 = 0x8058; @@ -337,9 +339,7 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSCanvas_nativeSnapshotCanvas( context.surface.flush(); let ss = context.surface.image_snapshot(); match ss.encode_to_data(EncodedImageFormat::PNG) { - None => { - env.byte_array_from_slice(&[]).unwrap() - } + None => env.byte_array_from_slice(&[]).unwrap(), Some(data) => { let bytes = data.to_vec(); env.byte_array_from_slice(bytes.as_slice()).unwrap() diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/paint.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/paint.rs index 89439703..39a2a29b 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/paint.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/paint.rs @@ -1,16 +1,21 @@ use std::str::FromStr; use css_color_parser::{Color, ColorParseError}; -use jni::JNIEnv; use jni::objects::{JClass, JString}; use jni::sys::{jlong, jstring}; +use jni::JNIEnv; use log::{debug, info}; -use crate::common::context::Context; use crate::common::context::fill_and_stroke_styles::paint::PaintStyle; +use crate::common::context::Context; use crate::common::utils::color::to_parsed_color; -pub(crate) fn paint_style_set_color_with_string(env: JNIEnv, context: jlong, is_fill: bool, color: JString) { +pub(crate) fn paint_style_set_color_with_string( + env: JNIEnv, + context: jlong, + is_fill: bool, + color: JString, +) { if context == 0 || color.is_null() { return; } @@ -20,11 +25,12 @@ pub(crate) fn paint_style_set_color_with_string(env: JNIEnv, context: jlong, is_ if let Ok(color) = env.get_string(color) { let color = color.to_string_lossy(); if let Ok(color) = css_color_parser::Color::from_str(color.as_ref()) { - let style = PaintStyle::Color( - skia_safe::Color::from_argb( - (color.a * 255.0) as u8, color.r, color.g, color.b, - ) - ); + let style = PaintStyle::Color(skia_safe::Color::from_argb( + (color.a * 255.0) as u8, + color.r, + color.g, + color.b, + )); if is_fill { context.set_fill_style(style); } else { @@ -36,17 +42,31 @@ pub(crate) fn paint_style_set_color_with_string(env: JNIEnv, context: jlong, is_ } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSCanvasRenderingContext2D_nativeSetFillColorWithString(env: JNIEnv, _: JClass, context: jlong, color: JString) { +pub extern "C" fn Java_org_nativescript_canvas_TNSCanvasRenderingContext2D_nativeSetFillColorWithString( + env: JNIEnv, + _: JClass, + context: jlong, + color: JString, +) { paint_style_set_color_with_string(env, context, true, color); } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSCanvasRenderingContext2D_nativeSetStrokeColorWithString(env: JNIEnv, _: JClass, context: jlong, color: JString) { +pub extern "C" fn Java_org_nativescript_canvas_TNSCanvasRenderingContext2D_nativeSetStrokeColorWithString( + env: JNIEnv, + _: JClass, + context: jlong, + color: JString, +) { paint_style_set_color_with_string(env, context, false, color); } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSColorStyle_nativeDestroy(_: JNIEnv, _: JClass, style: jlong) { +pub extern "C" fn Java_org_nativescript_canvas_TNSColorStyle_nativeDestroy( + _: JNIEnv, + _: JClass, + style: jlong, +) { if style == 0 { return; } @@ -57,7 +77,11 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSColorStyle_nativeDestroy(_: JN } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSColor_nativeGetColorString(env: JNIEnv, _: JClass, color: jlong) -> jstring { +pub extern "C" fn Java_org_nativescript_canvas_TNSColor_nativeGetColorString( + env: JNIEnv, + _: JClass, + color: jlong, +) -> jstring { if color == 0 { return env.new_string("").unwrap().into_inner(); } @@ -69,7 +93,7 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSColor_nativeGetColorString(env let string = to_parsed_color(*color); env.new_string(string).unwrap().into_inner() } - _ => env.new_string("").unwrap().into_inner() + _ => env.new_string("").unwrap().into_inner(), } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/path.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/path.rs index fd0acf5b..13086de2 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/path.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/path.rs @@ -1,64 +1,52 @@ -use jni::JNIEnv; use jni::objects::{JClass, JString}; use jni::sys::{jfloat, jlong}; +use jni::JNIEnv; use crate::common::context::matrix::Matrix; use crate::common::context::paths::path::Path; #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeInit(_: JNIEnv, - _: JClass) -> jlong { - Box::into_raw( - Box::new( - Path::new() - ) - ) as jlong +pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeInit(_: JNIEnv, _: JClass) -> jlong { + Box::into_raw(Box::new(Path::new())) as jlong } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeCreateWithPath(_: JNIEnv, - _: JClass, path: jlong) -> jlong { +pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeCreateWithPath( + _: JNIEnv, + _: JClass, + path: jlong, +) -> jlong { if path == 0 { - return Box::into_raw( - Box::new( - Path::new() - ) - ) as jlong; + return Box::into_raw(Box::new(Path::new())) as jlong; } unsafe { let path: *mut Path = path as _; let path = &mut *path; - Box::into_raw( - Box::new( - Path::from_path(&path.path) - ) - ) as jlong + Box::into_raw(Box::new(Path::from_path(&path.path))) as jlong } } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeCreateWithString(env: JNIEnv, - _: JClass, string: JString) -> jlong { +pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeCreateWithString( + env: JNIEnv, + _: JClass, + string: JString, +) -> jlong { if let Ok(string) = env.get_string(string) { let string = string.to_string_lossy(); - Box::into_raw( - Box::new( - Path::from_str(string.as_ref()) - ) - ) as jlong + Box::into_raw(Box::new(Path::from_str(string.as_ref()))) as jlong } else { - return Box::into_raw( - Box::new( - Path::new() - ) - ) as jlong; + return Box::into_raw(Box::new(Path::new())) as jlong; } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeAddPath(_: JNIEnv, - _: JClass, path: jlong, path_to_add: jlong) { +pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeAddPath( + _: JNIEnv, + _: JClass, + path: jlong, + path_to_add: jlong, +) { if path == 0 || path_to_add == 0 { return; } @@ -72,8 +60,13 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeAddPath(_: JNIEnv } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeAddPathWithMatrix(_: JNIEnv, - _: JClass, path: jlong, path_to_add: jlong, matrix: jlong) { +pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeAddPathWithMatrix( + _: JNIEnv, + _: JClass, + path: jlong, + path_to_add: jlong, + matrix: jlong, +) { if path == 0 || path_to_add == 0 || matrix == 0 { return; } @@ -89,8 +82,11 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeAddPathWithMatrix } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeClosePath(_: JNIEnv, - _: JClass, path: jlong) { +pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeClosePath( + _: JNIEnv, + _: JClass, + path: jlong, +) { if path == 0 { return; } @@ -102,8 +98,13 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeClosePath(_: JNIE } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeMoveTo(_: JNIEnv, - _: JClass, path: jlong, x: jfloat, y: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeMoveTo( + _: JNIEnv, + _: JClass, + path: jlong, + x: jfloat, + y: jfloat, +) { if path == 0 { return; } @@ -115,8 +116,13 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeMoveTo(_: JNIEnv, } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeLineTo(_: JNIEnv, - _: JClass, path: jlong, x: jfloat, y: jfloat) { +pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeLineTo( + _: JNIEnv, + _: JClass, + path: jlong, + x: jfloat, + y: jfloat, +) { if path == 0 { return; } @@ -127,7 +133,6 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeLineTo(_: JNIEnv, } } - #[no_mangle] pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeBezierCurveTo( _: JNIEnv, @@ -150,7 +155,6 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeBezierCurveTo( } } - #[no_mangle] pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeQuadraticCurveTo( _: JNIEnv, @@ -193,7 +197,6 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeArc( } } - #[no_mangle] pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeArcTo( _: JNIEnv, @@ -268,7 +271,6 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeRect( } } - #[no_mangle] pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeDestroy( _: JNIEnv, @@ -282,4 +284,4 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSPath2D_nativeDestroy( let path: *mut Path = path as _; let _ = Box::from_raw(path); } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/pattern.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/pattern.rs index 86893651..b5e9c526 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/pattern.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/pattern.rs @@ -1,13 +1,17 @@ -use jni::JNIEnv; use jni::objects::JClass; use jni::sys::jlong; +use jni::JNIEnv; use crate::common::context::fill_and_stroke_styles::paint::PaintStyle; use crate::common::context::matrix::Matrix; #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSPattern_nativeSetTransform(_: JNIEnv, - _: JClass, pattern: jlong, matrix: jlong) { +pub extern "C" fn Java_org_nativescript_canvas_TNSPattern_nativeSetTransform( + _: JNIEnv, + _: JClass, + pattern: jlong, + matrix: jlong, +) { if pattern == 0 || matrix == 0 { return; } @@ -17,10 +21,8 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSPattern_nativeSetTransform(_: let matrix: *mut Matrix = matrix as _; let matrix = &mut *matrix; match pattern { - PaintStyle::Pattern(pattern) => { - pattern.set_pattern_transform(&matrix) - } + PaintStyle::Pattern(pattern) => pattern.set_pattern_transform(&matrix), _ => {} } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/svg.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/svg.rs index 8c848426..5ca03851 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/svg.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/svg.rs @@ -1,27 +1,35 @@ -use jni::JNIEnv; use jni::objects::{JClass, JString}; use jni::sys::jlong; +use jni::JNIEnv; use crate::common::context::Context; #[allow(non_snake_case)] #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSSVG_nativeDrawSVG(env: JNIEnv, - _: JClass, context: jlong, svg: JString) { - unsafe { - let context: *mut Context = context as _; - let context = &mut *context; - if let Ok(svg) = env.get_string(svg) { - let svg = svg.to_string_lossy(); - crate::common::svg::draw_svg(context, svg.as_ref()); - } - } +pub extern "C" fn Java_org_nativescript_canvas_TNSSVG_nativeDrawSVG( + env: JNIEnv, + _: JClass, + context: jlong, + svg: JString, +) { + unsafe { + let context: *mut Context = context as _; + let context = &mut *context; + if let Ok(svg) = env.get_string(svg) { + let svg = svg.to_string_lossy(); + crate::common::svg::draw_svg(context, svg.as_ref()); + } + } } #[allow(non_snake_case)] #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSSVG_nativeDrawSVGFromPath(env: JNIEnv, - _: JClass, context: jlong, path: JString) { +pub extern "C" fn Java_org_nativescript_canvas_TNSSVG_nativeDrawSVGFromPath( + env: JNIEnv, + _: JClass, + context: jlong, + path: JString, +) { unsafe { let context: *mut Context = context as _; let context = &mut *context; @@ -30,4 +38,4 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSSVG_nativeDrawSVGFromPath(env: crate::common::svg::draw_svg_from_path(context, path.as_ref()); } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/text_decoder.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/text_decoder.rs index 60d83cd3..ec8f9578 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/text_decoder.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/text_decoder.rs @@ -9,6 +9,7 @@ use jni::sys::{jbyteArray, jlong, jstring}; use jni::JNIEnv; use crate::common::context::text_decoder::TextDecoder; +use std::borrow::Borrow; #[no_mangle] pub extern "C" fn Java_org_nativescript_canvas_TNSTextDecoder_nativeInit( @@ -64,16 +65,35 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSTextDecoder_nativeDecodeBuffer let decoder: *mut TextDecoder = decoder as _; let decoder = &mut *decoder; let decoded = decoder.decode(buf.as_ptr(), buf.len()); - return match decoded.to_str() { - Ok(string) => env.new_string(string).unwrap().into_inner(), - Err(_) => env.new_string("").unwrap().into_inner(), - }; + env.new_string(decoded.to_string_lossy()) + .unwrap_or(env.new_string("").unwrap()) + .into_inner() } } else { env.new_string("").unwrap().into_inner() }; } +#[no_mangle] +pub extern "C" fn Java_org_nativescript_canvas_TNSTextDecoder_nativeDecodeBufferToBytes( + env: JNIEnv, + _: JClass, + decoder: jlong, + data: JByteBuffer, +) -> jbyteArray { + return if let Ok(buf) = env.get_direct_buffer_address(data) { + unsafe { + let decoder: *mut TextDecoder = decoder as _; + let decoder = &mut *decoder; + let buf = decoder.decode_as_bytes(buf.as_ptr(), buf.len()); + env.byte_array_from_slice(buf.as_slice()) + .unwrap_or(env.new_byte_array(0).unwrap()) + } + } else { + env.new_byte_array(0).unwrap() + }; +} + #[no_mangle] pub extern "C" fn Java_org_nativescript_canvas_TNSTextDecoder_nativeDecode( env: JNIEnv, @@ -93,12 +113,38 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSTextDecoder_nativeDecode( let decoder: *mut TextDecoder = decoder as _; let decoder = &mut *decoder; let decoded = decoder.decode(buf.as_ptr(), buf.len()); - return match decoded.to_str() { - Ok(string) => env.new_string(string).unwrap().into_inner(), - Err(_) => env.new_string("").unwrap().into_inner(), - }; + env.new_string(decoded.to_string_lossy()) + .unwrap_or(env.new_string("").unwrap()) + .into_inner() } } else { env.new_string("").unwrap().into_inner() }; } + +#[no_mangle] +pub extern "C" fn Java_org_nativescript_canvas_TNSTextDecoder_nativeDecodeToBytes( + env: JNIEnv, + _: JClass, + decoder: jlong, + data: jbyteArray, +) -> jbyteArray { + return if let Ok(val) = env.get_byte_array_elements(data, ReleaseMode::NoCopyBack) { + let length = val.size().unwrap_or(0) as usize; + let buf = unsafe { + std::slice::from_raw_parts( + std::mem::transmute::<*mut i8, *mut u8>(val.as_ptr()), + length, + ) + }; + unsafe { + let decoder: *mut TextDecoder = decoder as _; + let decoder = &mut *decoder; + let buf = decoder.decode_as_bytes(buf.as_ptr(), buf.len()); + env.byte_array_from_slice(buf.as_slice()) + .unwrap_or(env.new_byte_array(0).unwrap()) + } + } else { + env.new_byte_array(0).unwrap() + }; +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/text_encoder.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/text_encoder.rs index 2d8a8628..1bb7eb89 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/text_encoder.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/text_encoder.rs @@ -23,7 +23,7 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSTextEncoder_nativeInit( } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSTextEncoder_nativeDestroy( +pub extern "C" fn Java_org_nativescript_canvas_TNSTextEncoder_nativeDestroy( _: JNIEnv, _: JClass, encoder: jlong, diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/text_metrics.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/text_metrics.rs index a75100c1..13190c95 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/text_metrics.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/text_metrics.rs @@ -1,12 +1,15 @@ -use jni::JNIEnv; use jni::objects::JClass; use jni::sys::{jfloat, jlong}; +use jni::JNIEnv; use crate::common::context::drawing_text::text_metrics::TextMetrics; #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetWidth(_: JNIEnv, - _: JClass, metrics: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetWidth( + _: JNIEnv, + _: JClass, + metrics: jlong, +) -> jfloat { if metrics == 0 { return 0.0; } @@ -17,10 +20,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetWidth(_: } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetActualBoundingBoxLeft(_: JNIEnv, - _: JClass, metrics: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetActualBoundingBoxLeft( + _: JNIEnv, + _: JClass, + metrics: jlong, +) -> jfloat { if metrics == 0 { return 0.0; } @@ -31,10 +36,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetActualBou } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetActualBoundingBoxRight(_: JNIEnv, - _: JClass, metrics: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetActualBoundingBoxRight( + _: JNIEnv, + _: JClass, + metrics: jlong, +) -> jfloat { if metrics == 0 { return 0.0; } @@ -45,10 +52,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetActualBou } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetActualBoundingBoxAscent(_: JNIEnv, - _: JClass, metrics: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetActualBoundingBoxAscent( + _: JNIEnv, + _: JClass, + metrics: jlong, +) -> jfloat { if metrics == 0 { return 0.0; } @@ -60,8 +69,11 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetActualBou } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetActualBoundingBoxDescent(_: JNIEnv, - _: JClass, metrics: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetActualBoundingBoxDescent( + _: JNIEnv, + _: JClass, + metrics: jlong, +) -> jfloat { if metrics == 0 { return 0.0; } @@ -72,10 +84,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetActualBou } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetFontBoundingBoxAscent(_: JNIEnv, - _: JClass, metrics: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetFontBoundingBoxAscent( + _: JNIEnv, + _: JClass, + metrics: jlong, +) -> jfloat { if metrics == 0 { return 0.0; } @@ -86,10 +100,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetFontBound } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetFontBoundingBoxDescent(_: JNIEnv, - _: JClass, metrics: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetFontBoundingBoxDescent( + _: JNIEnv, + _: JClass, + metrics: jlong, +) -> jfloat { if metrics == 0 { return 0.0; } @@ -100,10 +116,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetFontBound } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetEmHeightAscent(_: JNIEnv, - _: JClass, metrics: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetEmHeightAscent( + _: JNIEnv, + _: JClass, + metrics: jlong, +) -> jfloat { if metrics == 0 { return 0.0; } @@ -115,8 +133,11 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetEmHeightA } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetEmHeightDescent(_: JNIEnv, - _: JClass, metrics: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetEmHeightDescent( + _: JNIEnv, + _: JClass, + metrics: jlong, +) -> jfloat { if metrics == 0 { return 0.0; } @@ -127,10 +148,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetEmHeightD } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetHangingBaseline(_: JNIEnv, - _: JClass, metrics: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetHangingBaseline( + _: JNIEnv, + _: JClass, + metrics: jlong, +) -> jfloat { if metrics == 0 { return 0.0; } @@ -141,10 +164,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetHangingBa } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetAlphabeticBaseline(_: JNIEnv, - _: JClass, metrics: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetAlphabeticBaseline( + _: JNIEnv, + _: JClass, + metrics: jlong, +) -> jfloat { if metrics == 0 { return 0.0; } @@ -155,10 +180,12 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetAlphabeti } } - #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetIdeographicBaseline(_: JNIEnv, - _: JClass, metrics: jlong) -> jfloat { +pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetIdeographicBaseline( + _: JNIEnv, + _: JClass, + metrics: jlong, +) -> jfloat { if metrics == 0 { return 0.0; } @@ -170,8 +197,11 @@ pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeGetIdeograph } #[no_mangle] -pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeDestroy(_: JNIEnv, - _: JClass, metrics: jlong) { +pub extern "C" fn Java_org_nativescript_canvas_TNSTextMetrics_nativeDestroy( + _: JNIEnv, + _: JClass, + metrics: jlong, +) { if metrics == 0 { return; } diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/utils/bitmap.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/utils/bitmap.rs index 07e928ae..78434915 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/utils/bitmap.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/utils/bitmap.rs @@ -3,7 +3,6 @@ #![allow(non_snake_case)] #![allow(dead_code)] - use std::os::raw::c_void; use jni::sys::jobject; diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/utils/image.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/utils/image.rs index 5bce6e16..3ac23592 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/utils/image.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/utils/image.rs @@ -1,22 +1,24 @@ use std::os::raw::c_void; -use jni::JNIEnv; +use super::bitmap::*; +use crate::android::utils::bitmap::AndroidBitmapInfo; use jni::objects::{JByteBuffer, JClass, JObject}; use jni::sys::{jbyteArray, jobject}; +use jni::JNIEnv; use log::{debug, info}; use std::borrow::Cow; -use super::bitmap::*; -use crate::android::utils::bitmap::AndroidBitmapInfo; -pub fn get_bytes_from_bitmap(env: JNIEnv, - bitmap: JObject) -> (Vec, AndroidBitmapInfo) { +pub fn get_bytes_from_bitmap(env: JNIEnv, bitmap: JObject) -> (Vec, AndroidBitmapInfo) { let native_interface = env.get_native_interface(); let bitmap = bitmap.into_inner(); let mut bitmap_info = std::mem::MaybeUninit::uninit(); unsafe { - if super::bitmap::AndroidBitmap_getInfo(native_interface as _, bitmap, bitmap_info.as_mut_ptr()) - < super::bitmap::ANDROID_BITMAP_RESULT_SUCCESS + if super::bitmap::AndroidBitmap_getInfo( + native_interface as _, + bitmap, + bitmap_info.as_mut_ptr(), + ) < super::bitmap::ANDROID_BITMAP_RESULT_SUCCESS { debug!("Get Bitmap Info Failed"); return (Vec::default(), Default::default()); @@ -38,7 +40,8 @@ pub fn get_bytes_from_bitmap(env: JNIEnv, unsafe { std::slice::from_raw_parts_mut(pixels as *mut u8, length as usize) }; let slice = slice.to_vec(); unsafe { - if super::bitmap::AndroidBitmap_unlockPixels(native_interface as _, bitmap) < super::bitmap::ANDROID_BITMAP_RESULT_SUCCESS + if super::bitmap::AndroidBitmap_unlockPixels(native_interface as _, bitmap) + < super::bitmap::ANDROID_BITMAP_RESULT_SUCCESS { debug!("Unlock Bitmap Failed"); } @@ -46,15 +49,21 @@ pub fn get_bytes_from_bitmap(env: JNIEnv, return (slice, bitmap_info); } -pub fn bitmap_handler(env: JNIEnv, - bitmap: JObject, handler: Box) { +pub fn bitmap_handler( + env: JNIEnv, + bitmap: JObject, + handler: Box, +) { let native_interface = env.get_native_interface(); let bitmap = bitmap.into_inner(); let mut bitmap_info = std::mem::MaybeUninit::uninit(); let mut empty_vec = Vec::default(); unsafe { - if super::bitmap::AndroidBitmap_getInfo(native_interface as _, bitmap, bitmap_info.as_mut_ptr()) - != super::bitmap::ANDROID_BITMAP_RESULT_SUCCESS + if super::bitmap::AndroidBitmap_getInfo( + native_interface as _, + bitmap, + bitmap_info.as_mut_ptr(), + ) != super::bitmap::ANDROID_BITMAP_RESULT_SUCCESS { debug!("Get Bitmap Info Failed"); let info = Default::default(); @@ -78,14 +87,14 @@ pub fn bitmap_handler(env: JNIEnv, unsafe { std::slice::from_raw_parts_mut(pixels as *mut u8, length as usize) }; handler(slice, &bitmap_info); unsafe { - if super::bitmap::AndroidBitmap_unlockPixels(native_interface as _, bitmap) != super::bitmap::ANDROID_BITMAP_RESULT_SUCCESS + if super::bitmap::AndroidBitmap_unlockPixels(native_interface as _, bitmap) + != super::bitmap::ANDROID_BITMAP_RESULT_SUCCESS { debug!("Unlock Bitmap Failed"); } } } - #[no_mangle] pub extern "C" fn Java_org_nativescript_canvas_Utils_nativeGetByteBufferFromBitmap( env: JNIEnv, @@ -93,7 +102,6 @@ pub extern "C" fn Java_org_nativescript_canvas_Utils_nativeGetByteBufferFromBitm bitmap: JObject, ) -> jbyteArray { let bytes = get_bytes_from_bitmap(env, bitmap); - env.byte_array_from_slice(bytes.0.as_slice()).unwrap_or( - env.new_byte_array(0).unwrap() - ) -} \ No newline at end of file + env.byte_array_from_slice(bytes.0.as_slice()) + .unwrap_or(env.new_byte_array(0).unwrap()) +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/android/utils/mod.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/android/utils/mod.rs index dff50095..bb59b796 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/android/utils/mod.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/android/utils/mod.rs @@ -1,2 +1,2 @@ +pub(crate) mod bitmap; pub mod image; -pub(crate) mod bitmap; \ No newline at end of file diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/compositing/composite_operation_type.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/compositing/composite_operation_type.rs index 1cf34efb..cc1ea9ab 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/compositing/composite_operation_type.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/compositing/composite_operation_type.rs @@ -65,7 +65,7 @@ impl Into for CompositeOperationType { CompositeOperationType::Hue => 22, CompositeOperationType::Saturation => 23, CompositeOperationType::Color => 24, - CompositeOperationType::Luminosity => 25 + CompositeOperationType::Luminosity => 25, } } } @@ -98,7 +98,7 @@ impl From for CompositeOperationType { 22 => CompositeOperationType::Hue, 23 => CompositeOperationType::Saturation, 24 => CompositeOperationType::Luminosity, - _ => CompositeOperationType::SourceOver + _ => CompositeOperationType::SourceOver, } } } diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/compositing/mod.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/compositing/mod.rs index 4d02d82f..07c6d10e 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/compositing/mod.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/compositing/mod.rs @@ -21,9 +21,18 @@ impl Context { pub fn set_global_composite_operation(&mut self, operation: CompositeOperationType) { self.state.global_composite_operation = operation; - self.state.paint.fill_paint_mut().set_blend_mode(operation.get_blend_mode()); - self.state.paint.stroke_paint_mut().set_blend_mode(operation.get_blend_mode()); - self.state.paint.image_paint_mut().set_blend_mode(operation.get_blend_mode()); + self.state + .paint + .fill_paint_mut() + .set_blend_mode(operation.get_blend_mode()); + self.state + .paint + .stroke_paint_mut() + .set_blend_mode(operation.get_blend_mode()); + self.state + .paint + .image_paint_mut() + .set_blend_mode(operation.get_blend_mode()); } pub fn global_composite_operation(&self) -> CompositeOperationType { diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/drawing_images/mod.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/drawing_images/mod.rs index 7caa078f..d43b1df0 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/drawing_images/mod.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/drawing_images/mod.rs @@ -20,10 +20,7 @@ impl Context { image, Some((&src_rect, SrcRectConstraint::Strict)), dst_rect, - skia_safe::SamplingOptions::from_filter_quality( - self.state.image_smoothing_quality.into(), - None, - ), + self.state.image_smoothing_quality, &paint, ); } @@ -38,10 +35,7 @@ impl Context { image, None, dst_rect, - skia_safe::SamplingOptions::from_filter_quality( - self.state.image_smoothing_quality.into(), - None, - ), + self.state.image_smoothing_quality, &paint, ); } @@ -54,10 +48,7 @@ impl Context { self.surface.canvas().draw_image_with_sampling_options( image, (x, y), - skia_safe::SamplingOptions::from_filter_quality( - self.state.image_smoothing_quality.into(), - None, - ), + self.state.image_smoothing_quality, Some(&paint), ); } diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/drawing_rectangles.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/drawing_rectangles.rs index 7317e548..5fd7d1b3 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/drawing_rectangles.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/drawing_rectangles.rs @@ -12,10 +12,9 @@ impl Context { paint.set_anti_alias(true); paint.set_style(Style::Fill); paint.set_blend_mode(BlendMode::Clear); - self.surface.canvas().draw_rect( - Rect::from_xywh(x, y, width, height), - &paint, - ); + self.surface + .canvas() + .draw_rect(Rect::from_xywh(x, y, width, height), &paint); } pub fn fill_rect(&mut self, rect: &Rect) { diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/drawing_text/text_metrics.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/drawing_text/text_metrics.rs index 8738b109..760fafa4 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/drawing_text/text_metrics.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/drawing_text/text_metrics.rs @@ -1,7 +1,7 @@ use std::os::raw::c_float; #[repr(C)] -#[derive(Clone,Copy, Debug)] +#[derive(Clone, Copy, Debug)] pub struct TextMetrics { pub(crate) width: c_float, pub(crate) actual_bounding_box_left: c_float, diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/drawing_text/typography.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/drawing_text/typography.rs index 7eb00987..c4d4878b 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/drawing_text/typography.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/drawing_text/typography.rs @@ -3,7 +3,7 @@ use std::os::raw::c_float; use skia_safe::{ font_style::{Slant, Weight, Width}, typeface::Typeface, - FontMetrics, FontMgr, FontStyle + FontMetrics, FontMgr, FontStyle, }; use crate::{ diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/fill_and_stroke_styles/gradient.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/fill_and_stroke_styles/gradient.rs index d7bafe3b..9080b7b8 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/fill_and_stroke_styles/gradient.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/fill_and_stroke_styles/gradient.rs @@ -1,7 +1,7 @@ use std::os::raw::c_float; -use skia_safe::{Color, Point, Shader, TileMode}; use skia_safe::gradient_shader::GradientShaderColors; +use skia_safe::{Color, Point, Shader, TileMode}; use crate::common::context::matrix::Matrix; @@ -37,38 +37,80 @@ impl Gradient { pub(crate) fn set_tile_mode(&mut self, mode: TileMode) { match self { - Gradient::Linear { ref mut tile_mode, .. } => { - *tile_mode = mode - } - Gradient::Radial { ref mut tile_mode, .. } => { - *tile_mode = mode - } + Gradient::Linear { + ref mut tile_mode, .. + } => *tile_mode = mode, + Gradient::Radial { + ref mut tile_mode, .. + } => *tile_mode = mode, } } pub fn to_shader(gradient: &Gradient) -> Option { match gradient { - Gradient::Linear { start, stop, stops, colors, matrix, tile_mode, .. } => { + Gradient::Linear { + start, + stop, + stops, + colors, + matrix, + tile_mode, + .. + } => { if let Some(matrix) = matrix { let matrix = matrix.matrix.to_m33(); Gradient::to_linear_gradient_shader( - *start, *stop, stops.as_slice(), colors.as_slice(), Some(&matrix), *tile_mode, + *start, + *stop, + stops.as_slice(), + colors.as_slice(), + Some(&matrix), + *tile_mode, ) } else { Gradient::to_linear_gradient_shader( - *start, *stop, stops.as_slice(), colors.as_slice(), None, *tile_mode, + *start, + *stop, + stops.as_slice(), + colors.as_slice(), + None, + *tile_mode, ) } } - Gradient::Radial { start, start_radius, stop, stop_radius, stops, colors, matrix, tile_mode, .. } => { + Gradient::Radial { + start, + start_radius, + stop, + stop_radius, + stops, + colors, + matrix, + tile_mode, + .. + } => { if let Some(matrix) = matrix { let matrix = matrix.matrix.to_m33(); Gradient::to_radial_gradient_shader( - *start, *start_radius, *stop, *stop_radius, stops.as_slice(), colors.as_slice(), Some(&matrix), *tile_mode, + *start, + *start_radius, + *stop, + *stop_radius, + stops.as_slice(), + colors.as_slice(), + Some(&matrix), + *tile_mode, ) } else { Gradient::to_radial_gradient_shader( - *start, *start_radius, *stop, *stop_radius, stops.as_slice(), colors.as_slice(), None, *tile_mode, + *start, + *start_radius, + *stop, + *stop_radius, + stops.as_slice(), + colors.as_slice(), + None, + *tile_mode, ) } } diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/fill_and_stroke_styles/paint.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/fill_and_stroke_styles/paint.rs index 40282cda..9496f14a 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/fill_and_stroke_styles/paint.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/fill_and_stroke_styles/paint.rs @@ -1,10 +1,11 @@ use std::os::raw::c_float; use skia_safe::paint::{Cap, Style}; -use skia_safe::{Color, FilterQuality, Point}; +use skia_safe::{Color, Point}; use crate::common::context::fill_and_stroke_styles::gradient::Gradient; use crate::common::context::fill_and_stroke_styles::pattern::Pattern; +use crate::common::context::filter_quality::FilterQuality; use crate::common::context::image_smoothing::ImageSmoothingQuality; use crate::common::utils::color::to_parsed_color; @@ -66,12 +67,12 @@ impl Paint { if is_fill { self.fill_paint.set_shader(Pattern::to_pattern_shader( pattern, - self.image_smoothing_quality, + self.image_smoothing_quality.into(), )); } else { self.stroke_paint.set_shader(Pattern::to_pattern_shader( pattern, - self.image_smoothing_quality, + self.image_smoothing_quality.into(), )); } } diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/fill_and_stroke_styles/pattern.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/fill_and_stroke_styles/pattern.rs index 9bc994c0..8d553b9e 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/fill_and_stroke_styles/pattern.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/fill_and_stroke_styles/pattern.rs @@ -1,6 +1,6 @@ -use skia_safe::{ Image, SamplingOptions, Shader, TileMode}; - +use skia_safe::{Image, Shader, TileMode}; +use crate::common::context::filter_quality::FilterQuality; use crate::common::context::matrix::Matrix; #[repr(C)] @@ -45,7 +45,7 @@ pub struct Pattern { impl Pattern { pub fn to_pattern_shader( pattern: &Pattern, - image_smoothing_quality: skia_safe::FilterQuality, + image_smoothing_quality: FilterQuality, ) -> Option { let mode: (TileMode, TileMode) = match pattern.repetition { Repetition::NoRepeat => (TileMode::Clamp, TileMode::Clamp), @@ -53,11 +53,9 @@ impl Pattern { Repetition::RepeatY => (TileMode::Clamp, TileMode::Repeat), _ => (TileMode::Repeat, TileMode::Repeat), }; - pattern.image().to_shader( - Some(mode), - SamplingOptions::from_filter_quality(image_smoothing_quality, None), - Some(&pattern.matrix), - ) + pattern + .image() + .to_shader(Some(mode), image_smoothing_quality, Some(&pattern.matrix)) } pub fn new(image: Image, repetition: Repetition) -> Self { diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/filter_quality.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/filter_quality.rs new file mode 100644 index 00000000..4cb9f330 --- /dev/null +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/filter_quality.rs @@ -0,0 +1,35 @@ +use skia_safe::{CubicResampler, FilterMode, MipmapMode, SamplingOptions}; + +#[derive(Copy, Clone)] +pub enum FilterQuality { + None, + Low, + Medium, + High, +} + +impl Into for FilterQuality { + fn into(self) -> SamplingOptions { + match self { + FilterQuality::None => SamplingOptions::default(), + FilterQuality::Low => SamplingOptions { + use_cubic: false, + cubic: CubicResampler { b: 0.0, c: 0.0 }, + filter: FilterMode::Linear, + mipmap: MipmapMode::Nearest, + }, + FilterQuality::Medium => SamplingOptions { + use_cubic: true, + cubic: CubicResampler::mitchell(), + filter: FilterMode::Nearest, + mipmap: MipmapMode::Nearest, + }, + FilterQuality::High => SamplingOptions { + use_cubic: true, + cubic: CubicResampler::catmull_rom(), + filter: FilterMode::Nearest, + mipmap: MipmapMode::Linear, + }, + } + } +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/gradients_and_patterns.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/gradients_and_patterns.rs index 594e6fca..7142513f 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/gradients_and_patterns.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/gradients_and_patterns.rs @@ -2,10 +2,10 @@ use std::os::raw::c_float; use skia_safe::{Image, Point, TileMode}; -use crate::common::context::Context; use crate::common::context::fill_and_stroke_styles::gradient::Gradient; use crate::common::context::fill_and_stroke_styles::pattern::{Pattern, Repetition}; use crate::common::context::matrix::Matrix; +use crate::common::context::Context; impl Context { pub fn create_linear_gradient( @@ -43,7 +43,6 @@ impl Context { } } - pub fn create_pattern(&self, image: Image, rep: Repetition) -> Pattern { Pattern::new(image, rep) } @@ -69,7 +68,6 @@ impl Context { } } - pub fn create_radial_gradient_with_matrix( &self, x0: c_float, diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/image_asset.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/image_asset.rs index 0b012cda..fdecf55c 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/image_asset.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/image_asset.rs @@ -3,9 +3,8 @@ use std::io::{Read, Seek, SeekFrom}; use std::os::raw::{c_char, c_uint}; use std::ptr::{null, null_mut}; - -use image::{GenericImageView, ImageFormat}; use image::imageops::FilterType; +use image::{GenericImageView, ImageFormat}; use crate::common::ffi::u8_array::U8Array; @@ -59,7 +58,6 @@ enum ByteType { RGB, } - impl ImageAsset { pub fn new() -> Self { Self { diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/image_smoothing.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/image_smoothing.rs index 8122601e..904098b7 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/image_smoothing.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/image_smoothing.rs @@ -1,6 +1,6 @@ -use skia_safe::FilterQuality; - +use crate::common::context::filter_quality::FilterQuality; use crate::common::context::Context; +use skia_safe::SamplingOptions; #[repr(C)] #[derive(Copy, Clone, Debug)] @@ -37,6 +37,16 @@ impl Into for ImageSmoothingQuality { } } +impl Into for ImageSmoothingQuality { + fn into(self) -> SamplingOptions { + match self { + ImageSmoothingQuality::Low => FilterQuality::Low.into(), + ImageSmoothingQuality::Medium => FilterQuality::Medium.into(), + ImageSmoothingQuality::High => FilterQuality::High.into(), + } + } +} + impl Into for ImageSmoothingQuality { fn into(self) -> i32 { match self { @@ -47,7 +57,7 @@ impl Into for ImageSmoothingQuality { } } -impl Context{ +impl Context { pub fn set_image_smoothing_enabled(&mut self, value: bool) { self.state.image_smoothing_enabled = value; } diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/line_styles/mod.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/line_styles/mod.rs index d64fa98b..32c32cbb 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/line_styles/mod.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/line_styles/mod.rs @@ -13,10 +13,7 @@ pub mod line_join; impl Context { pub fn set_line_width(&mut self, width: c_float) { self.state.line_width = width; - self.state - .paint - .stroke_paint_mut() - .set_stroke_width(width); + self.state.paint.stroke_paint_mut().set_stroke_width(width); } pub fn line_width(&self) -> c_float { @@ -53,14 +50,9 @@ impl Context { pub fn set_miter_limit(&mut self, limit: c_float) { self.state.miter_limit = limit; - self.state - .paint - .stroke_paint_mut() - .set_stroke_miter(limit); + self.state.paint.stroke_paint_mut().set_stroke_miter(limit); } - - pub fn set_line_dash(&mut self, dash: &[c_float]) { // TODO ? let line_dash: Cow<[f32]>; @@ -75,7 +67,7 @@ impl Context { effect = PathEffect::dash(line_dash.as_ref(), self.state.line_dash_offset); } let slice = line_dash.as_ref(); - self.state.line_dash_list.splice(..,slice.iter().cloned()); + self.state.line_dash_list.splice(.., slice.iter().cloned()); self.state.paint.stroke_paint_mut().set_path_effect(effect); } @@ -86,7 +78,7 @@ impl Context { pub fn set_line_dash_offset(&mut self, offset: c_float) { // TODO ? self.state.line_dash_offset = offset; - let list = self.state.line_dash_list.clone(); + let list = self.state.line_dash_list.clone(); self.set_line_dash(list.as_slice()); } diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/matrix.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/matrix.rs index 649731f0..fa0bbdca 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/matrix.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/matrix.rs @@ -17,7 +17,7 @@ impl Default for Matrix { impl From<&skia_safe::Matrix> for Matrix { fn from(matrix: &skia_safe::Matrix) -> Self { Self { - matrix: M44::from(matrix) + matrix: M44::from(matrix), } } } @@ -79,7 +79,6 @@ pub enum Member2DName { Persp2 = 15, } - impl Index for [f32] { type Output = f32; @@ -94,7 +93,6 @@ impl IndexMut for [f32] { } } - impl Index for [f32] { type Output = f32; @@ -109,7 +107,6 @@ impl IndexMut for [f32] { } } - impl Matrix { pub fn new() -> Self { Self { @@ -134,7 +131,6 @@ impl Matrix { self.matrix = M44::row_major(&m); } - fn member_2d_name(&self, member: Member2DName) -> c_float { let mut m = [ 1.0f32, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, @@ -152,7 +148,6 @@ impl Matrix { self.matrix = M44::row_major(&m); } - fn member_3d(&self, member: Member3D) -> c_float { let mut m = [ 1.0f32, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, @@ -212,7 +207,6 @@ impl Matrix { self.set_member_2d_name(Member2DName::SkewX, x) } - pub fn skew_y(&mut self) -> c_float { self.member_2d_name(Member2DName::SkewY) } @@ -253,7 +247,6 @@ impl Matrix { self.set_member_2d(Member2D::F, f) } - pub fn m11(&self) -> c_float { self.member_3d(Member3D::M11) } @@ -286,7 +279,6 @@ impl Matrix { self.set_member_3d(Member3D::M14, m14) } - pub fn m21(&self) -> c_float { self.member_3d(Member3D::M21) } @@ -319,7 +311,6 @@ impl Matrix { self.set_member_3d(Member3D::M24, m24) } - pub fn m31(&self) -> c_float { self.member_3d(Member3D::M31) } @@ -352,7 +343,6 @@ impl Matrix { self.set_member_3d(Member3D::M34, m34) } - pub fn m41(&self) -> c_float { self.member_3d(Member3D::M41) } diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/mod.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/mod.rs index a386cc37..34f6a1d3 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/mod.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/mod.rs @@ -2,6 +2,7 @@ use std::os::raw::c_float; use skia_safe::{Color, Point, SamplingOptions, Surface}; +use crate::common::context::filter_quality::FilterQuality; use crate::{ common::context::compositing::composite_operation_type::CompositeOperationType, common::context::drawing_text::typography::Font, @@ -33,6 +34,7 @@ pub mod line_styles; pub mod shadows; pub mod state; +pub mod filter_quality; pub mod image_asset; pub mod matrix; pub mod text_decoder; @@ -88,14 +90,14 @@ pub(crate) struct State { } impl State { - pub(crate) fn image_filter_quality(&self) -> skia_safe::FilterQuality { + pub(crate) fn image_filter_quality(&self) -> FilterQuality { if self.image_smoothing_enabled { self.image_smoothing_quality.into() } else { - skia_safe::FilterQuality::None + FilterQuality::None } } - pub fn from_device(device: Device, direction: TextDirection) -> Self { + pub fn from_device(_device: Device, direction: TextDirection) -> Self { let mut font = Font::new("10px sans-serif"); let mut paint = Paint::default(); paint @@ -160,7 +162,7 @@ impl Context { src_surface.draw( surface.canvas(), Point::new(0., 0.), - SamplingOptions::from_filter_quality(skia_safe::FilterQuality::High, None), + FilterQuality::High, None, ) } diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/pixel_manipulation/image_data.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/pixel_manipulation/image_data.rs index 2c290d49..2bb707a3 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/pixel_manipulation/image_data.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/pixel_manipulation/image_data.rs @@ -7,7 +7,7 @@ pub struct ImageData { pub(crate) data_len: usize, width: c_int, height: c_int, - pub(crate) scale: f32 + pub(crate) scale: f32, } impl ImageData { @@ -26,7 +26,7 @@ impl ImageData { height, data, data_len, - scale: 1. + scale: 1., } } diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_decoder.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_decoder.rs index f5e63b19..ec313962 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_decoder.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_decoder.rs @@ -1,4 +1,4 @@ -use std::ffi::{ CString}; +use std::ffi::CString; use encoding_rs::UTF_8; @@ -14,34 +14,45 @@ impl TextDecoder { Self { decoder } } - pub fn decode(&mut self, data: *const u8, len: usize) -> CString { let txt = unsafe { std::slice::from_raw_parts(data, len) }; let (res, _) = self.decoder.decode_with_bom_removal(txt); + // let utf8_src = res.as_bytes(); + /*let nul_range_end = utf8_src + .iter() + .position(|&c| c == b'\0') + .unwrap_or(utf8_src.len()); // default to length if no `\0` present*/ + // let data = &utf8_src[0..]; + // let str = unsafe { std::str::from_utf8_unchecked(data) }; + CString::new(res.to_string()).unwrap() + } + pub fn decode_as_bytes(&mut self, data: *const u8, len: usize) -> Vec { + let txt = unsafe { std::slice::from_raw_parts(data, len) }; + let (res, _) = self.decoder.decode_with_bom_removal(txt); let utf8_src = res.as_bytes(); - let nul_range_end = utf8_src - .iter() - .position(|&c| c == b'\0') - .unwrap_or(utf8_src.len()); // default to length if no `\0` present - let data = &utf8_src[0..nul_range_end]; - let str = unsafe { std::str::from_utf8_unchecked(data) }; - CString::new(str).unwrap() + /*let nul_range_end = utf8_src + .iter() + .position(|&c| c == b'\0') + .unwrap_or(utf8_src.len()); // default to length if no `\0` present*/ + // let data = &utf8_src[0..]; + // let str = unsafe { std::str::from_utf8_unchecked(data) }; + utf8_src.to_vec() } pub(crate) fn decode_to_bytes(&mut self, txt: &str) -> Vec { let (res, _) = self.decoder.decode_with_bom_removal(txt.as_bytes()); - let mut utf8_src = res.as_bytes(); - let nul_range_end = utf8_src - .iter() - .position(|&c| c == b'\0') - .unwrap_or(utf8_src.len()); // default to length if no `\0` present - let data = &utf8_src[0..nul_range_end]; - data.to_vec() + // let mut utf8_src = res.as_bytes(); + /* let nul_range_end = utf8_src + .iter() + .position(|&c| c == b'\0') + .unwrap_or(utf8_src.len()); // default to length if no `\0` present*/ + // let data = &utf8_src[0..]; + // data.to_vec() + res.as_bytes().to_vec() } - pub fn encoding(&self) -> &str { self.decoder.name() } diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_encoder.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_encoder.rs index 97aef0cb..4182ba46 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_encoder.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_encoder.rs @@ -22,7 +22,6 @@ impl TextEncoder { } } - pub fn destroy_text_encoder(encoder: *mut TextEncoder) { unsafe { if !encoder.is_null() { diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_styles/text_align.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_styles/text_align.rs index 6f00f6af..3419a0c4 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_styles/text_align.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_styles/text_align.rs @@ -21,12 +21,11 @@ impl Into for TextAlign { TextAlign::LEFT => 1, TextAlign::CENTER => 2, TextAlign::RIGHT => 3, - TextAlign::END => 4 + TextAlign::END => 4, } } } - impl From for TextAlign { fn from(value: i32) -> TextAlign { match value { @@ -35,9 +34,7 @@ impl From for TextAlign { 2 => TextAlign::CENTER, 3 => TextAlign::RIGHT, 4 => TextAlign::END, - _ => { - TextAlign::START - } + _ => TextAlign::START, } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_styles/text_baseline.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_styles/text_baseline.rs index a9ef75e0..ac1c9a0b 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_styles/text_baseline.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_styles/text_baseline.rs @@ -24,7 +24,7 @@ impl From for TextBaseLine { 3 => Self::ALPHABETIC, 4 => Self::IDEOGRAPHIC, 5 => Self::BOTTOM, - _ => TextBaseLine::ALPHABETIC + _ => TextBaseLine::ALPHABETIC, } } } @@ -37,7 +37,7 @@ impl Into for TextBaseLine { TextBaseLine::MIDDLE => 2, TextBaseLine::ALPHABETIC => 3, TextBaseLine::IDEOGRAPHIC => 4, - TextBaseLine::BOTTOM => 5 + TextBaseLine::BOTTOM => 5, } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_styles/text_direction.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_styles/text_direction.rs index c6ad319d..456a5d7d 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_styles/text_direction.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/text_styles/text_direction.rs @@ -10,7 +10,7 @@ impl From for TextDirection { match value { 1 => Self::RTL, 0 => Self::LTR, - _ => Self::LTR + _ => Self::LTR, } } } @@ -19,7 +19,7 @@ impl Into for TextDirection { fn into(self) -> i32 { match self { Self::RTL => 1, - Self::LTR => 0 + Self::LTR => 0, } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/transformations.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/transformations.rs index 15c3e478..b79b28c3 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/transformations.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/context/transformations.rs @@ -1,7 +1,7 @@ use std::f32::consts::PI; use std::os::raw::c_float; -use skia_safe::{M44, Matrix, Point}; +use skia_safe::{Matrix, Point, M44}; use crate::common::context::Context; diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/f32_array.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/f32_array.rs index bda15a21..9c474a4c 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/f32_array.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/f32_array.rs @@ -37,4 +37,4 @@ pub extern "C" fn destroy_f32_array(array: *mut F32Array) { let _ = Box::from_raw(array); } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/f64_array.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/f64_array.rs index 79eb338d..11cb6890 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/f64_array.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/f64_array.rs @@ -30,7 +30,6 @@ impl Drop for F64Array { } } - #[no_mangle] pub extern "C" fn destroy_f64_array(array: *mut F64Array) { unsafe { @@ -38,4 +37,4 @@ pub extern "C" fn destroy_f64_array(array: *mut F64Array) { let _ = Box::from_raw(array); } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/i16_array.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/i16_array.rs index ed1c9912..f6fd2b92 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/i16_array.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/i16_array.rs @@ -37,4 +37,4 @@ pub extern "C" fn destroy_i16_array(array: *mut I16Array) { let _ = Box::from_raw(array); } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/i32_array.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/i32_array.rs index a6c1a061..645c130c 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/i32_array.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/i32_array.rs @@ -30,7 +30,6 @@ impl Drop for I32Array { } } - #[no_mangle] pub extern "C" fn destroy_i32_array(array: *mut I32Array) { unsafe { @@ -38,4 +37,4 @@ pub extern "C" fn destroy_i32_array(array: *mut I32Array) { let _ = Box::from_raw(array); } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/i8_array.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/i8_array.rs index c8d1aa06..dc01024e 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/i8_array.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/i8_array.rs @@ -37,4 +37,4 @@ pub extern "C" fn destroy_i8_array(array: *mut I8Array) { let _ = Box::from_raw(array); } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/mod.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/mod.rs index 74460b23..49d4459a 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/mod.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/mod.rs @@ -3,7 +3,7 @@ pub mod f64_array; pub mod i16_array; pub mod i32_array; pub mod i8_array; +pub mod paint_style_value; pub mod u16_array; pub mod u32_array; pub mod u8_array; -pub mod paint_style_value; diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/paint_style_value.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/paint_style_value.rs index 85245a57..8f75b3e7 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/paint_style_value.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/paint_style_value.rs @@ -14,7 +14,7 @@ impl Into for PaintStyleValueType { match self { PaintStyleValueType::PaintStyleValueTypeColor => 0, PaintStyleValueType::PaintStyleValueTypeGradient => 1, - PaintStyleValueType::PaintStyleValueTypePattern => 2 + PaintStyleValueType::PaintStyleValueTypePattern => 2, } } } @@ -25,12 +25,11 @@ impl PaintStyleValueType { 0 => Some(PaintStyleValueType::PaintStyleValueTypeColor), 1 => Some(PaintStyleValueType::PaintStyleValueTypeGradient), 2 => Some(PaintStyleValueType::PaintStyleValueTypePattern), - _ => None + _ => None, } } } - #[repr(C)] pub struct PaintStyleValue { pub value: c_longlong, @@ -40,11 +39,7 @@ pub struct PaintStyleValue { impl PaintStyleValue { pub fn new(value: PaintStyle, value_type: PaintStyleValueType) -> Self { Self { - value: Box::into_raw( - Box::new( - value.clone() - ) - ) as c_longlong, + value: Box::into_raw(Box::new(value.clone())) as c_longlong, value_type, } } @@ -59,4 +54,4 @@ pub extern "C" fn destroy_paint_style_value(value: c_longlong) { let value: *mut PaintStyleValue = value as _; Box::from_raw(value); } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/u16_array.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/u16_array.rs index 8d67748b..e6367944 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/u16_array.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/u16_array.rs @@ -37,4 +37,4 @@ pub extern "C" fn destroy_u16_array(array: *mut U16Array) { let _ = Box::from_raw(array); } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/u32_array.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/u32_array.rs index 919407f5..ad852128 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/u32_array.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/u32_array.rs @@ -30,7 +30,6 @@ impl Drop for U32Array { } } - #[no_mangle] pub extern "C" fn destroy_u32_array(array: *mut U32Array) { unsafe { @@ -38,4 +37,4 @@ pub extern "C" fn destroy_u32_array(array: *mut U32Array) { let _ = Box::from_raw(array); } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/u8_array.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/u8_array.rs index 9ddf6167..17de1dba 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/u8_array.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/ffi/u8_array.rs @@ -30,7 +30,6 @@ impl Drop for U8Array { } } - #[no_mangle] pub extern "C" fn destroy_u8_array(array: *mut U8Array) { unsafe { @@ -38,4 +37,4 @@ pub extern "C" fn destroy_u8_array(array: *mut U8Array) { let _ = Box::from_raw(array); } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/image_bitmap.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/image_bitmap.rs index 5c930703..47543ab1 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/image_bitmap.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/image_bitmap.rs @@ -1,7 +1,10 @@ use core::convert::{From, Into}; -use skia_safe::{EncodedImageFormat, Point, RCHandle, Rect}; +use skia_safe::{ + CubicResampler, EncodedImageFormat, FilterMode, MipmapMode, Point, RCHandle, Rect, +}; +use crate::common::context::filter_quality::FilterQuality; use crate::common::context::image_asset::ImageAsset; use crate::common::context::pixel_manipulation::image_data::ImageData; use crate::common::utils::image::{from_image_slice, from_image_slice_encoded}; @@ -103,22 +106,10 @@ impl From for ImageBitmapResizeQuality { impl ImageBitmapResizeQuality { pub fn to_quality(&self) -> skia_safe::SamplingOptions { return match self { - ImageBitmapResizeQuality::Low => skia_safe::SamplingOptions::from_filter_quality( - skia_safe::FilterQuality::Low, - skia_safe::sampling_options::MediumBehavior::AsMipmapLinear, - ), - ImageBitmapResizeQuality::Medium => skia_safe::SamplingOptions::from_filter_quality( - skia_safe::FilterQuality::Medium, - skia_safe::sampling_options::MediumBehavior::AsMipmapLinear, - ), - ImageBitmapResizeQuality::High => skia_safe::SamplingOptions::from_filter_quality( - skia_safe::FilterQuality::High, - skia_safe::sampling_options::MediumBehavior::AsMipmapLinear, - ), - ImageBitmapResizeQuality::Pixelated => skia_safe::SamplingOptions::from_filter_quality( - skia_safe::FilterQuality::None, - skia_safe::sampling_options::MediumBehavior::AsMipmapLinear, - ), + ImageBitmapResizeQuality::Low => FilterQuality::Low.into(), + ImageBitmapResizeQuality::Medium => FilterQuality::Medium.into(), + ImageBitmapResizeQuality::High => FilterQuality::High.into(), + ImageBitmapResizeQuality::Pixelated => FilterQuality::None.into(), }; } } diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/mod.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/mod.rs index 048f1cec..0ee19c6e 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/mod.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/mod.rs @@ -1,16 +1,19 @@ use std::os::raw::c_int; -use skia_safe::{AlphaType, ColorType, EncodedImageFormat, ImageInfo, IPoint, ISize, SamplingOptions, Surface, Point}; use skia_safe::image::CachingHint; +use skia_safe::{ + AlphaType, ColorType, EncodedImageFormat, IPoint, ISize, ImageInfo, Point, Surface, +}; +use crate::common::context::filter_quality::FilterQuality; use crate::common::context::Context; pub mod context; pub mod ffi; -pub(crate) mod svg; -pub(crate) mod utils; pub mod image_bitmap; pub mod prelude; +pub(crate) mod svg; +pub(crate) mod utils; pub(crate) fn to_data_url(context: &mut Context, format: &str, quality: c_int) -> String { let surface = &mut context.surface; @@ -88,12 +91,9 @@ pub(crate) fn flush_custom_surface(context: *mut Context, width: i32, height: i3 if let Some(mut dst_surface) = Surface::new_raster_direct(&info, dst, None, None) { let dst_canvas = dst_surface.canvas(); - context.surface.draw( - dst_canvas, - Point::new(0., 0.), - SamplingOptions::from_filter_quality(skia_safe::FilterQuality::High, None), - None, - ); + context + .surface + .draw(dst_canvas, Point::new(0., 0.), FilterQuality::High, None); context.surface.flush_and_submit(); dst_surface.flush_and_submit(); } @@ -131,12 +131,7 @@ pub(crate) fn snapshot_canvas_raw(context: *mut Context) -> Vec { let mut dst_surface = Surface::new_raster_direct(&info, bytes.as_mut_slice(), None, None).unwrap(); let mut dst_canvas = dst_surface.canvas(); - surface.draw( - dst_canvas, - Point::new(0., 0.), - SamplingOptions::from_filter_quality(skia_safe::FilterQuality::High, None), - None, - ); + surface.draw(dst_canvas, Point::new(0., 0.), FilterQuality::High, None); surface.flush_and_submit(); dst_surface.flush_and_submit(); bytes diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/prelude.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/prelude.rs index d79e976c..f9202e83 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/prelude.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/prelude.rs @@ -1,4 +1,4 @@ -use skia_safe::{Rect}; +use skia_safe::Rect; pub trait ScaleUtils { fn scale(&mut self, x: f32, y: f32); @@ -16,4 +16,4 @@ impl ScaleUtils for skia_safe::Rect { fn from_scale(rect: skia_safe::Rect, x: f32, y: f32) -> Self { Rect::from_xywh(rect.left * x, rect.top * y, rect.right * x, rect.bottom * y) } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/svg/mod.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/svg/mod.rs index 4c213271..8755ae1f 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/svg/mod.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/svg/mod.rs @@ -32,10 +32,13 @@ pub(crate) fn draw_svg_from_path(context: &mut Context, path: &str) { match skia_safe::svg::SvgDom::read(reader) { Ok(mut svg) => { let device = context.device; - let size = skia_safe::Size::new(context.surface.width() as f32, context.surface.height() as f32); + let size = skia_safe::Size::new( + context.surface.width() as f32, + context.surface.height() as f32, + ); let canvas = context.surface.canvas(); svg.container_size(&size); - // canvas.scale((device.density, device.density)); + // canvas.scale((device.density, device.density)); svg.render(canvas) } Err(e) => { @@ -59,10 +62,13 @@ pub(crate) fn draw_svg(context: &mut Context, svg: &str) { match skia_safe::svg::SvgDom::from_bytes(svg.as_bytes()) { Ok(mut svg) => { let device = context.device; - let size = skia_safe::Size::new(context.surface.width() as f32, context.surface.height() as f32); + let size = skia_safe::Size::new( + context.surface.width() as f32, + context.surface.height() as f32, + ); let canvas = context.surface.canvas(); svg.container_size(&size); - // canvas.scale((device.density, device.density)); + // canvas.scale((device.density, device.density)); svg.render(canvas) } Err(e) => { diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/utils/color.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/utils/color.rs index 958c81b2..3bb2b921 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/utils/color.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/utils/color.rs @@ -2,14 +2,12 @@ use skia_safe::Color; pub(crate) fn parse_color(value: &str) -> Option { match value.parse::() { - Ok(color) => { - Some(Color::from_argb( - (color.a * 255.0) as u8, - color.r, - color.g, - color.b, - )) - } + Ok(color) => Some(Color::from_argb( + (color.a * 255.0) as u8, + color.r, + color.g, + color.b, + )), _ => None, } } diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/utils/geometry.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/utils/geometry.rs index 0c365ca2..21b53296 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/utils/geometry.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/utils/geometry.rs @@ -1,7 +1,7 @@ use std::f32::consts::PI; -use skia_safe::{Paint, Point, Size}; use skia_safe::paint::{Cap, Join}; +use skia_safe::{Paint, Point, Size}; pub fn almost_equal(a: f32, b: f32) -> bool { (a - b).abs() < 0.00001 diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/utils/image.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/utils/image.rs index bc18a365..277f18e1 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/utils/image.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/utils/image.rs @@ -1,6 +1,6 @@ use std::os::raw::c_int; -use skia_safe::{AlphaType, ColorType, Data, Image, ImageInfo, ISize}; +use skia_safe::{AlphaType, ColorType, Data, ISize, Image, ImageInfo}; pub(crate) fn to_image( image_array: *const u8, @@ -18,18 +18,12 @@ pub(crate) fn to_image( Image::from_raster_data(&info, Data::new_copy(image_slice), (width * 4) as usize) } - pub(crate) fn to_image_encoded(image_array: *const u8, image_size: usize) -> Option { let image_slice: &[u8] = unsafe { std::slice::from_raw_parts(image_array, image_size) }; Image::from_encoded(Data::new_copy(image_slice)) } - -pub(crate) fn from_image_slice( - image_slice: &[u8], - width: c_int, - height: c_int, -) -> Option { +pub(crate) fn from_image_slice(image_slice: &[u8], width: c_int, height: c_int) -> Option { let info = ImageInfo::new( ISize::new(width, height), ColorType::RGBA8888, diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/common/utils/mod.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/common/utils/mod.rs index 66addda8..b5bedbcb 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/common/utils/mod.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/common/utils/mod.rs @@ -1,6 +1,6 @@ +pub(crate) mod color; pub(crate) mod device; +pub(crate) mod dimensions; pub(crate) mod geometry; pub(crate) mod gl; pub(crate) mod image; -pub(crate) mod dimensions; -pub(crate) mod color; diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/context.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/context.rs index ba8590d8..c4589f1e 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/context.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/context.rs @@ -1,6 +1,6 @@ use std::ffi::{CStr, CString}; use std::os::raw::{c_char, c_float, c_int, c_longlong, c_uint}; -use std::str::{FromStr}; +use std::str::FromStr; use skia_safe::gpu::gl::Interface; use skia_safe::image::CachingHint; @@ -12,7 +12,7 @@ use skia_safe::{ use crate::common::context::compositing::composite_operation_type::CompositeOperationType; use crate::common::context::drawing_paths::fill_rule::FillRule; use crate::common::context::fill_and_stroke_styles::paint::PaintStyle; -use crate::common::context::fill_and_stroke_styles::pattern::{ Repetition}; +use crate::common::context::fill_and_stroke_styles::pattern::Repetition; use crate::common::context::image_asset::ImageAsset; use crate::common::context::image_smoothing::ImageSmoothingQuality; use crate::common::context::line_styles::line_cap::LineCap; diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/gl.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/gl.rs index ba4ac2a2..f11d6f0e 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/gl.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/gl.rs @@ -1,7 +1,7 @@ use std::os::raw::{c_int, c_longlong, c_uint, c_void}; use crate::common::context::image_asset::ImageAsset; -use crate::common::ffi::u8_array::{destroy_u8_array}; +use crate::common::ffi::u8_array::destroy_u8_array; const RGBA: u32 = 0x1908; const RGBA_INTEGER: u32 = 0x8D99; @@ -22,12 +22,8 @@ pub extern "C" fn gl_tex_image_2D_asset( let asset = &mut *asset; let mut data; match format as u32 { - RGBA | RGBA_INTEGER => { - data = asset.rgba_internal_bytes() - } - _ => { - data = asset.rgb_internal_bytes() - } + RGBA | RGBA_INTEGER => data = asset.rgba_internal_bytes(), + _ => data = asset.rgb_internal_bytes(), } let data_array = data.as_mut_slice(); let width = asset.width(); @@ -36,7 +32,8 @@ pub extern "C" fn gl_tex_image_2D_asset( crate::common::utils::gl::flip_in_place( data_array.as_mut_ptr(), data_array.len(), - (crate::common::utils::gl::bytes_per_pixel(image_type, format) as i32 * width as i32) as usize, + (crate::common::utils::gl::bytes_per_pixel(image_type, format) as i32 + * width as i32) as usize, height as usize, ); } @@ -84,7 +81,8 @@ pub extern "C" fn gl_tex_sub_image_2D_asset( crate::common::utils::gl::flip_in_place( data_array.data, data_array.data_len, - (crate::common::utils::gl::bytes_per_pixel(image_type, format) as i32 * width as i32) as usize, + (crate::common::utils::gl::bytes_per_pixel(image_type, format) as i32 + * width as i32) as usize, height as usize, ); } @@ -134,7 +132,8 @@ pub extern "C" fn gl_tex_image_3D_asset( crate::common::utils::gl::flip_in_place_3d( data_array.data, data_array.data_len, - (crate::common::utils::gl::bytes_per_pixel(image_type, format) as i32 * asset.width() as i32) as usize, + (crate::common::utils::gl::bytes_per_pixel(image_type, format) as i32 + * asset.width() as i32) as usize, asset.height() as usize, depth as usize, ); @@ -187,7 +186,8 @@ pub extern "C" fn gl_tex_sub_image_3D_asset( crate::common::utils::gl::flip_in_place_3d( data_array.data, data_array.data_len, - (crate::common::utils::gl::bytes_per_pixel(image_type, format) as i32 * asset.width() as i32) as usize, + (crate::common::utils::gl::bytes_per_pixel(image_type, format) as i32 + * asset.width() as i32) as usize, asset.height() as usize, depth as usize, ); @@ -229,10 +229,7 @@ pub unsafe extern "C" fn gl_vertex_attrib_pointer( } #[no_mangle] -pub unsafe extern "C" fn gl_get_vertex_attrib_offset( - index: c_uint, - pname: c_uint, -) -> c_longlong { +pub unsafe extern "C" fn gl_get_vertex_attrib_offset(index: c_uint, pname: c_uint) -> c_longlong { let mut buf = [0i64; 1]; let ptr_ptr: *mut *mut c_void = buf.as_mut_ptr() as *mut _; gl_bindings::glGetVertexAttribPointerv(index, pname, ptr_ptr); diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/gradient.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/gradient.rs index 20df1d10..46a9d318 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/gradient.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/gradient.rs @@ -15,15 +15,18 @@ pub extern "C" fn gradient_add_color_stop(style: c_longlong, stop: c_float, colo PaintStyle::Gradient(gradient) => { let color = CStr::from_ptr(color).to_string_lossy(); if let Ok(color) = color.as_ref().parse::() { - gradient.add_color_stop(stop, skia_safe::Color::from_argb( - (color.a * 255.0) as u8, - color.r, - color.g, - color.b, - )) + gradient.add_color_stop( + stop, + skia_safe::Color::from_argb( + (color.a * 255.0) as u8, + color.r, + color.g, + color.b, + ), + ) } } _ => {} } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/image_asset.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/image_asset.rs index b1d23a79..59dc7649 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/image_asset.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/image_asset.rs @@ -174,7 +174,7 @@ pub extern "C" fn image_asset_flip_y(asset: c_longlong) -> bool { #[no_mangle] pub extern "C" fn image_asset_flip_y_in_place_owned(buf: *mut u8, length: usize) { if let Ok(mut image) = - image::load_from_memory(unsafe { std::slice::from_raw_parts_mut(buf, length) }) + image::load_from_memory(unsafe { std::slice::from_raw_parts_mut(buf, length) }) { image::imageops::flip_vertical_in_place(&mut image); } @@ -183,7 +183,7 @@ pub extern "C" fn image_asset_flip_y_in_place_owned(buf: *mut u8, length: usize) #[no_mangle] pub extern "C" fn image_asset_flip_x_in_place_owned(buf: *mut u8, length: usize) { if let Ok(mut image) = - image::load_from_memory(unsafe { std::slice::from_raw_parts_mut(buf, length) }) + image::load_from_memory(unsafe { std::slice::from_raw_parts_mut(buf, length) }) { image::imageops::flip_horizontal_in_place(&mut image); } diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/image_data.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/image_data.rs index 8a6c3f6b..9f8039e4 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/image_data.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/image_data.rs @@ -5,14 +5,9 @@ use crate::common::ffi::u8_array::U8Array; #[no_mangle] pub extern "C" fn image_data_create(width: c_int, height: c_int) -> c_longlong { - Box::into_raw( - Box::new( - ImageData::new(width, height) - ) - ) as c_longlong + Box::into_raw(Box::new(ImageData::new(width, height))) as c_longlong } - #[no_mangle] pub extern "C" fn image_data_width(image_data: c_longlong) -> c_int { if image_data == 0 { @@ -37,7 +32,6 @@ pub extern "C" fn image_data_height(image_data: c_longlong) -> c_int { } } - #[no_mangle] pub extern "C" fn image_data_data(image_data: c_longlong) -> *mut u8 { if image_data == 0 { @@ -62,7 +56,6 @@ pub extern "C" fn image_data_data_length(image_data: c_longlong) -> usize { } } - #[no_mangle] pub extern "C" fn destroy_image_data(image_data: c_longlong) { if image_data == 0 { @@ -73,4 +66,3 @@ pub extern "C" fn destroy_image_data(image_data: c_longlong) { let _ = Box::from_raw(image_data); } } - diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/matrix.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/matrix.rs index d8742955..22d14da1 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/matrix.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/matrix.rs @@ -4,14 +4,9 @@ use crate::common::context::matrix::Matrix; #[no_mangle] pub extern "C" fn matrix_create() -> c_longlong { - Box::into_raw( - Box::new( - Matrix::new() - ) - ) as c_longlong + Box::into_raw(Box::new(Matrix::new())) as c_longlong } - #[no_mangle] pub extern "C" fn matrix_update(matrix: c_longlong, data: *const c_float, data_len: usize) { if matrix == 0 { @@ -27,7 +22,6 @@ pub extern "C" fn matrix_update(matrix: c_longlong, data: *const c_float, data_l } } - #[no_mangle] pub extern "C" fn matrix_a(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -52,7 +46,6 @@ pub extern "C" fn matrix_set_a(matrix: c_longlong, a: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_b(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -77,7 +70,6 @@ pub extern "C" fn matrix_set_b(matrix: c_longlong, b: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_c(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -174,7 +166,6 @@ pub extern "C" fn matrix_set_f(matrix: c_longlong, f: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_m11(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -199,7 +190,6 @@ pub extern "C" fn matrix_set_m11(matrix: c_longlong, m11: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_m12(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -224,7 +214,6 @@ pub extern "C" fn matrix_set_m12(matrix: c_longlong, m12: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_m13(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -249,7 +238,6 @@ pub extern "C" fn matrix_set_m13(matrix: c_longlong, m13: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_m14(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -274,7 +262,6 @@ pub extern "C" fn matrix_set_m14(matrix: c_longlong, m14: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_m21(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -299,7 +286,6 @@ pub extern "C" fn matrix_set_m21(matrix: c_longlong, m21: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_m22(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -324,7 +310,6 @@ pub extern "C" fn matrix_set_m22(matrix: c_longlong, m22: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_m23(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -349,7 +334,6 @@ pub extern "C" fn matrix_set_m23(matrix: c_longlong, m23: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_m24(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -374,7 +358,6 @@ pub extern "C" fn matrix_set_m24(matrix: c_longlong, m24: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_m31(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -399,7 +382,6 @@ pub extern "C" fn matrix_set_m31(matrix: c_longlong, m31: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_m32(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -424,7 +406,6 @@ pub extern "C" fn matrix_set_m32(matrix: c_longlong, m32: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_m33(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -449,7 +430,6 @@ pub extern "C" fn matrix_set_m33(matrix: c_longlong, m33: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_m34(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -474,7 +454,6 @@ pub extern "C" fn matrix_set_m34(matrix: c_longlong, m34: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_m41(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -499,7 +478,6 @@ pub extern "C" fn matrix_set_m41(matrix: c_longlong, m41: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_m42(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -524,7 +502,6 @@ pub extern "C" fn matrix_set_m42(matrix: c_longlong, m42: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_m43(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -549,7 +526,6 @@ pub extern "C" fn matrix_set_m43(matrix: c_longlong, m43: c_float) { } } - #[no_mangle] pub extern "C" fn matrix_m44(matrix: c_longlong) -> c_float { if matrix == 0 { @@ -574,7 +550,6 @@ pub extern "C" fn matrix_set_m44(matrix: c_longlong, m44: c_float) { } } - #[no_mangle] pub extern "C" fn destroy_matrix(matrix: c_longlong) { if matrix == 0 { @@ -584,4 +559,4 @@ pub extern "C" fn destroy_matrix(matrix: c_longlong) { let matrix: *mut Matrix = matrix as _; let _ = Box::from_raw(matrix); } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/mod.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/mod.rs index c3f9ef2d..a56d602a 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/mod.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/mod.rs @@ -1,35 +1,36 @@ use std::ffi::CString; use std::os::raw::{c_char, c_longlong}; -use crate::common::context::Context; use crate::common::context::drawing_text::text_metrics::TextMetrics; use crate::common::context::fill_and_stroke_styles::paint::PaintStyle; +use crate::common::context::Context; pub mod context; pub mod gl; +pub mod gradient; pub mod image_asset; -pub mod text_decoder; -pub mod text_encoder; -pub mod path; +pub mod image_bitmap; pub mod image_data; -pub mod utils; pub mod matrix; pub mod paint; -pub mod gradient; +pub mod path; pub mod pattern; -pub mod text_metrics; pub mod svg; -pub mod image_bitmap; +pub mod text_decoder; +pub mod text_encoder; +pub mod text_metrics; +pub mod utils; #[no_mangle] pub extern "C" fn destroy_string(string: *const c_char) { if string.is_null() { return; } - unsafe { let _ = CString::from_raw(string as _); } + unsafe { + let _ = CString::from_raw(string as _); + } } - #[no_mangle] pub extern "C" fn destroy_context(context: c_longlong) { if context == 0 { @@ -41,7 +42,6 @@ pub extern "C" fn destroy_context(context: c_longlong) { } } - #[no_mangle] pub extern "C" fn destroy_paint_style(style: c_longlong) { if style == 0 { @@ -53,7 +53,6 @@ pub extern "C" fn destroy_paint_style(style: c_longlong) { } } - #[no_mangle] pub extern "C" fn destroy_text_metrics(metrics: c_longlong) { if metrics == 0 { @@ -64,5 +63,3 @@ pub extern "C" fn destroy_text_metrics(metrics: c_longlong) { let _ = Box::from_raw(metrics); } } - - diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/paint.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/paint.rs index 1eb07a81..a4ec0330 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/paint.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/paint.rs @@ -4,11 +4,15 @@ use std::str::FromStr; use css_color_parser::{Color, ColorParseError}; -use crate::common::context::Context; use crate::common::context::fill_and_stroke_styles::paint::PaintStyle; +use crate::common::context::Context; use crate::common::utils::color::to_parsed_color; -pub(crate) fn paint_style_set_color_with_string(context: c_longlong, is_fill: bool, color: *const c_char) { +pub(crate) fn paint_style_set_color_with_string( + context: c_longlong, + is_fill: bool, + color: *const c_char, +) { if context == 0 || color.is_null() { return; } @@ -17,11 +21,12 @@ pub(crate) fn paint_style_set_color_with_string(context: c_longlong, is_fill: bo let context = &mut *context; let color = CStr::from_ptr(color).to_string_lossy(); if let Ok(color) = css_color_parser::Color::from_str(color.as_ref()) { - let style = PaintStyle::Color( - skia_safe::Color::from_argb( - (color.a * 255.0) as u8, color.r, color.g, color.b, - ) - ); + let style = PaintStyle::Color(skia_safe::Color::from_argb( + (color.a * 255.0) as u8, + color.r, + color.g, + color.b, + )); if is_fill { context.set_fill_style(style); } else { @@ -32,12 +37,18 @@ pub(crate) fn paint_style_set_color_with_string(context: c_longlong, is_fill: bo } #[no_mangle] -pub extern "C" fn paint_style_set_fill_color_with_string(context: c_longlong, color: *const c_char) { +pub extern "C" fn paint_style_set_fill_color_with_string( + context: c_longlong, + color: *const c_char, +) { paint_style_set_color_with_string(context, true, color); } #[no_mangle] -pub extern "C" fn paint_style_set_stroke_color_with_string(context: c_longlong, color: *const c_char) { +pub extern "C" fn paint_style_set_stroke_color_with_string( + context: c_longlong, + color: *const c_char, +) { paint_style_set_color_with_string(context, false, color); } @@ -54,7 +65,7 @@ pub extern "C" fn paint_style_get_color_string(color: c_longlong) -> *const c_ch let string = to_parsed_color(*color); CString::new(string).unwrap().into_raw() } - _ => std::ptr::null() + _ => std::ptr::null(), } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/path.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/path.rs index 7acced88..83d79967 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/path.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/path.rs @@ -6,53 +6,32 @@ use crate::common::context::paths::path::Path; #[no_mangle] pub extern "C" fn path_create() -> c_longlong { - Box::into_raw( - Box::new( - Path::new() - ) - ) as c_longlong + Box::into_raw(Box::new(Path::new())) as c_longlong } #[no_mangle] pub extern "C" fn path_create_with_path(path: c_longlong) -> c_longlong { if path == 0 { - return Box::into_raw( - Box::new( - Path::new() - ) - ) as c_longlong; + return Box::into_raw(Box::new(Path::new())) as c_longlong; } unsafe { let path: *mut Path = path as _; let path = &mut *path; - Box::into_raw( - Box::new( - Path::from_path(&path.path) - ) - ) as c_longlong + Box::into_raw(Box::new(Path::from_path(&path.path))) as c_longlong } } #[no_mangle] pub extern "C" fn path_create_with_string(string: *const c_char) -> c_longlong { if string.is_null() { - return Box::into_raw( - Box::new( - Path::new() - ) - ) as c_longlong; + return Box::into_raw(Box::new(Path::new())) as c_longlong; } unsafe { let string = CStr::from_ptr(string).to_string_lossy(); - Box::into_raw( - Box::new( - Path::from_str(string.as_ref()) - ) - ) as c_longlong + Box::into_raw(Box::new(Path::from_str(string.as_ref()))) as c_longlong } } - #[no_mangle] pub extern "C" fn path_add_path(path: c_longlong, path_to_add: c_longlong) { if path == 0 || path_to_add == 0 { @@ -68,7 +47,11 @@ pub extern "C" fn path_add_path(path: c_longlong, path_to_add: c_longlong) { } #[no_mangle] -pub extern "C" fn path_add_path_with_matrix(path: c_longlong, path_to_add: c_longlong, matrix: c_longlong) { +pub extern "C" fn path_add_path_with_matrix( + path: c_longlong, + path_to_add: c_longlong, + matrix: c_longlong, +) { if path == 0 || path_to_add == 0 || matrix == 0 { return; } @@ -119,7 +102,6 @@ pub extern "C" fn path_line_to(path: c_longlong, x: c_float, y: c_float) { } } - #[no_mangle] pub extern "C" fn path_bezier_curve_to( path: c_longlong, @@ -140,7 +122,6 @@ pub extern "C" fn path_bezier_curve_to( } } - #[no_mangle] pub extern "C" fn path_quadratic_curve_to( path: c_longlong, @@ -179,7 +160,6 @@ pub extern "C" fn path_arc( } } - #[no_mangle] pub extern "C" fn path_arc_to( path: c_longlong, @@ -248,11 +228,8 @@ pub extern "C" fn path_rect( } } - #[no_mangle] -pub extern "C" fn destroy_path( - path: c_longlong -) { +pub extern "C" fn destroy_path(path: c_longlong) { unsafe { if path == 0 { return; @@ -260,4 +237,4 @@ pub extern "C" fn destroy_path( let path: *mut Path = path as _; let _ = Box::from_raw(path); } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/pattern.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/pattern.rs index c6d7cc3b..57c47460 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/pattern.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/pattern.rs @@ -14,10 +14,8 @@ pub extern "C" fn pattern_set_transform(pattern: c_longlong, matrix: c_longlong) let matrix: *mut Matrix = matrix as _; let matrix = &mut *matrix; match pattern { - PaintStyle::Pattern(pattern) => { - pattern.set_pattern_transform(&matrix) - } + PaintStyle::Pattern(pattern) => pattern.set_pattern_transform(&matrix), _ => {} } } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/text_decoder.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/text_decoder.rs index 3f25c530..ea199572 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/text_decoder.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/text_decoder.rs @@ -2,6 +2,7 @@ use std::ffi::{CStr, CString}; use std::os::raw::{c_char, c_longlong}; use crate::common::context::text_decoder::TextDecoder; +use crate::common::ffi::u8_array::U8Array; #[no_mangle] pub extern "C" fn text_decoder_create(decoding: *const c_char) -> c_longlong { @@ -38,6 +39,20 @@ pub extern "C" fn text_decoder_decode( } } +#[no_mangle] +pub extern "C" fn text_decoder_decode_to_bytes( + decoder: c_longlong, + data: *const u8, + len: usize, +) -> *const U8Array { + unsafe { + let decoder: *mut TextDecoder = decoder as _; + let decoder = &mut *decoder; + let decoded: U8Array = decoder.decode_as_bytes(data, len).into(); + Box::into_raw(Box::new(decoded)) + } +} + #[no_mangle] pub extern "C" fn text_decoder_decode_u16( decoder: c_longlong, @@ -66,9 +81,7 @@ pub extern "C" fn text_decoder_decode_i32( } #[no_mangle] -pub extern "C" fn destroy_text_decoder( - decoder: c_longlong, -) { +pub extern "C" fn destroy_text_decoder(decoder: c_longlong) { if decoder == 0 { return; } @@ -77,3 +90,53 @@ pub extern "C" fn destroy_text_decoder( let _ = Box::from_raw(decoder); } } + +#[no_mangle] +pub extern "C" fn text_decoder_decode_bytes( + decoder: c_longlong, + data: *const u8, + len: usize, +) -> *mut U8Array { + unsafe { + let decoder: *mut TextDecoder = decoder as _; + let decoder = &mut *decoder; + let decoded: U8Array = decoder.decode_as_bytes(data, len).into(); + Box::into_raw(Box::new(decoded)) + } +} + +#[no_mangle] +pub extern "C" fn text_decoder_decode_u16_bytes( + decoder: c_longlong, + data: *const u16, + len: usize, +) -> *mut U8Array { + text_decoder_decode_bytes(decoder, data as *const u8, len * 2) +} + +#[no_mangle] +pub extern "C" fn text_decoder_decode_i16_bytes( + decoder: c_longlong, + data: *const i16, + len: usize, +) -> *mut U8Array { + text_decoder_decode_bytes(decoder, data as *const u8, len * 2) +} + +#[no_mangle] +pub extern "C" fn text_decoder_decode_i32_bytes( + decoder: c_longlong, + data: *const i32, + len: usize, +) -> *mut U8Array { + text_decoder_decode_bytes(decoder, data as *const u8, len * 4) +} + +#[no_mangle] +pub extern "C" fn text_decoder_decode_u32_bytes( + decoder: c_longlong, + data: *const u32, + len: usize, +) -> *mut U8Array { + text_decoder_decode_bytes(decoder, data as *const u8, len * 4) +} \ No newline at end of file diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/text_encoder.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/text_encoder.rs index 4879be84..66bf5749 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/text_encoder.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/text_encoder.rs @@ -29,10 +29,7 @@ pub extern "C" fn text_encoder_get_encoding(encoder: c_longlong) -> *const c_cha } #[no_mangle] -pub extern "C" fn text_encoder_encode( - encoder: c_longlong, - text: *const c_char, -) -> *mut U8Array { +pub extern "C" fn text_encoder_encode(encoder: c_longlong, text: *const c_char) -> *mut U8Array { if encoder == 0 { return std::ptr::null_mut(); } @@ -45,11 +42,8 @@ pub extern "C" fn text_encoder_encode( } } - #[no_mangle] -pub extern "C" fn destroy_text_encoder( - encoder: c_longlong, -) { +pub extern "C" fn destroy_text_encoder(encoder: c_longlong) { if encoder == 0 { return; } diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/text_metrics.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/text_metrics.rs index 9bb91562..8075900c 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/text_metrics.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/text_metrics.rs @@ -14,7 +14,6 @@ pub extern "C" fn text_metrics_get_width(metrics: c_longlong) -> c_float { } } - #[no_mangle] pub extern "C" fn text_metrics_get_actual_bounding_box_left(metrics: c_longlong) -> c_float { if metrics == 0 { @@ -27,7 +26,6 @@ pub extern "C" fn text_metrics_get_actual_bounding_box_left(metrics: c_longlong) } } - #[no_mangle] pub extern "C" fn text_metrics_get_actual_bounding_box_right(metrics: c_longlong) -> c_float { if metrics == 0 { @@ -40,7 +38,6 @@ pub extern "C" fn text_metrics_get_actual_bounding_box_right(metrics: c_longlong } } - #[no_mangle] pub extern "C" fn text_metrics_get_actual_bounding_box_ascent(metrics: c_longlong) -> c_float { if metrics == 0 { @@ -65,7 +62,6 @@ pub extern "C" fn text_metrics_get_actual_bounding_box_descent(metrics: c_longlo } } - #[no_mangle] pub extern "C" fn text_metrics_get_font_bounding_box_ascent(metrics: c_longlong) -> c_float { if metrics == 0 { @@ -78,7 +74,6 @@ pub extern "C" fn text_metrics_get_font_bounding_box_ascent(metrics: c_longlong) } } - #[no_mangle] pub extern "C" fn text_metrics_get_font_bounding_box_descent(metrics: c_longlong) -> c_float { if metrics == 0 { @@ -91,7 +86,6 @@ pub extern "C" fn text_metrics_get_font_bounding_box_descent(metrics: c_longlong } } - #[no_mangle] pub extern "C" fn text_metrics_get_em_height_ascent(metrics: c_longlong) -> c_float { if metrics == 0 { @@ -116,7 +110,6 @@ pub extern "C" fn text_metrics_get_em_height_descent(metrics: c_longlong) -> c_f } } - #[no_mangle] pub extern "C" fn text_metrics_get_hanging_baseline(metrics: c_longlong) -> c_float { if metrics == 0 { @@ -129,7 +122,6 @@ pub extern "C" fn text_metrics_get_hanging_baseline(metrics: c_longlong) -> c_fl } } - #[no_mangle] pub extern "C" fn text_metrics_get_alphabetic_baseline(metrics: c_longlong) -> c_float { if metrics == 0 { @@ -142,7 +134,6 @@ pub extern "C" fn text_metrics_get_alphabetic_baseline(metrics: c_longlong) -> c } } - #[no_mangle] pub extern "C" fn text_metrics_get_ideographic_baseline(metrics: c_longlong) -> c_float { if metrics == 0 { @@ -153,4 +144,4 @@ pub extern "C" fn text_metrics_get_ideographic_baseline(metrics: c_longlong) -> let metrics = &*metrics; metrics.ideographic_baseline } -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/utils/gl.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/utils/gl.rs index 074c8d77..6e278be0 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/utils/gl.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/utils/gl.rs @@ -27,7 +27,13 @@ pub extern "C" fn flip_y_in_place_3d_i8( height: usize, depth: usize, ) { - crate::common::utils::gl::flip_in_place_3d(data as *mut u8, length, bytes_per_row, height, depth) + crate::common::utils::gl::flip_in_place_3d( + data as *mut u8, + length, + bytes_per_row, + height, + depth, + ) } #[no_mangle] @@ -230,4 +236,4 @@ pub extern "C" fn flip_y_in_place_f64( bytes_per_row, height, ) -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/utils/mod.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/utils/mod.rs index 7eea004d..a1367e79 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/ios/utils/mod.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/ios/utils/mod.rs @@ -1 +1 @@ -pub mod gl; \ No newline at end of file +pub mod gl; diff --git a/packages/canvas/src-native/canvas-native/canvas-core/src/lib.rs b/packages/canvas/src-native/canvas-native/canvas-core/src/lib.rs index 97149ab2..8960ed4d 100644 --- a/packages/canvas/src-native/canvas-native/canvas-core/src/lib.rs +++ b/packages/canvas/src-native/canvas-native/canvas-core/src/lib.rs @@ -1,7 +1,6 @@ #[allow(deprecated, dead_code)] pub mod common; - #[cfg(target_os = "ios")] extern crate objc; @@ -11,5 +10,3 @@ pub mod android; #[cfg(target_os = "ios")] pub mod ios; - - diff --git a/packages/canvas/src-native/canvas-native/gl-bindings/build.rs b/packages/canvas/src-native/canvas-native/gl-bindings/build.rs index d49571dc..9b89555f 100644 --- a/packages/canvas/src-native/canvas-native/gl-bindings/build.rs +++ b/packages/canvas/src-native/canvas-native/gl-bindings/build.rs @@ -93,9 +93,9 @@ fn main() { println!("cargo:rustc-link-lib=EGL"); // the "-l" flag println!("cargo:rustc-link-lib=GLESv2"); // the "-l" flag println!("cargo:rustc-link-lib=GLESv3"); // the "-l" flag - // The bindgen::Builder is the main entry point - // to bindgen, and lets you build up options for - // the resulting bindings. + // The bindgen::Builder is the main entry point + // to bindgen, and lets you build up options for + // the resulting bindings. let bindings = bindgen::Builder::default() // The input header we would like to generate // bindings for. @@ -196,12 +196,12 @@ fn build(sdk_path: Option<&str>, target: &str) { } if target.contains("apple-ios") { // builder = builder.clang_args(&["-x", "objective-c", "-fblocks"]); - builder = - builder.clang_args(&["-x","objective-c", "-fblocks"]) - .objc_extern_crate(true) - .block_extern_crate(true) - .allowlist_function("gl.*") - .allowlist_type("GL_.*") + builder = builder + .clang_args(&["-x", "objective-c", "-fblocks"]) + .objc_extern_crate(true) + .block_extern_crate(true) + .allowlist_function("gl.*") + .allowlist_type("GL_.*") } let meta_header: Vec<_> = headers @@ -220,4 +220,4 @@ fn build(sdk_path: Option<&str>, target: &str) { bindings .write_to_file(out_path.join("bindings.rs")) .expect("Couldn't write bindings!"); -} \ No newline at end of file +} diff --git a/packages/canvas/src-native/canvas-native/gl-bindings/src/lib.rs b/packages/canvas/src-native/canvas-native/gl-bindings/src/lib.rs index 34fc333b..4f7a9acd 100644 --- a/packages/canvas/src-native/canvas-native/gl-bindings/src/lib.rs +++ b/packages/canvas/src-native/canvas-native/gl-bindings/src/lib.rs @@ -3,7 +3,6 @@ #![allow(non_snake_case)] #![allow(dead_code)] - #[cfg(target_os = "android")] #[cfg(target_os = "android")] #[allow(non_snake_case)] @@ -25,5 +24,3 @@ include!(concat!(env!("OUT_DIR"), "/bindings.rs")); // #[cfg(target_os = "ios")] // mod ios_bindings; // pub use ios_bindings::*; - - diff --git a/packages/canvas/typings/android.d.ts b/packages/canvas/typings/android.d.ts index 70610e28..6bba43b6 100644 --- a/packages/canvas/typings/android.d.ts +++ b/packages/canvas/typings/android.d.ts @@ -239,10 +239,12 @@ declare module org { public onSurfaceTextureAvailable(param0: globalAndroid.graphics.SurfaceTexture, param1: number, param2: number): void; public resize(param0: number, param1: number): void; public setupContext(): void; + public setIgnorePixelScaling(param0: boolean): void; public setListener(param0: org.nativescript.canvas.TNSCanvas.Listener): void; public onSurfaceTextureUpdated(param0: globalAndroid.graphics.SurfaceTexture): void; public constructor(param0: globalAndroid.content.Context); public setStarting(param0: boolean): void; + public getIgnorePixelScaling(): boolean; public getStartupLock(): java.util.concurrent.CountDownLatch; public onSurfaceTextureSizeChanged(param0: globalAndroid.graphics.SurfaceTexture, param1: number, param2: number): void; } @@ -335,8 +337,6 @@ declare module org { public static ONE_S_IN_NS: number; public static TAG: string; public static Companion: org.nativescript.canvas.TNSCanvas.Companion; - public static layoutView(param0: number, param1: number, param2: org.nativescript.canvas.TNSCanvas): void; - public setIgnorePixelScaling(param0: boolean): void; public setCpuHandler(param0: globalAndroid.os.Handler): void; public getCpuHandlerThread(): globalAndroid.os.HandlerThread; public setWebGL$canvas_release(param0: boolean): void; @@ -344,19 +344,20 @@ declare module org { public getWebGLRenderingContext$canvas_release(): org.nativescript.canvas.TNSWebGLRenderingContext; public getCpuView$canvas_release(): org.nativescript.canvas.CPUView; public setCpuHandlerThread(param0: globalAndroid.os.HandlerThread): void; - public toData(): androidNative.Array; + public setHandleInvalidationManually(param0: boolean): void; public static nativeCustomWithBitmapFlush(param0: number, param1: globalAndroid.graphics.Bitmap): void; public flush(): void; - public isHandleInvalidationManually$canvas_release(): boolean; + public setIgnorePixelScaling(param0: boolean): void; public setSurface$canvas_release(param0: org.nativescript.canvas.GLView): void; public setUseCpu$canvas_release(param0: boolean): void; public getListener(): org.nativescript.canvas.TNSCanvas.Listener; public getSurface$canvas_release(): org.nativescript.canvas.GLView; public getDrawingBufferWidth(): number; + public getIgnorePixelScaling(): boolean; public toDataURL(): string; public constructor(param0: globalAndroid.content.Context, param1: boolean); - public setHandleInvalidationManually$canvas_release(param0: boolean): void; public getActualContextType$canvas_release(): string; + public toData(): androidNative.Array; public setActualContextType$canvas_release(param0: string): void; public resizeViewPort(): void; public setCpuView$canvas_release(param0: org.nativescript.canvas.CPUView): void; @@ -373,7 +374,6 @@ declare module org { public static nativeFlush(param0: number): void; public isPaused$canvas_release(): boolean; public onDetachedFromWindow(): void; - public snapshot(): androidNative.Array; public getContextType$canvas_release(): org.nativescript.canvas.TNSCanvas.ContextType; public setScale$canvas_release(param0: number): void; public toDataURL(param0: string, param1: number): string; @@ -389,6 +389,7 @@ declare module org { public initCanvas$canvas_release(): void; public setListener(param0: org.nativescript.canvas.TNSCanvas.Listener): void; public setLastSize$canvas_release(param0: org.nativescript.canvas.TNSCanvas.Size): void; + public static layoutView(param0: number, param1: number, param2: org.nativescript.canvas.TNSCanvas): void; public constructor(param0: globalAndroid.content.Context); public toDataURLAsync(param0: org.nativescript.canvas.TNSCanvas.DataURLListener): void; public setPaused$canvas_release(param0: boolean): void; @@ -399,10 +400,12 @@ declare module org { public static nativeInitContextWithCustomSurface(param0: number, param1: number, param2: number, param3: boolean, param4: number, param5: number, param6: number): number; public setNativeContext$canvas_release(param0: number): void; public getWebGL2RenderingContext$canvas_release(): org.nativescript.canvas.TNSWebGL2RenderingContext; + public snapshot(): androidNative.Array; public onActivityDestroyed(param0: globalAndroid.app.Activity): void; public setWebGLRenderingContext$canvas_release(param0: org.nativescript.canvas.TNSWebGLRenderingContext): void; public onActivitySaveInstanceState(param0: globalAndroid.app.Activity, param1: globalAndroid.os.Bundle): void; public getLastSize$canvas_release(): org.nativescript.canvas.TNSCanvas.Size; + public isHandleInvalidationManually(): boolean; public queueEvent(param0: java.lang.Runnable): void; public toDataURL(param0: string): string; public getCtx$canvas_release(): globalAndroid.content.Context; @@ -426,6 +429,7 @@ declare module org { public nativeResizeCustomSurface(param0: number, param1: number, param2: number, param3: number, param4: boolean, param5: number): void; public nativeResizeSurface(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: boolean, param7: number): void; public createSVGMatrix(): org.nativescript.canvas.TNSDOMMatrix; + public layoutView(param0: number, param1: number, param2: org.nativescript.canvas.TNSCanvas): void; public nativeFlush(param0: number): void; public isLibraryLoaded$canvas_release(): boolean; public nativeCustomWithBitmapFlush(param0: number, param1: globalAndroid.graphics.Bitmap): void; @@ -556,6 +560,7 @@ declare module org { public rect(param0: number, param1: number, param2: number, param3: number): void; public createImageData(param0: org.nativescript.canvas.TNSImageData): org.nativescript.canvas.TNSImageData; public getDirection(): org.nativescript.canvas.TNSTextDirection; + public getLineDash(): androidNative.Array; public strokeText(param0: string, param1: number, param2: number): void; public arcTo(param0: number, param1: number, param2: number, param3: number, param4: number): void; public getShadowColor(): string; @@ -578,7 +583,6 @@ declare module org { public setImageSmoothingEnabled(param0: boolean): void; public restore(): void; public createRadialGradient(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number): org.nativescript.canvas.TNSCanvasGradient; - public setLineDash(param0: androidNative.Array): void; public getImageSmoothingEnabled(): boolean; public drawImage(param0: globalAndroid.graphics.Bitmap, param1: number, param2: number): void; public quadraticCurveTo(param0: number, param1: number, param2: number, param3: number): void; @@ -587,10 +591,10 @@ declare module org { public rotate(param0: number): void; public getFilter(): string; public setShadowColor(param0: string): void; - public getLineDash(): androidNative.Array; public fill(): void; public fill(param0: org.nativescript.canvas.TNSPath2D): void; public isPointInPath(param0: org.nativescript.canvas.TNSPath2D, param1: number, param2: number): boolean; + public setLineDash(param0: androidNative.Array): void; public beginPath(): void; public getGlobalAlpha(): number; public clearRect(param0: number, param1: number, param2: number, param3: number): void; @@ -830,8 +834,8 @@ declare module org { export class TNSFileReader { public static class: java.lang.Class; public static INSTANCE: org.nativescript.canvas.TNSFileReader; - public read(param0: string): androidNative.Array; public read(param0: java.io.File): androidNative.Array; + public read(param0: string): androidNative.Array; } } } @@ -845,10 +849,10 @@ declare module org { public static NonZero: org.nativescript.canvas.TNSFillRule; public static EvenOdd: org.nativescript.canvas.TNSFillRule; public static Companion: org.nativescript.canvas.TNSFillRule.Companion; - public static values(): androidNative.Array; public setRule(param0: string): void; public getRule(): string; public setValue(param0: number): void; + public static values(): androidNative.Array; public static valueOf(param0: string): org.nativescript.canvas.TNSFillRule; public toString(): string; public getValue(): number; @@ -900,10 +904,9 @@ declare module org { public constructor(); public getNativeImageAsset$canvas_release(): number; public loadImageFromUrlAsync(param0: string, param1: org.nativescript.canvas.TNSImageAsset.Callback): void; - public loadImageFromBytesAsync(param0: androidNative.Array, param1: org.nativescript.canvas.TNSImageAsset.Callback): void; public loadImageFromPath(param0: string): boolean; - public flipX(): void; public loadImageFromBytes(param0: androidNative.Array): boolean; + public flipX(): void; public loadImageFromImage(param0: globalAndroid.graphics.Bitmap): boolean; public getWidth(): number; public save(param0: string, param1: org.nativescript.canvas.TNSImageAssetFormat): boolean; @@ -911,14 +914,15 @@ declare module org { public setNativeImageAsset$canvas_release(param0: number): void; public getError(): string; public static nativeGetHeightImpl$canvas_release(param0: number): number; + public loadImageFromBytesAsync(param0: androidNative.Array, param1: org.nativescript.canvas.TNSImageAsset.Callback): void; public loadImageFromPathAsync(param0: string, param1: org.nativescript.canvas.TNSImageAsset.Callback): void; public static nativeDestroyImpl$canvas_release(param0: number): void; } export module TNSImageAsset { export class ByteArrayOutputStream2 { public static class: java.lang.Class; - public buf(): androidNative.Array; public constructor(); + public buf(): androidNative.Array; public constructor(param0: number); } export class Callback { @@ -955,8 +959,8 @@ declare module org { public static ICO: org.nativescript.canvas.TNSImageAssetFormat; public static BMP: org.nativescript.canvas.TNSImageAssetFormat; public static TIFF: org.nativescript.canvas.TNSImageAssetFormat; - public setFormat(param0: number): void; public static values(): androidNative.Array; + public setFormat(param0: number): void; public static valueOf(param0: string): org.nativescript.canvas.TNSImageAssetFormat; public getFormat(): number; } @@ -971,15 +975,17 @@ declare module org { public static class: java.lang.Class; public static Companion: org.nativescript.canvas.TNSImageBitmap.Companion; public getHeight(): number; - public static createFromBytesEncoded(param0: androidNative.Array, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; public finalize(): void; public static createFromBuffer(param0: java.nio.ByteBuffer, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: org.nativescript.canvas.TNSImageBitmap.Options, param8: org.nativescript.canvas.TNSImageBitmap.Callback): void; - public static createFromBytes(param0: androidNative.Array, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; public static createFromBufferEncoded(param0: java.nio.ByteBuffer, param1: org.nativescript.canvas.TNSImageBitmap.Options, param2: org.nativescript.canvas.TNSImageBitmap.Callback): void; public setNativeImageAsset(param0: number): void; - public static createFromBytesEncoded(param0: androidNative.Array, param1: org.nativescript.canvas.TNSImageBitmap.Options, param2: org.nativescript.canvas.TNSImageBitmap.Callback): void; + public static createFromBytes(param0: androidNative.Array, param1: number, param2: number, param3: org.nativescript.canvas.TNSImageBitmap.Options, param4: org.nativescript.canvas.TNSImageBitmap.Callback): void; + public static createFromBytes(param0: androidNative.Array, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: org.nativescript.canvas.TNSImageBitmap.Options, param8: org.nativescript.canvas.TNSImageBitmap.Callback): void; public static createFromImageBitmap(param0: org.nativescript.canvas.TNSImageBitmap, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; + public static createFromBytes(param0: androidNative.Array, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; + public static createFromBytesEncoded(param0: androidNative.Array, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; public static createFromBufferEncoded(param0: java.nio.ByteBuffer, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; + public static createFromBytesEncoded(param0: androidNative.Array, param1: org.nativescript.canvas.TNSImageBitmap.Options, param2: org.nativescript.canvas.TNSImageBitmap.Callback): void; public static createFromImageData(param0: org.nativescript.canvas.TNSImageData, param1: org.nativescript.canvas.TNSImageBitmap.Options, param2: org.nativescript.canvas.TNSImageBitmap.Callback): void; public close(): void; public static createFromCanvas(param0: org.nativescript.canvas.TNSCanvas, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; @@ -990,8 +996,6 @@ declare module org { public static createFromCanvas(param0: org.nativescript.canvas.TNSCanvas, param1: org.nativescript.canvas.TNSImageBitmap.Options, param2: org.nativescript.canvas.TNSImageBitmap.Callback): void; public static createFromImageBitmap(param0: org.nativescript.canvas.TNSImageBitmap, param1: org.nativescript.canvas.TNSImageBitmap.Options, param2: org.nativescript.canvas.TNSImageBitmap.Callback): void; public getNativeImageAsset(): number; - public static createFromBytes(param0: androidNative.Array, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: org.nativescript.canvas.TNSImageBitmap.Options, param8: org.nativescript.canvas.TNSImageBitmap.Callback): void; - public static createFromBytes(param0: androidNative.Array, param1: number, param2: number, param3: org.nativescript.canvas.TNSImageBitmap.Options, param4: org.nativescript.canvas.TNSImageBitmap.Callback): void; public constructor(param0: number); public static createFromImageAsset(param0: org.nativescript.canvas.TNSImageAsset, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; public static createFromImageAsset(param0: org.nativescript.canvas.TNSImageAsset, param1: org.nativescript.canvas.TNSImageBitmap.Options, param2: org.nativescript.canvas.TNSImageBitmap.Callback): void; @@ -1015,22 +1019,22 @@ declare module org { public static class: java.lang.Class; public createFromImageData(param0: org.nativescript.canvas.TNSImageData, param1: org.nativescript.canvas.TNSImageBitmap.Options, param2: org.nativescript.canvas.TNSImageBitmap.Callback): void; public createFromBytes(param0: androidNative.Array, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; - public createFromBytesEncoded(param0: androidNative.Array, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; - public createFromBytes(param0: androidNative.Array, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: org.nativescript.canvas.TNSImageBitmap.Options, param8: org.nativescript.canvas.TNSImageBitmap.Callback): void; public createFromCanvas(param0: org.nativescript.canvas.TNSCanvas, param1: org.nativescript.canvas.TNSImageBitmap.Options, param2: org.nativescript.canvas.TNSImageBitmap.Callback): void; public createFromImageAsset(param0: org.nativescript.canvas.TNSImageAsset, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; public createFromImageData(param0: org.nativescript.canvas.TNSImageData, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; public createFromCanvas(param0: org.nativescript.canvas.TNSCanvas, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; public createFromImageBitmap(param0: org.nativescript.canvas.TNSImageBitmap, param1: org.nativescript.canvas.TNSImageBitmap.Options, param2: org.nativescript.canvas.TNSImageBitmap.Callback): void; + public createFromBytesEncoded(param0: androidNative.Array, param1: org.nativescript.canvas.TNSImageBitmap.Options, param2: org.nativescript.canvas.TNSImageBitmap.Callback): void; public createFromImageBitmap(param0: org.nativescript.canvas.TNSImageBitmap, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; public createFromBuffer(param0: java.nio.ByteBuffer, param1: number, param2: number, param3: org.nativescript.canvas.TNSImageBitmap.Options, param4: org.nativescript.canvas.TNSImageBitmap.Callback): void; public createFromBufferEncoded(param0: java.nio.ByteBuffer, param1: org.nativescript.canvas.TNSImageBitmap.Options, param2: org.nativescript.canvas.TNSImageBitmap.Callback): void; public createFromBufferEncoded(param0: java.nio.ByteBuffer, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; public getFAILED_TO_LOAD(): string; - public createFromImageAsset(param0: org.nativescript.canvas.TNSImageAsset, param1: org.nativescript.canvas.TNSImageBitmap.Options, param2: org.nativescript.canvas.TNSImageBitmap.Callback): void; - public createFromBytesEncoded(param0: androidNative.Array, param1: org.nativescript.canvas.TNSImageBitmap.Options, param2: org.nativescript.canvas.TNSImageBitmap.Callback): void; public createFromBytes(param0: androidNative.Array, param1: number, param2: number, param3: org.nativescript.canvas.TNSImageBitmap.Options, param4: org.nativescript.canvas.TNSImageBitmap.Callback): void; + public createFromImageAsset(param0: org.nativescript.canvas.TNSImageAsset, param1: org.nativescript.canvas.TNSImageBitmap.Options, param2: org.nativescript.canvas.TNSImageBitmap.Callback): void; + public createFromBytes(param0: androidNative.Array, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: org.nativescript.canvas.TNSImageBitmap.Options, param8: org.nativescript.canvas.TNSImageBitmap.Callback): void; public createFromBuffer(param0: java.nio.ByteBuffer, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: org.nativescript.canvas.TNSImageBitmap.Options, param8: org.nativescript.canvas.TNSImageBitmap.Callback): void; + public createFromBytesEncoded(param0: androidNative.Array, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; public createFromBitmap(param0: globalAndroid.graphics.Bitmap, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap.Options, param6: org.nativescript.canvas.TNSImageBitmap.Callback): void; public createFromBitmap(param0: globalAndroid.graphics.Bitmap, param1: org.nativescript.canvas.TNSImageBitmap.Options, param2: org.nativescript.canvas.TNSImageBitmap.Callback): void; } @@ -1063,12 +1067,12 @@ declare module org { public static Default: org.nativescript.canvas.TNSImageBitmapColorSpaceConversion; public static None: org.nativescript.canvas.TNSImageBitmapColorSpaceConversion; public static Companion: org.nativescript.canvas.TNSImageBitmapColorSpaceConversion.Companion; + public static values(): androidNative.Array; public static valueOf(param0: string): org.nativescript.canvas.TNSImageBitmapColorSpaceConversion; public toString(): string; public getValue(): number; public toNative(): number; public getSpace(): string; - public static values(): androidNative.Array; } export module TNSImageBitmapColorSpaceConversion { export class Companion { @@ -1219,11 +1223,11 @@ declare module org { public static Round: org.nativescript.canvas.TNSLineJoin; public static Miter: org.nativescript.canvas.TNSLineJoin; public static Companion: org.nativescript.canvas.TNSLineJoin.Companion; - public static values(): androidNative.Array; public isError$canvas_release(): boolean; public setError$canvas_release(param0: boolean): void; public static valueOf(param0: string): org.nativescript.canvas.TNSLineJoin; public toString(): string; + public static values(): androidNative.Array; public toNative(): number; } export module TNSLineJoin { @@ -1303,8 +1307,8 @@ declare module org { public static NoRepeat: org.nativescript.canvas.TNSPatternRepetition; public getPattern(): string; public toString(): string; - public static values(): androidNative.Array; public toNative(): number; + public static values(): androidNative.Array; public static valueOf(param0: string): org.nativescript.canvas.TNSPatternRepetition; } } @@ -1318,16 +1322,18 @@ declare module org { public static class: java.lang.Class; public static Companion: org.nativescript.canvas.TNSSVG.Companion; public getBitmap$canvas_release(): globalAndroid.graphics.Bitmap; + public constructor(param0: globalAndroid.content.Context, param1: globalAndroid.util.AttributeSet); + public setSrc(param0: string): void; + public setSrcPath(param0: string): void; + public flush(): void; public setBitmap$canvas_release(param0: globalAndroid.graphics.Bitmap): void; + public setIgnorePixelScaling(param0: boolean): void; public onDraw(param0: globalAndroid.graphics.Canvas): void; public getLock$canvas_release(): any; public onSizeChanged(param0: number, param1: number, param2: number, param3: number): void; - public constructor(param0: globalAndroid.content.Context, param1: globalAndroid.util.AttributeSet); - public setSrc(param0: string): void; public constructor(param0: globalAndroid.content.Context); + public getIgnorePixelScaling(): boolean; public constructor(param0: globalAndroid.content.Context, param1: boolean); - public setSrcPath(param0: string): void; - public flush(): void; } export module TNSSVG { export class Companion { @@ -1349,9 +1355,9 @@ declare module org { public static Right: org.nativescript.canvas.TNSTextAlignment; public static End: org.nativescript.canvas.TNSTextAlignment; public static Companion: org.nativescript.canvas.TNSTextAlignment.Companion; + public static values(): androidNative.Array; public isError$canvas_release(): boolean; public setError$canvas_release(param0: boolean): void; - public static values(): androidNative.Array; public toString(): string; public toNative(): number; public static valueOf(param0: string): org.nativescript.canvas.TNSTextAlignment; @@ -1378,9 +1384,9 @@ declare module org { public static Ideographic: org.nativescript.canvas.TNSTextBaseline; public static Bottom: org.nativescript.canvas.TNSTextBaseline; public getBaseLine(): string; - public static values(): androidNative.Array; public static valueOf(param0: string): org.nativescript.canvas.TNSTextBaseline; public setBaseLine(param0: string): void; + public static values(): androidNative.Array; public toString(): string; } } @@ -1394,9 +1400,14 @@ declare module org { public static class: java.lang.Class; public static Companion: org.nativescript.canvas.TNSTextDecoder.Companion; public getEncoding(): string; - public decode(param0: androidNative.Array): string; + public decodeDoubleBuffer(param0: androidNative.Array): string; public decode(param0: java.nio.ByteBuffer): string; public finalize(): void; + public decodeIntBuffer(param0: androidNative.Array): string; + public decode(param0: androidNative.Array): string; + public decodeByteBuffer(param0: java.nio.ByteBuffer): string; + public decodeFloatBuffer(param0: androidNative.Array): string; + public decodeShortBuffer(param0: androidNative.Array): string; public constructor(param0: string); public constructor(); } @@ -1416,9 +1427,9 @@ declare module org { public static class: java.lang.Class; public static Ltr: org.nativescript.canvas.TNSTextDirection; public static Rtl: org.nativescript.canvas.TNSTextDirection; - public static values(): androidNative.Array; public toString(): string; public toNative(): number; + public static values(): androidNative.Array; public static valueOf(param0: string): org.nativescript.canvas.TNSTextDirection; } } @@ -1482,73 +1493,45 @@ declare module org { export class TNSWebGL2RenderingContext extends org.nativescript.canvas.TNSWebGLRenderingContext { public static class: java.lang.Class; public static Companion: org.nativescript.canvas.TNSWebGL2RenderingContext.Companion; - public getCOLOR_ATTACHMENT13(): number; - public getUNSIGNED_INT_VEC3(): number; - public invalidateSubFramebuffer(param0: number, param1: androidNative.Array, param2: number, param3: number, param4: number, param5: number): void; - public getRGBA32UI(): number; - public uniform1uiv(param0: number, param1: androidNative.Array): void; + public compressedTexSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.ByteBuffer, param10: number, param11: number): void; public getRG32UI(): number; public getSYNC_GPU_COMMANDS_COMPLETE(): number; + public texImage3DFloat(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: androidNative.Array): void; public getRGBA16F(): number; - public texSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: globalAndroid.graphics.Bitmap): void; - public getDEPTH24_STENCIL8(): number; + public uniform2uiv(param0: number, param1: androidNative.Array): void; public getDRAW_BUFFER10(): number; public getRG8I(): number; public getUNIFORM_ARRAY_STRIDE(): number; - public getRGB32I(): number; public getUNPACK_SKIP_PIXELS(): number; public isVertexArray(param0: number): boolean; public getFLOAT_MAT4x3(): number; public constructor(param0: org.nativescript.canvas.TNSCanvas, param1: java.util.Map); - public getR8I(): number; public texStorage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number): void; - public invalidateFramebuffer(param0: number, param1: androidNative.Array): void; + public getBufferSubData(param0: number, param1: number, param2: androidNative.Array, param3: number, param4: number): void; public getUNSIGNED_INT_24_8(): number; public getTRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN(): number; - public getFRAMEBUFFER_ATTACHMENT_STENCIL_SIZE(): number; public getMAX_CLIENT_WAIT_TIMEOUT_WEBGL(): number; - public getDYNAMIC_COPY(): number; public getFRAMEBUFFER_INCOMPLETE_MULTISAMPLE(): number; - public getTEXTURE_WRAP_R(): number; - public getTRANSFORM_FEEDBACK_BUFFER_START(): number; - public texSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: org.nativescript.canvas.TNSCanvas): void; + public texSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: java.nio.ShortBuffer, param11: number): void; public beginTransformFeedback(param0: number): void; public getDRAW_FRAMEBUFFER(): number; - public createSampler(): number; - public uniformMatrix2x3fv(param0: number, param1: boolean, param2: androidNative.Array): void; public getPIXEL_UNPACK_BUFFER_BINDING(): number; - public drawBuffers(param0: androidNative.Array): void; - public getFRAMEBUFFER_ATTACHMENT_ALPHA_SIZE(): number; - public getInternalformatParameter(param0: number, param1: number, param2: number): any; - public getINT_2_10_10_10_REV(): number; public getRGBA16UI(): number; - public uniformMatrix2x4fv(param0: number, param1: boolean, param2: androidNative.Array): void; public getANY_SAMPLES_PASSED_CONSERVATIVE(): number; public getDEPTH(): number; public getTEXTURE_2D_ARRAY(): number; - public readBuffer(param0: number): void; - public uniform1ui(param0: number, param1: number): void; - public getMAX_DRAW_BUFFERS(): number; public createTransformFeedback(): number; public fenceSync(param0: number, param1: number): void; public vertexAttribI4ui(param0: number, param1: number, param2: number, param3: number, param4: number): void; public getUNIFORM_TYPE(): number; public endQuery(param0: number): void; + public transformFeedbackVaryings(param0: number, param1: androidNative.Array, param2: number): void; public getDRAW_BUFFER5(): number; - public getFRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE(): number; - public resumeTransformFeedback(): void; public getSAMPLER_BINDING(): number; - public getSIGNED_NORMALIZED(): number; public getMAX_UNIFORM_BUFFER_BINDINGS(): number; - public getFRAMEBUFFER_ATTACHMENT_COLOR_ENCODING(): number; - public clearBufferiv(param0: number, param1: number, param2: androidNative.Array): void; - public texSubImage3DFloat(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: androidNative.Array, param11: number): void; + public texSubImage3DInt(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: androidNative.Array, param11: number): void; public getSAMPLER_CUBE_SHADOW(): number; - public getSEPARATE_ATTRIBS(): number; public getFRAMEBUFFER_ATTACHMENT_RED_SIZE(): number; - public getPIXEL_UNPACK_BUFFER(): number; - public getDEPTH32F_STENCIL8(): number; - public getUNPACK_SKIP_IMAGES(): number; public getR16F(): number; public getUNSIGNED_INT_VEC2(): number; public getActiveUniformBlockName(param0: number, param1: number): string; @@ -1556,265 +1539,346 @@ declare module org { public getUNSIGNED_INT_SAMPLER_2D(): number; public getCOLOR_ATTACHMENT14(): number; public getTEXTURE_3D(): number; - public getFLOAT_32_UNSIGNED_INT_24_8_REV(): number; public getR16UI(): number; public getUNSIGNED_INT_SAMPLER_3D(): number; + public texImage3DDoubleBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.DoubleBuffer): void; public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.IntBuffer): void; - public getINT_SAMPLER_3D(): number; - public getMAX_COMBINED_VERTEX_UNIFORM_COMPONENTS(): number; - public getRGB8I(): number; - public getINT_SAMPLER_2D(): number; - public getUNIFORM_BUFFER(): number; + public compressedTexSubImage3DByteBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.ByteBuffer, param10: number, param11: number): void; + public drawBuffers(param0: androidNative.Array): void; public getUNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER(): number; public getR32F(): number; public getDRAW_BUFFER7(): number; + public texImage3DShortBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.ShortBuffer): void; public getRGB10_A2UI(): number; - public samplerParameteri(param0: number, param1: number, param2: number): void; public getVERTEX_ARRAY_BINDING(): number; + public uniformMatrix2x3fv(param0: number, param1: boolean, param2: androidNative.Array): void; public getTRANSFORM_FEEDBACK_BUFFER_BINDING(): number; - public getRG16UI(): number; - public getUNSIGNED_INT_SAMPLER_2D_ARRAY(): number; - public getUNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER(): number; + public compressedTexSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: androidNative.Array, param10: number, param11: number): void; public getPIXEL_PACK_BUFFER(): number; public getMAX_PROGRAM_TEXEL_OFFSET(): number; - public getRGB16I(): number; - public getDRAW_BUFFER6(): number; public getTRANSFORM_FEEDBACK_ACTIVE(): number; public getUNIFORM_BLOCK_BINDING(): number; - public getUniformBlockIndex(param0: number, param1: string): number; - public getRGBA8(): number; public getRG_INTEGER(): number; - public vertexAttribI4i(param0: number, param1: number, param2: number, param3: number, param4: number): void; public getSYNC_FLAGS(): number; public drawRangeElements(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number): void; - public getFLOAT_MAT2x4(): number; - public getRG8_SNORM(): number; public getANY_SAMPLES_PASSED(): number; - public getSTATIC_READ(): number; - public getBufferSubData(param0: number, param1: number, param2: androidNative.Array, param3: number, param4: number): void; - public getDRAW_BUFFER1(): number; - public getMAX_COLOR_ATTACHMENTS(): number; - public getMAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS(): number; - public getFRAMEBUFFER_ATTACHMENT_DEPTH_SIZE(): number; - public getMAX_3D_TEXTURE_SIZE(): number; - public getRG16I(): number; + public vertexAttribI4uiv(param0: number, param1: androidNative.Array): void; public getTEXTURE_MAX_LOD(): number; - public getSamplerParameter(param0: number, param1: number): any; - public clearBufferfv(param0: number, param1: number, param2: androidNative.Array): void; public getTransformFeedbackVarying(param0: number, param1: number): any; public renderbufferStorageMultisample(param0: number, param1: number, param2: number, param3: number, param4: number): void; - public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: org.nativescript.canvas.TNSCanvas): void; - public vertexAttribI4uiv(param0: number, param1: androidNative.Array): void; - public getRGB8_SNORM(): number; - public getRGB16F(): number; - public getFLOAT_MAT3x2(): number; - public getDEPTH_COMPONENT24(): number; public getUNSIGNED_INT_10F_11F_11F_REV(): number; - public getWAIT_FAILED(): number; public getPACK_SKIP_PIXELS(): number; - public getTIMEOUT_EXPIRED(): number; + public texSubImage3DByte(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: androidNative.Array, param11: number): void; public getTRANSFORM_FEEDBACK_BUFFER(): number; - public getALREADY_SIGNALED(): number; - public getCOLOR_ATTACHMENT11(): number; public getRGB8(): number; public getTRANSFORM_FEEDBACK_PAUSED(): number; - public getDRAW_FRAMEBUFFER_BINDING(): number; - public blitFramebuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number): void; - public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.DoubleBuffer): void; - public deleteTransformFeedback(param0: number): void; - public drawElementsInstanced(param0: number, param1: number, param2: number, param3: number, param4: number): void; - public getTEXTURE_COMPARE_FUNC(): number; public getUNSIGNED_INT_VEC4(): number; - public getRED(): number; - public texSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: number): void; public getMAX_VERTEX_UNIFORM_COMPONENTS(): number; - public deleteSync(param0: number): void; - public getFRAMEBUFFER_DEFAULT(): number; - public texImage3DByte(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: androidNative.Array): void; - public getSAMPLER_2D_SHADOW(): number; - public uniform2ui(param0: number, param1: number, param2: number): void; - public uniformBlockBinding(param0: number, param1: number, param2: number): void; - public uniformMatrix4x3fv(param0: number, param1: boolean, param2: androidNative.Array): void; public texSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: androidNative.Array, param11: number): void; + public uniform2ui(param0: number, param1: number, param2: number): void; + public uniformMatrix3x2fvBuffer(param0: number, param1: boolean, param2: java.nio.FloatBuffer): void; public getCOLOR_ATTACHMENT4(): number; public getMAX(): number; public getINT_SAMPLER_CUBE(): number; public getSTREAM_READ(): number; - public getCOMPARE_REF_TO_TEXTURE(): number; - public getDRAW_BUFFER14(): number; public getCOPY_READ_BUFFER_BINDING(): number; - public getTEXTURE_BINDING_2D_ARRAY(): number; public getPIXEL_PACK_BUFFER_BINDING(): number; public bindTransformFeedback(param0: number, param1: number): void; - public getActiveUniforms(param0: number, param1: androidNative.Array, param2: number): any; public getUNSIGNED_INT_5_9_9_9_REV(): number; - public getQuery(param0: number, param1: number): any; - public getSIGNALED(): number; - public framebufferTextureLayer(param0: number, param1: number, param2: number, param3: number, param4: number): void; public getCOPY_WRITE_BUFFER_BINDING(): number; public getUNIFORM_MATRIX_STRIDE(): number; - public getTEXTURE_MAX_LEVEL(): number; - public createVertexArray(): number; - public getSRGB(): number; public getCOLOR_ATTACHMENT6(): number; public getVERTEX_ATTRIB_ARRAY_INTEGER(): number; - public texImage3DDouble(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: androidNative.Array): void; public beginQuery(param0: number, param1: number): void; - public getREAD_BUFFER(): number; public getRG8UI(): number; - public getFRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER(): number; - public getSYNC_FENCE(): number; public getIndexedParameter(param0: number, param1: number): any; public getDRAW_BUFFER12(): number; public getFRAMEBUFFER_ATTACHMENT_GREEN_SIZE(): number; public getQueryParameter(param0: number, param1: number): any; - public texImage3DShort(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: androidNative.Array): void; - public uniform3ui(param0: number, param1: number, param2: number, param3: number): void; - public uniform4uiv(param0: number, param1: androidNative.Array): void; public copyTexSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number): void; - public getUNPACK_ROW_LENGTH(): number; - public getMAX_TEXTURE_LOD_BIAS(): number; - public getSTENCIL(): number; - public getFLOAT_MAT3x4(): number; - public uniformMatrix4x2fv(param0: number, param1: boolean, param2: androidNative.Array): void; - public getR11F_G11F_B10F(): number; - public isQuery(param0: number): boolean; - public getSRGB8_ALPHA8(): number; - public bindBufferBase(param0: number, param1: number, param2: number): void; - public getTEXTURE_COMPARE_MODE(): number; - public getTRANSFORM_FEEDBACK_BUFFER_MODE(): number; - public getCOLOR_ATTACHMENT8(): number; - public getUNIFORM_BUFFER_SIZE(): number; + public uniform4uiv(param0: number, param1: androidNative.Array): void; public getRGB32UI(): number; public getSYNC_STATUS(): number; + public uniformMatrix3x4fv(param0: number, param1: boolean, param2: androidNative.Array): void; public getTRANSFORM_FEEDBACK_VARYINGS(): number; - public bindBufferRange(param0: number, param1: number, param2: number, param3: number, param4: number): void; - public getDRAW_BUFFER9(): number; - public getSYNC_CONDITION(): number; public getCOPY_WRITE_BUFFER(): number; public getRGB9_E5(): number; - public getCOLOR_ATTACHMENT10(): number; - public getOBJECT_TYPE(): number; public pauseTransformFeedback(): void; - public texSubImage3DByte(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: androidNative.Array, param11: number): void; - public getRGBA16I(): number; - public getMAX_SERVER_WAIT_TIMEOUT(): number; - public getRG32F(): number; - public uniform3uiv(param0: number, param1: androidNative.Array): void; + public texSubImage3DIntBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: java.nio.IntBuffer, param11: number): void; + public texImage3DLongBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.LongBuffer): void; public getDRAW_BUFFER3(): number; - public uniformMatrix3x4fv(param0: number, param1: boolean, param2: androidNative.Array): void; - public transformFeedbackVaryings(param0: number, param1: androidNative.Array, param2: number): void; public getR32I(): number; + public texSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: java.nio.FloatBuffer, param11: number): void; public samplerParameterf(param0: number, param1: number, param2: number): void; public getQUERY_RESULT_AVAILABLE(): number; - public createQuery(): number; - public getHALF_FLOAT(): number; - public getINTERLEAVED_ATTRIBS(): number; public getTRANSFORM_FEEDBACK(): number; public getCONDITION_SATISFIED(): number; - public constructor(param0: org.nativescript.canvas.TNSCanvas); public getUNIFORM_BUFFER_OFFSET_ALIGNMENT(): number; - public getDRAW_BUFFER2(): number; - public getCOLOR_ATTACHMENT2(): number; - public getACTIVE_UNIFORM_BLOCKS(): number; - public getRGB32F(): number; - public getUNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES(): number; + public texImage3DDouble(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: androidNative.Array): void; public isSync(param0: number): boolean; - public getMAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS(): number; public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: org.nativescript.canvas.TNSImageAsset): void; public getDRAW_BUFFER8(): number; - public getCOLOR_ATTACHMENT1(): number; - public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.ShortBuffer): void; - public getTEXTURE_BASE_LEVEL(): number; public getRENDERBUFFER_SAMPLES(): number; public getUNSIGNED_INT_2_10_10_10_REV(): number; public getSYNC_FLUSH_COMMANDS_BIT(): number; - public uniformMatrix3x2fv(param0: number, param1: boolean, param2: androidNative.Array): void; - public texSubImage3DDouble(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: androidNative.Array, param11: number): void; public getMAX_ELEMENT_INDEX(): number; public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: globalAndroid.graphics.Bitmap): void; - public isSampler(param0: number): boolean; - public getCURRENT_QUERY(): number; - public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.FloatBuffer): void; - public texSubImage3DLong(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: androidNative.Array, param11: number): void; + public getUniformIndices(param0: number, param1: androidNative.Array): androidNative.Array; public deleteQuery(param0: number): void; - public texSubImage3DInt(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: androidNative.Array, param11: number): void; public getDEPTH_COMPONENT32F(): number; - public getSRGB8(): number; public getMAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS(): number; public copyBufferSubData(param0: number, param1: number, param2: number, param3: number, param4: number): void; - public getRGBA32I(): number; public getRGBA8_SNORM(): number; - public getParameter(param0: number): any; public getINT_SAMPLER_2D_ARRAY(): number; public compressedTexSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: number): void; - public getRGBA8UI(): number; public getCOLOR_ATTACHMENT15(): number; public clearBufferfi(param0: number, param1: number, param2: number, param3: number): void; public getINVALID_INDEX(): number; - public getUniformIndices(param0: number, param1: androidNative.Array): androidNative.Array; + public uniformMatrix3x2fv(param0: number, param1: boolean, param2: androidNative.Array): void; public getPACK_ROW_LENGTH(): number; - public getMAX_UNIFORM_BLOCK_SIZE(): number; - public getMIN(): number; - public getREAD_FRAMEBUFFER(): number; - public getUNSIGNALED(): number; - public getRG8(): number; public getMAX_ARRAY_TEXTURE_LAYERS(): number; - public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: androidNative.Array): void; - public getPACK_SKIP_ROWS(): number; - public texSubImage3DShort(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: androidNative.Array, param11: number): void; - public getVERTEX_ATTRIB_ARRAY_DIVISOR(): number; + public fromGLint(param0: androidNative.Array): androidNative.Array; public isTransformFeedback(param0: number): boolean; - public vertexAttribI4iv(param0: number, param1: androidNative.Array): void; - public getUNPACK_SKIP_ROWS(): number; public drawArraysInstanced(param0: number, param1: number, param2: number, param3: number): void; + public texImage3DInt(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: androidNative.Array): void; public getUNSIGNED_INT_SAMPLER_CUBE(): number; public getRG16F(): number; - public getUNPACK_IMAGE_HEIGHT(): number; - public getMAX_FRAGMENT_UNIFORM_COMPONENTS(): number; - public getRGB_INTEGER(): number; + public texSubImage3DFloatBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: java.nio.FloatBuffer, param11: number): void; public getRGB10_A2(): number; public getFLOAT_MAT2x3(): number; - public getCOLOR(): number; + public uniformMatrix4x3fv(param0: number, param1: boolean, param2: androidNative.Array): void; public getR8(): number; public getMAX_ELEMENTS_VERTICES(): number; - public getMAX_VERTEX_OUTPUT_COMPONENTS(): number; - public getRGB8UI(): number; - public getSAMPLER_3D(): number; - public getDRAW_BUFFER15(): number; public getFRAMEBUFFER_ATTACHMENT_BLUE_SIZE(): number; public getTIMEOUT_IGNORED(): number; public getUNIFORM_BLOCK_INDEX(): number; public getDRAW_BUFFER4(): number; public getFRAGMENT_SHADER_DERIVATIVE_HINT(): number; - public getRGBA32F(): number; public getRGBA8I(): number; public getCOLOR_ATTACHMENT3(): number; - public clearBufferuiv(param0: number, param1: number, param2: androidNative.Array): void; + public uniformMatrix4x2fv(param0: number, param1: boolean, param2: androidNative.Array): void; public getTEXTURE_BINDING_3D(): number; - public getR8UI(): number; public bindVertexArray(param0: number): void; public getRG(): number; - public getFLOAT_MAT4x2(): number; - public getMAX_VERTEX_UNIFORM_BLOCKS(): number; - public getQUERY_RESULT(): number; - public getUNIFORM_BLOCK_DATA_SIZE(): number; public getMAX_SAMPLES(): number; public endTransformFeedback(): void; public getMAX_VARYING_COMPONENTS(): number; public texStorage2D(param0: number, param1: number, param2: number, param3: number, param4: number): void; - public getSyncParameter(param0: number, param1: number): any; - public compressedTexSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: androidNative.Array, param10: number, param11: number): void; - public uniform2uiv(param0: number, param1: androidNative.Array): void; public getCOLOR_ATTACHMENT12(): number; + public getTRANSFORM_FEEDBACK_BUFFER_SIZE(): number; + public getUNIFORM_IS_ROW_MAJOR(): number; + public deleteSampler(param0: number): void; + public uniform4ui(param0: number, param1: number, param2: number, param3: number, param4: number): void; + public getUNIFORM_SIZE(): number; + public getCOPY_READ_BUFFER(): number; + public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.LongBuffer): void; + public uniformMatrix2x3fvBuffer(param0: number, param1: boolean, param2: java.nio.FloatBuffer): void; + public getCOLOR_ATTACHMENT7(): number; + public getR8_SNORM(): number; + public getFragDataLocation(param0: number, param1: string): number; + public getR32UI(): number; + public getMAX_FRAGMENT_UNIFORM_BLOCKS(): number; + public getDRAW_BUFFER0(): number; + public getTEXTURE_MIN_LOD(): number; + public getRGBA_INTEGER(): number; + public texImage3DShort(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: androidNative.Array): void; + public uniformMatrix3x4fvBuffer(param0: number, param1: boolean, param2: java.nio.FloatBuffer): void; + public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.ByteBuffer): void; + public getDRAW_BUFFER13(): number; + public getRASTERIZER_DISCARD(): number; + public getMIN_PROGRAM_TEXEL_OFFSET(): number; + public getUNIFORM_BLOCK_ACTIVE_UNIFORMS(): number; + public uniform2uivBuffer(param0: number, param1: java.nio.IntBuffer): void; + public getDYNAMIC_READ(): number; + public getCOLOR_ATTACHMENT13(): number; + public getUNSIGNED_INT_VEC3(): number; + public texSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: java.nio.DoubleBuffer, param11: number): void; + public getRGBA32UI(): number; + public texSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: globalAndroid.graphics.Bitmap): void; + public getDEPTH24_STENCIL8(): number; + public vertexAttribI4iv(param0: number, param1: androidNative.Array): void; + public getRGB32I(): number; + public getR8I(): number; + public texImage3DFloatBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.FloatBuffer): void; + public getFRAMEBUFFER_ATTACHMENT_STENCIL_SIZE(): number; + public getDYNAMIC_COPY(): number; + public getTEXTURE_WRAP_R(): number; + public getTRANSFORM_FEEDBACK_BUFFER_START(): number; + public texSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: org.nativescript.canvas.TNSCanvas): void; + public createSampler(): number; + public getFRAMEBUFFER_ATTACHMENT_ALPHA_SIZE(): number; + public getInternalformatParameter(param0: number, param1: number, param2: number): any; + public getINT_2_10_10_10_REV(): number; + public texSubImage3DShort(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: androidNative.Array, param11: number): void; + public readBuffer(param0: number): void; + public uniform1ui(param0: number, param1: number): void; + public getMAX_DRAW_BUFFERS(): number; + public texSubImage3DLong(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: androidNative.Array, param11: number): void; + public getFRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE(): number; + public resumeTransformFeedback(): void; + public getSIGNED_NORMALIZED(): number; + public getFRAMEBUFFER_ATTACHMENT_COLOR_ENCODING(): number; + public getSEPARATE_ATTRIBS(): number; + public uniformMatrix4x2fvBuffer(param0: number, param1: boolean, param2: java.nio.FloatBuffer): void; + public getPIXEL_UNPACK_BUFFER(): number; + public getDEPTH32F_STENCIL8(): number; + public getUNPACK_SKIP_IMAGES(): number; + public vertexAttribI4ivBuffer(param0: number, param1: java.nio.IntBuffer): void; + public getFLOAT_32_UNSIGNED_INT_24_8_REV(): number; + public getINT_SAMPLER_3D(): number; + public getMAX_COMBINED_VERTEX_UNIFORM_COMPONENTS(): number; + public texSubImage3DFloat(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: androidNative.Array, param11: number): void; + public getRGB8I(): number; + public getINT_SAMPLER_2D(): number; + public getUNIFORM_BUFFER(): number; + public texImage3DByte(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: androidNative.Array): void; + public samplerParameteri(param0: number, param1: number, param2: number): void; + public getRG16UI(): number; + public getUNSIGNED_INT_SAMPLER_2D_ARRAY(): number; + public texSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: java.nio.IntBuffer, param11: number): void; + public getUNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER(): number; + public getRGB16I(): number; + public getDRAW_BUFFER6(): number; + public getUniformBlockIndex(param0: number, param1: string): number; + public getRGBA8(): number; + public vertexAttribI4i(param0: number, param1: number, param2: number, param3: number, param4: number): void; + public getFLOAT_MAT2x4(): number; + public invalidateFramebuffer(param0: number, param1: androidNative.Array): void; + public getRG8_SNORM(): number; + public getSTATIC_READ(): number; + public getDRAW_BUFFER1(): number; + public getMAX_COLOR_ATTACHMENTS(): number; + public getMAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS(): number; + public getFRAMEBUFFER_ATTACHMENT_DEPTH_SIZE(): number; + public getMAX_3D_TEXTURE_SIZE(): number; + public getRG16I(): number; + public getSamplerParameter(param0: number, param1: number): any; + public drawBuffers(param0: java.nio.IntBuffer): void; + public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: org.nativescript.canvas.TNSCanvas): void; + public getActiveUniforms(param0: number, param1: androidNative.Array, param2: number): any; + public getRGB8_SNORM(): number; + public getRGB16F(): number; + public getFLOAT_MAT3x2(): number; + public getDEPTH_COMPONENT24(): number; + public getWAIT_FAILED(): number; + public getTIMEOUT_EXPIRED(): number; + public getALREADY_SIGNALED(): number; + public getCOLOR_ATTACHMENT11(): number; + public getDRAW_FRAMEBUFFER_BINDING(): number; + public blitFramebuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number): void; + public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.DoubleBuffer): void; + public deleteTransformFeedback(param0: number): void; + public drawElementsInstanced(param0: number, param1: number, param2: number, param3: number, param4: number): void; + public getTEXTURE_COMPARE_FUNC(): number; + public getRED(): number; + public texSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: number): void; + public deleteSync(param0: number): void; + public getFRAMEBUFFER_DEFAULT(): number; + public getSAMPLER_2D_SHADOW(): number; + public uniformBlockBinding(param0: number, param1: number, param2: number): void; + public getCOMPARE_REF_TO_TEXTURE(): number; + public getDRAW_BUFFER14(): number; + public getTEXTURE_BINDING_2D_ARRAY(): number; + public getQuery(param0: number, param1: number): any; + public getSIGNALED(): number; + public framebufferTextureLayer(param0: number, param1: number, param2: number, param3: number, param4: number): void; + public getTEXTURE_MAX_LEVEL(): number; + public createVertexArray(): number; + public getSRGB(): number; + public texSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: java.nio.LongBuffer, param11: number): void; + public uniform3uivBuffer(param0: number, param1: java.nio.IntBuffer): void; + public uniformMatrix4x3fvBuffer(param0: number, param1: boolean, param2: java.nio.FloatBuffer): void; + public getREAD_BUFFER(): number; + public getFRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER(): number; + public getSYNC_FENCE(): number; + public clearBufferuiv(param0: number, param1: number, param2: androidNative.Array): void; + public uniform3ui(param0: number, param1: number, param2: number, param3: number): void; + public getUNPACK_ROW_LENGTH(): number; + public getMAX_TEXTURE_LOD_BIAS(): number; + public uniform1uivBuffer(param0: number, param1: java.nio.IntBuffer): void; + public getSTENCIL(): number; + public getFLOAT_MAT3x4(): number; + public getR11F_G11F_B10F(): number; + public isQuery(param0: number): boolean; + public getSRGB8_ALPHA8(): number; + public bindBufferBase(param0: number, param1: number, param2: number): void; + public getTEXTURE_COMPARE_MODE(): number; + public getTRANSFORM_FEEDBACK_BUFFER_MODE(): number; + public getCOLOR_ATTACHMENT8(): number; + public getUNIFORM_BUFFER_SIZE(): number; + public texSubImage3DDouble(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: androidNative.Array, param11: number): void; + public bindBufferRange(param0: number, param1: number, param2: number, param3: number, param4: number): void; + public getDRAW_BUFFER9(): number; + public getSYNC_CONDITION(): number; + public getCOLOR_ATTACHMENT10(): number; + public getOBJECT_TYPE(): number; + public getRGBA16I(): number; + public getMAX_SERVER_WAIT_TIMEOUT(): number; + public getRG32F(): number; + public texSubImage3DShortBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: java.nio.ShortBuffer, param11: number): void; + public texSubImage3DLongBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: java.nio.LongBuffer, param11: number): void; + public createQuery(): number; + public getHALF_FLOAT(): number; + public getINTERLEAVED_ATTRIBS(): number; + public constructor(param0: org.nativescript.canvas.TNSCanvas); + public getDRAW_BUFFER2(): number; + public getCOLOR_ATTACHMENT2(): number; + public getACTIVE_UNIFORM_BLOCKS(): number; + public getRGB32F(): number; + public getUNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES(): number; + public getMAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS(): number; + public vertexAttribI4uivBuffer(param0: number, param1: java.nio.IntBuffer): void; + public getCOLOR_ATTACHMENT1(): number; + public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.ShortBuffer): void; + public getTEXTURE_BASE_LEVEL(): number; + public texSubImage3DDoubleBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: java.nio.DoubleBuffer, param11: number): void; + public drawBuffersBuffer(param0: java.nio.IntBuffer): void; + public clearBufferfv(param0: number, param1: number, param2: androidNative.Array): void; + public isSampler(param0: number): boolean; + public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: androidNative.Array): void; + public getCURRENT_QUERY(): number; + public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.FloatBuffer): void; + public getSRGB8(): number; + public getRGBA32I(): number; + public getParameter(param0: number): any; + public getRGBA8UI(): number; + public uniformMatrix2x4fvBuffer(param0: number, param1: boolean, param2: java.nio.FloatBuffer): void; + public clearBufferiv(param0: number, param1: number, param2: androidNative.Array): void; + public getMAX_UNIFORM_BLOCK_SIZE(): number; + public getMIN(): number; + public getREAD_FRAMEBUFFER(): number; + public getUNSIGNALED(): number; + public getRG8(): number; + public getPACK_SKIP_ROWS(): number; + public getVERTEX_ATTRIB_ARRAY_DIVISOR(): number; + public texImage3DByteBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.ByteBuffer): void; + public uniform1uiv(param0: number, param1: androidNative.Array): void; + public getUNPACK_SKIP_ROWS(): number; + public getUNPACK_IMAGE_HEIGHT(): number; + public getMAX_FRAGMENT_UNIFORM_COMPONENTS(): number; + public getRGB_INTEGER(): number; + public uniform3uiv(param0: number, param1: androidNative.Array): void; + public getCOLOR(): number; + public getMAX_VERTEX_OUTPUT_COMPONENTS(): number; + public getRGB8UI(): number; + public getSAMPLER_3D(): number; + public getDRAW_BUFFER15(): number; + public getRGBA32F(): number; + public texImage3DIntBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.IntBuffer): void; + public invalidateSubFramebuffer(param0: number, param1: androidNative.Array, param2: number, param3: number, param4: number, param5: number): void; + public uniformMatrix2x4fv(param0: number, param1: boolean, param2: androidNative.Array): void; + public getR8UI(): number; + public getFLOAT_MAT4x2(): number; + public getMAX_VERTEX_UNIFORM_BLOCKS(): number; + public getQUERY_RESULT(): number; + public getUNIFORM_BLOCK_DATA_SIZE(): number; + public getSyncParameter(param0: number, param1: number): any; public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number): void; + public texImage3DLong(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: androidNative.Array): void; public texSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: java.nio.ByteBuffer, param11: number): void; - public getTRANSFORM_FEEDBACK_BUFFER_SIZE(): number; public getCOLOR_ATTACHMENT9(): number; public getUNIFORM_BUFFER_BINDING(): number; - public getUNIFORM_IS_ROW_MAJOR(): number; public getSTREAM_COPY(): number; - public deleteSampler(param0: number): void; public getTEXTURE_IMMUTABLE_LEVELS(): number; public getUNSIGNED_NORMALIZED(): number; public getMAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS(): number; @@ -1822,46 +1886,26 @@ declare module org { public getSAMPLER_2D_ARRAY(): number; public getUNIFORM_BUFFER_START(): number; public getRGB16UI(): number; - public texImage3DFloat(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: androidNative.Array): void; public texSubImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: org.nativescript.canvas.TNSImageAsset): void; - public uniform4ui(param0: number, param1: number, param2: number, param3: number, param4: number): void; public getActiveUniformBlockParameter(param0: number, param1: number, param2: number): any; - public getUNIFORM_SIZE(): number; - public getCOPY_READ_BUFFER(): number; + public uniform4uivBuffer(param0: number, param1: java.nio.IntBuffer): void; public getSTATIC_COPY(): number; public bindSampler(param0: number, param1: number): void; - public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.LongBuffer): void; - public getCOLOR_ATTACHMENT7(): number; public deleteVertexArray(param0: number): void; - public getR8_SNORM(): number; public getR16I(): number; - public getFragDataLocation(param0: number, param1: string): number; - public texImage3DInt(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: androidNative.Array): void; public clientWaitSync(param0: number, param1: number, param2: number): number; public getDRAW_BUFFER11(): number; public getMAX_COMBINED_UNIFORM_BLOCKS(): number; public getREAD_FRAMEBUFFER_BINDING(): number; public getSAMPLER_2D_ARRAY_SHADOW(): number; - public fromGLint(param0: androidNative.Array): androidNative.Array; - public getR32UI(): number; - public getMAX_FRAGMENT_UNIFORM_BLOCKS(): number; - public texImage3DLong(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: androidNative.Array): void; - public getDRAW_BUFFER0(): number; + public texSubImage3DByteBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: number, param10: java.nio.ByteBuffer, param11: number): void; public getTRANSFORM_FEEDBACK_BINDING(): number; public getMAX_FRAGMENT_INPUT_COMPONENTS(): number; - public getTEXTURE_MIN_LOD(): number; public getUNIFORM_OFFSET(): number; public getRG32I(): number; public getCOLOR_ATTACHMENT5(): number; - public getRGBA_INTEGER(): number; - public texImage3D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: number, param9: java.nio.ByteBuffer): void; - public getDRAW_BUFFER13(): number; - public getRASTERIZER_DISCARD(): number; - public getMIN_PROGRAM_TEXEL_OFFSET(): number; - public getUNIFORM_BLOCK_ACTIVE_UNIFORMS(): number; public getRED_INTEGER(): number; public getTEXTURE_IMMUTABLE_FORMAT(): number; - public getDYNAMIC_READ(): number; } export module TNSWebGL2RenderingContext { export class Companion { @@ -1873,8 +1917,8 @@ declare module org { public static UnsignedIntType: org.nativescript.canvas.TNSWebGL2RenderingContext.ReturnType; public static IntType: org.nativescript.canvas.TNSWebGL2RenderingContext.ReturnType; public static BoolType: org.nativescript.canvas.TNSWebGL2RenderingContext.ReturnType; - public static valueOf(param0: string): org.nativescript.canvas.TNSWebGL2RenderingContext.ReturnType; public static values(): androidNative.Array; + public static valueOf(param0: string): org.nativescript.canvas.TNSWebGL2RenderingContext.ReturnType; } export class WhenMappings { public static class: java.lang.Class; @@ -1915,7 +1959,9 @@ declare module org { public getUNPACK_PREMULTIPLY_ALPHA_WEBGL(): number; public getNEAREST(): number; public constructor(param0: org.nativescript.canvas.TNSCanvas, param1: java.util.Map); + public compressedTexSubImage2DShortBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: java.nio.ShortBuffer): void; public getFUNC_SUBTRACT(): number; + public compressedTexImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; public getTEXTURE_MIN_FILTER(): number; public depthMask(param0: boolean): void; public getUNSIGNED_SHORT(): number; @@ -1923,17 +1969,16 @@ declare module org { public compressedTexImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: java.nio.ShortBuffer): void; public getBLEND_EQUATION_RGB(): number; public getBOOL_VEC4(): number; - public bufferSubDataInt(param0: number, param1: number, param2: androidNative.Array): void; public texSubImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: org.nativescript.canvas.TNSImageAsset): void; public getRGB565(): number; public clearStencil(param0: number): void; public detachShader(param0: number, param1: number): void; - public uniform3fv(param0: number, param1: androidNative.Array): void; public getCONSTANT_ALPHA(): number; public texParameterf(param0: number, param1: number, param2: number): void; public getTEXTURE(): number; + public texImage2DIntBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: java.nio.IntBuffer): void; public getVERTEX_ATTRIB_ARRAY_STRIDE(): number; - public readPixelsShort(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; + public texImage2DInt(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; public getGL_FLOAT$canvas_release(): number; public getELEMENT_ARRAY_BUFFER_BINDING(): number; public getLEQUAL(): number; @@ -1944,43 +1989,56 @@ declare module org { public getSTENCIL_CLEAR_VALUE(): number; public setCanvas$canvas_release(param0: org.nativescript.canvas.TNSCanvas): void; public deleteProgram(param0: number): void; + public uniform3fvBuffer(param0: number, param1: java.nio.FloatBuffer): void; public getREPLACE(): number; public getDEPTH_RANGE(): number; + public texSubImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: java.nio.IntBuffer): void; + public bufferData(param0: number, param1: androidNative.Array, param2: number): void; public getCLAMP_TO_EDGE(): number; + public vertexAttrib2fvBuffer(param0: number, param1: java.nio.FloatBuffer): void; public getCOLOR_BUFFER_BIT(): number; public texImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageAsset): void; public bufferSubData(param0: number, param1: number, param2: java.nio.IntBuffer): void; + public uniform2ivBuffer(param0: number, param1: java.nio.IntBuffer): void; public getTEXTURE1(): number; + public bufferSubDataFloat(param0: number, param1: number, param2: androidNative.Array): void; + public uniform2fv(param0: number, param1: androidNative.Array): void; public getTEXTURE_2D(): number; public getINVALID_VALUE(): number; - public compressedTexSubImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: androidNative.Array): void; public isContextLost(): boolean; + public texSubImage2DIntBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: java.nio.IntBuffer): void; public getNOTEQUAL(): number; - public bufferDataByte(param0: number, param1: androidNative.Array, param2: number): void; public shaderSource(param0: number, param1: string): void; + public vertexAttrib3fvBuffer(param0: number, param1: java.nio.FloatBuffer): void; public getCanvas$canvas_release(): org.nativescript.canvas.TNSCanvas; public getError(): number; public getACTIVE_TEXTURE(): number; - public readPixels(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; + public compressedTexImage2DShort(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; public getVERTEX_ATTRIB_ARRAY_NORMALIZED(): number; public getFRAMEBUFFER_INCOMPLETE_ATTACHMENT(): number; + public readPixelsShort(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; public texSubImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: java.nio.ByteBuffer): void; public getMEDIUM_FLOAT(): number; public getFRAMEBUFFER_UNSUPPORTED(): number; public getBOOL(): number; public static nativeTexImage2DTexture(param0: number, param1: number, param2: number, param3: number): void; + public uniform1fv(param0: number, param1: androidNative.Array): void; public getTEXTURE_WRAP_S(): number; public enableVertexAttribArray(param0: number): void; public getDONT_CARE(): number; public texSubImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: org.nativescript.canvas.TNSCanvas): void; - public readPixelsByte(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; public getMAX_VARYING_VECTORS(): number; - public compressedTexSubImage2DInt(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: androidNative.Array): void; + public uniformMatrix3fv(param0: number, param1: boolean, param2: androidNative.Array): void; public getSHADER_TYPE(): number; public getBLEND_DST_RGB(): number; public bufferData(param0: number, param1: java.nio.FloatBuffer, param2: number): void; public uniform4f(param0: number, param1: number, param2: number, param3: number, param4: number): void; + public uniform2fvBuffer(param0: number, param1: java.nio.FloatBuffer): void; + public vertexAttrib1fv(param0: number, param1: androidNative.Array): void; public getTEXTURE28(): number; + public getAttachedShaders(param0: number): androidNative.Array; + public texSubImage2DInt(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; + public uniformMatrix2fv(param0: number, param1: boolean, param2: androidNative.Array): void; public getFRAMEBUFFER_BINDING(): number; public getOUT_OF_MEMORY(): number; public getCOLOR_CLEAR_VALUE(): number; @@ -1990,6 +2048,7 @@ declare module org { public getONE_MINUS_SRC_COLOR(): number; public getMAX_RENDERBUFFER_SIZE(): number; public getGL_RGBA$canvas_release(): number; + public compressedTexSubImage2DByte(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: androidNative.Array): void; public getRenderbufferParameter(param0: number, param1: number): number; public getSRC_ALPHA(): number; public getDITHER(): number; @@ -2000,19 +2059,21 @@ declare module org { public texImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: java.nio.FloatBuffer): void; public getDELETE_STATUS(): number; public getGL_RGB$canvas_release(): number; - public texImage2DInt(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; public getVERTEX_ATTRIB_ARRAY_TYPE(): number; public getMIRRORED_REPEAT(): number; public bufferData(param0: number, param1: java.nio.ByteBuffer, param2: number): void; + public texSubImage2DShort(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; public compressedTexImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: java.nio.ByteBuffer): void; public getDEPTH_BITS(): number; public getVertexAttrib(param0: number, param1: number): any; - public texSubImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; public getNEAREST_MIPMAP_NEAREST(): number; public texImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: java.nio.ShortBuffer): void; + public bufferSubDataByte(param0: number, param1: number, param2: androidNative.Array): void; + public bufferSubDataInt(param0: number, param1: number, param2: androidNative.Array): void; public getSTENCIL_VALUE_MASK(): number; public attachShader(param0: number, param1: number): void; public texParameteri(param0: number, param1: number, param2: number): void; + public compressedTexSubImage2DIntBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: java.nio.IntBuffer): void; public getLINE_LOOP(): number; public getSTATIC_DRAW(): number; public getONE(): number; @@ -2020,7 +2081,6 @@ declare module org { public updateCanvas(): void; public bindTexture(param0: number, param1: number): void; public getFLOAT_MAT2(): number; - public bufferDataFloat(param0: number, param1: androidNative.Array, param2: number): void; public readPixels(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: java.nio.IntBuffer): void; public getCURRENT_PROGRAM(): number; public getDrawingBufferHeight(): number; @@ -2035,9 +2095,10 @@ declare module org { public getFRONT_FACE(): number; public getMAX_TEXTURE_IMAGE_UNITS(): number; public getShaderSource(param0: number): string; + public uniform1fvBuffer(param0: number, param1: java.nio.FloatBuffer): void; public clearIfComposited(param0: number): org.nativescript.canvas.HowToClear; + public texImage2DShort(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; public getShaderParameter(param0: number, param1: number): any; - public vertexAttrib2fv(param0: number, param1: androidNative.Array): void; public getUNSIGNED_BYTE(): number; public deleteRenderbuffer(param0: number): void; public getVIEWPORT(): number; @@ -2045,27 +2106,28 @@ declare module org { public getNEAREST_MIPMAP_LINEAR(): number; public getDEPTH_COMPONENT(): number; public getLINEAR_MIPMAP_LINEAR(): number; - public readPixelsInt(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; public getSCISSOR_BOX(): number; - public texImage2DByte(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; + public uniform4ivBuffer(param0: number, param1: java.nio.IntBuffer): void; + public bufferDataShortBuffer(param0: number, param1: java.nio.ShortBuffer, param2: number): void; + public uniform4fvBuffer(param0: number, param1: java.nio.FloatBuffer): void; public getCCW(): number; public getGEQUAL(): number; public getTEXTURE3(): number; + public texSubImage2DByte(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; public getLOW_INT(): number; public getSCISSOR_TEST(): number; public getGL_LUMINANCE$canvas_release(): number; - public bufferDataShort(param0: number, param1: androidNative.Array, param2: number): void; public getTEXTURE19(): number; public disableVertexAttribArray(param0: number): void; public getGL_UNSIGNED_SHORT_5_5_5_1$canvas_release(): number; public getONE_MINUS_CONSTANT_COLOR(): number; + public bufferSubDataFloatBuffer(param0: number, param1: number, param2: java.nio.FloatBuffer): void; public getARRAY_BUFFER_BINDING(): number; public getGL_ALPHA$canvas_release(): number; public getRGBA4(): number; - public texSubImage2DInt(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; public getRENDERBUFFER_INTERNAL_FORMAT(): number; - public compressedTexImage2DShort(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; - public uniformMatrix4fv(param0: number, param1: boolean, param2: androidNative.Array): void; + public bufferDataByte(param0: number, param1: androidNative.Array, param2: number): void; + public readPixelsByte(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; public getSTENCIL_FAIL(): number; public getINCR_WRAP(): number; public getUNSIGNED_INT(): number; @@ -2077,7 +2139,6 @@ declare module org { public getRGB5_A1(): number; public compressedTexSubImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: java.nio.ByteBuffer): void; public uniform1f(param0: number, param1: number): void; - public compressedTexSubImage2DFloat(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: androidNative.Array): void; public getBLEND_COLOR(): number; public activeTexture(param0: number): void; public texImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: java.nio.IntBuffer): void; @@ -2086,47 +2147,54 @@ declare module org { public getVERSION(): number; public blendFuncSeparate(param0: number, param1: number, param2: number, param3: number): void; public getPOLYGON_OFFSET_FILL(): number; + public uniformMatrix4fv(param0: number, param1: boolean, param2: androidNative.Array): void; public compressedTexSubImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: java.nio.IntBuffer): void; + public texImage2DFloat(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; public getTEXTURE24(): number; - public uniformMatrix2fv(param0: number, param1: boolean, param2: androidNative.Array): void; public deleteBuffer(param0: number): void; + public uniform3fv(param0: number, param1: androidNative.Array): void; public disable(param0: number): void; public createProgram(): number; public getGREEN_BITS(): number; + public bufferDataByteBuffer(param0: number, param1: java.nio.ByteBuffer, param2: number): void; public getBufferParameter(param0: number, param1: number): number; public frontFace(param0: number): void; public getMAX_COMBINED_TEXTURE_IMAGE_UNITS(): number; public getDEPTH_FUNC(): number; public getFramebufferAttachmentParameter(param0: number, param1: number, param2: number): org.nativescript.canvas.TNSFramebufferAttachmentParameter; public flush(): void; + public compressedTexImage2DByteBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: java.nio.ByteBuffer): void; public blendEquation(param0: number): void; + public compressedTexImage2DFloatBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: java.nio.FloatBuffer): void; public getDEPTH_WRITEMASK(): number; + public readPixelsByteBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: java.nio.ByteBuffer): void; public bindBuffer(param0: number, param1: any): void; + public uniform2iv(param0: number, param1: androidNative.Array): void; + public uniform4fv(param0: number, param1: androidNative.Array): void; public bindFramebuffer(param0: number, param1: number): void; + public texImage2DShortBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: java.nio.ShortBuffer): void; public getProgramParameter(param0: number, param1: number): any; + public texImage2DByte(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; public getTEXTURE11(): number; public getFUNC_REVERSE_SUBTRACT(): number; public getTEXTURE18(): number; public getRENDERBUFFER(): number; - public uniform4fv(param0: number, param1: androidNative.Array): void; public getTEXTURE2(): number; + public compressedTexImage2DInt(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; public drawArrays(param0: number, param1: number, param2: number): void; public getLINE_WIDTH(): number; - public uniform1iv(param0: number, param1: androidNative.Array): void; - public vertexAttrib4fv(param0: number, param1: androidNative.Array): void; public getPOINTS(): number; + public bufferSubDataShortBuffer(param0: number, param1: number, param2: java.nio.ShortBuffer): void; public texImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSImageBitmap): void; + public uniform4iv(param0: number, param1: androidNative.Array): void; public getDECR_WRAP(): number; public depthRange(param0: number, param1: number): void; public getDEPTH_COMPONENT16(): number; public getPACK_ALIGNMENT(): number; public getDEPTH_STENCIL_ATTACHMENT(): number; public getFRONT(): number; - public uniform2fv(param0: number, param1: androidNative.Array): void; public texImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: org.nativescript.canvas.TNSCanvas): void; public bindAttribLocation(param0: number, param1: number, param2: string): void; - public uniform3iv(param0: number, param1: androidNative.Array): void; - public vertexAttrib3fv(param0: number, param1: androidNative.Array): void; public getDST_ALPHA(): number; public vertexAttrib4f(param0: number, param1: number, param2: number, param3: number, param4: number): void; public getMAX_TEXTURE_SIZE(): number; @@ -2134,22 +2202,21 @@ declare module org { public getONE_MINUS_DST_COLOR(): number; public validateProgram(param0: number): void; public getUNSIGNED_SHORT_4_4_4_4(): number; - public vertexAttrib1fv(param0: number, param1: androidNative.Array): void; public getBLEND_EQUATION(): number; public getMAX_FRAGMENT_UNIFORM_VECTORS(): number; public getFLOAT_MAT3(): number; public bufferSubData(param0: number, param1: number, param2: androidNative.Array): void; public getBOOL_VEC3(): number; public getINT(): number; - public uniform1fv(param0: number, param1: androidNative.Array): void; - public uniform4iv(param0: number, param1: androidNative.Array): void; + public uniform3iv(param0: number, param1: androidNative.Array): void; public getDYNAMIC_DRAW(): number; public getIMPLEMENTATION_COLOR_READ_FORMAT(): number; public getRENDERBUFFER_DEPTH_SIZE(): number; + public bufferDataInt(param0: number, param1: androidNative.Array, param2: number): void; public getTEXTURE6(): number; + public compressedTexSubImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: androidNative.Array): void; public getSUBPIXEL_BITS(): number; public depthFunc(param0: number): void; - public uniform2iv(param0: number, param1: androidNative.Array): void; public getSTENCIL_BACK_VALUE_MASK(): number; public getProgramInfoLog(param0: number): string; public getTEXTURE10(): number; @@ -2161,7 +2228,9 @@ declare module org { public getTEXTURE30(): number; public getShaderPrecisionFormat(param0: number, param1: number): org.nativescript.canvas.WebGLShaderPrecisionFormat; public getGREATER(): number; + public bufferDataFloat(param0: number, param1: androidNative.Array, param2: number): void; public stencilFuncSeparate(param0: number, param1: number, param2: number, param3: number): void; + public texSubImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: java.nio.ShortBuffer): void; public getRGB(): number; public getUNPACK_COLORSPACE_CONVERSION_WEBGL(): number; public getTEXTURE_CUBE_MAP_NEGATIVE_X(): number; @@ -2170,17 +2239,17 @@ declare module org { public getDECR(): number; public setFlipYWebGL(param0: boolean): void; public renderbufferStorage(param0: number, param1: number, param2: number, param3: number): void; + public texSubImage2DShortBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: java.nio.ShortBuffer): void; public getBUFFER_USAGE(): number; public getFLOAT_VEC2(): number; public getUniform(param0: number, param1: number): any; public getMAX_VERTEX_TEXTURE_IMAGE_UNITS(): number; - public texImage2DFloat(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; public drawElements(param0: number, param1: number, param2: number, param3: number): void; public getATTACHED_SHADERS(): number; public getTRIANGLE_FAN(): number; public getLINEAR(): number; - public bufferSubDataByte(param0: number, param1: number, param2: androidNative.Array): void; public getVERTEX_SHADER(): number; + public texSubImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: java.nio.FloatBuffer): void; public createTexture(): number; public texImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: java.nio.ByteBuffer): void; public getSTENCIL_BACK_WRITEMASK(): number; @@ -2196,13 +2265,11 @@ declare module org { public bindBuffer(param0: number, param1: number): void; public getSAMPLE_COVERAGE_INVERT(): number; public getSTENCIL_PASS_DEPTH_PASS(): number; - public texSubImage2DByte(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; public stencilMask(param0: number): void; public framebufferTexture2D(param0: number, param1: number, param2: number, param3: number, param4: number): void; + public uniform1iv(param0: number, param1: androidNative.Array): void; public getVertexAttribOffset(param0: number, param1: number): number; public getARRAY_BUFFER(): number; - public compressedTexSubImage2DByte(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: androidNative.Array): void; - public compressedTexImage2DFloat(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; public getTEXTURE17(): number; public getAttribLocation(param0: number, param1: string): number; public lineWidth(param0: number): void; @@ -2213,9 +2280,14 @@ declare module org { public getSHORT(): number; public stencilFunc(param0: number, param1: number, param2: number): void; public getTEXTURE15(): number; + public compressedTexImage2DFloat(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; public getONE_MINUS_DST_ALPHA(): number; + public readPixelsFloat(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; public getTEXTURE0(): number; public compressedTexSubImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: java.nio.ShortBuffer): void; + public uniformMatrix3fvBuffer(param0: number, param1: boolean, param2: java.nio.FloatBuffer): void; + public readPixelsShortBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: java.nio.ShortBuffer): void; + public texImage2DByteBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: java.nio.ByteBuffer): void; public getFRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL(): number; public getINVALID_FRAMEBUFFER_OPERATION(): number; public getTEXTURE25(): number; @@ -2226,6 +2298,7 @@ declare module org { public getFLOAT_MAT4(): number; public getRENDERBUFFER_ALPHA_SIZE(): number; public vertexAttribPointer(param0: number, param1: number, param2: number, param3: boolean, param4: number, param5: number): void; + public uniformMatrix2fvBuffer(param0: number, param1: boolean, param2: java.nio.FloatBuffer): void; public getIMPLEMENTATION_COLOR_READ_TYPE(): number; public uniform1i(param0: number, param1: number): void; public getINVALID_ENUM(): number; @@ -2235,7 +2308,9 @@ declare module org { public getZERO(): number; public getVALIDATE_STATUS(): number; public getCOLOR_ATTACHMENT0(): number; + public vertexAttrib4fv(param0: number, param1: androidNative.Array): void; public getTEXTURE_BINDING_2D(): number; + public bufferSubDataByteBuffer(param0: number, param1: number, param2: java.nio.ByteBuffer): void; public scissor(param0: number, param1: number, param2: number, param3: number): void; public colorMask(param0: boolean, param1: boolean, param2: boolean, param3: boolean): void; public getTEXTURE_CUBE_MAP_NEGATIVE_Z(): number; @@ -2249,39 +2324,42 @@ declare module org { public getBACK(): number; public getINVALID_OPERATION(): number; public getINVERT(): number; + public readPixels(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; public getDEPTH_TEST(): number; public useProgram(param0: number): void; public getSTENCIL_BACK_FUNC(): number; + public getSupportedExtensions(): androidNative.Array; public clearColor(param0: number, param1: number, param2: number, param3: number): void; public getFLOAT_VEC4(): number; public generateMipmap(param0: number): void; public getALPHA(): number; public deleteFramebuffer(param0: number): void; + public vertexAttrib3fv(param0: number, param1: androidNative.Array): void; public uniform3i(param0: number, param1: number, param2: number, param3: number): void; - public texImage2DShort(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; + public texSubImage2DByteBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: java.nio.ByteBuffer): void; public getVERTEX_ATTRIB_ARRAY_SIZE(): number; public bindRenderbuffer(param0: number, param1: number): void; public copyTexImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number): void; public getNO_ERROR(): number; public stencilOpSeparate(param0: number, param1: number, param2: number, param3: number): void; + public compressedTexImage2DShortBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: java.nio.ShortBuffer): void; public reset(): void; public getTEXTURE9(): number; public uniform4i(param0: number, param1: number, param2: number, param3: number, param4: number): void; - public bufferSubDataFloat(param0: number, param1: number, param2: androidNative.Array): void; public getVENDOR(): number; public viewport(param0: number, param1: number, param2: number, param3: number): void; - public texImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; public getVERTEX_ATTRIB_ARRAY_POINTER(): number; + public compressedTexImage2DIntBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: java.nio.IntBuffer): void; public getLESS(): number; public getTEXTURE7(): number; - public compressedTexImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; - public bufferData(param0: number, param1: androidNative.Array, param2: number): void; public getShaderInfoLog(param0: number): string; + public compressedTexSubImage2DInt(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: androidNative.Array): void; public getVERTEX_ATTRIB_ARRAY_ENABLED(): number; public getVERTEX_ATTRIB_ARRAY_BUFFER_BINDING(): number; public getRENDERBUFFER_BINDING(): number; public getLUMINANCE(): number; public getSTREAM_DRAW(): number; + public vertexAttrib2fv(param0: number, param1: androidNative.Array): void; public getRENDERBUFFER_STENCIL_SIZE(): number; public isBuffer(param0: number): boolean; public getNEVER(): number; @@ -2291,31 +2369,35 @@ declare module org { public getTEXTURE13(): number; public getSTENCIL_WRITEMASK(): number; public getFRAMEBUFFER_ATTACHMENT_OBJECT_NAME(): number; + public uniform1ivBuffer(param0: number, param1: java.nio.IntBuffer): void; public getONE_MINUS_SRC_ALPHA(): number; + public texImage2DFloatBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: java.nio.FloatBuffer): void; + public vertexAttrib4fvBuffer(param0: number, param1: java.nio.FloatBuffer): void; public getALIASED_POINT_SIZE_RANGE(): number; public getLOW_FLOAT(): number; public bufferData(param0: number, param1: number, param2: number): void; public uniform3f(param0: number, param1: number, param2: number, param3: number): void; - public readPixelsFloat(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; + public readPixelsIntBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: java.nio.IntBuffer): void; public getGL_UNSIGNED_BYTE$canvas_release(): number; public isEnabled(param0: number): boolean; public getUNSIGNED_SHORT_5_5_5_1(): number; public getCONTEXT_LOST_WEBGL(): number; - public getSupportedExtensions(): androidNative.Array; public getSTENCIL_BITS(): number; public getGL_LUMINANCE_ALPHA$canvas_release(): number; - public bufferSubDataShort(param0: number, param1: number, param2: androidNative.Array): void; + public texImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; public vertexAttrib3f(param0: number, param1: number, param2: number, param3: number): void; public isFramebuffer(param0: number): boolean; + public texSubImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; public getSTENCIL_BUFFER_BIT(): number; public getActiveUniform(param0: number, param1: number): org.nativescript.canvas.WebGLActiveInfo; public vertexAttrib1f(param0: number, param1: number): void; public getCONSTANT_COLOR(): number; public getFUNC_ADD(): number; + public vertexAttrib1fvBuffer(param0: number, param1: java.nio.FloatBuffer): void; public compileShader(param0: number): void; - public getAttachedShaders(param0: number): androidNative.Array; public commit(): void; public getTEXTURE29(): number; + public readPixelsFloatBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: java.nio.FloatBuffer): void; public constructor(param0: org.nativescript.canvas.TNSCanvas); public getSTENCIL_BACK_REF(): number; public isProgram(param0: number): boolean; @@ -2323,11 +2405,11 @@ declare module org { public clearDepth(param0: number): void; public hint(param0: number, param1: number): void; public isShader(param0: number): boolean; + public bufferDataIntBuffer(param0: number, param1: java.nio.IntBuffer, param2: number): void; public getLINES(): number; public getMAX_CUBE_MAP_TEXTURE_SIZE(): number; public getSTENCIL_FUNC(): number; public getBROWSER_DEFAULT_WEBGL(): number; - public bufferDataInt(param0: number, param1: androidNative.Array, param2: number): void; public getCOMPILE_STATUS(): number; public runOnGLThread$canvas_release(param0: java.lang.Runnable): void; public getMAX_VIEWPORT_DIMS(): number; @@ -2341,22 +2423,25 @@ declare module org { public clearIfComposited(): org.nativescript.canvas.HowToClear; public bufferData(param0: number, param1: java.nio.IntBuffer, param2: number): void; public getParameter(param0: number): any; + public bufferDataShort(param0: number, param1: androidNative.Array, param2: number): void; public static nativeReadPixels(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number): void; public getRENDERBUFFER_BLUE_SIZE(): number; public getSTENCIL_ATTACHMENT(): number; - public uniformMatrix3fv(param0: number, param1: boolean, param2: androidNative.Array): void; public getSTENCIL_TEST(): number; public getSTENCIL_INDEX8(): number; public getKEEP(): number; + public compressedTexSubImage2DShort(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: androidNative.Array): void; public getFRAMEBUFFER_ATTACHMENT_OBJECT_TYPE(): number; public getRENDERBUFFER_HEIGHT(): number; public getNONE(): number; public getSAMPLER_CUBE(): number; + public texSubImage2DFloatBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: java.nio.FloatBuffer): void; public getTEXTURE8(): number; public getCURRENT_VERTEX_ATTRIB(): number; public vertexAttrib2f(param0: number, param1: number, param2: number): void; public getLINK_STATUS(): number; public stencilOp(param0: number, param1: number, param2: number): void; + public compressedTexSubImage2DByteBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: java.nio.ByteBuffer): void; public finish(): void; public uniform2f(param0: number, param1: number, param2: number): void; public getSAMPLE_ALPHA_TO_COVERAGE(): number; @@ -2365,16 +2450,15 @@ declare module org { public getLUMINANCE_ALPHA(): number; public getGL_UNSIGNED_SHORT_4_4_4_4$canvas_release(): number; public createRenderbuffer(): number; - public texSubImage2DFloat(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; - public compressedTexSubImage2DShort(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: androidNative.Array): void; + public readPixelsInt(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; public getDrawingBufferWidth(): number; public getTEXTURE_MAG_FILTER(): number; public getFASTEST(): number; - public compressedTexImage2DInt(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; public getHIGH_FLOAT(): number; public getFRAMEBUFFER_INCOMPLETE_DIMENSIONS(): number; public getDST_COLOR(): number; public getFRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT(): number; + public compressedTexSubImage2DFloatBuffer(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: java.nio.FloatBuffer): void; public getLINE_STRIP(): number; public getBLUE_BITS(): number; public getRENDERBUFFER_WIDTH(): number; @@ -2382,6 +2466,7 @@ declare module org { public copyTexSubImage2D(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number): void; public getRGBA(): number; public bufferSubData(param0: number, param1: number, param2: java.nio.FloatBuffer): void; + public uniform3ivBuffer(param0: number, param1: java.nio.IntBuffer): void; public getRED_BITS(): number; public getTEXTURE22(): number; public getTEXTURE_CUBE_MAP_NEGATIVE_Y(): number; @@ -2397,27 +2482,31 @@ declare module org { public getTEXTURE_CUBE_MAP(): number; public getREPEAT(): number; public getGL_UNSIGNED_SHORT_5_6_5$canvas_release(): number; - public compressedTexImage2DByte(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; public blendFunc(param0: number, param1: number): void; public getTEXTURE4(): number; + public compressedTexImage2DByte(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: androidNative.Array): void; public getALIASED_LINE_WIDTH_RANGE(): number; public getTEXTURE_WRAP_T(): number; public polygonOffset(param0: number, param1: number): void; + public uniformMatrix4fvBuffer(param0: number, param1: boolean, param2: java.nio.FloatBuffer): void; public getHIGH_INT(): number; public getSAMPLE_BUFFERS(): number; public getActiveAttrib(param0: number, param1: number): org.nativescript.canvas.WebGLActiveInfo; public getSTENCIL_BACK_PASS_DEPTH_FAIL(): number; public getALPHA_BITS(): number; + public bufferSubDataShort(param0: number, param1: number, param2: androidNative.Array): void; + public bufferSubDataIntBuffer(param0: number, param1: number, param2: java.nio.IntBuffer): void; public getCW(): number; public getFRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE(): number; public getFlipYWebGL(): boolean; + public compressedTexSubImage2DFloat(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: androidNative.Array): void; public uniform2i(param0: number, param1: number, param2: number): void; public getSHADING_LANGUAGE_VERSION(): number; public bufferData(param0: number, param1: any, param2: number): void; + public bufferDataFloatBuffer(param0: number, param1: java.nio.FloatBuffer, param2: number): void; public getCULL_FACE(): number; public getSTENCIL_PASS_DEPTH_FAIL(): number; public getSTENCIL_REF(): number; - public texSubImage2DShort(param0: number, param1: number, param2: number, param3: number, param4: number, param5: number, param6: number, param7: number, param8: androidNative.Array): void; public getSTENCIL_BACK_FAIL(): number; public getCOLOR_WRITEMASK(): number; public getGENERATE_MIPMAP_HINT(): number; @@ -2446,6 +2535,7 @@ declare module org { public surfaceCreated(): void; public drawFrame(param0: globalAndroid.graphics.SurfaceTexture, param1: number, param2: number, param3: number, param4: number, param5: boolean): void; public setWidth(param0: number): void; + public getMatrix(): androidNative.Array; public constructor(); public getAb(): number; public setRbo(param0: number): void; @@ -2456,19 +2546,18 @@ declare module org { public setFbo(param0: number): void; public setMatrixPos(param0: number): void; public setSamplerPos(param0: number): void; - public getMatrix(): androidNative.Array; - public setMatrix(param0: androidNative.Array): void; public getRbo(): number; public getFbo(): number; public setTextureId(param0: number): void; public setPos(param0: number): void; + public setMatrix(param0: androidNative.Array): void; } export module TextureRender { export class Companion { public static class: java.lang.Class; + public getVextexCoords(): androidNative.Array; public getVextexBuf(): java.nio.FloatBuffer; public setVextexBuf(param0: java.nio.FloatBuffer): void; - public getVextexCoords(): androidNative.Array; } } } @@ -2994,7 +3083,6 @@ declare module org { export class WEBGL_draw_buffers { public static class: java.lang.Class; public setDRAW_BUFFER10_WEBGL(param0: number): void; - public drawBuffersWEBGL(param0: androidNative.Array): void; public getDRAW_BUFFER8_WEBGL(): number; public setCOLOR_ATTACHMENT10_WEBGL(param0: number): void; public setCOLOR_ATTACHMENT2_WEBGL(param0: number): void; @@ -3057,6 +3145,7 @@ declare module org { public setCOLOR_ATTACHMENT5_WEBGL(param0: number): void; public setCOLOR_ATTACHMENT8_WEBGL(param0: number): void; public getMAX_DRAW_BUFFERS_WEBGL(): number; + public drawBuffersWEBGL(param0: androidNative.Array): void; public setCOLOR_ATTACHMENT13_WEBGL(param0: number): void; public getDRAW_BUFFER9_WEBGL(): number; public setCOLOR_ATTACHMENT3_WEBGL(param0: number): void; diff --git a/packages/canvas/typings/objc!CanvasNative.d.ts b/packages/canvas/typings/objc!CanvasNative.d.ts index 501e69b2..70012c72 100644 --- a/packages/canvas/typings/objc!CanvasNative.d.ts +++ b/packages/canvas/typings/objc!CanvasNative.d.ts @@ -976,15 +976,35 @@ declare class TNSTextDecoder extends NSObject { decodeWithBuffer(buffer: NSData): string; + decodeWithBufferOffset(buffer: NSData, offset: number): string; + + decodeWithBufferOffsetLength(buffer: NSData, offset: number, length: number): string; + decodeWithBytes(bytes: NSArray | number[]): string; - decodeWithI16(bytes: NSArray | number[]): string; + decodeWithI16(buffer: interop.Pointer | interop.Reference, size: number): string; + + decodeWithI16Offset(buffer: interop.Pointer | interop.Reference, size: number, offset: number): string; + + decodeWithI32(buffer: interop.Pointer | interop.Reference, size: number): string; + + decodeWithI32Offset(buffer: interop.Pointer | interop.Reference, size: number, offset: number): string; + + decodeWithI8(buffer: interop.Pointer | interop.Reference, size: number): string; + + decodeWithI8Offset(buffer: interop.Pointer | interop.Reference, size: number, offset: number): string; - decodeWithI32(bytes: NSArray | number[]): string; + decodeWithU16(buffer: interop.Pointer | interop.Reference, size: number): string; - decodeWithI8(bytes: NSArray | number[]): string; + decodeWithU16Offset(buffer: interop.Pointer | interop.Reference, size: number, offset: number): string; - decodeWithU16(bytes: NSArray | number[]): string; + decodeWithU32(buffer: interop.Pointer | interop.Reference, size: number): string; + + decodeWithU32Offset(buffer: interop.Pointer | interop.Reference, size: number, offset: number): string; + + decodeWithU8(buffer: interop.Pointer | interop.Reference, size: number): string; + + decodeWithU8Offset(buffer: interop.Pointer | interop.Reference, size: number, offset: number): string; initWithEncoding(encoding: string): this; } @@ -1596,10 +1616,16 @@ declare class TNSWebGL2RenderingContext extends TNSWebGLRenderingContext { clearBufferfv(buffer: number, drawbuffer: number, values: interop.Pointer | interop.Reference): void; + clearBufferfvOffset(buffer: number, drawbuffer: number, values: interop.Pointer | interop.Reference, offset: number): void; + clearBufferiv(buffer: number, drawbuffer: number, values: interop.Pointer | interop.Reference): void; + clearBufferivOffset(buffer: number, drawbuffer: number, values: interop.Pointer | interop.Reference, offset: number): void; + clearBufferuiv(buffer: number, drawbuffer: number, values: interop.Pointer | interop.Reference): void; + clearBufferuivOffset(buffer: number, drawbuffer: number, values: interop.Pointer | interop.Reference, offset: number): void; + clientWaitSync(sync: interop.Pointer | interop.Reference, flags: number, timeout: number): number; compressedTexSubImage3D(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, imageSize: number, offset: number): void; @@ -1666,6 +1692,8 @@ declare class TNSWebGL2RenderingContext extends TNSWebGLRenderingContext { getBufferSubDataSize(target: number, srcByteOffset: number, dstData: interop.Pointer | interop.Reference, size: number, dstOffset: number, length: number): void; + getBufferSubDataSizeOffset(target: number, srcByteOffset: number, dstData: interop.Pointer | interop.Reference, size: number, dstOffset: number, length: number, offset: number): void; + getFragDataLocation(program: number, name: string): number; getIndexedParameter(target: number, index: number): any; @@ -1720,9 +1748,9 @@ declare class TNSWebGL2RenderingContext extends TNSWebGLRenderingContext { texImage3DData(target: number, level: number, internalformat: number, width: number, height: number, depth: number, border: number, format: number, type: number, data: NSData): void; - texImage3DF32(target: number, level: number, internalformat: number, width: number, height: number, depth: number, border: number, format: number, type: number, source: NSArray | number[]): void; + texImage3DF32(target: number, level: number, internalformat: number, width: number, height: number, depth: number, border: number, format: number, type: number, source: NSArray | number[], srcOffset: number): void; - texImage3DF64(target: number, level: number, internalformat: number, width: number, height: number, depth: number, border: number, format: number, type: number, source: NSArray | number[]): void; + texImage3DF64(target: number, level: number, internalformat: number, width: number, height: number, depth: number, border: number, format: number, type: number, source: NSArray | number[], srcOffset: number): void; texImage3DI16(target: number, level: number, internalformat: number, width: number, height: number, depth: number, border: number, format: number, type: number, source: NSArray | number[]): void; @@ -1734,9 +1762,9 @@ declare class TNSWebGL2RenderingContext extends TNSWebGLRenderingContext { texImage3DSource(target: number, level: number, internalformat: number, width: number, height: number, depth: number, border: number, format: number, type: number, source: UIImage): void; - texImage3DU16(target: number, level: number, internalformat: number, width: number, height: number, depth: number, border: number, format: number, type: number, source: NSArray | number[]): void; + texImage3DU16(target: number, level: number, internalformat: number, width: number, height: number, depth: number, border: number, format: number, type: number, source: NSArray | number[], srcOffset: number): void; - texImage3DU32(target: number, level: number, internalformat: number, width: number, height: number, depth: number, border: number, format: number, type: number, source: NSArray | number[]): void; + texImage3DU32(target: number, level: number, internalformat: number, width: number, height: number, depth: number, border: number, format: number, type: number, source: NSArray | number[], srcOffset: number): void; texImage3DU8(target: number, level: number, internalformat: number, width: number, height: number, depth: number, border: number, format: number, type: number, source: NSArray | number[]): void; @@ -1752,25 +1780,25 @@ declare class TNSWebGL2RenderingContext extends TNSWebGLRenderingContext { texSubImage3DData(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, type: number, data: NSData): void; - texSubImage3DF32(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, type: number, srcData: NSArray | number[], srcOffset: number): void; + texSubImage3DF32(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, type: number, srcData: NSArray | number[]): void; texSubImage3DF64(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, type: number, srcData: NSArray | number[]): void; - texSubImage3DI16(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, type: number, srcData: NSArray | number[], srcOffset: number): void; + texSubImage3DI16(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, type: number, srcData: NSArray | number[]): void; texSubImage3DI32(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, type: number, srcData: NSArray | number[]): void; - texSubImage3DI8(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, type: number, srcData: NSArray | number[], srcOffset: number): void; + texSubImage3DI8(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, type: number, srcData: NSArray | number[]): void; texSubImage3DOffset(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, type: number, offset: number): void; texSubImage3DSrcData(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, type: number, srcData: UIImage): void; - texSubImage3DU16(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, type: number, srcData: NSArray | number[]): void; + texSubImage3DU16(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, type: number, srcData: NSArray | number[], srcOffset: number): void; texSubImage3DU32(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, type: number, srcData: NSArray | number[]): void; - texSubImage3DU8(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, type: number, srcData: NSArray | number[], srcOffset: number): void; + texSubImage3DU8(target: number, level: number, xoffset: number, yoffset: number, zoffset: number, width: number, height: number, depth: number, format: number, type: number, srcData: NSArray | number[]): void; transformFeedbackVaryings(program: number, varyings: NSArray | string[], bufferMode: number): void; @@ -1778,41 +1806,65 @@ declare class TNSWebGL2RenderingContext extends TNSWebGLRenderingContext { uniform1uiv(location: number, data: interop.Pointer | interop.Reference, size: number): void; + uniform1uivOffset(location: number, data: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniform2ui(location: number, v0: number, v1: number): void; uniform2uiv(location: number, data: interop.Pointer | interop.Reference, size: number): void; + uniform2uivOffset(location: number, data: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniform3ui(location: number, v0: number, v1: number, v2: number): void; uniform3uiv(location: number, data: interop.Pointer | interop.Reference, size: number): void; + uniform3uivOffset(location: number, data: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniform4ui(location: number, v0: number, v1: number, v2: number, v3: number): void; uniform4uiv(location: number, data: interop.Pointer | interop.Reference, size: number): void; + uniform4uivOffset(location: number, data: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniformBlockBinding(program: number, uniformBlockIndex: number, uniformBlockBinding: number): void; uniformMatrix2x3fv(location: number, transpose: boolean, data: interop.Pointer | interop.Reference, size: number): void; + uniformMatrix2x3fvOffset(location: number, transpose: boolean, data: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniformMatrix2x4fv(location: number, transpose: boolean, data: interop.Pointer | interop.Reference, size: number): void; + uniformMatrix2x4fvOffset(location: number, transpose: boolean, data: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniformMatrix3x2fv(location: number, transpose: boolean, data: interop.Pointer | interop.Reference, size: number): void; + uniformMatrix3x2fvOffset(location: number, transpose: boolean, data: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniformMatrix3x4fv(location: number, transpose: boolean, data: interop.Pointer | interop.Reference, size: number): void; + uniformMatrix3x4fvOffset(location: number, transpose: boolean, data: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniformMatrix4x2fv(location: number, transpose: boolean, data: interop.Pointer | interop.Reference, size: number): void; + uniformMatrix4x2fvOffset(location: number, transpose: boolean, data: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniformMatrix4x3fv(location: number, transpose: boolean, data: interop.Pointer | interop.Reference, size: number): void; + uniformMatrix4x3fvOffset(location: number, transpose: boolean, data: interop.Pointer | interop.Reference, size: number, offset: number): void; + vertexAttribDivisor(index: number, divisor: number): void; vertexAttribI4i(index: number, v0: number, v1: number, v2: number, v3: number): void; vertexAttribI4iv(index: number, value: interop.Pointer | interop.Reference): void; + vertexAttribI4ivOffset(index: number, value: interop.Pointer | interop.Reference, offset: number): void; + vertexAttribI4ui(index: number, v0: number, v1: number, v2: number, v3: number): void; vertexAttribI4uiv(index: number, value: interop.Pointer | interop.Reference): void; + + vertexAttribI4uivOffset(index: number, value: interop.Pointer | interop.Reference, offset: number): void; } declare class TNSWebGLActiveInfo extends NSObject { @@ -2476,6 +2528,8 @@ declare class TNSWebGLRenderingContext extends TNSCanvasRenderingContext { bufferDataSrcDataSize(target: number, srcData: interop.Pointer | interop.Reference, size: number, usage: number): void; + bufferDataSrcDataSizeOffset(target: number, srcData: interop.Pointer | interop.Reference, size: number, usage: number, offset: number): void; + bufferDataU16(target: number, srcData: NSArray | number[], usage: number): void; bufferDataU32(target: number, srcData: NSArray | number[], usage: number): void; @@ -2496,6 +2550,8 @@ declare class TNSWebGLRenderingContext extends TNSCanvasRenderingContext { bufferSubDataSrcDataSize(target: number, offset: number, srcData: interop.Pointer | interop.Reference, size: number): void; + bufferSubDataSrcDataSizeOs(target: number, offset: number, srcData: interop.Pointer | interop.Reference, size: number, os: number): void; + bufferSubDataU16(target: number, offset: number, srcData: NSArray | number[]): void; bufferSubDataU32(target: number, offset: number, srcData: NSArray | number[]): void; @@ -2662,6 +2718,8 @@ declare class TNSWebGLRenderingContext extends TNSCanvasRenderingContext { readPixels(x: number, y: number, width: number, height: number, format: number, type: number, pixels: interop.Pointer | interop.Reference): void; + readPixelsOffset(x: number, y: number, width: number, height: number, format: number, type: number, pixels: interop.Pointer | interop.Reference, offset: number): void; + renderbufferStorage(target: number, internalFormat: number, width: number, height: number): void; sampleCoverage(value: number, invert: boolean): void; @@ -2698,6 +2756,8 @@ declare class TNSWebGLRenderingContext extends TNSCanvasRenderingContext { texImage2DPixelsSize(target: number, level: number, internalformat: number, width: number, height: number, border: number, format: number, type: number, pixels: interop.Pointer | interop.Reference, size: number): void; + texImage2DPixelsSizeOffset(target: number, level: number, internalformat: number, width: number, height: number, border: number, format: number, type: number, pixels: interop.Pointer | interop.Reference, size: number, offset: number): void; + texImage2DU16(target: number, level: number, internalformat: number, width: number, height: number, border: number, format: number, type: number, pixels: NSArray | number[]): void; texImage2DU32(target: number, level: number, internalformat: number, width: number, height: number, border: number, format: number, type: number, pixels: NSArray | number[]): void; @@ -2724,6 +2784,8 @@ declare class TNSWebGLRenderingContext extends TNSCanvasRenderingContext { texSubImage2DPixelsSize(target: number, level: number, xoffset: number, yoffset: number, width: number, height: number, format: number, type: number, pixels: interop.Pointer | interop.Reference, size: number): void; + texSubImage2DPixelsSizeOffset(target: number, level: number, xoffset: number, yoffset: number, width: number, height: number, format: number, type: number, pixels: interop.Pointer | interop.Reference, size: number, offset: number): void; + texSubImage2DU16(target: number, level: number, xoffset: number, yoffset: number, width: number, height: number, format: number, type: number, pixels: NSArray | number[]): void; texSubImage2DU8(target: number, level: number, xoffset: number, yoffset: number, width: number, height: number, format: number, type: number, pixels: NSArray | number[]): void; @@ -2732,40 +2794,62 @@ declare class TNSWebGLRenderingContext extends TNSCanvasRenderingContext { uniform1fv(location: number, value: interop.Pointer | interop.Reference, size: number): void; + uniform1fvOffset(location: number, value: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniform1i(location: number, v0: number): void; uniform1iv(location: number, value: interop.Pointer | interop.Reference, size: number): void; + uniform1ivOffset(location: number, value: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniform2f(location: number, v0: number, v1: number): void; uniform2fv(location: number, value: interop.Pointer | interop.Reference, size: number): void; + uniform2fvOffset(location: number, value: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniform2i(location: number, v0: number, v1: number): void; uniform2iv(location: number, value: interop.Pointer | interop.Reference, size: number): void; + uniform2ivOffset(location: number, value: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniform3f(location: number, v0: number, v1: number, v2: number): void; uniform3fv(location: number, value: interop.Pointer | interop.Reference, size: number): void; + uniform3fvOffset(location: number, value: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniform3i(location: number, v0: number, v1: number, v2: number): void; uniform3iv(location: number, value: interop.Pointer | interop.Reference, size: number): void; + uniform3ivOffset(location: number, value: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniform4f(location: number, v0: number, v1: number, v2: number, v3: number): void; uniform4fv(location: number, value: interop.Pointer | interop.Reference, size: number): void; + uniform4fvOffset(location: number, value: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniform4i(location: number, v0: number, v1: number, v2: number, v3: number): void; uniform4iv(location: number, value: interop.Pointer | interop.Reference, size: number): void; + uniform4ivOffset(location: number, value: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniformMatrix2fv(location: number, transpose: boolean, value: interop.Pointer | interop.Reference, size: number): void; + uniformMatrix2fvOffset(location: number, transpose: boolean, value: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniformMatrix3fv(location: number, transpose: boolean, value: interop.Pointer | interop.Reference, size: number): void; + uniformMatrix3fvOffset(location: number, transpose: boolean, value: interop.Pointer | interop.Reference, size: number, offset: number): void; + uniformMatrix4fv(location: number, transpose: boolean, value: interop.Pointer | interop.Reference, size: number): void; + uniformMatrix4fvOffset(location: number, transpose: boolean, value: interop.Pointer | interop.Reference, size: number, offset: number): void; + useProgram(program: number): void; validateProgram(program: number): void; @@ -2774,18 +2858,26 @@ declare class TNSWebGLRenderingContext extends TNSCanvasRenderingContext { vertexAttrib1fv(index: number, value: interop.Pointer | interop.Reference): void; + vertexAttrib1fvOffset(index: number, value: interop.Pointer | interop.Reference, offset: number): void; + vertexAttrib2f(index: number, v0: number, v1: number): void; vertexAttrib2fv(index: number, value: interop.Pointer | interop.Reference): void; + vertexAttrib2fvOffset(index: number, value: interop.Pointer | interop.Reference, offset: number): void; + vertexAttrib3f(index: number, v0: number, v1: number, v2: number): void; vertexAttrib3fv(index: number, value: interop.Pointer | interop.Reference): void; + vertexAttrib3fvOffset(index: number, value: interop.Pointer | interop.Reference, offset: number): void; + vertexAttrib4f(index: number, v0: number, v1: number, v2: number, v3: number): void; vertexAttrib4fv(index: number, value: interop.Pointer | interop.Reference): void; + vertexAttrib4fvOffset(index: number, value: interop.Pointer | interop.Reference, offset: number): void; + vertexAttribPointer(index: number, size: number, type: number, normalized: boolean, stride: number, offset: number): void; viewport(x: number, y: number, width: number, height: number): void; @@ -3710,12 +3802,24 @@ declare function text_decoder_create(decoding: string | interop.Pointer | intero declare function text_decoder_decode(decoder: number, data: string | interop.Pointer | interop.Reference, len: number): string; +declare function text_decoder_decode_bytes(decoder: number, data: string | interop.Pointer | interop.Reference, len: number): interop.Pointer | interop.Reference; + declare function text_decoder_decode_i16(decoder: number, data: interop.Pointer | interop.Reference, len: number): string; +declare function text_decoder_decode_i16_bytes(decoder: number, data: interop.Pointer | interop.Reference, len: number): interop.Pointer | interop.Reference; + declare function text_decoder_decode_i32(decoder: number, data: interop.Pointer | interop.Reference, len: number): string; +declare function text_decoder_decode_i32_bytes(decoder: number, data: interop.Pointer | interop.Reference, len: number): interop.Pointer | interop.Reference; + +declare function text_decoder_decode_to_bytes(decoder: number, data: string | interop.Pointer | interop.Reference, len: number): interop.Pointer | interop.Reference; + declare function text_decoder_decode_u16(decoder: number, data: interop.Pointer | interop.Reference, len: number): string; +declare function text_decoder_decode_u16_bytes(decoder: number, data: interop.Pointer | interop.Reference, len: number): interop.Pointer | interop.Reference; + +declare function text_decoder_decode_u32_bytes(decoder: number, data: interop.Pointer | interop.Reference, len: number): interop.Pointer | interop.Reference; + declare function text_decoder_get_encoding(decoder: number): string; declare function text_encoder_create(encoding: string | interop.Pointer | interop.Reference): number; diff --git a/packages/canvas/utils.ts b/packages/canvas/utils.ts index e8d8ca64..3ace09b1 100644 --- a/packages/canvas/utils.ts +++ b/packages/canvas/utils.ts @@ -1,4 +1,7 @@ export class Utils { + static #SUPPORTED_TYPED_ARRAYS_VERSION = '8.2.0'; + static #IS_SUPPORTED_VERSION = false; + static #CHECKED_FOR_SUPPORT = false; public static toJSArray(array) { if (global.isIOS) { if (array instanceof NSArray) { @@ -35,10 +38,24 @@ export class Utils { return array; } } + + public static get IS_SUPPORTED_TYPED_ARRAYS_VERSION() { + if (!this.#CHECKED_FOR_SUPPORT) { + const version = (global).__runtimeVersion; + this.#IS_SUPPORTED_VERSION = version.substring(0, version.indexOf('-')) >= this.#SUPPORTED_TYPED_ARRAYS_VERSION; + this.#CHECKED_FOR_SUPPORT = true; + } + return this.#IS_SUPPORTED_VERSION; + } + + static isTypedArray(value){ + return value instanceof Uint8ClampedArray || value instanceof Uint8Array || value instanceof Int8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Uint32Array || value instanceof Int32Array || value instanceof Float32Array + } } + export default function lazy(action: () => T): () => T { let _value: T; return () => _value || (_value = action()); -} \ No newline at end of file +} diff --git a/tools/demo/canvas-babylon/index.ts b/tools/demo/canvas-babylon/index.ts index f17b655c..4f6c9eab 100644 --- a/tools/demo/canvas-babylon/index.ts +++ b/tools/demo/canvas-babylon/index.ts @@ -33,14 +33,14 @@ export class DemoSharedCanvasBabylon extends DemoSharedBase { // You must at least define a camera engine = createDefaultEngine(); if (!engine) throw 'engine should not be null.'; - //this.createMDN(engine) + this.createMDN(engine) //sceneToRender = this.createChart(engine); - // sceneToRender = this.createWaterScene(engine); + //sceneToRender = this.createWaterScene(engine); //sceneToRender = this.createScene(engine); //sceneToRender = this.createSkullScene(engine); - sceneToRender = this.createLightTexture(engine); - // sceneToRender = this.createParticleScene(engine); + //sceneToRender = this.createLightTexture(engine); + //sceneToRender = this.createParticleScene(engine); engine.runRenderLoop(function () { if (sceneToRender) { sceneToRender.render(); diff --git a/tools/demo/canvas-three/index.ts b/tools/demo/canvas-three/index.ts index 3af5a1fa..be9a9799 100644 --- a/tools/demo/canvas-three/index.ts +++ b/tools/demo/canvas-three/index.ts @@ -52,7 +52,6 @@ export class DemoSharedCanvasThree extends DemoSharedBase { //this.threeCube(this.canvas); //this.threeCar(this.canvas); //this.threeKeyframes(this.canvas); - //this.geoTextShapes(this.canvas); //this.webGLHelpers(this.canvas); //this.fbxLoader(this.canvas); //this.gtlfLoader(this.canvas); @@ -1518,10 +1517,20 @@ export class DemoSharedCanvasThree extends DemoSharedBase { renderer.setSize(window.innerWidth, window.innerHeight); renderer.outputEncoding = THREE.sRGBEncoding; + const pmremGenerator = new THREE.PMREMGenerator( renderer ); const scene = new THREE.Scene(); + + + const light = new THREE.SpotLight(); + light.position.set(-1.8, 0.6, 2.7 * 1.2); + scene.add(light); + + scene.background = new THREE.Color(0xbfe3dd); + scene.environment = pmremGenerator.fromScene( new RoomEnvironment(), 0.04 ).texture; + const camera = new THREE.PerspectiveCamera(40, window.innerWidth / window.innerHeight, .1, 1000); camera.position.set(5, 2, 8); @@ -1531,22 +1540,6 @@ export class DemoSharedCanvasThree extends DemoSharedBase { controls.enablePan = false; controls.enableDamping = true; - scene.add(new THREE.HemisphereLight(0xffffff, 0x000000, 0.4)); - - const dirLight = new THREE.DirectionalLight(0xffffff, 1); - dirLight.position.set(5, 2, 8); - scene.add(dirLight); - - // envmap - const path = this.root + '/textures/cube/Park2/'; - const format = '.jpg'; - const envMap = new THREE.CubeTextureLoader().load([ - path + 'posx' + format, path + 'negx' + format, - path + 'posy' + format, path + 'negy' + format, - path + 'posz' + format, path + 'negz' + format - ], undefined, undefined, e => { - console.log('CubeTextureLoader', e); - }); const dracoLoader = new DRACOLoader(); dracoLoader.setDecoderPath(this.root + '/js/libs/draco/gltf/'); @@ -1558,12 +1551,6 @@ export class DemoSharedCanvasThree extends DemoSharedBase { const model = gltf.scene; model.position.set(1, 1, 0); model.scale.set(0.01, 0.01, 0.01); - model.traverse(function (child: any) { - - if (child.isMesh) child.material.envMap = envMap; - - }); - scene.add(model); mixer = new THREE.AnimationMixer(model); diff --git a/tools/demo/canvas/index.ts b/tools/demo/canvas/index.ts index 875100c3..b684b2b5 100644 --- a/tools/demo/canvas/index.ts +++ b/tools/demo/canvas/index.ts @@ -14,6 +14,7 @@ import { cancelEnvironmentMap, cancelFog, draw_image_space, draw_instanced, envi declare var com, java; let zen3d; import * as Svg from '@nativescript/canvas/SVG'; +import { issue54 } from './issues'; export class DemoSharedCanvas extends DemoSharedBase { private canvas: any; private svg: Svg.Svg; @@ -315,6 +316,7 @@ export class DemoSharedCanvas extends DemoSharedBase { } draw() { +//const str = new java.lang.String() // const ctx = this.canvas.getContext('2d'); @@ -447,7 +449,7 @@ ctx.fillRect(0, 0, 80, 80); */ //draw_image_space(this.canvas); //fog(this.canvas); //environmentMap(this.canvas); - cubeRotationRotation(this.canvas); + //cubeRotationRotation(this.canvas); //main(this.canvas); // imageFilter(this.canvas); // interactiveCube(this.canvas); @@ -470,6 +472,7 @@ ctx.fillRect(0, 0, 80, 80); */ //this.zen3dGeometryLoaderGltf(this.canvas); //this.playCanvas(this.canvas); //this.drawRandomFullscreenImage(this.canvas); + issue54(this.canvas); } drawRandomFullscreenImage(canvas) { diff --git a/tools/demo/canvas/issues.ts b/tools/demo/canvas/issues.ts new file mode 100644 index 00000000..96ca99f0 --- /dev/null +++ b/tools/demo/canvas/issues.ts @@ -0,0 +1,11 @@ +import { ImageSource } from '@nativescript/core'; + +export function issue54(canvas) { + const ctx = canvas.getContext('2d'); + ImageSource.fromUrl('https://mdn.mozillademos.org/files/222/Canvas_createpattern.png').then(function (img) { + console.log('issue54'); + const pattern = ctx.createPattern(img, 'repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 300, 300); + }); +} diff --git a/tools/scripts/android-build.sh b/tools/scripts/android-build.sh index 1f7de497..3fe1eac7 100644 --- a/tools/scripts/android-build.sh +++ b/tools/scripts/android-build.sh @@ -57,7 +57,7 @@ if [[ "$NAME" == "Darwin" ]];then PRE_BUILT_PATH="$ANDROID_NDK/toolchains/llvm/prebuilt/darwin-x86_64" export PATH=$PATH:/"$PRE_BUILT_PATH/bin" ANDROID_NDK_SYSROOT_LIB="$PRE_BUILT_PATH/sysroot/usr/lib" -else if [[ "$NAME" == "Linux" ]];then +elif [[ "$NAME" == "Linux" ]];then PRE_BUILT_PATH="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64" export PATH=$PATH:/"$PRE_BUILT_PATH/bin" ANDROID_NDK_SYSROOT_LIB="$PRE_BUILT_PATH/sysroot/usr/lib" diff --git a/tools/scripts/ios-build.sh b/tools/scripts/ios-build.sh index 660d02cf..ac2d994a 100755 --- a/tools/scripts/ios-build.sh +++ b/tools/scripts/ios-build.sh @@ -7,6 +7,7 @@ IOS_LIB_DIR="$IOS_SRC_DIR/CanvasNative" IOS_LIB_INCLUDE="$IOS_LIB_DIR/include" IOS_LIB_LIBS="$IOS_LIB_DIR/libs" IOS_LIB_X86_64_SIM="$IOS_LIB_LIBS/x86_64-iphonesimulator" +IOS_LIB_ARM_64_SIM="$IOS_LIB_LIBS/arm64-iphonesimulator" IOS_LIB_ARM_64_PHONE="$IOS_LIB_LIBS/arm64-iphoneos" OUTPUT_LIB_NAME="libcanvasnative.a" IS_RELEASE=false @@ -21,6 +22,11 @@ IOS_X86_64_SIM_OUTPUT_RELEASE_DIR="$NATIVE_SRC/target/x86_64-apple-ios/release/$ IOS_ARM_64_PHONE_OUTPUT_DEBUG_DIR="$NATIVE_SRC/target/aarch64-apple-ios/debug/$OUTPUT_LIB_NAME" IOS_ARM_64_PHONE_OUTPUT_RELEASE_DIR="$NATIVE_SRC/target/aarch64-apple-ios/release/$OUTPUT_LIB_NAME" + +IOS_ARM_64_SIM_OUTPUT_DEBUG_DIR="$NATIVE_SRC/target/aarch64-apple-darwin/debug/$OUTPUT_LIB_NAME" +IOS_ARM_64_SIM_OUTPUT_RELEASE_DIR="$NATIVE_SRC/target/aarch64-apple-darwin/release/$OUTPUT_LIB_NAME" + + if ! cargo --version >/dev/null 2>&1; then echo "Cargo not found" exit @@ -71,7 +77,7 @@ else fi -if [[ -f "I$OS_LIB_ARM_64_PHONE/$OUTPUT_LIB_NAME" ]]; then +if [[ -f "$IOS_LIB_ARM_64_PHONE/$OUTPUT_LIB_NAME" ]]; then rm "$IOS_LIB_ARM_64_PHONE/$OUTPUT_LIB_NAME" fi @@ -86,3 +92,16 @@ else fi +# if [[ -f "$IOS_LIB_ARM_64_SIM/$OUTPUT_LIB_NAME" ]]; then +# rm "$IOS_LIB_ARM_64_SIM/$OUTPUT_LIB_NAME" +# fi + +# if [[ $IS_RELEASE == true ]]; then +# cd "$NATIVE_SRC" +# RUST_BACKTRACE=1 cargo build --target aarch64-apple-darwin $BUILD_FLAG $FEATURE_FLAGS +# cp "$IOS_ARM_64_SIM_OUTPUT_RELEASE_DIR" "$IOS_LIB_ARM_64_SIM/$OUTPUT_LIB_NAME" +# else +# cd "$NATIVE_SRC" +# RUST_BACKTRACE=1 cargo build --target aarch64-apple-darwin $FEATURE_FLAGS +# cp "$IOS_ARM_64_SIM_OUTPUT_DEBUG_DIR" "$IOS_LIB_ARM_64_SIM/$OUTPUT_LIB_NAME" +# fi diff --git a/tsconfig.base.json b/tsconfig.base.json index 37728dce..6821bd3b 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -6,7 +6,7 @@ "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, - "noEmitHelpers": true, + "noEmitHelpers": false, "target": "es2017", "module": "esnext", "lib": [