From 93c9e2f871609348b3cfd2cd164057d9d0009f80 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Mon, 30 May 2011 20:29:02 +0800 Subject: [PATCH] AxWin - axwin2 headers --- Usermode/include/axwin2/axwin.h | 33 ++++++++ Usermode/include/axwin2/messages.h | 124 +++++++++++++++++++++++++++++ 2 files changed, 157 insertions(+) create mode 100644 Usermode/include/axwin2/axwin.h create mode 100644 Usermode/include/axwin2/messages.h diff --git a/Usermode/include/axwin2/axwin.h b/Usermode/include/axwin2/axwin.h new file mode 100644 index 00000000..9b147968 --- /dev/null +++ b/Usermode/include/axwin2/axwin.h @@ -0,0 +1,33 @@ +/** + * \file axwin2/axwin.h + * \author John Hodge (thePowersGang) + * \brief AxWin Core functions + */ +#ifndef _AXWIN2_AXWIN_H +#define _AXWIN2_AXWIN_H + +#include +#include + +#include + +// === Core Types === +typedef struct sAxWin_Element tAxWin_Element; +//typedef struct sAxWin_Message tAxWin_Message; +typedef int tAxWin_MessageCallback(tAxWin_Message *); + +// === Functions === +extern int AxWin_Register(const char *ApplicationName, tAxWin_MessageCallback *DefaultHandler); +extern tAxWin_Element *AxWin_CreateTab(const char *TabTitle); +extern tAxWin_Element *AxWin_AddMenuItem(tAxWin_Element *Parent, const char *Label, int Message); + +extern int AxWin_MessageLoop(void); +extern int AxWin_SendMessage(tAxWin_Message *Message); +extern tAxWin_Message *AxWin_WaitForMessage(void); +extern int AxWin_HandleMessage(tAxWin_Message *Message); + +// === Window Control === + +extern tAxWin_Element *AxWin_CreateElement(int ElementType); + +#endif diff --git a/Usermode/include/axwin2/messages.h b/Usermode/include/axwin2/messages.h new file mode 100644 index 00000000..4d53ab5d --- /dev/null +++ b/Usermode/include/axwin2/messages.h @@ -0,0 +1,124 @@ +/** + * \file messages.h + * \author John Hodge (thePowersGang) + * \brief AxWin Control Messages and structures + */ +#ifndef _AXWIN_MESSAGES_H +#define _AXWIN_MESSAGES_H + +#include + +typedef struct sAxWin_Message tAxWin_Message; +typedef struct sAxWin_RetMsg tAxWin_RetMsg; + +// Higherarchy: +// - HANDLE +// + ELEMENT +// > DIALOG +// > TAB + +/** + * \brief Message IDs + */ +enum eAxWin_Messages +{ + // Server Requests + MSG_SREQ_PING, + // - Windows + MSG_SREQ_REGISTER, // bool (char[] Name) - Registers this PID with the Window Manager + + MSG_SREQ_ADDTAB, // TAB (char[] Name) - Adds a tab to the window + MSG_SREQ_DELTAB, // void (TAB Tab) - Closes a tab + + MSG_SREQ_NEWDIALOG, // DIALOG (TAB Parent, char[] Name) - Creates a dialog + MSG_SREQ_DELDIALOG, // void (DIALOG Dialog) - Closes a dialog + + MSG_SREQ_SETNAME, // void (ELEMENT Element, char[] Name) + MSG_SREQ_GETNAME, // char[] (ELEMENT Element) + + // - Builtin Elements + MSG_SREQ_INSERT, // void (ELEMENT Parent, eAxWin_Controls Type, u32 Flags) + + // - Drawing + // All drawing functions take an ELEMENT as their first parameter. + // This must be either a Tab, Dialog or Canvas control + MSG_SREQ_SETCOL, + MSG_SREQ_PSET, + MSG_SREQ_LINE, MSG_SREQ_CURVE, + MSG_SREQ_RECT, MSG_SREQ_FILLRECT, + MSG_SREQ_RIMG, MSG_SREQ_SIMG, // Register/Set Image + MSG_SREQ_SETFONT, MSG_SREQ_PUTTEXT, + + // Server Responses + MSG_SRSP_VERSION, + MSG_SRSP_RETURN, // {int RequestID, void[] Return Value} - Returns a value from a server request + + NUM_MSG +}; + +// --- Server Requests (Requests from the client of the server) +/** + * \brief Server Request - Ping (Get Server Version) + */ +struct sAxWin_SReq_Ping +{ +}; + +/** + * \brief Server Request - New Window + * \see eAxWin_Messages.MSG_SREQ_NEWWINDOW + */ +struct sAxWin_SReq_NewWindow +{ + uint16_t X, Y, W, H; + uint32_t Flags; +}; + + +// --- Server Responses +/** + * \brief Server Response - Pong + * \see eAxWin_Messages.MSG_SRSP_PONG + */ +struct sAxWin_SRsp_Version +{ + uint8_t Major; + uint8_t Minor; + uint16_t Build; +}; + +/** + * \brief Server Response - New Window + * \see eAxWin_Messages.MSG_SRSP_NEWWINDOW + */ +struct sAxWin_SRsp_NewWindow +{ + uint32_t Handle; +}; + + +// === Core Message Structure +/** + * \brief Overarching Message Structure + * \note sizeof(tAxWin_Message) is never valid + */ +struct sAxWin_Message +{ + uint16_t ID; + uint16_t Size; //!< Size in DWORDS + char Data[]; +}; + +struct sAxWin_RetMsg +{ + uint16_t ReqID; + uint16_t Rsvd; + union + { + uint8_t Bool; + uint32_t Handle; + int Integer; + }; +}; + +#endif -- 2.20.1