|
|
// @ts-nocheck
|
|
// #ifndef UNI-APP-X && APP
|
|
import type { ComponentInternalInstance } from '@/uni_modules/lime-shared/vue'
|
|
import { getRect } from '@/uni_modules/lime-shared/getRect'
|
|
import { canIUseCanvas2d } from '@/uni_modules/lime-shared/canIUseCanvas2d'
|
|
export const isCanvas2d = canIUseCanvas2d()
|
|
// #endif
|
|
|
|
|
|
export function createCanvas(canvasId : string, component : ComponentInternalInstance) {
|
|
// #ifdef UNI-APP-X
|
|
uni.createCanvasContextAsync({
|
|
canvasId,
|
|
component,
|
|
success(context : CanvasContext) {
|
|
|
|
},
|
|
fail(error : UniError) {
|
|
|
|
}
|
|
})
|
|
// #endif
|
|
// #ifndef UNI-APP-X
|
|
const isCanvas2d = canIUseCanvas2d()
|
|
getRect('#' + canvasId, context, isCanvas2d).then(res => {
|
|
if (res.node) {
|
|
res.node.width = res.width
|
|
res.node.height = res.height
|
|
return res.node
|
|
} else {
|
|
const ctx = uni.createCanvasContext(canvasId, context)
|
|
if (!ctx._drawImage) {
|
|
ctx._drawImage = ctx.drawImage
|
|
ctx.drawImage = function (...args) {
|
|
const { path } = args.shift()
|
|
ctx._drawImage(path, ...args)
|
|
}
|
|
}
|
|
if (!ctx.getImageData) {
|
|
ctx.getImageData = function () {
|
|
return new Promise((resolve, reject) => {
|
|
uni.canvasGetImageData({
|
|
canvasId,
|
|
x: parseInt(arguments[0]),
|
|
y: parseInt(arguments[1]),
|
|
width: parseInt(arguments[2]),
|
|
height: parseInt(arguments[3]),
|
|
success(res) {
|
|
resolve(res)
|
|
},
|
|
fail(err) {
|
|
reject(err)
|
|
}
|
|
}, context)
|
|
})
|
|
|
|
}
|
|
return {
|
|
getContext(type: string) {
|
|
if(type == '2d') {
|
|
return ctx
|
|
}
|
|
},
|
|
width: res.width,
|
|
height: res.height,
|
|
createImage
|
|
}
|
|
}
|
|
}
|
|
})
|
|
// #endif
|
|
}
|