format and fix bugs

This commit is contained in:
CPPAlien 2019-12-10 11:40:30 +08:00
parent 5f84e5943e
commit 7dac57c93b

View File

@ -85,7 +85,13 @@ export default class Painter {
} }
} }
_border({ borderRadius = 0, width, height, borderWidth = 0, borderStyle = 'solid' }) { _border({
borderRadius = 0,
width,
height,
borderWidth = 0,
borderStyle = 'solid'
}) {
let r1 = 0, let r1 = 0,
r2 = 0, r2 = 0,
r3 = 0, r3 = 0,
@ -144,7 +150,12 @@ export default class Painter {
// globalAlpha 在 1.9.90 起支持,低版本下无效,但把 fillStyle 设为了 white相对默认的 black 要好点 // globalAlpha 在 1.9.90 起支持,低版本下无效,但把 fillStyle 设为了 white相对默认的 black 要好点
this.ctx.globalAlpha = 0; this.ctx.globalAlpha = 0;
this.ctx.fillStyle = 'white'; this.ctx.fillStyle = 'white';
this._border({ borderRadius, width, height, borderStyle }) this._border({
borderRadius,
width,
height,
borderStyle
})
this.ctx.fill(); this.ctx.fill();
// 在 ios 的 6.6.6 版本上 clip 有 bug禁掉此类型上的 clip也就意味着在此版本微信的 ios 设备下无法使用 border 属性 // 在 ios 的 6.6.6 版本上 clip 有 bug禁掉此类型上的 clip也就意味着在此版本微信的 ios 设备下无法使用 border 属性
if (!(getApp().systemInfo && if (!(getApp().systemInfo &&
@ -175,7 +186,13 @@ export default class Painter {
this.ctx.save(); this.ctx.save();
this._preProcess(view, true); this._preProcess(view, true);
this.ctx.strokeStyle = (borderColor || 'black'); this.ctx.strokeStyle = (borderColor || 'black');
this._border({ borderRadius, width, height, borderWidth, borderStyle }) this._border({
borderRadius,
width,
height,
borderWidth,
borderStyle
})
this.ctx.stroke(); this.ctx.stroke();
this.ctx.restore(); this.ctx.restore();
} }
@ -196,7 +213,9 @@ export default class Painter {
} }
const fontWeight = view.css.fontWeight === 'bold' ? 'bold' : 'normal'; const fontWeight = view.css.fontWeight === 'bold' ? 'bold' : 'normal';
const textStyle = view.css.textStyle === 'italic' ? 'italic' : 'normal'; const textStyle = view.css.textStyle === 'italic' ? 'italic' : 'normal';
const fontSize = view.css.fontSize ? view.css.fontSize.toPx() : '20rpx'.toPx(); if (!view.css.fontSize) {
view.css.fontSize = '20rpx';
}
this.ctx.font = `${textStyle} ${fontWeight} ${view.css.fontSize.toPx()}px ${view.css.fontFamily ? view.css.fontFamily : 'sans-serif'}`; this.ctx.font = `${textStyle} ${fontWeight} ${view.css.fontSize.toPx()}px ${view.css.fontFamily ? view.css.fontFamily : 'sans-serif'}`;
// 计算行数 // 计算行数
let lines = 0; let lines = 0;
@ -547,7 +566,7 @@ export default class Painter {
} }
let lineIndex = 0; let lineIndex = 0;
for (let j = 0; j < textArray.length; ++j) { for (let j = 0; j < textArray.length; ++j) {
const preLineLength = Math.floor(textArray[j].length / linesArray[j]); const preLineLength = Math.ceil(textArray[j].length / linesArray[j]);
let start = 0; let start = 0;
let alreadyCount = 0; let alreadyCount = 0;
for (let i = 0; i < linesArray[j]; ++i) { for (let i = 0; i < linesArray[j]; ++i) {
@ -638,7 +657,17 @@ export default class Painter {
this.ctx.stroke(); this.ctx.stroke();
} }
if (!this.isMoving) { if (!this.isMoving) {
this.callbackInfo.lineArray ? this.callbackInfo.lineArray.push({ text, x, y, measuredWith }) : this.callbackInfo.lineArray = [{ text, x, y, measuredWith }] this.callbackInfo.lineArray ? this.callbackInfo.lineArray.push({
text,
x,
y,
measuredWith
}) : this.callbackInfo.lineArray = [{
text,
x,
y,
measuredWith
}]
} }
} }
} }
@ -658,8 +687,18 @@ export default class Painter {
} else { } else {
this.ctx.fillStyle = view.css.color; this.ctx.fillStyle = view.css.color;
} }
const { borderRadius, borderStyle, borderWidth } = view.css const {
this._border({ borderRadius, width, height, borderWidth, borderStyle }) borderRadius,
borderStyle,
borderWidth
} = view.css
this._border({
borderRadius,
width,
height,
borderWidth,
borderStyle
})
this.ctx.fill(); this.ctx.fill();
this.ctx.restore(); this.ctx.restore();
this._doBorder(view, width, height); this._doBorder(view, width, height);