/**
 * @file hv_cal_OsdLine.h
 * @brief Osd Cal layer line interface.
 * @verbatim
 * ==============================================================================
 *                        ##### How to use this driver #####
 * ==============================================================================
 * @endverbatim
 *
 * @author HiView SoC Software Team
 * @version 0.0.1
 * @date 2022-08-22
 */


#ifndef _HV_CAL_OSDLINE_H
#define _HV_CAL_OSDLINE_H

/**
 * @brief set current line
 * @param[in] line index
 * @return VOID without return
 */
VOID Hv_Cal_OsdLine_SetCurrentLine(OsdLinePhyId enIndex);

/**
 * @brief set line enable/disable status
 * @param[in] enType highlight or non-highlight
 * @param[in] bEnable enable or disable
 * @return VOID without return
 */
VOID Hv_Cal_OsdLine_SetEnable(OsdRegionType enType, BOOL bEnable);

/**
 * @brief set line position
 * @param[in] usX X-axis value
 * @param[in] usY Y-axis value
 * @return VOID without return
 */
VOID Hv_Cal_OsdLine_SetPos(USHORT16 usX, USHORT16 usY);

/**
 * @brief set line number
 * @param[in] ucHnum line number in H direction
 * @param[in] ucVnum line number in V direction
 * @return VOID without return
 */
VOID Hv_Cal_OsdLine_SetLineNum(UCHAR8 ucHnum, UCHAR8 ucVnum);

/**
 * @brief set line size
 * @param[in] usWidth width of line
 * @param[in] usHeight height of line
 * @return VOID without return
 */
VOID Hv_Cal_OsdLine_SetLineSize(USHORT16 usWidth, USHORT16 usHeight);

/**
 * @brief set space between rect
 * @param[in] ucHSpace space in H direction
 * @param[in] ucVSpace space in V direction
 * @return VOID without return
 */
VOID Hv_Cal_OsdLine_SetSpace(UCHAR8 ucHSpace, UCHAR8 ucVSpace);

/**
 * @brief set background enable/disable status
 * @param[in] enType highlight or non-highlight
 * @param[in] bEnable enable or disable
 * @return VOID without return
 */
VOID Hv_Cal_OsdLine_SetLineBackgroundEnable(OsdRegionType enType, BOOL bEnable);

/**
 * @brief set background color
 * @param[in] enType highlight or non-highlight
 * @param[in] usBgColor background color in RGB565 format
 * @return VOID without return
 */
VOID Hv_Cal_OsdLine_SetLineBackgroundColor(OsdRegionType enType, USHORT16 usBgColor);

/**
 * @brief set border color
 * @param[in] enType highlight or non-highlight
 * @param[in] usBorderColor border color in RGB565 format
 * @return VOID without return
 */
VOID Hv_Cal_OsdLine_SetLineBorderColor(OsdRegionType enType, USHORT16 usBorderColor);

/**
 * @brief highlight selection in H direction
 * @param[in] ucHStartNum start count of rect
 * @param[in] ucHEndNum end count of rect
 * @return VOID without return
 */
VOID Hv_Cal_OsdLine_SetHighlightHRange(UCHAR8 ucHStartNum, UCHAR8 ucHEndNum);

/**
 * @brief highlight selection in V direction
 * @param[in] ucVStartNum start count of rect
 * @param[in] ucVEndNum end count of rect
 * @return VOID without return
 */
VOID Hv_Cal_OsdLine_SetHighlightVRange(UCHAR8 ucVStartNum, UCHAR8 ucVEndNum);

/**
 * @brief set line highlight mode
 * @param[in] enMode highlight mode selection OSD_HIGHLIGHT_H_AND_V: H & V both match
 *                                            OSD_HIGHLIGHT_H_OR_V: H or V match
 *                                            OSD_HIGHLIGHT_H_ONLY: only match H
 *                                            OSD_HIGHLIGHT_V_ONLY: only match V
 * @return VOID without return
 */
VOID Hv_Cal_OsdLine_SetHighlightMode(OsdHighLightMode enMode);

/**
 * @brief highlight mode in H direction
 * @param[in] enMode highlight mode ALL_MATCH: match range
 *                                  BIT0_MATCH: match lowest bit
 * @return VOID without return
 */
VOID Hv_Cal_OsdLine_SetHighlightHMode(OsdHighLightAxisMode enHMode);

/**
 * @brief highlight mode in V direction
 * @param[in] enMode highlight mode ALL_MATCH: match range
 *                                  BIT0_MATCH: match lowest bit
 * @return VOID without return
 */
VOID Hv_Cal_OsdLine_SetHighlightVMode(OsdHighLightAxisMode enVMode);

#endif
