/*==============================================================================
	Copyright (C) 2008 IT Access.,Co.Ltd. All Rights Reserved.
	
	This software is the confidential and proprietary information 
	of IT Access.,Co.Ltd.
	
	Note:

==============================================================================*/

#ifndef	_INC_GEAL_TYPES_H
#define	_INC_GEAL_TYPES_H

#ifdef __cplusplus
extern "C" {		/* Assume C declarations for C++ */
#endif				/* __cplusplus */

/*==============================================================================
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> INCLUDE. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
==============================================================================*/
#include "GealCommon.h"

/*==============================================================================
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> CONFIGURATION. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
==============================================================================*/

/*==============================================================================
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> TYPE OF SYSTEM. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
==============================================================================*/

/* The structure of configration in GEAL. */
typedef struct _GE_CONFIG
{
	GE_INT32		lwVersion;		/* Resource version. */

	GE_SIZE			sTargetSize;	/* Target resolution. */
	GE_UINT16		wMsgQueCount;	/* Message queue count. */
	GE_UINT16		wTimerCount;	/* Timer count. */
	GE_UINT16		wDynmcWgtCount;	/* Dynamic widget count. */
	GE_UINT16		wTargetCount;	/* Target count. ( 1 < wTargetCount < GE_MAX_TARGET_COUNT); */

	GE_UINT16		wMaxBitmapID;	/* Maximum bitmap id. */
	GE_UINT16		wMaxFontID;		/* Maximum font id. */
	GE_UINT16		wMaxStringID;	/* Maximum string id. */
	GE_UINT16		wMaxLanguageID;	/* Maximum language id. */
	GE_UINT16		wMaxEventID;	/* Maximum event id. */
	GE_UINT16		wMaxBorderID;	/* Maximum border id. */

	GE_UINT16		wMaxStageID;	/* Maximum stage id. */
	GE_UINT16		wMaxLayerID;	/* Maximum layer id. */

	GE_UINT16		wMaxWRectID;	/* Maximum widget rect id. */
	GE_UINT16		wMaxWTextID;	/* Maximum widget text id. */
	GE_UINT16		wMaxWButtonID;	/* Maximum widget button id. */
	GE_UINT16		wMaxWPictureID;	/* Maximum widget picture id. */
	GE_UINT16		wMaxWGaugeID;	/* Maximum widget gauge id. */
	GE_UINT16		wMaxWMenuID;	/* Maximum widget menu id. */
	GE_UINT16		wMaxWListID;	/* Maximum widget list id. */
	GE_UINT16		wMaxWFigID;		/* Maximum widget figure id. */

} GE_CONFIG;

/* The type of message. */
typedef enum
{
	eGEMSG_MOUSEDOWN	= 0,		/* wParam	: 0 (unused.)
									   dwParam  : MSB 16 bit is y position.
									              LSB 16 bit is x position. */
	eGEMSG_MOUSEUP,					/* wParam	: 0 (unused.)
									   dwParam  : MSB 16 bit is y position.
									              LSB 16 bit is x position. */
	eGEMSG_TIMER_UPDATE,			/* wParam	: TimerID */
	eGEMSG_BUTTON_DOWN,				/* wParam	: Widget id. (GE_WGTID) */
	eGEMSG_BUTTON_CLICK,			/* wParam	: Widget id. (GE_WGTID) */
	eGEMSG_LISTITEM_DOWN,			/* wParam	: Widget id. (GE_WGTID)
									   dwParam  : MSB 16 bit is row number.
									              LSB 16 bit is item number. */
	eGEMSG_LISTBAR_DOWN,			/* wParam	: Widget id. (GE_WGTID) 
									   dwParam  : MSB 16 bit is reserve.
									              LSB 16 bit is scroll bar commands. */
	eGEMSG_MENUITEM_DOWN,			/* wParam	: Widget id. (GE_WGTID)
									   dwParam	: The number of menu item. */
	eGEMSG_USEREVENT,				/* wParam	: User event id . (eGE_EVENT_ID) */
	eGEMSG_CUSTOM,

} eGE_MSG;

/* The structure of message */
typedef struct _GE_MSG
{
	GE_UINT16				wMsg;					/* eGE_MSG */
	GE_UINT16				wParam;
	GE_UINT32				dwParam;
} GE_MSG;

/* The type of semaphore */
typedef enum
{
	eGESIG_MSGQUE,
} eGE_SIGNAL;

/* Scroll Bar Commands */
#define GE_LISTBAR_LINEUP		(0)
#define GE_LISTBAR_LINEDOWN		(1)
#define GE_LISTBAR_PAGEUP		(2)
#define GE_LISTBAR_PAGEDOWN		(3)

/*==============================================================================
 >>>>>>>>>>>>>>>>>>>>>>>>>>> TYPE OF COLOR & BITMAP. <<<<<<<<<<<<<<<<<<<<<<<<<<<
==============================================================================*/

/* The type of color space. */
typedef enum
{
	eGECS_INVALID,
	eGECS_MONO,
	eGECS_CLUT4,
	eGECS_CLUT8,
	eGECS_RGB15,
	eGECS_RGB16,
	eGECS_RGB24,
	eGECS_RGB32,
} eGE_COLOR_SPACE;

/* The structure of bitmap in GEAL. */
typedef struct _GE_BITMAP
{
	GE_UINT16				wWidth;					/* Width of bitmap */
	GE_UINT16				wHeight;				/* Height of bitmap */
	GE_UINT8				cFlag;					/* Flag. (GEBMP_...) */
	GE_UINT8				cMode;					/* Data mode. (eGE_COLOR_SPACE) */
	GE_UINT16				wPalCount;				/* Count of used palette. */
	GE_INT32				lwLinebyte;				/* Number of bytes per line. */
	const GE_COLOR*			pPalette;				/* Palette data. */
	const GE_VOID*			pPxls;					/* Pixel data */
	GE_INT32				lwCustom;				/* Custom parameter */
} GE_BITMAP;

/* The definition of cFlag. */
#define GEBMP_USE_TRANS_COLOR		(0x01)
#define GEBMP_USE_ALPHA_COLOR		(0x02)
#define GEBMP_RESERVE				(0x0C)
#define GEBMP_USER_CUSTOM			(0xF0)

/*==============================================================================
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> TYPE OF FONT. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
==============================================================================*/

/* The structure of GEAL string data with font id. */
typedef struct _GE_FONT_STRING
{
	GE_ID					eFontID;				/* Font id. (eGE_FONT_ID) */
	GE_UINT16				wWidth;					/* Width of String in pixels. (unused.)*/
	const GE_TCHAR*			ptcData;				/* Array of characters zero terminated */
} GE_FONT_STRING;

/* The structure of GEAL string in all language. */
typedef struct _GE_MULTI_STRING
{
	const GE_FONT_STRING**	sFontStr;
} GE_MULTI_STRING;

typedef struct _GE_USERFONT
{
	GE_UINT32				dwVenderID;
	GE_UINT32				dwProductID;
	GE_UINT32				dwSerialNo;
	GE_VOID*				pvParam;
} GE_USERFONT;

typedef enum
{
	eGEFNT_INVALID,
	eGEFNT_PITCH_FIXED,
	eGEFNT_PITCH_ADAPT,
	eGEFNT_PROPOTIONAL,
	eGEFNT_USER_CUSTOM
} eGE_FONT_FORMAT;

/* The structure of font in GEAL*/
typedef struct _GE_FONT
{
	GE_UINT16				wWidth;					/* Width per character. */
	GE_UINT16				wHeight;				/* Height per character. */
	GE_INT16				eFormat;				/* Font Type. (eGE_FONT_FORMAT) */
	GE_INT16				wDepth;					/* Bit depth. only 1,4,8. */
	GE_UINT32				dwCount;				/* Total count of character. */
	const GE_UINT8*			pBits;					/* Character bitmaps. */
	const GE_UNICODE*		paUniConv;				/* Unicode convert table. */
	const GE_UINT8*			paHalfFlag;				/* Half flag table. */
	const GE_ABC*			paABC;					/* ABC table. */
	const GE_USERFONT*		psUserFont;
	GE_INT32				lwCustom;				/* Custom parameter */
} GE_FONT;

/*==============================================================================
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> TYPE OF BORDER. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
==============================================================================*/

/* The type of border type. */
typedef enum
{
	eGEBODR_INVALID,
	eGEBODR_SINGLE,
	eGEBODR_DOUBLE,
	eGEBODR_COUNT
} eGE_BORDER_TYPE;

/* The structure of border in GEAL. */
typedef struct _GE_BORDER
{
	GE_INT16				eType;					/* Border type. (eGE_BORDER_TYPE) */
	GE_INT16				nWidth;					/* Width of border line. */
	GE_COLOR				crColor[4];
} GE_BORDER;

/*==============================================================================
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> TYPE OF WIDGET. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
==============================================================================*/

/* Widget ID & Macros. */
typedef unsigned short	GE_WGTID;
#define WGTID_TYPE(eWgtID)			((eWgtID) >> 12)				/* eGE_WIDGET_TYPE */
#define WGTID_INDEX(eWgtID)			((eWgtID) & 0x0FFF)
#define WGTID_SET(eType, nIndex)	(((eType) << 12) | (nIndex))	/* eGE_WIDGET_TYPE */

#define WGTID_BEGIN_RECT			(eGEWGT_RECT    << 12)
#define WGTID_BEGIN_TEXT			(eGEWGT_TEXT    << 12)
#define WGTID_BEGIN_BUTTON			(eGEWGT_BUTTON  << 12)
#define WGTID_BEGIN_PICTURE			(eGEWGT_PICTURE << 12)
#define WGTID_BEGIN_GAUGE			(eGEWGT_GAUGE   << 12)
#define WGTID_BEGIN_MENU			(eGEWGT_MENU    << 12)
#define WGTID_BEGIN_LIST			(eGEWGT_LIST    << 12)
#define WGTID_BEGIN_FIGURE			(eGEWGT_FIGURE  << 12)

/* The type of widget */
typedef enum
{
	eGEWGT_INVALID			= 0 ,
	eGEWGT_BASE					,
	eGEWGT_RECT					,
	eGEWGT_TEXT					,
	eGEWGT_BUTTON				,
	eGEWGT_PICTURE				,
	eGEWGT_GAUGE				,
	eGEWGT_MENU					,
	eGEWGT_LIST					,
	eGEWGT_FIGURE				,
	eGEWGT_COUNT
} eGE_WIDGET_TYPE;

/*----------------------------------------------
	BASE Widget.
----------------------------------------------*/
typedef struct _GE_WGTBASE
{
	GE_WGTID				eWgtID;					/* Widget id. (eGE_WIDGET_ID) */
	GE_INT16				nUserData;				/* User data. */
	GE_RECT					sRect;					/* region. */
	GE_INT16				nReserved;				/* Reserved. */
	GE_UINT16				wFlag;					/* Flag of widget. (GEWGT_ ... )*/
	GE_INT32				lwValue;				/* Value. */
	const struct _GE_LAYER*	psLayer;				/* Parent layer. */
} GE_WGTBASE;

/* The definition of wFlag. */
#define GEWGT_DISABLE		(0x0001 << 0)			/* Unselectable */
#define GEWGT_UNVISIBLE		(0x0001 << 1)			/* Unvisible */
#define GEWGT_HOLDDYNMC		(0x0001 << 2)			/* Hold widget data in Dyanmic Widget Mode */
#define GEWGT_HOLDTEXT		(0x0001 << 8)			/* Hold dynamic text data by memory allocation
													   in WGTTEXT and WGTLIST. */
#define GEWGT_AUTOTURNTEXT	(0x0001 << 9)			/* Auto turn text in WGTTEXT. */
#define GEWGT_BOUND_TO		(0x0001 << 15)			/* Widget is bound to the other widget .
													   i.e. WGTMENU, WGTBUTTON. */

/*----------------------------------------------
	RECT Widget.
----------------------------------------------*/
typedef struct _GE_WGTRECT
{
	GE_WGTBASE				sBase;					/* Widget common data. */
	GE_COLOR				crColor;				/* Background color. */
	GE_UINT8				cFill;					/* Fill. */
	GE_UINT8				cRound;					/* Round. */
	GE_ID					eBorderID;				/* Border id. (eGE_BORDER_ID) */
} GE_WGTRECT;

/*----------------------------------------------
	TEXT Widget.
----------------------------------------------*/
typedef struct _GE_WGTTEXT
{
	GE_WGTBASE				sBase;					/* Widget common data. */
	GE_COLOR				crBgColor;				/* Background color. */
	GE_COLOR				crFgColor;				/* Foreground color. */
	GE_POINT				sTextOffset;			/* Text ofset. */
	GE_INT8					eTextLocate;			/* Location. (eGE_LOCATE) */
	GE_INT8					eTextType;				/* Text type. (eGE_WGTTEXT_TYPE) */
	GE_ID					eBorderID;				/* Border id. (eGE_BORDER_ID) */
	struct 	{
		GE_INT32			lwValue;				/* Invidivisual parameter. */
		const GE_VOID*		pParam;					/* Invidivisual parameter. */
	} sParam;
} GE_WGTTEXT;

/* The type of eTextType */
typedef enum
{
	eGEWTXT_INVALID,
	eGEWTXT_STRING,
	eGEWTXT_NUMBER,
	eGEWTXT_MULTI,
	eGEWTXT_DYNAMIC,
} eGE_WGTTEXT_TYPE;

/*----------------------------------------------
	BUTTON Widget.
----------------------------------------------*/
typedef struct _GE_WGTBTN
{
	GE_WGTBASE				sBase;					/* Widget common data. */
	GE_COLOR				crNrmlColor;			/* Normal color. */
	GE_COLOR				crActvColor;			/* Active color. */
	GE_COLOR				crDisbColor;			/* Disable color. */
	GE_COLOR				crNrmlTextColor;		/* Normal text color. */
	GE_COLOR				crActvTextColor;		/* Active text color. */
	GE_COLOR				crDisbTextColor;		/* Disable text color. */
	GE_ID					eNrmlBorderID;			/* Normal border id. (eGE_BORDER_ID) */
	GE_ID					eActvBorderID;			/* Active border id. (eGE_BORDER_ID) */
	GE_ID					eDisbBorderID;			/* Disable border id. (eGE_BORDER_ID) */
	GE_INT16				nReserved;				/* Reserved. */
	GE_ID					eStringID;				/* String id. (eGE_STRING_ID)*/
	GE_INT16				eTextLocate;			/* Text location. (eGE_LOCATE) */
	GE_POINT				sTextOffset;			/* Text offset. */
	GE_ID					eNrmlBitmapID;			/* Normal bitmap id. (eGE_BITMAP_ID) */
	GE_ID					eActvBitmapID;			/* Active bitmap id. (eGE_BITMAP_ID) */
	GE_ID					eDisbBitmapID;			/* Disable bitmap id. (eGE_BITMAP_ID) */
	GE_INT16				eBitmapLocate;			/* Bitmap location. (eGE_LOCATE) */
	GE_POINT				sBitmapOffset;			/* Bitmap offset. */
	GE_INT16				eButtonType;			/* Button type. (eGE_WGTBTN_TYPE) */
	GE_INT16				nButtonGroup;			/* Button group number */
	const GE_WGTID*			paRelWidgets;			/* Relative widget id array data. */
} GE_WGTBTN;

/* The type of eButtonType */
typedef enum
{
	eGEWBTN_INVALID,
	eGEWBTN_PUSH,
	eGEWBTN_RADIO,
	eGEWBTN_TOGGLE,
} eGE_WGTBTN_TYPE;

/*----------------------------------------------
	PICTURE Widget.
----------------------------------------------*/
typedef struct _GE_WGTPICT
{
	GE_WGTBASE				sBase;					/* Widget common data */
	GE_ID					eBitmapID;				/* Bitmap id. (eGE_BITMAP_ID) */
	GE_INT16				nCount;					/* The number of Bitmap list. */
	const GE_ID*			paBitmapID;				/* Bitmap id array data. */
} GE_WGTPICT;

/*----------------------------------------------
	GAUGE Widget.
----------------------------------------------*/
typedef struct _GE_WGTGAUGE
{
	GE_WGTBASE				sBase;					/* Widget common data */
	GE_COLOR				crBkColor1;				/* Color 1. */
	GE_COLOR				crBkColor2;				/* Color 2. */
	GE_INT16				nMinValue;				/* Minimum value. */
	GE_INT16				nMaxValue;				/* Maximum value. */
	GE_ID					eBorderID;				/* Border id. (eGE_BORDER_ID) */
	GE_INT16				nReserved;				/* Reserved. */
} GE_WGTGAUGE;

/*----------------------------------------------
	MENU Widget.
----------------------------------------------*/
typedef struct _GE_WGTMENU
{
	GE_WGTBASE				sBase;					/* Widget common data */
	GE_UINT16				wItemSizeX;				/* Item horizontal size. */
	GE_UINT16				wItemSizeY;				/* Item vertical size */
	GE_UINT16				wRowCount;				/* Number of row. */
	GE_UINT16				wColCount;				/* Number of column. */
	GE_COLOR				crNrmlColor;			/* Normal color. */
	GE_COLOR				crActvColor;			/* Active color. */
	GE_COLOR				crEdgeColor;			/* Edge color. */
	GE_UINT8				cBindComptCount;		/* Number of binded components. */
	GE_UINT8				cItemStateCount;		/* Number of menu item state. */
	GE_UINT16				wStyle;					/* Menu style. (GEWMENU_STYLE_ ...)*/
	GE_UINT8*				pcItemFlag;				/* Flag of the each item. (GEWMENU_ITEM_ ....) */
	const GE_WGTID*			paWidgetID;				/* Widget id array data. */
	GE_INT32				lwActiveItem;			/* Acitve item number */

} GE_WGTMENU;

/* Menu style flags. */
#define GEWMENU_STYLE_PLACE_NORMAL	(0x1 << 0)		/* Replace the position of Active widget to normal widget */
#define GEWMENU_STYLE_WARP_HORZ		(0x1 << 4)		/* Come back to the left/right from right/left.*/
#define GEWMENU_STYLE_WARP_VERT		(0x1 << 5)		/* Come back to the top/bottom from bottom/top.*/

/* Menu item state flags */
#define GEWMENU_ITEM_NO_FLAGS		(0)
#define GEWMENU_ITEM_DISABLE		(0x1 << 0)		/* Unselectable. */
#define GEWMENU_ITEM_UNVISIBLE		(0x1 << 1)		/* Unvisible. */
#define GEWMENU_ITEM_DRAW			(0x1 << 2)		/* Redraw. */

/*----------------------------------------------
	LIST Widget.
----------------------------------------------*/
typedef struct _GE_WGTLIST
{
	GE_WGTBASE				sBase;					/* Widget common data */
	GE_UINT16				wRowHeight;				/* Height of row. */
	GE_UINT16				wRowCount;				/* Number of row. */
	GE_COLOR				crNrmlTextColor;		/* Normal text color. */
	GE_COLOR				crActvTextColor;		/* Active text color. */
	GE_COLOR				crNrmlColor;			/* Normal color. */
	GE_COLOR				crActvColor;			/* Active color. */
	GE_COLOR				crEdgeColor;			/* Edge color. */	
	GE_COLOR				crBarFgColor;			/* Foreground color of scroll bar, */
	GE_COLOR				crBarBgColor;			/* Background color of scroll bar, */
	GE_COLOR				crBarEdgeColor;			/* Edge color of scroll bar. */
	GE_UINT16				eBarMode;				/* The show mode of scroll bar. (eGE_WGTLIST_BARMODE)*/
	GE_UINT16				wBarWidth;				/* Width of scroll bar. */
	GE_ID					eDefaultFontID;			/* Default font id. (eGE_FONT_ID) */ 
	GE_INT16				nReserved;				/* Reserved. */
	GE_POINT				sItemOffset;			/* Item offset. */
	GE_INT16				eItemLocate;			/* Item location. (eGE_LOCATE) */
	GE_INT16				eListType;				/* Widget list type. (eGE_WGTLIST_TYPE). */
	GE_INT16				nItemCount;				/* Number of list item. */
	GE_UINT16				wStyle;					/* List style. (GEWLIST_STYLE_ ...)*/
	GE_VOID*				pItems;					/* GE_ID*  or TCHAR** */
	GE_INT16				nActiveItem;			/* Active item. */
	GE_INT16				nScrollPos;				/* Scroll position. */
	GE_INT32				lwItemAllocBytes;		/* pItems which allocated bytes */
	GE_UINT16				wDrawArrow;				/* Draw allow button. */
	GE_UINT16				wArrowHeight;			/* Height of arrow. */
	GE_ID					eUArrowNrmlBitmapID;	/* Normal UP arrow bitmap id. (eGE_BITMAP_ID) */
	GE_ID					eUArrowActvBitmapID;	/* Active UP arrow bitmap id. (eGE_BITMAP_ID) */
	GE_ID					eUArrowDisbBitmapID;	/* Disable UP arrow bitmap id. (eGE_BITMAP_ID) */
	GE_ID					eDArrowNrmlBitmapID;	/* Normal DOWN arrow bitmap id. (eGE_BITMAP_ID) */
	GE_ID					eDArrowActvBitmapID;	/* Active DOWN arrow bitmap id. (eGE_BITMAP_ID) */
	GE_ID					eDArrowDisbBitmapID;	/* Disable DOWN arrow bitmap id. (eGE_BITMAP_ID) */
	const GE_WGTID*			paRelWidgets;			/* Relative widget id array data. */
} GE_WGTLIST;

/* The type of eListType. */
typedef enum
{
	eGEWLIST_RSCSTRG,
	eGEWLIST_DYNAMIC,
} eGE_WGTLIST_TYPE;

typedef enum 
{
	eGEWLIST_BARMODE_HIDE,
	eGEWLIST_BARMODE_SHOW,
	eGEWLIST_BARMODE_AUTO,
} eGE_WGTLIST_BARMODE;

/* The definition of wStyle. */
#define GEWLIST_STYLE_USER_BUFFER	(0x01)			/* This flag is set when user sets the item buffer by 
													   GxWListItemBufferSet API */
#define GEWLIST_STYLE_WARP_VERT		(0x1 << 4)		/* Come back to the top/bottom from bottom/top.*/

/* The definition of scrollbar arrow items */
#define GEWLIST_LISTBAR_UP			(0x01)
#define GEWLIST_LISTBAR_DOWN		(0x02)


/*----------------------------------------------
	FIGURE Widget.
----------------------------------------------*/
typedef struct _GE_WGTFIG
{
	GE_WGTBASE				sBase;					/* Widget common data. */
	GE_COLOR				crColor;				
	GE_INT16				eFigType;				/* Figure type. (eGE_WGTFIG_TYPE) */
	GE_INT16				nFill;					/* Fill. */
	GE_INT16				nThickness;				/* Thickness. */
	GE_INT16				nLineType;				/* Linetype. */
	GE_INT32				lwParam;				/* Invidivisual parameter. */
	const GE_VOID*			pParam;					/* Invidivisual parameter. */
} GE_WGTFIG;

/* The type of eFigType */
typedef enum
{
	eGEWFIG_INVALID,
	eGEWFIG_LINE,
	eGEWFIG_POLYGON,
	eGEWFIG_ELLIPSE,
	eGEWFIG_ARC,
} eGE_WGTFIG_TYPE;

/*----------------------------------------------
	LAYER.
----------------------------------------------*/
typedef struct _GE_LAYER
{
	GE_ID					eLayerID;				/* Layer id. */
	GE_INT16				nWgtCount;				/* Number of widget in layer. */
	GE_SIZE					sSize;					/* Layer size. */
	const GE_WGTID*			paWidgetID;				/* Widget id array data. */
} GE_LAYER;

/*----------------------------------------------
	LAYER WORK.
----------------------------------------------*/
typedef struct _GE_LAYERWK
{
	GE_POINT				sPos;					/* The position of layer. */
	GE_UINT16				wFlag;					/* Flag. (GELYR_ ...)*/
	GE_INT16				nTargetIdx;				/* Target Index. */
	const GE_LAYER*			psLayer;				/* Layer data pointer. */
} GE_LAYERWK;

/* The definition of wFlag */
#define GELYR_DISABLE		(0x0001 << 0)			/* Unselectable. */
#define GELYR_UNVISIBLE		(0x0001 << 1)			/* Unvisible. */

/*----------------------------------------------
	STAGE.
----------------------------------------------*/
typedef struct _GE_STAGE
{
	GE_INT16				nLyrCount;				/* Number of layer count in stage. */
	GE_INT16				nReserved;				/* Reserved. */
	const GE_LAYERWK*		paLayerWk;				/* Layer work array data. */
} GE_STAGE;

/* HTARGET */
typedef void *HTARGET;


#ifdef __cplusplus
	}				/* Assume C declarations for C++ */
#endif  			/* __cplusplus */
#endif				/* _INC_GEAL_TYPES_H */
