#ifndef _WM_H_
#define _WM_H_
+#include <stdint.h>
+#include <stdlib.h>
+
#include "image.h"
// === CONSTANTS ===
*/
//! 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 0x00000002
+#define WINFLAG_CLEAN 0x00000040
//! All child windows are un-changed
-#define WINFLAG_CHILDCLEAN 0x00000004
+#define WINFLAG_CHILDCLEAN 0x00000080
#define WINFLAG_RENDER_MASK 0x00FFFF00
#define WINFLAG_USR_MASK 0xFF000000
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, int Flags, const char *Renderer);
+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, void *Data);
+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);