aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/client/views/GestureOverlay.tsx8
-rw-r--r--src/client/views/InkTranscription.tsx19
-rw-r--r--src/client/views/MainView.tsx2
-rw-r--r--src/pen-gestures/GestureTypes.ts1
-rw-r--r--src/pen-gestures/ndollar.ts96
5 files changed, 121 insertions, 5 deletions
diff --git a/src/client/views/GestureOverlay.tsx b/src/client/views/GestureOverlay.tsx
index e3e252593..e961bc031 100644
--- a/src/client/views/GestureOverlay.tsx
+++ b/src/client/views/GestureOverlay.tsx
@@ -94,6 +94,7 @@ export class GestureOverlay extends ObservableReactComponent<React.PropsWithChil
@action
onPointerDown = (e: React.PointerEvent) => {
+ console.log('pointerdown');
if (!(e.target as any)?.className?.toString().startsWith('lm_')) {
if ([InkTool.Highlighter, InkTool.Pen, InkTool.Write].includes(Doc.ActiveTool)) {
this._points.push({ X: e.clientX, Y: e.clientY });
@@ -132,6 +133,7 @@ export class GestureOverlay extends ObservableReactComponent<React.PropsWithChil
}
@action
onPointerUp = () => {
+ console.log('pointer up');
DocumentView.DownDocView = undefined;
if (this._points.length > 1) {
const B = this.svgBounds;
@@ -147,7 +149,9 @@ export class GestureOverlay extends ObservableReactComponent<React.PropsWithChil
else {
// need to decide when to turn gestures back on
const result = points.length > 2 && GestureUtils.GestureRecognizer.Recognize([points]);
+ console.log(points);
let actionPerformed = false;
+ console.log(result);
if (Doc.UserDoc().recognizeGestures && result && result.Score > 0.7) {
switch (result.Name) {
case Gestures.Line:
@@ -156,10 +160,14 @@ export class GestureOverlay extends ObservableReactComponent<React.PropsWithChil
case Gestures.Circle:
this.makeBezierPolygon(result.Name, true);
actionPerformed = this.dispatchGesture(result.Name);
+ console.log(result.Name);
+ console.log();
break;
case Gestures.Scribble:
console.log('scribble');
break;
+ case Gestures.RightAngle:
+ console.log('RightAngle');
default:
}
}
diff --git a/src/client/views/InkTranscription.tsx b/src/client/views/InkTranscription.tsx
index f07f7c0a7..3f90df7d1 100644
--- a/src/client/views/InkTranscription.tsx
+++ b/src/client/views/InkTranscription.tsx
@@ -123,10 +123,11 @@ export class InkTranscription extends React.Component {
strokes.push(d.inkData.map(pd => inkStroke.ptToScreen({ X: pd.X, Y: pd.Y })));
times.push(DateCast(i.author_date).getDate().getTime());
});
-
+ console.log(strokes);
+ console.log(this.convertPointsToString(strokes));
+ console.log(this.convertPointsToString2(strokes));
this.currGroup = groupDoc;
const pointerData = strokes.map((stroke, i) => this.inkJSON(stroke, times[i]));
- console.log(JSON.stringify(pointerData));
const processGestures = false;
if (math) {
console.log('math');
@@ -135,6 +136,12 @@ export class InkTranscription extends React.Component {
this.iinkEditor.importPointEvents(pointerData);
}
};
+ convertPointsToString(points: InkData[]): string {
+ return points[0].map(point => `new Point(${point.X}, ${point.Y})`).join(',\n ');
+ }
+ convertPointsToString2(points: InkData[]): string {
+ return points[0].map(point => `(${point.X},${point.Y})`).join(',');
+ }
/**
* Converts the Dash Ink Data to JSON.
@@ -253,6 +260,8 @@ export class InkTranscription extends React.Component {
this.currGroup.title = text;
let image = await this.getIcon();
const pathname = image?.url.href as string;
+ console.log(image?.url);
+ console.log(image);
const { href } = (image as URLField).url;
const hrefParts = href.split('.');
const hrefComplete = `${hrefParts[0]}_o.${hrefParts[1]}`;
@@ -267,7 +276,7 @@ export class InkTranscription extends React.Component {
const textBoxText = 'iink: ' + text + '\n' + '\n' + 'ChatGPT: ' + response;
if (!this.currGroup.hasTextBox) {
const newDoc = Docs.Create.TextDocument(textBoxText, { title: '', x: this.currGroup.x as number, y: (this.currGroup.y as number) + (this.currGroup.height as number) });
- newDoc.width = 100;
+ newDoc.height = 200;
this.collectionFreeForm?.addDocument(newDoc);
this.currGroup.hasTextBox = true;
}
@@ -278,9 +287,11 @@ export class InkTranscription extends React.Component {
};
async getIcon() {
const docView = DocumentView.getDocumentView(this.currGroup);
+ console.log(this.currGroup);
if (docView) {
+ console.log(docView);
docView.ComponentView?.updateIcon?.();
- return new Promise<ImageField | undefined>(res => setTimeout(() => res(ImageCast(docView.Document.icon)), 500));
+ return new Promise<ImageField | undefined>(res => setTimeout(() => res(ImageCast(docView.Document.icon)), 1000));
}
return undefined;
}
diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx
index 8a3b0f27c..f8c7fd7b1 100644
--- a/src/client/views/MainView.tsx
+++ b/src/client/views/MainView.tsx
@@ -1097,7 +1097,7 @@ export class MainView extends ObservableReactComponent<{}> {
<MarqueeOptionsMenu />
<TimelineMenu />
<RichTextMenu />
- <InkTranscription/>
+ <InkTranscription />
{this.snapLines}
<LightboxView key="lightbox" PanelWidth={this._windowWidth} addSplit={CollectionDockingView.AddSplit} PanelHeight={this._windowHeight} maxBorder={this.lightboxMaxBorder} />
<GPTPopup key="gptpopup" />
diff --git a/src/pen-gestures/GestureTypes.ts b/src/pen-gestures/GestureTypes.ts
index d86562580..2e1c9d16f 100644
--- a/src/pen-gestures/GestureTypes.ts
+++ b/src/pen-gestures/GestureTypes.ts
@@ -7,6 +7,7 @@ export enum Gestures {
Circle = 'circle',
Rectangle = 'rectangle',
Arrow = 'arrow',
+ RightAngle = 'rightangle',
}
// Defines a point in an ink as a pair of x- and y-coordinates.
diff --git a/src/pen-gestures/ndollar.ts b/src/pen-gestures/ndollar.ts
index ff7f7310b..31a4eb0e8 100644
--- a/src/pen-gestures/ndollar.ts
+++ b/src/pen-gestures/ndollar.ts
@@ -209,6 +209,7 @@ export class NDollarRecognizer {
])
)
);
+ this.Multistrokes.push(new Multistroke(Gestures.Rectangle, useBoundedRotationInvariance, new Array([new Point(30, 143), new Point(106, 146), new Point(106, 225), new Point(30, 222), new Point(30, 146)])));
this.Multistrokes.push(new Multistroke(Gestures.Line, useBoundedRotationInvariance, [[new Point(12, 347), new Point(119, 347)]]));
this.Multistrokes.push(
new Multistroke(
@@ -219,6 +220,13 @@ export class NDollarRecognizer {
);
this.Multistrokes.push(
new Multistroke(
+ Gestures.Triangle, // equilateral
+ useBoundedRotationInvariance,
+ new Array([new Point(42, 100), new Point(140, 102), new Point(100, 200), new Point(40, 100)])
+ )
+ );
+ this.Multistrokes.push(
+ new Multistroke(
Gestures.Circle,
useBoundedRotationInvariance,
new Array([
@@ -236,6 +244,94 @@ export class NDollarRecognizer {
])
)
);
+ this.Multistrokes.push(
+ new Multistroke(
+ Gestures.Circle,
+ useBoundedRotationInvariance,
+ new Array([
+ new Point(201, 250),
+ new Point(160, 230),
+ new Point(151, 210),
+ new Point(151, 190),
+ new Point(160, 170),
+ new Point(200, 150),
+ new Point(240, 170),
+ new Point(248, 190),
+ new Point(248, 210),
+ new Point(240, 230),
+ new Point(200, 250),
+ ])
+ )
+ );
+ this.Multistrokes.push(
+ new Multistroke(
+ Gestures.Scribble,
+ useBoundedRotationInvariance,
+ new Array([
+ new Point(232.43359374999994, 428.3789062499997),
+ new Point(232.43359374999994, 382.0359155790783),
+ new Point(265.26320387389393, 340.59025405258205),
+ new Point(285.92968749999994, 300.6953124999997),
+ new Point(285.92968749999994, 300.6953124999997),
+ new Point(290.29904726504463, 292.260623967478),
+ new Point(294.85514947688137, 276.5586112000384),
+ new Point(301.80468749999994, 270.1054687499997),
+ new Point(301.80468749999994, 270.1054687499997),
+ new Point(303.30831790356257, 268.7092405181201),
+ new Point(302.3387333271824, 274.174445118092),
+ new Point(302.58984374999994, 276.2109374999997),
+ new Point(302.58984374999994, 276.2109374999997),
+ new Point(303.5898583815426, 284.3210038050238),
+ new Point(306.34100306922323, 291.42526150092345),
+ new Point(308.55078124999994, 299.2578124999997),
+ new Point(308.55078124999994, 299.2578124999997),
+ new Point(314.02357444430737, 318.65610875195364),
+ new Point(312.83820955386796, 338.9193216781303),
+ new Point(317.41015624999994, 358.4374999999997),
+ new Point(317.41015624999994, 358.4374999999997),
+ new Point(324.6448511447705, 389.323263646351),
+ new Point(341.2272901550544, 419.08257022687917),
+ new Point(351.55468749999994, 449.3085937499997),
+ new Point(351.55468749999994, 449.3085937499997),
+ new Point(354.4485190828321, 457.7782031368645),
+ new Point(359.85272292551673, 488.59621490807643),
+ new Point(368.55859374999994, 492.7578124999997),
+ new Point(368.55859374999994, 492.7578124999997),
+ new Point(368.9336613544369, 492.9371030581646),
+ new Point(375.30018285197116, 475.54269522741924),
+ new Point(385.01171874999994, 460.68749999999966),
+ new Point(385.01171874999994, 460.68749999999966),
+ new Point(409.01141338031505, 423.9765046563952),
+ new Point(465.73402430232653, 338.122252279478),
+ new Point(470.49609374999994, 336.8945312499997),
+ new Point(470.49609374999994, 336.8945312499997),
+ new Point(472.34967396580504, 336.41665510061245),
+ new Point(470.5375229924171, 340.7226912215484),
+ new Point(470.56249999999994, 342.6367187499997),
+ new Point(470.56249999999994, 342.6367187499997),
+ new Point(470.6277554579174, 347.63734752514455),
+ new Point(471.4666087447205, 352.597933700578),
+ new Point(472.79687499999994, 357.4218749999997),
+ new Point(472.79687499999994, 357.4218749999997),
+ new Point(478.7003095537336, 378.82948542322754),
+ new Point(492.1754046938961, 397.52358353298115),
+ new Point(497.80468749999994, 418.6796874999997),
+ new Point(497.80468749999994, 418.6796874999997),
+ new Point(499.2975220287686, 424.29009358262533),
+ new Point(498.6576561843205, 452.5736061983319),
+ new Point(502.21874999999994, 455.3749999999997),
+ new Point(502.21874999999994, 455.3749999999997),
+ new Point(502.3599404176782, 455.4860697952399),
+ new Point(526.9859878583989, 412.7902963819643),
+ new Point(528.28515625, 410.5507812499997),
+ new Point(528.28515625, 410.5507812499997),
+ new Point(534.3674131478522, 400.0661462732759),
+ new Point(586.26953125, 311.2520380124085),
+ new Point(586.26953125, 306.8515624999997),
+ ])
+ )
+ );
+ this.Multistrokes.push(new Multistroke(Gestures.RightAngle, useBoundedRotationInvariance, new Array([new Point(200, 0), new Point(0, 0), new Point(0, 100)])));
NumMultistrokes = this.Multistrokes.length; // NumMultistrokes flags the end of the non user-defined gstures strokes
//
// PREDEFINED STROKES