UNPKG

asp-smart-ui-plus-test

Version:

A Component Library for Vue 3

57 lines (43 loc) 1.37 kB
import GContext2D from '../context-2d/RenderingContext' import GContextWebGL from '../context-webgl/RenderingContext' export default class GCanvas { // static GBridge = null; id = null; _needRender = true; constructor (id, { disableAutoSwap }) { this.id = id this._disableAutoSwap = disableAutoSwap if (disableAutoSwap) { this._swapBuffers = () => { GCanvas.GBridge.render(this.id) } } } getContext (type) { let context = null if (type.match(/webgl/i)) { context = new GContextWebGL(this) context.componentId = this.id if (!this._disableAutoSwap) { const render = () => { if (this._needRender) { GCanvas.GBridge.render(this.id) this._needRender = false } } setInterval(render, 16) } GCanvas.GBridge.callSetContextType(this.id, 1) // 0 for 2d; 1 for webgl } else if (type.match(/2d/i)) { context = new GContext2D(this) context.componentId = this.id GCanvas.GBridge.callSetContextType(this.id, 0) } else { throw new Error('not supported context ' + type) } return context } reset () { GCanvas.GBridge.callReset(this.id) } }