summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/handwriting/handwriting_type_converters.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/handwriting/handwriting_type_converters.cc')
-rw-r--r--chromium/third_party/blink/renderer/modules/handwriting/handwriting_type_converters.cc204
1 files changed, 204 insertions, 0 deletions
diff --git a/chromium/third_party/blink/renderer/modules/handwriting/handwriting_type_converters.cc b/chromium/third_party/blink/renderer/modules/handwriting/handwriting_type_converters.cc
new file mode 100644
index 00000000000..71771bcecd7
--- /dev/null
+++ b/chromium/third_party/blink/renderer/modules/handwriting/handwriting_type_converters.cc
@@ -0,0 +1,204 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/modules/handwriting/handwriting_type_converters.h"
+
+#include "third_party/blink/public/mojom/handwriting/handwriting.mojom-blink.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_handwriting_drawing_segment.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_handwriting_feature_query.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_handwriting_feature_query_result.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_handwriting_hints.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_handwriting_point.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_handwriting_prediction.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_handwriting_segment.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_handwriting_stroke.h"
+#include "third_party/blink/renderer/modules/modules_export.h"
+
+namespace mojo {
+
+using handwriting::mojom::blink::HandwritingDrawingSegmentPtr;
+using handwriting::mojom::blink::HandwritingFeatureQueryPtr;
+using handwriting::mojom::blink::HandwritingFeatureQueryResultPtr;
+using handwriting::mojom::blink::HandwritingFeatureStatus;
+using handwriting::mojom::blink::HandwritingHintsPtr;
+using handwriting::mojom::blink::HandwritingPointPtr;
+using handwriting::mojom::blink::HandwritingPredictionPtr;
+using handwriting::mojom::blink::HandwritingSegmentPtr;
+using handwriting::mojom::blink::HandwritingStrokePtr;
+
+// Converters from IDL to Mojo.
+
+// static
+HandwritingPointPtr
+TypeConverter<HandwritingPointPtr, blink::HandwritingPoint*>::Convert(
+ const blink::HandwritingPoint* input) {
+ if (!input) {
+ return nullptr;
+ }
+ auto output = handwriting::mojom::blink::HandwritingPoint::New();
+ output->location = gfx::PointF(input->x(), input->y());
+ output->t = base::TimeDelta::FromMilliseconds(input->t());
+ return output;
+}
+
+// static
+HandwritingStrokePtr
+TypeConverter<HandwritingStrokePtr, blink::HandwritingStroke*>::Convert(
+ const blink::HandwritingStroke* input) {
+ if (!input) {
+ return nullptr;
+ }
+ auto output = handwriting::mojom::blink::HandwritingStroke::New();
+ for (const auto& point : input->getPoints()) {
+ output->points.push_back(mojo::ConvertTo<HandwritingPointPtr>(point.Get()));
+ }
+ return output;
+}
+
+// static
+HandwritingHintsPtr
+TypeConverter<HandwritingHintsPtr, blink::HandwritingHints*>::Convert(
+ const blink::HandwritingHints* input) {
+ if (!input) {
+ return nullptr;
+ }
+ auto output = handwriting::mojom::blink::HandwritingHints::New();
+ output->recognition_type = input->recognitionType();
+ output->input_type = input->inputType();
+ output->text_context = input->textContext();
+ output->alternatives = input->alternatives();
+ return output;
+}
+
+// static
+HandwritingFeatureQueryPtr
+TypeConverter<HandwritingFeatureQueryPtr, blink::HandwritingFeatureQuery*>::
+ Convert(const blink::HandwritingFeatureQuery* input) {
+ if (!input) {
+ return nullptr;
+ }
+ auto output = handwriting::mojom::blink::HandwritingFeatureQuery::New();
+ if (input->hasLanguages()) {
+ for (const auto& lang : input->languages()) {
+ output->languages.push_back(lang);
+ }
+ }
+ output->alternatives = input->hasAlternatives();
+ output->segmentation_result = input->hasSegmentationResult();
+
+ return output;
+}
+
+// Converters from Mojo to IDL.
+
+// static
+blink::HandwritingPoint*
+TypeConverter<blink::HandwritingPoint*, HandwritingPointPtr>::Convert(
+ const HandwritingPointPtr& input) {
+ if (!input) {
+ return nullptr;
+ }
+ auto* output = blink::HandwritingPoint::Create();
+ output->setX(input->location.x());
+ output->setY(input->location.y());
+ output->setT(input->t.InMilliseconds());
+ return output;
+}
+
+// static
+blink::HandwritingStroke*
+TypeConverter<blink::HandwritingStroke*, HandwritingStrokePtr>::Convert(
+ const HandwritingStrokePtr& input) {
+ if (!input) {
+ return nullptr;
+ }
+ auto* output = blink::HandwritingStroke::Create();
+ for (const auto& point : input->points) {
+ output->addPoint(point.To<blink::HandwritingPoint*>());
+ }
+ return output;
+}
+
+// static
+blink::HandwritingFeatureQueryResult*
+TypeConverter<blink::HandwritingFeatureQueryResult*,
+ HandwritingFeatureQueryResultPtr>::
+ Convert(const HandwritingFeatureQueryResultPtr& input) {
+ if (!input) {
+ return nullptr;
+ }
+ auto* output = blink::HandwritingFeatureQueryResult::Create();
+
+#define HANDWRITING_SET_FEATURE_QUERY_RESULT(feature, setter) \
+ if (input->feature != HandwritingFeatureStatus::kNotQueried) { \
+ if (input->feature == HandwritingFeatureStatus::kNotSupported) { \
+ output->setter(false); \
+ } else { \
+ output->setter(true); \
+ } \
+ }
+
+ HANDWRITING_SET_FEATURE_QUERY_RESULT(languages, setLanguages);
+ HANDWRITING_SET_FEATURE_QUERY_RESULT(alternatives, setAlternatives);
+ HANDWRITING_SET_FEATURE_QUERY_RESULT(segmentation_result,
+ setSegmentationResult);
+#undef HANDWRITING_SET_FEATURE_QUERY_RESULT
+
+ return output;
+}
+
+// static
+blink::HandwritingDrawingSegment*
+TypeConverter<blink::HandwritingDrawingSegment*, HandwritingDrawingSegmentPtr>::
+ Convert(const HandwritingDrawingSegmentPtr& input) {
+ if (!input) {
+ return nullptr;
+ }
+ auto* output = blink::HandwritingDrawingSegment::Create();
+ output->setStrokeIndex(input->stroke_index);
+ output->setBeginPointIndex(input->begin_point_index);
+ output->setEndPointIndex(input->end_point_index);
+ return output;
+}
+
+// static
+blink::HandwritingSegment*
+TypeConverter<blink::HandwritingSegment*,
+ handwriting::mojom::blink::HandwritingSegmentPtr>::
+ Convert(const handwriting::mojom::blink::HandwritingSegmentPtr& input) {
+ if (!input) {
+ return nullptr;
+ }
+ auto* output = blink::HandwritingSegment::Create();
+ output->setGrapheme(input->grapheme);
+ output->setBeginIndex(input->begin_index);
+ output->setEndIndex(input->end_index);
+ blink::HeapVector<blink::Member<blink::HandwritingDrawingSegment>>
+ drawing_segments;
+ for (const auto& drw_seg : input->drawing_segments) {
+ drawing_segments.push_back(drw_seg.To<blink::HandwritingDrawingSegment*>());
+ }
+ output->setDrawingSegments(std::move(drawing_segments));
+ return output;
+}
+
+// static
+blink::HandwritingPrediction*
+TypeConverter<blink::HandwritingPrediction*,
+ handwriting::mojom::blink::HandwritingPredictionPtr>::
+ Convert(const handwriting::mojom::blink::HandwritingPredictionPtr& input) {
+ if (!input) {
+ return nullptr;
+ }
+ auto* output = blink::HandwritingPrediction::Create();
+ output->setText(input->text);
+ blink::HeapVector<blink::Member<blink::HandwritingSegment>> segments;
+ for (const auto& seg : input->segmentation_result) {
+ segments.push_back(seg.To<blink::HandwritingSegment*>());
+ }
+ output->setSegmentationResult(std::move(segments));
+ return output;
+}
+
+} // namespace mojo