/Gui/GUISeekBar.c

https://gitlab.com/brian0218/RKNanoD_Wireless_Audio_SDK_V1.5 · C · 378 lines · 161 code · 58 blank · 159 comment · 17 complexity · cf46c6b37fdcf97bd7c8137b766816da MD5 · raw file

  1. /*
  2. ********************************************************************************************
  3. *
  4. * Copyright (c): Fuzhou Rockchip Electronic Co., Ltd
  5. * All rights reserved.
  6. *
  7. * FileName: ..\Gui\GUISeekBar.c
  8. * Owner: Benjo.lei
  9. * Date: 2015.10.14
  10. * Time: 15:07:35
  11. * Desc:
  12. * History:
  13. * <author> <date> <time> <version> <Desc>
  14. * Benjo.lei 2015.10.14 15:07:35 1.0
  15. ********************************************************************************************
  16. */
  17. #include "BspConfig.h"
  18. #ifdef __GUI_GUISEEKBAR_C__
  19. /*
  20. *---------------------------------------------------------------------------------------------------------------------
  21. *
  22. * #include define
  23. *
  24. *---------------------------------------------------------------------------------------------------------------------
  25. */
  26. #include "RKOS.h"
  27. #include "BSP.h"
  28. #include "GUIManager.h"
  29. #include "GUIIcon.h"
  30. #include "GUISeekBar.h"
  31. #include "..\Resource\ImageResourceID.h"
  32. /*
  33. *---------------------------------------------------------------------------------------------------------------------
  34. *
  35. * #define / #typedef define
  36. *
  37. *---------------------------------------------------------------------------------------------------------------------
  38. */
  39. typedef struct _GUI_SEEKBAR_CLASS
  40. {
  41. GUI_CONTROL_CLASS pfControl;
  42. GUI_CONTROL_CLASS * relevance;
  43. HGC pScoll;
  44. uint32 Scoll_Width;
  45. uint32 Scoll_Height;
  46. HGC pBlock;
  47. uint32 Block_Width;
  48. uint32 Block_Height;
  49. uint32 CurBlock;
  50. uint32 Scale;
  51. }GUI_SEEKBAR_CLASS;
  52. /*
  53. *---------------------------------------------------------------------------------------------------------------------
  54. *
  55. * local variable define
  56. *
  57. *---------------------------------------------------------------------------------------------------------------------
  58. */
  59. /*
  60. *---------------------------------------------------------------------------------------------------------------------
  61. *
  62. * global variable define
  63. *
  64. *---------------------------------------------------------------------------------------------------------------------
  65. */
  66. /*
  67. *---------------------------------------------------------------------------------------------------------------------
  68. *
  69. * local function declare
  70. *
  71. *---------------------------------------------------------------------------------------------------------------------
  72. */
  73. /*
  74. *---------------------------------------------------------------------------------------------------------------------
  75. *
  76. * API(read) define
  77. *
  78. *---------------------------------------------------------------------------------------------------------------------
  79. */
  80. /*******************************************************************************
  81. ** Name: GUI_SeekBarSetStyle
  82. ** Input:HGC pGc, int *x, int *y
  83. ** Return: rk_err_t
  84. ** Owner:Benjo.lei
  85. ** Date: 2015.10.21
  86. ** Time: 17:30:03
  87. *******************************************************************************/
  88. _GUI_GUITASK_COMMON_
  89. COMMON API rk_err_t GUI_SeekBarGetScollSize(HGC pGc, int *x, int *y)
  90. {
  91. GUI_SEEKBAR_CLASS * pstClass= (GUI_SEEKBAR_CLASS *)pGc;
  92. if ( pstClass== NULL )
  93. {
  94. return RK_ERROR;
  95. }
  96. if (x!= NULL)*x= pstClass->Scoll_Width;
  97. if (y!= NULL)*y= pstClass->Scoll_Height;
  98. return RK_SUCCESS;
  99. }
  100. /*
  101. *---------------------------------------------------------------------------------------------------------------------
  102. *
  103. * local function(read) define
  104. *
  105. *---------------------------------------------------------------------------------------------------------------------
  106. */
  107. /*
  108. *---------------------------------------------------------------------------------------------------------------------
  109. *
  110. * API(write) define
  111. *
  112. *---------------------------------------------------------------------------------------------------------------------
  113. */
  114. /*******************************************************************************
  115. ** Name: GUI_SeekBarSetStyle
  116. ** Input:HGC pGc, uint32 Scoll, uint32 Block
  117. ** Return: rk_err_t
  118. ** Owner:Benjo.lei
  119. ** Date: 2015.10.21
  120. ** Time: 17:30:03
  121. *******************************************************************************/
  122. _GUI_GUITASK_COMMON_
  123. COMMON API rk_err_t GUI_SeekBarSetStyle(HGC pGc, uint32 Scoll, uint32 Block)
  124. {
  125. RKGUI_ICON_ARG pstIconArg;
  126. PICTURE_INFO_STRUCT psPictureInfo;
  127. GUI_SEEKBAR_CLASS * pstClass= (GUI_SEEKBAR_CLASS *)pGc;
  128. if ( pstClass== NULL )
  129. {
  130. return RK_ERROR;
  131. }
  132. pstIconArg.resource= Scoll;
  133. pstIconArg.x= -1;
  134. pstIconArg.y= -1;
  135. pstClass->pScoll= GUI_IconCreate(&pstIconArg);
  136. pstIconArg.resource= Block;
  137. pstIconArg.x= -1;
  138. pstIconArg.y= -1;
  139. pstClass->pBlock= GUI_IconCreate(&pstIconArg);
  140. if (pstClass->pScoll== NULL || pstClass->pBlock== NULL)
  141. {
  142. printf("GUI_SeekBarSetStyle error: Create icon fault %d %d\n", Scoll, Block);
  143. return RK_ERROR;
  144. }
  145. FW_GetPicInfoWithIDNum(Scoll,&psPictureInfo);
  146. pstClass->Scoll_Width= psPictureInfo.xSize;
  147. pstClass->Scoll_Height= psPictureInfo.ySize;
  148. FW_GetPicInfoWithIDNum(Block,&psPictureInfo);
  149. pstClass->Block_Width= psPictureInfo.xSize;
  150. pstClass->Block_Height= psPictureInfo.ySize;
  151. return RK_SUCCESS;
  152. }
  153. /*******************************************************************************
  154. ** Name: GUI_SeekBarSetCoordinates
  155. ** Input:HGC pGc, int x, int y
  156. ** Return: rk_err_t
  157. ** Owner:Benjo.lei
  158. ** Date: 2015.10.21
  159. ** Time: 17:30:03
  160. *******************************************************************************/
  161. _GUI_GUITASK_COMMON_
  162. COMMON API rk_err_t GUI_SeekBarSetCoordinates(HGC pGc, int x, int y)
  163. {
  164. RKGUI_XY_ARG parameter;
  165. GUI_SEEKBAR_CLASS * pstClass= (GUI_SEEKBAR_CLASS *)pGc;
  166. if ( pstClass== NULL )
  167. {
  168. return RK_ERROR;
  169. }
  170. parameter.x= x;
  171. parameter.y= y;
  172. pstClass->pfControl.x0= x;
  173. pstClass->pfControl.y0= y;
  174. pstClass->CurBlock= parameter.y;
  175. return GcRelevanceOper(pstClass->relevance, OPERATE_SET_XY, &parameter);
  176. }
  177. /*******************************************************************************
  178. ** Name: GUI_SeekBarDrag
  179. ** Input:HGC pGc, uint32 drag
  180. ** Return: rk_err_t
  181. ** Owner:Benjo.lei
  182. ** Date: 2015.10.21
  183. ** Time: 17:30:03
  184. *******************************************************************************/
  185. _GUI_GUITASK_COMMON_
  186. COMMON API rk_err_t GUI_SeekBarDrag(HGC pGc, uint32 drag)
  187. {
  188. GUI_SEEKBAR_CLASS * pstClass= (GUI_SEEKBAR_CLASS *)pGc;
  189. if (pstClass== NULL)
  190. {
  191. return RK_ERROR;
  192. }
  193. if (pstClass->pfControl.y0>= 0)
  194. pstClass->CurBlock= pstClass->pfControl.y0+ pstClass->Scale* drag;
  195. if ( pstClass->Scoll_Height- pstClass->Block_Height- pstClass->CurBlock< pstClass->Scale)
  196. {
  197. pstClass->CurBlock= pstClass->Scoll_Height- pstClass->Block_Height;
  198. }
  199. return RK_SUCCESS;
  200. }
  201. /*******************************************************************************
  202. ** Name: GUI_SeekBarSetScale
  203. ** Input:HGC pGc, uint32 scale
  204. ** Return: rk_err_t
  205. ** Owner:Benjo.lei
  206. ** Date: 2015.10.21
  207. ** Time: 17:30:03
  208. *******************************************************************************/
  209. _GUI_GUITASK_COMMON_
  210. COMMON API rk_err_t GUI_SeekBarSetScale(HGC pGc, uint32 scale)
  211. {
  212. GUI_SEEKBAR_CLASS * pstClass= (GUI_SEEKBAR_CLASS *)pGc;
  213. if (pstClass== NULL || scale==0)
  214. {
  215. return RK_ERROR;
  216. }
  217. if (scale> 1)
  218. pstClass->Scale= (pstClass->Scoll_Height - pstClass->Block_Height) / (scale- 1);
  219. else
  220. pstClass->Scale= (pstClass->Scoll_Height - pstClass->Block_Height);
  221. return RK_SUCCESS;
  222. }
  223. /*******************************************************************************
  224. ** Name: GUI_SeekBarDisplay
  225. ** Input:HGC pGc, int dray
  226. ** Return: rk_err_t
  227. ** Owner:Benjo.lei
  228. ** Date: 2015.10.21
  229. ** Time: 17:30:03
  230. *******************************************************************************/
  231. _GUI_GUITASK_COMMON_
  232. COMMON API rk_err_t GUI_SeekBarDisplay(HGC pGc)
  233. {
  234. GUI_SEEKBAR_CLASS * pstClass= (GUI_SEEKBAR_CLASS *)pGc;
  235. if ( pstClass== NULL )
  236. {
  237. return RK_ERROR;
  238. }
  239. GUI_IconSetCoordinates(pstClass->pBlock, pstClass->pfControl.x0, pstClass->CurBlock);
  240. // GcRelevanceOper(pstClass->relevance, OPERATE_DISPLAY, NULL);
  241. return RK_SUCCESS;
  242. }
  243. /*
  244. *---------------------------------------------------------------------------------------------------------------------
  245. *
  246. * local function(write) define
  247. *
  248. *---------------------------------------------------------------------------------------------------------------------
  249. */
  250. /*
  251. *---------------------------------------------------------------------------------------------------------------------
  252. *
  253. * API(init) define
  254. *
  255. *---------------------------------------------------------------------------------------------------------------------
  256. */
  257. /*******************************************************************************
  258. ** Name: GUI_SeekBarCreate
  259. ** Input:uint32 id, void *arg
  260. ** Return: rk_err_t
  261. ** Owner:Benjo.lei
  262. ** Date: 2015.10.16
  263. ** Time: 17:30:03
  264. *******************************************************************************/
  265. _GUI_GUITASK_COMMON_
  266. COMMON API GUI_CONTROL_CLASS * GUI_SeekBarCreate(void *arg)
  267. {
  268. GUI_SEEKBAR_CLASS * pstSeekBarClass;
  269. PICTURE_INFO_STRUCT psPictureInfo;
  270. pstSeekBarClass= rkos_memory_malloc(sizeof(GUI_SEEKBAR_CLASS));
  271. if (pstSeekBarClass== NULL)
  272. {
  273. printf("Create SeekBar: malloc fault\n");
  274. return NULL;
  275. }
  276. pstSeekBarClass->pfControl.hDisplay= hDisplay0;
  277. //pstSeekBarClass->pfControl.ClassID = GUI_CLASS_SEEKBAR;
  278. pstSeekBarClass->pfControl.x0 = -1;
  279. pstSeekBarClass->pfControl.y0 = -1;
  280. pstSeekBarClass->pfControl.xSize = -1;
  281. pstSeekBarClass->pfControl.ySize = -1;
  282. pstSeekBarClass->pfControl.display = 1;
  283. pstSeekBarClass->CurBlock= 0;
  284. if ( GUI_SeekBarSetStyle(pstSeekBarClass, IMG_ID_BROWSER_SCOLL, IMG_ID_BROWSER_SCOLL_BLOCK)!= RK_SUCCESS )
  285. return NULL;
  286. pstSeekBarClass->relevance= NULL;
  287. GcRelevanceRegister(&pstSeekBarClass->relevance, pstSeekBarClass->pScoll);
  288. GcRelevanceRegister(&pstSeekBarClass->relevance, pstSeekBarClass->pBlock);
  289. return &pstSeekBarClass->pfControl;
  290. }
  291. /*******************************************************************************
  292. ** Name: GUI_SeekBarDelete
  293. ** Input:HGC pGc
  294. ** Return: rk_err_t
  295. ** Owner:Benjo.lei
  296. ** Date: 2015.10.16
  297. ** Time: 17:30:03
  298. *******************************************************************************/
  299. _GUI_GUITASK_COMMON_
  300. COMMON API rk_err_t GUI_SeekBarDelete(HGC pGc)
  301. {
  302. GUI_SEEKBAR_CLASS * pstSeekBarClass= (GUI_SEEKBAR_CLASS *)pGc;
  303. if ( pstSeekBarClass== NULL )
  304. {
  305. printf("delete SeekBar fault\n");
  306. return RK_ERROR;
  307. }
  308. GcRelevanceDelete(&pstSeekBarClass->relevance);
  309. RKDev_Close(pstSeekBarClass->pfControl.hDisplay);
  310. rkos_memory_free(pGc);
  311. return RK_SUCCESS;
  312. }
  313. /*
  314. *---------------------------------------------------------------------------------------------------------------------
  315. *
  316. * local function(init) define
  317. *
  318. *---------------------------------------------------------------------------------------------------------------------
  319. */
  320. #endif