• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED.
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 HI_GV_SCROLLVIEW_H
17 #define HI_GV_SCROLLVIEW_H
18 
19 /* add include here */
20 #include "hi_gv_widget.h"
21 #ifdef HIGV_USE_WIDGET_SCROLLVIEW
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 /* NOTE: It is only valid for touch operation or mouse wheel operation */
27 typedef enum {
28     SCROLLVIEW_DIRECTION_HORI = 0,  /* Horizal direction */
29     SCROLLVIEW_DIRECTION_VERT,  /* Vertical direction */
30     SCROLLVIEW_DIRECTION_BUTT
31 } HIGV_SCROLLVIEW_DIRECTION_E;
32 
33 typedef enum {
34     SCROLLVIEW_STYLE_DEFAULTE = 0x00,
35     SCROLLVIEW_STYLE_ALWAY_CENTER = 0x01,
36     SCROLLVIEW_STYLE_BUTT = 0x10000
37 } HIGV_SCROLLVIEW_STYLE_E;
38 
39 typedef struct hiHIGV_SCROLLVIEW_Init_S {
40     HIGV_HANDLE hVerticalScrollBar; /* Bind vertical scrollbar handle */
41     HIGV_HANDLE hHorizontalScrollbar; /* Bind horizontal scrollbar handle */
42     HI_U32 LeftMargin; /* Invalid value */
43     HI_U32 RightMargin; /* Child widget right margin of background */
44     HI_U32 TopMargin; /* Invalid value */
45     HI_U32 BottomMargin; /* Child widget bottom margin of background */
46     HI_U32 Step; /* Scroll step */
47     HI_U32 Interval; /* Scroll interval */
48     HI_U32 ScrollContentWidth; /* The scroll content invariable width */
49     HI_U32 ScrollContentHeight; /* The scroll content invariable height */
50     HI_U32 ScrollViewStyle; /* Scroll view private style */
51     HIGV_SCROLLVIEW_DIRECTION_E Direction; /* Scroll direction */
52 } HIGV_SCROLLVIEW_Init_S;
53 
54 typedef struct {
55     HI_S32 cordX; /* ӿƫx */
56     HI_S32 cordY; /* ӿƫy */
57 } HigvScrollViewCord;
58 
59 /*
60 * brief Init the scrollview.
61 * param[in]  scrollViewHandle Scroll view handle.
62 * param[in]  initAttr The info of scrollview when created.
63 * retval ::HI_SUCCESS
64 * retval ::HI_ERR_COMM_LOST
65 * retval ::HI_ERR_COMM_INVAL
66 * retval ::HI_ERR_COMM_EXIST
67 */
68 HI_S32 HI_GV_ScrollView_Init(HIGV_HANDLE scrollViewHandle, const HIGV_SCROLLVIEW_Init_S *initAttr);
69 
70 /*
71 * brief Set content invariable size.
72 * param[in]  scrollViewHandle Scroll view handle.
73 * param[in]  width The invariable width.
74 * param[in]  height The invariable height.
75 * retval ::HI_SUCCESS
76 * retval ::HI_ERR_COMM_LOST
77 * retval ::HI_ERR_COMM_INVAL
78 * retval ::HI_ERR_COMM_PAERM
79 */
80 HI_S32 HI_GV_ScrollView_SetContentSize(HIGV_HANDLE scrollViewHandle, HI_U32 width, HI_U32 height);
81 
82 /*
83 * brief Move the view to center.
84 * param[in]  scrollViewHandle scroll view handle.
85 * retval ::HI_SUCCESS
86 * retval ::HI_ERR_COMM_LOST
87 * retval ::HI_ERR_COMM_INVAL
88 * retval ::HI_FAILURE
89 */
90 HI_S32 HI_GV_ScrollView_MoveToCenter(HIGV_HANDLE scrollViewHandle);
91 
92 /*
93 * brief Get the content rectangle.
94 * param[in]  scrollViewHandle Scroll view handle.
95 * param[out] rect Rectangle.
96 * retval ::HI_SUCCESS
97 * retval ::HI_ERR_COMM_LOST
98 * retval ::HI_ERR_COMM_INVAL
99 */
100 HI_S32 HI_GV_ScrollView_GetContentRect(HIGV_HANDLE scrollViewHandle, HI_RECT *rect);
101 
102 /*
103 * brief Get the view coordinate in the background content.
104 * attention \n
105      _____________________
106     |  background content |
107     |        ____         |
108     |       |view|        |
109     |       |____|        |
110     |_____________________|
111 * param[in]  scrollViewHandle Scroll view handle.
112 * param[out] cordX X abscissa.
113 * param[out] cordY Y abscissa.
114 * retval ::HI_SUCCESS
115 * retval ::HI_ERR_COMM_LOST
116 * retval ::HI_ERR_COMM_INVAL
117 */
118 HI_S32 HI_GV_ScrollView_GetViewCoordinate(HIGV_HANDLE scrollViewHandle, HIGV_CORD *cordX, HIGV_CORD *cordY);
119 
120 /*
121 * brief Set the view coordinate in the background content.
122 * param[in]  scrollViewHandle Scroll view handle.
123 * param[out] cordX X abscissa.
124 * param[out] cordY Y abscissa.
125 * retval ::HI_SUCCESS
126 * retval ::HI_ERR_COMM_LOST
127 * retval ::HI_ERR_COMM_INVAL
128 */
129 HI_S32 HI_GV_ScrollView_SetViewCoordinate(HIGV_HANDLE scrollViewHandle, HIGV_CORD cordX, HIGV_CORD cordY);
130 
131 /*
132 * brief Set scroll step.
133 * param[in]  scrollViewHandle Scroll view handle.
134 * param[in]  step Scroll step.
135 * retval ::HI_SUCCESS
136 * retval ::HI_ERR_COMM_LOST
137 * retval ::HI_ERR_COMM_INVAL
138 */
139 HI_S32 HI_GV_ScrollView_SetStep(HIGV_HANDLE scrollViewHandle, HI_U32 step);
140 
141 /*
142 * brief Set scroll Interval.
143 * param[in]  scrollViewHandle Scroll view handle.
144 * param[in]  interval Interval.
145 * retval ::HI_SUCCESS
146 * retval ::HI_ERR_COMM_LOST
147 * retval ::HI_ERR_COMM_INVAL
148 */
149 HI_S32 HI_GV_ScrollView_SetInterval(HIGV_HANDLE scrollViewHandle, HI_U32 interval);
150 
151 /*
152 * brief Bind the scrollbar to scrollbar.
153 * param[in]  scrollViewHandle Scroll view handle.
154 * param[in]  handleVertical vertical scrollbar.
155 * param[in]  handleHorizontal horizontal scrollbar.
156 * retval ::HI_SUCCESS
157 * retval ::HI_ERR_COMM_LOST
158 * retval ::HI_ERR_COMM_INVAL
159 */
160 HI_S32 HI_GV_ScrollView_BindScrollBar(HIGV_HANDLE scrollViewHandle, HIGV_HANDLE handleVertical,
161     HIGV_HANDLE handleHorizontal);
162 
163 /*
164 * brief Check the focus widget in the view.
165 * param[in]  scrollViewHandle Scroll view handle.
166 * retval ::HI_SUCCESS
167 * retval ::HI_ERR_COMM_LOST
168 * retval ::HI_ERR_COMM_INVAL
169 */
170 HI_S32 HI_GV_ScrollView_CheckFocusPos(HIGV_HANDLE scrollViewHandle);
171 
172 /*
173 * brief Set scroll sensibility.
174 * param[in]  scrollViewHandle Scroll view handle.
175 * param[in]  scrollParam scroll sensibility param.
176 * retval ::HI_SUCCESS
177 * retval ::HI_ERR_COMM_LOST
178 * retval ::HI_ERR_COMM_INVAL
179 */
180 HI_S32 HI_GV_ScrollView_SetScrollParam(HIGV_HANDLE scrollViewHandle, HI_FLOAT scrollParam);
181 
182 /*
183 * brief Set fling sensibility.
184 * param[in]  scrollViewHandle Scroll view handle.
185 * param[in]  flingParam fling sensibility param.
186 * retval ::HI_SUCCESS
187 * retval ::HI_ERR_COMM_LOST
188 * retval ::HI_ERR_COMM_INVAL
189 */
190 HI_S32 HI_GV_ScrollView_SetFlingParam(HIGV_HANDLE scrollViewHandle, HI_FLOAT flingParam);
191 
192 #ifdef __cplusplus
193 }
194 #endif
195 #endif
196 #endif /* HI_GV_SCROLLVIEW_H */
197