diff options
Diffstat (limited to 'src/fields/InkField.ts')
-rw-r--r-- | src/fields/InkField.ts | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/fields/InkField.ts b/src/fields/InkField.ts index b3e01229a..46704eb2b 100644 --- a/src/fields/InkField.ts +++ b/src/fields/InkField.ts @@ -2,6 +2,7 @@ import { Bezier } from 'bezier-js'; import { alias, createSimpleSchema, list, object, serializable } from 'serializr'; import { ScriptingGlobals } from '../client/util/ScriptingGlobals'; import { Deserializable } from '../client/util/SerializationHelper'; +import { PointData } from '../pen-gestures/GestureTypes'; import { Copy, ToJavascriptString, ToScriptString, ToString } from './FieldSymbols'; import { ObjectField } from './ObjectField'; @@ -16,12 +17,6 @@ export enum InkTool { PresentationPin = 'presentationpin', } -// Defines a point in an ink as a pair of x- and y-coordinates. -export interface PointData { - X: number; - Y: number; -} - export type Segment = Array<Bezier>; // Defines an ink as an array of points. @@ -62,10 +57,10 @@ const strokeDataSchema = createSimpleSchema({ '*': true, }); +export const InkDataFieldName = '__inkData'; @Deserializable('ink') export class InkField extends ObjectField { - public static InkDataFieldName = '__inkData'; - @serializable(alias(InkField.InkDataFieldName, list(object(strokeDataSchema)))) + @serializable(alias(InkDataFieldName, list(object(strokeDataSchema)))) readonly inkData: InkData; constructor(data: InkData) { @@ -94,6 +89,17 @@ export class InkField extends ObjectField { [ToString]() { return 'InkField'; } + + public static getBounds(stroke: InkData, pad?: boolean) { + const padding = pad ? [-20000, 20000] : []; + const xs = [...padding, ...stroke.map(p => p.X)]; + const ys = [...padding, ...stroke.map(p => p.Y)]; + const right = Math.max(...xs); + const left = Math.min(...xs); + const bottom = Math.max(...ys); + const top = Math.min(...ys); + return { right, left, bottom, top, width: right - left, height: bottom - top }; + } } ScriptingGlobals.add('InkField', InkField); |