1/*
2 * Copyright (C) 2022 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 ACCESSIBILITY_WINDOW_INFO_H
17#define ACCESSIBILITY_WINDOW_INFO_H
18
19#include <vector>
20#include "accessibility_element_info.h"
21
22namespace OHOS {
23namespace Accessibility {
24class AccessibilityWindowInfo {
25public:
26    /**
27     * @brief Construct
28     * @since 3
29     * @sysCap Accessibility
30     */
31    AccessibilityWindowInfo();
32
33    /**
34     * @brief Get the window type.
35     * @return The accessibility window type. Refer to [AccessibilityWindowType].
36     * @since 3
37     * @sysCap Accessibility
38     */
39    AccessibilityWindowType GetAccessibilityWindowType() const;
40
41    /**
42     * @brief Set the window type.
43     * @param type The accessibility window type. Refer to [AccessibilityWindowType].
44     * @since 3
45     * @sysCap Accessibility
46     */
47    void SetAccessibilityWindowType(const AccessibilityWindowType type);
48
49    /**
50     * @brief Get The window layer
51     * @return The layer of window
52     * @since 3
53     * @sysCap Accessibility
54     */
55    int32_t GetWindowLayer() const;
56
57    /**
58     * @brief Set The window layer
59     * @param layer The window layer
60     * @since 3
61     * @sysCap Accessibility
62     */
63    void SetWindowLayer(const int32_t layer);
64
65    /**
66     * @brief Get the window id of current window.
67     * @return The window id of current window.
68     * @since 3
69     * @sysCap Accessibility
70     */
71    int32_t GetWindowId() const;
72
73    /**
74     * @brief Set the window id of current window.
75     * @param id The window id of current window.
76     * @since 3
77     * @sysCap Accessibility
78     */
79    void SetWindowId(const int32_t id);
80
81    /**
82     * @brief Get the screen pixel coordinates
83     * @return The screen pixel coordinates
84     * @since 3
85     * @sysCap Accessibility
86     */
87    const Rect &GetRectInScreen() const;
88
89    /**
90     * @brief Set the screen pixel coordinates
91     * @param bounds The screen pixel coordinates
92     * @since 3
93     * @sysCap Accessibility
94     */
95    void SetRectInScreen(const Rect &bounds);
96
97    /**
98     * @brief Check whether the window is active or not.
99     * @return true: the window is active, otherwise is not.
100     * @since 3
101     * @sysCap Accessibility
102     */
103    bool IsActive() const;
104
105    /**
106     * @brief Set whether the window is active or not.
107     * @param active true: the window is active, otherwise is not.
108     * @since 3
109     * @sysCap Accessibility
110     */
111    void SetActive(bool active);
112
113    /**
114     * @brief Checks whether this window has gained focus.
115     * @return true: the window has gained focus, otherwise is not.
116     * @since 3
117     * @sysCap Accessibility
118     */
119    bool IsFocused() const;
120
121    /**
122     * @brief Set whether this window has gained focus.
123     * @param focused true: the window has gained focus, otherwise is not.
124     * @since 3
125     * @sysCap Accessibility
126     */
127    void SetFocused(bool focused);
128
129    /**
130     * @brief Checks whether this window has gained accessibility focus.
131     * @return true: this window has gained accessibility focus, otherwise is not.
132     * @since 3
133     * @sysCap Accessibility
134     */
135    bool IsAccessibilityFocused() const;
136
137    /**
138     * @brief Set whether this window has gained accessibility focus.
139     * @param accessibilityFocused true: this window has gained accessibility focus, otherwise is not.
140     * @since 3
141     * @sysCap Accessibility
142     */
143    void SetAccessibilityFocused(const bool accessibilityFocused);
144
145    /**
146     * @brief Set the display id
147     * @param displayId the display id of the window
148     * @sysCap Accessibility
149     */
150    void SetDisplayId(const uint64_t displayId);
151
152    /**
153     * @brief Get the display id
154     * @return Return the display id of the window.
155     * @sysCap Accessibility
156     */
157    uint64_t GetDisplayId() const;
158
159    /**
160     * @brief Get window type
161     * @return The type of window. Refer to [OHOS::Rosen::WindowType].
162     * @sysCap Accessibility
163     */
164    uint32_t GetWindowType() const;
165
166    /**
167     * @brief Set window type
168     * @param type The type of window. Refer to [OHOS::Rosen::WindowType].
169     * @sysCap Accessibility
170     */
171    void SetWindowType(const uint32_t type);
172
173    /**
174     * @brief Get window mode
175     * @return The mode of window. Refer to [OHOS::Rosen::WindowMode].
176     * @sysCap Accessibility
177     */
178    uint32_t GetWindowMode() const;
179
180    /**
181     * @brief Set window mode
182     * @param mode The mode of window. Refer to [OHOS::Rosen::WindowMode].
183     * @sysCap Accessibility
184     */
185    void SetWindowMode(const uint32_t mode);
186
187    /**
188     * @brief Get whether the decoration state is enabled
189     * @return true:the decoration is enabled; false:the decoration is disabled
190     * @sysCap Accessibility
191     */
192    bool IsDecorEnable() const;
193
194    /**
195     * @brief Set the decoration state
196     * @param isDecorEnable true:enable decoration; false:disable decoration
197     * @sysCap Accessibility
198     */
199    void SetDecorEnable(const bool isDecorEnable);
200
201    /**
202     * @brief Set inner window id
203     * @param innerWid inner window id
204     * @sysCap Accessibility
205     */
206    void SetInnerWid(const int32_t innerWid);
207
208    /**
209     * @brief Get inner window id
210     * @return Inner window id
211     * @sysCap Accessibility
212     */
213    int32_t GetInnerWid() const;
214
215    /**
216     * @brief Set arkui node id
217     * @param nodeId Arkui node id
218     * @sysCap Accessibility
219     */
220    void SetUiNodeId(const int64_t nodeId);
221
222    /**
223     * @brief Get arkui node id
224     * @return Arkui node id
225     * @sysCap Accessibility
226     */
227    int64_t GetUiNodeId() const;
228
229    /**
230     * @brief Set window scale val
231     * @param scaleVal_ WMS scale Val
232     * @sysCap Accessibility
233    */
234    void SetScaleVal(const float scaleVal);
235
236    /**
237     * @brief Get window scale val
238     * @return window scale val
239     * @sysCap Accessibility
240    */
241    float GetScaleVal() const;
242
243    /**
244     * @brief Set window scale x
245     * @param scaleX_ WMS scale x
246     * @sysCap Accessibility
247    */
248    void SetScaleX(const float scaleX);
249
250    /**
251     * @brief Get window Scale X
252     * @return window Scale X
253     * @sysCap Accessibility
254    */
255    float GetScaleX() const;
256
257    /**
258     * @brief Set window scale Y
259     * @param scaleY_ WMS scale Y
260     * @sysCap Accessibility
261    */
262    void SetScaleY(const float scaleY);
263
264    /**
265     * @brief Get window scale Y
266     * @return window scale Y
267     * @sysCap Accessibility
268    */
269    float GetScaleY() const;
270
271    /**
272     * @brief Set window bundle name
273     * @param bundleName_ WMS bundle name
274     * @sysCap Accessibility
275    */
276    void SetBundleName(const std::string bundleName);
277
278    /**
279     * @brief Get window bundle name
280     * @return window bundle name
281     * @sysCap Accessibility
282    */
283    std::string GetBundleName();
284
285    /**
286     * @brief Set window touch hot areas
287     * @param touchHotAreas_ WMS touch hot areas
288     * @sysCap Accessibility
289    */
290    void SetTouchHotAreas(const std::vector<Rect> &touchHotAreas);
291
292    /**
293     * @brief Get window touch hot areas
294     * @return window touch hot areas
295     * @sysCap Accessibility
296    */
297    std::vector<Rect> GetTouchHotAreas();
298
299    /**
300     * @brief Get the main window id of current window.
301     * @return The main window id of current window.
302     * @sysCap Accessibility
303     */
304    int32_t GetMainWindowId() const;
305
306    /**
307     * @brief Set the main window id of current window.
308     * @param id The main window id of current window.
309     * @sysCap Accessibility
310     */
311    void SetMainWindowId(const int32_t id);
312
313protected:
314    uint64_t displayId_ = 0;
315    uint32_t windowMode_ = 0;
316    uint32_t windowType_ = 0;
317    AccessibilityWindowType accessibilityWindowType_ = TYPE_WINDOW_INVALID;
318    int32_t windowLayer_ = INVALID_WINDOW_ID;
319    int32_t windowId_ = INVALID_WINDOW_ID;
320    bool active_ = false;
321    bool focused_ = false;
322    bool accessibilityFocused_ = false;
323    Rect boundsInScreen_ {};
324    bool isDecorEnable_ = false;
325    int32_t innerWid_ = 0; // used for window id 1, scene board
326    int64_t uiNodeId_ = 0; // used for window id 1, scene board
327    float scaleVal_ = 0.0;
328    float scaleX_ = 0.0;
329    float scaleY_ = 0.0;
330    std::string bundleName_ = "";
331    std::vector<Rect> touchHotAreas_ = {};
332    int32_t mainWindowId_ = INVALID_WINDOW_ID;
333};
334} // namespace Accessibility
335} // namespace OHOS
336#endif // ACCESSIBILITY_WINDOW_INFO_H