X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2Finclude%2Faxwin3%2Faxwin.h;h=07bfe045ad090902f67d3e0f70802f5f061821f1;hb=e20b7220513e6010d883ae76ca1cf2c8f0ec26af;hp=359f4e6b3a0cd6b2ba04420928f05d4643f4b720;hpb=e2eba65d40020e9f0ee28ad512ce56d74f656689;p=tpg%2Facess2.git diff --git a/Usermode/include/axwin3/axwin.h b/Usermode/include/axwin3/axwin.h index 359f4e6b..07bfe045 100644 --- a/Usermode/include/axwin3/axwin.h +++ b/Usermode/include/axwin3/axwin.h @@ -8,16 +8,52 @@ #ifndef _AXWIN3_AXWIN_H_ #define _AXWIN3_AXWIN_H_ -typedef void *tHWND; +typedef struct sAxWin3_Window *tHWND; +typedef unsigned int tAxWin3_Colour; // TODO: Actual 32-bit +typedef void (*tAxWin3_MessageCallback)(int SourceTID, int Length); + +typedef int (*tAxWin3_WindowMessageHandler)(tHWND Window, int Message, int Length, void *Data); + +// --- Connection management extern void AxWin3_Connect(const char *ServerDesc); +extern tAxWin3_MessageCallback AxWin3_SetMessageCallback(tAxWin3_MessageCallback Callback); +extern void AxWin3_MainLoop(void); + +// --- Non-Window based functions +extern int AxWin3_GetDisplayCount(void); +extern int AxWin3_GetDisplayDims(int Display, int *X, int *Y, int *Width, int *Height); -extern tHWND AxWin3_CreateWindow(tHWND Parent, const char *Renderer, int Flags); +// --- Window creation/deletion +/** + * \brief Create a new window (with the required client structures) + * \param Parent Parent window handle + * \param Renderer Symbolic name of the renderer to use + * \param RendererArg Argument to pass to the renderer's initialisation + * \param DataBytes Number of bytes to allocate for the caller's use + * \param MessageHandler Function to call when a message arrives for the window + * \return New window handle + * \note Usually wrapped by renderer-specific functions + */ +extern tHWND AxWin3_CreateWindow( + tHWND Parent, + const char *Renderer, int RendererArg, + int DataBytes, + tAxWin3_WindowMessageHandler MessageHandler + ); +/** + * \brief Destroy a window + * \param Window Handle to a window to destroy + */ extern void AxWin3_DestroyWindow(tHWND Window); -extern void AxWin3_SendMessage(tHWND Window, int Length, void *Data); -extern void AxWin3_SetWindowPos(tHWND Window, int X, int Y, int W, int H); -extern void AxWin3_SetWindowShown(tHWND Window, int bShow); +// --- Core window management functions +extern void AxWin3_SendMessage(tHWND Window, tHWND Dest, int Message, int Length, void *Data); +extern void AxWin3_FocusWindow(tHWND Window); +extern void AxWin3_ShowWindow(tHWND Window, int bShow); +extern void AxWin3_SetWindowPos(tHWND Window, short X, short Y, short W, short H); +extern void AxWin3_MoveWindow(tHWND Window, short X, short Y); +extern void AxWin3_ResizeWindow(tHWND Window, short W, short H); #endif