Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add IDL for Handwriting Recognition API #1577

Merged
merged 1 commit into from
Jun 21, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 96 additions & 0 deletions custom/idl/handwriting-recognition.idl
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
// https://wicg.github.io/handwriting-recognition/#idl-index

[SecureContext]
partial interface Navigator {
Promise<HandwritingRecognizerQueryResult?> queryHandwritingRecognizer(HandwritingModelConstraint constraint);
};

dictionary HandwritingModelConstraint {
required sequence<DOMString> languages;
};

dictionary HandwritingRecognizerQueryResult {
boolean textAlternatives;
boolean textSegmentation;
HandwritingHintsQueryResult hints;
};

dictionary HandwritingHintsQueryResult {
sequence<HandwritingRecognitionType> recognitionType;
sequence<HandwritingInputType> inputType;
boolean textContext;
boolean alternatives;
};

enum HandwritingRecognitionType{
"text", "per-character"
};

enum HandwritingInputType {
"mouse", "stylus", "touch"
};

[SecureContext]
partial interface Navigator {
Promise<HandwritingRecognizer> createHandwritingRecognizer(HandwritingModelConstraint constraint);
};

[SecureContext, Exposed=Window]
interface HandwritingRecognizer {
[RaisesException]
HandwritingDrawing startDrawing(optional HandwritingHints hints = {});

[RaisesException] undefined finish();
};

dictionary HandwritingHints {
DOMString recognitionType = "text";
DOMString inputType = "mouse";
DOMString textContext;
unsigned long alternatives = 3;
};

[SecureContext, Exposed=Window]
interface HandwritingDrawing {
undefined addStroke(HandwritingStroke stroke);
undefined removeStroke(HandwritingStroke stroke);
undefined clear();
sequence<HandwritingStroke> getStrokes();

Promise<sequence<HandwritingPrediction>> getPrediction();
};

[SecureContext, Exposed=Window]
interface HandwritingStroke {
constructor();
undefined addPoint(HandwritingPoint point);
sequence<HandwritingPoint> getPoints();
undefined clear();
};

dictionary HandwritingPoint {
required double x;
required double y;

// Optional. Number of milliseconds since a reference time point for a
// drawing.
DOMHighResTimeStamp t;
};

dictionary HandwritingPrediction {
required DOMString text;
sequence<HandwritingSegment> segmentationResult;
};

dictionary HandwritingSegment {
required DOMString grapheme;
required unsigned long beginIndex;
required unsigned long endIndex;
required sequence<HandwritingDrawingSegment> drawingSegments;
};

dictionary HandwritingDrawingSegment {
required unsigned long strokeIndex;
required unsigned long beginPointIndex;
required unsigned long endPointIndex;
};
Loading