aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/InkStrokeProperties.ts
diff options
context:
space:
mode:
authoreleanor-park <eleanor_park@brown.edu>2024-09-22 15:40:19 -0400
committereleanor-park <eleanor_park@brown.edu>2024-09-22 15:40:19 -0400
commit692076b1356309111c4f2cb69cbdbf4be1a825bd (patch)
tree5f93b482c0263907b3e53573a6ec89f88bbd01ce /src/client/views/InkStrokeProperties.ts
parent7f4d53ce9f8cf3932b627ab063855e3323cc3dc2 (diff)
small bug fixes for smart draw
Diffstat (limited to 'src/client/views/InkStrokeProperties.ts')
-rw-r--r--src/client/views/InkStrokeProperties.ts35
1 files changed, 12 insertions, 23 deletions
diff --git a/src/client/views/InkStrokeProperties.ts b/src/client/views/InkStrokeProperties.ts
index 13807c25f..5cacde0d4 100644
--- a/src/client/views/InkStrokeProperties.ts
+++ b/src/client/views/InkStrokeProperties.ts
@@ -499,31 +499,20 @@ export class InkStrokeProperties {
const inkView = DocumentView.getDocumentView(inkDoc);
const inkStroke = inkView?.ComponentView as InkingStroke;
const { inkData } = inkStroke.inkScaledData();
-
- const result = inkData.length > 2 && GestureUtils.GestureRecognizer.Recognize([inkData]);
- console.log(result);
- if (result && (result.Name === 'line' ? result.Score > 0.92 : result.Score > 0.85)) {
- switch (result.Name) {
- case Gestures.Line:
- case Gestures.Triangle:
- case Gestures.Rectangle:
- case Gestures.Circle:
- GestureOverlay.makeBezierPolygon(inkData, result.Name, true);
- break;
- default:
- }
- } else {
- const polylinePoints = inkData.filter((pt, index) => { return index % 4 === 0 || pt === inkData.lastElement()}).map(pt => { return { x: pt.X, y: pt.Y }; }); // prettier-ignore
- if (polylinePoints.length > 2) {
- const toKeep = simplify(polylinePoints, tolerance).map(pt => {return { X: pt.x, Y: pt.y }}); // prettier-ignore
- for (var i = 4; i < inkData.length - 3; i += 4) {
- const contains = toKeep.find(pt => pt.X === inkData[i].X && pt.Y === inkData[i].Y);
- if (!contains) {
- this._currentPoint = i;
- inkView && this.deletePoints(inkView, false);
- }
+ const polylinePoints = inkData.filter((pt, index) => { return index % 4 === 0 || pt === inkData.lastElement()}).map(pt => { return { x: pt.X, y: pt.Y }; }); // prettier-ignore
+ if (polylinePoints.length > 2) {
+ const toKeep = simplify(polylinePoints, tolerance).map(pt => {return { X: pt.x, Y: pt.y }}); // prettier-ignore
+ for (var i = 4; i < inkData.length - 3; i += 4) {
+ const contains = toKeep.find(pt => pt.X === inkData[i].X && pt.Y === inkData[i].Y);
+ if (!contains) {
+ this._currentPoint = i;
+ inkView && this.deletePoints(inkView, false);
}
}
+ // close the curve if the first and last points are really close (based on tolerance)
+ if (!InkingStroke.IsClosed(inkData) && Math.sqrt((inkData.lastElement().X - inkData[0].X) ** 2 + (inkData.lastElement().Y - inkData[0].Y) ** 2) <= tolerance * 2) {
+ inkData[inkData.length - 1] = inkData[0];
+ }
}
});
}, 'smooth ink stroke');