• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "display_ffi.h"
17 
18 #include "cj_display_impl.h"
19 #include "cj_display_manager.h"
20 #include "ffi_remote_data.h"
21 #include "window_manager_hilog.h"
22 
23 using namespace OHOS::FFI;
24 
25 namespace OHOS {
26 namespace Rosen {
27 extern "C" {
28 const int32_t DM_ERROR_SYSTEM_INNORMAL = 1400003;
29 
FfiOHOSGetDefaultDisplaySync()30 RetStruct FfiOHOSGetDefaultDisplaySync()
31 {
32     TLOGI(WmsLogTag::DMS, "FfiOHOSGetDefaultDisplaySync start");
33     return CJDisplayManager::GetDefaultDisplaySync();
34 }
35 
FfiOHOSGetAllDisplays()36 RetStruct FfiOHOSGetAllDisplays()
37 {
38     TLOGI(WmsLogTag::DMS, "FfiOHOSGetAllDisplays start");
39     return CJDisplayManager::GetAllDisplays();
40 }
41 
FfiOHOSHasPrivateWindow(uint32_t displayId)42 RetStruct FfiOHOSHasPrivateWindow(uint32_t displayId)
43 {
44     TLOGI(WmsLogTag::DMS, "FfiOHOSHasPrivateWindow start");
45     return CJDisplayManager::HasPrivateWindow(displayId);
46 }
47 
FfiOHOSIsFoldable()48 bool FfiOHOSIsFoldable()
49 {
50     TLOGI(WmsLogTag::DMS, "FfiOHOSIsFoldable start");
51     return CJDisplayManager::IsFoldable();
52 }
53 
FfiOHOSSetFoldDisplayMode(uint32_t mode)54 void FfiOHOSSetFoldDisplayMode(uint32_t mode)
55 {
56     TLOGI(WmsLogTag::DMS, "FfiOHOSSetFoldDisplayMode start");
57     CJDisplayManager::SetFoldDisplayMode(mode);
58 }
59 
FfiOHOSGetFoldStatus()60 uint32_t FfiOHOSGetFoldStatus()
61 {
62     TLOGI(WmsLogTag::DMS, "FfiOHOSGetFoldStatus start");
63     return CJDisplayManager::GetFoldStatus();
64 }
65 
FfiOHOSGetFoldDisplayMode()66 uint32_t FfiOHOSGetFoldDisplayMode()
67 {
68     TLOGI(WmsLogTag::DMS, "FfiOHOSGetFoldDisplayMode start");
69     return CJDisplayManager::GetFoldDisplayMode();
70 }
71 
FfiOHOSGetCurrentFoldCreaseRegion()72 RetStruct FfiOHOSGetCurrentFoldCreaseRegion()
73 {
74     TLOGI(WmsLogTag::DMS, "FfiOHOSGetCurrentFoldCreaseRegion start");
75     return CJDisplayManager::GetCurrentFoldCreaseRegion();
76 }
77 
FfiOHOSIsCaptured()78 bool FfiOHOSIsCaptured()
79 {
80     TLOGD(WmsLogTag::DMS, "FfiOHOSIsCaptured start");
81     return CJDisplayManager::IsCaptured();
82 }
83 
FfiOHOSGetAllDisplayPhysicalResolution()84 RetStruct FfiOHOSGetAllDisplayPhysicalResolution()
85 {
86     TLOGD(WmsLogTag::DMS, "FfiOHOSGetAllDisplayPhysicalResolution start");
87     return CJDisplayManager::GetAllDisplayPhysicalResolution();
88 }
89 
FfiOHOSUnRegisterAllDisplayManagerCallback(const char * type)90 int32_t FfiOHOSUnRegisterAllDisplayManagerCallback(const char* type)
91 {
92     TLOGD(WmsLogTag::DMS, "FfiOHOSUnRegisterAllDisplayManagerCallback start");
93     return CJDisplayManager::OnUnregisterAllDisplayListenerWithType(type);
94 }
95 
FfiOHOSRegisterDisplayManagerCallback(const char * type,int64_t callbackId)96 int32_t FfiOHOSRegisterDisplayManagerCallback(const char* type, int64_t callbackId)
97 {
98     TLOGD(WmsLogTag::DMS, "FfiOHOSRegisterDisplayManagerCallback start");
99     return CJDisplayManager::OnRegisterDisplayListenerWithType(type, callbackId);
100 }
101 
FfiOHOSUnRegisterDisplayManagerCallback(const char * type,int64_t callbackId)102 int32_t FfiOHOSUnRegisterDisplayManagerCallback(const char* type, int64_t callbackId)
103 {
104     TLOGD(WmsLogTag::DMS, "FFiOHOSUnRegisterDisplayManagerCallback start");
105     return CJDisplayManager::OnUnRegisterDisplayListenerWithType(type, callbackId);
106 }
107 
FfiOHOSDisplayGetId(int64_t id)108 uint32_t FfiOHOSDisplayGetId(int64_t id)
109 {
110     TLOGI(WmsLogTag::DMS, "FfiOHOSDisplayGetId start");
111     auto instance = FFIData::GetData<DisplayImpl>(id);
112     if (!instance) {
113         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
114         return 0;
115     }
116     auto ret = instance->GetInfoId();
117     return ret;
118 }
119 
FfiOHOSGetDisplayName(int64_t id)120 char* FfiOHOSGetDisplayName(int64_t id)
121 {
122     TLOGI(WmsLogTag::DMS, "FfiOHOSGetDisplayName");
123     auto instance = FFIData::GetData<DisplayImpl>(id);
124     if (!instance) {
125         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
126         return nullptr;
127     }
128     auto ret = instance->GetName();
129     return ret;
130 }
131 
FfiOHOSDisplayGetAlive(int64_t id)132 bool FfiOHOSDisplayGetAlive(int64_t id)
133 {
134     TLOGI(WmsLogTag::DMS, "FfiOHOSDisplayGetAlive start");
135     auto instance = FFIData::GetData<DisplayImpl>(id);
136     if (!instance) {
137         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
138         return false;
139     }
140     auto ret = instance->GetAlive();
141     return ret;
142 }
143 
FfiOHOSDisplayGetState(int64_t id)144 uint32_t FfiOHOSDisplayGetState(int64_t id)
145 {
146     TLOGI(WmsLogTag::DMS, "FfiOHOSDisplayGetState start");
147     auto instance = FFIData::GetData<DisplayImpl>(id);
148     if (!instance) {
149         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
150         return 0;
151     }
152     auto ret = instance->GetState();
153     return ret;
154 }
155 
FfiOHOSDisplayGetRefreshRate(int64_t id)156 uint32_t FfiOHOSDisplayGetRefreshRate(int64_t id)
157 {
158     TLOGI(WmsLogTag::DMS, "FfiOHOSDisplayGetRefreshRate start");
159     auto instance = FFIData::GetData<DisplayImpl>(id);
160     if (!instance) {
161         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
162         return 0;
163     }
164     auto ret = instance->GetRefreshRate();
165     return ret;
166 }
167 
FfiOHOSDisplayGetRotation(int64_t id)168 uint32_t FfiOHOSDisplayGetRotation(int64_t id)
169 {
170     TLOGI(WmsLogTag::DMS, "FfiOHOSDisplayGetRotation start");
171     auto instance = FFIData::GetData<DisplayImpl>(id);
172     if (!instance) {
173         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
174         return 0;
175     }
176     auto ret = instance->GetRotation();
177     return ret;
178 }
179 
FfiOHOSDisplayGetOrientation(int64_t id)180 uint32_t FfiOHOSDisplayGetOrientation(int64_t id)
181 {
182     TLOGI(WmsLogTag::DMS, "FfiOHOSDisplayGetOrientation start");
183     auto instance = FFIData::GetData<DisplayImpl>(id);
184     if (!instance) {
185         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
186         return 0;
187     }
188     auto ret = instance->GetOrientation();
189     return ret;
190 }
191 
FfiOHOSDisplayGetWidth(int64_t id)192 int32_t FfiOHOSDisplayGetWidth(int64_t id)
193 {
194     TLOGI(WmsLogTag::DMS, "FfiOHOSDisplayGetWidth start");
195     auto instance = FFIData::GetData<DisplayImpl>(id);
196     if (!instance) {
197         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
198         return 0;
199     }
200     auto ret = instance->GetWidth();
201     return ret;
202 }
203 
FfiOHOSDisplayGetHeight(int64_t id)204 int32_t FfiOHOSDisplayGetHeight(int64_t id)
205 {
206     TLOGI(WmsLogTag::DMS, "FfiOHOSDisplayGetHeight start");
207     auto instance = FFIData::GetData<DisplayImpl>(id);
208     if (!instance) {
209         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
210         return 0;
211     }
212     auto ret = instance->GetHeight();
213     return ret;
214 }
215 
FfiOHOSDisplayGetDensityDPI(int64_t id)216 float FfiOHOSDisplayGetDensityDPI(int64_t id)
217 {
218     TLOGI(WmsLogTag::DMS, "FfiOHOSDisplayGetVirtualPixelRatio start");
219     auto instance = FFIData::GetData<DisplayImpl>(id);
220     if (!instance) {
221         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
222         return 0.0;
223     }
224     auto ret = instance->GetDensityDPI();
225     return ret;
226 }
227 
FfiOHOSDisplayGetVirtualPixelRatio(int64_t id)228 float FfiOHOSDisplayGetVirtualPixelRatio(int64_t id)
229 {
230     TLOGI(WmsLogTag::DMS, "FfiOHOSDisplayGetVirtualPixelRatio start");
231     auto instance = FFIData::GetData<DisplayImpl>(id);
232     if (!instance) {
233         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
234         return 0.0;
235     }
236     auto ret = instance->GetVirtualPixelRatio();
237     return ret;
238 }
239 
FfiOHOSDisplayGetXDPI(int64_t id)240 float FfiOHOSDisplayGetXDPI(int64_t id)
241 {
242     TLOGI(WmsLogTag::DMS, "FfiOHOSDisplayGetXDPI start");
243     auto instance = FFIData::GetData<DisplayImpl>(id);
244     if (!instance) {
245         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
246         return 0.0;
247     }
248     auto ret = instance->GetXDPI();
249     return ret;
250 }
251 
FfiOHOSDisplayGetYDPI(int64_t id)252 float FfiOHOSDisplayGetYDPI(int64_t id)
253 {
254     TLOGI(WmsLogTag::DMS, "FfiOHOSDisplayGetYDPI start");
255     auto instance = FFIData::GetData<DisplayImpl>(id);
256     if (!instance) {
257         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
258         return 0.0;
259     }
260     auto ret = instance->GetYDPI();
261     return ret;
262 }
263 
FfiOHOSDisplayGetColorSpaces(int64_t id)264 RetStruct FfiOHOSDisplayGetColorSpaces(int64_t id)
265 {
266     TLOGD(WmsLogTag::DMS, "FfiOHOSDisplayGetColorSpaces start");
267     auto instance = FFIData::GetData<DisplayImpl>(id);
268     if (!instance) {
269         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
270         return { DM_ERROR_SYSTEM_INNORMAL, 0, nullptr };
271     }
272     auto ret = instance->GetColorSpaces();
273     return ret;
274 }
275 
FfiOHOSDisplayGetHdrFormats(int64_t id)276 RetStruct FfiOHOSDisplayGetHdrFormats(int64_t id)
277 {
278     TLOGD(WmsLogTag::DMS, "FfiOHOSDisplayGetHdrFormats start");
279     auto instance = FFIData::GetData<DisplayImpl>(id);
280     if (!instance) {
281         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
282         return { DM_ERROR_SYSTEM_INNORMAL, 0, nullptr };
283     }
284     auto ret = instance->GetHdrFormats();
285     return ret;
286 }
287 
FfiOHOSDisplayGetAvailableWidth(int64_t id)288 uint32_t FfiOHOSDisplayGetAvailableWidth(int64_t id)
289 {
290     TLOGD(WmsLogTag::DMS, "FfiOHOSDisplayGetAvailableWidth start");
291     auto instance = FFIData::GetData<DisplayImpl>(id);
292     if (!instance) {
293         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
294         return 0.0;
295     }
296     auto ret = instance->GetAvailableWidth();
297     return ret;
298 }
299 
FfiOHOSDisplayGetAvailableHeight(int64_t id)300 uint32_t FfiOHOSDisplayGetAvailableHeight(int64_t id)
301 {
302     TLOGD(WmsLogTag::DMS, "FfiOHOSDisplayGetAvailableHeight start");
303     auto instance = FFIData::GetData<DisplayImpl>(id);
304     if (!instance) {
305         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
306         return 0.0;
307     }
308     auto ret = instance->GetAvailableHeight();
309     return ret;
310 }
311 
FfiOHOSDisplayGetCutoutInfo(int64_t id)312 RetStruct FfiOHOSDisplayGetCutoutInfo(int64_t id)
313 {
314     TLOGD(WmsLogTag::DMS, "FfiOHOSDisplayGetCutoutInfo start");
315     auto instance = FFIData::GetData<DisplayImpl>(id);
316     if (!instance) {
317         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
318         return { DM_ERROR_SYSTEM_INNORMAL, 0, nullptr };
319     }
320     auto ret = instance->GetCutoutInfo();
321     return ret;
322 }
323 
FfiOHOSDisplayGetAvailableArea(int64_t id)324 RetStruct FfiOHOSDisplayGetAvailableArea(int64_t id)
325 {
326     TLOGD(WmsLogTag::DMS, "FfiOHOSDisplayGetAvailableArea start");
327     auto instance = FFIData::GetData<DisplayImpl>(id);
328     if (!instance) {
329         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
330         return { DM_ERROR_SYSTEM_INNORMAL, 0, nullptr };
331     }
332     auto ret = instance->GetAvailableArea();
333     return ret;
334 }
335 
FfiOHOSDisplayUnRegisterAllDisplayManagerCallback(const char * type,int64_t id)336 int32_t FfiOHOSDisplayUnRegisterAllDisplayManagerCallback(const char* type, int64_t id)
337 {
338     TLOGD(WmsLogTag::DMS, "FfiOHOSDisplayUnRegisterDisplayManagerCallbackWithType start");
339     auto instance = FFIData::GetData<DisplayImpl>(id);
340     if (!instance) {
341         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
342         return DM_ERROR_SYSTEM_INNORMAL;
343     }
344     auto ret = instance->OnUnRegisterAllDisplayManagerCallback(type);
345     return ret;
346 }
347 
FfiOHOSDisplayRegisterDisplayManagerCallback(const char * type,int64_t id,int64_t callbackId)348 int32_t FfiOHOSDisplayRegisterDisplayManagerCallback(const char* type, int64_t id, int64_t callbackId)
349 {
350     TLOGD(WmsLogTag::DMS, "FfiOHOSDisplayRegisterDisplayManagerCallback start");
351     auto instance = FFIData::GetData<DisplayImpl>(id);
352     if (!instance) {
353         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
354         return DM_ERROR_SYSTEM_INNORMAL;
355     }
356     auto ret = instance->OnRegisterDisplayManagerCallback(type, callbackId);
357     return ret;
358 }
359 
FfiOHOSDisplayUnRegisterDisplayManagerCallback(const char * type,int64_t id,int64_t callbackId)360 int32_t FfiOHOSDisplayUnRegisterDisplayManagerCallback(const char* type, int64_t id, int64_t callbackId)
361 {
362     TLOGD(WmsLogTag::DMS, "FfiOHOSDisplayUnRegisterDisplayManagerCallback start");
363     auto instance = FFIData::GetData<DisplayImpl>(id);
364     if (!instance) {
365         TLOGE(WmsLogTag::DMS, "[Display] instance not exist %{public}" PRId64, id);
366         return DM_ERROR_SYSTEM_INNORMAL;
367     }
368     auto ret = instance->OnUnRegisterDisplayManagerCallback(type, callbackId);
369     return ret;
370 }
371 }
372 } // namespace Rosen
373 } // namespace OHOS
374