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 HOVER_ENTER_EVENT = 0x0000080, 97 HOVER_EXIT_EVENT = 0x0000100, 98 TOUCH_START = 0x00000200, 99 TOUCH_MOVE = 0x00000201, 100 TOUCH_CANCEL = 0x00000202, 101 TOUCH_END = 0x00000400, 102 CHANGE = 0x00000800, 103 COMPONENT_CHANGE = 0x00000801, 104 SCROLL_END = 0x00001000, 105 TEXT_SELECTION_UPDATE = 0x000002000, 106 ACCESSIBILITY_FOCUSED = 0x00008000, 107 ACCESSIBILITY_FOCUS_CLEARED = 0x00010000, 108 TEXT_MOVE_UNIT = 0x00020000, 109 SCROLL_START = 0x01000000, 110 UNKNOWN, 111 }; 112 113 enum WindowUpdateType : int32_t { 114 WINDOW_UPDATE_INVALID = 0, 115 WINDOW_UPDATE_ACCESSIBILITY_FOCUSED = 0x00000001, 116 WINDOW_UPDATE_FOCUSED = 0x00000002, 117 WINDOW_UPDATE_ACTIVE = 0x00000004, 118 WINDOW_UPDATE_ADDED = 0x00000008, 119 WINDOW_UPDATE_REMOVED = 0x00000010, 120 WINDOW_UPDATE_BOUNDS = 0x00000020, 121 WINDOW_UPDATE_TITLE = 0x00000040, 122 WINDOW_UPDATE_LAYER = 0x00000080, 123 WINDOW_UPDATE_PARENT = 0x00000100, 124 WINDOW_UPDATE_CHILDREN = 0x00000200, 125 WINDOW_UPDATE_PIP = 0x00000400, 126 }; 127 128 enum WindowsContentChangeTypes : int32_t { 129 CONTENT_CHANGE_TYPE_INVALID = 0, 130 CONTENT_CHANGE_TYPE_SUBTREE = 0x00000001, 131 CONTENT_CHANGE_TYPE_TEXT = 0x00000002, 132 CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 0x00000004, 133 }; 134 135 struct OperableInfo { 136 bool checkable = false; 137 bool clickable = false; 138 bool scrollable = false; 139 bool longClickable = false; 140 bool focusable = false; 141 }; 142 143 enum class AceAction : uint32_t { 144 ACTION_NONE = 0, 145 GLOBAL_ACTION_BACK, 146 CUSTOM_ACTION, 147 ACTION_CLICK = 10, 148 ACTION_LONG_CLICK, 149 ACTION_SCROLL_FORWARD, 150 ACTION_SCROLL_BACKWARD, 151 ACTION_FOCUS, 152 ACTION_CLEAR_FOCUS, 153 ACTION_ACCESSIBILITY_FOCUS, 154 ACTION_CLEAR_ACCESSIBILITY_FOCUS, 155 ACTION_NEXT_AT_MOVEMENT_GRANULARITY, 156 ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY, 157 ACTION_SET_TEXT, 158 ACTION_COPY, 159 ACTION_PASTE, 160 ACTION_CUT, 161 ACTION_SELECT, 162 ACTION_SET_SELECTION, 163 ACTION_CLEAR_SELECTION, 164 }; 165 166 struct AccessibilityValue { 167 double min = 0.0; 168 double max = 0.0; 169 double current = 0.0; 170 }; 171 172 enum class AceTextCategory { 173 INPUT_TYPE_DEFAULT = 0, 174 INPUT_TYPE_TEXT, 175 INPUT_TYPE_EMAIL, 176 INPUT_TYPE_DATE, 177 INPUT_TYPE_TIME, 178 INPUT_TYPE_NUMBER, 179 INPUT_TYPE_PASSWORD, 180 INPUT_TYPE_PHONENUMBER, 181 INPUT_TYPE_USER_NAME, 182 INPUT_TYPE_NEW_PASSWORD, 183 }; 184 185 struct AceCollectionInfo { 186 int32_t rows = 0; 187 int32_t columns = 0; 188 int32_t selectMode = 0; 189 }; 190 191 struct AceCollectionItemInfo { 192 bool heading = false; 193 int32_t row = 0; 194 int32_t column = 0; 195 int32_t rowSpan = 0; 196 int32_t columnSpan = 0; 197 }; 198 199 bool CheckBetterRect(const Rect& nodeRect, int direction, const Rect& itemRect, const Rect& tempBest); 200 201 } // namespace OHOS::Ace 202 203 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_ACCESSIBILITY_ACCESSIBILITY_UTILS_H 204