hv_mw_OsdOperation.h 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741
  1. /*
  2. * @file hv_mw_OsdOperation.h
  3. * @brief Header file of osd MiddleWare operation.
  4. *
  5. * @verbatim
  6. * ==============================================================================
  7. * ##### How to use #####
  8. * ==============================================================================
  9. * (+) Use Hv_Mw_OsdOpsIsRedraw() to get current frame is need redraw
  10. * (+) Use Hv_Mw_OsdOpsClearRedrawFlag() to clear redraw flag
  11. * (+) Use Hv_Mw_OsdOpsForceRedraw() to set current frame be need redraw forcely
  12. * (+) Use Hv_Mw_OsdOpsInit() to init osd operations's data
  13. * (+) Use Hv_Mw_OsdComponentGetDynamicProp() to get a component's dynamic data
  14. * (+) Use Hv_Mw_OsdComponentUpdateByUserdata() to update&show a dynamic component by userdata
  15. * (+) Use Hv_Mw_OsdComponentShow() to show a component
  16. * (+) Use Hv_Mw_OsdComponentHide() to hide a component
  17. * (+) Use Hv_Mw_OsdItemShow() to show a item
  18. * (+) Use Hv_Mw_OsdItemHide() to hide a item
  19. * (+) Use Hv_Mw_OsdItemGetEnable() to get item's enable state
  20. * (+) Use Hv_Mw_OsdItemSetEnable() to set item's enable state
  21. * (+) Use Hv_Mw_OsdItemEnableList() to set item list's enable state
  22. * (+) Use Hv_Mw_OsdSetItemNumInPage() to set item's max num in page
  23. * (+) Use Hv_Mw_OsdGetItemNumInPage() to get item's max num in page
  24. * (+) Use Hv_Mw_OsdItemGetLevel() to get item's menu level
  25. * (+) Use Hv_Mw_OsdItemGetStartIdInPage() to get first item in item's list page
  26. * (+) Use Hv_Mw_OsdItemGetBias() to get a item's bias in its list
  27. * (+) Use Hv_Mw_OsdItemGetPage() to get a item's page info
  28. * (+) Use Hv_Mw_OsdItemShowList() to update&show a item list
  29. * (+) Use Hv_Mw_OsdItemShowListWithSingleChild() to update&show a item list with child
  30. * (+) Use Hv_Mw_OsdItemShowListWithSingleValue() to update&show a item list with value
  31. * (+) Use Hv_Mw_OsdItemShowValueList() to update&show a item's value list
  32. * (+) Use Hv_Mw_OsdItemRefreshList() to refresh a item list (already visable)
  33. * (+) Use Hv_Mw_OsdItemHideList() to hide a item list
  34. * (+) Use Hv_Mw_OsdItemHideListWithSingleChild() to hide a item list with child
  35. * (+) Use Hv_Mw_OsdItemHideListWithSingleValue() to hide a item list with value
  36. * (+) Use Hv_Mw_OsdItemHideValueList() to hide a item's value list
  37. * (+) Use Hv_Mw_OsdItemUnSelect() to unselect a item
  38. * (+) Use Hv_Mw_OsdItemSelect() to select a item
  39. * (+) Use Hv_Mw_OsdItemUpdateSelectList() to update a select list
  40. * (+) Use Hv_Mw_OsdItemGetFocusing() to get current focusing item
  41. * (+) Use Hv_Mw_OsdItemFocusClear() to clear currennt focusing item
  42. * (+) Use Hv_Mw_OsdItemFocus() to set focusing on a item
  43. * (+) Use Hv_Mw_OsdItemFocusChild() to move focusing to child item
  44. * (+) Use Hv_Mw_OsdItemFocusChildSelect() to move focusing to child item which is selected
  45. * (+) Use Hv_Mw_OsdItemFocusValue() to move focusing to value item
  46. * (+) Use Hv_Mw_OsdItemFocusParent() to move focusing to parent item
  47. * (+) Use Hv_Mw_OsdItemFocusNext() to move focusing to next item
  48. * (+) Use Hv_Mw_OsdItemFocusPrev() to move focusing to previous item
  49. * (+) Use Hv_Mw_OsdWindowClearShowList() to clear a window's ShowList
  50. * (+) Use Hv_Mw_OsdWindowClearDeleteList() to clear a window's DeleteList
  51. * (+) Use Hv_Mw_OsdWindowClearUpdateInfo() to clear a window's UpdateInfo
  52. * (+) Use Hv_Mw_OsdWindowCheckIsEmpty() to check a window is empty.
  53. * (+) Use Hv_Mw_OsdSceneInit() to init a scene before show
  54. * (+) Use Hv_Mw_OsdSceneShow() to show a scene.
  55. * (+) Use Hv_Mw_OsdSceneHide() to hide a scene.
  56. * (+) Use Hv_Mw_OsdSceneRefresh() to refresh a scene's data
  57. * (+) Use Hv_Mw_OsdSceneRefreshAll() to refresh all scenes's data
  58. * (+) Use Hv_Mw_OsdSceneClear() to clear a scene's data
  59. * (+) Use Hv_Mw_OsdSceneClearAll() to hide & clear all scenes's data
  60. * (+) Use Hv_Mw_OsdSceneIsShowing() to check a scene is showing
  61. *
  62. * @endverbatim
  63. * @author HiView SoC Software Team
  64. * @version 1.0.0
  65. * @date 2022-09-01
  66. */
  67. #ifndef _HV_MW_OSD_OPS_H
  68. #define _HV_MW_OSD_OPS_H
  69. #include "hv_mw_OsdComm.h"
  70. #include "hv_app_Function.h"
  71. typedef enum {
  72. FOCUSING_NEXT,
  73. FOCUSING_PREV,
  74. FOCUSING_CHILD,
  75. FOCUSING_CHILD_SELECT,
  76. FOCUSING_VALUE,
  77. FOCUSING_PARENT,
  78. FOCUSING_CHOSEN,
  79. FOCUSING_CLEAR,
  80. } OsdMoveFocusingItem;
  81. /**
  82. * @brief 判断当前帧是否需要重画
  83. * @return HV_TRUE-需要重画, HV_FALSE-不需要重画(更新)
  84. */
  85. BOOL Hv_Mw_OsdOpsIsRedraw(VOID);
  86. /**
  87. * @brief 清除重画flag
  88. */
  89. VOID Hv_Mw_OsdOpsClearRedrawFlag(VOID);
  90. /**
  91. * @brief 强制设置当前帧是否重画
  92. * @param[in] bRedraw HV_TRUE-重画, HV_FALSE-仅更新画
  93. */
  94. VOID Hv_Mw_OsdOpsForceRedraw(BOOL bRedraw);
  95. #if (HV_PROJECT_CONFIG_OSD_FORCE_REDRAW_ALL == HV_CONFIG_OFF)
  96. /**
  97. * @brief 重置所有window的font记录信息
  98. */
  99. VOID Hv_Mw_OsdResetFontResList(VOID);
  100. #ifdef HV_SCALER_DEBUG_VERSION
  101. /**
  102. * @brief FOR DEBUG,打印所有window的font记录信息
  103. */
  104. VOID Hv_Mw_OsdPrintFontResList(VOID);
  105. #endif
  106. #endif
  107. /**
  108. * @brief 判断当前界面是否需要多帧画
  109. * @return HV_TRUE-需要多帧画, HV_FALSE-不需要多帧画
  110. */
  111. BOOL Hv_Mw_OsdOpsIsMultiFrameDraw(VOID);
  112. /**
  113. * @brief 清除多帧画flag
  114. */
  115. VOID Hv_Mw_OsdOpsClearMultiFrameDrawFlag(VOID);
  116. /**
  117. * @brief Osd operations模块数据初始化
  118. */
  119. VOID Hv_Mw_OsdOpsInit(VOID);
  120. #ifdef HV_SCALER_DEBUG_VERSION
  121. /**
  122. * @brief 输出OSD界面统计数据信息
  123. */
  124. VOID Hv_Mw_OsdSceneDebugStat(VOID);
  125. #endif
  126. /**
  127. * @brief 获取组件所在window
  128. * @return OsdWindow window结构体指针
  129. */
  130. OsdWindow *Hv_Mw_OsdComponentGetWindow(OsdComponent stCp);
  131. /**
  132. * @brief 获取组件的绝对位置
  133. * @param[in] usItemId Item的Id,若组件属于scene需将usItemId设置为ITEM_NONE_ID
  134. * @param[in] stCp 组件类型及Id
  135. * @param[out] usX 获取的组件X位置
  136. * @param[out] usY 获取的组件Y位置
  137. */
  138. VOID Hv_Mw_OsdComponentGetPosition(USHORT16 usItemId, OsdComponent stCp, USHORT16 usX, USHORT16 usY);
  139. /**
  140. * @brief 获取组件的动态数据指针
  141. * @param[in] stCp 组件类型及Id
  142. * @param[in] usX bIsOffset==true为组件X位置,bIsOffset==false为Item的X位置
  143. * @param[in] usY bIsOffset==true为组件Y位置,bIsOffset==false为Item的Y位置
  144. * @param[in] bIsOffset 区分直接设置组件位置和通过Item偏移设置组件位置
  145. */
  146. VOID Hv_Mw_OsdComponentSetPosition(OsdComponent stCp, USHORT16 usX, USHORT16 usY, BOOL bIsOffset);
  147. /**
  148. * @brief 获取组件的动态数据指针
  149. * @param[in] stCp 组件类型及Id
  150. * @return 对应的动态数据指针
  151. */
  152. VOID *Hv_Mw_OsdComponentGetDynamicProp(OsdComponent stCp);
  153. /**
  154. * @brief 获取组件Node
  155. * @param[in] stCp 组件类型及Id
  156. * @return OsdComponentNode 对应的Node指针
  157. */
  158. OsdComponentNode *Hv_Mw_OsdComponentGetNode(OsdComponent stCp);
  159. /**
  160. * @brief 更新AsciiString组件的字符串内容
  161. * @param[in] enIndex 组件Id
  162. * @param[in] pucString 字符串
  163. * @param[in] ucStringLength 字符串长度
  164. */
  165. VOID Hv_Mw_OsdDynamicAsciiStringUpdate(OsdAsciiStringId enIndex, UCHAR8* pucString, UCHAR8 ucStringLength);
  166. /**
  167. * @brief 更新显示AsciiString组件的字符串内容
  168. * @param[in] usId 组件Id
  169. * @param[in] fmt 格式化字符串
  170. */
  171. VOID Hv_Mw_OsdAsciiStringComponentShow(USHORT16 usId, const CHAR8 *fmt, ...);
  172. /**
  173. * @brief 根据指定userdata的值,更新并显示组件
  174. * @param[in] stCp 组件类型及Id
  175. * @param[in] enUserdata userdata枚举类型
  176. */
  177. VOID Hv_Mw_OsdComponentUpdateByUserdata(OsdComponent stCp, UserdataId enUserdata);
  178. /**
  179. * @brief 显示一个组件
  180. * @param[in] stCp 组件类型及Id
  181. */
  182. VOID Hv_Mw_OsdComponentShow(OsdComponent stCp);
  183. /**
  184. * @brief 隐藏一个组件
  185. * @param[in] stCp 组件类型及Id
  186. */
  187. VOID Hv_Mw_OsdComponentHide(OsdComponent stCp);
  188. /**
  189. * @brief 显示指定item的当前状态下的cursor
  190. * @param[in] usItemId 指定item的Id
  191. */
  192. VOID Hv_Mw_OsdCursorShowByItem(USHORT16 usItemId);
  193. /**
  194. * @brief 隐藏指定item的当前状态下的cursor
  195. * @param[in] usItemId 指定item的Id
  196. */
  197. VOID Hv_Mw_OsdCursorHideByItem(USHORT16 usItemId);
  198. /**
  199. * @brief 设置一个item的位置
  200. * @param[in] usItemId item的Id
  201. * @param[in] usX x坐标值
  202. * @param[in] usY y坐标值
  203. */
  204. VOID Hv_Mw_OsdItemSetPosition(USHORT16 usItemId, USHORT16 usX, USHORT16 usY);
  205. /**
  206. * @brief 设置一个item的位置
  207. * @param[in] ucCursorId cursor的Id
  208. * @param[in] usItemX x坐标值
  209. * @param[in] usItemY y坐标值
  210. * @param[in] ucItemState cursor 所在item的状态
  211. */
  212. VOID Hv_Mw_OsdCursorSetPositon(UCHAR8 ucCursorId, USHORT16 usItemX, USHORT16 usItemY, UCHAR8 ucItemState);
  213. /**
  214. * @brief 判断一个item是否正在显示
  215. * @param[in] usItemId item的Id
  216. */
  217. BOOL Hv_Mw_OsdItemIsShowing(USHORT16 usItemId);
  218. /**
  219. * @brief 显示一个item
  220. * @param[in] usItemId item的Id
  221. */
  222. VOID Hv_Mw_OsdItemShow(USHORT16 usItemId);
  223. /**
  224. * @brief 隐藏一个item
  225. * @param[in] usItemId item的Id
  226. */
  227. VOID Hv_Mw_OsdItemHide(USHORT16 usItemId);
  228. /**
  229. * @brief 刷新一个item
  230. * @param[in] usItemId item的Id
  231. */
  232. VOID Hv_Mw_OsdItemRefresh(USHORT16 usItemId);
  233. /**
  234. * @brief 更新一个item的状态并显示(强制更新状态,不会进行disable/disable hide检查)
  235. * @param[in] usItemId item的Id
  236. * @param[in] enState item的状态
  237. */
  238. VOID Hv_Mw_OsdItemShowWithState(USHORT16 usItemId, OsdItemState enState);
  239. /**
  240. * @brief 更新一个item的状态
  241. * @param[in] usItemId item的Id
  242. * @param[in] enState item的状态
  243. */
  244. VOID Hv_Mw_OsdItemSetState(USHORT16 usItemId, OsdItemState enState);
  245. /**
  246. * @brief 获取一个item的状态
  247. * @param[in] usItemId item的Id
  248. * @return OsdItemState item的状态
  249. */
  250. OsdItemState Hv_Mw_OsdItemGetState(USHORT16 usItemId);
  251. /**
  252. * @brief 获取一个item是否enable
  253. * @param[in] usItemId item的Id
  254. * @return BOOL 正常-HV_TRUE, 禁用-HV_FALSE
  255. */
  256. BOOL Hv_Mw_OsdItemGetEnable(USHORT16 usItemId);
  257. /**
  258. * @brief 设置一个item是否enable
  259. * @param[in] usItemId item的Id
  260. * @param[in] bEnable 正常-HV_TRUE, 禁用-HV_FALSE
  261. */
  262. VOID Hv_Mw_OsdItemSetEnable(USHORT16 usItemId, BOOL bEnable);
  263. /**
  264. * @brief 更新item列表中的所有item的禁用状态
  265. * @param[in] usItem list中的ItemId
  266. * @param[in] bIncludeSelf 是否包含当前item
  267. * @param[in] bEnable 正常-HV_TRUE, 禁用-HV_FALSE
  268. */
  269. VOID Hv_Mw_OsdItemEnableList(USHORT16 usItem, BOOL bIncludeSelf, BOOL bEnable);
  270. /**
  271. * @brief 设置当前页的item最大显示个数
  272. * @param[in] usNum 最大显示个数
  273. */
  274. VOID Hv_Mw_OsdSetItemNumInPage(USHORT16 usNum);
  275. /**
  276. * @brief 获取当前页的item最大显示个数
  277. * @return USHORT16 最大显示个数
  278. */
  279. USHORT16 Hv_Mw_OsdGetItemNumInPage(VOID);
  280. /**
  281. * @brief 获取item所在的listitem总数
  282. * @return USHORT16 item数量
  283. */
  284. USHORT16 Hv_Mw_OsdItemGetListNum(USHORT16 usItemId);
  285. /**
  286. * @brief 获取item的child item总数
  287. * @return USHORT16 child item数量
  288. */
  289. USHORT16 Hv_Mw_OsdItemGetChildNum(USHORT16 usItemId);
  290. /**
  291. * @brief 获取item所在的菜单等级
  292. * @return USHORT16 菜单等级
  293. */
  294. USHORT16 Hv_Mw_OsdItemGetLevel(USHORT16 usItem);
  295. /**
  296. * @brief 获取一个item在显示页中的首个Item
  297. * @param[in] usItem item的Id
  298. * @return 首个Itemitem的Id
  299. */
  300. USHORT16 Hv_Mw_OsdItemGetStartIdInPage(USHORT16 usItem);
  301. /**
  302. * @brief 获取一个item在显示页中的最后一个Item
  303. * @param[in] usItem item的Id
  304. * @return 最后一个Itemitem的Id
  305. */
  306. USHORT16 Hv_Mw_OsdItemGetEndIdInPage(USHORT16 usItem);
  307. /**
  308. * @brief 获取一个item在显示列表中的偏移
  309. * @param[in] usItem item的Id
  310. * @return item的偏移
  311. */
  312. USHORT16 Hv_Mw_OsdItemGetBias(USHORT16 usItem);
  313. /**
  314. * @brief 获取一个item所绑定的userdata id
  315. * @param[in] usItem item的Id
  316. * @return userdata id
  317. */
  318. USHORT16 Hv_Mw_OsdItemGetUserdata(USHORT16 usItemId);
  319. #define OSD_GET_USERDATA Hv_Mw_OsdItemGetUserdata
  320. /**
  321. * @brief 获取一个item所绑定的userdata id的值
  322. * @param[in] usItem item的Id
  323. * @return userdata的值
  324. */
  325. USHORT16 Hv_Mw_OsdItemGetUserdataValue(USHORT16 usItemId);
  326. #define OSD_GET_USERDATA_VALUE Hv_Mw_OsdItemGetUserdataValue
  327. /**
  328. * @brief 获取一个item在显示列表中的页信息
  329. * @param[in] usItem item的Id
  330. * @param[in] ucCurPage item所在的页数
  331. * @param[in] ucTotalPageNum item所在的列表的总页数
  332. */
  333. VOID Hv_Mw_OsdItemGetPage(USHORT16 usItem, UCHAR8 *pucCurPage, UCHAR8 *pucTotalPageNum);
  334. /**
  335. * @brief 获取一个item在显示列表中的页信息(若页面全部disable,则不计入该页)
  336. * @param[in] usItem item的Id
  337. * @param[in] ucCurPage item所在的页数
  338. * @param[in] ucTotalPageNum item所在的列表的总页数
  339. */
  340. VOID Hv_Mw_OsdItemGetPageCheckEnable(USHORT16 usItem, UCHAR8 *pucCurPage, UCHAR8 *pucTotalPageNum);
  341. /**
  342. * @brief 判断两个item是否在同一页
  343. * @param[in] usItem1 item1的Id
  344. * @param[in] usItem2 item2的Id
  345. * @return HV_TRUE-在同一页, HV_FALSE-不在同一页
  346. */
  347. BOOL Hv_Mw_OsdItemIsAtSamePage(USHORT16 usItem1, USHORT16 usItem2);
  348. /**
  349. * @brief 更新并显示一个item列表
  350. * @param[in] usItem item列表中任意一个item的Id
  351. */
  352. VOID Hv_Mw_OsdItemShowList(USHORT16 usItem);
  353. /**
  354. * @brief 更新并显示一个item列表(若当前页面全部disable,则显示下一页)
  355. * @param[in] usItem item列表中任意一个item的Id
  356. * @return USHORT16 首个未被禁用的item id
  357. */
  358. USHORT16 Hv_Mw_OsdItemShowListCheckEnable(USHORT16 usItem);
  359. /**
  360. * @brief 隐藏一个item列表(若当前页面全部disable,则隐藏下一页)
  361. * @param[in] usItem item列表中任意一个item的Id
  362. */
  363. VOID Hv_Mw_OsdItemHideListCheckEnable(USHORT16 usItem);
  364. /**
  365. * @brief 更新并显示一个item列表及每个item的child
  366. * @param[in] usItem item列表中任意一个item的Id
  367. */
  368. VOID Hv_Mw_OsdItemShowListWithSingleChild(USHORT16 usItem);
  369. /**
  370. * @brief 更新并显示一个item列表及每个item的value
  371. * @param[in] usItem item列表中任意一个item的Id
  372. */
  373. VOID Hv_Mw_OsdItemShowListWithSingleValue(USHORT16 usItem);
  374. /**
  375. * @brief 更新并显示一个item value的列表
  376. * @param[in] usItem item列表中任意一个item的Id
  377. */
  378. VOID Hv_Mw_OsdItemShowValueList(USHORT16 usItem);
  379. /**
  380. * @brief 刷新item所在的整个item列表
  381. * @param[in] usItem item列表中任意一个item的Id
  382. */
  383. VOID Hv_Mw_OsdItemRefreshList(USHORT16 usItem);
  384. /**
  385. * @brief 隐藏一个item列表
  386. * @param[in] usItem item列表中任意一个item的Id
  387. */
  388. VOID Hv_Mw_OsdItemHideList(USHORT16 usItem);
  389. /**
  390. * @brief 隐藏item所在的整个item列表
  391. * @param[in] usItem item列表中任意一个item的Id
  392. */
  393. VOID Hv_Mw_OsdItemHideListAll(USHORT16 usItem);
  394. /**
  395. * @brief 隐藏一个item列表及每个item的child
  396. * @param[in] usItem item列表中任意一个item的Id
  397. */
  398. VOID Hv_Mw_OsdItemHideListWithSingleChild(USHORT16 usItem);
  399. /**
  400. * @brief 隐藏一个item列表及每个item的value
  401. * @param[in] usItem item列表中任意一个item的Id
  402. */
  403. VOID Hv_Mw_OsdItemHideListWithSingleValue(USHORT16 usItem);
  404. /**
  405. * @brief 隐藏一个item value的列表
  406. * @param[in] usItem item列表中任意一个item的Id
  407. */
  408. VOID Hv_Mw_OsdItemHideValueList(USHORT16 usItem);
  409. #ifdef OSD_CHECK_DISABLE_HIDE_AND_ITEMLIST_AUTO_ALIGN
  410. /**
  411. * @brief 获取一个item自动对齐后在显示列表中的页信息
  412. * @param[in] usItem item的Id
  413. * @param[in] ucCurPage item所在的页数
  414. * @param[in] ucTotalPageNum item所在的列表的总页数
  415. */
  416. VOID Hv_Mw_OsdItemGetPageAlign(USHORT16 usItemId, UCHAR8 *pucCurPage, UCHAR8 *pucTotalPageNum);
  417. /**
  418. * @brief 自动对齐并显示一个item 列表
  419. * @param[in] usItem item列表中任意一个item的Id
  420. */
  421. VOID Hv_Mw_OsdItemShowListAlign(USHORT16 usItemId);
  422. /**
  423. * @brief 自动对齐并隐藏一个item 列表
  424. * @param[in] usItem item列表中任意一个item的Id
  425. */
  426. VOID Hv_Mw_OsdItemHideListAlign(USHORT16 usItemId);
  427. #endif
  428. #ifndef OSD_CHECK_DISABLE_BY_EACH_ITEM
  429. /**
  430. * @brief 根据条件禁用item列表
  431. * @param[in] bCondition 判断条件
  432. * @param[in] pusItemArray item列表
  433. * @param[in] usItemNum item数量
  434. */
  435. VOID Hv_Mw_ItemDisableByCondition(BOOL bCondition, const USHORT16 *pusItemArray, USHORT16 usItemNum);
  436. /**
  437. * @brief 恢复所有禁用Item的状态
  438. */
  439. VOID Hv_Mw_ItemRecoverDisableArray(VOID);
  440. #endif
  441. /**
  442. * @brief 检查item是否被选中
  443. * @param[in] usItemId item list中的任意一个的item的Id
  444. * @param[in] bCheckState HV_TRUE-根据item当前状态寻找,HV_FALSE-根据当前对应userdata值寻找
  445. * @return item是否被选中
  446. */
  447. BOOL Hv_Mw_OsdItemCheckSelect(USHORT16 usItemId, BOOL bCheckState);
  448. /**
  449. * @brief 查找item list中被选中的item
  450. * @param[in] usItemId item list中的任意一个的item的Id
  451. * @param[in] bCheckState HV_TRUE-根据item当前状态寻找,HV_FALSE-根据当前对应userdata值寻找
  452. * @return 当前选择的item的Id
  453. */
  454. USHORT16 Hv_Mw_OsdItemFindSelected(USHORT16 usItemId, BOOL bCheckState);
  455. /**
  456. * @brief 取消选择一个item为当前设置项,将item状态更新为NORMAL/FOCUSING
  457. * @param[in] usItemId 要取消选择的item的Id
  458. */
  459. VOID Hv_Mw_OsdItemUnSelect(USHORT16 usItemId);
  460. /**
  461. * @brief 选择一个item为当前设置项,将item状态更新为SELECT/SELECT_FOCUS
  462. * @param[in] usItemId 要选择的item的Id
  463. * @return 对应的userdata值
  464. */
  465. SHORT16 Hv_Mw_OsdItemSelect(USHORT16 usItemId);
  466. /**
  467. * @brief 根据当前userdata值,更新select列表的选中状态
  468. * @param[in] usItemListStartId select列表的任意item的Id
  469. * @return select的itemid
  470. */
  471. USHORT16 Hv_Mw_OsdItemUpdateSelectList(USHORT16 usItemId);
  472. /**
  473. * @brief 根据当前userdata值,显示select item所在的页
  474. * @param[in] usItem select列表中的任意item的Id
  475. * @return select的itemid
  476. */
  477. USHORT16 Hv_Mw_OsdItemShowSelectedList(USHORT16 usItem);
  478. /**
  479. * @brief 隐藏select item所在的页
  480. * @param[in] usItem select列表中的任意item的Id
  481. */
  482. VOID Hv_Mw_OsdItemHideSelectedList(USHORT16 usItem);
  483. /**
  484. * @brief 获取当前正在聚焦的itemid
  485. * @return 正在聚焦的itemid
  486. */
  487. USHORT16 Hv_Mw_OsdItemGetFocusing(VOID);
  488. #define OSD_GET_FOCUSING Hv_Mw_OsdItemGetFocusing
  489. /**
  490. * @brief 清除当前正在聚焦的item
  491. */
  492. VOID Hv_Mw_OsdItemFocusClear(VOID);
  493. /**
  494. * @brief 根据当前item查找指定的item
  495. * @param[in] usCurItemId 当前itemid
  496. * @param[in] eWhichItem 查找item与当前item的关系
  497. * @return 查找到的item的数据结构
  498. */
  499. OsdItem *Hv_Mw_OsdItemSearchMoveFocus(USHORT16 usCurItemId, OsdMoveFocusingItem eWhichItem);
  500. /**
  501. * @brief 聚焦到指定的item
  502. * @param[in] usItemId 指定聚焦的itemid
  503. * @return 当前聚焦的item id
  504. */
  505. USHORT16 Hv_Mw_OsdItemFocus(USHORT16 usItemId);
  506. /**
  507. * @brief 移动聚焦到子item
  508. * @return 当前聚焦的item id
  509. */
  510. USHORT16 Hv_Mw_OsdItemFocusChild(VOID);
  511. /**
  512. * @brief 移动聚焦到被选中的子item,没有被选中的则聚焦到首个
  513. * @return 当前聚焦的item id
  514. */
  515. USHORT16 Hv_Mw_OsdItemFocusChildSelect(VOID);
  516. /**
  517. * @brief 移动聚焦到被选中的value item
  518. * @return 当前聚焦的item id
  519. */
  520. USHORT16 Hv_Mw_OsdItemFocusValue(VOID);
  521. /**
  522. * @brief 移动聚焦到父item
  523. * @return 当前聚焦的item id
  524. */
  525. USHORT16 Hv_Mw_OsdItemFocusParent(VOID);
  526. /**
  527. * @brief 移动聚焦到下一个item
  528. * @return 当前聚焦的item id
  529. */
  530. USHORT16 Hv_Mw_OsdItemFocusNext(VOID);
  531. /**
  532. * @brief 移动聚焦到上一个item
  533. * @return 当前聚焦的item id
  534. */
  535. USHORT16 Hv_Mw_OsdItemFocusPrev(VOID);
  536. /**
  537. * @brief 移动聚焦到下一个item,并且自动翻页
  538. * @return 当前聚焦的item id
  539. */
  540. USHORT16 Hv_Mw_OsdItemFocusNextAutoFlip(VOID);
  541. /**
  542. * @brief 移动聚焦到上一个item,并且自动翻页
  543. * @return 当前聚焦的item id
  544. */
  545. USHORT16 Hv_Mw_OsdItemFocusPrevAutoFlip(VOID);
  546. /**
  547. * @brief 移动聚焦到下一个item,并且自动翻页(包括child item list
  548. * @return 当前聚焦的item id
  549. */
  550. USHORT16 Hv_Mw_OsdItemFocusNextAutoFlipWithSingleChild(VOID);
  551. /**
  552. * @brief 移动聚焦到上一个item,并且自动翻页(包括child item list
  553. * @return 当前聚焦的item id
  554. */
  555. USHORT16 Hv_Mw_OsdItemFocusPrevAutoFlipWithSingleChild(VOID);
  556. /**
  557. * @brief 移动聚焦到下一个item,并且自动翻页(包括value item list
  558. * @return 当前聚焦的item id
  559. */
  560. USHORT16 Hv_Mw_OsdItemFocusNextAutoFlipWithSingleValue(VOID);
  561. /**
  562. * @brief 移动聚焦到上一个item,并且自动翻页(包括value item list
  563. * @return 当前聚焦的item id
  564. */
  565. USHORT16 Hv_Mw_OsdItemFocusPrevAutoFlipWithSingleValue(VOID);
  566. /**
  567. * @brief 清除当前window的显示绘制链表
  568. * @param[in] pstWindow window结构体指针
  569. */
  570. VOID Hv_Mw_OsdWindowClearShowList(OsdWindow* pstWindow);
  571. /**
  572. * @brief 清除当前window的删除绘制链表
  573. * @param[in] pstWindow window结构体指针
  574. */
  575. VOID Hv_Mw_OsdWindowClearDeleteList(OsdWindow* pstWindow);
  576. /**
  577. * @brief 清除当前window的update绘制信息
  578. * @param[in] pstWindow window结构体指针
  579. */
  580. VOID Hv_Mw_OsdWindowClearUpdateInfo(OsdWindow* pstWindow);
  581. /**
  582. * @brief 判断Window是否为空
  583. * @return HV_TRUE-为空, HV_FALSE-非空
  584. */
  585. BOOL Hv_Mw_OsdWindowCheckIsEmpty(UCHAR8 ucWindowId);
  586. /**
  587. * @brief 初始化一个scene,绘制之前调用
  588. * @param[in] ucSceneId scene的id
  589. */
  590. VOID Hv_Mw_OsdSceneInit(UCHAR8 ucSceneId);
  591. /**
  592. * @brief 显示一个scene,绘制完成最后调用
  593. * @param[in] ucSceneId scene的id
  594. */
  595. VOID Hv_Mw_OsdSceneShow(UCHAR8 ucSceneId);
  596. /**
  597. * @brief 隐藏一个scene
  598. * @param[in] ucSceneId scene的id
  599. */
  600. VOID Hv_Mw_OsdSceneHide(UCHAR8 ucSceneId);
  601. /**
  602. * @brief 刷新一个scene
  603. * @param[in] ucSceneId scene的id
  604. */
  605. VOID Hv_Mw_OsdSceneRefresh(UCHAR8 ucSceneId);
  606. /**
  607. * @brief 刷新所有显示的scene
  608. */
  609. VOID Hv_Mw_OsdRefreshAll(VOID);
  610. /**
  611. * @brief 清除一个scene的信息及数据
  612. * @param[in] ucSceneId scene的id
  613. */
  614. VOID Hv_Mw_OsdSceneClear(UCHAR8 ucSceneId);
  615. /**
  616. * @brief 隐藏清除所有scene的信息及数据
  617. */
  618. VOID Hv_Mw_OsdSceneClearAll(VOID);
  619. /**
  620. * @brief 获取Scene是否正在显示
  621. * @param[in] ucSceneId scene的id
  622. * @return HV_TRUE-显示中, HV_FALSE-未显示
  623. */
  624. BOOL Hv_Mw_OsdSceneIsShowing(UCHAR8 ucSceneId);
  625. /**
  626. * @brief 获取正在显示的scene id
  627. * @param[in] ucSceneIdStart 起始检查的Scene id
  628. * @return UCHAR8 正在显示的首个scene id
  629. */
  630. UCHAR8 Hv_Mw_OsdSceneGetShowing(UCHAR8 ucSceneIdStart);
  631. /**
  632. * @brief 获取是否有OSD正在显示
  633. * @return HV_TRUE-显示中, HV_FALSE-未显示
  634. */
  635. BOOL Hv_Mw_OsdIsShowing(VOID);
  636. #endif