// CObjectWin.h
// Author: A.Fombaron / I-Maginer
// Version: v1.00 - SVoyager v5.01
// Date: 070925

#ifndef _COBJECTWIN_H_
#define _COBJECTWIN_H_


#include "CObjectBase.h"
#include "../x/Objstr.h"


//Useful ??? No more at the moment
//#define OBJTYPBITMAP		23;		//$BLG Note: This value is hardcoded. It's been retrieved in lib2DOS in load2d.c. However the value there is computed. So beware.

#define NO_TIMER -1


class CObjectWindow:public CObjectBase
{
private:
	int BMPx_inbitmap;
	int BMPy_inbitmap;
	int BMPwidth;
	int BMPheight;

public:
	//$BLG - Add
	//PtrObjWindow CWin_winCP;		// Captured ObjWin
	HWND CWin_hwndCP;						// Captured ObjWin
	int CWin_tmrID;							// Timer
	int CWin_tmrFR;							// Capture frequenz (ms)
	int CWin_w;									// ObjWin/Layer width
	int CWin_h;									// ObjWin/Layer height
	HWND CWin_hwndAX;						// ActiveX child window
	container *CWin_container;	// Container
	HWND CWin_hwndLC;						// Last clicked window/control

	//$BLG - Modif
	//CObjectWindow(container *,Layer *,int,int,int,int,int,int,int,int,int,int,int);
	//CObjectWindow(container *, Layer *, int, int, int, int, int, int, int, PtrObjWindow, HWND, int);
	CObjectWindow(container *, Layer *, int, int, int, int, int, int, int, HWND, HWND, int);
	virtual ~CObjectWindow();

	int IsMouseOnObject(int, int, int);
	int CursorMove(int, int, int, int, int);
	int CursorMoveIn(int, int, int, int, int);
	int CursorMoveInWithBtnPushed(int, int, int, int, int);
	int CursorMoveOut(int, int, int, int, int);
	int CursorMoveOutWithBtnPushed(int, int, int, int, int);
	int CursorMoveOutsideWithBtnPushed(int, int, int, int, int);
	int ClickIn(int, int, int, int, int, int);
	int UnClickIn(int, int, int, int, int, int);
	int ClickOut(int, int, int, int, int, int);
	int UnClickOut(int, int, int, int, int, int);
	int DblClickIn(int, int, int, int, int, int);
	int MouseWheel(int, int, int, int, int, int);
	int KeyUp(UINT, int, UINT, int);
	int KeyDown(UINT, int, int, UINT, int);
	int SetFocus(int, int, int);
	int KillFocus(int, int);


	int Timer(int);

	Layer *GetLayer(mmachine m, int p_tab);
	Layer *GetLayerPart(mmachine m, Rect2D *area2redraw, int p_tab);
	
	int DestroyAllLayers();
	int ResizeLayer(int, int, int);

	// for Links between Objects
	int handle(CObjMessage *msg);
	int supports(int type);
};


// Scol functions
int _CRcompWindow(mmachine);
int _DScompWindow(mmachine);
int _CONVERTcompWindowToObjNode(mmachine);
int _CBcompWindowCursorMove(mmachine);
int _CBcompWindowClick(mmachine);
int _CBcompWindowUnClick(mmachine);
int _CBcompWindowDblClick(mmachine);
int _CBcompWindowResizeResource(mmachine);
int _CBcompWindowResize(mmachine);
//$BLG - v5.01: Add
int _CBcompWindowKeyDown(mmachine);
int _CBcompWindowKeyUp(mmachine);


#endif //_COBJECTWIN_