#include <stdlib.h>
#include <string.h>
#include "wm.h"
+#include <acess/sys.h> // _SysDebug
// === IMPORTS ===
extern void Decorator_RenderWidget(tElement *Element);
extern void Video_GetTextDims(tFont *Font, const char *Text, int *W, int *H);
// === PROTOTYPES ===
-tElement *WM_CreateElement(tElement *Parent, int Type, int Flags, const char *DebugName);
+tElement *AxWin_CreateElement(tElement *Parent, int Type, int Flags, const char *DebugName);
+void AxWin_DeleteElement(tElement *Element);
+void AxWin_SetFlags(tElement *Element, int Flags);
+void AxWin_SetSize(tElement *Element, int Size);
+void AxWin_SetText(tElement *Element, const char *Text);
void WM_UpdateMinDims(tElement *Element);
-void WM_SetFlags(tElement *Element, int Flags);
-void WM_SetSize(tElement *Element, int Size);
-void WM_SetText(tElement *Element, const char *Text);
void WM_UpdateDimensions(tElement *Element, int Pass);
void WM_UpdatePosition(tElement *Element);
void WM_RenderWidget(tElement *Element);
void WM_Update(void);
// === GLOBALS ===
+// - TODO: Handle windows by having multiple root elements
tElement gWM_RootElement = {
.DebugName = "ROOT"
};
+
+tApplication *gWM_Applications;
+
+// --- Element type flags
struct {
void (*Init)(tElement *This);
void (*UpdateFlags)(tElement *This);
// === CODE ===
// --- Widget Creation and Control ---
-tElement *WM_CreateElement(tElement *Parent, int Type, int Flags, const char *DebugName)
+tAxWin_Element *AxWin_CreateElement(tElement *Parent, int Type, int Flags, const char *DebugName)
{
tElement *ret;
const char *dbgName = DebugName ? DebugName : "";
return ret;
}
+/**
+ * \brief
+ */
+void AxWin_DeleteElement(tElement *Element)
+{
+ // TODO: Implement AxWin_DeleteElement
+ free(Element);
+}
+
/**
* \brief Alter an element's flags
*/
-void WM_SetFlags(tElement *Element, int Flags)
+void AxWin_SetFlags(tElement *Element, int Flags)
{
// Permissions are handled in the message handler
if(!Element) {
return ;
}
-void WM_SetSize(tElement *Element, int Size)
+void AxWin_SetSize(tElement *Element, int Size)
{
if(!Element) return ;
Element->FixedWith = Size;
* \brief Set the text field of an element
* \note Used for the image path on ELETYPE_IMAGE
*/
-void WM_SetText(tElement *Element, const char *Text)
+void AxWin_SetText(tElement *Element, const char *Text)
{
if(!Element) return ;
if(Element->Text) free(Element->Text);
}
}
break;
+ default: // Any other, no special case
+ break ;
}
return ;
*/
/**
* \brief Updates the dimensions of an element
+ * \todo What is the \a Pass parameter for
*
* The dimensions of an element are calculated from the parent's
* cross dimension (the side at right angles to the alignment) sans some
else
child->CachedW = with;
- WM_UpdateDimensions(child, 0);
+ WM_UpdateDimensions(child, Pass);
}
_SysDebug("%p'%s' Done", Element, Element->DebugName);