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 #include "bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_pattern_lock_bridge.h"
16
17 #include "base/geometry/dimension.h"
18 #include "base/utils/utils.h"
19 #include "core/interfaces/native/node/api.h"
20 #include "core/components/common/layout/constants.h"
21 #include "core/pipeline/pipeline_base.h"
22 #include "frameworks/bridge/declarative_frontend/engine/jsi/nativeModule/arkts_utils.h"
23
24
25 namespace OHOS::Ace::NG {
26 constexpr int NUM_0 = 0;
27 constexpr int NUM_1 = 1;
28
SetSideLength(ArkUIRuntimeCallInfo * runtimeCallInfo)29 ArkUINativeModuleValue PatternLockBridge::SetSideLength(ArkUIRuntimeCallInfo* runtimeCallInfo)
30 {
31 EcmaVM* vm = runtimeCallInfo->GetVM();
32 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
33 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
34 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
35 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
36 CalcDimension sideLength;
37 if (!(ArkTSUtils::ParseJsDimensionVp(vm, secondArg, sideLength))) {
38 GetArkUIInternalNodeAPI()->GetPatternLockModifier().ResetPatternLockSideLength(nativeNode);
39 }
40 GetArkUIInternalNodeAPI()->GetPatternLockModifier().SetPatternLockSideLength(
41 nativeNode, sideLength.Value(), static_cast<int8_t>(sideLength.Unit()));
42 return panda::JSValueRef::Undefined(vm);
43 }
44
ResetSideLength(ArkUIRuntimeCallInfo * runtimeCallInfo)45 ArkUINativeModuleValue PatternLockBridge::ResetSideLength(ArkUIRuntimeCallInfo* runtimeCallInfo)
46 {
47 EcmaVM* vm = runtimeCallInfo->GetVM();
48 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
49 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
50 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
51 GetArkUIInternalNodeAPI()->GetPatternLockModifier().ResetPatternLockSideLength(nativeNode);
52 return panda::JSValueRef::Undefined(vm);
53 }
54
SetAutoReset(ArkUIRuntimeCallInfo * runtimeCallInfo)55 ArkUINativeModuleValue PatternLockBridge::SetAutoReset(ArkUIRuntimeCallInfo* runtimeCallInfo)
56 {
57 EcmaVM* vm = runtimeCallInfo->GetVM();
58 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
59 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
60 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(1);
61 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
62 uint32_t value = 1;
63 if (secondArg->IsBoolean()) {
64 value = static_cast<uint32_t>(secondArg->ToBoolean(vm)->Value());
65 }
66 GetArkUIInternalNodeAPI()->GetPatternLockModifier().SetPatternLockAutoReset(nativeNode, value);
67 return panda::JSValueRef::Undefined(vm);
68 }
69
ResetAutoReset(ArkUIRuntimeCallInfo * runtimeCallInfo)70 ArkUINativeModuleValue PatternLockBridge::ResetAutoReset(ArkUIRuntimeCallInfo* runtimeCallInfo)
71 {
72 EcmaVM* vm = runtimeCallInfo->GetVM();
73 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
74 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
75 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
76 GetArkUIInternalNodeAPI()->GetPatternLockModifier().ResetPatternLockAutoReset(nativeNode);
77 return panda::JSValueRef::Undefined(vm);
78 }
79
SetPathStrokeWidth(ArkUIRuntimeCallInfo * runtimeCallInfo)80 ArkUINativeModuleValue PatternLockBridge::SetPathStrokeWidth(ArkUIRuntimeCallInfo* runtimeCallInfo)
81 {
82 EcmaVM* vm = runtimeCallInfo->GetVM();
83 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
84 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
85 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
86 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
87 CalcDimension strokeWidth;
88 if (!(ArkTSUtils::ParseJsDimensionVp(vm, secondArg, strokeWidth))) {
89 GetArkUIInternalNodeAPI()->GetPatternLockModifier().ResetPatternLockPathStrokeWidth(nativeNode);
90 }
91 GetArkUIInternalNodeAPI()->GetPatternLockModifier().SetPatternLockPathStrokeWidth(
92 nativeNode, strokeWidth.Value(), static_cast<int8_t>(strokeWidth.Unit()));
93 return panda::JSValueRef::Undefined(vm);
94 }
95
ResetPathStrokeWidth(ArkUIRuntimeCallInfo * runtimeCallInfo)96 ArkUINativeModuleValue PatternLockBridge::ResetPathStrokeWidth(ArkUIRuntimeCallInfo* runtimeCallInfo)
97 {
98 EcmaVM* vm = runtimeCallInfo->GetVM();
99 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
100 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
101 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
102 GetArkUIInternalNodeAPI()->GetPatternLockModifier().ResetPatternLockPathStrokeWidth(nativeNode);
103 return panda::JSValueRef::Undefined(vm);
104 }
105
SetRegularColor(ArkUIRuntimeCallInfo * runtimeCallInfo)106 ArkUINativeModuleValue PatternLockBridge::SetRegularColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
107 {
108 EcmaVM* vm = runtimeCallInfo->GetVM();
109 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
110 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
111 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(1);
112 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
113 Color color;
114 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
115 GetArkUIInternalNodeAPI()->GetPatternLockModifier().ResetPatternLockRegularColor(nativeNode);
116 } else {
117 GetArkUIInternalNodeAPI()->GetPatternLockModifier().SetPatternLockRegularColor(nativeNode, color.GetValue());
118 }
119 return panda::JSValueRef::Undefined(vm);
120 }
121
ResetRegularColor(ArkUIRuntimeCallInfo * runtimeCallInfo)122 ArkUINativeModuleValue PatternLockBridge::ResetRegularColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
123 {
124 EcmaVM* vm = runtimeCallInfo->GetVM();
125 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
126 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
127 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
128 GetArkUIInternalNodeAPI()->GetPatternLockModifier().ResetPatternLockRegularColor(nativeNode);
129 return panda::JSValueRef::Undefined(vm);
130 }
131
SetPathColor(ArkUIRuntimeCallInfo * runtimeCallInfo)132 ArkUINativeModuleValue PatternLockBridge::SetPathColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
133 {
134 EcmaVM* vm = runtimeCallInfo->GetVM();
135 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
136 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
137 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(1);
138 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
139 Color color;
140 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
141 GetArkUIInternalNodeAPI()->GetPatternLockModifier().ResetPatternLockPathColor(nativeNode);
142 } else {
143 GetArkUIInternalNodeAPI()->GetPatternLockModifier().SetPatternLockPathColor(nativeNode, color.GetValue());
144 }
145 return panda::JSValueRef::Undefined(vm);
146 }
147
ResetPathColor(ArkUIRuntimeCallInfo * runtimeCallInfo)148 ArkUINativeModuleValue PatternLockBridge::ResetPathColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
149 {
150 EcmaVM* vm = runtimeCallInfo->GetVM();
151 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
152 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
153 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
154 GetArkUIInternalNodeAPI()->GetPatternLockModifier().ResetPatternLockPathColor(nativeNode);
155 return panda::JSValueRef::Undefined(vm);
156 }
157
SetPatternLockActiveColor(ArkUIRuntimeCallInfo * runtimeCallInfo)158 ArkUINativeModuleValue PatternLockBridge::SetPatternLockActiveColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
159 {
160 EcmaVM* vm = runtimeCallInfo->GetVM();
161 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
162 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
163 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
164 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
165 Color color;
166 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
167 GetArkUIInternalNodeAPI()->GetPatternLockModifier().ResetPatternLockActiveColor(nativeNode);
168 } else {
169 GetArkUIInternalNodeAPI()->GetPatternLockModifier().SetPatternLockActiveColor(nativeNode, color.GetValue());
170 }
171 return panda::JSValueRef::Undefined(vm);
172 }
173
ResetPatternLockActiveColor(ArkUIRuntimeCallInfo * runtimeCallInfo)174 ArkUINativeModuleValue PatternLockBridge::ResetPatternLockActiveColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
175 {
176 EcmaVM* vm = runtimeCallInfo->GetVM();
177 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
178 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
179 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
180 GetArkUIInternalNodeAPI()->GetPatternLockModifier().ResetPatternLockActiveColor(nativeNode);
181 return panda::JSValueRef::Undefined(vm);
182 }
183
SetPatternLockCircleRadius(ArkUIRuntimeCallInfo * runtimeCallInfo)184 ArkUINativeModuleValue PatternLockBridge::SetPatternLockCircleRadius(ArkUIRuntimeCallInfo* runtimeCallInfo)
185 {
186 EcmaVM* vm = runtimeCallInfo->GetVM();
187 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
188 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
189 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
190 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
191 CalcDimension circleRadius;
192 if (ArkTSUtils::ParseJsDimensionVp(vm, secondArg, circleRadius) && !(circleRadius.IsNonPositive())) {
193 GetArkUIInternalNodeAPI()->GetPatternLockModifier().SetPatternLockCircleRadius(
194 nativeNode, circleRadius.Value(), static_cast<int8_t>(circleRadius.Unit()));
195 } else {
196 GetArkUIInternalNodeAPI()->GetPatternLockModifier().ResetPatternLockCircleRadius(nativeNode);
197 }
198 return panda::JSValueRef::Undefined(vm);
199 }
200
ResetPatternLockCircleRadius(ArkUIRuntimeCallInfo * runtimeCallInfo)201 ArkUINativeModuleValue PatternLockBridge::ResetPatternLockCircleRadius(ArkUIRuntimeCallInfo* runtimeCallInfo)
202 {
203 EcmaVM* vm = runtimeCallInfo->GetVM();
204 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
205 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
206 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
207 GetArkUIInternalNodeAPI()->GetPatternLockModifier().ResetPatternLockCircleRadius(nativeNode);
208 return panda::JSValueRef::Undefined(vm);
209 }
210
SetPatternLockSelectedColor(ArkUIRuntimeCallInfo * runtimeCallInfo)211 ArkUINativeModuleValue PatternLockBridge::SetPatternLockSelectedColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
212 {
213 EcmaVM* vm = runtimeCallInfo->GetVM();
214 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
215 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
216 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
217 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
218 Color color;
219 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
220 GetArkUIInternalNodeAPI()->GetPatternLockModifier().ResetPatternLockSelectedColor(nativeNode);
221 } else {
222 GetArkUIInternalNodeAPI()->GetPatternLockModifier().SetPatternLockSelectedColor(nativeNode, color.GetValue());
223 }
224 return panda::JSValueRef::Undefined(vm);
225 }
226
ResetPatternLockSelectedColor(ArkUIRuntimeCallInfo * runtimeCallInfo)227 ArkUINativeModuleValue PatternLockBridge::ResetPatternLockSelectedColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
228 {
229 EcmaVM* vm = runtimeCallInfo->GetVM();
230 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
231 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
232 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
233 GetArkUIInternalNodeAPI()->GetPatternLockModifier().ResetPatternLockSelectedColor(nativeNode);
234 return panda::JSValueRef::Undefined(vm);
235 }
236 } // namespace OHOS::Ace::NG
237