| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | 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;//             const render = ( callback ) => {// //                 const commands = context._drawCommands;//                 context._drawCommands = '';// //                 GCanvas.GBridge.render2d(this.id, commands, callback);//                 this._needRender = false;//             }// 			//draw方法触发// 			context._flush = render;//             //setInterval(render, 16);            GCanvas.GBridge.callSetContextType(this.id, 0);        } else {            throw new Error('not supported context ' + type);        }        return context;    }    reset() {        GCanvas.GBridge.callReset(this.id);    }}
 |