1 /*
2 * Copyright (c) 2025 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 "frameworks/bridge/declarative_frontend/engine/functions/js_gesture_recognizer.h"
17
18 #include "ui/base/utils/utils.h"
19
20 #include "core/components_ng/gestures/recognizers/pan_recognizer.h"
21 #include "core/components_ng/gestures/tap_gesture.h"
22
23 namespace OHOS::Ace::Framework {
24
IsBegin(const JSCallbackInfo & args)25 void JSScrollableTargetInfo::IsBegin(const JSCallbackInfo& args)
26 {
27 auto pattern = pattern_.Upgrade();
28 if (!pattern) {
29 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(false)));
30 return;
31 }
32 auto scrollablePattern = AceType::DynamicCast<NG::ScrollablePattern>(pattern);
33 if (scrollablePattern) {
34 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(scrollablePattern->IsAtTop())));
35 return;
36 }
37 auto swiperPattern = AceType::DynamicCast<NG::SwiperPattern>(pattern);
38 if (swiperPattern) {
39 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(swiperPattern->IsAtStart())));
40 }
41 }
42
IsEnd(const JSCallbackInfo & args)43 void JSScrollableTargetInfo::IsEnd(const JSCallbackInfo& args)
44 {
45 auto pattern = pattern_.Upgrade();
46 if (!pattern) {
47 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(false)));
48 return;
49 }
50 auto scrollablePattern = AceType::DynamicCast<NG::ScrollablePattern>(pattern);
51 if (scrollablePattern) {
52 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(scrollablePattern->IsAtBottom())));
53 return;
54 }
55 auto swiperPattern = AceType::DynamicCast<NG::SwiperPattern>(pattern);
56 if (swiperPattern) {
57 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(swiperPattern->IsAtEnd())));
58 }
59 }
60
GetTag(const JSCallbackInfo & args)61 void JSGestureRecognizer::GetTag(const JSCallbackInfo& args)
62 {
63 std::string tag;
64 auto recognizer = recognizer_.Upgrade();
65 if (recognizer) {
66 auto gestureInfo = recognizer->GetGestureInfo();
67 if (gestureInfo->GetTag().has_value()) {
68 tag = gestureInfo->GetTag().value();
69 }
70 }
71 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(tag)));
72 }
73
GetType(const JSCallbackInfo & args)74 void JSGestureRecognizer::GetType(const JSCallbackInfo& args)
75 {
76 GestureTypeName type = GestureTypeName::UNKNOWN;
77 auto recognizer = recognizer_.Upgrade();
78 if (recognizer) {
79 auto gestureInfo = recognizer->GetGestureInfo();
80 type = gestureInfo->GetRecognizerType();
81 }
82 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(static_cast<int32_t>(type))));
83 }
84
85
GetFingers(const JSCallbackInfo & args)86 void JSGestureRecognizer::GetFingers(const JSCallbackInfo& args)
87 {
88 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(fingers_)));
89 }
90
IsFingerCountLimit(const JSCallbackInfo & args)91 void JSGestureRecognizer::IsFingerCountLimit(const JSCallbackInfo& args)
92 {
93 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(isLimitFingerCount_)));
94 }
95
IsBuiltInRecognizer(const JSCallbackInfo & args)96 void JSGestureRecognizer::IsBuiltInRecognizer(const JSCallbackInfo& args)
97 {
98 bool isBuiltIn = false;
99 auto recognizer = recognizer_.Upgrade();
100 if (recognizer) {
101 auto gestureInfo = recognizer->GetGestureInfo();
102 isBuiltIn = gestureInfo->IsSystemGesture();
103 }
104 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(isBuiltIn)));
105 }
106
SetEnabled(const JSCallbackInfo & args)107 void JSGestureRecognizer::SetEnabled(const JSCallbackInfo& args)
108 {
109 auto recognizer = recognizer_.Upgrade();
110 CHECK_NULL_VOID(recognizer);
111 bool enabled = true;
112 if (args[0]->IsBoolean()) {
113 enabled = args[0]->ToBoolean();
114 }
115 recognizer->SetEnabled(enabled);
116 }
117
IsEnabled(const JSCallbackInfo & args)118 void JSGestureRecognizer::IsEnabled(const JSCallbackInfo& args)
119 {
120 bool isEnabled = false;
121 auto recognizer = recognizer_.Upgrade();
122 if (recognizer) {
123 isEnabled = recognizer->IsEnabled();
124 }
125 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(isEnabled)));
126 }
127
GetEventTargetInfo(const JSCallbackInfo & args)128 void JSGestureRecognizer::GetEventTargetInfo(const JSCallbackInfo& args)
129 {
130 auto recognizer = recognizer_.Upgrade();
131 if (!recognizer) {
132 args.SetReturnValue(JSClass<JSEventTargetInfo>::NewInstance());
133 return;
134 }
135 auto attachNode = recognizer->GetAttachedNode().Upgrade();
136 if (!attachNode) {
137 args.SetReturnValue(JSClass<JSEventTargetInfo>::NewInstance());
138 return;
139 }
140 RefPtr<NG::Pattern> pattern;
141 auto scrollablePattern = attachNode->GetPattern<NG::ScrollablePattern>();
142 if (scrollablePattern) {
143 pattern = scrollablePattern;
144 }
145 auto swiperPattern = attachNode->GetPattern<NG::SwiperPattern>();
146 if (swiperPattern) {
147 pattern = swiperPattern;
148 }
149 if (pattern) {
150 JSRef<JSObject> scrollableTargetObj = JSClass<JSScrollableTargetInfo>::NewInstance();
151 auto scrollableTarget = Referenced::Claim(scrollableTargetObj->Unwrap<JSScrollableTargetInfo>());
152 scrollableTarget->SetPattern(pattern);
153 scrollableTarget->SetInspectorId(attachNode->GetInspectorIdValue(""));
154 args.SetReturnValue(scrollableTargetObj);
155 return;
156 }
157 JSRef<JSObject> eventTargetObj = JSClass<JSEventTargetInfo>::NewInstance();
158 auto eventTarget = Referenced::Claim(eventTargetObj->Unwrap<JSEventTargetInfo>());
159 eventTarget->SetInspectorId(attachNode->GetInspectorIdValue(""));
160 args.SetReturnValue(eventTargetObj);
161 }
162
GetRefereeState(const JSCallbackInfo & args)163 void JSGestureRecognizer::GetRefereeState(const JSCallbackInfo& args)
164 {
165 GestureRecognizerState state = GestureRecognizerState::FAIL;
166 auto recognizer = recognizer_.Upgrade();
167 if (recognizer) {
168 state = ConvertRefereeState(recognizer->GetRefereeState());
169 }
170 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(static_cast<int32_t>(state))));
171 }
172
IsValid(const JSCallbackInfo & args)173 void JSGestureRecognizer::IsValid(const JSCallbackInfo& args)
174 {
175 bool isValid = false;
176 auto recognizer = recognizer_.Upgrade();
177 if (recognizer && recognizer->IsInResponseLinkRecognizers()) {
178 isValid = true;
179 }
180 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(isValid)));
181 }
182
GetDistance(const JSCallbackInfo & args)183 void JSPinchRecognizer::GetDistance(const JSCallbackInfo& args)
184 {
185 auto recognizer = JSGestureRecognizer::GetRecognizer().Upgrade();
186 if (recognizer) {
187 auto context = PipelineContext::GetCurrentContextSafely();
188 CHECK_NULL_VOID(context);
189 double distance = context->ConvertPxToVp(Dimension(distance_, DimensionUnit::PX));
190 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(RoundToMaxPrecision(distance))));
191 }
192 }
193
GetCount(const JSCallbackInfo & args)194 void JSTapRecognizer::GetCount(const JSCallbackInfo& args)
195 {
196 auto recognizer = JSGestureRecognizer::GetRecognizer().Upgrade();
197 if (recognizer) {
198 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(count_)));
199 }
200 }
201
GetDuration(const JSCallbackInfo & args)202 void JSLongPressRecognizer::GetDuration(const JSCallbackInfo& args)
203 {
204 auto recognizer = JSGestureRecognizer::GetRecognizer().Upgrade();
205 if (recognizer) {
206 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(duration_)));
207 }
208 }
209
SetRepeat(bool repeat)210 void JSLongPressRecognizer::SetRepeat(bool repeat)
211 {
212 repeat_ = repeat;
213 }
214
GetRepeat(const JSCallbackInfo & args)215 void JSLongPressRecognizer::GetRepeat(const JSCallbackInfo& args)
216 {
217 auto recognizer = JSGestureRecognizer::GetRecognizer().Upgrade();
218 if (recognizer) {
219 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(repeat_)));
220 }
221 }
222
GetAngle(const JSCallbackInfo & args)223 void JSRotationRecognizer::GetAngle(const JSCallbackInfo& args)
224 {
225 auto recognizer = JSGestureRecognizer::GetRecognizer().Upgrade();
226 if (recognizer) {
227 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(angle_)));
228 }
229 }
230
GetDirection(const JSCallbackInfo & args)231 void JSSwipeRecognizer::GetDirection(const JSCallbackInfo& args)
232 {
233 auto recognizer = JSGestureRecognizer::GetRecognizer().Upgrade();
234 if (recognizer) {
235 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(direction_.type)));
236 }
237 }
238
GetSpeed(const JSCallbackInfo & args)239 void JSSwipeRecognizer::GetSpeed(const JSCallbackInfo& args)
240 {
241 auto recognizer = JSGestureRecognizer::GetRecognizer().Upgrade();
242 if (recognizer) {
243 auto context = PipelineContext::GetCurrentContextSafely();
244 CHECK_NULL_VOID(context);
245 double speed = context->ConvertPxToVp(Dimension(speed_, DimensionUnit::PX));
246 args.SetReturnValue(JSRef<JSVal>::Make(ToJSValue(RoundToMaxPrecision(speed))));
247 }
248 }
249
JSBind(BindingTarget globalObj)250 void JSEventTargetInfo::JSBind(BindingTarget globalObj)
251 {
252 JSClass<JSEventTargetInfo>::Declare("EventTargetInfo");
253 JSClass<JSEventTargetInfo>::CustomMethod("getId", &JSEventTargetInfo::GetInspectorId);
254 JSClass<JSEventTargetInfo>::Bind(globalObj, &JSEventTargetInfo::Constructor, &JSEventTargetInfo::Destructor);
255 }
256
JSBind(BindingTarget globalObj)257 void JSScrollableTargetInfo::JSBind(BindingTarget globalObj)
258 {
259 JSClass<JSScrollableTargetInfo>::Declare("ScrollableTargetInfo");
260 JSClass<JSScrollableTargetInfo>::CustomMethod("isBegin", &JSScrollableTargetInfo::IsBegin);
261 JSClass<JSScrollableTargetInfo>::CustomMethod("isEnd", &JSScrollableTargetInfo::IsEnd);
262 JSClass<JSScrollableTargetInfo>::CustomMethod("getId", &JSEventTargetInfo::GetInspectorId);
263 JSClass<JSScrollableTargetInfo>::Inherit<JSEventTargetInfo>();
264 JSClass<JSScrollableTargetInfo>::Bind(
265 globalObj, &JSScrollableTargetInfo::Constructor, &JSScrollableTargetInfo::Destructor);
266 }
267
JSBind(BindingTarget globalObj)268 void JSGestureRecognizer::JSBind(BindingTarget globalObj)
269 {
270 JSClass<JSGestureRecognizer>::Declare("GestureRecognizer");
271 JSClass<JSGestureRecognizer>::CustomMethod("getTag", &JSGestureRecognizer::GetTag);
272 JSClass<JSGestureRecognizer>::CustomMethod("getType", &JSGestureRecognizer::GetType);
273 JSClass<JSGestureRecognizer>::CustomMethod("getFingerCount", &JSGestureRecognizer::GetFingers);
274 JSClass<JSGestureRecognizer>::CustomMethod("isFingerCountLimit", &JSGestureRecognizer::IsFingerCountLimit);
275 JSClass<JSGestureRecognizer>::CustomMethod("isBuiltIn", &JSGestureRecognizer::IsBuiltInRecognizer);
276 JSClass<JSGestureRecognizer>::CustomMethod("setEnabled", &JSGestureRecognizer::SetEnabled);
277 JSClass<JSGestureRecognizer>::CustomMethod("isEnabled", &JSGestureRecognizer::IsEnabled);
278 JSClass<JSGestureRecognizer>::CustomMethod("getEventTargetInfo", &JSGestureRecognizer::GetEventTargetInfo);
279 JSClass<JSGestureRecognizer>::CustomMethod("getState", &JSGestureRecognizer::GetRefereeState);
280 JSClass<JSGestureRecognizer>::CustomMethod("isValid", &JSGestureRecognizer::IsValid);
281 JSClass<JSGestureRecognizer>::Bind(globalObj, &JSGestureRecognizer::Constructor, &JSGestureRecognizer::Destructor);
282 }
283
JSBind(BindingTarget globalObj)284 void JSPanRecognizer::JSBind(BindingTarget globalObj)
285 {
286 JSClass<JSPanRecognizer>::Declare("PanRecognizer");
287 JSClass<JSPanRecognizer>::CustomMethod("getTag", &JSGestureRecognizer::GetTag);
288 JSClass<JSPanRecognizer>::CustomMethod("getType", &JSGestureRecognizer::GetType);
289 JSClass<JSPanRecognizer>::CustomMethod("getFingerCount", &JSGestureRecognizer::GetFingers);
290 JSClass<JSPanRecognizer>::CustomMethod("isFingerCountLimit", &JSGestureRecognizer::IsFingerCountLimit);
291 JSClass<JSPanRecognizer>::CustomMethod("isBuiltIn", &JSGestureRecognizer::IsBuiltInRecognizer);
292 JSClass<JSPanRecognizer>::CustomMethod("setEnabled", &JSGestureRecognizer::SetEnabled);
293 JSClass<JSPanRecognizer>::CustomMethod("isEnabled", &JSGestureRecognizer::IsEnabled);
294 JSClass<JSPanRecognizer>::CustomMethod("getEventTargetInfo", &JSGestureRecognizer::GetEventTargetInfo);
295 JSClass<JSPanRecognizer>::CustomMethod("getState", &JSGestureRecognizer::GetRefereeState);
296 JSClass<JSPanRecognizer>::CustomMethod("getPanGestureOptions", &JSPanRecognizer::GetPanGestureOptions);
297 JSClass<JSPanRecognizer>::CustomMethod("isValid", &JSGestureRecognizer::IsValid);
298 JSClass<JSPanRecognizer>::Inherit<JSGestureRecognizer>();
299 JSClass<JSPanRecognizer>::Bind(globalObj, &JSPanRecognizer::Constructor, &JSPanRecognizer::Destructor);
300 }
301
JSBind(BindingTarget globalObj)302 void JSPinchRecognizer::JSBind(BindingTarget globalObj)
303 {
304 JSClass<JSPinchRecognizer>::Declare("PinchRecognizer");
305 JSClass<JSPinchRecognizer>::CustomMethod("getTag", &JSGestureRecognizer::GetTag);
306 JSClass<JSPinchRecognizer>::CustomMethod("getType", &JSGestureRecognizer::GetType);
307 JSClass<JSPinchRecognizer>::CustomMethod("getFingerCount", &JSGestureRecognizer::GetFingers);
308 JSClass<JSPinchRecognizer>::CustomMethod("isFingerCountLimit", &JSGestureRecognizer::IsFingerCountLimit);
309 JSClass<JSPinchRecognizer>::CustomMethod("getDistance", &JSPinchRecognizer::GetDistance);
310 JSClass<JSPinchRecognizer>::CustomMethod("isBuiltIn", &JSGestureRecognizer::IsBuiltInRecognizer);
311 JSClass<JSPinchRecognizer>::CustomMethod("setEnabled", &JSGestureRecognizer::SetEnabled);
312 JSClass<JSPinchRecognizer>::CustomMethod("isEnabled", &JSGestureRecognizer::IsEnabled);
313 JSClass<JSPinchRecognizer>::CustomMethod("getEventTargetInfo", &JSGestureRecognizer::GetEventTargetInfo);
314 JSClass<JSPinchRecognizer>::CustomMethod("getState", &JSGestureRecognizer::GetRefereeState);
315 JSClass<JSPinchRecognizer>::CustomMethod("isValid", &JSGestureRecognizer::IsValid);
316 JSClass<JSPinchRecognizer>::Inherit<JSGestureRecognizer>();
317 JSClass<JSPinchRecognizer>::Bind(globalObj, &JSPinchRecognizer::Constructor, &JSPinchRecognizer::Destructor);
318 }
319
JSBind(BindingTarget globalObj)320 void JSTapRecognizer::JSBind(BindingTarget globalObj)
321 {
322 JSClass<JSTapRecognizer>::Declare("TapRecognizer");
323 JSClass<JSTapRecognizer>::CustomMethod("getTag", &JSGestureRecognizer::GetTag);
324 JSClass<JSTapRecognizer>::CustomMethod("getType", &JSGestureRecognizer::GetType);
325 JSClass<JSTapRecognizer>::CustomMethod("getFingerCount", &JSGestureRecognizer::GetFingers);
326 JSClass<JSTapRecognizer>::CustomMethod("isFingerCountLimit", &JSGestureRecognizer::IsFingerCountLimit);
327 JSClass<JSTapRecognizer>::CustomMethod("getTapCount", &JSTapRecognizer::GetCount);
328 JSClass<JSTapRecognizer>::CustomMethod("isBuiltIn", &JSGestureRecognizer::IsBuiltInRecognizer);
329 JSClass<JSTapRecognizer>::CustomMethod("setEnabled", &JSGestureRecognizer::SetEnabled);
330 JSClass<JSTapRecognizer>::CustomMethod("isEnabled", &JSGestureRecognizer::IsEnabled);
331 JSClass<JSTapRecognizer>::CustomMethod("getEventTargetInfo", &JSGestureRecognizer::GetEventTargetInfo);
332 JSClass<JSTapRecognizer>::CustomMethod("getState", &JSGestureRecognizer::GetRefereeState);
333 JSClass<JSTapRecognizer>::CustomMethod("isValid", &JSGestureRecognizer::IsValid);
334 JSClass<JSTapRecognizer>::Inherit<JSGestureRecognizer>();
335 JSClass<JSTapRecognizer>::Bind(globalObj, &JSTapRecognizer::Constructor, &JSTapRecognizer::Destructor);
336 }
337
JSBind(BindingTarget globalObj)338 void JSLongPressRecognizer::JSBind(BindingTarget globalObj)
339 {
340 JSClass<JSLongPressRecognizer>::Declare("LongPressRecognizer");
341 JSClass<JSLongPressRecognizer>::CustomMethod("getTag", &JSGestureRecognizer::GetTag);
342 JSClass<JSLongPressRecognizer>::CustomMethod("getType", &JSGestureRecognizer::GetType);
343 JSClass<JSLongPressRecognizer>::CustomMethod("getFingerCount", &JSGestureRecognizer::GetFingers);
344 JSClass<JSLongPressRecognizer>::CustomMethod("isFingerCountLimit", &JSGestureRecognizer::IsFingerCountLimit);
345 JSClass<JSLongPressRecognizer>::CustomMethod("isRepeat", &JSLongPressRecognizer::GetRepeat);
346 JSClass<JSLongPressRecognizer>::CustomMethod("getDuration", &JSLongPressRecognizer::GetDuration);
347 JSClass<JSLongPressRecognizer>::CustomMethod("isBuiltIn", &JSGestureRecognizer::IsBuiltInRecognizer);
348 JSClass<JSLongPressRecognizer>::CustomMethod("setEnabled", &JSGestureRecognizer::SetEnabled);
349 JSClass<JSLongPressRecognizer>::CustomMethod("isEnabled", &JSGestureRecognizer::IsEnabled);
350 JSClass<JSLongPressRecognizer>::CustomMethod("getEventTargetInfo", &JSGestureRecognizer::GetEventTargetInfo);
351 JSClass<JSLongPressRecognizer>::CustomMethod("getState", &JSGestureRecognizer::GetRefereeState);
352 JSClass<JSLongPressRecognizer>::CustomMethod("isValid", &JSGestureRecognizer::IsValid);
353 JSClass<JSLongPressRecognizer>::Inherit<JSGestureRecognizer>();
354 JSClass<JSLongPressRecognizer>::Bind(
355 globalObj, &JSLongPressRecognizer::Constructor, &JSLongPressRecognizer::Destructor);
356 }
357
JSBind(BindingTarget globalObj)358 void JSRotationRecognizer::JSBind(BindingTarget globalObj)
359 {
360 JSClass<JSRotationRecognizer>::Declare("RotationRecognizer");
361 JSClass<JSRotationRecognizer>::CustomMethod("getTag", &JSGestureRecognizer::GetTag);
362 JSClass<JSRotationRecognizer>::CustomMethod("getType", &JSGestureRecognizer::GetType);
363 JSClass<JSRotationRecognizer>::CustomMethod("getFingerCount", &JSGestureRecognizer::GetFingers);
364 JSClass<JSRotationRecognizer>::CustomMethod("isFingerCountLimit", &JSGestureRecognizer::IsFingerCountLimit);
365 JSClass<JSRotationRecognizer>::CustomMethod("getAngle", &JSRotationRecognizer::GetAngle);
366 JSClass<JSRotationRecognizer>::CustomMethod("isBuiltIn", &JSGestureRecognizer::IsBuiltInRecognizer);
367 JSClass<JSRotationRecognizer>::CustomMethod("setEnabled", &JSGestureRecognizer::SetEnabled);
368 JSClass<JSRotationRecognizer>::CustomMethod("isEnabled", &JSGestureRecognizer::IsEnabled);
369 JSClass<JSRotationRecognizer>::CustomMethod("getEventTargetInfo", &JSGestureRecognizer::GetEventTargetInfo);
370 JSClass<JSRotationRecognizer>::CustomMethod("getState", &JSGestureRecognizer::GetRefereeState);
371 JSClass<JSRotationRecognizer>::CustomMethod("isValid", &JSGestureRecognizer::IsValid);
372 JSClass<JSRotationRecognizer>::Inherit<JSGestureRecognizer>();
373 JSClass<JSRotationRecognizer>::Bind(
374 globalObj, &JSRotationRecognizer::Constructor, &JSRotationRecognizer::Destructor);
375 }
376
JSBind(BindingTarget globalObj)377 void JSSwipeRecognizer::JSBind(BindingTarget globalObj)
378 {
379 JSClass<JSSwipeRecognizer>::Declare("SwipeRecognizer");
380 JSClass<JSSwipeRecognizer>::CustomMethod("getTag", &JSGestureRecognizer::GetTag);
381 JSClass<JSSwipeRecognizer>::CustomMethod("getType", &JSGestureRecognizer::GetType);
382 JSClass<JSSwipeRecognizer>::CustomMethod("getFingerCount", &JSGestureRecognizer::GetFingers);
383 JSClass<JSSwipeRecognizer>::CustomMethod("isFingerCountLimit", &JSGestureRecognizer::IsFingerCountLimit);
384 JSClass<JSSwipeRecognizer>::CustomMethod("getVelocityThreshold", &JSSwipeRecognizer::GetSpeed);
385 JSClass<JSSwipeRecognizer>::CustomMethod("getDirection", &JSSwipeRecognizer::GetDirection);
386 JSClass<JSSwipeRecognizer>::CustomMethod("isBuiltIn", &JSGestureRecognizer::IsBuiltInRecognizer);
387 JSClass<JSSwipeRecognizer>::CustomMethod("setEnabled", &JSGestureRecognizer::SetEnabled);
388 JSClass<JSSwipeRecognizer>::CustomMethod("isEnabled", &JSGestureRecognizer::IsEnabled);
389 JSClass<JSSwipeRecognizer>::CustomMethod("getEventTargetInfo", &JSGestureRecognizer::GetEventTargetInfo);
390 JSClass<JSSwipeRecognizer>::CustomMethod("getState", &JSGestureRecognizer::GetRefereeState);
391 JSClass<JSSwipeRecognizer>::CustomMethod("isValid", &JSGestureRecognizer::IsValid);
392 JSClass<JSSwipeRecognizer>::Inherit<JSGestureRecognizer>();
393 JSClass<JSSwipeRecognizer>::Bind(globalObj, &JSSwipeRecognizer::Constructor, &JSSwipeRecognizer::Destructor);
394 }
395 } // namespace OHOS::Ace::Framework