hv_mw_OsdOperation.h 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770
  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
  259. * @param[in] usItemId 当前item的Id
  260. * @return USHORT16 上一个未被禁用的item id
  261. */
  262. USHORT16 Hv_Mw_OsdItemFindPrevEnable(USHORT16 usItemId);
  263. /**
  264. * @brief 寻找下一个未被禁用的item
  265. * @param[in] usItemId 当前item的Id
  266. * @return USHORT16 下一个未被禁用的item id
  267. */
  268. USHORT16 Hv_Mw_OsdItemFindNextEnable(USHORT16 usItemId);
  269. /**
  270. * @brief 设置一个item是否enable
  271. * @param[in] usItemId item的Id
  272. * @param[in] bEnable 正常-HV_TRUE, 禁用-HV_FALSE
  273. */
  274. VOID Hv_Mw_OsdItemSetEnable(USHORT16 usItemId, BOOL bEnable);
  275. /**
  276. * @brief 更新item列表中的所有item的禁用状态
  277. * @param[in] usItem list中的ItemId
  278. * @param[in] bIncludeSelf 是否包含当前item
  279. * @param[in] bEnable 正常-HV_TRUE, 禁用-HV_FALSE
  280. */
  281. VOID Hv_Mw_OsdItemEnableList(USHORT16 usItem, BOOL bIncludeSelf, BOOL bEnable);
  282. /**
  283. * @brief 设置当前页的item最大显示个数
  284. * @param[in] usNum 最大显示个数
  285. */
  286. VOID Hv_Mw_OsdSetItemNumInPage(USHORT16 usNum);
  287. /**
  288. * @brief 获取当前页的item最大显示个数
  289. * @return USHORT16 最大显示个数
  290. */
  291. USHORT16 Hv_Mw_OsdGetItemNumInPage(VOID);
  292. /**
  293. * @brief 获取当前ItemList中正在显示的item个数
  294. * @param[in] usItemId itemList中任意item的Id
  295. * @return USHORT16 显示个数
  296. */
  297. USHORT16 Hv_Mw_OsdItemGetShowingNum(USHORT16 usItemId);
  298. /**
  299. * @brief 获取item所在的list的item总数
  300. * @return USHORT16 item数量
  301. */
  302. USHORT16 Hv_Mw_OsdItemGetListNum(USHORT16 usItemId);
  303. /**
  304. * @brief 获取item的child item总数
  305. * @return USHORT16 child item数量
  306. */
  307. USHORT16 Hv_Mw_OsdItemGetChildNum(USHORT16 usItemId);
  308. /**
  309. * @brief 获取item所在的菜单等级
  310. * @return USHORT16 菜单等级
  311. */
  312. USHORT16 Hv_Mw_OsdItemGetLevel(USHORT16 usItem);
  313. /**
  314. * @brief 获取一个item在显示页中的首个Item
  315. * @param[in] usItem item的Id
  316. * @return 首个Itemitem的Id
  317. */
  318. USHORT16 Hv_Mw_OsdItemGetStartIdInPage(USHORT16 usItem);
  319. /**
  320. * @brief 获取一个item在显示页中的最后一个Item
  321. * @param[in] usItem item的Id
  322. * @return 最后一个Itemitem的Id
  323. */
  324. USHORT16 Hv_Mw_OsdItemGetEndIdInPage(USHORT16 usItem);
  325. /**
  326. * @brief 获取一个item在显示列表中的偏移
  327. * @param[in] usItem item的Id
  328. * @return item的偏移
  329. */
  330. USHORT16 Hv_Mw_OsdItemGetBias(USHORT16 usItem);
  331. /**
  332. * @brief 获取一个item所绑定的userdata id
  333. * @param[in] usItem item的Id
  334. * @return userdata id
  335. */
  336. USHORT16 Hv_Mw_OsdItemGetUserdata(USHORT16 usItemId);
  337. #define OSD_GET_USERDATA Hv_Mw_OsdItemGetUserdata
  338. /**
  339. * @brief 获取一个item所绑定的userdata id的值
  340. * @param[in] usItem item的Id
  341. * @return userdata的值
  342. */
  343. USHORT16 Hv_Mw_OsdItemGetUserdataValue(USHORT16 usItemId);
  344. #define OSD_GET_USERDATA_VALUE Hv_Mw_OsdItemGetUserdataValue
  345. /**
  346. * @brief 获取一个item在显示列表中的页信息
  347. * @param[in] usItem item的Id
  348. * @param[in] ucCurPage item所在的页数
  349. * @param[in] ucTotalPageNum item所在的列表的总页数
  350. */
  351. VOID Hv_Mw_OsdItemGetPage(USHORT16 usItem, UCHAR8 *pucCurPage, UCHAR8 *pucTotalPageNum);
  352. /**
  353. * @brief 获取一个item在显示列表中的页信息(若页面全部disable,则不计入该页)
  354. * @param[in] usItem item的Id
  355. * @param[in] ucCurPage item所在的页数
  356. * @param[in] ucTotalPageNum item所在的列表的总页数
  357. */
  358. VOID Hv_Mw_OsdItemGetPageCheckEnable(USHORT16 usItem, UCHAR8 *pucCurPage, UCHAR8 *pucTotalPageNum);
  359. /**
  360. * @brief 判断两个item是否在同一页
  361. * @param[in] usItem1 item1的Id
  362. * @param[in] usItem2 item2的Id
  363. * @return HV_TRUE-在同一页, HV_FALSE-不在同一页
  364. */
  365. BOOL Hv_Mw_OsdItemIsAtSamePage(USHORT16 usItem1, USHORT16 usItem2);
  366. /**
  367. * @brief 更新并显示一个item列表
  368. * @param[in] usItem item列表中任意一个item的Id
  369. */
  370. VOID Hv_Mw_OsdItemShowList(USHORT16 usItem);
  371. /**
  372. * @brief 更新并显示一个item列表(若当前页面全部disable,则显示下一页)
  373. * @param[in] usItem item列表中任意一个item的Id
  374. * @return USHORT16 首个未被禁用的item id
  375. */
  376. USHORT16 Hv_Mw_OsdItemShowListCheckEnable(USHORT16 usItem);
  377. /**
  378. * @brief 隐藏一个item列表(若当前页面全部disable,则隐藏下一页)
  379. * @param[in] usItem item列表中任意一个item的Id
  380. */
  381. VOID Hv_Mw_OsdItemHideListCheckEnable(USHORT16 usItem);
  382. /**
  383. * @brief 更新并显示一个item列表及每个item的child
  384. * @param[in] usItem item列表中任意一个item的Id
  385. */
  386. VOID Hv_Mw_OsdItemShowListWithSingleChild(USHORT16 usItem);
  387. /**
  388. * @brief 更新并显示一个item列表及每个item的value
  389. * @param[in] usItem item列表中任意一个item的Id
  390. */
  391. VOID Hv_Mw_OsdItemShowListWithSingleValue(USHORT16 usItem);
  392. /**
  393. * @brief 更新并显示一个item value的列表
  394. * @param[in] usItem item列表中任意一个item的Id
  395. */
  396. VOID Hv_Mw_OsdItemShowValueList(USHORT16 usItem);
  397. /**
  398. * @brief 刷新item所在的整个item列表
  399. * @param[in] usItem item列表中任意一个item的Id
  400. */
  401. VOID Hv_Mw_OsdItemRefreshList(USHORT16 usItem);
  402. /**
  403. * @brief 隐藏一个item列表
  404. * @param[in] usItem item列表中任意一个item的Id
  405. */
  406. VOID Hv_Mw_OsdItemHideList(USHORT16 usItem);
  407. /**
  408. * @brief 隐藏item所在的整个item列表
  409. * @param[in] usItem item列表中任意一个item的Id
  410. */
  411. VOID Hv_Mw_OsdItemHideListAll(USHORT16 usItem);
  412. /**
  413. * @brief 隐藏一个item列表及每个item的child
  414. * @param[in] usItem item列表中任意一个item的Id
  415. */
  416. VOID Hv_Mw_OsdItemHideListWithSingleChild(USHORT16 usItem);
  417. /**
  418. * @brief 隐藏一个item列表及每个item的value
  419. * @param[in] usItem item列表中任意一个item的Id
  420. */
  421. VOID Hv_Mw_OsdItemHideListWithSingleValue(USHORT16 usItem);
  422. /**
  423. * @brief 隐藏一个item value的列表
  424. * @param[in] usItem item列表中任意一个item的Id
  425. */
  426. VOID Hv_Mw_OsdItemHideValueList(USHORT16 usItem);
  427. /**
  428. * @brief 获取item的原始位置
  429. * @param[in] usItemId Item的Id
  430. * @param[out] pusX 获取的item X位置
  431. * @param[out] pusY 获取的item Y位置
  432. */
  433. VOID Hv_Mw_OsdItemGetOriPosition(USHORT16 usItemId, USHORT16 *pusX, USHORT16 *pusY);
  434. #ifdef OSD_CHECK_DISABLE_HIDE_AND_ITEMLIST_AUTO_ALIGN
  435. /**
  436. * @brief 获取一个item自动对齐后在显示列表中的页信息
  437. * @param[in] usItem item的Id
  438. * @param[in] ucCurPage item所在的页数
  439. * @param[in] ucTotalPageNum item所在的列表的总页数
  440. */
  441. VOID Hv_Mw_OsdItemGetPageAlign(USHORT16 usItemId, UCHAR8 *pucCurPage, UCHAR8 *pucTotalPageNum);
  442. /**
  443. * @brief 自动对齐并显示一个item 列表
  444. * @param[in] usItem item列表中任意一个item的Id
  445. */
  446. VOID Hv_Mw_OsdItemShowListAlign(USHORT16 usItemId);
  447. /**
  448. * @brief 自动对齐并隐藏一个item 列表
  449. * @param[in] usItem item列表中任意一个item的Id
  450. */
  451. VOID Hv_Mw_OsdItemHideListAlign(USHORT16 usItemId);
  452. #endif
  453. #ifndef OSD_CHECK_DISABLE_BY_EACH_ITEM
  454. /**
  455. * @brief 根据条件禁用item列表
  456. * @param[in] bCondition 判断条件
  457. * @param[in] pusItemArray item列表
  458. * @param[in] usItemNum item数量
  459. */
  460. VOID Hv_Mw_ItemDisableByCondition(BOOL bCondition, const USHORT16 *pusItemArray, USHORT16 usItemNum);
  461. /**
  462. * @brief 恢复所有禁用Item的状态
  463. */
  464. VOID Hv_Mw_ItemRecoverDisableArray(VOID);
  465. #endif
  466. /**
  467. * @brief 检查item是否被选中
  468. * @param[in] usItemId item list中的任意一个的item的Id
  469. * @param[in] bCheckState HV_TRUE-根据item当前状态寻找,HV_FALSE-根据当前对应userdata值寻找
  470. * @return item是否被选中
  471. */
  472. BOOL Hv_Mw_OsdItemCheckSelect(USHORT16 usItemId, BOOL bCheckState);
  473. /**
  474. * @brief 查找item list中被选中的item
  475. * @param[in] usItemId item list中的任意一个的item的Id
  476. * @param[in] bCheckState HV_TRUE-根据item当前状态寻找,HV_FALSE-根据当前对应userdata值寻找
  477. * @return 当前选择的item的Id
  478. */
  479. USHORT16 Hv_Mw_OsdItemFindSelected(USHORT16 usItemId, BOOL bCheckState);
  480. /**
  481. * @brief 取消选择一个item为当前设置项,将item状态更新为NORMAL/FOCUSING
  482. * @param[in] usItemId 要取消选择的item的Id
  483. */
  484. VOID Hv_Mw_OsdItemUnSelect(USHORT16 usItemId);
  485. /**
  486. * @brief 选择一个item为当前设置项,将item状态更新为SELECT/SELECT_FOCUS
  487. * @param[in] usItemId 要选择的item的Id
  488. * @return 对应的userdata值
  489. */
  490. SHORT16 Hv_Mw_OsdItemSelect(USHORT16 usItemId);
  491. /**
  492. * @brief 根据当前userdata值,更新select列表的选中状态
  493. * @param[in] usItemListStartId select列表的任意item的Id
  494. * @return select的itemid
  495. */
  496. USHORT16 Hv_Mw_OsdItemUpdateSelectList(USHORT16 usItemId);
  497. /**
  498. * @brief 根据当前userdata值,显示select item所在的页
  499. * @param[in] usItem select列表中的任意item的Id
  500. * @return select的itemid
  501. */
  502. USHORT16 Hv_Mw_OsdItemShowSelectedList(USHORT16 usItem);
  503. /**
  504. * @brief 隐藏select item所在的页
  505. * @param[in] usItem select列表中的任意item的Id
  506. */
  507. VOID Hv_Mw_OsdItemHideSelectedList(USHORT16 usItem);
  508. /**
  509. * @brief 获取当前正在聚焦的item的id
  510. * @return 正在聚焦的item的id
  511. */
  512. USHORT16 Hv_Mw_OsdItemGetFocusing(VOID);
  513. #define OSD_GET_FOCUSING Hv_Mw_OsdItemGetFocusing
  514. /**
  515. * @brief 清除当前正在聚焦的item
  516. */
  517. VOID Hv_Mw_OsdItemFocusClear(VOID);
  518. /**
  519. * @brief 根据当前item查找指定的item
  520. * @param[in] usCurItemId 当前item的id
  521. * @param[in] eWhichItem 查找item与当前item的关系
  522. * @return 查找到的item的数据结构
  523. */
  524. OsdItem *Hv_Mw_OsdItemSearchMoveFocus(USHORT16 usCurItemId, OsdMoveFocusingItem eWhichItem);
  525. /**
  526. * @brief 聚焦到指定的item
  527. * @param[in] usItemId 指定聚焦的item的id
  528. * @return 当前聚焦的item id
  529. */
  530. USHORT16 Hv_Mw_OsdItemFocus(USHORT16 usItemId);
  531. /**
  532. * @brief 移动聚焦到子item
  533. * @return 当前聚焦的item id
  534. */
  535. USHORT16 Hv_Mw_OsdItemFocusChild(VOID);
  536. /**
  537. * @brief 移动聚焦到被选中的子item,没有被选中的则聚焦到首个
  538. * @return 当前聚焦的item id
  539. */
  540. USHORT16 Hv_Mw_OsdItemFocusChildSelect(VOID);
  541. /**
  542. * @brief 移动聚焦到被选中的value item
  543. * @return 当前聚焦的item id
  544. */
  545. USHORT16 Hv_Mw_OsdItemFocusValue(VOID);
  546. /**
  547. * @brief 移动聚焦到父item
  548. * @return 当前聚焦的item id
  549. */
  550. USHORT16 Hv_Mw_OsdItemFocusParent(VOID);
  551. /**
  552. * @brief 移动聚焦到下一个item
  553. * @return 当前聚焦的item id
  554. */
  555. USHORT16 Hv_Mw_OsdItemFocusNext(VOID);
  556. /**
  557. * @brief 移动聚焦到上一个item
  558. * @return 当前聚焦的item id
  559. */
  560. USHORT16 Hv_Mw_OsdItemFocusPrev(VOID);
  561. /**
  562. * @brief 移动聚焦到下一个item,并且自动翻页
  563. * @return 当前聚焦的item id
  564. */
  565. USHORT16 Hv_Mw_OsdItemFocusNextAutoFlip(VOID);
  566. /**
  567. * @brief 移动聚焦到上一个item,并且自动翻页
  568. * @return 当前聚焦的item id
  569. */
  570. USHORT16 Hv_Mw_OsdItemFocusPrevAutoFlip(VOID);
  571. /**
  572. * @brief 移动聚焦到下一个item,并且自动翻页(包括child item list)
  573. * @return 当前聚焦的item id
  574. */
  575. USHORT16 Hv_Mw_OsdItemFocusNextAutoFlipWithSingleChild(VOID);
  576. /**
  577. * @brief 移动聚焦到上一个item,并且自动翻页(包括child item list)
  578. * @return 当前聚焦的item id
  579. */
  580. USHORT16 Hv_Mw_OsdItemFocusPrevAutoFlipWithSingleChild(VOID);
  581. /**
  582. * @brief 移动聚焦到下一个item,并且自动翻页(包括value item list)
  583. * @return 当前聚焦的item id
  584. */
  585. USHORT16 Hv_Mw_OsdItemFocusNextAutoFlipWithSingleValue(VOID);
  586. /**
  587. * @brief 移动聚焦到上一个item,并且自动翻页(包括value item list)
  588. * @return 当前聚焦的item id
  589. */
  590. USHORT16 Hv_Mw_OsdItemFocusPrevAutoFlipWithSingleValue(VOID);
  591. /**
  592. * @brief 清除当前window的显示绘制链表
  593. * @param[in] pstWindow window结构体指针
  594. */
  595. VOID Hv_Mw_OsdWindowClearShowList(OsdWindow* pstWindow);
  596. /**
  597. * @brief 清除当前window的删除绘制链表
  598. * @param[in] pstWindow window结构体指针
  599. */
  600. VOID Hv_Mw_OsdWindowClearDeleteList(OsdWindow* pstWindow);
  601. /**
  602. * @brief 清除当前window的update绘制信息
  603. * @param[in] pstWindow window结构体指针
  604. */
  605. VOID Hv_Mw_OsdWindowClearUpdateInfo(OsdWindow* pstWindow);
  606. /**
  607. * @brief 判断Window是否为空
  608. * @return HV_TRUE-为空, HV_FALSE-非空
  609. */
  610. BOOL Hv_Mw_OsdWindowCheckIsEmpty(UCHAR8 ucWindowId);
  611. /**
  612. * @brief 初始化一个scene,绘制之前调用
  613. * @param[in] ucSceneId scene的id
  614. */
  615. VOID Hv_Mw_OsdSceneInit(UCHAR8 ucSceneId);
  616. /**
  617. * @brief 显示一个scene,绘制完成最后调用
  618. * @param[in] ucSceneId scene的id
  619. */
  620. VOID Hv_Mw_OsdSceneShow(UCHAR8 ucSceneId);
  621. /**
  622. * @brief 隐藏一个scene
  623. * @param[in] ucSceneId scene的id
  624. */
  625. VOID Hv_Mw_OsdSceneHide(UCHAR8 ucSceneId);
  626. /**
  627. * @brief 刷新一个scene
  628. * @param[in] ucSceneId scene的id
  629. */
  630. VOID Hv_Mw_OsdSceneRefresh(UCHAR8 ucSceneId);
  631. /**
  632. * @brief 刷新所有显示的scene
  633. */
  634. VOID Hv_Mw_OsdRefreshAll(VOID);
  635. /**
  636. * @brief 清除一个scene的信息及数据
  637. * @param[in] ucSceneId scene的id
  638. */
  639. VOID Hv_Mw_OsdSceneClear(UCHAR8 ucSceneId);
  640. /**
  641. * @brief 隐藏清除所有scene的信息及数据
  642. */
  643. VOID Hv_Mw_OsdSceneClearAll(VOID);
  644. /**
  645. * @brief 获取Scene是否正在显示
  646. * @param[in] ucSceneId scene的id
  647. * @return HV_TRUE-显示中, HV_FALSE-未显示
  648. */
  649. BOOL Hv_Mw_OsdSceneIsShowing(UCHAR8 ucSceneId);
  650. /**
  651. * @brief 获取正在显示的scene id
  652. * @param[in] ucSceneIdStart 起始检查的Scene id
  653. * @return UCHAR8 正在显示的首个scene id
  654. */
  655. UCHAR8 Hv_Mw_OsdSceneGetShowing(UCHAR8 ucSceneIdStart);
  656. /**
  657. * @brief 获取是否有OSD正在显示
  658. * @return HV_TRUE-显示中, HV_FALSE-未显示
  659. */
  660. BOOL Hv_Mw_OsdIsShowing(VOID);
  661. #endif