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