UNPKG

20.8 kBSource Map (JSON)View Raw
1{"version":3,"file":"CanvasContext.js","sources":["../../../src/api/canvas/CanvasContext.ts"],"sourcesContent":["import Taro, { CanvasGradient } from '@tarojs/api'\n\ninterface IAction {\n func: (...arr: any[]) => void\n args: any[]\n}\n\nconst TextBaseLineMap: Record<keyof Taro.CanvasContext.TextBaseline, CanvasTextBaseline> = {\n top: 'top',\n bottom: 'bottom',\n middle: 'middle',\n normal: 'alphabetic',\n hanging: 'hanging',\n alphabetic: 'alphabetic',\n ideographic: 'ideographic'\n}\n\nexport class CanvasContext implements Taro.CanvasContext {\n __raw__: CanvasRenderingContext2D\n actions: IAction[] = []\n\n constructor (canvas, ctx) {\n this.canvas = canvas\n this.ctx = ctx\n }\n\n set ctx (e: CanvasRenderingContext2D) {\n this.__raw__ = e\n }\n\n get ctx () {\n return this.__raw__ || {}\n }\n\n canvas: HTMLCanvasElement\n\n protected emptyActions () {\n this.actions.length = 0\n }\n\n protected enqueueActions (func: IAction['func'], ...args) {\n this.actions.push({\n func,\n args\n })\n }\n\n set fillStyle (e) { this.enqueueActions(() => { this.ctx.fillStyle = e }) }\n get fillStyle () { return this.ctx.fillStyle as string }\n set font (e) { this.ctx.font = e }\n get font () { return this.ctx.font }\n set globalAlpha (e) { this.enqueueActions(() => { this.ctx.globalAlpha = e }) }\n get globalAlpha () { return this.ctx.globalAlpha }\n set globalCompositeOperation (e) { this.enqueueActions(() => { this.ctx.globalCompositeOperation = e }) }\n get globalCompositeOperation () { return this.ctx.globalCompositeOperation }\n set lineCap (e) { this.enqueueActions(() => { this.ctx.lineCap = e }) }\n get lineCap () { return this.ctx.lineCap }\n set lineDashOffset (e) { this.enqueueActions(() => { this.ctx.lineDashOffset = e }) }\n get lineDashOffset () { return this.ctx.lineDashOffset }\n set lineJoin (e) { this.enqueueActions(() => { this.ctx.lineJoin = e }) }\n get lineJoin () { return this.ctx.lineJoin }\n set lineWidth (e) { this.enqueueActions(() => { this.ctx.lineWidth = e }) }\n get lineWidth () { return this.ctx.lineWidth }\n set miterLimit (e) { this.enqueueActions(() => { this.ctx.miterLimit = e }) }\n get miterLimit () { return this.ctx.miterLimit }\n set shadowBlur (e) { this.enqueueActions(() => { this.ctx.shadowBlur = e }) }\n get shadowBlur () { return this.ctx.shadowBlur }\n set shadowColor (e) { this.enqueueActions(() => { this.ctx.shadowColor = e }) }\n get shadowColor () { return this.ctx.shadowColor }\n set shadowOffsetX (e) { this.enqueueActions(() => { this.ctx.shadowOffsetX = e }) }\n get shadowOffsetX () { return this.ctx.shadowOffsetX }\n set shadowOffsetY (e) { this.enqueueActions(() => { this.ctx.shadowOffsetY = e }) }\n get shadowOffsetY () { return this.ctx.shadowOffsetY }\n set strokeStyle (e) { this.enqueueActions(() => { this.ctx.strokeStyle = e }) }\n get strokeStyle () { return this.ctx.strokeStyle as string }\n /** 小程序文档中不包括 ↓↓↓ */\n set textAlign (e) { this.ctx.textAlign = e }\n get textAlign () { return this.ctx.textAlign }\n set textBaseline (e) { this.ctx.textBaseline = e }\n get textBaseline () { return this.ctx.textBaseline }\n set direction (e) { this.ctx.direction = e }\n get direction () { return this.ctx.direction }\n set imageSmoothingEnabled (e) { this.enqueueActions(() => { this.ctx.imageSmoothingEnabled = e }) }\n get imageSmoothingEnabled () { return this.ctx.imageSmoothingEnabled }\n set imageSmoothingQuality (e) { this.enqueueActions(() => { this.ctx.imageSmoothingQuality = e }) }\n get imageSmoothingQuality () { return this.ctx.imageSmoothingQuality }\n set filter (e) { this.enqueueActions(() => { this.ctx.filter = e }) }\n get filter () { return this.ctx.filter }\n /** 小程序文档中不包括 ↑↑↑ */\n\n arc (...args) { return this.enqueueActions(this.ctx.arc, ...args) }\n arcTo (...args) { return this.enqueueActions(this.ctx.arcTo, ...args) }\n beginPath (...args) { return this.enqueueActions(this.ctx.beginPath, ...args) }\n bezierCurveTo (...args) { return this.enqueueActions(this.ctx.bezierCurveTo, ...args) }\n clearRect (...args) { return this.enqueueActions(this.ctx.clearRect, ...args) }\n clip (...args) { return this.enqueueActions(this.ctx.clip, ...args) }\n closePath (...args) { return this.enqueueActions(this.ctx.closePath, ...args) }\n\n createPattern (imageResource: string, repetition: keyof Taro.CanvasContext.Repetition): CanvasPattern | null | Promise<CanvasPattern | null> {\n // 需要转换为 Image\n if (typeof imageResource === 'string') {\n const img = new Image()\n img.src = imageResource\n return new Promise<CanvasPattern | null>((resolve, reject) => {\n img.onload = () => {\n resolve(this.ctx.createPattern(img, repetition))\n }\n img.onerror = reject\n })\n }\n\n return this.ctx.createPattern(imageResource, repetition)\n }\n\n /**\n * 将之前在绘图上下文中的描述(路径、变形、样式)画到 canvas 中。\n * @todo 每次 draw 都会读取 width 和 height\n */\n async draw (reserve?: boolean, callback?: (...args: any[]) => any): Promise<void> {\n try {\n if (!reserve) {\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height)\n }\n\n // 部分 action 是异步的\n for (const { func, args } of this.actions) {\n await func.apply(this.ctx, args)\n }\n\n this.emptyActions()\n callback && callback()\n } catch (e) {\n /* eslint-disable no-throw-literal */\n throw {\n errMsg: e.message\n }\n }\n }\n\n drawImage (imageResource: string, ...extra: any[]): void {\n type TExtra = [number, number]\n this.enqueueActions(() => {\n // 需要转换为 Image\n if (typeof imageResource === 'string') {\n const img = new Image()\n img.src = imageResource\n return new Promise<void>((resolve, reject) => {\n img.onload = () => {\n this.ctx.drawImage(img, ...extra as TExtra)\n resolve()\n }\n img.onerror = reject\n })\n }\n\n this.ctx.drawImage(imageResource, ...extra as TExtra)\n })\n }\n\n fill (...args) { return this.enqueueActions(this.ctx.fill, ...args) }\n fillRect (...args) { return this.enqueueActions(this.ctx.fillRect, ...args) }\n fillText (...args) { return this.enqueueActions(this.ctx.fillText, ...args) }\n lineTo (...args) { return this.enqueueActions(this.ctx.lineTo, ...args) }\n moveTo (...args) { return this.enqueueActions(this.ctx.moveTo, ...args) }\n quadraticCurveTo (...args) { return this.enqueueActions(this.ctx.quadraticCurveTo, ...args) }\n rect (...args) { return this.enqueueActions(this.ctx.rect, ...args) }\n // @ts-ignore\n reset () { return this.ctx.reset() }\n restore () { return this.ctx.restore() }\n rotate (...args) { return this.enqueueActions(this.ctx.rotate, ...args) }\n save () { return this.ctx.save() }\n scale (...args) { return this.enqueueActions(this.ctx.scale, ...args) }\n\n setFillStyle (color: string | CanvasGradient): void {\n this.enqueueActions(() => { this.ctx.fillStyle = color })\n }\n\n setFontSize (fontSize: number): void {\n const arr = this.font.split(/\\s/)\n const idx = arr.findIndex(e => /^\\d+px$/.test(e))\n if (idx !== -1) {\n arr[idx] = `${fontSize}px`\n this.font = arr.join(' ')\n }\n }\n\n setGlobalAlpha (alpha: number): void {\n this.globalAlpha = alpha\n }\n\n setLineCap (lineCap: keyof Taro.CanvasContext.LineCap): void {\n this.lineCap = lineCap\n }\n\n setLineDash (pattern: number[], offset: number): void {\n this.enqueueActions(() => {\n this.ctx.setLineDash(pattern)\n this.ctx.lineDashOffset = offset\n })\n }\n\n setLineJoin (lineJoin: keyof Taro.CanvasContext.LineJoin): void {\n this.lineJoin = lineJoin\n }\n\n setLineWidth (lineWidth: number): void {\n this.lineWidth = lineWidth\n }\n\n setMiterLimit (miterLimit: number): void {\n this.miterLimit = miterLimit\n }\n\n setShadow (offsetX: number, offsetY: number, blur: number, color: string): void {\n this.enqueueActions(() => {\n this.ctx.shadowOffsetX = offsetX\n this.ctx.shadowOffsetY = offsetY\n this.ctx.shadowColor = color\n this.ctx.shadowBlur = blur\n })\n }\n\n setStrokeStyle (color: string | CanvasGradient): void {\n this.enqueueActions(() => { this.ctx.strokeStyle = color })\n }\n\n setTextAlign (align: keyof Taro.CanvasContext.Align): void {\n this.textAlign = align\n }\n\n setTextBaseline (textBaseline: keyof Taro.CanvasContext.TextBaseline): void {\n this.textBaseline = TextBaseLineMap[textBaseline] || 'alphabetic'\n }\n\n setTransform (...args) { return this.enqueueActions(this.ctx.setTransform, ...args) }\n stroke (...args) { return this.enqueueActions(this.ctx.stroke, ...args) }\n strokeRect (...args) { return this.enqueueActions(this.ctx.strokeRect, ...args) }\n strokeText (...args) { return this.enqueueActions(this.ctx.strokeText, ...args) }\n transform (...args) { return this.enqueueActions(this.ctx.transform, ...args) }\n translate (...args) { return this.enqueueActions(this.ctx.translate, ...args) }\n\n measureText (text: string): TextMetrics {\n return this.ctx.measureText(text)\n }\n\n createCircularGradient (x: number, y: number, r: number): CanvasGradient {\n const radialGradient = this.ctx.createRadialGradient(x, y, 0, x, y, r)\n\n return radialGradient\n }\n\n createLinearGradient (x0: number, y0: number, x1: number, y1: number): CanvasGradient {\n return this.ctx.createLinearGradient(x0, y0, x1, y1)\n }\n}\n"],"names":[],"mappings":"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"}
\No newline at end of file