semantics_node.h 1.8 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
// 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.

#ifndef FLUTTER_LIB_UI_SEMANTICS_SEMANTICS_NODE_H_
#define FLUTTER_LIB_UI_SEMANTICS_SEMANTICS_NODE_H_

#include <stdint.h>

#include <string>
#include <vector>

#include "third_party/skia/include/core/SkMatrix44.h"
#include "third_party/skia/include/core/SkRect.h"

namespace blink {

// Must match the SemanticsAction enum in semantics.dart.
enum class SemanticsAction : int32_t {
  kTap = 1 << 0,
  kLongPress = 1 << 1,
  kScrollLeft = 1 << 2,
  kScrollRight = 1 << 3,
  kScrollUp = 1 << 4,
  kScrollDown = 1 << 5,
  kIncrease = 1 << 6,
  kDecrease = 1 << 7,
};

30 31 32 33 34 35
const int kScrollableSemanticsActions =
    static_cast<int32_t>(SemanticsAction::kScrollLeft) |
    static_cast<int32_t>(SemanticsAction::kScrollRight) |
    static_cast<int32_t>(SemanticsAction::kScrollUp) |
    static_cast<int32_t>(SemanticsAction::kScrollDown);

36 37 38 39
// Must match the SemanticsFlags enum in semantics.dart.
enum class SemanticsFlags : int32_t {
  kHasCheckedState = 1 << 0,
  kIsChecked = 1 << 1,
40
  kIsSelected = 1 << 2,
A
amirh 已提交
41
  kIsButton = 1 << 3,
42 43
  kIsTextField = 1 << 4,
  kIsFocused = 1 << 5,
44 45 46 47 48 49
};

struct SemanticsNode {
  SemanticsNode();
  ~SemanticsNode();

50 51 52
  bool HasAction(SemanticsAction action);
  bool HasFlag(SemanticsFlags flag);

53 54 55 56
  int32_t id = 0;
  int32_t flags = 0;
  int32_t actions = 0;
  std::string label;
57 58
  std::string hint;
  std::string value;
59 60
  std::string increasedValue;
  std::string decreasedValue;
61
  int32_t textDirection = 0;  // 0=unknown, 1=rtl, 2=ltr
62

63 64 65 66 67 68 69 70
  SkRect rect = SkRect::MakeEmpty();
  SkMatrix44 transform = SkMatrix44(SkMatrix44::kIdentity_Constructor);
  std::vector<int32_t> children;
};

}  // namespace blink

#endif  // FLUTTER_LIB_UI_SEMANTICS_SEMANTICS_NODE_H_