/*===========================================================
 * Copyright (c)      Realtek Semiconductor Corporation, 2005
 * All rights reserved.
 * ========================================================== */

/*==================== File Description ===================== */
/**
 * @file
 * 	This file is a osd object declaration file.
 *
 * @author 	$Author: hillwang $
 * @date 	$Date: 2006-08-07 16:36:23 +0800 (?Ÿæ?ä¸€, 07 ?«æ? 2006) $
 * @version	$Revision: 1155 $
 */

/**
 * @addtogroup osd
 * @{
 */

#ifndef _OSDOBJECTDEF_H
#define _OSDOBJECTDEF_H
/*===================== Module Dependency  ================== */
#include "Core\Header\maindef.h"
#if (_CUSTOMER_TYPE == _SKYWORTH)
#include "Customer\Header\skyworth\osdobjectdef.h"
#endif
#include "Core\Header\global.h"

/*========================== Types ========================== */
typedef enum{
	_NONE_TYPE,						// 0
	_MENU_TYPE,
	_BRACKET_TYPE,
	_BRACKET1_TYPE,
	_BRACKET2_TYPE,
	_SLIDER_TYPE,						// 5
	_SLIDER1_TYPE,						
	_IMMEDIATE_TYPE,
	_CONFIRM_TYPE,
	_SELECTDIALOG_TYPE,
	_SELECTITEM_TYPE,					// 10
	_MESSAGEDIALOG_TYPE,				
	_PASSWORDDIALOG_TYPE,
	_VCHIPDIALOG_TYPE,
	_VCHIPMULTISELECT_TYPE,			// 14
	//----------------svA---------------------
	_BRACKET_TIMER_TYPE,
	_MENU1_TYPE,
	_IMMEDIATE1_TYPE,                                     //17  When Up Down immediate adjust ,add by xyw   
	
	_BRACKET3_TYPE,				//no left/right bracket
	_SLIDER2_TYPE,						
	_SLIDER3_TYPE,						
	//--------------------------------------------
}  ItemType;

typedef struct {
	UINT16	usXStart;
	UINT16	usYStart;
	UINT16	usXEnd;
	UINT16	usYEnd;
} ItemPosition;

typedef struct {
	UINT16	usWidth;
	UINT16	usHeight;
}ItemSize;

//
typedef struct {
	UINT8	ucWindowID;
	ItemPosition	stPosition;
	UINT8	ucCtrlRegAddr0[3];
	UINT8	ucCtrlRegAddr2[3];
}WindowStyle;

typedef struct {
	UINT8*	pIcon; 	// For Skyworth
	UINT8*	pString;
	UINT8	ucType;
	UINT8	ucActiveColor;
	UINT8	ucUnActiveColor;
	void*	pStruct;
} ItemObject;

typedef struct {
	void		(*pHandlerFunction)();
}ItemImmediate;

typedef struct {
	UINT8	ucItemCount;
	UINT8*	pTitleString;
	UINT8*	pLabelString;
	UINT8	ucRow;
	UINT8	ucCol;
	WindowStyle*	pBackGroundWindow;
	WindowStyle* pForegroundWindow;
	WindowStyle* pMoveWindow;
	ItemObject*	pItemList;
	void		(*pHandlerFunction)(UINT8);
	UINT8	(*pGetFunction)();
	void		(*pInitializeFunction)();
} ItemSelectDialog;

typedef struct {
	UINT8	ucRow;
	UINT8	ucCol;
	UINT8	ucValue;
} ItemSelectStruct;

typedef struct {
	UINT8*	pIcon;
	UINT8*	pString;
	UINT8	ucItemCount;
	UINT8	ucStartRow;
	//UINT8	ucMoveByRow;//20070511
	UINT8	ucStartCol;//20070511
	UINT16	usItemWidth;
	UINT16	usSpaceInItem;
	UINT16	usSpaceInSubMenu;
	UINT8	ucActiveColor;
	UINT8	ucUnActiveColor;
	ItemSize stSize;
	ItemObject*	pItemList;
} MenuItem;

typedef struct {
	UINT8	ucItemCount;
	UINT8	ucStartRow;
	UINT8	ucStartCol;
	UINT16	usPreBnkLength;
	UINT8*	pTitleString;
	MenuItem* pMenuItem;

	WindowStyle*	pBackGroundWindow;
	WindowStyle*	pForegroundWindow;

	WindowStyle*	stMainMenuMoveWindow;
	WindowStyle*	stSubMenuMoveWindow;
	WindowStyle*	stSubItemMoveWindow;
	void  (*pInitializeFunction)();
} MenuItemSet;

typedef struct {
	UINT8*	pLableString;
	UINT8	ucControl;				// bit0: specify multi-language
	void		(*pHandlerFunction)();
	UINT8	(*pGetFunction)();
} ItemBracket;

typedef struct {
	UINT8* 	(*pGetStringFunction)();
	UINT8	ucControl;				// bit0: specify multi-language
	void		(*pHandlerFunction)(UINT8);
	UINT8	(*pGetFunction)();
} ItemBracket1;

typedef struct {
	UINT8*	pLableString;
	UINT8	ucControl;				// bit0: specify multi-language
	void		(*pHandlerFunction)(UINT8 message);
	UINT8	(*pGetFunction)();
	UINT8 	bActive;
} ItemBracket2;

//no left/right bracket
typedef struct {
	UINT8* 	(*pGetStringFunction)();
	UINT8	ucControl;				// bit0: specify multi-language
	void		(*pHandlerFunction)(UINT8);
	UINT8	(*pGetFunction)();
} ItemBracket3;

typedef struct {
	UINT8	ucType;
	UINT8	ucLength;
	UINT8	ucMax;
	UINT8	ucMin;
	UINT8	ucColor;
	UINT8	ucNumColor;
	void		(*pHandlerFunction)(UINT8);
	UINT8	(*pGetFunction)();
} ItemSlider;

typedef struct {
	UINT8	ucType;
	UINT8	ucLength;
	UINT8	ucMax;
	UINT8	ucMin;
	UINT8	ucColor;
	UINT8	ucNumColor;
	void		(*pHandlerFunction)(UINT8);
	UINT8	(*pGetFunction)();
} ItemSlider1;
typedef struct {
	UINT8	ucType;
	UINT8	ucLength;
	UINT8	ucMax;
	UINT8	ucMin;
	UINT8	ucColor;
	UINT8	ucNumColor;
	void		(*pHandlerFunction)(UINT8);
	UINT8	(*pGetFunction)();
} ItemSlider2;

typedef struct {
	UINT8*	pTitleString;
	UINT8*	pNoteString;
	WindowStyle*	pBackGroundWindow;
	WindowStyle*	pForegroundWindow;
	WindowStyle* pMoveWindow;
	UINT8	ucFlag;	// bit0: with/without show note string
} ItemMessageDialog;

//

typedef struct{
	MenuItemSet*	pMenuItemSet;
	UINT8			ucMainOrder;
//	UINT8			ucStartCol;
} MainMenuInfo;

typedef struct{
//	MenuItem*	pMenuItem;
	MenuItemSet*	pMenuItemSet;
	UINT8			ucMainOrder;
//	UINT8			ucSubOrder;
	ItemPosition		stItemPosition;
} SubMenuInfo;

typedef struct {
	UINT8*	pTitleString;
	MenuItemSet* pMenuItemSet;
	WindowStyle*	pBackGroundWindow;
	WindowStyle*	pForegroundWindow;
	WindowStyle* pMoveWindow;
	void		(*pHandlerFunction)(UINT8);
	UINT8	(*pGetFunction)();
	void  	(*pInitializeFunction)();
} VChipDialog;

typedef struct {
	UINT8	ucItemCount;
	UINT8	ucControlState;  // bit0~7 ->0: unused 1:usde
} MultiSelectItem;

typedef struct {
	UINT8*	pLableString;
	UINT8*	pNoteString;
	UINT8	ucItemCount;
	UINT8	ucLabelInterval;
	UINT8	ucItemInterval;
	MultiSelectItem* pMultiSelectItem;
	WindowStyle*	pBackGroundWindow;
	WindowStyle*	pForegroundWindow;
	WindowStyle* pMoveWindow;
	void		(*pHandlerFunction)(UINT8);
	UINT8	(*pGetFunction)();
	void  	(*pInitializeFunction)();
} VChipSelectItemSet;

/*======================== Definitions ====================== */


typedef struct {
	UINT8 *	pIconLine0;
	UINT8 *	pIconLine1;
}MainIcon;

typedef struct {
	UINT8	ucTotalIcon;
	UINT8	ucRowStart;
	UINT8	ucColStart;
	UINT8	ucMoveRow;
	MainIcon *	pMainIconList;
}MainIconPage;

typedef struct {
	UINT8	ucRowStart;
	UINT8	ucColStart;
	UINT8	ucTotalItem;
	UINT8	ucMoveRow;
	MainIconPage *	MainIconPage;
}MainIconSet;

#endif // #ifndef _OSDOBJECTDEF_H

/**
 *
 * @}
 */

