Usermode/AxWin3 - Bugfixing rendering/layout issues
[tpg/acess2.git] / Usermode / Applications / axwin3_src / WM / include / wm.h
index 56118f6..1c0671f 100644 (file)
@@ -8,23 +8,59 @@
 #ifndef _WM_H_
 #define _WM_H_
 
+#include <stdint.h>
+#include <stdlib.h>
+
+#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
 

UCC git Repository :: git.ucc.asn.au