#ifndef _AXWIN_MESSAGES_H
#define _AXWIN_MESSAGES_H
+#include <stdint.h>
+
typedef struct sAxWin_Message tAxWin_Message;
+typedef struct sAxWin_RetMsg tAxWin_RetMsg;
+
+// Higherarchy:
+// - HANDLE
+// + ELEMENT
+// > DIALOG
+// > TAB
/**
* \brief Message IDs
// Server Requests
MSG_SREQ_PING,
// - Windows
- MSG_SREQ_NEWWINDOW,
- MSG_SREQ_GETFLAGS, MSG_SREQ_SETFLAGS,
- MSG_SREQ_GETRECT, MSG_SREQ_SETRECT,
+ 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_SETFONT, MSG_SREQ_PUTTEXT,
// Server Responses
- MSG_SRSP_PONG,
- MSG_SRSP_IMG, // Returns the image ID
+ 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 New Window Request structure
+ * \brief Server Request - Ping (Get Server Version)
*/
-struct sAxWin_Req_NewWindow
+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
{
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