Browse Source

fix: funky shape corners for freedraw

Ryan Di 2 months ago
parent
commit
c08840358b

+ 15 - 18
packages/element/src/Shape.ts

@@ -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,22 +512,21 @@ 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]));
-        }
-
-        shape = generator.curve(points, {
-          ...generateRoughOptions(element),
-          stroke: "none",
-        });
+        const points =
+          element.pressureSensitivity === null
+            ? simplify(element.points as LocalPoint[], 0.75)
+            : simplify(element.points as LocalPoint[], 1.5);
+
+        shape =
+          element.pressureSensitivity === null
+            ? generator.curve(points, {
+                ...generateRoughOptions(element),
+                stroke: "none",
+              })
+            : generator.polygon(points, {
+                ...generateRoughOptions(element),
+                stroke: "none",
+              });
       } else {
         shape = null;
       }

+ 10 - 32
packages/excalidraw/tests/__snapshots__/history.test.tsx.snap

@@ -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,

+ 6 - 18
packages/excalidraw/tests/__snapshots__/regressionTests.test.tsx.snap

@@ -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,