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 #include "window_ffi.h"
16 #include <transaction/rs_interfaces.h>
17 #include "pixel_map_impl.h"
18 #include "window_manager_hilog.h"
19
20 using namespace OHOS::FFI;
21 using namespace OHOS::Media;
22
23 namespace OHOS {
24 namespace Rosen {
25 extern "C" {
26 const int32_t WM_ERROR_STATE_ABNORMALLY = 1300002;
27
FfiOHOSCreateWindow(char * name,uint32_t windowType,OHOS::AbilityRuntime::Context * context,int64_t displayId,int64_t parentId)28 RetDataI64 FfiOHOSCreateWindow(char* name, uint32_t windowType, OHOS::AbilityRuntime::Context* context,
29 int64_t displayId, int64_t parentId)
30 {
31 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] CreateWindow start");
32 std::string nm = name;
33 RetDataI64 ret;
34 WindowParameters window;
35 window.name = nm;
36 window.winType = windowType;
37 window.context = context;
38 window.displayId = displayId;
39 window.parentId = parentId;
40 window.windowId = &ret.data;
41 ret.code = OHOS::Rosen::WindowManagerImpl::CreateWindow(window);
42 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] CreateWindow success");
43 return ret;
44 }
45
FfiOHOSWindowSetWindowLayoutMode(uint32_t mode)46 int32_t FfiOHOSWindowSetWindowLayoutMode(uint32_t mode)
47 {
48 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowLayoutMode start");
49 int32_t ret = OHOS::Rosen::WindowManagerImpl::SetWindowLayoutMode(mode);
50 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowLayoutMode success");
51 return ret;
52 }
53
FfiOHOSWindowMinimizeAll(int64_t displayId)54 int32_t FfiOHOSWindowMinimizeAll(int64_t displayId)
55 {
56 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] MinimizeAll start");
57 int32_t ret = OHOS::Rosen::WindowManagerImpl::MinimizeAll(displayId);
58 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] MinimizeAll success");
59 return ret;
60 }
61
FfiOHOSGetLastWindow(OHOS::AbilityRuntime::Context * ctx)62 RetDataI64 FfiOHOSGetLastWindow(OHOS::AbilityRuntime::Context* ctx)
63 {
64 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetLastWindow start");
65 RetDataI64 ret;
66 ret.code = OHOS::Rosen::WindowManagerImpl::GetLastWindow(ctx, ret.data);
67 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetLastWindow success");
68 return ret;
69 }
70
71 // window
FfiOHOSWindowHide(int64_t id)72 int32_t FfiOHOSWindowHide(int64_t id)
73 {
74 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Hide start");
75 auto instance = FFIData::GetData<CJWindowImpl>(id);
76 if (instance == nullptr) {
77 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
78 return WM_ERROR_STATE_ABNORMALLY;
79 }
80 int32_t res = instance->Hide();
81 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Hide success");
82 return res;
83 }
84
FfiOHOSWindowHideWithAnimation(int64_t id)85 int32_t FfiOHOSWindowHideWithAnimation(int64_t id)
86 {
87 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] HideWithAnimation start");
88 auto instance = FFIData::GetData<CJWindowImpl>(id);
89 if (instance == nullptr) {
90 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
91 return WM_ERROR_STATE_ABNORMALLY;
92 }
93 int32_t res = instance->HideWithAnimation();
94 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] HideWithAnimation success");
95 return res;
96 }
97
FfiOHOSWindowShowWindow(int64_t id)98 int32_t FfiOHOSWindowShowWindow(int64_t id)
99 {
100 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] ShowWindow start");
101 auto instance = FFIData::GetData<CJWindowImpl>(id);
102 if (instance == nullptr) {
103 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
104 return WM_ERROR_STATE_ABNORMALLY;
105 }
106 int32_t res = instance->ShowWindow();
107 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] ShowWindow success");
108 return res;
109 }
110
FfiOHOSWindowShowWithAnimation(int64_t id)111 int32_t FfiOHOSWindowShowWithAnimation(int64_t id)
112 {
113 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] ShowWithAnimation start");
114 auto instance = FFIData::GetData<CJWindowImpl>(id);
115 if (instance == nullptr) {
116 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
117 return WM_ERROR_STATE_ABNORMALLY;
118 }
119 int32_t res = instance->ShowWithAnimation();
120 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] ShowWithAnimation success");
121 return res;
122 }
123
FfiOHOSWindowDestroyWindow(int64_t id)124 int32_t FfiOHOSWindowDestroyWindow(int64_t id)
125 {
126 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] DestroyWindow start");
127 auto instance = FFIData::GetData<CJWindowImpl>(id);
128 if (instance == nullptr) {
129 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
130 return WM_ERROR_STATE_ABNORMALLY;
131 }
132 int32_t res = instance->DestroyWindow();
133 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] DestroyWindow success");
134 return res;
135 }
136
FfiOHOSWindowMoveWindowTo(int64_t id,int32_t x,int32_t y)137 int32_t FfiOHOSWindowMoveWindowTo(int64_t id, int32_t x, int32_t y)
138 {
139 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] MoveWindowTo start");
140 auto instance = FFIData::GetData<CJWindowImpl>(id);
141 if (instance == nullptr) {
142 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
143 return WM_ERROR_STATE_ABNORMALLY;
144 }
145 int32_t res = instance->MoveWindowTo(x, y);
146 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] MoveWindowTo success");
147 return res;
148 }
149
FfiOHOSWindowResize(int64_t id,uint32_t width,uint32_t height)150 int32_t FfiOHOSWindowResize(int64_t id, uint32_t width, uint32_t height)
151 {
152 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Resize start");
153 auto instance = FFIData::GetData<CJWindowImpl>(id);
154 if (instance == nullptr) {
155 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
156 return WM_ERROR_STATE_ABNORMALLY;
157 }
158 int32_t res = instance->Resize(width, height);
159 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Resize success");
160 return res;
161 }
162
FfiOHOSWindowSetWindowMode(int64_t id,uint32_t mode)163 int32_t FfiOHOSWindowSetWindowMode(int64_t id, uint32_t mode)
164 {
165 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowMode start");
166 auto instance = FFIData::GetData<CJWindowImpl>(id);
167 if (instance == nullptr) {
168 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
169 return WM_ERROR_STATE_ABNORMALLY;
170 }
171 int32_t res = instance->SetWindowMode(mode);
172 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowMode success");
173 return res;
174 }
175
FfiOHOSWindowGetWindowProperties(int64_t id,int32_t * errCode)176 CWindowProperties FfiOHOSWindowGetWindowProperties(int64_t id, int32_t* errCode)
177 {
178 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetWindowProperties start");
179 CWindowProperties res;
180 auto instance = FFIData::GetData<CJWindowImpl>(id);
181 if (instance == nullptr) {
182 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
183 *errCode = WM_ERROR_STATE_ABNORMALLY;
184 return res;
185 }
186 res = instance->GetWindowProperties(errCode);
187 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetWindowProperties success");
188 return res;
189 }
190
FfiOHOSWindowSetWindowLayoutFullScreen(int64_t id,bool isLayoutFullScreen)191 int32_t FfiOHOSWindowSetWindowLayoutFullScreen(int64_t id, bool isLayoutFullScreen)
192 {
193 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowLayoutFullScreen start");
194 auto instance = FFIData::GetData<CJWindowImpl>(id);
195 if (instance == nullptr) {
196 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
197 return WM_ERROR_STATE_ABNORMALLY;
198 }
199 int32_t res = instance->SetWindowLayoutFullScreen(isLayoutFullScreen);
200 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowLayoutFullScreen success");
201 return res;
202 }
203
FfiOHOSSetWindowBackgroundColor(int64_t id,const char * color)204 int32_t FfiOHOSSetWindowBackgroundColor(int64_t id, const char* color)
205 {
206 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowBackgroundColor start");
207 auto instance = FFIData::GetData<CJWindowImpl>(id);
208 if (instance == nullptr) {
209 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
210 return WM_ERROR_STATE_ABNORMALLY;
211 }
212 int32_t ret = instance->SetWindowBackgroundColor(color);
213 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowBackgroundColor success");
214 return ret;
215 }
216
FfiOHOSWindowSetWindowBrightness(int64_t id,float brightness)217 int32_t FfiOHOSWindowSetWindowBrightness(int64_t id, float brightness)
218 {
219 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowBrightness start");
220 auto instance = FFIData::GetData<CJWindowImpl>(id);
221 if (instance == nullptr) {
222 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
223 return WM_ERROR_STATE_ABNORMALLY;
224 }
225 int32_t res = instance->SetWindowBrightness(brightness);
226 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowBrightness success");
227 return res;
228 }
229
FfiOHOSWindowSetWindowFocusable(int64_t id,bool focusable)230 int32_t FfiOHOSWindowSetWindowFocusable(int64_t id, bool focusable)
231 {
232 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowFocusable start");
233 auto instance = FFIData::GetData<CJWindowImpl>(id);
234 if (instance == nullptr) {
235 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
236 return WM_ERROR_STATE_ABNORMALLY;
237 }
238 int32_t res = instance->SetWindowFocusable(focusable);
239 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowFocusable success");
240 return res;
241 }
242
FfiOHOSWindowSetWindowKeepScreenOn(int64_t id,bool keepScreenOn)243 int32_t FfiOHOSWindowSetWindowKeepScreenOn(int64_t id, bool keepScreenOn)
244 {
245 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowKeepScreenOn start");
246 auto instance = FFIData::GetData<CJWindowImpl>(id);
247 if (instance == nullptr) {
248 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
249 return WM_ERROR_STATE_ABNORMALLY;
250 }
251 int32_t res = instance->SetWindowKeepScreenOn(keepScreenOn);
252 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowKeepScreenOn success");
253 return res;
254 }
255
FfiOHOSWindowSetWindowPrivacyMode(int64_t id,bool isPrivacyMode)256 int32_t FfiOHOSWindowSetWindowPrivacyMode(int64_t id, bool isPrivacyMode)
257 {
258 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowPrivacyMode start");
259 auto instance = FFIData::GetData<CJWindowImpl>(id);
260 if (instance == nullptr) {
261 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
262 return WM_ERROR_STATE_ABNORMALLY;
263 }
264 int32_t res = instance->SetWindowPrivacyMode(isPrivacyMode);
265 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowPrivacyMode success");
266 return res;
267 }
268
FfiOHOSWindowSetWindowTouchable(int64_t id,bool touchable)269 int32_t FfiOHOSWindowSetWindowTouchable(int64_t id, bool touchable)
270 {
271 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowTouchable start");
272 auto instance = FFIData::GetData<CJWindowImpl>(id);
273 if (instance == nullptr) {
274 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
275 return WM_ERROR_STATE_ABNORMALLY;
276 }
277 int32_t res = instance->SetWindowTouchable(touchable);
278 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowTouchable success");
279 return res;
280 }
281
FfiOHOSWindowSetForbidSplitMove(int64_t id,bool isForbidSplitMove)282 int32_t FfiOHOSWindowSetForbidSplitMove(int64_t id, bool isForbidSplitMove)
283 {
284 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetForbidSplitMove start");
285 auto instance = FFIData::GetData<CJWindowImpl>(id);
286 if (instance == nullptr) {
287 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
288 return WM_ERROR_STATE_ABNORMALLY;
289 }
290 int32_t res = instance->SetForbidSplitMove(isForbidSplitMove);
291 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetForbidSplitMove success");
292 return res;
293 }
294
FfiOHOSWindowIsWindowSupportWideGamut(int64_t id,int32_t * errCode)295 bool FfiOHOSWindowIsWindowSupportWideGamut(int64_t id, int32_t* errCode)
296 {
297 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] IsWindowSupportWideGamut start");
298 bool res = false;
299 auto instance = FFIData::GetData<CJWindowImpl>(id);
300 if (instance == nullptr) {
301 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
302 *errCode = WM_ERROR_STATE_ABNORMALLY;
303 return res;
304 }
305 res = instance->IsWindowSupportWideGamut(errCode);
306 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] IsWindowSupportWideGamut success");
307 return res;
308 }
309
FfiOHOSWindowIsWindowShowing(int64_t id,int32_t * errCode)310 bool FfiOHOSWindowIsWindowShowing(int64_t id, int32_t* errCode)
311 {
312 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] IsWindowShowing start");
313 bool res = false;
314 auto instance = FFIData::GetData<CJWindowImpl>(id);
315 if (instance == nullptr) {
316 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
317 *errCode = WM_ERROR_STATE_ABNORMALLY;
318 return res;
319 }
320 res = instance->IsWindowShowing(errCode);
321 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] IsWindowShowing success");
322 return res;
323 }
324
FFiOHOSWindowFindWindow(char * name)325 RetDataI64 FFiOHOSWindowFindWindow(char* name)
326 {
327 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowFindWindow start");
328 RetDataI64 ret;
329 ret.code = WindowManagerImpl::FindWindow(name, ret.data);
330 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowFindWindow success");
331 return ret;
332 }
333
FFiOHOSWindowToggleShownStateForAllAppWindows()334 int32_t FFiOHOSWindowToggleShownStateForAllAppWindows()
335 {
336 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowToggleShownStateForAllAppWindows start");
337 WmErrorCode ret = WM_JS_TO_ERROR_CODE_MAP.at(
338 SingletonContainer::Get<WindowManager>().ToggleShownStateForAllAppWindows());
339 if (ret != WmErrorCode::WM_OK) {
340 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowToggleShownStateForAllAppWindows error %{public}d", ret);
341 return static_cast<int32_t>(ret);
342 }
343 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowToggleShownStateForAllAppWindows success");
344 return SUCCESS_CODE;
345 }
346
FFiOHOSWindowSetGestureNavigationEnabled(bool enable)347 int32_t FFiOHOSWindowSetGestureNavigationEnabled(bool enable)
348 {
349 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetGestureNavigationEnabled start");
350 WmErrorCode ret = WM_JS_TO_ERROR_CODE_MAP.at(
351 SingletonContainer::Get<WindowManager>().SetGestureNavigaionEnabled(enable));
352 if (ret != WmErrorCode::WM_OK) {
353 TLOGE(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetGestureNavigationEnabled error %{public}d", ret);
354 return static_cast<int32_t>(ret);
355 }
356 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetGestureNavigationEnabled success");
357 return SUCCESS_CODE;
358 }
359
FFiOHOSWindowSetWaterMarkImage(int64_t pixelMapId,bool enable)360 int32_t FFiOHOSWindowSetWaterMarkImage(int64_t pixelMapId, bool enable)
361 {
362 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetWaterMarkImage start");
363 auto pixelMapImpl = FFIData::GetData<PixelMapImpl>(pixelMapId);
364 if (pixelMapImpl == nullptr) {
365 return WM_ERROR_STATE_ABNORMALLY;
366 }
367 auto pixelMap = pixelMapImpl->GetRealPixelMap();
368 RSInterfaces::GetInstance().ShowWatermark(pixelMap, enable);
369 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetWaterMarkImage success");
370 return SUCCESS_CODE;
371 }
372
FFiOHOSWindowSetBackdropBlurStyle(int64_t id,uint32_t blurStyle)373 int32_t FFiOHOSWindowSetBackdropBlurStyle(int64_t id, uint32_t blurStyle)
374 {
375 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBackdropBlurStyle start");
376 auto instance = FFIData::GetData<CJWindowImpl>(id);
377 if (instance == nullptr) {
378 return WM_ERROR_STATE_ABNORMALLY;
379 }
380 int32_t res = instance->SetBackdropBlurStyle(blurStyle);
381 if (res == SUCCESS_CODE) {
382 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBackdropBlurStyle success");
383 }
384 return res;
385 }
386
FFiOHOSWindowSetPreferredOrientation(int64_t id,uint32_t orientation)387 int32_t FFiOHOSWindowSetPreferredOrientation(int64_t id, uint32_t orientation)
388 {
389 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetPreferredOrientation start");
390 auto instance = FFIData::GetData<CJWindowImpl>(id);
391 if (instance == nullptr) {
392 return WM_ERROR_STATE_ABNORMALLY;
393 }
394 int32_t res = instance->SetPreferredOrientation(orientation);
395 if (res == SUCCESS_CODE) {
396 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetPreferredOrientation success");
397 }
398 return res;
399 }
400
FFiOHOSWindowGetWindowAvoidArea(int64_t id,uint32_t areaType,OHOS::Rosen::CAvoidArea * retPtr)401 int32_t FFiOHOSWindowGetWindowAvoidArea(int64_t id, uint32_t areaType, OHOS::Rosen::CAvoidArea *retPtr)
402 {
403 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowGetWindowAvoidArea start");
404 auto instance = FFIData::GetData<CJWindowImpl>(id);
405 if (instance == nullptr) {
406 return WM_ERROR_STATE_ABNORMALLY;
407 }
408 int32_t res = instance->GetWindowAvoidArea(areaType, retPtr);
409 if (res == SUCCESS_CODE) {
410 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowGetWindowAvoidArea success");
411 }
412 return res;
413 }
414
FFiOHOSWindowSetWaterMarkFlag(int64_t id,bool enable)415 int32_t FFiOHOSWindowSetWaterMarkFlag(int64_t id, bool enable)
416 {
417 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetWaterMarkFlag start");
418 auto instance = FFIData::GetData<CJWindowImpl>(id);
419 if (instance == nullptr) {
420 return WM_ERROR_STATE_ABNORMALLY;
421 }
422 int32_t res = instance->SetWaterMarkFlag(enable);
423 if (res == SUCCESS_CODE) {
424 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetWaterMarkFlag success");
425 }
426 return res;
427 }
428
FFiOHOSWindowSetAspectRatio(int64_t id,double ratio)429 int32_t FFiOHOSWindowSetAspectRatio(int64_t id, double ratio)
430 {
431 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetAspectRatio start");
432 auto instance = FFIData::GetData<CJWindowImpl>(id);
433 if (instance == nullptr) {
434 return WM_ERROR_STATE_ABNORMALLY;
435 }
436 int32_t res = instance->SetAspectRatio(ratio);
437 if (res == SUCCESS_CODE) {
438 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetAspectRatio success");
439 }
440 return res;
441 }
442
FFiOHOSWindowSetShadowRadius(int64_t id,double radius)443 int32_t FFiOHOSWindowSetShadowRadius(int64_t id, double radius)
444 {
445 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowRadius start");
446 auto instance = FFIData::GetData<CJWindowImpl>(id);
447 if (instance == nullptr) {
448 return WM_ERROR_STATE_ABNORMALLY;
449 }
450 int32_t res = instance->SetShadowRadius(radius);
451 if (res == SUCCESS_CODE) {
452 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowRadius success");
453 }
454 return res;
455 }
456
FFiOHOSWindowSetShadowColor(int64_t id,char * color)457 int32_t FFiOHOSWindowSetShadowColor(int64_t id, char* color)
458 {
459 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowColor start");
460 std::string windowColor = color;
461 auto instance = FFIData::GetData<CJWindowImpl>(id);
462 if (instance == nullptr) {
463 return WM_ERROR_STATE_ABNORMALLY;
464 }
465 int32_t res = instance->SetShadowColor(windowColor);
466 if (res == SUCCESS_CODE) {
467 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowColor success");
468 }
469 return res;
470 }
471
FFiOHOSWindowSetShadowOffsetX(int64_t id,double offsetX)472 int32_t FFiOHOSWindowSetShadowOffsetX(int64_t id, double offsetX)
473 {
474 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowOffsetX start");
475 auto instance = FFIData::GetData<CJWindowImpl>(id);
476 if (instance == nullptr) {
477 return WM_ERROR_STATE_ABNORMALLY;
478 }
479 int32_t res = instance->SetShadowOffsetX(offsetX);
480 if (res == SUCCESS_CODE) {
481 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowOffsetX success");
482 }
483 return res;
484 }
485
FFiOHOSWindowSetShadowOffsetY(int64_t id,double offsetY)486 int32_t FFiOHOSWindowSetShadowOffsetY(int64_t id, double offsetY)
487 {
488 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowOffsetY start");
489 auto instance = FFIData::GetData<CJWindowImpl>(id);
490 if (instance == nullptr) {
491 return WM_ERROR_STATE_ABNORMALLY;
492 }
493 int32_t res = instance->SetShadowOffsetY(offsetY);
494 if (res == SUCCESS_CODE) {
495 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowOffsetY success");
496 }
497 return res;
498 }
499
FFiOHOSWindowSetBackdropBlur(int64_t id,double radius)500 int32_t FFiOHOSWindowSetBackdropBlur(int64_t id, double radius)
501 {
502 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBackdropBlur start");
503 auto instance = FFIData::GetData<CJWindowImpl>(id);
504 if (instance == nullptr) {
505 return WM_ERROR_STATE_ABNORMALLY;
506 }
507 int32_t res = instance->SetBackdropBlur(radius);
508 if (res == SUCCESS_CODE) {
509 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBackdropBlur success");
510 }
511 return res;
512 }
513
FFiOHOSWindowSetBlur(int64_t id,double radius)514 int32_t FFiOHOSWindowSetBlur(int64_t id, double radius)
515 {
516 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBlur start");
517 auto instance = FFIData::GetData<CJWindowImpl>(id);
518 if (instance == nullptr) {
519 return WM_ERROR_STATE_ABNORMALLY;
520 }
521 int32_t res = instance->SetBlur(radius);
522 if (res == SUCCESS_CODE) {
523 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBlur success");
524 }
525 return res;
526 }
527
FFiOHOSWindowResetAspectRatio(int64_t id)528 int32_t FFiOHOSWindowResetAspectRatio(int64_t id)
529 {
530 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowResetAspectRatio start");
531 auto instance = FFIData::GetData<CJWindowImpl>(id);
532 if (instance == nullptr) {
533 return WM_ERROR_STATE_ABNORMALLY;
534 }
535 int32_t res = instance->ResetAspectRatio();
536 if (res == SUCCESS_CODE) {
537 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowResetAspectRatio success");
538 }
539 return res;
540 }
541
FFiOHOSWindowMinimize(int64_t id)542 int32_t FFiOHOSWindowMinimize(int64_t id)
543 {
544 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Minimize start");
545 auto instance = FFIData::GetData<CJWindowImpl>(id);
546 if (instance == nullptr) {
547 return WM_ERROR_STATE_ABNORMALLY;
548 }
549 int32_t res = instance->Minimize();
550 if (res == SUCCESS_CODE) {
551 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Minimize success");
552 }
553 return res;
554 }
555
FFiOHOSWindowSetWindowColorSpace(int64_t id,uint32_t colorSpace)556 int32_t FFiOHOSWindowSetWindowColorSpace(int64_t id, uint32_t colorSpace)
557 {
558 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowColorSpace start");
559 auto instance = FFIData::GetData<CJWindowImpl>(id);
560 if (instance == nullptr) {
561 return WM_ERROR_STATE_ABNORMALLY;
562 }
563 int32_t res = instance->SetWindowColorSpace(colorSpace);
564 if (res == SUCCESS_CODE) {
565 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowColorSpace success");
566 }
567 return res;
568 }
569
FFiOHOSWindowSetCornerRadius(int64_t id,float radius)570 int32_t FFiOHOSWindowSetCornerRadius(int64_t id, float radius)
571 {
572 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetCornerRadius start");
573 auto instance = FFIData::GetData<CJWindowImpl>(id);
574 if (instance == nullptr) {
575 return WM_ERROR_STATE_ABNORMALLY;
576 }
577 int32_t res = instance->SetCornerRadius(radius);
578 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetCornerRadius success");
579 return res;
580 }
581
FFiOHOSWindowSetResizeByDragEnabled(int64_t id,bool enable)582 int32_t FFiOHOSWindowSetResizeByDragEnabled(int64_t id, bool enable)
583 {
584 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetResizeByDragEnabled start");
585 auto instance = FFIData::GetData<CJWindowImpl>(id);
586 if (instance == nullptr) {
587 return WM_ERROR_STATE_ABNORMALLY;
588 }
589 int32_t res = instance->SetResizeByDragEnabled(enable);
590 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetResizeByDragEnabled success");
591 return res;
592 }
593
FFiOHOSWindowRaiseToAppTop(int64_t id)594 int32_t FFiOHOSWindowRaiseToAppTop(int64_t id)
595 {
596 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] RaiseToAppTop start");
597 auto instance = FFIData::GetData<CJWindowImpl>(id);
598 if (instance == nullptr) {
599 return WM_ERROR_STATE_ABNORMALLY;
600 }
601 int32_t res = instance->RaiseToAppTop();
602 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] RaiseToAppTop success");
603 return res;
604 }
605
FFiOHOSWindowSetSnapshotSkip(int64_t id,bool isSkip)606 int32_t FFiOHOSWindowSetSnapshotSkip(int64_t id, bool isSkip)
607 {
608 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetSnapshotSkip start");
609 auto instance = FFIData::GetData<CJWindowImpl>(id);
610 if (instance == nullptr) {
611 return WM_ERROR_STATE_ABNORMALLY;
612 }
613 int32_t res = instance->SetSnapshotSkip(isSkip);
614 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetSnapshotSkip success");
615 return res;
616 }
617
FFiOHOSWindowSetWakeUpScreen(int64_t id,bool wakeUp)618 int32_t FFiOHOSWindowSetWakeUpScreen(int64_t id, bool wakeUp)
619 {
620 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWakeUpScreen start");
621 auto instance = FFIData::GetData<CJWindowImpl>(id);
622 if (instance == nullptr) {
623 return WM_ERROR_STATE_ABNORMALLY;
624 }
625 int32_t res = static_cast<int32_t>(instance->SetWakeUpScreen(wakeUp));
626 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWakeUpScreen success");
627 return res;
628 }
629
FFiOHOSWindowSetRaiseByClickEnabled(int64_t id,bool enable)630 int32_t FFiOHOSWindowSetRaiseByClickEnabled(int64_t id, bool enable)
631 {
632 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetRaiseByClickEnabled start");
633 auto instance = FFIData::GetData<CJWindowImpl>(id);
634 if (instance == nullptr) {
635 return WM_ERROR_STATE_ABNORMALLY;
636 }
637 int32_t res = instance->SetRaiseByClickEnabled(enable);
638 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetRaiseByClickEnabled success");
639 return res;
640 }
641
FFiOHOSWindowGetWindowColorSpace(int64_t id,int32_t * errCode)642 int32_t FFiOHOSWindowGetWindowColorSpace(int64_t id, int32_t* errCode)
643 {
644 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetWindowColorSpace start");
645 auto instance = FFIData::GetData<CJWindowImpl>(id);
646 if (instance == nullptr) {
647 *errCode = WM_ERROR_STATE_ABNORMALLY;
648 return 0;
649 }
650 int32_t res = static_cast<int32_t>(instance->GetWindowColorSpace(errCode));
651 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetWindowColorSpace success");
652 return res;
653 }
654
FFiOHOSWindowRaiseAboveTarget(int64_t id,int32_t windowId)655 int32_t FFiOHOSWindowRaiseAboveTarget(int64_t id, int32_t windowId)
656 {
657 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] RaiseAboveTarget start");
658 auto instance = FFIData::GetData<CJWindowImpl>(id);
659 if (instance == nullptr) {
660 return WM_ERROR_STATE_ABNORMALLY;
661 }
662 int32_t res = instance->RaiseAboveTarget(windowId);
663 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] RaiseAboveTarget success");
664 return res;
665 }
666
FFiOHOSWindowTranslate(int64_t id,double x,double y,double z)667 int32_t FFiOHOSWindowTranslate(int64_t id, double x, double y, double z)
668 {
669 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Translate start");
670 auto instance = FFIData::GetData<CJWindowImpl>(id);
671 if (instance == nullptr) {
672 return WM_ERROR_STATE_ABNORMALLY;
673 }
674 int32_t res = instance->Translate(x, y, z);
675 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Translate success");
676 return res;
677 }
678
FFiOHOSWindowRotate(int64_t id,WindowRotate window)679 int32_t FFiOHOSWindowRotate(int64_t id, WindowRotate window)
680 {
681 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Rotate start");
682 auto instance = FFIData::GetData<CJWindowImpl>(id);
683 if (instance == nullptr) {
684 return WM_ERROR_STATE_ABNORMALLY;
685 }
686 int32_t res = instance->Rotate(window.x, window.y, window.z, window.pivotX, window.pivotY);
687 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Rotate success");
688 return res;
689 }
690
FFiOHOSWindowScale(int64_t id,double x,double y,double pivotX,double pivotY)691 int32_t FFiOHOSWindowScale(int64_t id, double x, double y, double pivotX, double pivotY)
692 {
693 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Scale start");
694 auto instance = FFIData::GetData<CJWindowImpl>(id);
695 if (instance == nullptr) {
696 return WM_ERROR_STATE_ABNORMALLY;
697 }
698 int32_t res = instance->Scale(x, y, pivotX, pivotY);
699 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Scale success");
700 return res;
701 }
702
FFiOHOSWindowOpacity(int64_t id,double opacity)703 int32_t FFiOHOSWindowOpacity(int64_t id, double opacity)
704 {
705 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Opacity start");
706 auto instance = FFIData::GetData<CJWindowImpl>(id);
707 if (instance == nullptr) {
708 return WM_ERROR_STATE_ABNORMALLY;
709 }
710 int32_t res = instance->Opacity(opacity);
711 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Opacity success");
712 return res;
713 }
714
FFiOHOSWindowSnapshot(int64_t id,int32_t * errCode)715 int64_t FFiOHOSWindowSnapshot(int64_t id, int32_t* errCode)
716 {
717 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Snapshot start");
718 auto instance = FFIData::GetData<CJWindowImpl>(id);
719 if (instance == nullptr) {
720 *errCode = WM_ERROR_STATE_ABNORMALLY;
721 return 0;
722 }
723 std::shared_ptr<Media::PixelMap> pmap = instance->Snapshot(errCode);
724 if (*errCode != 0) {
725 return 0;
726 }
727 auto nativeImage = FFIData::Create<PixelMapImpl>(move(pmap));
728 if (nativeImage == nullptr) {
729 TLOGI(WmsLogTag::WMS_DIALOG, "create image failed");
730 return 0;
731 }
732 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Snapshot success");
733 return nativeImage->GetID();
734 }
735
FFiOHOSWindowSetWindowSystemBarEnable(int64_t id,CArrString arr)736 int32_t FFiOHOSWindowSetWindowSystemBarEnable(int64_t id, CArrString arr)
737 {
738 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowSystemBarEnable start");
739 auto instance = FFIData::GetData<CJWindowImpl>(id);
740 if (instance == nullptr) {
741 return WM_ERROR_STATE_ABNORMALLY;
742 }
743 int32_t res = instance->SetWindowSystemBarEnable(arr.head, (uint32_t)arr.size);
744 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowSystemBarEnable success");
745 return res;
746 }
747
FFiOHOSWindowSetWindowSystemBarProperties(int64_t id,CJBarProperties properties)748 int32_t FFiOHOSWindowSetWindowSystemBarProperties(int64_t id, CJBarProperties properties)
749 {
750 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowSystemBarProperties start");
751 auto instance = FFIData::GetData<CJWindowImpl>(id);
752 if (instance == nullptr) {
753 return WM_ERROR_STATE_ABNORMALLY;
754 }
755 CBarProperties cProperties;
756 cProperties.statusBarColor = properties.statusBarColor;
757 cProperties.isStatusBarLightIcon = properties.isStatusBarLightIcon;
758 cProperties.statusBarContentColor = properties.statusBarContentColor;
759 cProperties.navigationBarColor = properties.navigationBarColor;
760 cProperties.navigationBarContentColor = properties.navigationBarContentColor;
761 cProperties.isNavigationBarLightIcon = properties.isNavigationBarLightIcon;
762 int32_t res = instance->SetWindowSystemBarProperties(cProperties);
763 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowSystemBarProperties success");
764 return res;
765 }
766
FfiOHOSOnKeyboardHeightChange(int64_t id,int64_t callbackId)767 int32_t FfiOHOSOnKeyboardHeightChange(int64_t id, int64_t callbackId)
768 {
769 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] OnKeyboardHeightChange start");
770 auto instance = FFIData::GetData<CJWindowImpl>(id);
771 if (instance == nullptr) {
772 return WM_ERROR_STATE_ABNORMALLY;
773 }
774 int32_t ret = instance->OnRegisterWindowCallback("keyboardHeightChange", callbackId);
775 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] OnKeyboardHeightChange success");
776 return ret;
777 }
778
FfiOHOSOffKeyboardHeightChange(int64_t id)779 int32_t FfiOHOSOffKeyboardHeightChange(int64_t id)
780 {
781 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] OffKeyboardHeightChange start");
782 auto instance = FFIData::GetData<CJWindowImpl>(id);
783 if (instance == nullptr) {
784 return WM_ERROR_STATE_ABNORMALLY;
785 }
786 int32_t ret = instance->UnregisterWindowCallback("keyboardHeightChange", (-1));
787 TLOGI(WmsLogTag::WMS_DIALOG, "[Window] OffKeyboardHeightChange success");
788 return ret;
789 }
790
791 // WindowStage
FfiOHOSBindWindowStage(int64_t windowStageImplPtr)792 RetDataI64 FfiOHOSBindWindowStage(int64_t windowStageImplPtr)
793 {
794 TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] bind to created WindowStage");
795 RetDataI64 ret;
796 auto actualWs = reinterpret_cast<CJWindowStageImpl*>(windowStageImplPtr);
797 if (actualWs == nullptr) {
798 TLOGE(WmsLogTag::WMS_DIALOG, "[WindowStage] Bind null obj");
799 ret.code = static_cast<int32_t>(WMError::WM_ERROR_NULLPTR);
800 return ret;
801 }
802 ret.code = static_cast<int32_t>(WMError::WM_OK);
803 ret.data = actualWs->GetID();
804 return ret;
805 }
806
FfiOHOSGetMainWindow(int64_t id)807 RetDataI64 FfiOHOSGetMainWindow(int64_t id)
808 {
809 TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] getMainWindow start");
810 RetDataI64 ret;
811 auto instance = FFIData::GetData<CJWindowStageImpl>(id);
812 if (instance == nullptr) {
813 ret.code = WM_ERROR_STATE_ABNORMALLY;
814 return ret;
815 }
816 ret.code = instance->GetMainWindow(ret.data);
817 return ret;
818 }
819
FfiOHOSCreateSubWindow(int64_t id,char * name)820 RetDataI64 FfiOHOSCreateSubWindow(int64_t id, char *name)
821 {
822 TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] createSubWindow start");
823 RetDataI64 ret;
824 std::string nm = name;
825 auto instance = FFIData::GetData<CJWindowStageImpl>(id);
826 if (instance == nullptr) {
827 ret.code = WM_ERROR_STATE_ABNORMALLY;
828 return ret;
829 }
830 ret.code = instance->CreateSubWindow(nm, ret.data);
831 return ret;
832 }
833
FfiOHOSGetSubWindow(int64_t id)834 RetStruct FfiOHOSGetSubWindow(int64_t id)
835 {
836 TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] getSubWindow start");
837 auto instance = FFIData::GetData<CJWindowStageImpl>(id);
838 if (instance == nullptr) {
839 return {WM_ERROR_STATE_ABNORMALLY, 0, nullptr};
840 }
841 auto ret = instance->GetSubWindow();
842 return ret;
843 }
844
FfiOHOSLoadContent(int64_t id,char * path)845 int32_t FfiOHOSLoadContent(int64_t id, char *path)
846 {
847 TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] loadContent start");
848 std::string url = path;
849 std::string storageJson = " ";
850 auto instance = FFIData::GetData<CJWindowStageImpl>(id);
851 if (instance == nullptr) {
852 return WM_ERROR_STATE_ABNORMALLY;
853 }
854 return instance->OnLoadContent(url, storageJson, false);
855 }
856
FfiOHOSLoadContentByName(int64_t id,char * name)857 int32_t FfiOHOSLoadContentByName(int64_t id, char *name)
858 {
859 TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] loadContentByName start");
860 return SUCCESS_CODE;
861 }
862
FfiOHOSDisableWindowDecor(int64_t id)863 int32_t FfiOHOSDisableWindowDecor(int64_t id)
864 {
865 TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] disableWindowDecor start");
866 auto instance = FFIData::GetData<CJWindowStageImpl>(id);
867 if (instance == nullptr) {
868 return WM_ERROR_STATE_ABNORMALLY;
869 }
870 return instance->DisableWindowDecor();
871 }
872
FfiOHOSSetShowOnLockScreen(int64_t id,bool showOnLockScreen)873 int32_t FfiOHOSSetShowOnLockScreen(int64_t id, bool showOnLockScreen)
874 {
875 TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] setShowOnLockScreen start");
876 auto instance = FFIData::GetData<CJWindowStageImpl>(id);
877 if (instance == nullptr) {
878 return WM_ERROR_STATE_ABNORMALLY;
879 }
880 return instance->SetShowOnLockScreen(showOnLockScreen);
881 }
882 } // extern "C"
883 }
884 }
885