vislite
Version:
灵活、快速、简单的数据可视化交互式跨端前端库
19 lines (16 loc) • 725 B
text/typescript
export default function (painter: CanvasRenderingContext2D, contents: string, width: number, height: number, doback: (content: string, top: number) => void) {
let lineNumber = 0, content = ""
for (let i = 0; i < contents.length; i++) {
if (painter.measureText(content + contents[i]).width > width || /\n$/.test(content)) {
lineNumber += 1
doback(content, (lineNumber - 0.5) * height)
content = contents[i]
} else if (i == contents.length - 1) {
lineNumber += 1
doback(content + contents[i], (lineNumber - 0.5) * height)
} else {
content += contents[i]
}
}
return lineNumber * height
}