mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-05-03 10:00:07 -04:00
feat/ability to change the alignment of the text (#1213)
* feat: add the ability to change the alignement of the text * test: update the snapshots to included the newely textAlign state * style: use explicit key assignment to object * test: add missing new key textAlign to newElement.test.ts * style: make the text on the buttons start with uppercase * Update src/locales/en.json * add types * add migration * remove incorrect update Co-authored-by: Youness Fkhach <younessfkhach@porotonmail.com> Co-authored-by: Lipis <lipiridis@gmail.com> Co-authored-by: dwelle <luzar.david@gmail.com>
This commit is contained in:
parent
3fd6f3023f
commit
ff82d1cfa3
15 changed files with 357 additions and 9 deletions
|
@ -101,15 +101,28 @@ function drawElementOnCanvas(
|
|||
context.font = element.font;
|
||||
const fillStyle = context.fillStyle;
|
||||
context.fillStyle = element.strokeColor;
|
||||
const textAlign = context.textAlign;
|
||||
context.textAlign = element.textAlign as CanvasTextAlign;
|
||||
// Canvas does not support multiline text by default
|
||||
const lines = element.text.replace(/\r\n?/g, "\n").split("\n");
|
||||
const lineHeight = element.height / lines.length;
|
||||
const offset = element.height - element.baseline;
|
||||
const verticalOffset = element.height - element.baseline;
|
||||
const horizontalOffset =
|
||||
element.textAlign === "center"
|
||||
? element.width / 2
|
||||
: element.textAlign === "right"
|
||||
? element.width
|
||||
: 0;
|
||||
for (let i = 0; i < lines.length; i++) {
|
||||
context.fillText(lines[i], 0, (i + 1) * lineHeight - offset);
|
||||
context.fillText(
|
||||
lines[i],
|
||||
0 + horizontalOffset,
|
||||
(i + 1) * lineHeight - verticalOffset,
|
||||
);
|
||||
}
|
||||
context.fillStyle = fillStyle;
|
||||
context.font = font;
|
||||
context.textAlign = textAlign;
|
||||
} else {
|
||||
throw new Error(`Unimplemented type ${element.type}`);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue