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_LIST_FFI_H
17 #define OHOS_ACE_FRAMEWORK_CJ_LIST_FFI_H
18 
19 #include <cstdint>
20 
21 #include "bridge/cj_frontend/interfaces/cj_ffi/cj_macro.h"
22 
23 extern "C" {
24 struct DividerParams {
25     double width;
26     int32_t widthUnit;
27     uint32_t color;
28     double startMargin;
29     int32_t startMarginUnit;
30     double endMargin;
31     int32_t endMarginUnit;
32 };
33 
34 struct FfiOffsetRemain {
35     double dxRemain;
36     double dyRemain;
37 };
38 
39 CJ_EXPORT void FfiOHOSAceFrameworkListCreate(double space, int32_t unit, int32_t initialIndex, int64_t scrollerID);
40 CJ_EXPORT void FfiOHOSAceFrameworkListSetWidth(double width, int32_t unit);
41 CJ_EXPORT void FfiOHOSAceFrameworkListSetHeight(double height, int32_t unit);
42 CJ_EXPORT void FfiOHOSAceFrameworkListSetDirection(int32_t direction);
43 CJ_EXPORT void FfiOHOSAceFrameworkListSetDivider(DividerParams params);
44 CJ_EXPORT void FfiOHOSAceFrameworkListSetEditMode(bool flag);
45 CJ_EXPORT void FfiOHOSAceFrameworkListSetEdgeEffect(int32_t edgeEffect);
46 CJ_EXPORT void FfiOHOSAceFrameworkListSetCachedCount(int32_t cachedCount);
47 CJ_EXPORT void FfiOHOSAceFrameworkListSetScrollBar(int32_t barState);
48 CJ_EXPORT void FfiOHOSAceFrameworkListSetChainAnimation(bool flag);
49 CJ_EXPORT void FfiOHOSAceFrameworkListSetMultiSelectable(bool flag);
50 CJ_EXPORT void FfiOHOSAceFrameworkListSetLanes(int32_t lanes);
51 CJ_EXPORT void FfiOHOSAceFrameworkListSetLanesByLengthConstrain(
52     double min, int32_t minUnit, double max, int32_t maxUnit);
53 CJ_EXPORT void FfiOHOSAceFrameworkListSetAlignListItem(int32_t align);
54 CJ_EXPORT void FfiOHOSAceFrameworkListSetSticky(int32_t style);
55 CJ_EXPORT void FfiOHOSAceFrameworkListSetNestedScroll(int32_t scrollForward, int32_t scrollBackward);
56 CJ_EXPORT void FfiOHOSAceFrameworkListSetOnScrollFrameBegin(double (*callback)(double offset, int32_t state));
57 CJ_EXPORT void FfiOHOSAceFrameworkListSetItemDeleteCallback(bool (*callback)(int32_t value));
58 CJ_EXPORT void FfiOHOSAceFrameworkListSetScrollIndexCallback(void (*callback)(int32_t firstIndex, int32_t lastIndex));
59 CJ_EXPORT void FfiOHOSAceFrameworkListSetOnScrollCallback(void (*callback)(double offset, int32_t state));
60 CJ_EXPORT void FfiOHOSAceFrameworkListSetOnReachStartCallback(void (*callback)());
61 CJ_EXPORT void FfiOHOSAceFrameworkListSetOnReachEndCallback(void (*callback)());
62 CJ_EXPORT void FfiOHOSAceFrameworkListSetOnScrollStartCallback(void (*callback)());
63 CJ_EXPORT void FfiOHOSAceFrameworkListSetOnScrollStopCallback(void (*callback)());
64 CJ_EXPORT void FfiOHOSAceFrameworkListSetOnScrollBeginCallback(FfiOffsetRemain (*callback)(double dx, double dy));
65 }
66 
67 #endif // OHOS_ACE_FRAMEWORK_CJ_LIST_FFI_H
68