UNPKG

@flyskywhy/react-native-gcanvas

Version:

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

49 lines (43 loc) 1.68 kB
import GImage from '../env/image'; import GContext2D from './RenderingContext'; export default class GOffScreenContext2D extends GContext2D { constructor() { super(); this.className = 'OffScreenCanvasRenderingContext2D'; this.images = []; } drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh) { const numArgs = arguments.length; function drawImageCommands() { if (numArgs === 3) { const x = parseFloat(sx) || 0.0; const y = parseFloat(sy) || 0.0; return 'd' + image._id + ',0,0,' + image.width + ',' + image.height + ',' + x + ',' + y + ',' + image.width + ',' + image.height + ';'; } else if (numArgs === 5) { const x = parseFloat(sx) || 0.0; const y = parseFloat(sy) || 0.0; const width = parseInt(sw) || image.width; const height = parseInt(sh) || image.height; return 'd' + image._id + ',0,0,' + image.width + ',' + image.height + ',' + x + ',' + y + ',' + width + ',' + height + ';'; } else if (numArgs === 9) { sx = parseFloat(sx) || 0.0; sy = parseFloat(sy) || 0.0; sw = parseInt(sw) || image.width; sh = parseInt(sh) || image.height; dx = parseFloat(dx) || 0.0; dy = parseFloat(dy) || 0.0; dw = parseInt(dw) || image.width; dh = parseInt(dh) || image.height; return 'd' + image._id + ',' + sx + ',' + sy + ',' + sw + ',' + sh + ',' + dx + ',' + dy + ',' + dw + ',' + dh + ';'; } } this.images.push(image); this._drawCommands += drawImageCommands(); } }