UNPKG

@flyskywhy/react-native-gcanvas

Version:

A C++ native canvas 2D/WebGL component based on gpu opengl glsl shader GCanvas

66 lines (54 loc) 1.7 kB
import GCanvas from './env/canvas'; import GImage from './env/image'; import GWebGLRenderingContext from './context/webgl/RenderingContext'; import GContext2D from './context/2d/RenderingContext'; import GBridgeWeex from './bridge/weex'; import GBridgeReactNative from './bridge/react-native'; export let Image = GImage; export let WeexBridge = GBridgeWeex; export let ReactNativeBridge = GBridgeReactNative; export function enable( el, { bridge, debug, isAutoClearRectBeforePutImageData, isResetGlViewportAfterSetWidthOrHeight, devicePixelRatio, disableAutoSwap, disableComboCommands, } = {}, ) { const GBridge = GImage.GBridge = GCanvas.GBridge = GWebGLRenderingContext.GBridge = GContext2D.GBridge = bridge; GBridge.callEnable(el.ref, [ 0, // renderMode: 0--RENDERMODE_WHEN_DIRTY, 1--RENDERMODE_CONTINUOUSLY -1, // hybridLayerType: 0--LAYER_TYPE_NONE 1--LAYER_TYPE_SOFTWARE 2--LAYER_TYPE_HARDWARE false, // supportScroll false, // newCanvasMode 1, // compatible 'white', // clearColor false, // sameLevel: newCanvasMode = true && true => GCanvasView and Webview is same level ]); if (debug === true) { GBridge.callEnableDebug(); } if (disableComboCommands) { GBridge.callEnableDisableCombo(); } var canvas = new GCanvas(el.ref, { isAutoClearRectBeforePutImageData, isResetGlViewportAfterSetWidthOrHeight, devicePixelRatio, disableAutoSwap, style: el.style, }); return canvas; } export function disable(canvas) { canvas.disabled = true; if (canvas.webglInterval) { clearInterval(canvas.webglInterval); } const ref = canvas.id; GCanvas.GBridge.callDisable(ref); }