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 #ifndef OHOS_ACE_FRAMEWORK_CJ_SCROLL_FFI_H 17 #define OHOS_ACE_FRAMEWORK_CJ_SCROLL_FFI_H 18 19 #include "bridge/cj_frontend/interfaces/cj_ffi/cj_common_ffi.h" 20 #include "bridge/cj_frontend/interfaces/cj_ffi/cj_macro.h" 21 #include "core/components/scroll/scroll_controller_base.h" 22 #include "core/components_ng/pattern/scroll_bar/proxy/scroll_bar_proxy.h" 23 #include "ffi_remote_data.h" 24 25 namespace OHOS::Ace::Framework { 26 27 class ACE_EXPORT NativeNGScroller : public OHOS::FFI::FFIData { 28 DECL_TYPE(Scroller, OHOS::FFI::FFIData) 29 public: 30 NativeNGScroller(); 31 32 void ScrollTo( 33 const Dimension& xOffset, const Dimension& yOffset, double duration, const RefPtr<Curve>& curve); 34 void ScrollEdge(ScrollEdgeType edge); 35 void ScrollPage(bool next); 36 void ScrollBy(const Dimension& xOffset, const Dimension& yOffset); 37 void ScrollToIndex(int32_t index, bool smooth, int32_t align); 38 Offset CurrentOffset(); 39 GetController()40 RefPtr<ScrollControllerBase>& GetController() 41 { 42 return controller_; 43 } 44 SetController(const RefPtr<ScrollControllerBase> & controller)45 void SetController(const RefPtr<ScrollControllerBase>& controller) 46 { 47 controller_ = controller; 48 } 49 SetScrollBarProxy(const RefPtr<ScrollProxy> & proxy)50 void SetScrollBarProxy(const RefPtr<ScrollProxy>& proxy) 51 { 52 scrollBarProxy_ = proxy; 53 } 54 GetScrollBarProxy()55 const RefPtr<ScrollProxy>& GetScrollBarProxy() 56 { 57 return scrollBarProxy_; 58 } 59 60 private: 61 RefPtr<ScrollControllerBase> controller_; 62 RefPtr<ScrollProxy> scrollBarProxy_; 63 }; 64 65 } // namespace OHOS::Ace::Framework 66 67 extern "C" { 68 CJ_EXPORT void FfiOHOSAceFrameworkScrollCreate(int64_t scrollerID); 69 CJ_EXPORT void FfiOHOSAceFrameworkScrollScrollable(int32_t scrollDirection); 70 CJ_EXPORT void FfiOHOSAceFrameworkScrollScrollBar(int32_t barState); 71 CJ_EXPORT void FfiOHOSAceFrameworkScrollScrollBarColor(uint32_t color); 72 CJ_EXPORT void FfiOHOSAceFrameworkScrollScrollBarWidth(double width, int32_t unit); 73 CJ_EXPORT void FfiOHOSAceFrameworkScrollNestedScroll(int32_t scrollForward, int32_t scrollBackward); 74 CJ_EXPORT void FfiOHOSAceFrameworkScrollOnScroll(void (*callback)(CJOffset offset)); 75 CJ_EXPORT void FfiOHOSAceFrameworkScrollOnScrollEdge(void (*callback)(int32_t edge)); 76 CJ_EXPORT void FfiOHOSAceFrameworkScrollOnScrollEnd(void (*callback)()); 77 CJ_EXPORT int64_t FfiOHOSAceFrameworkScrollerCtor(); 78 CJ_EXPORT void FfiOHOSAceFrameworkScrollerScrollTo( 79 int64_t selfID, double xOffset, int32_t xUnit, double yOffset, int32_t yUnit); 80 CJ_EXPORT void FfiOHOSAceFrameworkScrollerScrollToByCurve( 81 int64_t selfID, double xOffset, int32_t xUnit, double yOffset, int32_t yUnit, double duration, const char* curve); 82 CJ_EXPORT void FfiOHOSAceFrameworkScrollerScrollBy( 83 int64_t selfID, double xOffset, int32_t xUnit, double yOffset, int32_t yUnit); 84 CJ_EXPORT void FfiOHOSAceFrameworkScrollerScrollEdge(int64_t selfID, int32_t edge); 85 CJ_EXPORT void FfiOHOSAceFrameworkScrollerScrollToIndex(int64_t selfID, int32_t index, bool smooth, int32_t align); 86 CJ_EXPORT void FfiOHOSAceFrameworkScrollerScrollPage(int64_t selfID, bool next); 87 CJ_EXPORT void FfiOHOSAceFrameworkScrollSetOnScrollFrameBegin(double (*callback)(double offset, int32_t state)); 88 CJ_EXPORT CJOffset FfiOHOSAceFrameworkScrollerCurrentOffset(int64_t selfID); 89 } 90 91 #endif // OHOS_ACE_FRAMEWORK_CJ_SCROLL_FFI_H 92