1 /*
2 * Copyright (c) 2023 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 "ohos_adapter/bridge/ark_camera_manager_adapter_impl.h"
17
18 #include "ohos_adapter/bridge/ark_camera_buffer_listener_adapter_wrapper.h"
19 #include "ohos_adapter/bridge/ark_camera_status_callback_adapter_wrapper.h"
20 #include "ohos_adapter/bridge/ark_video_capture_params_adapter_wrapper.h"
21 #include "ohos_adapter/bridge/ark_video_capture_range_adapter_impl.h"
22 #include "ohos_adapter/cpptoc/ark_video_device_descriptor_adapter_vector_cpptoc.h"
23
24 #include "base/bridge/ark_web_bridge_macros.h"
25
26 namespace OHOS::ArkWeb {
27
ArkCameraManagerAdapterImpl(NWeb::CameraManagerAdapter & ref)28 ArkCameraManagerAdapterImpl::ArkCameraManagerAdapterImpl(NWeb::CameraManagerAdapter& ref) : real_(ref) {}
29
Create(ArkWebRefPtr<ArkCameraStatusCallbackAdapter> cameraStatusCallback)30 int32_t ArkCameraManagerAdapterImpl::Create(ArkWebRefPtr<ArkCameraStatusCallbackAdapter> cameraStatusCallback)
31 {
32 if (CHECK_REF_PTR_IS_NULL(cameraStatusCallback)) {
33 return real_.Create(nullptr);
34 }
35
36 return real_.Create(std::make_shared<ArkCameraStatusCallbackAdapterWrapper>(cameraStatusCallback));
37 }
38
GetDevicesInfo()39 ArkVideoDeviceDescriptorAdapterVector ArkCameraManagerAdapterImpl::GetDevicesInfo()
40 {
41 std::vector<std::shared_ptr<NWeb::VideoDeviceDescriptorAdapter>> desc = real_.GetDevicesInfo();
42 ArkVideoDeviceDescriptorAdapterVector result = ArkVideoDeviceDescriptorAdapterVectorClassToStruct(desc);
43 return result;
44 }
45
ReleaseCameraManger()46 int32_t ArkCameraManagerAdapterImpl::ReleaseCameraManger()
47 {
48 return real_.ReleaseCameraManger();
49 }
50
GetExposureModes(ArkWebInt32Vector & exposureModesAdapter)51 int32_t ArkCameraManagerAdapterImpl::GetExposureModes(ArkWebInt32Vector& exposureModesAdapter)
52 {
53 std::vector<NWeb::ExposureModeAdapter> vec;
54 int32_t result = real_.GetExposureModes(vec);
55 exposureModesAdapter.size = vec.size();
56 exposureModesAdapter.ark_web_mem_free_func = ArkWebMemFree;
57 if (exposureModesAdapter.size > 0) {
58 exposureModesAdapter.value = (int32_t*)ArkWebMemMalloc(sizeof(int32_t) * exposureModesAdapter.size);
59 if (exposureModesAdapter.value == nullptr) {
60 exposureModesAdapter.size = 0;
61 return -1;
62 }
63
64 int count = 0;
65 for (auto it = vec.begin(); it != vec.end(); it++) {
66 exposureModesAdapter.value[count] = (int32_t)(*it);
67 count++;
68 }
69 }
70 return result;
71 }
72
GetCurrentExposureMode(int32_t & exposureModeAdapter)73 int32_t ArkCameraManagerAdapterImpl::GetCurrentExposureMode(int32_t& exposureModeAdapter)
74 {
75 OHOS::NWeb::ExposureModeAdapter adapter;
76 int32_t result = real_.GetCurrentExposureMode(adapter);
77 exposureModeAdapter = (int32_t)adapter;
78 return result;
79 }
80
GetCaptionRangeById(int32_t rangeId)81 ArkWebRefPtr<ArkVideoCaptureRangeAdapter> ArkCameraManagerAdapterImpl::GetCaptionRangeById(int32_t rangeId)
82 {
83 std::shared_ptr<NWeb::VideoCaptureRangeAdapter> adapter = real_.GetCaptionRangeById((NWeb::RangeIDAdapter)rangeId);
84 if (CHECK_SHARED_PTR_IS_NULL(adapter)) {
85 return nullptr;
86 }
87
88 return new ArkVideoCaptureRangeAdapterImpl(adapter);
89 }
90
IsFocusModeSupported(int32_t focusMode)91 bool ArkCameraManagerAdapterImpl::IsFocusModeSupported(int32_t focusMode)
92 {
93 return real_.IsFocusModeSupported((NWeb::FocusModeAdapter)focusMode);
94 }
95
GetCurrentFocusMode()96 int32_t ArkCameraManagerAdapterImpl::GetCurrentFocusMode()
97 {
98 return (int32_t)real_.GetCurrentFocusMode();
99 }
100
IsFlashModeSupported(int32_t flashMode)101 bool ArkCameraManagerAdapterImpl::IsFlashModeSupported(int32_t flashMode)
102 {
103 return real_.IsFlashModeSupported((NWeb::FlashModeAdapter)flashMode);
104 }
105
RestartSession()106 int32_t ArkCameraManagerAdapterImpl::RestartSession()
107 {
108 return real_.RestartSession();
109 }
110
StopSession(int32_t stopType)111 int32_t ArkCameraManagerAdapterImpl::StopSession(int32_t stopType)
112 {
113 return real_.StopSession((NWeb::CameraStopType)stopType);
114 }
115
GetCameraStatus()116 int32_t ArkCameraManagerAdapterImpl::GetCameraStatus()
117 {
118 return (int32_t)real_.GetCameraStatus();
119 }
120
IsExistCaptureTask()121 bool ArkCameraManagerAdapterImpl::IsExistCaptureTask()
122 {
123 return real_.IsExistCaptureTask();
124 }
125
StartStream(const ArkWebString & deviceId,const ArkWebRefPtr<ArkVideoCaptureParamsAdapter> captureParams,ArkWebRefPtr<ArkCameraBufferListenerAdapter> listener)126 int32_t ArkCameraManagerAdapterImpl::StartStream(const ArkWebString& deviceId,
127 const ArkWebRefPtr<ArkVideoCaptureParamsAdapter> captureParams,
128 ArkWebRefPtr<ArkCameraBufferListenerAdapter> listener)
129 {
130 if (CHECK_REF_PTR_IS_NULL(listener) && CHECK_REF_PTR_IS_NULL(captureParams)) {
131 return real_.StartStream(ArkWebStringStructToClass(deviceId), nullptr, nullptr);
132 } else if (!CHECK_REF_PTR_IS_NULL(listener) && !CHECK_REF_PTR_IS_NULL(captureParams)) {
133 return real_.StartStream(ArkWebStringStructToClass(deviceId),
134 std::make_shared<ArkVideoCaptureParamsAdapterWrapper>(captureParams),
135 std::make_shared<ArkCameraBufferListenerAdapterWrapper>(listener));
136 } else if (CHECK_REF_PTR_IS_NULL(listener)) {
137 return real_.StartStream(ArkWebStringStructToClass(deviceId),
138 std::make_shared<ArkVideoCaptureParamsAdapterWrapper>(captureParams), nullptr);
139 } else {
140 return real_.StartStream(ArkWebStringStructToClass(deviceId), nullptr,
141 std::make_shared<ArkCameraBufferListenerAdapterWrapper>(listener));
142 }
143 }
144
SetForegroundFlag(bool isForeground)145 void ArkCameraManagerAdapterImpl::SetForegroundFlag(bool isForeground)
146 {
147 real_.SetForegroundFlag(isForeground);
148 }
149
SetCameraStatus(int32_t status)150 void ArkCameraManagerAdapterImpl::SetCameraStatus(int32_t status)
151 {
152 real_.SetCameraStatus((NWeb::CameraStatusAdapter)status);
153 }
154
GetCurrentDeviceId()155 ArkWebString ArkCameraManagerAdapterImpl::GetCurrentDeviceId()
156 {
157 return ArkWebStringClassToStruct(real_.GetCurrentDeviceId());
158 }
159
160 } // namespace OHOS::ArkWeb
161