• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_ACCESSIBILITY_ACCESSIBILITY_UTILS_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_ACCESSIBILITY_ACCESSIBILITY_UTILS_H
18 
19 #include <cstddef>
20 #include <cstdint>
21 
22 #include "base/geometry/rect.h"
23 
24 namespace OHOS::Ace {
25 
26 // define accessibility node tags
27 extern const char ACCESSIBILITY_TAG_DIV[];
28 extern const char ACCESSIBILITY_TAG_CALENDAR[];
29 extern const char ACCESSIBILITY_TAG_TEXT[];
30 extern const char ACCESSIBILITY_TAG_PICKER[];
31 extern const char ACCESSIBILITY_TAG_OPTION[];
32 extern const char ACCESSIBILITY_TAG_POPUP[];
33 extern const char ACCESSIBILITY_TAG_PROGRESS[];
34 extern const char ACCESSIBILITY_TAG_SELECT[];
35 extern const char ACCESSIBILITY_TAG_MENU[];
36 extern const char ACCESSIBILITY_TAG_SLIDER[];
37 extern const char ACCESSIBILITY_TAG_SPAN[];
38 extern const char ACCESSIBILITY_TAG_STACK[];
39 extern const char ACCESSIBILITY_TAG_SWIPER[];
40 extern const char ACCESSIBILITY_TAG_SWITCH[];
41 extern const char ACCESSIBILITY_TAG_TABS[];
42 extern const char ACCESSIBILITY_TAG_TAB_BAR[];
43 extern const char ACCESSIBILITY_TAG_TAB_CONTENT[];
44 extern const char ACCESSIBILITY_TAG_REFRESH[];
45 extern const char ACCESSIBILITY_TAG_IMAGE[];
46 extern const char ACCESSIBILITY_TAG_LIST[];
47 extern const char ACCESSIBILITY_TAG_LIST_ITEM[];
48 extern const char ACCESSIBILITY_TAG_LIST_ITEM_GROUP[];
49 extern const char ACCESSIBILITY_TAG_VIDEO[];
50 extern const char ACCESSIBILITY_TAG_RATING[];
51 extern const char ACCESSIBILITY_TAG_MARQUEE[];
52 extern const char ACCESSIBILITY_TAG_NAVIGATION_BAR[];
53 extern const char ACCESSIBILITY_TAG_NAVIGATION_MENU[];
54 extern const char ACCESSIBILITY_TAG_TEXTAREA[];
55 extern const char ACCESSIBILITY_TAG_INPUT[];
56 extern const char ACCESSIBILITY_TAG_LABEL[];
57 extern const char ACCESSIBILITY_TAG_DIVIDER[];
58 extern const char ACCESSIBILITY_TAG_CANVAS[];
59 extern const char ACCESSIBILITY_TAG_BUTTON[];
60 extern const char ACCESSIBILITY_TAG_CHART[];
61 extern const char ACCESSIBILITY_TAG_CLOCK[];
62 extern const char ACCESSIBILITY_TAG_DIALOG[];
63 extern const char ACCESSIBILITY_TAG_SEARCH[];
64 
65 extern const int32_t FOCUS_DIRECTION_UP;
66 extern const int32_t FOCUS_DIRECTION_DOWN;
67 extern const int32_t FOCUS_DIRECTION_LEFT;
68 extern const int32_t FOCUS_DIRECTION_RIGHT;
69 extern const int32_t FOCUS_DIRECTION_FORWARD;
70 extern const int32_t FOCUS_DIRECTION_BACKWARD;
71 
72 enum class AccessibilityEventType : size_t {
73     CLICK = 0x00000001,
74     LONG_PRESS = 0x00000002,
75     SELECTED = 0x00000004,
76     BLUR = 0x00000007,
77     FOCUS = 0x00000008,
78     TEXT_CHANGE = 0x00000010,
79     EJECT_DISMISS = 0x00000020,
80     MOUSE = 149,
81     KEYBOARD_BACK = 150,
82     KEYBOARD_UP = 151,
83     KEYBOARD_DOWN = 152,
84     KEYBOARD_LEFT = 153,
85     KEYBOARD_RIGHT = 154,
86     KEYBOARD_CENTER = 155,
87     HANDLE_A = 156,
88     HANDLE_SELECT = 157,
89     KEYBOARD_TAB = 158,
90     KEYBOARD_SPACE = 159,
91     KEYBOARD_ENTER = 160,
92     KEYBOARD_ESCAPE = 161,
93     KEYBOARD_NUMBER_ENTER = 162,
94     TV_CONTROL_MEDIA_PLAY = 163,
95     PAGE_CHANGE = 200,
96     TOUCH_START = 0x00000200,
97     TOUCH_MOVE = 0x00000201,
98     TOUCH_CANCEL = 0x00000202,
99     TOUCH_END = 0x00000400,
100     CHANGE = 0x00000800,
101     SCROLL_END = 0x00001000,
102     TEXT_SELECTION_UPDATE = 0x000002000,
103     ACCESSIBILITY_FOCUSED = 0x00008000,
104     ACCESSIBILITY_FOCUS_CLEARED = 0x00010000,
105     TEXT_MOVE_UNIT = 0x00020000,
106     SCROLL_START = 0x01000000,
107     UNKNOWN,
108 };
109 
110 enum WindowUpdateType : int32_t {
111     WINDOW_UPDATE_INVALID = 0,
112     WINDOW_UPDATE_ACCESSIBILITY_FOCUSED = 0x00000001,
113     WINDOW_UPDATE_FOCUSED = 0x00000002,
114     WINDOW_UPDATE_ACTIVE = 0x00000004,
115     WINDOW_UPDATE_ADDED = 0x00000008,
116     WINDOW_UPDATE_REMOVED = 0x00000010,
117     WINDOW_UPDATE_BOUNDS = 0x00000020,
118     WINDOW_UPDATE_TITLE = 0x00000040,
119     WINDOW_UPDATE_LAYER = 0x00000080,
120     WINDOW_UPDATE_PARENT = 0x00000100,
121     WINDOW_UPDATE_CHILDREN = 0x00000200,
122     WINDOW_UPDATE_PIP = 0x00000400,
123 };
124 
125 enum WindowsContentChangeTypes : int32_t {
126     CONTENT_CHANGE_TYPE_INVALID = 0,
127     CONTENT_CHANGE_TYPE_SUBTREE = 0x00000001,
128     CONTENT_CHANGE_TYPE_TEXT = 0x00000002,
129     CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 0x00000004,
130 };
131 
132 struct OperableInfo {
133     bool checkable = false;
134     bool clickable = false;
135     bool scrollable = false;
136     bool longClickable = false;
137     bool focusable = false;
138 };
139 
140 enum class AceAction : uint32_t {
141     ACTION_NONE = 0,
142     GLOBAL_ACTION_BACK,
143     CUSTOM_ACTION,
144     ACTION_CLICK = 10,
145     ACTION_LONG_CLICK,
146     ACTION_SCROLL_FORWARD,
147     ACTION_SCROLL_BACKWARD,
148     ACTION_FOCUS,
149     ACTION_CLEAR_FOCUS,
150     ACTION_ACCESSIBILITY_FOCUS,
151     ACTION_CLEAR_ACCESSIBILITY_FOCUS,
152     ACTION_NEXT_AT_MOVEMENT_GRANULARITY,
153     ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY,
154     ACTION_SET_TEXT,
155     ACTION_COPY,
156     ACTION_PASTE,
157     ACTION_CUT,
158     ACTION_SELECT,
159     ACTION_SET_SELECTION,
160     ACTION_CLEAR_SELECTION,
161 };
162 
163 struct AccessibilityValue {
164     double min = 0.0;
165     double max = 0.0;
166     double current = 0.0;
167 };
168 
169 enum class AceTextCategory {
170     INPUT_TYPE_DEFAULT = 0,
171     INPUT_TYPE_TEXT,
172     INPUT_TYPE_EMAIL,
173     INPUT_TYPE_DATE,
174     INPUT_TYPE_TIME,
175     INPUT_TYPE_NUMBER,
176     INPUT_TYPE_PASSWORD,
177     INPUT_TYPE_PHONENUMBER
178 };
179 
180 struct AceCollectionInfo {
181     int32_t rows = 0;
182     int32_t columns = 0;
183     int32_t selectMode = 0;
184 };
185 
186 struct AceCollectionItemInfo {
187     bool heading = false;
188     int32_t row = 0;
189     int32_t column = 0;
190     int32_t rowSpan = 0;
191     int32_t columnSpan = 0;
192 };
193 
194 bool CheckBetterRect(const Rect& nodeRect, int direction, const Rect& itemRect, const Rect& tempBest);
195 
196 } // namespace OHOS::Ace
197 
198 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_ACCESSIBILITY_ACCESSIBILITY_UTILS_H
199