aboutsummaryrefslogtreecommitdiff
path: root/src/fields/InkField.ts
diff options
context:
space:
mode:
authorSam Wilkins <samwilkins333@gmail.com>2020-05-15 00:03:41 -0700
committerSam Wilkins <samwilkins333@gmail.com>2020-05-15 00:03:41 -0700
commit2b79008596351f6948d8de80c7887446d97b068c (patch)
tree7f393199bf780936cee1427c07c64bd2745fa3f9 /src/fields/InkField.ts
parentb9440e34d89b28acacdd6eed2cda39cd2a1d8c46 (diff)
renamed new_fields to fields
Diffstat (limited to 'src/fields/InkField.ts')
-rw-r--r--src/fields/InkField.ts50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/fields/InkField.ts b/src/fields/InkField.ts
new file mode 100644
index 000000000..bb93de5ac
--- /dev/null
+++ b/src/fields/InkField.ts
@@ -0,0 +1,50 @@
+import { Deserializable } from "../client/util/SerializationHelper";
+import { serializable, custom, createSimpleSchema, list, object, map } from "serializr";
+import { ObjectField } from "./ObjectField";
+import { Copy, ToScriptString, ToString } from "./FieldSymbols";
+
+export enum InkTool {
+ None,
+ Pen,
+ Highlighter,
+ Eraser,
+ Stamp
+}
+
+export interface PointData {
+ X: number;
+ Y: number;
+}
+
+export type InkData = Array<PointData>;
+
+const pointSchema = createSimpleSchema({
+ X: true, Y: true
+});
+
+const strokeDataSchema = createSimpleSchema({
+ pathData: list(object(pointSchema)),
+ "*": true
+});
+
+@Deserializable("ink")
+export class InkField extends ObjectField {
+ @serializable(list(object(strokeDataSchema)))
+ readonly inkData: InkData;
+
+ constructor(data: InkData) {
+ super();
+ this.inkData = data;
+ }
+
+ [Copy]() {
+ return new InkField(this.inkData);
+ }
+
+ [ToScriptString]() {
+ return "invalid";
+ }
+ [ToString]() {
+ return "InkField";
+ }
+}