diff options
| author | yunahi <60233430+yunahi@users.noreply.github.com> | 2020-07-19 04:44:51 +0900 |
|---|---|---|
| committer | yunahi <60233430+yunahi@users.noreply.github.com> | 2020-07-19 04:44:51 +0900 |
| commit | 53713fc7ab10257d1117193941cda2f3e0cabcf5 (patch) | |
| tree | 01269e78f3ec8679f2f2f665dc158731697407e2 /src/client/views/GestureOverlay.tsx | |
| parent | fcc7d375deb197854367ec40691fe0e72fba74f5 (diff) | |
added control points
Diffstat (limited to 'src/client/views/GestureOverlay.tsx')
| -rw-r--r-- | src/client/views/GestureOverlay.tsx | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/client/views/GestureOverlay.tsx b/src/client/views/GestureOverlay.tsx index a48b7b673..90d8b370e 100644 --- a/src/client/views/GestureOverlay.tsx +++ b/src/client/views/GestureOverlay.tsx @@ -23,6 +23,7 @@ import HorizontalPalette from "./Palette"; import { Touchable } from "./Touchable"; import TouchScrollableMenu, { TouchScrollableMenuItem } from "./TouchScrollableMenu"; import InkOptionsMenu from "./collections/collectionFreeForm/InkOptionsMenu"; +import * as fitCurve from 'fit-curve'; @observer export default class GestureOverlay extends Touchable { @@ -632,6 +633,22 @@ export default class GestureOverlay extends Touchable { // if no gesture (or if the gesture was unsuccessful), "dry" the stroke into an ink document if (!actionPerformed) { + const newPoints = this._points.reduce((p, pts) => { p.push([pts.X, pts.Y]); return p; }, [] as number[][]); + newPoints.pop(); + const controlPoints: { X: number, Y: number }[] = []; + + const bezierCurves = fitCurve(newPoints, 10); + for (const curve of bezierCurves) { + + controlPoints.push({ X: curve[0][0], Y: curve[0][1] }); + controlPoints.push({ X: curve[1][0], Y: curve[1][1] }); + controlPoints.push({ X: curve[2][0], Y: curve[2][1] }); + controlPoints.push({ X: curve[3][0], Y: curve[3][1] }); + + + } + this._points = controlPoints; + this.dispatchGesture(GestureUtils.Gestures.Stroke); } this._points = []; |
