asia-weex-vue-render4light
Version:
Web renderer for weex project written in Vue DSL.
93 lines (77 loc) • 3.15 kB
JavaScript
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/bridge-weex';
import GBridgeReactNative from './bridge/bridge-reactnative';
// export let Image = GImage;
// export let WeexBridge = GBridgeWeex;
// export let ReactNativeBridge = GBridgeReactNative;
// export function enable(el, { bridge, debug, 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, { disableAutoSwap });
// canvas.width = el.style.width;
// canvas.height = el.style.height;
// return canvas;
// };
// export function getContext(el) {
// if(process.env.RUNTIME==="native"){
// return enable(el, {bridge: WeexBridge}).getContext('2d');
// }else{
// return el.getContext('2d')
// }
// }
const canvas = {
Image: GImage,
WeexBridge: GBridgeWeex,
ReactNativeBridge: GBridgeReactNative,
enable: function(el, { bridge, debug, 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 cvs = new GCanvas(el.ref, { disableAutoSwap });
cvs.width = el.style.width;
cvs.height = el.style.height;
return cvs;
},
getContext: function(el) {
if (process.env.RUNTIME === "native") {
return enable(el, { bridge: WeexBridge }).getContext('2d');
} else {
return el.getContext('2d')
}
}
}
export default {
init: function (Weex) {
Weex.registerModule('canvas', canvas)
}
}