#ifndef ___BUTTON_H___ #define ___BUTTON_H___ #include "DEFINES.H" typedef enum BUTTON_ACTIONS { BUTTON_OBJ_ACTION = 0, BUTTON_OBJ_ON_MOUSE_OVER, BUTTON_OBJ_ON_LMOUSE_PRESS, BUTTON_OBJ_ON_LMOUSE_UPRESS, BUTTON_OBJ_ON_LMOUSE_PRESSED, BUTTON_OBJ_ON_RMOUSE_PRESS, BUTTON_OBJ_ON_RMOUSE_UPRESS, BUTTON_OBJ_ON_RMOUSE_PRESSED, BUTTON_OBJ_ON_LMOUSE_CLICK, BUTTON_OBJ_ON_LMOUSE_DCLICK, BUTTON_OBJ_ON_MOUSE_IN, BUTTON_OBJ_ON_MOUSE_OUT, BUTTON_OBJ_POST_ACTION, BUTTON_OBJ_MAX_STATES, }; class BUTTON_OBJ { public: UnicID ThisID; u8 IsVisible; int MoveMode; DWORD lastTime; u8 lastMouseState; int depth; float fX; float fY; float fSX; float fSY; float dest_fX; float dest_fY; float dest_fSX; float dest_fSY; float fXSpeed; float fYSpeed; float fSXSpeed; float fSYSpeed; u8 ButtonName[MAX_PATH]; u8 MediaName[MAX_PATH]; char StateActions[BUTTON_OBJ_MAX_STATES][1024]; public: BUTTON_OBJ() {memset(this, 0, sizeof(BUTTON_OBJ)); IsVisible=true;}; ~BUTTON_OBJ() {}; }; BOOL MoveButton(BUTTON_OBJ *buttonPtr, float x, float y, float sx, float sy, int moveMode, float time, int speedMode); BOOL PointInButtonRect(BUTTON_OBJ *buttonPtr, int MouseX, int MouseY, int XSize, int YSize); int RefreshButton(BUTTON_OBJ *buttonPtr, char **actions = NULL, u8 mouseStatus = 0); // mouseStatus 1: mouse over 2: left mouse click 4: right mouse click int SearchMaxButtonDepth(BUTTON_OBJ *buttonList[], int nbButton); int SetButtonDepth(int buttonIdx, int depth, BUTTON_OBJ *buttonList[], int nbButton); int SortButtonByDepth(BUTTON_OBJ *buttonList[], int nbButton, int *buttonListPtr); #endif //___BUTTON_H___