Enhance text wrapping in drawCard function to support multi-line input
This commit is contained in:
parent
41505776af
commit
eff962608f
1 changed files with 17 additions and 13 deletions
|
@ -137,21 +137,25 @@ async function drawCardId() {
|
|||
|
||||
|
||||
function wrapText(text, x, y, maxWidth, lineHeight) {
|
||||
const words = text.split(" ");
|
||||
let line = "";
|
||||
for (let n = 0; n < words.length; n++) {
|
||||
const testLine = line + words[n] + " ";
|
||||
const metrics = ctx.measureText(testLine);
|
||||
const testWidth = metrics.width;
|
||||
if (testWidth > maxWidth && n > 0) {
|
||||
ctx.fillText(line, x, y);
|
||||
line = words[n] + " ";
|
||||
y += lineHeight;
|
||||
} else {
|
||||
line = testLine;
|
||||
const lines = text.split('\n');
|
||||
for (let i = 0; i < lines.length; i++) {
|
||||
let words = lines[i].split(" ");
|
||||
let line = "";
|
||||
for (let n = 0; n < words.length; n++) {
|
||||
const testLine = line + words[n] + " ";
|
||||
const metrics = ctx.measureText(testLine);
|
||||
const testWidth = metrics.width;
|
||||
if (testWidth > maxWidth && n > 0) {
|
||||
ctx.fillText(line, x, y);
|
||||
line = words[n] + " ";
|
||||
y += lineHeight;
|
||||
} else {
|
||||
line = testLine;
|
||||
}
|
||||
}
|
||||
ctx.fillText(line, x, y);
|
||||
y += lineHeight;
|
||||
}
|
||||
ctx.fillText(line, x, y);
|
||||
}
|
||||
|
||||
// Update card live when inputs change
|
||||
|
|
Loading…
Add table
Reference in a new issue