fix: funky shape corners for freedraw

This commit is contained in:
Ryan Di
2025-06-11 18:05:46 +10:00
parent e99baaa6bb
commit c08840358b
3 changed files with 30 additions and 67 deletions

View File

@ -20,8 +20,6 @@ import { canChangeRoundness } from "./comparisons";
import { generateFreeDrawShape } from "./renderElement";
import { getArrowheadPoints, getDiamondPoints } from "./bounds";
import { getFreedrawStroke } from "./freedraw";
import type {
ExcalidrawElement,
NonDeletedExcalidrawElement,
@ -514,19 +512,18 @@ export const _generateElementShape = (
generateFreeDrawShape(element);
if (isPathALoop(element.points)) {
let points;
if (element.pressureSensitivity === null) {
// legacy freedraw
points = simplify(element.points as LocalPoint[], 0.75);
} else {
// new freedraw
const stroke = getFreedrawStroke(element);
points = stroke
.slice(0, Math.floor(stroke.length / 2))
.map((p) => pointFrom(p[0], p[1]));
}
const points =
element.pressureSensitivity === null
? simplify(element.points as LocalPoint[], 0.75)
: simplify(element.points as LocalPoint[], 1.5);
shape = generator.curve(points, {
shape =
element.pressureSensitivity === null
? generator.curve(points, {
...generateRoughOptions(element),
stroke: "none",
})
: generator.polygon(points, {
...generateRoughOptions(element),
stroke: "none",
});

View File

@ -8943,15 +8943,10 @@ exports[`history > multiplayer undo/redo > should not let remote changes to inte
],
],
"pressureSensitivity": 1,
"pressures": [
0,
0,
0,
0,
],
"pressures": [],
"roughness": 1,
"roundness": null,
"simulatePressure": false,
"simulatePressure": true,
"strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 2,
@ -9052,15 +9047,10 @@ exports[`history > multiplayer undo/redo > should not let remote changes to inte
],
],
"pressureSensitivity": 1,
"pressures": [
0,
0,
0,
0,
],
"pressures": [],
"roughness": 1,
"roundness": null,
"simulatePressure": false,
"simulatePressure": true,
"strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 2,
@ -12103,14 +12093,10 @@ exports[`history > singleplayer undo/redo > should create entry when selecting f
],
],
"pressureSensitivity": 1,
"pressures": [
0,
0,
0,
],
"pressures": [],
"roughness": 1,
"roundness": null,
"simulatePressure": false,
"simulatePressure": true,
"strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 2,
@ -12158,14 +12144,10 @@ exports[`history > singleplayer undo/redo > should create entry when selecting f
],
],
"pressureSensitivity": 1,
"pressures": [
0,
0,
0,
],
"pressures": [],
"roughness": 1,
"roundness": null,
"simulatePressure": false,
"simulatePressure": true,
"strokeColor": "#e03131",
"strokeStyle": "solid",
"strokeWidth": 2,
@ -12302,14 +12284,10 @@ exports[`history > singleplayer undo/redo > should create entry when selecting f
],
],
"pressureSensitivity": 1,
"pressures": [
0,
0,
0,
],
"pressures": [],
"roughness": 1,
"roundness": null,
"simulatePressure": false,
"simulatePressure": true,
"strokeColor": "#e03131",
"strokeStyle": "solid",
"strokeWidth": 2,

View File

@ -6905,14 +6905,10 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
],
],
"pressureSensitivity": 1,
"pressures": [
0,
0,
0,
],
"pressures": [],
"roughness": 1,
"roundness": null,
"simulatePressure": false,
"simulatePressure": true,
"strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 2,
@ -9184,14 +9180,10 @@ exports[`regression tests > key 7 selects freedraw tool > [end of test] undo sta
],
],
"pressureSensitivity": 1,
"pressures": [
0,
0,
0,
],
"pressures": [],
"roughness": 1,
"roundness": null,
"simulatePressure": false,
"simulatePressure": true,
"strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 2,
@ -10192,14 +10184,10 @@ exports[`regression tests > key p selects freedraw tool > [end of test] undo sta
],
],
"pressureSensitivity": 1,
"pressures": [
0,
0,
0,
],
"pressures": [],
"roughness": 1,
"roundness": null,
"simulatePressure": false,
"simulatePressure": true,
"strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 2,