qs-canvas.js.map 129 KB

1234567
  1. {
  2. "version": 3,
  3. "sources": ["../../../../../node_modules/qs-canvas/index.js"],
  4. "sourcesContent": ["; var QSCanvas = (function () {\r\n\tconst platform = getPlatform(), isUni = platform == 'uni', isNode = platform == 'node', \r\n\tisWeb = platform == 'web', imgCache = {}, vmCache = {},\r\n\tasyncDrawWhiteList = Object.freeze(['init', 'initAsyncDrawMode', 'initArgs', 'initCanvas', 'handleCtx', 'initData', \r\n\t'draw', 'toImage', 'updateCanvasWH', 'clear', 'restoreAsyncDrawMode']), \r\n\tcalcMethods = Object.freeze(['setPaintbrush', 'setPaintbrushProp', 'resetPaintbrush', 'savePaintbrush', \r\n\t'restorePaintbrush', 'calcText', 'calcImg', 'measureText', 'loadImage']), \r\n\tasyncDrawMethods = Object.freeze(['setPaintbrush', 'setPaintbrushProp', 'resetPaintbrush', 'savePaintbrush', \r\n\t'restorePaintbrush', 'drawText', 'drawStraightLine', 'drawDoubleStraightLine', 'drawDotted', \r\n\t'drawDottedStraightLine', 'drawLine', 'drawTextDecoration', 'drawImg', 'drawQrCode', 'setCircle', 'setRect']),\r\n\tallSelfMethods = Object.freeze(['setPaintbrush', 'setPaintbrushProp', 'resetPaintbrush', 'savePaintbrush', \r\n\t'restorePaintbrush', 'drawText', 'drawStraightLine', 'drawDoubleStraightLine', 'drawDotted', \r\n\t'drawDottedStraightLine', 'drawLine', 'drawTextDecoration', 'drawImg', 'drawQrCode', 'setCircle', \r\n\t'setRect', 'calcText', 'calcImg', 'measureText', 'loadImage', 'drawArray', 'drawItem']),\r\n\tneedReturnMethods = Object.freeze(['drawText', 'drawImg']),\r\n\tcommonMethods = Object.freeze([\"drawImage\", \"putImageData\", \"getImageData\", \"createImageData\", \"addPage\", \"save\", \r\n\t\"restore\", \"rotate\", \"translate\", \"transform\", \"getTransform\", \"resetTransform\", \"setTransform\", \"isPointInPath\", \r\n\t\"scale\", \"clip\", \"fill\", \"stroke\", \"fillText\", \"strokeText\", \"fillRect\", \"strokeRect\", \"clearRect\", \"rect\", \r\n\t\"measureText\", \"moveTo\", \"lineTo\", \"bezierCurveTo\", \"quadraticCurveTo\", \"beginPath\", \"closePath\", \"arc\", \"arcTo\", \r\n\t\"ellipse\", \"setLineDash\", \"getLineDash\", \"createPattern\", \"createLinearGradient\", \"createRadialGradient\"])\r\n\r\n\tlet nodeCanvas, id = 1\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\t/**\r\n\t * 判断是否是undefined, uni中的undefined不是字符串\r\n\t */\r\n\tfunction notUnd(t) {\r\n\t\treturn String(t) != 'undefined'\r\n\t}\r\n\tfunction isNull(a) {\r\n\t\treturn !((a || a == 0) && !['undefined', 'null'].includes(String(a)))\r\n\t}\r\n\r\n\t/**\r\n\t * 判断环境\r\n\t */\r\n\tfunction getPlatform() {\r\n\t\tif (notUnd(typeof uni)) return 'uni'\r\n\t\tif (notUnd(typeof window) && notUnd(typeof document)) return 'web'\r\n\t\treturn 'node'\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * 获取实例\r\n\t */\r\n\tfunction getCtx(vm, args) {\r\n\t\tif (isUni) {\r\n\t\t\tif (!args.canvasId) {\r\n\t\t\t\tthrow new Error('canvasId 不能为空')\r\n\t\t\t}\r\n\t\t}\r\n\t\tlet canvas, obj = {}\r\n\t\tswitch (platform) {\r\n\t\t\tcase 'uni':\r\n\t\t\t\tcanvas = uni.createCanvasContext(args.canvasId, vm)\r\n\t\t\t\tobj.canvas = canvas;\r\n\t\t\t\tobj.ctx = canvas;\r\n\t\t\t\tbreak\r\n\t\t\tcase 'web':\r\n\t\t\t\tcanvas = args?.canvasId ? document.getElementById(args?.canvasId) : document.createElement('canvas')\r\n\t\t\t\tcanvas.width = args?.width || 10\r\n\t\t\t\tcanvas.height = args?.height || 10\r\n\t\t\t\tobj.canvas = canvas\r\n\t\t\t\tobj.ctx = canvas.getContext('2d')\r\n\t\t\t\tbreak\r\n\t\t\tcase 'node':\r\n\t\t\t\tcanvas = nodeCanvas.createCanvas(args?.width || 10, args?.height || 10)\r\n\t\t\t\tobj.canvas = canvas\r\n\t\t\t\tobj.ctx = canvas.getContext('2d')\r\n\t\t\t\tbreak\r\n\t\t}\r\n\r\n\t\treturn obj\r\n\t}\r\n\r\n\tclass QSCanvas {\r\n\t\t#nc\r\n\t\tconstructor(obj, vm) {\r\n\t\t\tthis._id = id++\r\n\t\t\tvmCache[this._id] = vm\r\n\t\t\tif(obj) {\r\n\t\t\t\tthis.init(obj)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinit(obj = {}) {\r\n\t\t\tthis.initArgs(obj).initData().initCanvas().handleCtx().resetPaintbrush()\r\n\t\t\tif(this._data.asyncDrawMode === true) {\r\n\t\t\t\tthis.#nc = new QSCanvas({ asyncDrawMode: false })\r\n\t\t\t\tthis.initAsyncDrawMode()\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinitAsyncDrawMode() {\r\n\t\t\tif(isUni) return\r\n\t\t\tconst ctxMethods = this._data.ctxMethods\r\n\t\t\tconst arr = [...new Set([...allSelfMethods, ...ctxMethods])]\r\n\t\t\tfor(let i = 0; i < arr.length; i++) {\r\n\t\t\t\tconst item = arr[i]\r\n\t\t\t\tthis.handleAsyncDrawModeItem(item)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thandleAsyncDrawModeItem(i) {\r\n\t\t\tif(isUni) return\r\n\t\t\tif(asyncDrawWhiteList.includes(i)) {\r\n\t\t\t\tconsole.log('白名单跳过')\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tif(typeof this[i] == 'function') {\r\n\t\t\t\tif(!this._data.nMethods[i]) this._data.nMethods[i] = this[i]\r\n\t\t\t\tlet _this = this\r\n\t\t\t\tthis[i] = function () {\r\n\t\t\t\t\tlet r\r\n\t\t\t\t\tif(calcMethods.includes(i)) {\r\n\t\t\t\t\t\tr = _this.#nc[i](...arguments)\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(r && r !== _this && r !== _this.#nc) return r\r\n\t\t\t\t\tif(asyncDrawMethods.includes(i) || _this._data.ctxMethods.includes(i) ) {\r\n\t\t\t\t\t\t_this._data.asyncDrawQueue.push({ method: i, args: arguments })\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(needReturnMethods.includes(i)) {\r\n\t\t\t\t\t\treturn _this.#nc[i](...arguments)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trestoreAsyncDrawMode() {\r\n\t\t\tif(isUni) return\r\n\t\t\tconst nMethods = this._data.nMethods\r\n\t\t\tfor(const i in nMethods) {\r\n\t\t\t\tthis[i] = nMethods[i]\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinitArgs(obj = {}) {\r\n\t\t\tthis._args = obj\r\n\t\t\treturn this\r\n\t\t}\r\n\r\n\t\tinitCanvas() {\r\n\t\t\tconst canvasObj = getCtx(vmCache[this._id], this._args)\r\n\t\t\tthis.canvas = canvasObj.canvas\r\n\t\t\tthis.ctx = canvasObj.ctx\r\n\t\t\treturn this\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * 使QSCanvas拥有原有方法\r\n\t\t */\r\n\t\thandleCtx() {\r\n\t\t\tconst ctx = this.ctx\r\n\t\t\tconst active = (i)=>{\r\n\t\t\t\tthis._data.ctxMethods.push(i)\r\n\t\t\t\tthis[i] = \r\n\t\t\t\tctx[i].bind(ctx)\r\n\t\t\t\treturn\r\n\t\t\t\tfunction a() {\r\n\t\t\t\t\treturn ctx[i](...arguments)\r\n\t\t\t\t} \r\n\t\t\t}\r\n\t\t\tfor (const i in ctx) {\r\n\t\t\t\tif (typeof ctx[i] == 'function') {\r\n\t\t\t\t\tif (!this[i]) {\r\n\t\t\t\t\t\tactive(i)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tfor(let k = 0; k < commonMethods.length; k++) {\r\n\t\t\t\tconst i = commonMethods[k]\r\n\t\t\t\tif (typeof ctx[i] == 'function') {\r\n\t\t\t\t\tif (!this[i]) {\r\n\t\t\t\t\t\tactive(i)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this\r\n\t\t}\r\n\r\n\t\tinitData() {\r\n\t\t\tthis._data = { \r\n\t\t\t\toldPaintbrushProps: {}, savedPaintbrushProps: [], \r\n\t\t\t\tfont: { fontStyle: 'normal', fontVariant: 'normal', fontWeight: 'normal', fontSize: 10, fontFamily: 'sans-serif' }, \r\n\t\t\t\theight: this._args.height || 10, width: this._args.width || 10, \r\n\t\t\t\twhChange: false, \r\n\t\t\t\tasyncDrawQueue: [], \r\n\t\t\t\tnMethods: {},\r\n\t\t\t\tasyncDrawMode: (isNode || isWeb)?this._args.asyncDrawMode !== false:false,\r\n\t\t\t\tctxMethods: []\r\n\t\t\t}\r\n\t\t\treturn this\r\n\t\t}\r\n\r\n\r\n\t\t/**\r\n\t\t * 设置画笔\r\n\t\t */\r\n\t\tsetPaintbrush(obj = {}) {\r\n\t\t\tfilterPaintbrushProps(obj);\r\n\t\t\tfor (const k in obj) {\r\n\t\t\t\tthis.setPaintbrushProp(k, obj[k])\r\n\t\t\t}\r\n\t\t\treturn this\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * 设置画笔操作兼容uni\r\n\t\t */\r\n\t\tsetPaintbrushProp(prop, data) {\r\n\t\t\tif (isNull(prop) || isNull(data)) return;\r\n\t\t\tprop = hyphen2Hump(prop)\r\n\t\t\tconst ctx = this.ctx;\r\n\t\t\tif (prop == 'font') {\r\n\t\t\t\tif (data) {\r\n\t\t\t\t\tif (typeof data != 'object') {\r\n\t\t\t\t\t\tconsole.warn('font属性需Object格式')\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfor (const k in data) if (isNull(data[k])) delete (data[k])\r\n\t\t\t\t\tconst font = { ...this._data.font, ...data }\r\n\t\t\t\t\tif(isUni) font.fontSize = Math.round(font.fontSize)\r\n\t\t\t\t\tthis._data.font = font\r\n\t\t\t\t\tconst f = this._data.font\r\n\t\t\t\t\tthis._data.oldPaintbrushProps[prop] = f;\r\n\t\t\t\t\tconst setFont = ()=>{\r\n\t\t\t\t\t\tctx.font = `${f.fontStyle || 'normal'} ${f.fontVariant || 'normal'} ${f.fontWeight || 'normal'} ${f.fontSize ?? 10}px ${f.fontFamily || 'sans-serif'}`\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(isUni) {\r\n\r\n\r\n\r\n\r\n\t\t\t\t\t\tsetFont()\r\n\r\n\t\t\t\t\t}else setFont()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis._data.oldPaintbrushProps[prop] = data;\r\n\t\t\t\tconst fnn = 'set' + prop[0].toUpperCase() + prop.slice(1);\r\n\t\t\t\tif (typeof ctx?.[fnn] == 'function') {\r\n\t\t\t\t\tctx[fnn](data);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tctx[prop] = data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * 重置画笔\r\n\t\t */\r\n\t\tresetPaintbrush(obj = {}) {\r\n\t\t\tthis.setPaintbrush({\r\n\t\t\t\tfillStyle: '#000000',\r\n\t\t\t\tstrokeStyle: '#000000',\r\n\t\t\t\tshadowColor: '#000000',\r\n\t\t\t\tshadowBlur: 0,\r\n\t\t\t\tshadowOffsetX: 0,\r\n\t\t\t\tshadowOffsetY: 0,\r\n\t\t\t\tlineCap: 'butt',\r\n\t\t\t\tlineJoin: 'miter',\r\n\t\t\t\tlineWidth: 1,\r\n\t\t\t\tmiterLimit: 10,\r\n\t\t\t\tfont: this._data.font,\r\n\t\t\t\ttextAlign: 'start',\r\n\t\t\t\ttextBaseline: 'top',\r\n\t\t\t\tglobalAlpha: 1.0,\r\n\t\t\t\tglobalCompositeOperation: 'source-over',\r\n\t\t\t\t...obj\r\n\t\t\t})\r\n\t\t\treturn this\r\n\t\t}\r\n\r\n\t\tsaveAndSetPaintbrush(paintbrushProps = {}) {\r\n\t\t\tthis.savePaintbrush()\r\n\t\t\tthis.setPaintbrush(paintbrushProps)\r\n\t\t\treturn this\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * 保存画笔设置\r\n\t\t */\r\n\t\tsavePaintbrush() {\r\n\t\t\tthis._data.savedPaintbrushProps.unshift({ ...this._data.oldPaintbrushProps })\r\n\t\t\treturn this\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * 恢复上次保存的画笔设置\r\n\t\t */\r\n\t\trestorePaintbrush() {\r\n\t\t\tconst savedProps = this._data.savedPaintbrushProps.shift()\r\n\t\t\tif (savedProps) this._data.oldPaintbrushProps = { ...this._data.oldPaintbrushProps, ...savedProps }\r\n\t\t\tthis.resetPaintbrush({ ...this._data.oldPaintbrushProps })\r\n\t\t\treturn this\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * 更新画布宽高\r\n\t\t */\r\n\t\tupdateCanvasWH(obj = {}) {\r\n\t\t\tlet { width, height, delay } = obj, setCanvasWH = this._args?.setCanvasWH\r\n\t\t\twidth = width || this._data?.width || 10\r\n\t\t\theight = height || this._data?.height || 10\r\n\t\t\treturn new Promise((rs, rj) => {\r\n\t\t\t\tif (isUni) {\r\n\t\t\t\t\tif (!setCanvasWH || typeof setCanvasWH != 'function') {\r\n\t\t\t\t\t\trj('setCanvasWH异常, uni-app 请在初始化时传入setCanvasWH函数')\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\tsetCanvasWH({ height, width })\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\trs()\r\n\t\t\t\t\t}, delay ?? 50)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.canvas.height = height\r\n\t\t\t\t\tthis.canvas.width = width\r\n\t\t\t\t\trs()\r\n\t\t\t\t}\r\n\t\t\t}).then(r => {\r\n\t\t\t\tif (this._data.width != width || this._data.height != height) {\r\n\t\t\t\t\tthis._data.whChange = true\r\n\t\t\t\t}\r\n\t\t\t\tthis._data.width = width\r\n\t\t\t\tthis._data.height = height\r\n\t\t\t\tif(!this._data.asyncDrawMode) this.resetPaintbrush(this._data.oldPaintbrushProps)\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * 清除画布内容\r\n\t\t */\r\n\t\tclear() {\r\n\t\t\tthis.ctx.clearRect(0, 0, this._data.width || 999999, this._data.height || 999999)\r\n\t\t\treturn this\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * 兼容uni draw\r\n\t\t */\r\n\t\tdraw(obj = {}) {\r\n\t\t\tconst { reserve } = obj\r\n\t\t\treturn new Promise((rs, rj) => {\r\n\t\t\t\tif (isUni) {\r\n\t\t\t\t\tlet done = false\r\n\t\t\t\t\tconst settimeoutkey = setTimeout(()=>{\r\n\t\t\t\t\t\tif(!done) {\r\n\t\t\t\t\t\t\trs()\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tclearTimeout(settimeoutkey)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 3000)\r\n\t\t\t\t\tthis.ctx.draw(reserve ?? false, ()=>{\r\n\t\t\t\t\t\tdone = true\r\n\t\t\t\t\t\tclearTimeout(settimeoutkey)\r\n\t\t\t\t\t\trs()\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif(this._data.asyncDrawMode) {\r\n\t\t\t\t\t\tif(reserve !== true) this.clear()\r\n\t\t\t\t\t\tthis.restoreAsyncDrawMode()\r\n\t\t\t\t\t\tthis.resetPaintbrush()\r\n\t\t\t\t\t\tconst arr = this._data.asyncDrawQueue\r\n\t\t\t\t\t\tnew Promise(async(resolve, reject)=>{\r\n\t\t\t\t\t\t\tfor(let i = 0; i < arr.length; i++) {\r\n\t\t\t\t\t\t\t\tconst item = arr[i]\r\n\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\tconst r = this[item.method].call(this, ...item.args)\r\n\t\t\t\t\t\t\t\t\tif(typeof r?.then == 'function') await r\r\n\t\t\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\t\t\treject(error)\r\n\t\t\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tresolve()\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tthis._data.asyncDrawQueue = []\r\n\t\t\t\t\t\t\tthis.initAsyncDrawMode()\r\n\t\t\t\t\t\t\trs()\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch(err=>{\r\n\t\t\t\t\t\t\tthis.initAsyncDrawMode()\r\n\t\t\t\t\t\t\trj(err)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trs()\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * canvas2image\r\n\t\t */\r\n\t\ttoImage(obj = {}) {\r\n\t\t\treturn new Promise((rs, rj) => {\r\n\t\t\t\tif (isUni) {\r\n\t\t\t\t\tconst canvasId = this._args.canvasId\r\n\t\t\t\t\tif (!canvasId) {\r\n\t\t\t\t\t\trj('canvasId不存在')\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\tuni.canvasToTempFilePath({\r\n\t\t\t\t\t\t...obj,\r\n\t\t\t\t\t\tcanvasId: canvasId,\r\n\t\t\t\t\t\tsuccess: r => {\r\n\t\t\t\t\t\t\tobj.success?.(r)\r\n\t\t\t\t\t\t\trs(r.tempFilePath)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfail: err => {\r\n\t\t\t\t\t\t\tobj.fail?.(err)\r\n\t\t\t\t\t\t\trj(err)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, vmCache[this._id])\r\n\t\t\t\t} else {\r\n\t\t\t\t\trs(this.canvas.toDataURL(`image/${['jpg', 'jpeg'].includes(obj.fileType) ? 'jpeg' : 'png'\r\n\t\t\t\t\t\t}`, obj.quality ?? 1))\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * 计算文字多行\r\n\t\t */\r\n\t\tcalcText(obj = {}) {\r\n\t\t\tconst line = obj.line || -1\r\n\t\t\treturn new Promise((rs, rj) => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.saveAndSetPaintbrush({\r\n\t\t\t\t\t\t...(obj.paintbrushProps || {})\r\n\t\t\t\t\t})\r\n\t\t\t\t\tconst mt = this.measureText\r\n\t\t\t\t\tlet splitTexts = [], str = obj.val, width = 0\r\n\t\t\t\t\tfunction run(text, endLine) {\r\n\t\t\t\t\t\tlet endLineWidth = 0\r\n\t\t\t\t\t\tconst textWidth = mt(text).width\r\n\t\t\t\t\t\tif (endLine) {\r\n\t\t\t\t\t\t\tif (textWidth < obj.maxWidth || text.length < 2) {\r\n\t\t\t\t\t\t\t\treturn { index: text.length, ellipsis: false, width: textWidth }\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tendLineWidth = mt('...').width\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconst textWidthEndLineWidth = textWidth + endLineWidth\r\n\t\t\t\t\t\tif (textWidthEndLineWidth < obj.maxWidth || text.length < 2) {\r\n\t\t\t\t\t\t\treturn { index: text.length, ellipsis: false, width: textWidthEndLineWidth }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlet loop = true, mid = Math.floor((text.length + 1) / 2), oldMid = 1, mode = '', tw\r\n\t\t\t\t\t\twhile (loop) {\r\n\t\t\t\t\t\t\tif (mid <= 1) {\r\n\t\t\t\t\t\t\t\tloop = false\r\n\t\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (mid > text.length) {\r\n\t\t\t\t\t\t\t\tmid = text.length\r\n\t\t\t\t\t\t\t\tloop = false\r\n\t\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tconst t = text.substr(0, mid)\r\n\t\t\t\t\t\t\ttw = mt(t).width + endLineWidth\r\n\t\t\t\t\t\t\tif (tw > obj.maxWidth) {\r\n\t\t\t\t\t\t\t\ttext = t\r\n\t\t\t\t\t\t\t\tif ((mode == 'xy' && Math.abs(oldMid - mid) < 1)) {\r\n\t\t\t\t\t\t\t\t\tloop = false\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tmode = 'dy'\r\n\t\t\t\t\t\t\t\t\toldMid = mid\r\n\t\t\t\t\t\t\t\t\tmid = Math.floor((t.length + 1) / 2)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else if (tw == obj.maxWidth) {\r\n\t\t\t\t\t\t\t\tloop = false\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tif (mid <= 1 || (Math.abs(oldMid - mid) < 1)) {\r\n\t\t\t\t\t\t\t\t\tloop = false\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tmode = 'xy'\r\n\t\t\t\t\t\t\t\t\toldMid = mid\r\n\t\t\t\t\t\t\t\t\tmid += Math.floor((text.length - mid) / 2)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn { index: mid, ellipsis: endLine, width: tw }\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst font = {...this._data.font}\r\n\t\t\t\t\tif(obj.maxWidth) {\r\n\t\t\t\t\t\tlet i = 0\r\n\t\t\t\t\t\twhile (str.length) {\r\n\t\t\t\t\t\t\tconst endLine = line > 0 && splitTexts.length + 1 >= line, {index:len, ellipsis, width} = run(str, endLine);\r\n\t\t\t\t\t\t\tconst txt = str.substr(0, len)\r\n\t\t\t\t\t\t\tsplitTexts.push({ ...obj, val: txt, y: i ? obj.y + (font.fontSize + (obj.lineHeight || 0)) * i : obj.y, width })\r\n\t\t\t\t\t\t\tif (endLine) {\r\n\t\t\t\t\t\t\t\tif(ellipsis)splitTexts[splitTexts.length - 1].val += '...'\r\n\t\t\t\t\t\t\t\tstr = ''\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\tstr = str.slice(len)\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ti++\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\twidth = splitTexts.length == 1?splitTexts[0].width:splitTexts.length > 1?obj.maxWidth:0\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsplitTexts = [obj]\r\n\t\t\t\t\t\twidth = mt(obj.val).width\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.restorePaintbrush()\r\n\t\t\t\t\trs({ \r\n\t\t\t\t\t\t...obj, calcTexts: splitTexts, _calc: true, \r\n\t\t\t\t\t\tleft: obj.x, top: obj.y, right: obj.x + width, bottom: (splitTexts[splitTexts.length - 1].y + font.fontSize), \r\n\t\t\t\t\t\twidth: width, height: (splitTexts[splitTexts.length - 1].y + font.fontSize) - obj.y , fontSize: font.fontSize\r\n\t\t\t\t\t})\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\trj(error)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\t/* 绘制 */\r\n\r\n\t\t/**\r\n\t\t * 绘制文本\r\n\t\t */\r\n\t\tdrawText(obj = {}) {\r\n\t\t\treturn new Promise(async (rs, rj) => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (!obj.val) {\r\n\t\t\t\t\t\tconsole.warn(`需绘制的文本为空`)\r\n\t\t\t\t\t\trs()\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.saveAndSetPaintbrush({\r\n\t\t\t\t\t\t...(obj.paintbrushProps || {})\r\n\t\t\t\t\t})\r\n\t\t\t\t\tconst ft = (obj) => {\r\n\t\t\t\t\t\t\tthis.fillText(obj.val, obj.x, obj.y)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tftItem = (item) => {\r\n\t\t\t\t\t\t\tft(item)\r\n\t\t\t\t\t\t\tif (item.textDecoration) this.drawTextDecoration(item)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\tconst calcR = obj._calc?obj:await this.calcText(obj)\r\n\t\t\t\t\tfor (let i = 0; i < calcR.calcTexts.length; i++) {\r\n\t\t\t\t\t\tftItem(calcR.calcTexts[i])\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.restorePaintbrush()\r\n\t\t\t\t\trs(calcR)\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\trj(error)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tdrawStraightLine(obj = {}) {\r\n\t\t\tconst { x1, y1, x2, y2, paintbrushProps } = obj, ctx = this.ctx\r\n\t\t\tctx.beginPath()\r\n\t\t\tctx.moveTo(x1, y1)\r\n\t\t\tctx.lineTo(x2, y2)\r\n\t\t\tthis.saveAndSetPaintbrush(paintbrushProps || {})\r\n\t\t\tctx.stroke()\r\n\t\t\tthis.restorePaintbrush()\r\n\t\t}\r\n\r\n\t\tdrawDoubleStraightLine(obj = {}) {\r\n\t\t\tlet { gap } = obj\r\n\t\t\tgap = gap ?? 1\r\n\t\t\tthis.drawStraightLine(obj)\r\n\t\t\tthis.drawStraightLine({ ...obj, y1: obj.y1 + gap, y2: obj.y2 + gap })\r\n\t\t}\r\n\r\n\t\tdrawDotted(obj = {}) {\r\n\t\t\tthis.setCircle(obj)\r\n\t\t\tif(obj.clip) obj.clip = false\r\n\t\t\tthis.saveAndSetPaintbrush(obj.paintbrushProps || {})\r\n\t\t\tthis.ctx.fill()\r\n\t\t\tthis.restorePaintbrush()\r\n\t\t}\r\n\r\n\t\tdrawDottedStraightLine(obj = {}) {\r\n\t\t\tlet { x1, x2, y1, y2, gap, width, paintbrushProps } = obj\r\n\t\t\tx2 = x2 - width\r\n\t\t\tgap = gap || 1\r\n\t\t\tconst len = Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2))\r\n\t\t\tconst points = getPoints(x1, y1, x2, y2, Math.floor((len - gap) / (width + gap)), 9999999999)\r\n\t\t\tthis.saveAndSetPaintbrush(paintbrushProps)\r\n\t\t\tthis.drawDotted({ x: x1, y: y1, d: width })\r\n\t\t\tfor (let i = 0; i < points.length; i++)\r\n\t\t\t\tthis.drawDotted({ x: points[i][0], y: points[i][1], d: width })\r\n\r\n\t\t\tthis.drawDotted({ x: x2, y: y2, d: width })\r\n\t\t\tthis.restorePaintbrush()\r\n\t\t}\r\n\r\n\t\tdrawLine(obj = {}) {\r\n\t\t\tconst { style } = obj\r\n\t\t\tswitch (style) {\r\n\t\t\t\tcase 'double':\r\n\t\t\t\t\tobj.gap = (obj.width || 1) * 1.5\r\n\t\t\t\t\tthis.drawDoubleStraightLine(obj)\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 'solide':\r\n\t\t\t\t\tthis.drawStraightLine(obj)\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 'dotted':\r\n\t\t\t\t\tobj.gap = (obj.gap || 1) * 1.5\r\n\t\t\t\t\tobj.paintbrushProps = { fillStyle: obj.color }\r\n\t\t\t\t\tthis.drawDottedStraightLine(obj)\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * { \r\n\t\t\t...(drawText属性), \r\n\t\t\ttextDecoration: {\r\n\t\t\t\tline, //类型 同css text-decoration-line\r\n\t\t\t\tcolor, //线颜色\r\n\t\t\t\twidth, //线宽度\r\n\t\t * }\r\n\t\t * }\r\n\t\t */\r\n\t\tdrawTextDecoration(obj = {}) {\r\n\t\t\tthis.savePaintbrush()\r\n\t\t\tconst oldProps = this._data.oldPaintbrushProps, tw = this.measureText(obj.val).width, tD = obj.textDecoration, line = tD.line || 'line-through', color = tD.color || obj.color || oldProps.fillStyle || '#000000', width = tD.thickness || tD.width || (obj.fontSize ? obj.fontSize * 0.1 : false) || 1, style = tD.style || 'solide', offset = tD.offset || 0, gap = tD.gap ?? 1, fontSize = (obj.fontSize || this._data.font.fontSize)\r\n\t\t\tthis.setPaintbrush({ lineWidth: width, strokeStyle: color })\r\n\t\t\tlet y = 0\r\n\t\t\tswitch (line) {\r\n\t\t\t\tcase 'line-through':\r\n\t\t\t\t\ty = obj.y + fontSize / 2 - width / 2\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 'underline':\r\n\t\t\t\t\ty = obj.y + fontSize\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 'overline':\r\n\t\t\t\t\ty = obj.y\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\tswitch (oldProps.textBaseline) {\r\n\t\t\t\tcase 'top':\r\n\t\t\t\t\ty += width / 2\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 'bottom':\r\n\t\t\t\t\ty -= fontSize\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 'center':\r\n\t\t\t\t\ty -= fontSize / 2\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\ty += offset\r\n\t\t\tswitch (line) {\r\n\t\t\t\tcase 'line-through':\r\n\t\t\t\tcase 'underline':\r\n\t\t\t\tcase 'overline':\r\n\t\t\t\t\tthis.drawLine({ x1: obj.x, y1: y, x2: obj.x + tw, y2: y, style, gap, width, color })\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\tthis.restorePaintbrush()\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * 绘制图片\r\n\t\t */\r\n\t\tdrawImg(obj = {}) {\r\n\t\t\treturn new Promise(async (rs, rj) => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (!obj.val) {\r\n\t\t\t\t\t\tconsole.warn(`需绘制的图片为空`)\r\n\t\t\t\t\t\trs()\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst calcR = obj._calc?obj:await this.calcImg(obj)\r\n\t\t\t\t\tif(calcR?.drawImageArgs && Array.isArray(calcR.drawImageArgs)) this.ctx.drawImage(...(calcR?.drawImageArgs || []))\r\n\t\t\t\t\trs(calcR)\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\trj(error)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tcalcImg(obj = {}) {\r\n\t\t\treturn new Promise(async (rs, rj)=>{\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (!obj.val) {\r\n\t\t\t\t\t\tconsole.warn(`需绘制的图片为空`)\r\n\t\t\t\t\t\trs()\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst img = await this.loadImage(obj.val), mode = obj.mode || 'scaleToFill'\r\n\t\t\t\t\tlet arr, x = obj.x || 0, y = obj.y || 0, w = obj.width || 0, h = obj.height || 0, sw = img.width, sh = img.height, sx = 0, sy = 0\r\n\t\t\t\t\tconst get_6 = ()=>{\r\n\t\t\t\t\t\tif(isUni) {\r\n\r\n\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn [sx, sy, sw, sh, x, y, w, h]\r\n\t\t\t\t\t}\r\n\t\t\t\t\tswitch(mode) {\r\n\t\t\t\t\t\tcase 'aspectFit':\r\n\t\t\t\t\t\t\th = img.height / img.width * w\r\n\t\t\t\t\t\t\tif (h < obj.height) {\r\n\t\t\t\t\t\t\t\ty = Number(obj.y) + obj.height / 2 - h/2\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\th = obj.height\r\n\t\t\t\t\t\t\t\tw = img.width / img.height * h\r\n\t\t\t\t\t\t\t\tx = Number(obj.x) + obj.width / 2 - w/2\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tarr = get_6()\r\n\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\tcase 'aspectFill':\r\n\t\t\t\t\t\t\th = img.height / img.width * w\r\n\t\t\t\t\t\t\tif (h < obj.height) {\r\n\t\t\t\t\t\t\t\th = obj.height\r\n\t\t\t\t\t\t\t\tsx = img.width / img.height * obj.height\r\n\t\t\t\t\t\t\t\tsx = (sx - obj.width) / sx * img.width / 2\r\n\t\t\t\t\t\t\t\tsw = img.width - sx * 2\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tsy = (h - obj.height) / h * img.height / 2\r\n\t\t\t\t\t\t\t\tsh = img.height - sy * 2\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tw = obj.width\r\n\t\t\t\t\t\t\th = obj.height\r\n\t\t\t\t\t\t\tarr = get_6()\r\n\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\tcase 'widthFix':\r\n\t\t\t\t\t\t\th = obj.height = img.height / img.width * obj.width\r\n\t\t\t\t\t\t\tarr = [x, y, w, h]\r\n\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\tcase 'heightFix':\r\n\t\t\t\t\t\t\tw = obj.width = img.width / img.height * obj.height\r\n\t\t\t\t\t\t\tarr = [x, y, w, h]\r\n\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tarr = [x, y, w, h]\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarr.unshift(isUni ? img.toString() : img)\r\n\t\t\t\t\trs({ ...obj, drawImageArgs: [...arr], img, left: obj.x, top: obj.y, right: obj.x + obj.width, bottom: obj.y + obj.height, _calc: true })\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\trj(error)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * 绘制二维码\r\n\t\t * 诗小柒 的二维码生成器代码\r\n\t\t */\r\n\t\tdrawQrCode(obj = {}) {\r\n\t\t\treturn new Promise((rs, rj) => {\r\n\t\t\t\tif (!obj?.val) {\r\n\t\t\t\t\tconsole.warn(\"绘制二维码val为空\")\r\n\t\t\t\t\trs()\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\tthis.savePaintbrush()\r\n\t\t\t\tlet qrcodeAlgObjCache = [];\r\n\t\t\t\tlet options = {\r\n\t\t\t\t\ttext: String(obj.val || '') || '', // 生成内容\r\n\t\t\t\t\tsize: Number(obj.size || 0) || 200, // 二维码大小\r\n\t\t\t\t\tbackground: String(obj.background || '') || '#ffffff', // 背景色\r\n\t\t\t\t\tforeground: String(obj.foreground || '') || '#000000', // 前景色\r\n\t\t\t\t\tpdground: String(obj.pdground || '') || '#000000', // 定位角点颜色\r\n\t\t\t\t\tcorrectLevel: Number(obj.correctLevel || 0) || 3, // 容错级别\r\n\t\t\t\t\tdx: Number(obj.x || 0) || 0, // x轴距离\r\n\t\t\t\t\tdy: Number(obj.y || 0) || 0 // y轴距离\r\n\t\t\t\t}\r\n\t\t\t\tlet qrCodeAlg = null;\r\n\t\t\t\tlet d = 0;\r\n\t\t\t\tfor (var i = 0, l = qrcodeAlgObjCache.length; i < l; i++) {\r\n\t\t\t\t\td = i;\r\n\t\t\t\t\tif (qrcodeAlgObjCache[i].text == options.text && qrcodeAlgObjCache[i].text.correctLevel == options.correctLevel) {\r\n\t\t\t\t\t\tqrCodeAlg = qrcodeAlgObjCache[i].obj;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (d == l) {\r\n\t\t\t\t\tqrCodeAlg = new QRCodeAlg(options.text, options.correctLevel);\r\n\t\t\t\t\tqrcodeAlgObjCache.push({\r\n\t\t\t\t\t\ttext: options.text,\r\n\t\t\t\t\t\tcorrectLevel: options.correctLevel,\r\n\t\t\t\t\t\tobj: qrCodeAlg\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tlet getForeGround = function (config) {\r\n\t\t\t\t\tlet options = config.options;\r\n\t\t\t\t\tif (options.pdground && (\r\n\t\t\t\t\t\t(config.row > 1 && config.row < 5 && config.col > 1 && config.col < 5) ||\r\n\t\t\t\t\t\t(config.row > (config.count - 6) && config.row < (config.count - 2) && config.col > 1 && config\r\n\t\t\t\t\t\t\t.col < 5) ||\r\n\t\t\t\t\t\t(config.row > 1 && config.row < 5 && config.col > (config.count - 6) && config.col < (config.count -\r\n\t\t\t\t\t\t\t2))\r\n\t\t\t\t\t)) {\r\n\t\t\t\t\t\treturn options.pdground;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn options.foreground;\r\n\t\t\t\t}\r\n\t\t\t\tlet count = qrCodeAlg.getModuleCount();\r\n\t\t\t\tlet ratioSize = options.size;\r\n\t\t\t\tlet tileW = (ratioSize / count);\r\n\t\t\t\tlet tileH = (ratioSize / count);\r\n\t\t\t\tfor (let row = 0; row < count; row++) {\r\n\t\t\t\t\tfor (let col = 0; col < count; col++) {\r\n\t\t\t\t\t\tlet w = (((col + 1) * tileW) - (col * tileW));\r\n\t\t\t\t\t\tlet h = (((row + 1) * tileW) - (row * tileW));\r\n\t\t\t\t\t\tlet foreground = getForeGround({\r\n\t\t\t\t\t\t\trow: row,\r\n\t\t\t\t\t\t\tcol: col,\r\n\t\t\t\t\t\t\tcount: count,\r\n\t\t\t\t\t\t\toptions: options\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.setPaintbrush({ fillStyle: qrCodeAlg.modules[row][col] ? foreground : options.background });\r\n\t\t\t\t\t\tthis.ctx.fillRect(options.dx + (col * tileW), options.dy + (row * tileH), w, h);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.restorePaintbrush()\r\n\r\n\t\t\t\trs({...obj, height: obj.size, width: obj.size, left: obj.x, top: obj.y, right: obj.x + obj.width, bottom: obj.y + obj.size});\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * 圆形\r\n\t\t */\r\n\t\tsetCircle(obj = {}) {\r\n\t\t\tconst ctx = this.ctx\r\n\t\t\tlet { x, y, d, mode } = obj\r\n\t\t\tmode = mode || 'leftTop'\r\n\t\t\tconst r = d / 2\r\n\t\t\tif (obj.clip) ctx.save()\r\n\t\t\tctx.beginPath();\r\n\t\t\tswitch (mode) {\r\n\t\t\t\tcase 'leftTop':\r\n\t\t\t\t\tctx.arc(x + r, y + r, r, 0, 2 * Math.PI);\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 'center':\r\n\t\t\t\t\tctx.arc(x, y, r, 0, 2 * Math.PI);\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\tctx.closePath();\r\n\t\t\tif (obj.clip) ctx.clip()\r\n\t\t\treturn this\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * 矩形\r\n\t\t */\r\n\t\tsetRect(obj = {}) {\r\n\t\t\tconst ctx = this.ctx\r\n\t\t\tconst { x, y, r, height, width } = obj\r\n\t\t\tif (obj.clip) ctx.save()\r\n\t\t\tctx.beginPath();\r\n\t\t\tif (r && r > 0) {\r\n\t\t\t\tctx.arc(x + r, y + r, r, 1 * Math.PI, 1.5 * Math.PI);\r\n\t\t\t\tctx.lineTo(x + width - r, y);\r\n\t\t\t\tctx.arc(x + width - r, y + r, r, 1.5 * Math.PI, 0);\r\n\t\t\t\tctx.lineTo(x + width, y + height - r);\r\n\t\t\t\tctx.arc(x + width - r, y + height - r, r, 0, .5 * Math.PI);\r\n\t\t\t\tctx.lineTo(x + r, y + height);\r\n\t\t\t\tctx.arc(x + r, y + height - r, r, .5 * Math.PI, 1 * Math.PI);\r\n\t\t\t\tctx.lineTo(x, y + r);\r\n\t\t\t} else {\r\n\t\t\t\tctx.moveTo(x, y);\r\n\t\t\t\tctx.lineTo(x + width, y);\r\n\t\t\t\tctx.lineTo(x + width, y + height);\r\n\t\t\t\tctx.lineTo(x, y + height);\r\n\t\t\t\tctx.lineTo(x, y);\r\n\t\t\t}\r\n\t\t\tctx.closePath();\r\n\t\t\tif (obj.clip) ctx.clip()\r\n\t\t\treturn this\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * 加载图片\r\n\t\t */\r\n\t\tloadImage(url) {\r\n\t\t\treturn new Promise(async (resolve, reject) => {\r\n\t\t\t\tif (!url) {\r\n\t\t\t\t\tconsole.warn('加载图片url为空')\r\n\t\t\t\t\tresolve()\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\tif (imgCache[url]) {\r\n\t\t\t\t\tresolve(imgCache[url])\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\tlet img\r\n\t\t\t\ttry {\r\n\t\t\t\t\tswitch (platform) {\r\n\t\t\t\t\t\tcase 'uni':\r\n\t\t\t\t\t\t\timg = await new Promise((rs, rj) => {\r\n\t\t\t\t\t\t\t\tif (url._loaded) {\r\n\t\t\t\t\t\t\t\t\trs(url)\r\n\t\t\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif(~url.indexOf('data:image')) {\r\n\t\t\t\t\t\t\t\t\tlet tempFilePath = url, imageInfoR = {}\r\n\r\n\t\t\t\t\t\t\t\t\timgTools.base64ToPath(url)\r\n\t\t\t\t\t\t\t\t\t\t.then(t=>{\r\n\t\t\t\t\t\t\t\t\t\t\ttempFilePath = t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tuni.getImageInfo({\r\n\t\t\t\t\t\t\t\t\t\t\t\tsrc: tempFilePath,\r\n\t\t\t\t\t\t\t\t\t\t\t\tsuccess: imgInfo => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\timageInfoR = imgInfo\r\n\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst uniImg = new String(tempFilePath)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor (const i in imageInfoR) uniImg[i] = imageInfoR[i]\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tuniImg._loaded = true\r\n\t\t\t\t\t\t\t\t\t\t\t\t\trs(uniImg)\r\n\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\tfail: (err) => rj(err)\r\n\t\t\t\t\t\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t.catch(err=>{\r\n\t\t\t\t\t\t\t\t\t\t\trj(err)\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\t\t\t}else if(url.substr(0, 4) == 'http'){\r\n\t\t\t\t\t\t\t\t\tuni.downloadFile({\r\n\t\t\t\t\t\t\t\t\t\turl: url,\r\n\t\t\t\t\t\t\t\t\t\tsuccess: ({ tempFilePath }) => {\r\n\t\t\t\t\t\t\t\t\t\t\tuni.getImageInfo({\r\n\t\t\t\t\t\t\t\t\t\t\t\tsrc: tempFilePath,\r\n\t\t\t\t\t\t\t\t\t\t\t\tsuccess: imageInfoR => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst uniImg = new String(tempFilePath)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor (const i in imageInfoR) uniImg[i] = imageInfoR[i]\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tuniImg._loaded = true\r\n\t\t\t\t\t\t\t\t\t\t\t\t\trs(uniImg)\r\n\t\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\tfail: (err) => rj(err)\r\n\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tfail: (error) => rj(error)\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\tuni.getImageInfo({\r\n\t\t\t\t\t\t\t\t\t\tsrc: url,\r\n\t\t\t\t\t\t\t\t\t\tsuccess: imageInfoR => {\r\n\t\t\t\t\t\t\t\t\t\t\tconst uniImg = new String(url)\r\n\t\t\t\t\t\t\t\t\t\t\tfor (const i in imageInfoR) uniImg[i] = imageInfoR[i]\r\n\t\t\t\t\t\t\t\t\t\t\tuniImg._loaded = true\r\n\t\t\t\t\t\t\t\t\t\t\trs(uniImg)\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tfail: (err) => rj(err)\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\tcase 'web':\r\n\t\t\t\t\t\t\timg = await new Promise((rs, rj) => {\r\n\t\t\t\t\t\t\t\t/* url instanceof Image */\r\n\t\t\t\t\t\t\t\tif (typeof url != 'string') {\r\n\t\t\t\t\t\t\t\t\trs(url)\r\n\t\t\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// node 也可以用这种方式\r\n\t\t\t\t\t\t\t\tconst imgObj = new Image()\r\n\t\t\t\t\t\t\t\timgObj.onload = () => {\r\n\t\t\t\t\t\t\t\t\trs(imgObj)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\timgObj.onerror = err => {\r\n\t\t\t\t\t\t\t\t\trj(err)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\timgObj.src = url\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\tcase 'node':\r\n\t\t\t\t\t\t\timg = await new Promise((rs, rj) => {\r\n\t\t\t\t\t\t\t\t/* url instanceof nodeCanvas.Image */\r\n\t\t\t\t\t\t\t\tif (typeof url != 'string') {\r\n\t\t\t\t\t\t\t\t\trs(url)\r\n\t\t\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tnodeCanvas.loadImage(url)\r\n\t\t\t\t\t\t\t\t\t.then(res => {\r\n\t\t\t\t\t\t\t\t\t\trs(res)\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t.catch(err => {\r\n\t\t\t\t\t\t\t\t\t\trj(err)\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\treject(error)\r\n\t\t\t\t}\r\n\t\t\t\timgCache[url] = img\r\n\t\t\t\tresolve(img)\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tdrawArray(data) {\r\n\t\t\treturn new Promise(async (rs, rj)=>{\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif(!data) {\r\n\t\t\t\t\t\trj('drawArray需绘制参数不存在')\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(!Array.isArray(data)) {\r\n\t\t\t\t\t\trj('drawArray参数需要是Array')\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdata = [...data].sort((a, b)=>(a?.zIndex ?? 0) - (b?.zIndex ?? 0))\r\n\t\t\t\t\tconst arr = []\r\n\t\t\t\t\tfor(let i = 0; i < data.length; i++) {\r\n\t\t\t\t\t\tconst item = data[i]\r\n\t\t\t\t\t\tlet r\r\n\t\t\t\t\t\tswitch(typeof item) {\r\n\t\t\t\t\t\t\tcase 'function':\r\n\t\t\t\t\t\t\t\tr = item()\r\n\t\t\t\t\t\t\t\tif(typeof r?.then == 'function') r = await r\r\n\t\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\t\tcase 'object':\r\n\t\t\t\t\t\t\t\tif(Array.isArray(item)) r = await this.drawArray(item)\r\n\t\t\t\t\t\t\t\telse r = await this.drawItem(item)\r\n\t\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tarr.push({ item: item, result: r})\r\n\t\t\t\t\t}\r\n\t\t\t\t\trs(arr)\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\trj(error)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tdrawItem(obj = {}) {\r\n\t\t\treturn new Promise(async (rs, rj)=>{\r\n\t\t\t\ttry {\r\n\t\t\t\t\tlet r\r\n\t\t\t\t\tswitch(obj.type) {\r\n\t\t\t\t\t\tcase 'text':\r\n\t\t\t\t\t\t\tr = await this.drawText(obj)\r\n\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\tcase 'image':\r\n\t\t\t\t\t\t\tr = await this.drawImg(obj)\r\n\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\tcase 'qrcode':\r\n\t\t\t\t\t\t\tr = await this.drawQrCode(obj)\r\n\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\tcase 'method':\r\n\t\t\t\t\t\t\tr = this[obj.name]?.(...(obj.data?Array.isArray(obj.data)?obj.data:[obj.data]:[]))\r\n\t\t\t\t\t\t\tif(typeof r?.then == 'function') r = await r\r\n\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\tcase 'function':\r\n\t\t\t\t\t\t\tr = obj.val?.()\r\n\t\t\t\t\t\t\tif(typeof r?.then == 'function') r = await r\r\n\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t}\r\n\t\t\t\t\trs(r)\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\trj(error)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tdrawRichText(html) {\r\n\t\t\treturn new Promise(async (rs, rj)=>{\r\n\t\t\t\tif(!html) {\r\n\t\t\t\t\trj('drawRichText需绘制参数不存在')\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\tif(typeof html == 'string') html = htmlParse(html)\r\n\t\t\t\tconst result = []\r\n\t\t\t\tfunction run(arr, parent) {\r\n\t\t\t\t\treturn new Promise(async (res, rej)=>{\r\n\t\t\t\t\t\tfor(let i = 0; i < arr.length; i++) {\r\n\t\t\t\t\t\t\tconst item = arr[i]\r\n\r\n\t\t\t\t\t\t\tif(item.type == 'text') {\r\n\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tswitch(item.name) {\r\n\t\t\t\t\t\t\t\t\tcase 'img':\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\t\t\tresult.push(item)\r\n\r\n\t\t\t\t\t\t\tif(item.children?.length) {\r\n\t\t\t\t\t\t\t\titem.__handle = function(obj) {\r\n\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\tawait run(item.children, item)\r\n\t\t\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\t\t\trej(error)\r\n\t\t\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tres(result)\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\trs({ html: html, htmlParses: await run(html) })\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\trj(error)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tfunction filterPaintbrushProps(obj) {\r\n\t\tswitch (obj?.textBaseline) {\r\n\t\t\tcase 'normal':\r\n\t\t\t\tif (isUni) obj.textBaseline = 'alphabetic'\r\n\t\t\t\tbreak\r\n\t\t\tcase 'hanging':\r\n\t\t\t\tif (isUni) obj.textBaseline = 'top'\r\n\t\t\t\tbreak\r\n\t\t\tcase 'ideographic':\r\n\t\t\t\tif (isUni) obj.textBaseline = 'bottom'\r\n\t\t\t\tbreak\r\n\t\t}\r\n\r\n\t\tswitch (obj?.textAlign) {\r\n\t\t\tcase 'start':\r\n\t\t\t\tobj.textAlign = 'left'\r\n\t\t\t\tbreak\r\n\t\t\tcase 'end':\r\n\t\t\t\tobj.textAlign = 'right'\r\n\t\t\t\tbreak\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * 驼峰转连字符\r\n\t */\r\n\tfunction hump2Hyphen(s) {\r\n\t\treturn s.replace(/([A-Z])/g, '-$1').toLowerCase()\r\n\t}\r\n\r\n\t/**\r\n\t * 连字符转驼峰\r\n\t */\r\n\tfunction hyphen2Hump(s) {\r\n\t\tif(!s) return ''\r\n\t\tconst arr= s.split(\"-\");\r\n\t\tfor(var i=1;i<arr.length;i++){\r\n\t\t\tarr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);\r\n\t\t}\r\n\t\treturn arr.join(\"\");\r\n\t}\r\n\r\n\t/**\r\n\t * 原文链接:https://blog.csdn.net/kingviewer/article/details/120346353\r\n\t * 获取指定两点间圆弧上的点\r\n\t * @param x1 起点经度\r\n\t * @param y1 起点纬度\r\n\t * @param x2 终点经度\r\n\t * @param y2 终点纬度\r\n\t * @param pointCount 要获取的点的数量\r\n\t * @param level 弧度大小标定值,0~∞ 0为半圆,越大越接近直线\r\n\t * @returns {*[x, y]} 从起点到终点的顺序排列的结果点经纬度数组\r\n\t */\r\n\tfunction getPoints(x1, y1, x2, y2, pointCount, level) {\r\n\t\tlet a, b, rSquare, k, kv, points = [];\r\n\t\tif (x1 === x2) {\r\n\t\t\ta = x1 + (y2 - y1) * level\r\n\t\t\tb = y1 + (y2 - y1) / 2;\r\n\t\t\trSquare = (x1 - a) ** 2 + (y1 - b) ** 2;\r\n\t\t} else if (y1 === y2) {\r\n\t\t\ta = x1 + (x2 - x1) / 2;\r\n\t\t\tb = y1 - (x2 - x1) * level\r\n\t\t\trSquare = (x1 - a) ** 2 + (y1 - b) ** 2;\r\n\t\t} else {\r\n\t\t\tlet xc = (x1 + x2) / 2, yc = (y1 + y2) / 2,\r\n\t\t\t\tlenSquare = ((x2 - x1) ** 2 + (y2 - y1) ** 2) * (level ** 2);\r\n\t\t\tk = (x2 - x1) / (y1 - y2);\r\n\t\t\tlet l = yc - k * xc;\r\n\t\t\tlet a1 = 1 + k ** 2, b1 = 2 * k * (l - yc) - 2 * xc, c1 = xc ** 2 + (l - yc) ** 2 - lenSquare;\r\n\t\t\tkv = -1 / k;\r\n\t\t\ta = (-b1 + Math.sqrt(b1 ** 2 - 4 * a1 * c1) * ((kv > 0 && x2 > x1 || kv < 0 && x2 < x1) ? 1 : -1)) / (2 * a1);\r\n\t\t\tb = k * a + l;\r\n\t\t\trSquare = (x1 - a) ** 2 + (y1 - b) ** 2;\r\n\t\t}\r\n\r\n\t\tif (x1 === x2 || Math.abs(kv) > 1) {\r\n\t\t\tlet yDistance = y2 - y1;\r\n\t\t\tlet yDis = yDistance / (pointCount + 1);\r\n\t\t\tfor (let i = 0; i < pointCount; i++) {\r\n\t\t\t\tlet y = y1 + yDis * (i + 1);\r\n\t\t\t\tlet x = Math.sqrt(rSquare - (y - b) ** 2) * (y2 > y1 ? -1 : 1) + a;\r\n\t\t\t\tpoints.push([x, y]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlet xDistance = x2 - x1;\r\n\t\t\tlet xDis = xDistance / (pointCount + 1);\r\n\t\t\tfor (let i = 0; i < pointCount; i++) {\r\n\t\t\t\tlet x = x1 + xDis * (i + 1);\r\n\t\t\t\tlet y = Math.sqrt(rSquare - (x - a) ** 2) * (x2 > x1 ? 1 : -1) + b;\r\n\t\t\t\tpoints.push([x, y]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn points;\r\n\t}\r\n\r\n\tvar QRCodeAlg = (function () {\r\n\t\tfunction unicodeFormat8(code) { var c0, c1, c2; if (code < 128) { return [code] } else if (code < 2048) { c0 = 192 + (code >> 6); c1 = 128 + (code & 63); return [c0, c1] } else { c0 = 224 + (code >> 12); c1 = 128 + (code >> 6 & 63); c2 = 128 + (code & 63); return [c0, c1, c2] } } function getUTF8Bytes(string) { var utf8codes = []; for (var i = 0; i < string.length; i++) { var code = string.charCodeAt(i); var utf8 = unicodeFormat8(code); for (var j = 0; j < utf8.length; j++) { utf8codes.push(utf8[j]) } } return utf8codes } function QRCodeAlg(data, errorCorrectLevel) { this.typeNumber = -1; this.errorCorrectLevel = errorCorrectLevel; this.modules = null; this.moduleCount = 0; this.dataCache = null; this.rsBlocks = null; this.totalDataCount = -1; this.data = data; this.utf8bytes = getUTF8Bytes(data); this.make() } QRCodeAlg.prototype = { constructor: QRCodeAlg, getModuleCount: function () { return this.moduleCount }, make: function () { this.getRightType(); this.dataCache = this.createData(); this.createQrcode() }, makeImpl: function (maskPattern) { this.moduleCount = this.typeNumber * 4 + 17; this.modules = new Array(this.moduleCount); for (var row = 0; row < this.moduleCount; row++) { this.modules[row] = new Array(this.moduleCount) } this.setupPositionProbePattern(0, 0); this.setupPositionProbePattern(this.moduleCount - 7, 0); this.setupPositionProbePattern(0, this.moduleCount - 7); this.setupPositionAdjustPattern(); this.setupTimingPattern(); this.setupTypeInfo(true, maskPattern); if (this.typeNumber >= 7) { this.setupTypeNumber(true) } this.mapData(this.dataCache, maskPattern) }, setupPositionProbePattern: function (row, col) { for (var r = -1; r <= 7; r++) { if (row + r <= -1 || this.moduleCount <= row + r) continue; for (var c = -1; c <= 7; c++) { if (col + c <= -1 || this.moduleCount <= col + c) continue; if ((0 <= r && r <= 6 && (c == 0 || c == 6)) || (0 <= c && c <= 6 && (r == 0 || r == 6)) || (2 <= r && r <= 4 && 2 <= c && c <= 4)) { this.modules[row + r][col + c] = true } else { this.modules[row + r][col + c] = false } } } }, createQrcode: function () { var minLostPoint = 0; var pattern = 0; var bestModules = null; for (var i = 0; i < 8; i++) { this.makeImpl(i); var lostPoint = QRUtil.getLostPoint(this); if (i == 0 || minLostPoint > lostPoint) { minLostPoint = lostPoint; pattern = i; bestModules = this.modules } } this.modules = bestModules; this.setupTypeInfo(false, pattern); if (this.typeNumber >= 7) { this.setupTypeNumber(false) } }, setupTimingPattern: function () { for (var r = 8; r < this.moduleCount - 8; r++) { if (this.modules[r][6] != null) { continue } this.modules[r][6] = (r % 2 == 0); if (this.modules[6][r] != null) { continue } this.modules[6][r] = (r % 2 == 0) } }, setupPositionAdjustPattern: function () { var pos = QRUtil.getPatternPosition(this.typeNumber); for (var i = 0; i < pos.length; i++) { for (var j = 0; j < pos.length; j++) { var row = pos[i]; var col = pos[j]; if (this.modules[row][col] != null) { continue } for (var r = -2; r <= 2; r++) { for (var c = -2; c <= 2; c++) { if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) { this.modules[row + r][col + c] = true } else { this.modules[row + r][col + c] = false } } } } } }, setupTypeNumber: function (test) { var bits = QRUtil.getBCHTypeNumber(this.typeNumber); for (var i = 0; i < 18; i++) { var mod = (!test && ((bits >> i) & 1) == 1); this.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod; this.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod } }, setupTypeInfo: function (test, maskPattern) { var data = (QRErrorCorrectLevel[this.errorCorrectLevel] << 3) | maskPattern; var bits = QRUtil.getBCHTypeInfo(data); for (var i = 0; i < 15; i++) { var mod = (!test && ((bits >> i) & 1) == 1); if (i < 6) { this.modules[i][8] = mod } else if (i < 8) { this.modules[i + 1][8] = mod } else { this.modules[this.moduleCount - 15 + i][8] = mod } var mod = (!test && ((bits >> i) & 1) == 1); if (i < 8) { this.modules[8][this.moduleCount - i - 1] = mod } else if (i < 9) { this.modules[8][15 - i - 1 + 1] = mod } else { this.modules[8][15 - i - 1] = mod } } this.modules[this.moduleCount - 8][8] = (!test) }, createData: function () { var buffer = new QRBitBuffer(); var lengthBits = this.typeNumber > 9 ? 16 : 8; buffer.put(4, 4); buffer.put(this.utf8bytes.length, lengthBits); for (var i = 0, l = this.utf8bytes.length; i < l; i++) { buffer.put(this.utf8bytes[i], 8) } if (buffer.length + 4 <= this.totalDataCount * 8) { buffer.put(0, 4) } while (buffer.length % 8 != 0) { buffer.putBit(false) } while (true) { if (buffer.length >= this.totalDataCount * 8) { break } buffer.put(QRCodeAlg.PAD0, 8); if (buffer.length >= this.totalDataCount * 8) { break } buffer.put(QRCodeAlg.PAD1, 8) } return this.createBytes(buffer) }, createBytes: function (buffer) { var offset = 0; var maxDcCount = 0; var maxEcCount = 0; var length = this.rsBlock.length / 3; var rsBlocks = new Array(); for (var i = 0; i < length; i++) { var count = this.rsBlock[i * 3 + 0]; var totalCount = this.rsBlock[i * 3 + 1]; var dataCount = this.rsBlock[i * 3 + 2]; for (var j = 0; j < count; j++) { rsBlocks.push([dataCount, totalCount]) } } var dcdata = new Array(rsBlocks.length); var ecdata = new Array(rsBlocks.length); for (var r = 0; r < rsBlocks.length; r++) { var dcCount = rsBlocks[r][0]; var ecCount = rsBlocks[r][1] - dcCount; maxDcCount = Math.max(maxDcCount, dcCount); maxEcCount = Math.max(maxEcCount, ecCount); dcdata[r] = new Array(dcCount); for (var i = 0; i < dcdata[r].length; i++) { dcdata[r][i] = 0xff & buffer.buffer[i + offset] } offset += dcCount; var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount); var rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1); var modPoly = rawPoly.mod(rsPoly); ecdata[r] = new Array(rsPoly.getLength() - 1); for (var i = 0; i < ecdata[r].length; i++) { var modIndex = i + modPoly.getLength() - ecdata[r].length; ecdata[r][i] = (modIndex >= 0) ? modPoly.get(modIndex) : 0 } } var data = new Array(this.totalDataCount); var index = 0; for (var i = 0; i < maxDcCount; i++) { for (var r = 0; r < rsBlocks.length; r++) { if (i < dcdata[r].length) { data[index++] = dcdata[r][i] } } } for (var i = 0; i < maxEcCount; i++) { for (var r = 0; r < rsBlocks.length; r++) { if (i < ecdata[r].length) { data[index++] = ecdata[r][i] } } } return data }, mapData: function (data, maskPattern) { var inc = -1; var row = this.moduleCount - 1; var bitIndex = 7; var byteIndex = 0; for (var col = this.moduleCount - 1; col > 0; col -= 2) { if (col == 6) col--; while (true) { for (var c = 0; c < 2; c++) { if (this.modules[row][col - c] == null) { var dark = false; if (byteIndex < data.length) { dark = (((data[byteIndex] >>> bitIndex) & 1) == 1) } var mask = QRUtil.getMask(maskPattern, row, col - c); if (mask) { dark = !dark } this.modules[row][col - c] = dark; bitIndex--; if (bitIndex == -1) { byteIndex++; bitIndex = 7 } } } row += inc; if (row < 0 || this.moduleCount <= row) { row -= inc; inc = -inc; break } } } } }; QRCodeAlg.PAD0 = 0xEC; QRCodeAlg.PAD1 = 0x11; var QRErrorCorrectLevel = [1, 0, 3, 2]; var QRMaskPattern = { PATTERN000: 0, PATTERN001: 1, PATTERN010: 2, PATTERN011: 3, PATTERN100: 4, PATTERN101: 5, PATTERN110: 6, PATTERN111: 7 }; var QRUtil = { PATTERN_POSITION_TABLE: [[], [6, 18], [6, 22], [6, 26], [6, 30], [6, 34], [6, 22, 38], [6, 24, 42], [6, 26, 46], [6, 28, 50], [6, 30, 54], [6, 32, 58], [6, 34, 62], [6, 26, 46, 66], [6, 26, 48, 70], [6, 26, 50, 74], [6, 30, 54, 78], [6, 30, 56, 82], [6, 30, 58, 86], [6, 34, 62, 90], [6, 28, 50, 72, 94], [6, 26, 50, 74, 98], [6, 30, 54, 78, 102], [6, 28, 54, 80, 106], [6, 32, 58, 84, 110], [6, 30, 58, 86, 114], [6, 34, 62, 90, 118], [6, 26, 50, 74, 98, 122], [6, 30, 54, 78, 102, 126], [6, 26, 52, 78, 104, 130], [6, 30, 56, 82, 108, 134], [6, 34, 60, 86, 112, 138], [6, 30, 58, 86, 114, 142], [6, 34, 62, 90, 118, 146], [6, 30, 54, 78, 102, 126, 150], [6, 24, 50, 76, 102, 128, 154], [6, 28, 54, 80, 106, 132, 158], [6, 32, 58, 84, 110, 136, 162], [6, 26, 54, 82, 110, 138, 166], [6, 30, 58, 86, 114, 142, 170]], G15: (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0), G18: (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0), G15_MASK: (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1), getBCHTypeInfo: function (data) { var d = data << 10; while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) { d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15))) } return ((data << 10) | d) ^ QRUtil.G15_MASK }, getBCHTypeNumber: function (data) { var d = data << 12; while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) { d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18))) } return (data << 12) | d }, getBCHDigit: function (data) { var digit = 0; while (data != 0) { digit++; data >>>= 1 } return digit }, getPatternPosition: function (typeNumber) { return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1] }, getMask: function (maskPattern, i, j) { switch (maskPattern) { case QRMaskPattern.PATTERN000: return (i + j) % 2 == 0; case QRMaskPattern.PATTERN001: return i % 2 == 0; case QRMaskPattern.PATTERN010: return j % 3 == 0; case QRMaskPattern.PATTERN011: return (i + j) % 3 == 0; case QRMaskPattern.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0; case QRMaskPattern.PATTERN101: return (i * j) % 2 + (i * j) % 3 == 0; case QRMaskPattern.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 == 0; case QRMaskPattern.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 == 0; default: throw new Error(\"bad maskPattern:\" + maskPattern); } }, getErrorCorrectPolynomial: function (errorCorrectLength) { var a = new QRPolynomial([1], 0); for (var i = 0; i < errorCorrectLength; i++) { a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0)) } return a }, getLostPoint: function (qrCode) { var moduleCount = qrCode.getModuleCount(), lostPoint = 0, darkCount = 0; for (var row = 0; row < moduleCount; row++) { var sameCount = 0; var head = qrCode.modules[row][0]; for (var col = 0; col < moduleCount; col++) { var current = qrCode.modules[row][col]; if (col < moduleCount - 6) { if (current && !qrCode.modules[row][col + 1] && qrCode.modules[row][col + 2] && qrCode.modules[row][col + 3] && qrCode.modules[row][col + 4] && !qrCode.modules[row][col + 5] && qrCode.modules[row][col + 6]) { if (col < moduleCount - 10) { if (qrCode.modules[row][col + 7] && qrCode.modules[row][col + 8] && qrCode.modules[row][col + 9] && qrCode.modules[row][col + 10]) { lostPoint += 40 } } else if (col > 3) { if (qrCode.modules[row][col - 1] && qrCode.modules[row][col - 2] && qrCode.modules[row][col - 3] && qrCode.modules[row][col - 4]) { lostPoint += 40 } } } } if ((row < moduleCount - 1) && (col < moduleCount - 1)) { var count = 0; if (current) count++; if (qrCode.modules[row + 1][col]) count++; if (qrCode.modules[row][col + 1]) count++; if (qrCode.modules[row + 1][col + 1]) count++; if (count == 0 || count == 4) { lostPoint += 3 } } if (head ^ current) { sameCount++ } else { head = current; if (sameCount >= 5) { lostPoint += (3 + sameCount - 5) } sameCount = 1 } if (current) { darkCount++ } } } for (var col = 0; col < moduleCount; col++) { var sameCount = 0; var head = qrCode.modules[0][col]; for (var row = 0; row < moduleCount; row++) { var current = qrCode.modules[row][col]; if (row < moduleCount - 6) { if (current && !qrCode.modules[row + 1][col] && qrCode.modules[row + 2][col] && qrCode.modules[row + 3][col] && qrCode.modules[row + 4][col] && !qrCode.modules[row + 5][col] && qrCode.modules[row + 6][col]) { if (row < moduleCount - 10) { if (qrCode.modules[row + 7][col] && qrCode.modules[row + 8][col] && qrCode.modules[row + 9][col] && qrCode.modules[row + 10][col]) { lostPoint += 40 } } else if (row > 3) { if (qrCode.modules[row - 1][col] && qrCode.modules[row - 2][col] && qrCode.modules[row - 3][col] && qrCode.modules[row - 4][col]) { lostPoint += 40 } } } } if (head ^ current) { sameCount++ } else { head = current; if (sameCount >= 5) { lostPoint += (3 + sameCount - 5) } sameCount = 1 } } } var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5; lostPoint += ratio * 10; return lostPoint } }; var QRMath = { glog: function (n) { if (n < 1) { throw new Error(\"glog(\" + n + \")\"); } return QRMath.LOG_TABLE[n] }, gexp: function (n) { while (n < 0) { n += 255 } while (n >= 256) { n -= 255 } return QRMath.EXP_TABLE[n] }, EXP_TABLE: new Array(256), LOG_TABLE: new Array(256) }; for (var i = 0; i < 8; i++) { QRMath.EXP_TABLE[i] = 1 << i } for (var i = 8; i < 256; i++) { QRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath.EXP_TABLE[i - 8] } for (var i = 0; i < 255; i++) { QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i } function QRPolynomial(num, shift) { if (num.length == undefined) { throw new Error(num.length + \"/\" + shift); } var offset = 0; while (offset < num.length && num[offset] == 0) { offset++ } this.num = new Array(num.length - offset + shift); for (var i = 0; i < num.length - offset; i++) { this.num[i] = num[i + offset] } } QRPolynomial.prototype = { get: function (index) { return this.num[index] }, getLength: function () { return this.num.length }, multiply: function (e) { var num = new Array(this.getLength() + e.getLength() - 1); for (var i = 0; i < this.getLength(); i++) { for (var j = 0; j < e.getLength(); j++) { num[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i)) + QRMath.glog(e.get(j))) } } return new QRPolynomial(num, 0) }, mod: function (e) { var tl = this.getLength(), el = e.getLength(); if (tl - el < 0) { return this } var num = new Array(tl); for (var i = 0; i < tl; i++) { num[i] = this.get(i) } while (num.length >= el) { var ratio = QRMath.glog(num[0]) - QRMath.glog(e.get(0)); for (var i = 0; i < e.getLength(); i++) { num[i] ^= QRMath.gexp(QRMath.glog(e.get(i)) + ratio) } while (num[0] == 0) { num.shift() } } return new QRPolynomial(num, 0) } }; var RS_BLOCK_TABLE = [[1, 26, 19], [1, 26, 16], [1, 26, 13], [1, 26, 9], [1, 44, 34], [1, 44, 28], [1, 44, 22], [1, 44, 16], [1, 70, 55], [1, 70, 44], [2, 35, 17], [2, 35, 13], [1, 100, 80], [2, 50, 32], [2, 50, 24], [4, 25, 9], [1, 134, 108], [2, 67, 43], [2, 33, 15, 2, 34, 16], [2, 33, 11, 2, 34, 12], [2, 86, 68], [4, 43, 27], [4, 43, 19], [4, 43, 15], [2, 98, 78], [4, 49, 31], [2, 32, 14, 4, 33, 15], [4, 39, 13, 1, 40, 14], [2, 121, 97], [2, 60, 38, 2, 61, 39], [4, 40, 18, 2, 41, 19], [4, 40, 14, 2, 41, 15], [2, 146, 116], [3, 58, 36, 2, 59, 37], [4, 36, 16, 4, 37, 17], [4, 36, 12, 4, 37, 13], [2, 86, 68, 2, 87, 69], [4, 69, 43, 1, 70, 44], [6, 43, 19, 2, 44, 20], [6, 43, 15, 2, 44, 16], [4, 101, 81], [1, 80, 50, 4, 81, 51], [4, 50, 22, 4, 51, 23], [3, 36, 12, 8, 37, 13], [2, 116, 92, 2, 117, 93], [6, 58, 36, 2, 59, 37], [4, 46, 20, 6, 47, 21], [7, 42, 14, 4, 43, 15], [4, 133, 107], [8, 59, 37, 1, 60, 38], [8, 44, 20, 4, 45, 21], [12, 33, 11, 4, 34, 12], [3, 145, 115, 1, 146, 116], [4, 64, 40, 5, 65, 41], [11, 36, 16, 5, 37, 17], [11, 36, 12, 5, 37, 13], [5, 109, 87, 1, 110, 88], [5, 65, 41, 5, 66, 42], [5, 54, 24, 7, 55, 25], [11, 36, 12], [5, 122, 98, 1, 123, 99], [7, 73, 45, 3, 74, 46], [15, 43, 19, 2, 44, 20], [3, 45, 15, 13, 46, 16], [1, 135, 107, 5, 136, 108], [10, 74, 46, 1, 75, 47], [1, 50, 22, 15, 51, 23], [2, 42, 14, 17, 43, 15], [5, 150, 120, 1, 151, 121], [9, 69, 43, 4, 70, 44], [17, 50, 22, 1, 51, 23], [2, 42, 14, 19, 43, 15], [3, 141, 113, 4, 142, 114], [3, 70, 44, 11, 71, 45], [17, 47, 21, 4, 48, 22], [9, 39, 13, 16, 40, 14], [3, 135, 107, 5, 136, 108], [3, 67, 41, 13, 68, 42], [15, 54, 24, 5, 55, 25], [15, 43, 15, 10, 44, 16], [4, 144, 116, 4, 145, 117], [17, 68, 42], [17, 50, 22, 6, 51, 23], [19, 46, 16, 6, 47, 17], [2, 139, 111, 7, 140, 112], [17, 74, 46], [7, 54, 24, 16, 55, 25], [34, 37, 13], [4, 151, 121, 5, 152, 122], [4, 75, 47, 14, 76, 48], [11, 54, 24, 14, 55, 25], [16, 45, 15, 14, 46, 16], [6, 147, 117, 4, 148, 118], [6, 73, 45, 14, 74, 46], [11, 54, 24, 16, 55, 25], [30, 46, 16, 2, 47, 17], [8, 132, 106, 4, 133, 107], [8, 75, 47, 13, 76, 48], [7, 54, 24, 22, 55, 25], [22, 45, 15, 13, 46, 16], [10, 142, 114, 2, 143, 115], [19, 74, 46, 4, 75, 47], [28, 50, 22, 6, 51, 23], [33, 46, 16, 4, 47, 17], [8, 152, 122, 4, 153, 123], [22, 73, 45, 3, 74, 46], [8, 53, 23, 26, 54, 24], [12, 45, 15, 28, 46, 16], [3, 147, 117, 10, 148, 118], [3, 73, 45, 23, 74, 46], [4, 54, 24, 31, 55, 25], [11, 45, 15, 31, 46, 16], [7, 146, 116, 7, 147, 117], [21, 73, 45, 7, 74, 46], [1, 53, 23, 37, 54, 24], [19, 45, 15, 26, 46, 16], [5, 145, 115, 10, 146, 116], [19, 75, 47, 10, 76, 48], [15, 54, 24, 25, 55, 25], [23, 45, 15, 25, 46, 16], [13, 145, 115, 3, 146, 116], [2, 74, 46, 29, 75, 47], [42, 54, 24, 1, 55, 25], [23, 45, 15, 28, 46, 16], [17, 145, 115], [10, 74, 46, 23, 75, 47], [10, 54, 24, 35, 55, 25], [19, 45, 15, 35, 46, 16], [17, 145, 115, 1, 146, 116], [14, 74, 46, 21, 75, 47], [29, 54, 24, 19, 55, 25], [11, 45, 15, 46, 46, 16], [13, 145, 115, 6, 146, 116], [14, 74, 46, 23, 75, 47], [44, 54, 24, 7, 55, 25], [59, 46, 16, 1, 47, 17], [12, 151, 121, 7, 152, 122], [12, 75, 47, 26, 76, 48], [39, 54, 24, 14, 55, 25], [22, 45, 15, 41, 46, 16], [6, 151, 121, 14, 152, 122], [6, 75, 47, 34, 76, 48], [46, 54, 24, 10, 55, 25], [2, 45, 15, 64, 46, 16], [17, 152, 122, 4, 153, 123], [29, 74, 46, 14, 75, 47], [49, 54, 24, 10, 55, 25], [24, 45, 15, 46, 46, 16], [4, 152, 122, 18, 153, 123], [13, 74, 46, 32, 75, 47], [48, 54, 24, 14, 55, 25], [42, 45, 15, 32, 46, 16], [20, 147, 117, 4, 148, 118], [40, 75, 47, 7, 76, 48], [43, 54, 24, 22, 55, 25], [10, 45, 15, 67, 46, 16], [19, 148, 118, 6, 149, 119], [18, 75, 47, 31, 76, 48], [34, 54, 24, 34, 55, 25], [20, 45, 15, 61, 46, 16]]; QRCodeAlg.prototype.getRightType = function () { for (var typeNumber = 1; typeNumber < 41; typeNumber++) { var rsBlock = RS_BLOCK_TABLE[(typeNumber - 1) * 4 + this.errorCorrectLevel]; if (rsBlock == undefined) { throw new Error(\"bad rs block @ typeNumber:\" + typeNumber + \"/errorCorrectLevel:\" + this.errorCorrectLevel); } var length = rsBlock.length / 3; var totalDataCount = 0; for (var i = 0; i < length; i++) { var count = rsBlock[i * 3 + 0]; var dataCount = rsBlock[i * 3 + 2]; totalDataCount += dataCount * count } var lengthBytes = typeNumber > 9 ? 2 : 1; if (this.utf8bytes.length + lengthBytes < totalDataCount || typeNumber == 40) { this.typeNumber = typeNumber; this.rsBlock = rsBlock; this.totalDataCount = totalDataCount; break } } }; function QRBitBuffer() { this.buffer = new Array(); this.length = 0 } QRBitBuffer.prototype = { get: function (index) { var bufIndex = Math.floor(index / 8); return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) }, put: function (num, length) { for (var i = 0; i < length; i++) { this.putBit(((num >>> (length - i - 1)) & 1)) } }, putBit: function (bit) { var bufIndex = Math.floor(this.length / 8); if (this.buffer.length <= bufIndex) { this.buffer.push(0) } if (bit) { this.buffer[bufIndex] |= (0x80 >>> (this.length % 8)) } this.length++ } };\r\n\r\n\t\treturn QRCodeAlg\r\n\t})()\r\n\r\n\tvar htmlParse = (function () {\r\n\t\tvar startTag=/^<([-A-Za-z0-9_]+)((?:\\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\\s*=\\s*(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>\\s]+))?)*)\\s*(\\/?)>/;var endTag=/^<\\/([-A-Za-z0-9_]+)[^>]*>/;var attr=/([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|([^>\\s]+)))?/g;var empty=makeMap('area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr');var block=makeMap('a,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video');var inline=makeMap('abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var');var closeSelf=makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr');var fillAttrs=makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected');var special=makeMap('script,style');function HTMLParser(html,handler){var index;var chars;var match;var stack=[];var last=html;stack.last=function(){return this[this.length-1];};while(html){chars=true;if(!stack.last()||!special[stack.last()]){if(html.indexOf('<!--')==0){index=html.indexOf('-->');if(index>=0){if(handler.comment){handler.comment(html.substring(4,index));}\r\n\t\thtml=html.substring(index+3);chars=false;}}else if(html.indexOf('</')==0){match=html.match(endTag);if(match){html=html.substring(match[0].length);match[0].replace(endTag,parseEndTag);chars=false;}}else if(html.indexOf('<')==0){match=html.match(startTag);if(match){html=html.substring(match[0].length);match[0].replace(startTag,parseStartTag);chars=false;}}\r\n\t\tif(chars){index=html.indexOf('<');var text=index<0?html:html.substring(0,index);html=index<0?'':html.substring(index);if(handler.chars){handler.chars(text);}}}else{html=html.replace(new RegExp('([\\\\s\\\\S]*?)<\\/'+stack.last()+'[^>]*>'),function(all,text){text=text.replace(/<!--([\\s\\S]*?)-->|<!\\[CDATA\\[([\\s\\S]*?)]]>/g,'$1$2');if(handler.chars){handler.chars(text);}\r\n\t\treturn'';});parseEndTag('',stack.last());}\r\n\t\tif(html==last){throw'Parse Error: '+html;}\r\n\t\tlast=html;}\r\n\t\tparseEndTag();function parseStartTag(tag,tagName,rest,unary){tagName=tagName.toLowerCase();if(block[tagName]){while(stack.last()&&inline[stack.last()]){parseEndTag('',stack.last());}}\r\n\t\tif(closeSelf[tagName]&&stack.last()==tagName){parseEndTag('',tagName);}\r\n\t\tunary=empty[tagName]||!!unary;if(!unary){stack.push(tagName);}\r\n\t\tif(handler.start){var attrs=[];rest.replace(attr,function(match,name){var value=arguments[2]?arguments[2]:arguments[3]?arguments[3]:arguments[4]?arguments[4]:fillAttrs[name]?name:'';attrs.push({name:name,value:value,escaped:value.replace(/(^|[^\\\\])\"/g,'$1\\\\\\\"')});});if(handler.start){handler.start(tagName,attrs,unary);}}}\r\n\t\tfunction parseEndTag(tag,tagName){if(!tagName){var pos=0;}\r\n\t\telse{for(var pos=stack.length-1;pos>=0;pos--){if(stack[pos]==tagName){break;}}}\r\n\t\tif(pos>=0){for(var i=stack.length-1;i>=pos;i--){if(handler.end){handler.end(stack[i]);}}\r\n\t\tstack.length=pos;}}}\r\n\t\tfunction makeMap(str){var obj={};var items=str.split(',');for(var i=0;i<items.length;i++){obj[items[i]]=true;}\r\n\t\treturn obj;}\r\n\t\tfunction removeDOCTYPE(html){return html.replace(/<\\?xml.*\\?>\\n/,'').replace(/<!doctype.*>\\n/,'').replace(/<!DOCTYPE.*>\\n/,'');}\r\n\t\tfunction parseAttrs(attrs){return attrs.reduce(function(pre,attr){var value=attr.value;var name=attr.name;if(pre[name]){pre[name]=pre[name]+\" \"+value;}else{pre[name]=value;}\r\n\t\treturn pre;},{});}\r\n\t\tfunction parseHtml(html){html=removeDOCTYPE(html);var stacks=[];var results={node:'root',children:[]};HTMLParser(html,{start:function start(tag,attrs,unary){var node={name:tag};if(attrs.length!==0){node.attrs=parseAttrs(attrs);}\r\n\t\tif(unary){var parent=stacks[0]||results;if(!parent.children){parent.children=[];}\r\n\t\tparent.children.push(node);}else{stacks.unshift(node);}},end:function end(tag){var node=stacks.shift();if(node.name!==tag)console.error('invalid state: mismatch end tag');if(stacks.length===0){results.children.push(node);}else{var parent=stacks[0];if(!parent.children){parent.children=[];}\r\n\t\tparent.children.push(node);}},chars:function chars(text){var node={type:'text',text:text};if(stacks.length===0){results.children.push(node);}else{var parent=stacks[0];if(!parent.children){parent.children=[];}\r\n\t\tparent.children.push(node);}},comment:function comment(text){var node={node:'comment',text:text};var parent=stacks[0];if(!parent.children){parent.children=[];}\r\n\t\tparent.children.push(node);}});return results.children;}\r\n\t\treturn parseHtml;\r\n\t})()\r\n\r\n\tvar imgTools = (function () {\r\n\t\tfunction getLocalFilePath(path) {\r\n\t\t if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path.indexOf('_downloads') === 0) {\r\n\t\t return path\r\n\t\t }\r\n\t\t if (path.indexOf('file://') === 0) {\r\n\t\t return path\r\n\t\t }\r\n\t\t if (path.indexOf('/storage/emulated/0/') === 0) {\r\n\t\t return path\r\n\t\t }\r\n\t\t if (path.indexOf('/') === 0) {\r\n\t\t var localFilePath = plus.io.convertAbsoluteFileSystem(path)\r\n\t\t if (localFilePath !== path) {\r\n\t\t return localFilePath\r\n\t\t } else {\r\n\t\t path = path.substr(1)\r\n\t\t }\r\n\t\t }\r\n\t\t return '_www/' + path\r\n\t\t}\r\n\t\t\r\n\t\tfunction dataUrlToBase64(str) {\r\n\t\t var array = str.split(',')\r\n\t\t return array[array.length - 1]\r\n\t\t}\r\n\t\t\r\n\t\tvar index = 0\r\n\t\tfunction getNewFileId() {\r\n\t\t return Date.now() + String(index++)\r\n\t\t}\r\n\t\t\r\n\t\tfunction biggerThan(v1, v2) {\r\n\t\t var v1Array = v1.split('.')\r\n\t\t var v2Array = v2.split('.')\r\n\t\t var update = false\r\n\t\t for (var index = 0; index < v2Array.length; index++) {\r\n\t\t var diff = v1Array[index] - v2Array[index]\r\n\t\t if (diff !== 0) {\r\n\t\t update = diff > 0\r\n\t\t break\r\n\t\t }\r\n\t\t }\r\n\t\t return update\r\n\t\t}\r\n\t\t\r\n\t\tfunction pathToBase64(path) {\r\n\t\t return new Promise(function(resolve, reject) {\r\n\t\t if (typeof window === 'object' && 'document' in window) {\r\n\t\t if (typeof FileReader === 'function') {\r\n\t\t var xhr = new XMLHttpRequest()\r\n\t\t xhr.open('GET', path, true)\r\n\t\t xhr.responseType = 'blob'\r\n\t\t xhr.onload = function() {\r\n\t\t if (this.status === 200) {\r\n\t\t let fileReader = new FileReader()\r\n\t\t fileReader.onload = function(e) {\r\n\t\t resolve(e.target.result)\r\n\t\t }\r\n\t\t fileReader.onerror = reject\r\n\t\t fileReader.readAsDataURL(this.response)\r\n\t\t }\r\n\t\t }\r\n\t\t xhr.onerror = reject\r\n\t\t xhr.send()\r\n\t\t return\r\n\t\t }\r\n\t\t var canvas = document.createElement('canvas')\r\n\t\t var c2x = canvas.getContext('2d')\r\n\t\t var img = new Image\r\n\t\t img.onload = function() {\r\n\t\t canvas.width = img.width\r\n\t\t canvas.height = img.height\r\n\t\t c2x.drawImage(img, 0, 0)\r\n\t\t resolve(canvas.toDataURL())\r\n\t\t canvas.height = canvas.width = 0\r\n\t\t }\r\n\t\t img.onerror = reject\r\n\t\t img.src = path\r\n\t\t return\r\n\t\t }\r\n\t\t if (typeof plus === 'object') {\r\n\t\t plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), function(entry) {\r\n\t\t entry.file(function(file) {\r\n\t\t var fileReader = new plus.io.FileReader()\r\n\t\t fileReader.onload = function(data) {\r\n\t\t resolve(data.target.result)\r\n\t\t }\r\n\t\t fileReader.onerror = function(error) {\r\n\t\t reject(error)\r\n\t\t }\r\n\t\t fileReader.readAsDataURL(file)\r\n\t\t }, function(error) {\r\n\t\t reject(error)\r\n\t\t })\r\n\t\t }, function(error) {\r\n\t\t reject(error)\r\n\t\t })\r\n\t\t return\r\n\t\t }\r\n\t\t if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {\r\n\t\t wx.getFileSystemManager().readFile({\r\n\t\t filePath: path,\r\n\t\t encoding: 'base64',\r\n\t\t success: function(res) {\r\n\t\t resolve('data:image/png;base64,' + res.data)\r\n\t\t },\r\n\t\t fail: function(error) {\r\n\t\t reject(error)\r\n\t\t }\r\n\t\t })\r\n\t\t return\r\n\t\t }\r\n\t\t reject(new Error('not support'))\r\n\t\t })\r\n\t\t}\r\n\t\t\r\n\t\tfunction base64ToPath(base64) {\r\n\t\t return new Promise(function(resolve, reject) {\r\n\t\t if (typeof window === 'object' && 'document' in window) {\r\n\t\t base64 = base64.split(',')\r\n\t\t var type = base64[0].match(/:(.*?);/)[1]\r\n\t\t var str = atob(base64[1])\r\n\t\t var n = str.length\r\n\t\t var array = new Uint8Array(n)\r\n\t\t while (n--) {\r\n\t\t array[n] = str.charCodeAt(n)\r\n\t\t }\r\n\t\t return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], { type: type })))\r\n\t\t }\r\n\t\t var extName = base64.split(',')[0].match(/data\\:\\S+\\/(\\S+);/)\r\n\t\t if (extName) {\r\n\t\t extName = extName[1]\r\n\t\t } else {\r\n\t\t reject(new Error('base64 error'))\r\n\t\t }\r\n\t\t var fileName = getNewFileId() + '.' + extName\r\n\t\t if (typeof plus === 'object') {\r\n\t\t var basePath = '_doc'\r\n\t\t var dirPath = 'uniapp_temp'\r\n\t\t var filePath = basePath + '/' + dirPath + '/' + fileName\r\n\t\t if (!biggerThan(plus.os.name === 'Android' ? '1.9.9.80627' : '1.9.9.80472', plus.runtime.innerVersion)) {\r\n\t\t plus.io.resolveLocalFileSystemURL(basePath, function(entry) {\r\n\t\t entry.getDirectory(dirPath, {\r\n\t\t create: true,\r\n\t\t exclusive: false,\r\n\t\t }, function(entry) {\r\n\t\t entry.getFile(fileName, {\r\n\t\t create: true,\r\n\t\t exclusive: false,\r\n\t\t }, function(entry) {\r\n\t\t entry.createWriter(function(writer) {\r\n\t\t writer.onwrite = function() {\r\n\t\t resolve(filePath)\r\n\t\t }\r\n\t\t writer.onerror = reject\r\n\t\t writer.seek(0)\r\n\t\t writer.writeAsBinary(dataUrlToBase64(base64))\r\n\t\t }, reject)\r\n\t\t }, reject)\r\n\t\t }, reject)\r\n\t\t }, reject)\r\n\t\t return\r\n\t\t }\r\n\t\t var bitmap = new plus.nativeObj.Bitmap(fileName)\r\n\t\t bitmap.loadBase64Data(base64, function() {\r\n\t\t bitmap.save(filePath, {}, function() {\r\n\t\t bitmap.clear()\r\n\t\t resolve(filePath)\r\n\t\t }, function(error) {\r\n\t\t bitmap.clear()\r\n\t\t reject(error)\r\n\t\t })\r\n\t\t }, function(error) {\r\n\t\t bitmap.clear()\r\n\t\t reject(error)\r\n\t\t })\r\n\t\t return\r\n\t\t }\r\n\t\t\t\t\r\n\t\t\t\tfunction getEnvPath() {\r\n\t\t\t\t\tif(typeof my === 'object' && my?.env?.USER_DATA_PATH) {\r\n\t\t\t\t\t\t// console.log('my')\r\n\t\t\t\t\t\treturn my.env.USER_DATA_PATH\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof swan === 'object' && swan?.env?.USER_DATA_PATH) {\r\n\t\t\t\t\t\t// console.log('swan')\r\n\t\t\t\t\t\treturn swan.env.USER_DATA_PATH\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof tt === 'object' && tt?.env?.USER_DATA_PATH) {\r\n\t\t\t\t\t\t// console.log('tt')\r\n\t\t\t\t\t\treturn tt.env.USER_DATA_PATH\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof qq === 'object' && qq?.env?.USER_DATA_PATH) {\r\n\t\t\t\t\t\t// console.log('qq')\r\n\t\t\t\t\t\treturn qq.env.USER_DATA_PATH\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof qh === 'object' && qh?.env?.USER_DATA_PATH) {\r\n\t\t\t\t\t\t// console.log('qh')\r\n\t\t\t\t\t\treturn qh.env.USER_DATA_PATH\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof wx === 'object' && wx?.env?.USER_DATA_PATH) {\r\n\t\t\t\t\t\t// console.log('wx')\r\n\t\t\t\t\t\treturn wx.env.USER_DATA_PATH\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn 'https://user'\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\ttry{\r\n\t\t\t\t\tvar filePath = getEnvPath() + '/' + fileName\r\n\t\t\t\t\tuni.getFileSystemManager().writeFile({\r\n\t\t\t\t\t\tfilePath: filePath,\r\n\t\t\t\t\t\tdata: dataUrlToBase64(base64),\r\n\t\t\t\t\t\tencoding: 'base64',\r\n\t\t\t\t\t\tsuccess: function() {\r\n\t\t\t\t\t\t\tresolve(filePath)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfail: function(error) {\r\n\t\t\t\t\t\t\treject(error)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t}catch(e){\r\n\t\t\t\t\t//TODO handle the exception\r\n\t\t\t\t\treject(new Error('not support'))\r\n\t\t\t\t}\r\n\t\t })\r\n\t\t}\r\n\r\n\t\treturn {pathToBase64, base64ToPath}\r\n\t})()\r\n\r\n\tif (notUnd(typeof module)) {\r\n\t\tmodule.exports = QSCanvas\r\n\t}\r\n\r\n\treturn QSCanvas\r\n})();\r\n\r\n\r\n"],
  5. "mappings": "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I,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,IAAI,GAAG,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,IAAI,GAAG,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,IAAI,GAAG,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAA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",
  6. "names": ["run", "width", "obj", "options", "QSCanvas", "i", "QRCodeAlg", "text", "match", "attr", "index", "entry"]
  7. }