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 "napi/native_api.h"
16 #include <cstddef>
17 #include <cstdint>
18 #include <cstdio>
19 #define LOG_TAG "DisplayManager_NDK"
20 #include <hilog/log.h>
21 #include <window_manager/oh_display_info.h>
22 #include <window_manager/oh_display_manager.h>
23
24
Add(napi_env env,napi_callback_info info)25 static napi_value Add(napi_env env, napi_callback_info info)
26 {
27 size_t argc = 2;
28 napi_value args[2] = {nullptr};
29
30 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
31
32 napi_valuetype valuetype0;
33 napi_typeof(env, args[0], &valuetype0);
34
35 napi_valuetype valuetype1;
36 napi_typeof(env, args[1], &valuetype1);
37
38 double value0;
39 napi_get_value_double(env, args[0], &value0);
40
41 double value1;
42 napi_get_value_double(env, args[1], &value1);
43
44 napi_value sum;
45 napi_create_double(env, value0 + value1, &sum);
46
47 return sum;
48 }
49
ThrowError(napi_env env,uint32_t errCode,const char * errorMessage)50 static napi_value ThrowError(napi_env env, uint32_t errCode, const char* errorMessage)
51 {
52 OH_LOG_ERROR(LOG_APP, "ThrowError=%{public}d mdErrorMessage=%{public}s.", errCode, errorMessage);
53 napi_value errorInfo = nullptr;
54 napi_create_object(env, &errorInfo);
55 if (errorInfo == nullptr) {
56 napi_value result = nullptr;
57 napi_get_undefined(env, &result);
58 return result;
59 }
60 napi_value errorCode = nullptr;
61
62 napi_create_uint32(env, errCode, &errorCode);
63 napi_set_named_property(env, errorInfo, "code", errorCode);
64 napi_value errMsg = nullptr;
65 napi_create_string_utf8(env, errorMessage, NAPI_AUTO_LENGTH, &errMsg);
66 napi_set_named_property(env, errorInfo, "message", errMsg);
67 napi_create_error(env, errorCode, errMsg, &errorInfo);
68 napi_value error = nullptr;
69 napi_create_type_error(env, errorCode, errMsg, &error);
70
71 return error;
72 }
73
GetDefaultDisplayId(napi_env env,napi_callback_info info)74 static napi_value GetDefaultDisplayId(napi_env env, napi_callback_info info)
75 {
76 OH_LOG_INFO(LOG_APP, "GetDefaultDisplayId come in...");
77 uint64_t displayId;
78 OH_LOG_INFO(LOG_APP, "GetDefaultDisplayId displayId=%{public}lu ", displayId);
79 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDefaultDisplayId(&displayId);
80 OH_LOG_INFO(LOG_APP, "GetDefaultDisplayId displayId=%{public}lu errorCode=%{public}d.", displayId, errCode);
81 if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
82 napi_value id;
83 napi_create_uint32(env, displayId, &id);
84 return id;
85 }
86 return ThrowError(env,errCode, "get default display id failed.");
87 }
88
GetDefaultDisplayWidth(napi_env env,napi_callback_info info)89 static napi_value GetDefaultDisplayWidth(napi_env env, napi_callback_info info)
90 {
91 int32_t displayWidth;
92 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDefaultDisplayWidth(&displayWidth);
93 OH_LOG_INFO(LOG_APP, "GetDefaultDisplayWidth width=%{public}d errorCode=%{public}d.", displayWidth, errCode);
94 if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
95 napi_value width;
96 napi_create_int32(env, displayWidth, &width);
97 return width;
98 }
99 return ThrowError(env,errCode, "get default display width failed.");
100 }
101
GetDefaultDisplayHeight(napi_env env,napi_callback_info info)102 static napi_value GetDefaultDisplayHeight(napi_env env, napi_callback_info info)
103 {
104 int32_t displayHeight;
105 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDefaultDisplayHeight(&displayHeight);
106 OH_LOG_INFO(LOG_APP, "GetDefaultDisplayHeight height=%{public}d errorCode=%{public}d.", displayHeight, errCode);
107 if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
108 napi_value height;
109 napi_create_int32(env, displayHeight, &height);
110 return height;
111 }
112 return ThrowError(env,errCode, "get default display height failed.");
113 }
114
GetDefaultDisplayRotation(napi_env env,napi_callback_info info)115 static napi_value GetDefaultDisplayRotation(napi_env env, napi_callback_info info)
116 {
117 NativeDisplayManager_Rotation displayRotation;
118 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDefaultDisplayRotation(&displayRotation);
119 if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
120 napi_value rotation;
121 napi_create_int32(env, displayRotation, &rotation);
122 return rotation;
123 } else {
124 napi_value errorCode;
125 napi_create_int32(env, errCode, &errorCode);
126 return errorCode;
127 }
128 }
129
GetDefaultDisplayOrientation(napi_env env,napi_callback_info info)130 static napi_value GetDefaultDisplayOrientation(napi_env env, napi_callback_info info)
131 {
132 NativeDisplayManager_Orientation displayOrientation;
133 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDefaultDisplayOrientation(&displayOrientation);
134 OH_LOG_INFO(LOG_APP, "GetDefaultDisplayOrientation orientation=%{public}d errorCode=%{public}d.",
135 displayOrientation, errCode);
136 if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
137 napi_value orientation;
138 napi_create_int32(env, displayOrientation, &orientation);
139 return orientation;
140 }
141 return ThrowError(env,errCode, "get default display orientation failed.");
142 }
143
GetDefaultDisplayVirtualPixelRatio(napi_env env,napi_callback_info info)144 static napi_value GetDefaultDisplayVirtualPixelRatio(napi_env env, napi_callback_info info)
145 {
146 float dmVirtualPixels;
147 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDefaultDisplayVirtualPixelRatio(&dmVirtualPixels);
148 OH_LOG_INFO(LOG_APP, "GetDefaultDisplayVirtualPixelRatio dmVirtualPixels=%{public}f errorCode=%{public}d.",
149 dmVirtualPixels, errCode);
150 if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
151 napi_value virtualPixels;
152 napi_create_int32(env, dmVirtualPixels, &virtualPixels);
153 return virtualPixels;
154 }
155 return ThrowError(env,errCode, "get default display virtual pixel failed.");
156 }
157
GetDefaultDisplayRefreshRate(napi_env env,napi_callback_info info)158 static napi_value GetDefaultDisplayRefreshRate(napi_env env, napi_callback_info info)
159 {
160 uint32_t dmRefreshRate;
161 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDefaultDisplayRefreshRate(&dmRefreshRate);
162 OH_LOG_INFO(LOG_APP, "GetDefaultDisplayRefreshRate dmRefreshRate=%{public}d errorCode=%{public}d.", dmRefreshRate,
163 errCode);
164 if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
165 napi_value refreshRate;
166 napi_create_int32(env, dmRefreshRate, &refreshRate);
167 return refreshRate;
168 }
169 return ThrowError(env,errCode, "get default display refresh rate failed.");
170 }
171
GetDefaultDisplayDensityDpi(napi_env env,napi_callback_info info)172 static napi_value GetDefaultDisplayDensityDpi(napi_env env, napi_callback_info info)
173 {
174 int32_t dmDensityDpi;
175 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDefaultDisplayDensityDpi(&dmDensityDpi);
176 OH_LOG_INFO(LOG_APP, "GetDefaultDisplayDensityDpi dmDensityDpi=%{public}d errorCode=%{public}d.", dmDensityDpi,
177 errCode);
178 if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
179 napi_value densityDpi;
180 napi_create_int32(env, dmDensityDpi, &densityDpi);
181 return densityDpi;
182 }
183 return ThrowError(env,errCode, "get default display density dpi failed.");
184 }
185
GetDefaultDisplayDensityPixels(napi_env env,napi_callback_info info)186 static napi_value GetDefaultDisplayDensityPixels(napi_env env, napi_callback_info info)
187 {
188 float dmDensityPixels;
189 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDefaultDisplayDensityPixels(&dmDensityPixels);
190 OH_LOG_INFO(LOG_APP, "GetDefaultDisplayDensityPixels dmDensityPixels=%{public}f errorCode=%{public}d.",
191 dmDensityPixels, errCode);
192 if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
193 napi_value densityPixels;
194 napi_create_int32(env, dmDensityPixels, &densityPixels);
195 return densityPixels;
196 }
197 return ThrowError(env,errCode, "get default display density pixels failed.");
198 }
199
GetDefaultDisplayScaledDensity(napi_env env,napi_callback_info info)200 static napi_value GetDefaultDisplayScaledDensity(napi_env env, napi_callback_info info)
201 {
202 float dmScaledDensity;
203 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDefaultDisplayScaledDensity(&dmScaledDensity);
204 OH_LOG_INFO(LOG_APP, "GetDefaultDisplayScaledDensity dmDensityPixels=%{public}f errorCode=%{public}d.",
205 dmScaledDensity, errCode);
206 if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
207 napi_value scaledDensity;
208 napi_create_int32(env, dmScaledDensity, &scaledDensity);
209 return scaledDensity;
210 }
211 return ThrowError(env,errCode, "get default display density pixels failed.");
212 }
213
GetDefaultDisplayDensityXdpi(napi_env env,napi_callback_info info)214 static napi_value GetDefaultDisplayDensityXdpi(napi_env env, napi_callback_info info)
215 {
216 float dmxDpi;
217 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDefaultDisplayDensityXdpi(&dmxDpi);
218 OH_LOG_INFO(LOG_APP, "GetDefaultDisplayDensityXdpi dmxDpi =%{public}f errorCode=%{public}d.", dmxDpi, errCode);
219 if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
220 napi_value xDpi;
221 napi_create_int32(env, dmxDpi, &xDpi);
222 return xDpi;
223 }
224 return ThrowError(env,errCode, "get default display xDPI failed.");
225 }
226
GetDefaultDisplayDensityYdpi(napi_env env,napi_callback_info info)227 static napi_value GetDefaultDisplayDensityYdpi(napi_env env, napi_callback_info info)
228 {
229 float dmyDpi;
230 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDefaultDisplayDensityYdpi(&dmyDpi);
231 OH_LOG_INFO(LOG_APP, "GetDefaultDisplayDensityYdpi dmyDpi =%{public}f errorCode=%{public}d.", dmyDpi, errCode);
232 if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
233 napi_value xDpi;
234 napi_create_int32(env, dmyDpi, &xDpi);
235 return xDpi;
236 }
237 return ThrowError(env,errCode, "get default display xDPI failed.");
238 }
239
CreateDefaultDisplayCutoutInfo(napi_env env,napi_callback_info info)240 static napi_value CreateDefaultDisplayCutoutInfo(napi_env env, napi_callback_info info)
241 {
242 NativeDisplayManager_CutoutInfo *cutOutInfo = NULL;
243 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_CreateDefaultDisplayCutoutInfo(&cutOutInfo);
244 OH_LOG_INFO(LOG_APP, "GetDefaultCutoutInfo errCode=%{public}d", errCode);
245 if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
246 if (cutOutInfo != NULL && cutOutInfo->boundingRectsLength != 0) {
247 OH_LOG_INFO(LOG_APP, "GetDefaultCutoutInfo cutOutInfo length=%{public}d", cutOutInfo->boundingRectsLength);
248 for (int i = 0; i < cutOutInfo->boundingRectsLength; i++) {
249 OH_LOG_INFO(LOG_APP, "cutOutInfo[%{public}d]=[%{public}d %{public}d %{public}d %{public}d]",
250 i, cutOutInfo->boundingRects[i].left, cutOutInfo->boundingRects[i].top,
251 cutOutInfo->boundingRects[i].width, cutOutInfo->boundingRects[i].height);
252 }
253 OH_LOG_INFO(LOG_APP, "cutOutInfo waterfall left rect=[%{public}d %{public}d %{public}d %{public}d]",
254 cutOutInfo->waterfallDisplayAreaRects.left.left, cutOutInfo->waterfallDisplayAreaRects.left.top,
255 cutOutInfo->waterfallDisplayAreaRects.left.left, cutOutInfo->waterfallDisplayAreaRects.left.left);
256 OH_LOG_INFO(LOG_APP, "cutOutInfo waterfall top rect=[%{public}d %{public}d %{public}d %{public}d]",
257 cutOutInfo->waterfallDisplayAreaRects.top.left, cutOutInfo->waterfallDisplayAreaRects.top.top,
258 cutOutInfo->waterfallDisplayAreaRects.top.left, cutOutInfo->waterfallDisplayAreaRects.top.left);
259 OH_LOG_INFO(LOG_APP, "cutOutInfo waterfall right rect=[%{public}d %{public}d %{public}d %{public}d]",
260 cutOutInfo->waterfallDisplayAreaRects.right.left, cutOutInfo->waterfallDisplayAreaRects.right.top,
261 cutOutInfo->waterfallDisplayAreaRects.right.left, cutOutInfo->waterfallDisplayAreaRects.right.left);
262 OH_LOG_INFO(LOG_APP, "cutOutInfo waterfall bottom rect=[%{public}d %{public}d %{public}d %{public}d]",
263 cutOutInfo->waterfallDisplayAreaRects.bottom.left, cutOutInfo->waterfallDisplayAreaRects.bottom.top,
264 cutOutInfo->waterfallDisplayAreaRects.bottom.left, cutOutInfo->waterfallDisplayAreaRects.bottom.left);
265 }
266 napi_value boundingRectsLength;
267 napi_create_int32(env, cutOutInfo->boundingRectsLength, &boundingRectsLength);
268 OH_NativeDisplayManager_DestroyDefaultDisplayCutoutInfo(cutOutInfo);
269 return boundingRectsLength;
270 } else {
271 napi_value errorCode;
272 napi_create_int32(env, errCode, &errorCode);
273 return errorCode;
274 }
275 }
276
IsFoldable(napi_env env,napi_callback_info info)277 static napi_value IsFoldable(napi_env env, napi_callback_info info)
278 {
279 bool isFoldDevice = OH_NativeDisplayManager_IsFoldable();
280 OH_LOG_INFO(LOG_APP, "IsFoldable isFoldDevice =%{public}d.", isFoldDevice);
281 napi_value isFold;
282 napi_get_boolean(env, isFoldDevice, &isFold);
283 return isFold;
284 }
285
GetFoldDisplayMode(napi_env env,napi_callback_info info)286 static napi_value GetFoldDisplayMode(napi_env env, napi_callback_info info)
287 {
288 NativeDisplayManager_FoldDisplayMode displayMode;
289 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetFoldDisplayMode(&displayMode);
290 OH_LOG_INFO(LOG_APP, "GetFoldDisplayMode displayMode =%{public}d errorCode=%{public}d.", displayMode, errCode);
291 if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
292 napi_value currentMode;
293 napi_create_int32(env, displayMode, ¤tMode);
294 return currentMode;
295 } else {
296 napi_value errorCode;
297 napi_create_int32(env, errCode, &errorCode);
298 return errorCode;
299 }
300 }
301
DisplayChangeCallback(uint64_t displayId)302 void DisplayChangeCallback(uint64_t displayId)
303 {
304 OH_LOG_INFO(LOG_APP, "DisplayChangeCallback displayId=%{public}lu.", displayId);
305 }
306
RegisterDisplayChangeListener(napi_env env,napi_callback_info info)307 static napi_value RegisterDisplayChangeListener(napi_env env, napi_callback_info info)
308 {
309 uint32_t listenerIndex;
310 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_RegisterDisplayChangeListener(
311 DisplayChangeCallback, &listenerIndex);
312 OH_LOG_INFO(LOG_APP, "RegisterDisplayChangeListener listenerIndex =%{public}d errCode=%{public}d.",
313 listenerIndex, errCode);
314 if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
315 napi_value registerIndex;
316 napi_create_int32(env, listenerIndex, ®isterIndex);
317 return registerIndex;
318 } else {
319 napi_value errorCode;
320 napi_create_int32(env, errCode, &errorCode);
321 return errorCode;
322 }
323 }
324
UnregisterDisplayChangeListener(napi_env env,napi_callback_info info)325 static napi_value UnregisterDisplayChangeListener(napi_env env, napi_callback_info info)
326 {
327 size_t argc = 1;
328 napi_value args[1] = { nullptr };
329
330 uint32_t listenerIndex;
331 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
332 napi_get_value_uint32(env, args[0], &listenerIndex);
333 OH_LOG_INFO(LOG_APP, "UnregisterDisplayChangeListener listenerIndex =%{public}d.", listenerIndex);
334 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_UnregisterDisplayChangeListener(listenerIndex);
335 OH_LOG_INFO(LOG_APP, "UnregisterDisplayChangeListener errCode=%{public}d.", errCode);
336 napi_value errorCode;
337 napi_create_int32(env, errCode, &errorCode);
338 return errorCode;
339 }
340
FoldDisplayModeChangeCallback(NativeDisplayManager_FoldDisplayMode displayMode)341 void FoldDisplayModeChangeCallback(NativeDisplayManager_FoldDisplayMode displayMode)
342 {
343 OH_LOG_INFO(LOG_APP, "displayMode=%{public}d.", displayMode);
344 }
345
RegisterFoldDisplayModeChangeListener(napi_env env,napi_callback_info info)346 static napi_value RegisterFoldDisplayModeChangeListener(napi_env env, napi_callback_info info)
347 {
348 uint32_t listenerIndex = 0;
349 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_RegisterFoldDisplayModeChangeListener(
350 FoldDisplayModeChangeCallback, &listenerIndex);
351 OH_LOG_INFO(LOG_APP, "listenerIndex =%{public}d errCode=%{public}d.",
352 listenerIndex, errCode);
353 if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
354 napi_value registerIndex;
355 napi_create_int32(env, listenerIndex, ®isterIndex);
356 return registerIndex;
357 } else {
358 napi_value errorCode;
359 napi_create_int32(env, errCode, &errorCode);
360 return errorCode;
361 }
362 }
363
UnregisterFoldDisplayModeChangeListener(napi_env env,napi_callback_info info)364 static napi_value UnregisterFoldDisplayModeChangeListener(napi_env env, napi_callback_info info)
365 {
366 size_t argc = 1;
367 napi_value args[1] = { nullptr };
368 uint32_t listenerIndex;
369 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
370 napi_get_value_uint32(env, args[0], &listenerIndex);
371 OH_LOG_INFO(LOG_APP, "listenerIndex =%{public}d.", listenerIndex);
372 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_UnregisterFoldDisplayModeChangeListener(listenerIndex);
373 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
374 napi_value errorCode;
375 napi_create_int32(env, errCode, &errorCode);
376 return errorCode;
377 }
378
CreateAvailableArea(napi_env env,napi_callback_info info)379 static napi_value CreateAvailableArea(napi_env env, napi_callback_info info)
380 {
381 NativeDisplayManager_Rect *availableAreaInfo;
382 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_CreateAvailableArea(0, &availableAreaInfo);
383 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
384 OH_LOG_INFO(LOG_APP, "left=%{public}d", availableAreaInfo->left);
385 OH_LOG_INFO(LOG_APP, "top=%{public}d", availableAreaInfo->top);
386 OH_LOG_INFO(LOG_APP, "width=%{public}d", availableAreaInfo->width);
387 OH_LOG_INFO(LOG_APP, "height=%{public}d", availableAreaInfo->height);
388 napi_value result;
389 napi_create_object(env, &result);
390 napi_value errorCode;
391 napi_create_int32(env, errCode, &errorCode);
392 napi_set_named_property(env, result, "errcode", errorCode);
393 napi_value left;
394 napi_create_int32(env, availableAreaInfo->left, &left);
395 napi_set_named_property(env, result, "left", left);
396 napi_value top;
397 napi_create_int32(env, availableAreaInfo->top, &top);
398 napi_set_named_property(env, result, "top", top);
399 napi_value width;
400 napi_create_int32(env, availableAreaInfo->width, &width);
401 napi_set_named_property(env, result, "width", width);
402 napi_value height;
403 napi_create_int32(env, availableAreaInfo->height, &height);
404 napi_set_named_property(env, result, "height", height);
405 return result;
406 }
407
CreateAvailableArea_ErrCode140004(napi_env env,napi_callback_info info)408 static napi_value CreateAvailableArea_ErrCode140004(napi_env env, napi_callback_info info)
409 {
410 NativeDisplayManager_Rect *availableAreaInfo;
411 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_CreateAvailableArea(-1, &availableAreaInfo);
412 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
413 napi_value errorCode;
414 napi_create_int32(env, errCode, &errorCode);
415 return errorCode;
416 }
417
DestroyAvailableArea(napi_env env,napi_callback_info info)418 static napi_value DestroyAvailableArea(napi_env env, napi_callback_info info)
419 {
420 NativeDisplayManager_Rect *availableAreaInfo;
421 OH_NativeDisplayManager_CreateAvailableArea(0, &availableAreaInfo);
422 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_DestroyAvailableArea(availableAreaInfo);
423 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
424 napi_value errorCode;
425 napi_create_int32(env, errCode, &errorCode);
426 return errorCode;
427 }
428
GetDisplaySourceMode_1(napi_env env,napi_callback_info info)429 static napi_value GetDisplaySourceMode_1(napi_env env, napi_callback_info info)
430 {
431 NativeDisplayManager_SourceMode displaySourceMode;
432 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDisplaySourceMode(0, &displaySourceMode);
433 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
434 napi_value result;
435 if (errCode != 0) {
436 napi_create_int32(env, errCode, &result);
437 } else {
438 OH_LOG_INFO(LOG_APP, "displaySourceMode=%{public}d", displaySourceMode);
439 napi_create_int32(env, displaySourceMode, &result);
440 }
441 return result;
442 }
443
GetDisplaySourceMode_2(napi_env env,napi_callback_info info)444 static napi_value GetDisplaySourceMode_2(napi_env env, napi_callback_info info)
445 {
446 size_t argc = 1;
447 napi_value args[1] = { nullptr };
448 int64_t displayId;
449 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
450 napi_get_value_int64(env, args[0], &displayId);
451 OH_LOG_INFO(LOG_APP, "displayId =%{public}d.", displayId);
452 NativeDisplayManager_SourceMode displaySourceMode;
453 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDisplaySourceMode(displayId,
454 &displaySourceMode);
455 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
456 napi_value result;
457 if (errCode != 0) {
458 napi_create_int32(env, errCode, &result);
459 } else {
460 OH_LOG_INFO(LOG_APP, "displaySourceMode=%{public}d", displaySourceMode);
461 napi_create_int32(env, displaySourceMode, &result);
462 }
463 return result;
464 }
465
GetDisplaySourceMode_4(napi_env env,napi_callback_info info)466 static napi_value GetDisplaySourceMode_4(napi_env env, napi_callback_info info)
467 {
468 size_t argc = 1;
469 napi_value args[1] = { nullptr };
470 int64_t displayId;
471 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
472 napi_get_value_int64(env, args[0], &displayId);
473 OH_LOG_INFO(LOG_APP, "displayId =%{public}d.", displayId);
474 NativeDisplayManager_SourceMode displaySourceMode;
475 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDisplaySourceMode(displayId,
476 &displaySourceMode);
477 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
478 napi_value result;
479 if (errCode != 0) {
480 napi_create_int32(env, errCode, &result);
481 } else {
482 OH_LOG_INFO(LOG_APP, "displaySourceMode=%{public}d", displaySourceMode);
483 napi_create_int32(env, displaySourceMode, &result);
484 }
485 return result;
486 }
487
GetDisplaySourceMode_ErrCode140004(napi_env env,napi_callback_info info)488 static napi_value GetDisplaySourceMode_ErrCode140004(napi_env env, napi_callback_info info)
489 {
490 NativeDisplayManager_SourceMode displaySourceMode;
491 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDisplaySourceMode(-1, &displaySourceMode);
492 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
493 napi_value errorCode;
494 napi_create_int32(env, errCode, &errorCode);
495 return errorCode;
496 }
497
GetDisplayPosition(napi_env env,napi_callback_info info)498 static napi_value GetDisplayPosition(napi_env env, napi_callback_info info)
499 {
500 int32_t x;
501 int32_t y;
502 uint64_t displayId = 0;
503 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDisplayPosition(displayId, &x, &y);
504 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
505 OH_LOG_INFO(LOG_APP, "x=%{public}d", x);
506 OH_LOG_INFO(LOG_APP, "y=%{public}d", y);
507 napi_value errorCode;
508 napi_create_int32(env, errCode, &errorCode);
509 return errorCode;
510 }
511
GetDisplayPosition_ErrCode140004(napi_env env,napi_callback_info info)512 static napi_value GetDisplayPosition_ErrCode140004(napi_env env, napi_callback_info info)
513 {
514 int32_t x;
515 int32_t y;
516 uint64_t displayId = -1;
517 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDisplayPosition(displayId, &x, &y);
518 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
519 OH_LOG_INFO(LOG_APP, "x=%{public}d", x);
520 OH_LOG_INFO(LOG_APP, "y=%{public}d", y);
521 napi_value errorCode;
522 napi_create_int32(env, errCode, &errorCode);
523 return errorCode;
524 }
525
AvailableAreaChangeCallback(uint64_t displayId)526 void AvailableAreaChangeCallback(uint64_t displayId)
527 {
528 OH_LOG_INFO(LOG_APP, "AvailableAreaChangeCallback displayId=%{public}lu.", displayId);
529 }
530
531
RegisterAvailableAreaChangeListener(napi_env env,napi_callback_info info)532 static napi_value RegisterAvailableAreaChangeListener(napi_env env, napi_callback_info info)
533 {
534 uint32_t listenerIndex = 0;
535 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_RegisterAvailableAreaChangeListener(
536 AvailableAreaChangeCallback, &listenerIndex);
537 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
538 napi_value errorCode;
539 napi_create_int32(env, errCode, &errorCode);
540 OH_NativeDisplayManager_UnregisterAvailableAreaChangeListener(listenerIndex);
541 return errorCode;
542 }
543
UnregisterAvailableAreaChangeListener(napi_env env,napi_callback_info info)544 static napi_value UnregisterAvailableAreaChangeListener(napi_env env, napi_callback_info info)
545 {
546 uint32_t listenerIndex = 0;
547 OH_NativeDisplayManager_RegisterAvailableAreaChangeListener(AvailableAreaChangeCallback, &listenerIndex);
548 NativeDisplayManager_ErrorCode errCode =
549 OH_NativeDisplayManager_UnregisterAvailableAreaChangeListener(listenerIndex);
550 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
551 napi_value errorCode;
552 napi_create_int32(env, errCode, &errorCode);
553 return errorCode;
554 }
555
UnregisterAvailableAreaChangeListener_ErrCode140004(napi_env env,napi_callback_info info)556 static napi_value UnregisterAvailableAreaChangeListener_ErrCode140004(napi_env env, napi_callback_info info)
557 {
558 uint32_t listenerIndex = 0;
559 NativeDisplayManager_ErrorCode errCode =
560 OH_NativeDisplayManager_UnregisterAvailableAreaChangeListener(listenerIndex);
561 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
562 napi_value errorCode;
563 napi_create_int32(env, errCode, &errorCode);
564 return errorCode;
565 }
566
DisplayAddCallback(uint64_t displayId)567 void DisplayAddCallback(uint64_t displayId)
568 {
569 OH_LOG_INFO(LOG_APP, "DisplayAddCallback displayId=%{public}lu.", displayId);
570 }
571
RegisterDisplayAddListener(napi_env env,napi_callback_info info)572 static napi_value RegisterDisplayAddListener(napi_env env, napi_callback_info info)
573 {
574 uint32_t listenerIndex = 0;
575 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_RegisterDisplayAddListener(DisplayAddCallback,
576 &listenerIndex);
577 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
578 napi_value errorCode;
579 napi_create_int32(env, errCode, &errorCode);
580 OH_NativeDisplayManager_UnregisterDisplayAddListener(listenerIndex);
581 return errorCode;
582 }
583
UnregisterDisplayAddListener(napi_env env,napi_callback_info info)584 static napi_value UnregisterDisplayAddListener(napi_env env, napi_callback_info info)
585 {
586 uint32_t listenerIndex = 0;
587 OH_NativeDisplayManager_RegisterDisplayAddListener(DisplayAddCallback, &listenerIndex);
588 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_UnregisterDisplayAddListener(listenerIndex);
589 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
590 napi_value errorCode;
591 napi_create_int32(env, errCode, &errorCode);
592 return errorCode;
593 }
594
UnregisterDisplayAddListener_ErrCode140004(napi_env env,napi_callback_info info)595 static napi_value UnregisterDisplayAddListener_ErrCode140004(napi_env env, napi_callback_info info)
596 {
597 uint32_t listenerIndex = 0;
598 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_UnregisterDisplayAddListener(listenerIndex);
599 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
600 napi_value errorCode;
601 napi_create_int32(env, errCode, &errorCode);
602 return errorCode;
603 }
604
DisplayRemoveCallback(uint64_t displayId)605 void DisplayRemoveCallback(uint64_t displayId)
606 {
607 OH_LOG_INFO(LOG_APP, "DisplayRemoveCallback displayId=%{public}lu.", displayId);
608 }
609
RegisterDisplayRemoveListener(napi_env env,napi_callback_info info)610 static napi_value RegisterDisplayRemoveListener(napi_env env, napi_callback_info info)
611 {
612 uint32_t listenerIndex = 0;
613 NativeDisplayManager_ErrorCode errCode =
614 OH_NativeDisplayManager_RegisterDisplayRemoveListener(DisplayRemoveCallback, &listenerIndex);
615 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
616 napi_value errorCode;
617 napi_create_int32(env, errCode, &errorCode);
618 OH_NativeDisplayManager_UnregisterDisplayRemoveListener(listenerIndex);
619 return errorCode;
620 }
621
UnregisterDisplayRemoveListener(napi_env env,napi_callback_info info)622 static napi_value UnregisterDisplayRemoveListener(napi_env env, napi_callback_info info)
623 {
624 uint32_t listenerIndex = 0;
625 OH_NativeDisplayManager_RegisterDisplayRemoveListener(DisplayRemoveCallback, &listenerIndex);
626 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_UnregisterDisplayRemoveListener(listenerIndex);
627 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
628 napi_value errorCode;
629 napi_create_int32(env, errCode, &errorCode);
630 return errorCode;
631 }
632
RegisterDisplayRemoveListener_ErrCode140004(napi_env env,napi_callback_info info)633 static napi_value RegisterDisplayRemoveListener_ErrCode140004(napi_env env, napi_callback_info info)
634 {
635 uint32_t listenerIndex = 0;
636 NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_UnregisterDisplayRemoveListener(listenerIndex);
637 OH_LOG_INFO(LOG_APP, "errorCode=%{public}d", errCode);
638 napi_value errorCode;
639 napi_create_int32(env, errCode, &errorCode);
640 return errorCode;
641 }
642
643 EXTERN_C_START
Init(napi_env env,napi_value exports)644 static napi_value Init(napi_env env, napi_value exports)
645 {
646 napi_property_descriptor desc[] = {
647 { "add", nullptr, Add, nullptr, nullptr, nullptr, napi_default, nullptr },
648 { "getId", nullptr, GetDefaultDisplayId, nullptr, nullptr, nullptr, napi_default, nullptr },
649 { "getWidth", nullptr, GetDefaultDisplayWidth, nullptr, nullptr, nullptr, napi_default, nullptr },
650 { "getHeight", nullptr, GetDefaultDisplayHeight, nullptr, nullptr, nullptr, napi_default, nullptr },
651 { "getRotation", nullptr, GetDefaultDisplayRotation, nullptr, nullptr, nullptr, napi_default, nullptr },
652 { "getOrientation", nullptr, GetDefaultDisplayOrientation, nullptr, nullptr, nullptr, napi_default, nullptr },
653 { "getVirtualPixelRatio", nullptr, GetDefaultDisplayVirtualPixelRatio, nullptr, nullptr, nullptr,
654 napi_default, nullptr },
655 { "getRefreshRate", nullptr, GetDefaultDisplayRefreshRate, nullptr, nullptr, nullptr, napi_default, nullptr },
656 { "getDensityDpi", nullptr, GetDefaultDisplayDensityDpi, nullptr, nullptr, nullptr, napi_default, nullptr },
657 { "getDensityPixels", nullptr, GetDefaultDisplayDensityPixels, nullptr, nullptr, nullptr,
658 napi_default, nullptr },
659 { "getScaledDensity", nullptr, GetDefaultDisplayScaledDensity, nullptr, nullptr, nullptr,
660 napi_default, nullptr },
661 { "getDensityXdpi", nullptr, GetDefaultDisplayDensityXdpi, nullptr, nullptr, nullptr, napi_default, nullptr },
662 { "getDensityYdpi", nullptr, GetDefaultDisplayDensityYdpi, nullptr, nullptr, nullptr, napi_default, nullptr },
663 { "getCutoutInfo", nullptr, CreateDefaultDisplayCutoutInfo, nullptr, nullptr, nullptr, napi_default, nullptr },
664 { "checkIsFoldDevice", nullptr, IsFoldable, nullptr, nullptr, nullptr, napi_default, nullptr },
665 { "getDisplayMode", nullptr, GetFoldDisplayMode, nullptr, nullptr, nullptr, napi_default, nullptr },
666 { "registerDisplayChange", nullptr, RegisterDisplayChangeListener, nullptr, nullptr, nullptr,
667 napi_default, nullptr },
668 { "unregisterDisplayChange", nullptr, UnregisterDisplayChangeListener, nullptr, nullptr, nullptr,
669 napi_default, nullptr },
670 { "registerFoldDisplayModeChange", nullptr, RegisterFoldDisplayModeChangeListener, nullptr, nullptr, nullptr,
671 napi_default, nullptr },
672 { "unregisterFoldDisplayModeChange", nullptr, UnregisterFoldDisplayModeChangeListener, nullptr, nullptr,
673 nullptr, napi_default, nullptr },
674 { "createAvailableArea", nullptr, CreateAvailableArea, nullptr, nullptr,
675 nullptr, napi_default, nullptr },
676 { "createAvailableArea_ErrCode140004", nullptr, CreateAvailableArea_ErrCode140004, nullptr, nullptr,
677 nullptr, napi_default, nullptr },
678 { "destroyAvailableArea", nullptr, DestroyAvailableArea, nullptr, nullptr,
679 nullptr, napi_default, nullptr },
680 { "getDisplaySourceMode_1", nullptr, GetDisplaySourceMode_1, nullptr, nullptr,
681 nullptr, napi_default, nullptr },
682 { "getDisplaySourceMode_2", nullptr, GetDisplaySourceMode_2, nullptr, nullptr,
683 nullptr, napi_default, nullptr },
684 { "getDisplaySourceMode_4", nullptr, GetDisplaySourceMode_4, nullptr, nullptr,
685 nullptr, napi_default, nullptr },
686 { "getDisplaySourceMode_ErrCode140004", nullptr, GetDisplaySourceMode_ErrCode140004, nullptr, nullptr,
687 nullptr, napi_default, nullptr },
688 { "getDisplayPosition", nullptr, GetDisplayPosition, nullptr, nullptr,
689 nullptr, napi_default, nullptr },
690 { "getDisplayPosition_ErrCode140004", nullptr, GetDisplayPosition_ErrCode140004, nullptr, nullptr,
691 nullptr, napi_default, nullptr },
692 { "registerAvailableAreaChangeListener", nullptr, RegisterAvailableAreaChangeListener, nullptr, nullptr,
693 nullptr, napi_default, nullptr },
694 { "unregisterAvailableAreaChangeListener", nullptr, UnregisterAvailableAreaChangeListener, nullptr, nullptr,
695 nullptr, napi_default, nullptr },
696 { "unregisterAvailableAreaChangeListener_ErrCode140004", nullptr,
697 UnregisterAvailableAreaChangeListener_ErrCode140004, nullptr, nullptr, nullptr, napi_default, nullptr },
698 { "registerDisplayAddListener", nullptr, RegisterDisplayAddListener, nullptr, nullptr,
699 nullptr, napi_default, nullptr },
700 { "unregisterDisplayAddListener", nullptr, UnregisterDisplayAddListener, nullptr, nullptr,
701 nullptr, napi_default, nullptr },
702 { "unregisterDisplayAddListener_ErrCode140004", nullptr, UnregisterDisplayAddListener_ErrCode140004,
703 nullptr, nullptr, nullptr, napi_default, nullptr },
704 { "registerDisplayRemoveListener", nullptr, RegisterDisplayRemoveListener, nullptr, nullptr,
705 nullptr, napi_default, nullptr },
706 { "unregisterDisplayRemoveListener", nullptr, UnregisterDisplayRemoveListener, nullptr, nullptr,
707 nullptr, napi_default, nullptr },
708 { "registerDisplayRemoveListener_ErrCode140004", nullptr, RegisterDisplayRemoveListener_ErrCode140004,
709 nullptr, nullptr, nullptr, napi_default, nullptr },
710
711 };
712 napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
713 return exports;
714 }
715 EXTERN_C_END
716
717 static napi_module demoModule = {
718 .nm_version = 1,
719 .nm_flags = 0,
720 .nm_filename = nullptr,
721 .nm_register_func = Init,
722 .nm_modname = "entry",
723 .nm_priv = ((void*)0),
724 .reserved = { 0 },
725 };
726
RegisterEntryModule(void)727 extern "C" __attribute__((constructor)) void RegisterEntryModule(void)
728 {
729 napi_module_register(&demoModule);
730 }
731