aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/InkTranscription.tsx
diff options
context:
space:
mode:
authormehekj <mehek.jethani@gmail.com>2022-04-28 16:31:57 -0400
committermehekj <mehek.jethani@gmail.com>2022-04-28 16:31:57 -0400
commit73d52c3c1a0b06e0180999cb876feb6025df31b2 (patch)
tree98efc54bd6eadacf1c7599178c5abc0211cdb428 /src/client/views/InkTranscription.tsx
parentab5a0bd7cee9366dabf4ce40bde89b67730da2a5 (diff)
fixed timestamps and added some scaling
Diffstat (limited to 'src/client/views/InkTranscription.tsx')
-rw-r--r--src/client/views/InkTranscription.tsx38
1 files changed, 23 insertions, 15 deletions
diff --git a/src/client/views/InkTranscription.tsx b/src/client/views/InkTranscription.tsx
index ea5d5a1ec..a96cda743 100644
--- a/src/client/views/InkTranscription.tsx
+++ b/src/client/views/InkTranscription.tsx
@@ -1,12 +1,13 @@
-import { timeStamp } from 'console';
import * as iink from 'iink-js';
import { action, observable } from 'mobx';
import * as React from 'react';
-import { Doc } from '../../fields/Doc';
+import { Doc, DocListCast } from '../../fields/Doc';
import { InkData, InkField } from "../../fields/InkField";
-import { Cast, NumCast, StrCast } from '../../fields/Types';
+import { Cast, NumCast } from '../../fields/Types';
import { DocumentType } from "../documents/DocumentTypes";
import './InkTranscription.scss';
+import { Utils } from '../../Utils';
+import { timesSeries } from 'async';
export class InkTranscription extends React.Component {
static Instance: InkTranscription;
@@ -16,6 +17,7 @@ export class InkTranscription extends React.Component {
@observable _textRegister: any;
@observable _textRef: any;
private currGroup?: Doc;
+ private containingLayout?: Doc;
constructor(props: Readonly<{}>) {
super(props);
@@ -98,24 +100,26 @@ export class InkTranscription extends React.Component {
return this._textRef = r;
}
- transcribeInk = (groupDoc: Doc | undefined, inkDocs: Doc[], math: boolean) => {
+ transcribeInk = (groupDoc: Doc | undefined, containingLayout: Doc, inkDocs: Doc[], math: boolean) => {
if (!groupDoc) return;
const validInks = inkDocs.filter(s => s.type === DocumentType.INK);
const strokes: InkData[] = [];
+ const times: number[] = [];
validInks.filter(i => Cast(i.data, InkField)).forEach(i => {
- // TODO: interpolate missing times stamps
const d = Cast(i.data, InkField, null);
const left = Math.min(...d?.inkData.map(pd => pd.X) ?? [0]);
const top = Math.min(...d?.inkData.map(pd => pd.Y) ?? [0]);
- strokes.push(d.inkData.map(pd => ({ X: pd.X + NumCast(i.x) - left, Y: pd.Y + NumCast(i.y) - top, time: pd.time })));
+ strokes.push(d.inkData.map(pd => ({ X: pd.X + NumCast(i.x) - left, Y: pd.Y + NumCast(i.y) - top })));
+ times.push(NumCast(i.creationDate, 1));
});
this.currGroup = groupDoc;
+ this.containingLayout = containingLayout;
- const pointerData = { "events": strokes.map(stroke => this.inkJSON(stroke)) };
- // console.log(JSON.stringify(pointerData));
+ const pointerData = { "events": strokes.map((stroke, i) => this.inkJSON(stroke, times[i])) };
+ console.log(JSON.stringify(pointerData));
const processGestures = false;
if (math) {
@@ -126,13 +130,17 @@ export class InkTranscription extends React.Component {
}
}
- inkJSON = (stroke: InkData) => {
+ inkJSON = (stroke: InkData, time: number) => {
+ const scale = NumCast(this.containingLayout?._viewScale, 1);
+ const panX = NumCast(this.containingLayout?._panX);
+ const panY = NumCast(this.containingLayout?._panY);
+
return {
"pointerType": "PEN",
"pointerId": 1,
- "x": stroke.map(point => point.X),
- "y": stroke.map(point => point.Y),
- "t": stroke.map(point => point.time),
+ "x": stroke.map(point => (point.X - panX) * scale),
+ "y": stroke.map(point => (point.Y - panY) * scale),
+ "t": new Array(stroke.length).fill(time),
"p": new Array(stroke.length).fill(1.0)
};
}
@@ -142,7 +150,7 @@ export class InkTranscription extends React.Component {
if (exports) {
if (exports['application/x-latex']) {
const latex = exports['application/x-latex'];
- console.log(latex);
+ // console.log(latex);
if (this.currGroup) {
this.currGroup.text = latex;
@@ -153,11 +161,11 @@ export class InkTranscription extends React.Component {
}
else if (exports['text/plain']) {
const text = exports['text/plain'];
- console.log(text);
+ // console.log(text);
if (this.currGroup) {
this.currGroup.text = text;
- this.currGroup.title = text;
+ this.currGroup.title = text.split("\n")[0];
}
ref.editor.clear();