员工管理添加员工列表优惠券完善
This commit is contained in:
121
uni_modules/lime-f2/components/l-f2/canvas.js
Normal file
121
uni_modules/lime-f2/components/l-f2/canvas.js
Normal file
@@ -0,0 +1,121 @@
|
||||
import {
|
||||
pixelRatio,
|
||||
sleep
|
||||
} from './utils';
|
||||
|
||||
const UNI_CANVAS_CONTEXT_MAP = {
|
||||
// #ifndef MP-WEIXIN
|
||||
fillStyle: 'FillStyle',
|
||||
fontSize: 'FontSize',
|
||||
globalAlpha: 'GlobalAlpha',
|
||||
opacity: 'GlobalAlpha',
|
||||
lineCap: 'LineCap',
|
||||
lineJoin: 'LineJoin',
|
||||
lineWidth: 'LineWidth',
|
||||
miterLimit: 'MiterLimit',
|
||||
strokeStyle: 'StrokeStyle',
|
||||
textAlign: 'TextAlign',
|
||||
textBaseline: 'TextBaseline',
|
||||
shadow: 'Shadow',
|
||||
// #endif
|
||||
// #ifdef MP-TOUTIAO || H5 || APP-PLUS
|
||||
font: 'FontSize',
|
||||
// #endif
|
||||
};
|
||||
|
||||
function strLen(str) {
|
||||
let len = 0;
|
||||
for (let i = 0; i < str.length; i++) {
|
||||
if (str.charCodeAt(i) > 0 && str.charCodeAt(i) < 128) {
|
||||
len++;
|
||||
} else {
|
||||
len += 2;
|
||||
}
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
// 头条小程序目前仅支持 setFontSize
|
||||
// f2 会将所有属性整合为 font 简写,从中提取 fontSize 支持
|
||||
const fontSizeReg = /(\d*\.?\d*)px/;
|
||||
const colorReg = /#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])\b/g;
|
||||
export default (ctx) => {
|
||||
// #ifdef H5 || APP-PLUS
|
||||
ctx.uniTransform = ctx.transform
|
||||
ctx.transform = (...agrs) => {
|
||||
if (ctx.draw && agrs[6]) {
|
||||
agrs[4] *= pixelRatio
|
||||
agrs[5] *= pixelRatio
|
||||
}
|
||||
if (agrs.length > 6) {
|
||||
agrs.pop()
|
||||
}
|
||||
ctx.uniTransform(...agrs)
|
||||
}
|
||||
// #endif
|
||||
// #ifdef MP-ALIPAY
|
||||
ctx.canvasGetImageData = ctx.getImageData
|
||||
ctx.getImageData = null
|
||||
// #endif
|
||||
if (!ctx.getImageData) {
|
||||
ctx.getImageData = (...agrs) => {
|
||||
const [x, y, width, height] = agrs
|
||||
return new Promise(resolve => {
|
||||
const parms = {
|
||||
canvasId: ctx.id || ctx.canvasId,
|
||||
x,
|
||||
y,
|
||||
width,
|
||||
height,
|
||||
success: res => {
|
||||
resolve(res.data)
|
||||
}
|
||||
}
|
||||
// #ifndef MP-ALIPAY || MP-TOUTIAO
|
||||
uni.canvasGetImageData(parms)
|
||||
// #endif
|
||||
// #ifdef MP-ALIPAY || MP-TOUTIAO
|
||||
ctx.canvasGetImageData(parms)
|
||||
// #endif
|
||||
})
|
||||
}
|
||||
}
|
||||
// 钉钉小程序框架不支持 measureText 方法,用此方法 mock
|
||||
if (!ctx.measureText) {
|
||||
ctx.measureText = text => {
|
||||
let fontSize = 12;
|
||||
const font = ctx.__font;
|
||||
if (font) {
|
||||
fontSize = parseInt(font.split(' ')[3], 10);
|
||||
}
|
||||
fontSize /= 2;
|
||||
return {
|
||||
width: strLen(text) * fontSize
|
||||
};
|
||||
}
|
||||
}
|
||||
Object.keys(UNI_CANVAS_CONTEXT_MAP).forEach(key => {
|
||||
Object.defineProperty(ctx, key, {
|
||||
set(val) {
|
||||
const name = `set${UNI_CANVAS_CONTEXT_MAP[key]}`;
|
||||
if (!ctx[name]) {
|
||||
return;
|
||||
}
|
||||
if (key === 'font' && fontSizeReg.test(val)) {
|
||||
const match = fontSizeReg.exec(val);
|
||||
ctx[name](match[1]);
|
||||
return;
|
||||
}
|
||||
if (key === 'shadow' && Array.isArray(val)) {
|
||||
ctx[name](...val);
|
||||
return;
|
||||
}
|
||||
if(colorReg.test(val)) {
|
||||
val = val.replace(colorReg, '#$1$1$2$2$3$3')
|
||||
}
|
||||
ctx[name](val);
|
||||
}
|
||||
});
|
||||
});
|
||||
return ctx
|
||||
}
|
||||
Reference in New Issue
Block a user