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