| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | <!DOCTYPE html><html lang="zh"><head>	<meta charset="UTF-8">	<meta name="viewport" content="width=device-width, initial-scale=1.0">	<meta http-equiv="X-UA-Compatible" content="ie=edge">	<title></title>	<style type="text/css">		html,		body,		canvas {			padding: 0;			margin: 0;			width: 100%;			height: 100%;			overflow-y: hidden;			background-color: transparent;		}	</style></head><body>	<canvas id="lime-painter"></canvas>	<script type="text/javascript" src="./uni.webview.1.5.3.js"></script>	<script type="text/javascript" src="./painter.js"></script>	<script> 		var cache = [];		var painter = null;		var canvas = null;		var context = null;		var timer = null;		var pixelRatio = 1;		console.log = function (...args) {			postMessage(args);		};		// function stringify(key, value) {		// 	if (typeof value === 'object' && value !== null) {		// 		if (cache.indexOf(value) !== -1) {		// 			return;		// 		}		// 		cache.push(value);		// 	}		// 	return value;		// };		function emit(event, data) {			postMessage({				event,				data: (typeof data !== 'object' && data !== null ? data : JSON.stringify(data)) 			});			cache = [];		};		function postMessage(data) {			uni.postMessage({				data			});		};				function init(dpr) {			canvas = document.querySelector('#lime-painter');			context = canvas.getContext('2d');			pixelRatio = dpr || window.devicePixelRatio;			painter = new Painter({				id: 'lime-painter',				context,				canvas,				pixelRatio,				width: canvas.offsetWidth,				height: canvas.offsetHeight,				listen: {					onProgress(v) {						emit('progressChange', v);					},					onEffectFail(err) {						//console.error(err)						emit('fail', err);					}				}			});			emit('inited', true);		};		function save(args) {			delete args.success;			delete args.fail;			clearTimeout(timer);			timer = setTimeout(() => {				const path = painter.save(args);				if (typeof path == 'string') {					const index = Math.ceil(path.length / 8);					for (var i = 0; i < 8; i++) {						if (i == 7) {							emit('success', path.substr(i * index, index));						} else {							emit('file', path.substr(i * index, index));						}					};				} else {					// console.log('canvas no data')					emit('fail', 'canvas no data');				};			}, 30);		};		async function source(args) {			let size = await painter.source(args);			emit('layoutChange', size);			if(!canvas.height) {				console.log('canvas no size')				emit('fail', 'canvas no size');			}			painter.render().catch(err => {				// console.error(err)				emit('fail', err);			});		};	</script></body></html>
 |