1 /*
2 * Copyright (c) 2024 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 #include "window_ffi.h"
17 #include <transaction/rs_interfaces.h>
18 #include "pixel_map_impl.h"
19 #include "window_manager_hilog.h"
20
21 using namespace OHOS::FFI;
22 using namespace OHOS::Media;
23
24 namespace OHOS {
25 namespace Rosen {
26 extern "C" {
27 const int32_t WM_ERROR_STATE_ABNORMALLY = 1300002;
28
FfiOHOSCreateWindow(char * name,uint32_t windowType,OHOS::AbilityRuntime::Context * context,int64_t displayId,int64_t parentId)29 RetDataI64 FfiOHOSCreateWindow(char* name, uint32_t windowType, OHOS::AbilityRuntime::Context* context,
30 int64_t displayId, int64_t parentId)
31 {
32 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] CreateWindow start");
33 std::string nm = name;
34 RetDataI64 ret;
35 WindowParameters window;
36 window.name = nm;
37 window.winType = windowType;
38 window.context = context;
39 window.displayId = displayId;
40 window.parentId = parentId;
41 window.windowId = &ret.data;
42 ret.code = OHOS::Rosen::WindowManagerImpl::CreateWindow(window);
43 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] CreateWindow success");
44 return ret;
45 }
46
FfiOHOSWindowSetWindowLayoutMode(uint32_t mode)47 int32_t FfiOHOSWindowSetWindowLayoutMode(uint32_t mode)
48 {
49 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowLayoutMode start");
50 int32_t ret = OHOS::Rosen::WindowManagerImpl::SetWindowLayoutMode(mode);
51 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowLayoutMode success");
52 return ret;
53 }
54
FfiOHOSWindowMinimizeAll(int64_t displayId)55 int32_t FfiOHOSWindowMinimizeAll(int64_t displayId)
56 {
57 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] MinimizeAll start");
58 int32_t ret = OHOS::Rosen::WindowManagerImpl::MinimizeAll(displayId);
59 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] MinimizeAll success");
60 return ret;
61 }
62
FfiOHOSGetLastWindow(OHOS::AbilityRuntime::Context * ctx)63 RetDataI64 FfiOHOSGetLastWindow(OHOS::AbilityRuntime::Context* ctx)
64 {
65 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetLastWindow start");
66 RetDataI64 ret;
67 ret.code = OHOS::Rosen::WindowManagerImpl::GetLastWindow(ctx, ret.data);
68 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetLastWindow success");
69 return ret;
70 }
71
FfiOHOSShiftAppWindowFocus(int32_t sourceWindowId,int32_t targetWindowId)72 int32_t FfiOHOSShiftAppWindowFocus(int32_t sourceWindowId, int32_t targetWindowId)
73 {
74 TLOGI(WmsLogTag::WMS_FOCUS, "ShiftAppWindowFocus start");
75 int32_t ret = OHOS::Rosen::WindowManagerImpl::ShiftAppWindowFocus(sourceWindowId, targetWindowId);
76 TLOGI(WmsLogTag::WMS_FOCUS, "ShiftAppWindowFocus success");
77 return ret;
78 }
79
80 // window
FfiOHOSWindowHide(int64_t id)81 int32_t FfiOHOSWindowHide(int64_t id)
82 {
83 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Hide start");
84 auto instance = FFIData::GetData<CJWindowImpl>(id);
85 if (instance == nullptr) {
86 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
87 return WM_ERROR_STATE_ABNORMALLY;
88 }
89 int32_t res = instance->Hide();
90 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Hide success");
91 return res;
92 }
93
FfiOHOSWindowHideWithAnimation(int64_t id)94 int32_t FfiOHOSWindowHideWithAnimation(int64_t id)
95 {
96 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] HideWithAnimation start");
97 auto instance = FFIData::GetData<CJWindowImpl>(id);
98 if (instance == nullptr) {
99 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
100 return WM_ERROR_STATE_ABNORMALLY;
101 }
102 int32_t res = instance->HideWithAnimation();
103 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] HideWithAnimation success");
104 return res;
105 }
106
FfiOHOSWindowShowWindow(int64_t id)107 int32_t FfiOHOSWindowShowWindow(int64_t id)
108 {
109 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] ShowWindow start");
110 auto instance = FFIData::GetData<CJWindowImpl>(id);
111 if (instance == nullptr) {
112 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
113 return WM_ERROR_STATE_ABNORMALLY;
114 }
115 int32_t res = instance->ShowWindow();
116 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] ShowWindow success");
117 return res;
118 }
119
FfiOHOSWindowShowWithAnimation(int64_t id)120 int32_t FfiOHOSWindowShowWithAnimation(int64_t id)
121 {
122 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] ShowWithAnimation start");
123 auto instance = FFIData::GetData<CJWindowImpl>(id);
124 if (instance == nullptr) {
125 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
126 return WM_ERROR_STATE_ABNORMALLY;
127 }
128 int32_t res = instance->ShowWithAnimation();
129 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] ShowWithAnimation success");
130 return res;
131 }
132
FfiOHOSWindowDestroyWindow(int64_t id)133 int32_t FfiOHOSWindowDestroyWindow(int64_t id)
134 {
135 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] DestroyWindow start");
136 auto instance = FFIData::GetData<CJWindowImpl>(id);
137 if (instance == nullptr) {
138 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
139 return WM_ERROR_STATE_ABNORMALLY;
140 }
141 int32_t res = instance->DestroyWindow();
142 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] DestroyWindow success");
143 return res;
144 }
145
FfiOHOSWindowMoveWindowTo(int64_t id,int32_t x,int32_t y)146 int32_t FfiOHOSWindowMoveWindowTo(int64_t id, int32_t x, int32_t y)
147 {
148 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] MoveWindowTo start");
149 auto instance = FFIData::GetData<CJWindowImpl>(id);
150 if (instance == nullptr) {
151 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
152 return WM_ERROR_STATE_ABNORMALLY;
153 }
154 int32_t res = instance->MoveWindowTo(x, y);
155 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] MoveWindowTo success");
156 return res;
157 }
158
FfiOHOSWindowResize(int64_t id,uint32_t width,uint32_t height)159 int32_t FfiOHOSWindowResize(int64_t id, uint32_t width, uint32_t height)
160 {
161 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Resize start");
162 auto instance = FFIData::GetData<CJWindowImpl>(id);
163 if (instance == nullptr) {
164 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
165 return WM_ERROR_STATE_ABNORMALLY;
166 }
167 int32_t res = instance->Resize(width, height);
168 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Resize success");
169 return res;
170 }
171
FfiOHOSWindowSetWindowMode(int64_t id,uint32_t mode)172 int32_t FfiOHOSWindowSetWindowMode(int64_t id, uint32_t mode)
173 {
174 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowMode start");
175 auto instance = FFIData::GetData<CJWindowImpl>(id);
176 if (instance == nullptr) {
177 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
178 return WM_ERROR_STATE_ABNORMALLY;
179 }
180 int32_t res = instance->SetWindowMode(mode);
181 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowMode success");
182 return res;
183 }
184
FfiOHOSWindowGetWindowProperties(int64_t id,int32_t * errCode)185 CWindowProperties FfiOHOSWindowGetWindowProperties(int64_t id, int32_t* errCode)
186 {
187 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetWindowProperties start");
188 CWindowProperties res;
189 auto instance = FFIData::GetData<CJWindowImpl>(id);
190 if (instance == nullptr) {
191 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
192 *errCode = WM_ERROR_STATE_ABNORMALLY;
193 return res;
194 }
195 res = instance->GetWindowProperties(errCode);
196 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetWindowProperties success");
197 return res;
198 }
199
FfiOHOSWindowSetWindowLayoutFullScreen(int64_t id,bool isLayoutFullScreen)200 int32_t FfiOHOSWindowSetWindowLayoutFullScreen(int64_t id, bool isLayoutFullScreen)
201 {
202 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowLayoutFullScreen start");
203 auto instance = FFIData::GetData<CJWindowImpl>(id);
204 if (instance == nullptr) {
205 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
206 return WM_ERROR_STATE_ABNORMALLY;
207 }
208 int32_t res = instance->SetWindowLayoutFullScreen(isLayoutFullScreen);
209 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowLayoutFullScreen success");
210 return res;
211 }
212
FfiOHOSSetWindowBackgroundColor(int64_t id,const char * color)213 int32_t FfiOHOSSetWindowBackgroundColor(int64_t id, const char* color)
214 {
215 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowBackgroundColor start");
216 auto instance = FFIData::GetData<CJWindowImpl>(id);
217 if (instance == nullptr) {
218 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
219 return WM_ERROR_STATE_ABNORMALLY;
220 }
221 int32_t ret = instance->SetWindowBackgroundColor(color);
222 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowBackgroundColor success");
223 return ret;
224 }
225
FfiOHOSWindowSetWindowBrightness(int64_t id,float brightness)226 int32_t FfiOHOSWindowSetWindowBrightness(int64_t id, float brightness)
227 {
228 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowBrightness start");
229 auto instance = FFIData::GetData<CJWindowImpl>(id);
230 if (instance == nullptr) {
231 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
232 return WM_ERROR_STATE_ABNORMALLY;
233 }
234 int32_t res = instance->SetWindowBrightness(brightness);
235 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowBrightness success");
236 return res;
237 }
238
FfiOHOSWindowSetWindowFocusable(int64_t id,bool focusable)239 int32_t FfiOHOSWindowSetWindowFocusable(int64_t id, bool focusable)
240 {
241 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowFocusable start");
242 auto instance = FFIData::GetData<CJWindowImpl>(id);
243 if (instance == nullptr) {
244 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
245 return WM_ERROR_STATE_ABNORMALLY;
246 }
247 int32_t res = instance->SetWindowFocusable(focusable);
248 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowFocusable success");
249 return res;
250 }
251
FfiOHOSWindowSetWindowKeepScreenOn(int64_t id,bool keepScreenOn)252 int32_t FfiOHOSWindowSetWindowKeepScreenOn(int64_t id, bool keepScreenOn)
253 {
254 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowKeepScreenOn start");
255 auto instance = FFIData::GetData<CJWindowImpl>(id);
256 if (instance == nullptr) {
257 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
258 return WM_ERROR_STATE_ABNORMALLY;
259 }
260 int32_t res = instance->SetWindowKeepScreenOn(keepScreenOn);
261 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowKeepScreenOn success");
262 return res;
263 }
264
FfiOHOSWindowSetWindowPrivacyMode(int64_t id,bool isPrivacyMode)265 int32_t FfiOHOSWindowSetWindowPrivacyMode(int64_t id, bool isPrivacyMode)
266 {
267 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowPrivacyMode start");
268 auto instance = FFIData::GetData<CJWindowImpl>(id);
269 if (instance == nullptr) {
270 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
271 return WM_ERROR_STATE_ABNORMALLY;
272 }
273 int32_t res = instance->SetWindowPrivacyMode(isPrivacyMode);
274 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowPrivacyMode success");
275 return res;
276 }
277
FfiOHOSWindowSetWindowTouchable(int64_t id,bool touchable)278 int32_t FfiOHOSWindowSetWindowTouchable(int64_t id, bool touchable)
279 {
280 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowTouchable start");
281 auto instance = FFIData::GetData<CJWindowImpl>(id);
282 if (instance == nullptr) {
283 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
284 return WM_ERROR_STATE_ABNORMALLY;
285 }
286 int32_t res = instance->SetWindowTouchable(touchable);
287 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowTouchable success");
288 return res;
289 }
290
FfiOHOSWindowSetForbidSplitMove(int64_t id,bool isForbidSplitMove)291 int32_t FfiOHOSWindowSetForbidSplitMove(int64_t id, bool isForbidSplitMove)
292 {
293 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetForbidSplitMove start");
294 auto instance = FFIData::GetData<CJWindowImpl>(id);
295 if (instance == nullptr) {
296 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
297 return WM_ERROR_STATE_ABNORMALLY;
298 }
299 int32_t res = instance->SetForbidSplitMove(isForbidSplitMove);
300 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetForbidSplitMove success");
301 return res;
302 }
303
FfiOHOSWindowIsWindowSupportWideGamut(int64_t id,int32_t * errCode)304 bool FfiOHOSWindowIsWindowSupportWideGamut(int64_t id, int32_t* errCode)
305 {
306 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] IsWindowSupportWideGamut start");
307 bool res = false;
308 auto instance = FFIData::GetData<CJWindowImpl>(id);
309 if (instance == nullptr) {
310 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
311 *errCode = WM_ERROR_STATE_ABNORMALLY;
312 return res;
313 }
314 res = instance->IsWindowSupportWideGamut(errCode);
315 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] IsWindowSupportWideGamut success");
316 return res;
317 }
318
FfiOHOSWindowIsWindowShowing(int64_t id,int32_t * errCode)319 bool FfiOHOSWindowIsWindowShowing(int64_t id, int32_t* errCode)
320 {
321 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] IsWindowShowing start");
322 bool res = false;
323 auto instance = FFIData::GetData<CJWindowImpl>(id);
324 if (instance == nullptr) {
325 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
326 *errCode = WM_ERROR_STATE_ABNORMALLY;
327 return res;
328 }
329 res = instance->IsWindowShowing(errCode);
330 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] IsWindowShowing success");
331 return res;
332 }
333
FFiOHOSWindowFindWindow(char * name)334 RetDataI64 FFiOHOSWindowFindWindow(char* name)
335 {
336 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowFindWindow start");
337 RetDataI64 ret;
338 ret.code = WindowManagerImpl::FindWindow(name, ret.data);
339 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowFindWindow success");
340 return ret;
341 }
342
FFiOHOSWindowToggleShownStateForAllAppWindows()343 int32_t FFiOHOSWindowToggleShownStateForAllAppWindows()
344 {
345 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowToggleShownStateForAllAppWindows start");
346 WmErrorCode ret = WM_JS_TO_ERROR_CODE_MAP.at(
347 SingletonContainer::Get<WindowManager>().ToggleShownStateForAllAppWindows());
348 if (ret != WmErrorCode::WM_OK) {
349 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowToggleShownStateForAllAppWindows error %{public}d", ret);
350 return static_cast<int32_t>(ret);
351 }
352 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowToggleShownStateForAllAppWindows success");
353 return SUCCESS_CODE;
354 }
355
FFiOHOSWindowSetGestureNavigationEnabled(bool enable)356 int32_t FFiOHOSWindowSetGestureNavigationEnabled(bool enable)
357 {
358 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetGestureNavigationEnabled start");
359 WmErrorCode ret = WM_JS_TO_ERROR_CODE_MAP.at(
360 SingletonContainer::Get<WindowManager>().SetGestureNavigationEnabled(enable));
361 if (ret != WmErrorCode::WM_OK) {
362 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetGestureNavigationEnabled error %{public}d", ret);
363 return static_cast<int32_t>(ret);
364 }
365 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetGestureNavigationEnabled success");
366 return SUCCESS_CODE;
367 }
368
FFiOHOSWindowSetWaterMarkImage(int64_t pixelMapId,bool enable)369 int32_t FFiOHOSWindowSetWaterMarkImage(int64_t pixelMapId, bool enable)
370 {
371 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetWaterMarkImage start");
372 auto pixelMapImpl = FFIData::GetData<PixelMapImpl>(pixelMapId);
373 if (pixelMapImpl == nullptr) {
374 return WM_ERROR_STATE_ABNORMALLY;
375 }
376 auto pixelMap = pixelMapImpl->GetRealPixelMap();
377 RSInterfaces::GetInstance().ShowWatermark(pixelMap, enable);
378 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetWaterMarkImage success");
379 return SUCCESS_CODE;
380 }
381
FFiOHOSWindowSetBackdropBlurStyle(int64_t id,uint32_t blurStyle)382 int32_t FFiOHOSWindowSetBackdropBlurStyle(int64_t id, uint32_t blurStyle)
383 {
384 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBackdropBlurStyle start");
385 auto instance = FFIData::GetData<CJWindowImpl>(id);
386 if (instance == nullptr) {
387 return WM_ERROR_STATE_ABNORMALLY;
388 }
389 int32_t res = instance->SetBackdropBlurStyle(blurStyle);
390 if (res == SUCCESS_CODE) {
391 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBackdropBlurStyle success");
392 }
393 return res;
394 }
395
FFiOHOSWindowSetPreferredOrientation(int64_t id,uint32_t orientation)396 int32_t FFiOHOSWindowSetPreferredOrientation(int64_t id, uint32_t orientation)
397 {
398 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetPreferredOrientation start");
399 auto instance = FFIData::GetData<CJWindowImpl>(id);
400 if (instance == nullptr) {
401 return WM_ERROR_STATE_ABNORMALLY;
402 }
403 int32_t res = instance->SetPreferredOrientation(orientation);
404 if (res == SUCCESS_CODE) {
405 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetPreferredOrientation success");
406 }
407 return res;
408 }
409
FFiOHOSWindowGetWindowAvoidArea(int64_t id,uint32_t areaType,OHOS::Rosen::CAvoidArea * retPtr)410 int32_t FFiOHOSWindowGetWindowAvoidArea(int64_t id, uint32_t areaType, OHOS::Rosen::CAvoidArea* retPtr)
411 {
412 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowGetWindowAvoidArea start");
413 auto instance = FFIData::GetData<CJWindowImpl>(id);
414 if (instance == nullptr) {
415 return WM_ERROR_STATE_ABNORMALLY;
416 }
417 int32_t res = instance->GetWindowAvoidArea(areaType, retPtr);
418 if (res == SUCCESS_CODE) {
419 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowGetWindowAvoidArea success");
420 }
421 return res;
422 }
423
FFiOHOSWindowSetWaterMarkFlag(int64_t id,bool enable)424 int32_t FFiOHOSWindowSetWaterMarkFlag(int64_t id, bool enable)
425 {
426 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetWaterMarkFlag start");
427 auto instance = FFIData::GetData<CJWindowImpl>(id);
428 if (instance == nullptr) {
429 return WM_ERROR_STATE_ABNORMALLY;
430 }
431 int32_t res = instance->SetWaterMarkFlag(enable);
432 if (res == SUCCESS_CODE) {
433 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetWaterMarkFlag success");
434 }
435 return res;
436 }
437
FFiOHOSWindowSetAspectRatio(int64_t id,double ratio)438 int32_t FFiOHOSWindowSetAspectRatio(int64_t id, double ratio)
439 {
440 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetAspectRatio start");
441 auto instance = FFIData::GetData<CJWindowImpl>(id);
442 if (instance == nullptr) {
443 return WM_ERROR_STATE_ABNORMALLY;
444 }
445 int32_t res = instance->SetAspectRatio(ratio);
446 if (res == SUCCESS_CODE) {
447 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetAspectRatio success");
448 }
449 return res;
450 }
451
FFiOHOSWindowSetShadowRadius(int64_t id,double radius)452 int32_t FFiOHOSWindowSetShadowRadius(int64_t id, double radius)
453 {
454 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowRadius start");
455 auto instance = FFIData::GetData<CJWindowImpl>(id);
456 if (instance == nullptr) {
457 return WM_ERROR_STATE_ABNORMALLY;
458 }
459 int32_t res = instance->SetShadowRadius(radius);
460 if (res == SUCCESS_CODE) {
461 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowRadius success");
462 }
463 return res;
464 }
465
FFiOHOSWindowSetShadowColor(int64_t id,char * color)466 int32_t FFiOHOSWindowSetShadowColor(int64_t id, char* color)
467 {
468 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowColor start");
469 std::string windowColor = color;
470 auto instance = FFIData::GetData<CJWindowImpl>(id);
471 if (instance == nullptr) {
472 return WM_ERROR_STATE_ABNORMALLY;
473 }
474 int32_t res = instance->SetShadowColor(windowColor);
475 if (res == SUCCESS_CODE) {
476 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowColor success");
477 }
478 return res;
479 }
480
FFiOHOSWindowSetShadowOffsetX(int64_t id,double offsetX)481 int32_t FFiOHOSWindowSetShadowOffsetX(int64_t id, double offsetX)
482 {
483 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowOffsetX start");
484 auto instance = FFIData::GetData<CJWindowImpl>(id);
485 if (instance == nullptr) {
486 return WM_ERROR_STATE_ABNORMALLY;
487 }
488 int32_t res = instance->SetShadowOffsetX(offsetX);
489 if (res == SUCCESS_CODE) {
490 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowOffsetX success");
491 }
492 return res;
493 }
494
FFiOHOSWindowSetShadowOffsetY(int64_t id,double offsetY)495 int32_t FFiOHOSWindowSetShadowOffsetY(int64_t id, double offsetY)
496 {
497 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowOffsetY start");
498 auto instance = FFIData::GetData<CJWindowImpl>(id);
499 if (instance == nullptr) {
500 return WM_ERROR_STATE_ABNORMALLY;
501 }
502 int32_t res = instance->SetShadowOffsetY(offsetY);
503 if (res == SUCCESS_CODE) {
504 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowOffsetY success");
505 }
506 return res;
507 }
508
FFiOHOSWindowSetBackdropBlur(int64_t id,double radius)509 int32_t FFiOHOSWindowSetBackdropBlur(int64_t id, double radius)
510 {
511 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBackdropBlur start");
512 auto instance = FFIData::GetData<CJWindowImpl>(id);
513 if (instance == nullptr) {
514 return WM_ERROR_STATE_ABNORMALLY;
515 }
516 int32_t res = instance->SetBackdropBlur(radius);
517 if (res == SUCCESS_CODE) {
518 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBackdropBlur success");
519 }
520 return res;
521 }
522
FFiOHOSWindowSetBlur(int64_t id,double radius)523 int32_t FFiOHOSWindowSetBlur(int64_t id, double radius)
524 {
525 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBlur start");
526 auto instance = FFIData::GetData<CJWindowImpl>(id);
527 if (instance == nullptr) {
528 return WM_ERROR_STATE_ABNORMALLY;
529 }
530 int32_t res = instance->SetBlur(radius);
531 if (res == SUCCESS_CODE) {
532 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBlur success");
533 }
534 return res;
535 }
536
FFiOHOSWindowResetAspectRatio(int64_t id)537 int32_t FFiOHOSWindowResetAspectRatio(int64_t id)
538 {
539 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowResetAspectRatio start");
540 auto instance = FFIData::GetData<CJWindowImpl>(id);
541 if (instance == nullptr) {
542 return WM_ERROR_STATE_ABNORMALLY;
543 }
544 int32_t res = instance->ResetAspectRatio();
545 if (res == SUCCESS_CODE) {
546 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowResetAspectRatio success");
547 }
548 return res;
549 }
550
FFiOHOSWindowMinimize(int64_t id)551 int32_t FFiOHOSWindowMinimize(int64_t id)
552 {
553 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Minimize start");
554 auto instance = FFIData::GetData<CJWindowImpl>(id);
555 if (instance == nullptr) {
556 return WM_ERROR_STATE_ABNORMALLY;
557 }
558 int32_t res = instance->Minimize();
559 if (res == SUCCESS_CODE) {
560 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Minimize success");
561 }
562 return res;
563 }
564
FFiOHOSWindowSetWindowColorSpace(int64_t id,uint32_t colorSpace)565 int32_t FFiOHOSWindowSetWindowColorSpace(int64_t id, uint32_t colorSpace)
566 {
567 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowColorSpace start");
568 auto instance = FFIData::GetData<CJWindowImpl>(id);
569 if (instance == nullptr) {
570 return WM_ERROR_STATE_ABNORMALLY;
571 }
572 int32_t res = instance->SetWindowColorSpace(colorSpace);
573 if (res == SUCCESS_CODE) {
574 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowColorSpace success");
575 }
576 return res;
577 }
578
FFiOHOSWindowSetCornerRadius(int64_t id,float radius)579 int32_t FFiOHOSWindowSetCornerRadius(int64_t id, float radius)
580 {
581 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetCornerRadius start");
582 auto instance = FFIData::GetData<CJWindowImpl>(id);
583 if (instance == nullptr) {
584 return WM_ERROR_STATE_ABNORMALLY;
585 }
586 int32_t res = instance->SetCornerRadius(radius);
587 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetCornerRadius success");
588 return res;
589 }
590
FFiOHOSWindowSetResizeByDragEnabled(int64_t id,bool enable)591 int32_t FFiOHOSWindowSetResizeByDragEnabled(int64_t id, bool enable)
592 {
593 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetResizeByDragEnabled start");
594 auto instance = FFIData::GetData<CJWindowImpl>(id);
595 if (instance == nullptr) {
596 return WM_ERROR_STATE_ABNORMALLY;
597 }
598 int32_t res = instance->SetResizeByDragEnabled(enable);
599 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetResizeByDragEnabled success");
600 return res;
601 }
602
FFiOHOSWindowRaiseToAppTop(int64_t id)603 int32_t FFiOHOSWindowRaiseToAppTop(int64_t id)
604 {
605 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] RaiseToAppTop start");
606 auto instance = FFIData::GetData<CJWindowImpl>(id);
607 if (instance == nullptr) {
608 return WM_ERROR_STATE_ABNORMALLY;
609 }
610 int32_t res = instance->RaiseToAppTop();
611 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] RaiseToAppTop success");
612 return res;
613 }
614
FFiOHOSWindowSetSnapshotSkip(int64_t id,bool isSkip)615 int32_t FFiOHOSWindowSetSnapshotSkip(int64_t id, bool isSkip)
616 {
617 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetSnapshotSkip start");
618 auto instance = FFIData::GetData<CJWindowImpl>(id);
619 if (instance == nullptr) {
620 return WM_ERROR_STATE_ABNORMALLY;
621 }
622 int32_t res = instance->SetSnapshotSkip(isSkip);
623 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetSnapshotSkip success");
624 return res;
625 }
626
FFiOHOSWindowSetWakeUpScreen(int64_t id,bool wakeUp)627 int32_t FFiOHOSWindowSetWakeUpScreen(int64_t id, bool wakeUp)
628 {
629 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWakeUpScreen start");
630 auto instance = FFIData::GetData<CJWindowImpl>(id);
631 if (instance == nullptr) {
632 return WM_ERROR_STATE_ABNORMALLY;
633 }
634 int32_t res = static_cast<int32_t>(instance->SetWakeUpScreen(wakeUp));
635 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWakeUpScreen success");
636 return res;
637 }
638
FFiOHOSWindowSetRaiseByClickEnabled(int64_t id,bool enable)639 int32_t FFiOHOSWindowSetRaiseByClickEnabled(int64_t id, bool enable)
640 {
641 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetRaiseByClickEnabled start");
642 auto instance = FFIData::GetData<CJWindowImpl>(id);
643 if (instance == nullptr) {
644 return WM_ERROR_STATE_ABNORMALLY;
645 }
646 int32_t res = instance->SetRaiseByClickEnabled(enable);
647 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetRaiseByClickEnabled success");
648 return res;
649 }
650
FFiOHOSWindowGetWindowColorSpace(int64_t id,int32_t * errCode)651 int32_t FFiOHOSWindowGetWindowColorSpace(int64_t id, int32_t* errCode)
652 {
653 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetWindowColorSpace start");
654 auto instance = FFIData::GetData<CJWindowImpl>(id);
655 if (instance == nullptr) {
656 *errCode = WM_ERROR_STATE_ABNORMALLY;
657 return 0;
658 }
659 int32_t res = static_cast<int32_t>(instance->GetWindowColorSpace(errCode));
660 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetWindowColorSpace success");
661 return res;
662 }
663
FFiOHOSWindowRaiseAboveTarget(int64_t id,int32_t windowId)664 int32_t FFiOHOSWindowRaiseAboveTarget(int64_t id, int32_t windowId)
665 {
666 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] RaiseAboveTarget start");
667 auto instance = FFIData::GetData<CJWindowImpl>(id);
668 if (instance == nullptr) {
669 return WM_ERROR_STATE_ABNORMALLY;
670 }
671 int32_t res = instance->RaiseAboveTarget(windowId);
672 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] RaiseAboveTarget success");
673 return res;
674 }
675
FFiOHOSWindowTranslate(int64_t id,double x,double y,double z)676 int32_t FFiOHOSWindowTranslate(int64_t id, double x, double y, double z)
677 {
678 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Translate start");
679 auto instance = FFIData::GetData<CJWindowImpl>(id);
680 if (instance == nullptr) {
681 return WM_ERROR_STATE_ABNORMALLY;
682 }
683 int32_t res = instance->Translate(x, y, z);
684 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Translate success");
685 return res;
686 }
687
FFiOHOSWindowRotate(int64_t id,WindowRotate window)688 int32_t FFiOHOSWindowRotate(int64_t id, WindowRotate window)
689 {
690 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Rotate start");
691 auto instance = FFIData::GetData<CJWindowImpl>(id);
692 if (instance == nullptr) {
693 return WM_ERROR_STATE_ABNORMALLY;
694 }
695 int32_t res = instance->Rotate(window.x, window.y, window.z, window.pivotX, window.pivotY);
696 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Rotate success");
697 return res;
698 }
699
FFiOHOSWindowScale(int64_t id,double x,double y,double pivotX,double pivotY)700 int32_t FFiOHOSWindowScale(int64_t id, double x, double y, double pivotX, double pivotY)
701 {
702 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Scale start");
703 auto instance = FFIData::GetData<CJWindowImpl>(id);
704 if (instance == nullptr) {
705 return WM_ERROR_STATE_ABNORMALLY;
706 }
707 int32_t res = instance->Scale(x, y, pivotX, pivotY);
708 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Scale success");
709 return res;
710 }
711
FFiOHOSWindowOpacity(int64_t id,double opacity)712 int32_t FFiOHOSWindowOpacity(int64_t id, double opacity)
713 {
714 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Opacity start");
715 auto instance = FFIData::GetData<CJWindowImpl>(id);
716 if (instance == nullptr) {
717 return WM_ERROR_STATE_ABNORMALLY;
718 }
719 int32_t res = instance->Opacity(opacity);
720 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Opacity success");
721 return res;
722 }
723
FFiOHOSWindowSnapshot(int64_t id,int32_t * errCode)724 int64_t FFiOHOSWindowSnapshot(int64_t id, int32_t* errCode)
725 {
726 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Snapshot start");
727 auto instance = FFIData::GetData<CJWindowImpl>(id);
728 if (instance == nullptr) {
729 *errCode = WM_ERROR_STATE_ABNORMALLY;
730 return 0;
731 }
732 std::shared_ptr<Media::PixelMap> pmap = instance->Snapshot(errCode);
733 if (*errCode != 0) {
734 return 0;
735 }
736 auto nativeImage = FFIData::Create<PixelMapImpl>(move(pmap));
737 if (nativeImage == nullptr) {
738 TLOGI(WmsLogTag::WMS_DIALOG, "create image failed");
739 return 0;
740 }
741 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Snapshot success");
742 return nativeImage->GetID();
743 }
744
FFiOHOSWindowSetWindowSystemBarEnable(int64_t id,CArrString arr)745 int32_t FFiOHOSWindowSetWindowSystemBarEnable(int64_t id, CArrString arr)
746 {
747 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowSystemBarEnable start");
748 auto instance = FFIData::GetData<CJWindowImpl>(id);
749 if (instance == nullptr) {
750 return WM_ERROR_STATE_ABNORMALLY;
751 }
752 int32_t res = instance->SetWindowSystemBarEnable(arr.head, (uint32_t)arr.size);
753 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowSystemBarEnable success");
754 return res;
755 }
756
FFiOHOSWindowSetWindowSystemBarProperties(int64_t id,CJBarProperties properties)757 int32_t FFiOHOSWindowSetWindowSystemBarProperties(int64_t id, CJBarProperties properties)
758 {
759 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowSystemBarProperties start");
760 auto instance = FFIData::GetData<CJWindowImpl>(id);
761 if (instance == nullptr) {
762 return WM_ERROR_STATE_ABNORMALLY;
763 }
764 CBarProperties cProperties;
765 cProperties.statusBarColor = properties.statusBarColor;
766 cProperties.isStatusBarLightIcon = properties.isStatusBarLightIcon;
767 cProperties.statusBarContentColor = properties.statusBarContentColor;
768 cProperties.navigationBarColor = properties.navigationBarColor;
769 cProperties.navigationBarContentColor = properties.navigationBarContentColor;
770 cProperties.isNavigationBarLightIcon = properties.isNavigationBarLightIcon;
771 cProperties.enableStatusBarAnimation = properties.enableStatusBarAnimation;
772 cProperties.enableNavigationBarAnimation = properties.enableNavigationBarAnimation;
773 int32_t res = instance->SetWindowSystemBarProperties(cProperties);
774 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowSystemBarProperties success");
775 return res;
776 }
777
FfiOHOSOnKeyboardHeightChange(int64_t id,int64_t callbackId)778 int32_t FfiOHOSOnKeyboardHeightChange(int64_t id, int64_t callbackId)
779 {
780 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] OnKeyboardHeightChange start");
781 auto instance = FFIData::GetData<CJWindowImpl>(id);
782 if (instance == nullptr) {
783 return WM_ERROR_STATE_ABNORMALLY;
784 }
785 int32_t ret = instance->OnRegisterWindowCallback("keyboardHeightChange", callbackId);
786 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] OnKeyboardHeightChange success");
787 return ret;
788 }
789
FfiOHOSOffKeyboardHeightChange(int64_t id)790 int32_t FfiOHOSOffKeyboardHeightChange(int64_t id)
791 {
792 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] OffKeyboardHeightChange start");
793 auto instance = FFIData::GetData<CJWindowImpl>(id);
794 if (instance == nullptr) {
795 return WM_ERROR_STATE_ABNORMALLY;
796 }
797 int32_t ret = instance->UnregisterWindowCallback("keyboardHeightChange", (-1));
798 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] OffKeyboardHeightChange success");
799 return ret;
800 }
801
FfiOHOSOnWindowEvent(int64_t id,int64_t callbackId)802 int32_t FfiOHOSOnWindowEvent(int64_t id, int64_t callbackId)
803 {
804 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] OnWindowEvent start");
805 auto instance = FFIData::GetData<CJWindowImpl>(id);
806 if (instance == nullptr) {
807 return WM_ERROR_STATE_ABNORMALLY;
808 }
809 int32_t ret = instance->OnRegisterWindowCallback("windowEvent", callbackId);
810 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] OnWindowEvent success");
811 return ret;
812 }
813
FfiOHOSOnCallback(int64_t id,int64_t callbackId,const char * callbackType)814 int32_t FfiOHOSOnCallback(int64_t id, int64_t callbackId, const char* callbackType)
815 {
816 TLOGI(WmsLogTag::DEFAULT, "On %{public}s start", callbackType);
817 auto instance = FFIData::GetData<CJWindowImpl>(id);
818 if (instance == nullptr) {
819 return WM_ERROR_STATE_ABNORMALLY;
820 }
821 const std::string type = callbackType;
822 int32_t ret = instance->OnRegisterWindowCallback(type, callbackId);
823 TLOGI(WmsLogTag::DEFAULT, "On %{public}s success", callbackType);
824 return ret;
825 }
826
FfiOHOSOffCallback(int64_t id,int64_t callbackId,const char * callbackType)827 int32_t FfiOHOSOffCallback(int64_t id, int64_t callbackId, const char* callbackType)
828 {
829 TLOGI(WmsLogTag::DEFAULT, "Off %{public}s start", callbackType);
830 auto instance = FFIData::GetData<CJWindowImpl>(id);
831 if (instance == nullptr) {
832 return WM_ERROR_STATE_ABNORMALLY;
833 }
834 const std::string type = callbackType;
835 int32_t ret = instance->UnregisterWindowCallback(type, callbackId);
836 TLOGI(WmsLogTag::DEFAULT, "Off %{public}s success", callbackType);
837 return ret;
838 }
839
FfiOHOSOnNoInteractionDetected(int64_t id,int64_t timeout,int64_t callbackId)840 int32_t FfiOHOSOnNoInteractionDetected(int64_t id, int64_t timeout, int64_t callbackId)
841 {
842 TLOGI(WmsLogTag::DEFAULT, "OnNoInteractionDetected start");
843 auto instance = FFIData::GetData<CJWindowImpl>(id);
844 if (instance == nullptr) {
845 return WM_ERROR_STATE_ABNORMALLY;
846 }
847 const std::string type = "noInteractionDetected";
848 int32_t ret = instance->OnRegisterWindowCallback(type, callbackId, timeout);
849 TLOGI(WmsLogTag::DEFAULT, "OnNoInteractionDetected success");
850 return ret;
851 }
852
FfiOHOSSetSubWindowModal(int64_t id,bool isModal)853 int32_t FfiOHOSSetSubWindowModal(int64_t id, bool isModal)
854 {
855 TLOGI(WmsLogTag::WMS_SUB, "SetSubWindowModal start");
856 auto instance = FFIData::GetData<CJWindowImpl>(id);
857 if (instance == nullptr) {
858 return WM_ERROR_STATE_ABNORMALLY;
859 }
860 int32_t ret = instance->SetSubWindowModal(isModal);
861 TLOGI(WmsLogTag::WMS_SUB, "SetSubWindowModal success");
862 return ret;
863 }
864
FfiOHOSIsFocused(int64_t id,int32_t * errCode)865 int32_t FfiOHOSIsFocused(int64_t id, int32_t* errCode)
866 {
867 TLOGI(WmsLogTag::WMS_FOCUS, "IsFocused start");
868 auto instance = FFIData::GetData<CJWindowImpl>(id);
869 if (instance == nullptr) {
870 *errCode = WM_ERROR_STATE_ABNORMALLY;
871 return 0;
872 }
873 int32_t ret = instance->GetWindowProperties(errCode).focusable;
874 TLOGI(WmsLogTag::WMS_FOCUS, "IsFocused success");
875 return ret;
876 }
877
FfiOHOSSetWindowLimits(int64_t id,OHOS::Rosen::CWindowLimits windloLimits,OHOS::Rosen::CWindowLimits * retPtr)878 int32_t FfiOHOSSetWindowLimits(int64_t id,
879 OHOS::Rosen::CWindowLimits windloLimits,
880 OHOS::Rosen::CWindowLimits* retPtr)
881 {
882 TLOGI(WmsLogTag::WMS_LAYOUT, "SetWindowLimits start");
883 auto instance = FFIData::GetData<CJWindowImpl>(id);
884 if (instance == nullptr) {
885 return WM_ERROR_STATE_ABNORMALLY;
886 }
887
888 CWindowLimits cWindowLimits;
889 cWindowLimits.maxWidth = windloLimits.maxWidth;
890 cWindowLimits.maxHeight = windloLimits.maxHeight;
891 cWindowLimits.minWidth = windloLimits.minWidth;
892 cWindowLimits.minHeight = windloLimits.minHeight;
893
894 int32_t ret = instance->SetWindowLimits(cWindowLimits, *retPtr);
895 TLOGI(WmsLogTag::WMS_LAYOUT, "SetWindowLimits success");
896 return ret;
897 }
898
FfiOHOSGetWindowLimits(int64_t id,OHOS::Rosen::CWindowLimits * retPtr)899 int32_t FfiOHOSGetWindowLimits(int64_t id, OHOS::Rosen::CWindowLimits* retPtr)
900 {
901 TLOGI(WmsLogTag::WMS_LAYOUT, "GetWindowLimits start");
902 auto instance = FFIData::GetData<CJWindowImpl>(id);
903 if (instance == nullptr) {
904 return WM_ERROR_STATE_ABNORMALLY;
905 }
906
907 int32_t ret = instance->GetWindowLimits(*retPtr);
908 TLOGI(WmsLogTag::WMS_LAYOUT, "GetWindowLimits success");
909 return ret;
910 }
911
FfiOHOSGetImmersiveModeEnabledState(int64_t id,int32_t * errCode)912 bool FfiOHOSGetImmersiveModeEnabledState(int64_t id, int32_t* errCode)
913 {
914 TLOGI(WmsLogTag::WMS_IMMS, "GetImmersiveModeEnabledState start");
915 auto instance = FFIData::GetData<CJWindowImpl>(id);
916 if (instance == nullptr) {
917 *errCode = WM_ERROR_STATE_ABNORMALLY;
918 return false;
919 }
920 bool ret = instance->GetImmersiveModeEnabledState(*errCode);
921 TLOGI(WmsLogTag::WMS_IMMS, "GetImmersiveModeEnabledState success");
922 return ret;
923 }
924
FfiOHOSSetImmersiveModeEnabledState(int64_t id,bool enabled)925 int32_t FfiOHOSSetImmersiveModeEnabledState(int64_t id, bool enabled)
926 {
927 TLOGI(WmsLogTag::WMS_IMMS, "SetImmersiveModeEnabledState start");
928 auto instance = FFIData::GetData<CJWindowImpl>(id);
929 if (instance == nullptr) {
930 return WM_ERROR_STATE_ABNORMALLY;
931 }
932 int32_t ret = instance->SetImmersiveModeEnabledState(enabled);
933 TLOGI(WmsLogTag::WMS_IMMS, "SetImmersiveModeEnabledState success");
934 return ret;
935 }
936
FfiOHOSKeepKeyboardOnFocus(int64_t id,bool keepKeyboardFlag)937 int32_t FfiOHOSKeepKeyboardOnFocus(int64_t id, bool keepKeyboardFlag)
938 {
939 TLOGI(WmsLogTag::WMS_KEYBOARD, "KeepKeyboardOnFocus start");
940 auto instance = FFIData::GetData<CJWindowImpl>(id);
941 if (instance == nullptr) {
942 return WM_ERROR_STATE_ABNORMALLY;
943 }
944 int32_t ret = instance->KeepKeyboardOnFocus(keepKeyboardFlag);
945 TLOGI(WmsLogTag::WMS_KEYBOARD, "KeepKeyboardOnFocus success");
946 return ret;
947 }
948
FfiOHOSGetWindowDecorHeight(int64_t id,int32_t * height)949 int32_t FfiOHOSGetWindowDecorHeight(int64_t id, int32_t* height)
950 {
951 TLOGI(WmsLogTag::WMS_DECOR, "GetWindowDecorHeight start");
952 auto instance = FFIData::GetData<CJWindowImpl>(id);
953 if (instance == nullptr) {
954 return WM_ERROR_STATE_ABNORMALLY;
955 }
956
957 int32_t ret = instance->GetWindowDecorHeight(*height);
958 TLOGI(WmsLogTag::WMS_DECOR, "GetWindowDecorHeight success");
959 return ret;
960 }
961
FfiOHOSSetWindowDecorHeight(int64_t id,int32_t height)962 int32_t FfiOHOSSetWindowDecorHeight(int64_t id, int32_t height)
963 {
964 TLOGI(WmsLogTag::WMS_DECOR, "SetWindowDecorHeight start");
965 auto instance = FFIData::GetData<CJWindowImpl>(id);
966 if (instance == nullptr) {
967 return WM_ERROR_STATE_ABNORMALLY;
968 }
969
970 int32_t ret = instance->SetWindowDecorHeight(height);
971 TLOGI(WmsLogTag::WMS_DECOR, "SetWindowDecorHeight success");
972 return ret;
973 }
974
FfiOHOSRecover(int64_t id)975 int32_t FfiOHOSRecover(int64_t id)
976 {
977 TLOGI(WmsLogTag::WMS_RECOVER, "Recover start");
978 auto instance = FFIData::GetData<CJWindowImpl>(id);
979 if (instance == nullptr) {
980 return WM_ERROR_STATE_ABNORMALLY;
981 }
982
983 int32_t ret = instance->Recover();
984 TLOGI(WmsLogTag::WMS_RECOVER, "Recover success");
985 return ret;
986 }
987
FfiOHOSSetWindowDecorVisible(int64_t id,bool isVisible)988 int32_t FfiOHOSSetWindowDecorVisible(int64_t id, bool isVisible)
989 {
990 TLOGI(WmsLogTag::WMS_DECOR, "SetWindowDecorVisible start");
991 auto instance = FFIData::GetData<CJWindowImpl>(id);
992 if (instance == nullptr) {
993 return WM_ERROR_STATE_ABNORMALLY;
994 }
995 int32_t ret = instance->SetWindowDecorVisible(isVisible);
996 TLOGI(WmsLogTag::WMS_DECOR, "SetWindowDecorVisible success");
997 return ret;
998 }
999
FfiOHOSGetTitleButtonRect(int64_t id,OHOS::Rosen::CTitleButtonRect * retPtr)1000 int32_t FfiOHOSGetTitleButtonRect(int64_t id,
1001 OHOS::Rosen::CTitleButtonRect* retPtr)
1002 {
1003 TLOGI(WmsLogTag::WMS_DECOR, "GetTitleButtonRect start");
1004 auto instance = FFIData::GetData<CJWindowImpl>(id);
1005 if (instance == nullptr) {
1006 return WM_ERROR_STATE_ABNORMALLY;
1007 }
1008
1009 int32_t ret = instance->GetTitleButtonRect(*retPtr);
1010 TLOGI(WmsLogTag::WMS_DECOR, "GetTitleButtonRect success");
1011 return ret;
1012 }
1013
FfiOHOSSetDialogBackGestureEnabled(int64_t id,bool enabled)1014 int32_t FfiOHOSSetDialogBackGestureEnabled(int64_t id, bool enabled)
1015 {
1016 TLOGI(WmsLogTag::WMS_DIALOG, "SetDialogBackGestureEnabled start");
1017 auto instance = FFIData::GetData<CJWindowImpl>(id);
1018 if (instance == nullptr) {
1019 return WM_ERROR_STATE_ABNORMALLY;
1020 }
1021 int32_t ret = instance->SetDialogBackGestureEnabled(enabled);
1022 TLOGI(WmsLogTag::WMS_DIALOG, "SetDialogBackGestureEnabled success");
1023 return ret;
1024 }
1025
FfiOHOSDisableLandscapeMultiWindow(int64_t id)1026 int32_t FfiOHOSDisableLandscapeMultiWindow(int64_t id)
1027 {
1028 TLOGI(WmsLogTag::WMS_MULTI_WINDOW, "DisableLandscapeMultiWindow start");
1029 auto instance = FFIData::GetData<CJWindowImpl>(id);
1030 if (instance == nullptr) {
1031 return WM_ERROR_STATE_ABNORMALLY;
1032 }
1033 int32_t ret = instance->DisableLandscapeMultiWindow();
1034 TLOGI(WmsLogTag::WMS_MULTI_WINDOW, "DisableLandscapeMultiWindow success");
1035 return ret;
1036 }
1037
FfiOHOSEnableLandscapeMultiWindow(int64_t id)1038 int32_t FfiOHOSEnableLandscapeMultiWindow(int64_t id)
1039 {
1040 TLOGI(WmsLogTag::WMS_MULTI_WINDOW, "EnableLandscapeMultiWindow start");
1041 auto instance = FFIData::GetData<CJWindowImpl>(id);
1042 if (instance == nullptr) {
1043 return WM_ERROR_STATE_ABNORMALLY;
1044 }
1045 int32_t ret = instance->EnableLandscapeMultiWindow();
1046 TLOGI(WmsLogTag::WMS_MULTI_WINDOW, "EnableLandscapeMultiWindow success");
1047 return ret;
1048 }
1049
FfiOHOSSetWindowGrayScale(int64_t id,float grayScale)1050 int32_t FfiOHOSSetWindowGrayScale(int64_t id, float grayScale)
1051 {
1052 TLOGI(WmsLogTag::WMS_ATTRIBUTE, "SetWindowGrayScale start");
1053 auto instance = FFIData::GetData<CJWindowImpl>(id);
1054 if (instance == nullptr) {
1055 return WM_ERROR_STATE_ABNORMALLY;
1056 }
1057 int32_t ret = instance->SetWindowGrayScale(grayScale);
1058 TLOGI(WmsLogTag::WMS_ATTRIBUTE, "SetWindowGrayScale success");
1059 return ret;
1060 }
1061
FfiOHOSSpecificSystemBarEnabled(int64_t id,int32_t name,bool enable,bool enableAnimation)1062 int32_t FfiOHOSSpecificSystemBarEnabled(int64_t id, int32_t name, bool enable,
1063 bool enableAnimation)
1064 {
1065 TLOGI(WmsLogTag::WMS_IMMS, "SpecificSystemBarEnabled start");
1066 auto instance = FFIData::GetData<CJWindowImpl>(id);
1067 if (instance == nullptr) {
1068 return WM_ERROR_STATE_ABNORMALLY;
1069 }
1070 int32_t ret = instance->SpecificSystemBarEnabled(name, enable, enableAnimation);
1071 TLOGI(WmsLogTag::WMS_IMMS, "SpecificSystemBarEnabled success");
1072 return ret;
1073 }
1074
FfiOHOSGetWindowSystemBarProperties(int64_t id,CJBarProperties * systemBarProperty)1075 int32_t FfiOHOSGetWindowSystemBarProperties(int64_t id,
1076 CJBarProperties* systemBarProperty)
1077 {
1078 TLOGI(WmsLogTag::WMS_IMMS, "GetWindowSystemBarProperties start");
1079 auto instance = FFIData::GetData<CJWindowImpl>(id);
1080 if (instance == nullptr) {
1081 return WM_ERROR_STATE_ABNORMALLY;
1082 }
1083 int32_t ret = instance->GetWindowSystemBarProperties(*systemBarProperty);
1084 TLOGI(WmsLogTag::WMS_IMMS, "GetWindowSystemBarProperties success");
1085 return ret;
1086 }
1087
FfiOHOSGetPreferredOrientation(int64_t id,int32_t * errCode)1088 uint32_t FfiOHOSGetPreferredOrientation(int64_t id, int32_t* errCode)
1089 {
1090 auto instance = FFIData::GetData<CJWindowImpl>(id);
1091 if (instance == nullptr) {
1092 return WM_ERROR_STATE_ABNORMALLY;
1093 }
1094 uint32_t ret = instance->GetPreferredOrientation(*errCode);
1095 return ret;
1096 }
1097
FfiOHOSGetWindowStatus(int64_t id,int32_t * errCode)1098 int32_t FfiOHOSGetWindowStatus(int64_t id, int32_t* errCode)
1099 {
1100 TLOGI(WmsLogTag::WMS_PC, "GetWindowStatus start");
1101 auto instance = FFIData::GetData<CJWindowImpl>(id);
1102 if (instance == nullptr) {
1103 return WM_ERROR_STATE_ABNORMALLY;
1104 }
1105 int32_t ret = instance->GetWindowStatus(*errCode);
1106 TLOGI(WmsLogTag::WMS_PC, "GetWindowStatus success");
1107 return ret;
1108 }
1109
FfiOHOSMaximize(int64_t id,int32_t presentation)1110 int32_t FfiOHOSMaximize(int64_t id, int32_t presentation)
1111 {
1112 TLOGI(WmsLogTag::WMS_LAYOUT_PC, "Maximize start");
1113 auto instance = FFIData::GetData<CJWindowImpl>(id);
1114 if (instance == nullptr) {
1115 return WM_ERROR_STATE_ABNORMALLY;
1116 }
1117 int32_t ret = instance->Maximize(presentation);
1118 TLOGI(WmsLogTag::WMS_LAYOUT_PC, "Maximize success");
1119 return ret;
1120 }
1121
FfiOHOSCreateSubWindowWithOptions(int64_t id,char * name,CSubWindowOptions option)1122 RetDataI64 FfiOHOSCreateSubWindowWithOptions(int64_t id, char* name,
1123 CSubWindowOptions option)
1124 {
1125 TLOGI(WmsLogTag::WMS_SUB, "CreateSubWindowWithOptions start");
1126 RetDataI64 ret;
1127 std::string nm = name;
1128 auto instance = FFIData::GetData<CJWindowImpl>(id);
1129 if (instance == nullptr) {
1130 ret.code = WM_ERROR_STATE_ABNORMALLY;
1131 return ret;
1132 }
1133 ret.code = instance->CreateSubWindowWithOptions(nm, ret.data, option);
1134 TLOGI(WmsLogTag::WMS_SUB, "CreateSubWindowWithOptions success");
1135 return ret;
1136 }
1137
1138 // WindowStage
FfiOHOSBindWindowStage(int64_t windowStageImplPtr)1139 RetDataI64 FfiOHOSBindWindowStage(int64_t windowStageImplPtr)
1140 {
1141 TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] bind to created WindowStage");
1142 RetDataI64 ret;
1143 auto actualWs = reinterpret_cast<CJWindowStageImpl*>(windowStageImplPtr);
1144 if (actualWs == nullptr) {
1145 TLOGE(WmsLogTag::WMS_DIALOG, "[WindowStage] Bind null obj");
1146 ret.code = static_cast<int32_t>(WMError::WM_ERROR_NULLPTR);
1147 return ret;
1148 }
1149 ret.code = static_cast<int32_t>(WMError::WM_OK);
1150 ret.data = actualWs->GetID();
1151 return ret;
1152 }
1153
FfiOHOSGetMainWindow(int64_t id)1154 RetDataI64 FfiOHOSGetMainWindow(int64_t id)
1155 {
1156 TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] getMainWindow start");
1157 RetDataI64 ret;
1158 auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1159 if (instance == nullptr) {
1160 ret.code = WM_ERROR_STATE_ABNORMALLY;
1161 return ret;
1162 }
1163 ret.code = instance->GetMainWindow(ret.data);
1164 return ret;
1165 }
1166
FfiOHOSCreateSubWindow(int64_t id,char * name)1167 RetDataI64 FfiOHOSCreateSubWindow(int64_t id, char* name)
1168 {
1169 TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] createSubWindow start");
1170 RetDataI64 ret;
1171 std::string nm = name;
1172 auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1173 if (instance == nullptr) {
1174 ret.code = WM_ERROR_STATE_ABNORMALLY;
1175 return ret;
1176 }
1177 ret.code = instance->CreateSubWindow(nm, ret.data);
1178 return ret;
1179 }
1180
FfiOHOSGetSubWindow(int64_t id)1181 RetStruct FfiOHOSGetSubWindow(int64_t id)
1182 {
1183 TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] getSubWindow start");
1184 auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1185 if (instance == nullptr) {
1186 return {WM_ERROR_STATE_ABNORMALLY, 0, nullptr};
1187 }
1188 auto ret = instance->GetSubWindow();
1189 return ret;
1190 }
1191
FfiOHOSLoadContent(int64_t id,char * path)1192 int32_t FfiOHOSLoadContent(int64_t id, char* path)
1193 {
1194 TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] loadContent start");
1195 std::string url = path;
1196 std::string storageJson = " ";
1197 auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1198 if (instance == nullptr) {
1199 return WM_ERROR_STATE_ABNORMALLY;
1200 }
1201 return instance->OnLoadContent(url, storageJson, false);
1202 }
1203
FfiOHOSLoadContentByName(int64_t id,char * name)1204 int32_t FfiOHOSLoadContentByName(int64_t id, char* name)
1205 {
1206 TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] loadContentByName start");
1207 return SUCCESS_CODE;
1208 }
1209
FfiOHOSDisableWindowDecor(int64_t id)1210 int32_t FfiOHOSDisableWindowDecor(int64_t id)
1211 {
1212 TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] disableWindowDecor start");
1213 auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1214 if (instance == nullptr) {
1215 return WM_ERROR_STATE_ABNORMALLY;
1216 }
1217 return instance->DisableWindowDecor();
1218 }
1219
FfiOHOSSetShowOnLockScreen(int64_t id,bool showOnLockScreen)1220 int32_t FfiOHOSSetShowOnLockScreen(int64_t id, bool showOnLockScreen)
1221 {
1222 TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] setShowOnLockScreen start");
1223 auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1224 if (instance == nullptr) {
1225 return WM_ERROR_STATE_ABNORMALLY;
1226 }
1227 return instance->SetShowOnLockScreen(showOnLockScreen);
1228 }
1229
FfiOHOSSetDefaultDensityEnabled(int64_t id,bool enabled)1230 int32_t FfiOHOSSetDefaultDensityEnabled(int64_t id, bool enabled)
1231 {
1232 TLOGI(WmsLogTag::WMS_ATTRIBUTE, "setDefaultDensityEnabled start");
1233 auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1234 if (instance == nullptr) {
1235 return WM_ERROR_STATE_ABNORMALLY;
1236 }
1237 return instance->SetDefaultDensityEnabled(enabled);
1238 }
1239
FfiOHOSStageOn(int64_t id,int64_t callbackId)1240 int32_t FfiOHOSStageOn(int64_t id, int64_t callbackId)
1241 {
1242 TLOGI(WmsLogTag::DEFAULT, "on windowStageEvent start");
1243 auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1244 if (instance == nullptr) {
1245 TLOGI(WmsLogTag::DEFAULT, "on windowStageEvent is nullptr");
1246 return WM_ERROR_STATE_ABNORMALLY;
1247 }
1248 int32_t ret = instance->OnEvent(callbackId);
1249 TLOGI(WmsLogTag::DEFAULT, "on windowStageEvent success");
1250 return ret;
1251 }
1252
FfiOHOSStageOff(int64_t id,int64_t callbackId)1253 int32_t FfiOHOSStageOff(int64_t id, int64_t callbackId)
1254 {
1255 TLOGI(WmsLogTag::DEFAULT, "off windowStageEvent start");
1256 auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1257 if (instance == nullptr) {
1258 TLOGI(WmsLogTag::DEFAULT, "off windowStageEvent is nullptr");
1259 return WM_ERROR_STATE_ABNORMALLY;
1260 }
1261 int32_t ret = instance->OffEvent(callbackId);
1262 TLOGI(WmsLogTag::DEFAULT, "off windowStageEvent success");
1263 return ret;
1264 }
1265
FfiOHOSCreateSubWindowWithOptionsStage(int64_t id,const char * name,const char * title,bool decorEnabled,bool isModal)1266 RetDataI64 FfiOHOSCreateSubWindowWithOptionsStage(int64_t id, const char* name,
1267 const char* title, bool decorEnabled, bool isModal)
1268 {
1269 TLOGI(WmsLogTag::WMS_SUB, "CreateSubWindowWithOptionsStage start");
1270 RetDataI64 ret;
1271 const std::string nameStr = name;
1272 const std::string titleStr = title;
1273 auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1274 if (instance == nullptr) {
1275 ret.code = WM_ERROR_STATE_ABNORMALLY;
1276 return ret;
1277 }
1278 ret.code = instance->CreateSubWindowWithOptions(ret.data, nameStr, titleStr, decorEnabled, isModal);
1279 return ret;
1280 }
1281
1282 } // extern "C"
1283 }
1284 }
1285