| // Copyright 2016 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 "flutter/lib/ui/semantics/semantics_update_builder.h" |
| |
| #include "lib/tonic/converter/dart_converter.h" |
| #include "lib/tonic/dart_args.h" |
| #include "lib/tonic/dart_binding_macros.h" |
| #include "lib/tonic/dart_library_natives.h" |
| |
| namespace blink { |
| |
| static void SemanticsUpdateBuilder_constructor(Dart_NativeArguments args) { |
| DartCallConstructor(&SemanticsUpdateBuilder::create, args); |
| } |
| |
| IMPLEMENT_WRAPPERTYPEINFO(ui, SemanticsUpdateBuilder); |
| |
| #define FOR_EACH_BINDING(V) \ |
| V(SemanticsUpdateBuilder, updateNode) \ |
| V(SemanticsUpdateBuilder, build) |
| |
| FOR_EACH_BINDING(DART_NATIVE_CALLBACK) |
| |
| void SemanticsUpdateBuilder::RegisterNatives( |
| tonic::DartLibraryNatives* natives) { |
| natives->Register({{"SemanticsUpdateBuilder_constructor", |
| SemanticsUpdateBuilder_constructor, 1, true}, |
| FOR_EACH_BINDING(DART_REGISTER_NATIVE)}); |
| } |
| |
| SemanticsUpdateBuilder::SemanticsUpdateBuilder() = default; |
| |
| SemanticsUpdateBuilder::~SemanticsUpdateBuilder() = default; |
| |
| void SemanticsUpdateBuilder::updateNode(int id, |
| int flags, |
| int actions, |
| double left, |
| double top, |
| double right, |
| double bottom, |
| std::string label, |
| const tonic::Float64List& transform, |
| const tonic::Int32List& children) { |
| SemanticsNode node; |
| node.id = id; |
| node.flags = flags; |
| node.actions = actions; |
| node.rect = SkRect::MakeLTRB(left, top, right, bottom); |
| node.label = label; |
| node.transform.setColMajord(transform.data()); |
| node.children = std::vector<int32_t>( |
| children.data(), children.data() + children.num_elements()); |
| nodes_.push_back(node); |
| } |
| |
| ftl::RefPtr<SemanticsUpdate> SemanticsUpdateBuilder::build() { |
| return SemanticsUpdate::create(std::move(nodes_)); |
| } |
| |
| } // namespace blink |