1885b47fbSopenharmony_ci/*
2885b47fbSopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd.
3885b47fbSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4885b47fbSopenharmony_ci * you may not use this file except in compliance with the License.
5885b47fbSopenharmony_ci * You may obtain a copy of the License at
6885b47fbSopenharmony_ci *
7885b47fbSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8885b47fbSopenharmony_ci *
9885b47fbSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10885b47fbSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11885b47fbSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12885b47fbSopenharmony_ci * See the License for the specific language governing permissions and
13885b47fbSopenharmony_ci * limitations under the License.
14885b47fbSopenharmony_ci */
15885b47fbSopenharmony_ci
16885b47fbSopenharmony_ci#ifndef ACCESSIBILITY_WINDOW_INFO_H
17885b47fbSopenharmony_ci#define ACCESSIBILITY_WINDOW_INFO_H
18885b47fbSopenharmony_ci
19885b47fbSopenharmony_ci#include <vector>
20885b47fbSopenharmony_ci#include "accessibility_element_info.h"
21885b47fbSopenharmony_ci
22885b47fbSopenharmony_cinamespace OHOS {
23885b47fbSopenharmony_cinamespace Accessibility {
24885b47fbSopenharmony_ciclass AccessibilityWindowInfo {
25885b47fbSopenharmony_cipublic:
26885b47fbSopenharmony_ci    /**
27885b47fbSopenharmony_ci     * @brief Construct
28885b47fbSopenharmony_ci     * @since 3
29885b47fbSopenharmony_ci     * @sysCap Accessibility
30885b47fbSopenharmony_ci     */
31885b47fbSopenharmony_ci    AccessibilityWindowInfo();
32885b47fbSopenharmony_ci
33885b47fbSopenharmony_ci    /**
34885b47fbSopenharmony_ci     * @brief Get the window type.
35885b47fbSopenharmony_ci     * @return The accessibility window type. Refer to [AccessibilityWindowType].
36885b47fbSopenharmony_ci     * @since 3
37885b47fbSopenharmony_ci     * @sysCap Accessibility
38885b47fbSopenharmony_ci     */
39885b47fbSopenharmony_ci    AccessibilityWindowType GetAccessibilityWindowType() const;
40885b47fbSopenharmony_ci
41885b47fbSopenharmony_ci    /**
42885b47fbSopenharmony_ci     * @brief Set the window type.
43885b47fbSopenharmony_ci     * @param type The accessibility window type. Refer to [AccessibilityWindowType].
44885b47fbSopenharmony_ci     * @since 3
45885b47fbSopenharmony_ci     * @sysCap Accessibility
46885b47fbSopenharmony_ci     */
47885b47fbSopenharmony_ci    void SetAccessibilityWindowType(const AccessibilityWindowType type);
48885b47fbSopenharmony_ci
49885b47fbSopenharmony_ci    /**
50885b47fbSopenharmony_ci     * @brief Get The window layer
51885b47fbSopenharmony_ci     * @return The layer of window
52885b47fbSopenharmony_ci     * @since 3
53885b47fbSopenharmony_ci     * @sysCap Accessibility
54885b47fbSopenharmony_ci     */
55885b47fbSopenharmony_ci    int32_t GetWindowLayer() const;
56885b47fbSopenharmony_ci
57885b47fbSopenharmony_ci    /**
58885b47fbSopenharmony_ci     * @brief Set The window layer
59885b47fbSopenharmony_ci     * @param layer The window layer
60885b47fbSopenharmony_ci     * @since 3
61885b47fbSopenharmony_ci     * @sysCap Accessibility
62885b47fbSopenharmony_ci     */
63885b47fbSopenharmony_ci    void SetWindowLayer(const int32_t layer);
64885b47fbSopenharmony_ci
65885b47fbSopenharmony_ci    /**
66885b47fbSopenharmony_ci     * @brief Get the window id of current window.
67885b47fbSopenharmony_ci     * @return The window id of current window.
68885b47fbSopenharmony_ci     * @since 3
69885b47fbSopenharmony_ci     * @sysCap Accessibility
70885b47fbSopenharmony_ci     */
71885b47fbSopenharmony_ci    int32_t GetWindowId() const;
72885b47fbSopenharmony_ci
73885b47fbSopenharmony_ci    /**
74885b47fbSopenharmony_ci     * @brief Set the window id of current window.
75885b47fbSopenharmony_ci     * @param id The window id of current window.
76885b47fbSopenharmony_ci     * @since 3
77885b47fbSopenharmony_ci     * @sysCap Accessibility
78885b47fbSopenharmony_ci     */
79885b47fbSopenharmony_ci    void SetWindowId(const int32_t id);
80885b47fbSopenharmony_ci
81885b47fbSopenharmony_ci    /**
82885b47fbSopenharmony_ci     * @brief Get the screen pixel coordinates
83885b47fbSopenharmony_ci     * @return The screen pixel coordinates
84885b47fbSopenharmony_ci     * @since 3
85885b47fbSopenharmony_ci     * @sysCap Accessibility
86885b47fbSopenharmony_ci     */
87885b47fbSopenharmony_ci    const Rect &GetRectInScreen() const;
88885b47fbSopenharmony_ci
89885b47fbSopenharmony_ci    /**
90885b47fbSopenharmony_ci     * @brief Set the screen pixel coordinates
91885b47fbSopenharmony_ci     * @param bounds The screen pixel coordinates
92885b47fbSopenharmony_ci     * @since 3
93885b47fbSopenharmony_ci     * @sysCap Accessibility
94885b47fbSopenharmony_ci     */
95885b47fbSopenharmony_ci    void SetRectInScreen(const Rect &bounds);
96885b47fbSopenharmony_ci
97885b47fbSopenharmony_ci    /**
98885b47fbSopenharmony_ci     * @brief Check whether the window is active or not.
99885b47fbSopenharmony_ci     * @return true: the window is active, otherwise is not.
100885b47fbSopenharmony_ci     * @since 3
101885b47fbSopenharmony_ci     * @sysCap Accessibility
102885b47fbSopenharmony_ci     */
103885b47fbSopenharmony_ci    bool IsActive() const;
104885b47fbSopenharmony_ci
105885b47fbSopenharmony_ci    /**
106885b47fbSopenharmony_ci     * @brief Set whether the window is active or not.
107885b47fbSopenharmony_ci     * @param active true: the window is active, otherwise is not.
108885b47fbSopenharmony_ci     * @since 3
109885b47fbSopenharmony_ci     * @sysCap Accessibility
110885b47fbSopenharmony_ci     */
111885b47fbSopenharmony_ci    void SetActive(bool active);
112885b47fbSopenharmony_ci
113885b47fbSopenharmony_ci    /**
114885b47fbSopenharmony_ci     * @brief Checks whether this window has gained focus.
115885b47fbSopenharmony_ci     * @return true: the window has gained focus, otherwise is not.
116885b47fbSopenharmony_ci     * @since 3
117885b47fbSopenharmony_ci     * @sysCap Accessibility
118885b47fbSopenharmony_ci     */
119885b47fbSopenharmony_ci    bool IsFocused() const;
120885b47fbSopenharmony_ci
121885b47fbSopenharmony_ci    /**
122885b47fbSopenharmony_ci     * @brief Set whether this window has gained focus.
123885b47fbSopenharmony_ci     * @param focused true: the window has gained focus, otherwise is not.
124885b47fbSopenharmony_ci     * @since 3
125885b47fbSopenharmony_ci     * @sysCap Accessibility
126885b47fbSopenharmony_ci     */
127885b47fbSopenharmony_ci    void SetFocused(bool focused);
128885b47fbSopenharmony_ci
129885b47fbSopenharmony_ci    /**
130885b47fbSopenharmony_ci     * @brief Checks whether this window has gained accessibility focus.
131885b47fbSopenharmony_ci     * @return true: this window has gained accessibility focus, otherwise is not.
132885b47fbSopenharmony_ci     * @since 3
133885b47fbSopenharmony_ci     * @sysCap Accessibility
134885b47fbSopenharmony_ci     */
135885b47fbSopenharmony_ci    bool IsAccessibilityFocused() const;
136885b47fbSopenharmony_ci
137885b47fbSopenharmony_ci    /**
138885b47fbSopenharmony_ci     * @brief Set whether this window has gained accessibility focus.
139885b47fbSopenharmony_ci     * @param accessibilityFocused true: this window has gained accessibility focus, otherwise is not.
140885b47fbSopenharmony_ci     * @since 3
141885b47fbSopenharmony_ci     * @sysCap Accessibility
142885b47fbSopenharmony_ci     */
143885b47fbSopenharmony_ci    void SetAccessibilityFocused(const bool accessibilityFocused);
144885b47fbSopenharmony_ci
145885b47fbSopenharmony_ci    /**
146885b47fbSopenharmony_ci     * @brief Set the display id
147885b47fbSopenharmony_ci     * @param displayId the display id of the window
148885b47fbSopenharmony_ci     * @sysCap Accessibility
149885b47fbSopenharmony_ci     */
150885b47fbSopenharmony_ci    void SetDisplayId(const uint64_t displayId);
151885b47fbSopenharmony_ci
152885b47fbSopenharmony_ci    /**
153885b47fbSopenharmony_ci     * @brief Get the display id
154885b47fbSopenharmony_ci     * @return Return the display id of the window.
155885b47fbSopenharmony_ci     * @sysCap Accessibility
156885b47fbSopenharmony_ci     */
157885b47fbSopenharmony_ci    uint64_t GetDisplayId() const;
158885b47fbSopenharmony_ci
159885b47fbSopenharmony_ci    /**
160885b47fbSopenharmony_ci     * @brief Get window type
161885b47fbSopenharmony_ci     * @return The type of window. Refer to [OHOS::Rosen::WindowType].
162885b47fbSopenharmony_ci     * @sysCap Accessibility
163885b47fbSopenharmony_ci     */
164885b47fbSopenharmony_ci    uint32_t GetWindowType() const;
165885b47fbSopenharmony_ci
166885b47fbSopenharmony_ci    /**
167885b47fbSopenharmony_ci     * @brief Set window type
168885b47fbSopenharmony_ci     * @param type The type of window. Refer to [OHOS::Rosen::WindowType].
169885b47fbSopenharmony_ci     * @sysCap Accessibility
170885b47fbSopenharmony_ci     */
171885b47fbSopenharmony_ci    void SetWindowType(const uint32_t type);
172885b47fbSopenharmony_ci
173885b47fbSopenharmony_ci    /**
174885b47fbSopenharmony_ci     * @brief Get window mode
175885b47fbSopenharmony_ci     * @return The mode of window. Refer to [OHOS::Rosen::WindowMode].
176885b47fbSopenharmony_ci     * @sysCap Accessibility
177885b47fbSopenharmony_ci     */
178885b47fbSopenharmony_ci    uint32_t GetWindowMode() const;
179885b47fbSopenharmony_ci
180885b47fbSopenharmony_ci    /**
181885b47fbSopenharmony_ci     * @brief Set window mode
182885b47fbSopenharmony_ci     * @param mode The mode of window. Refer to [OHOS::Rosen::WindowMode].
183885b47fbSopenharmony_ci     * @sysCap Accessibility
184885b47fbSopenharmony_ci     */
185885b47fbSopenharmony_ci    void SetWindowMode(const uint32_t mode);
186885b47fbSopenharmony_ci
187885b47fbSopenharmony_ci    /**
188885b47fbSopenharmony_ci     * @brief Get whether the decoration state is enabled
189885b47fbSopenharmony_ci     * @return true:the decoration is enabled; false:the decoration is disabled
190885b47fbSopenharmony_ci     * @sysCap Accessibility
191885b47fbSopenharmony_ci     */
192885b47fbSopenharmony_ci    bool IsDecorEnable() const;
193885b47fbSopenharmony_ci
194885b47fbSopenharmony_ci    /**
195885b47fbSopenharmony_ci     * @brief Set the decoration state
196885b47fbSopenharmony_ci     * @param isDecorEnable true:enable decoration; false:disable decoration
197885b47fbSopenharmony_ci     * @sysCap Accessibility
198885b47fbSopenharmony_ci     */
199885b47fbSopenharmony_ci    void SetDecorEnable(const bool isDecorEnable);
200885b47fbSopenharmony_ci
201885b47fbSopenharmony_ci    /**
202885b47fbSopenharmony_ci     * @brief Set inner window id
203885b47fbSopenharmony_ci     * @param innerWid inner window id
204885b47fbSopenharmony_ci     * @sysCap Accessibility
205885b47fbSopenharmony_ci     */
206885b47fbSopenharmony_ci    void SetInnerWid(const int32_t innerWid);
207885b47fbSopenharmony_ci
208885b47fbSopenharmony_ci    /**
209885b47fbSopenharmony_ci     * @brief Get inner window id
210885b47fbSopenharmony_ci     * @return Inner window id
211885b47fbSopenharmony_ci     * @sysCap Accessibility
212885b47fbSopenharmony_ci     */
213885b47fbSopenharmony_ci    int32_t GetInnerWid() const;
214885b47fbSopenharmony_ci
215885b47fbSopenharmony_ci    /**
216885b47fbSopenharmony_ci     * @brief Set arkui node id
217885b47fbSopenharmony_ci     * @param nodeId Arkui node id
218885b47fbSopenharmony_ci     * @sysCap Accessibility
219885b47fbSopenharmony_ci     */
220885b47fbSopenharmony_ci    void SetUiNodeId(const int64_t nodeId);
221885b47fbSopenharmony_ci
222885b47fbSopenharmony_ci    /**
223885b47fbSopenharmony_ci     * @brief Get arkui node id
224885b47fbSopenharmony_ci     * @return Arkui node id
225885b47fbSopenharmony_ci     * @sysCap Accessibility
226885b47fbSopenharmony_ci     */
227885b47fbSopenharmony_ci    int64_t GetUiNodeId() const;
228885b47fbSopenharmony_ci
229885b47fbSopenharmony_ci    /**
230885b47fbSopenharmony_ci     * @brief Set window scale val
231885b47fbSopenharmony_ci     * @param scaleVal_ WMS scale Val
232885b47fbSopenharmony_ci     * @sysCap Accessibility
233885b47fbSopenharmony_ci    */
234885b47fbSopenharmony_ci    void SetScaleVal(const float scaleVal);
235885b47fbSopenharmony_ci
236885b47fbSopenharmony_ci    /**
237885b47fbSopenharmony_ci     * @brief Get window scale val
238885b47fbSopenharmony_ci     * @return window scale val
239885b47fbSopenharmony_ci     * @sysCap Accessibility
240885b47fbSopenharmony_ci    */
241885b47fbSopenharmony_ci    float GetScaleVal() const;
242885b47fbSopenharmony_ci
243885b47fbSopenharmony_ci    /**
244885b47fbSopenharmony_ci     * @brief Set window scale x
245885b47fbSopenharmony_ci     * @param scaleX_ WMS scale x
246885b47fbSopenharmony_ci     * @sysCap Accessibility
247885b47fbSopenharmony_ci    */
248885b47fbSopenharmony_ci    void SetScaleX(const float scaleX);
249885b47fbSopenharmony_ci
250885b47fbSopenharmony_ci    /**
251885b47fbSopenharmony_ci     * @brief Get window Scale X
252885b47fbSopenharmony_ci     * @return window Scale X
253885b47fbSopenharmony_ci     * @sysCap Accessibility
254885b47fbSopenharmony_ci    */
255885b47fbSopenharmony_ci    float GetScaleX() const;
256885b47fbSopenharmony_ci
257885b47fbSopenharmony_ci    /**
258885b47fbSopenharmony_ci     * @brief Set window scale Y
259885b47fbSopenharmony_ci     * @param scaleY_ WMS scale Y
260885b47fbSopenharmony_ci     * @sysCap Accessibility
261885b47fbSopenharmony_ci    */
262885b47fbSopenharmony_ci    void SetScaleY(const float scaleY);
263885b47fbSopenharmony_ci
264885b47fbSopenharmony_ci    /**
265885b47fbSopenharmony_ci     * @brief Get window scale Y
266885b47fbSopenharmony_ci     * @return window scale Y
267885b47fbSopenharmony_ci     * @sysCap Accessibility
268885b47fbSopenharmony_ci    */
269885b47fbSopenharmony_ci    float GetScaleY() const;
270885b47fbSopenharmony_ci
271885b47fbSopenharmony_ci    /**
272885b47fbSopenharmony_ci     * @brief Set window bundle name
273885b47fbSopenharmony_ci     * @param bundleName_ WMS bundle name
274885b47fbSopenharmony_ci     * @sysCap Accessibility
275885b47fbSopenharmony_ci    */
276885b47fbSopenharmony_ci    void SetBundleName(const std::string bundleName);
277885b47fbSopenharmony_ci
278885b47fbSopenharmony_ci    /**
279885b47fbSopenharmony_ci     * @brief Get window bundle name
280885b47fbSopenharmony_ci     * @return window bundle name
281885b47fbSopenharmony_ci     * @sysCap Accessibility
282885b47fbSopenharmony_ci    */
283885b47fbSopenharmony_ci    std::string GetBundleName();
284885b47fbSopenharmony_ci
285885b47fbSopenharmony_ci    /**
286885b47fbSopenharmony_ci     * @brief Set window touch hot areas
287885b47fbSopenharmony_ci     * @param touchHotAreas_ WMS touch hot areas
288885b47fbSopenharmony_ci     * @sysCap Accessibility
289885b47fbSopenharmony_ci    */
290885b47fbSopenharmony_ci    void SetTouchHotAreas(const std::vector<Rect> &touchHotAreas);
291885b47fbSopenharmony_ci
292885b47fbSopenharmony_ci    /**
293885b47fbSopenharmony_ci     * @brief Get window touch hot areas
294885b47fbSopenharmony_ci     * @return window touch hot areas
295885b47fbSopenharmony_ci     * @sysCap Accessibility
296885b47fbSopenharmony_ci    */
297885b47fbSopenharmony_ci    std::vector<Rect> GetTouchHotAreas();
298885b47fbSopenharmony_ci
299885b47fbSopenharmony_ci    /**
300885b47fbSopenharmony_ci     * @brief Get the main window id of current window.
301885b47fbSopenharmony_ci     * @return The main window id of current window.
302885b47fbSopenharmony_ci     * @sysCap Accessibility
303885b47fbSopenharmony_ci     */
304885b47fbSopenharmony_ci    int32_t GetMainWindowId() const;
305885b47fbSopenharmony_ci
306885b47fbSopenharmony_ci    /**
307885b47fbSopenharmony_ci     * @brief Set the main window id of current window.
308885b47fbSopenharmony_ci     * @param id The main window id of current window.
309885b47fbSopenharmony_ci     * @sysCap Accessibility
310885b47fbSopenharmony_ci     */
311885b47fbSopenharmony_ci    void SetMainWindowId(const int32_t id);
312885b47fbSopenharmony_ci
313885b47fbSopenharmony_ciprotected:
314885b47fbSopenharmony_ci    uint64_t displayId_ = 0;
315885b47fbSopenharmony_ci    uint32_t windowMode_ = 0;
316885b47fbSopenharmony_ci    uint32_t windowType_ = 0;
317885b47fbSopenharmony_ci    AccessibilityWindowType accessibilityWindowType_ = TYPE_WINDOW_INVALID;
318885b47fbSopenharmony_ci    int32_t windowLayer_ = INVALID_WINDOW_ID;
319885b47fbSopenharmony_ci    int32_t windowId_ = INVALID_WINDOW_ID;
320885b47fbSopenharmony_ci    bool active_ = false;
321885b47fbSopenharmony_ci    bool focused_ = false;
322885b47fbSopenharmony_ci    bool accessibilityFocused_ = false;
323885b47fbSopenharmony_ci    Rect boundsInScreen_ {};
324885b47fbSopenharmony_ci    bool isDecorEnable_ = false;
325885b47fbSopenharmony_ci    int32_t innerWid_ = 0; // used for window id 1, scene board
326885b47fbSopenharmony_ci    int64_t uiNodeId_ = 0; // used for window id 1, scene board
327885b47fbSopenharmony_ci    float scaleVal_ = 0.0;
328885b47fbSopenharmony_ci    float scaleX_ = 0.0;
329885b47fbSopenharmony_ci    float scaleY_ = 0.0;
330885b47fbSopenharmony_ci    std::string bundleName_ = "";
331885b47fbSopenharmony_ci    std::vector<Rect> touchHotAreas_ = {};
332885b47fbSopenharmony_ci    int32_t mainWindowId_ = INVALID_WINDOW_ID;
333885b47fbSopenharmony_ci};
334885b47fbSopenharmony_ci} // namespace Accessibility
335885b47fbSopenharmony_ci} // namespace OHOS
336885b47fbSopenharmony_ci#endif // ACCESSIBILITY_WINDOW_INFO_H