• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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