X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin3_src%2FWM%2Finclude%2Fwm.h;h=1c0671f502a6a783d9b9556f9aa95eb161c4e8f4;hb=dd2491a82880ed9b01b5d66b1814d271921797a4;hp=56118f61234f5fb64096afed571351757f657424;hpb=21d938f9041683280a2d5ed44ef0bca278210829;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin3_src/WM/include/wm.h b/Usermode/Applications/axwin3_src/WM/include/wm.h index 56118f61..1c0671f5 100644 --- a/Usermode/Applications/axwin3_src/WM/include/wm.h +++ b/Usermode/Applications/axwin3_src/WM/include/wm.h @@ -8,23 +8,59 @@ #ifndef _WM_H_ #define _WM_H_ +#include +#include + +#include "image.h" + // === CONSTANTS === /** * \brief Window Flags * \{ */ +//! Render the window #define WINFLAG_SHOW 0x00000001 +//! Don't decoratate even if root +#define WINFLAG_NODECORATE 0x00000002 +//! Window takes up all of screen +#define WINFLAG_MAXIMIZED 0x00000005 +//! Window contents are valid +#define WINFLAG_CLEAN 0x00000040 +//! All child windows are un-changed +#define WINFLAG_CHILDCLEAN 0x00000080 + #define WINFLAG_RENDER_MASK 0x00FFFF00 #define WINFLAG_USR_MASK 0xFF000000 /** * \} */ -// === FUNCTIONS === -extern tWindow *WM_CreateWindow(tWindow *Parent, int X, int Y, int W, int H, int Flags, tRenderer *Handler); -extern int WM_Reposition(tWindow *Window, int X, int Y, int W, int H); -extern int WM_SetFlags(tWindow *Window, int Flags); -extern int WM_SendMessage(tWindow *Window, int MessageID, int Length, void *Data); +// === TYPES === +typedef struct sWindow tWindow; +typedef struct sWMRenderer tWMRenderer; +typedef uint32_t tColour; +typedef struct sFont tFont; +typedef struct sIPC_Client tIPC_Client; +// === FUNCTIONS === +// --- Management +extern tWindow *WM_CreateWindow(tWindow *Parent, tIPC_Client *Client, uint32_t ID, int Flags, const char *Renderer); +extern void WM_Invalidate(tWindow *Window); +extern void WM_SetWindowTitle(tWindow *Window, const char *Title); +extern void WM_FocusWindow(tWindow *Destination); +extern void WM_RaiseWindow(tWindow *Window); +extern void WM_ShowWindow(tWindow *Window, int bShow); +extern void WM_DecorateWindow(tWindow *Window, int bDecorate); +extern int WM_ResizeWindow(tWindow *Window, int W, int H); +extern int WM_MoveWindow(tWindow *Window, int X, int Y); +extern int WM_SendMessage(tWindow *Source, tWindow *Dest, int MessageID, int Length, const void *Data); +// --- Rendering +extern void WM_Render_FillRect(tWindow *Window, int X, int Y, int W, int H, tColour Colour); +extern void WM_Render_DrawRect(tWindow *Window, int X, int Y, int W, int H, tColour Colour); +extern int WM_Render_DrawText(tWindow *Window, int X, int Y, int W, int H, tFont *Font, tColour Colour, const char *Text); +extern void WM_Render_GetTextDims(tFont *Font, const char *Text, int *W, int *H); +extern void WM_Render_DrawImage(tWindow *Window, int X, int Y, int W, int H, tImage *Image); +// NOTE: Should really be elsewhere +extern tColour Video_AlphaBlend(tColour _orig, tColour _new, uint8_t _alpha); #endif