X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin2_src%2FWM%2Fwm.h;h=8de9e206e6925ca43c157173a7c9068fc9131b03;hb=ad2ec62655e1d6eb8f2b4a4684eb5d7952aea0fb;hp=0f5edf2f92230daa5f3181e90fa5092c4e6fe27d;hpb=9bf83176e50b61185f11e0742f89464d870381df;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin2_src/WM/wm.h b/Usermode/Applications/axwin2_src/WM/wm.h index 0f5edf2f..8de9e206 100644 --- a/Usermode/Applications/axwin2_src/WM/wm.h +++ b/Usermode/Applications/axwin2_src/WM/wm.h @@ -1,15 +1,24 @@ - +/* + * Acess2 Window Manager (AxWin2) + */ #ifndef _WM_H_ #define _WM_H_ -typedef struct sElement +#include +#include "common.h" + +typedef struct sAxWin_Element tElement; +typedef struct sTab tTab; +typedef struct sApplication tApplication; + +struct sAxWin_Element { int Type; - struct sElement *Parent; - struct sElement *FirstChild; - struct sElement *LastChild; - struct sElement *NextSibling; + tElement *Parent; + tElement *FirstChild; + tElement *LastChild; + tElement *NextSibling; short PaddingL, PaddingR; short PaddingT, PaddingB; @@ -33,118 +42,34 @@ typedef struct sElement short CachedW, CachedH; char DebugName[]; -} tElement; +}; -typedef struct sTab +struct sTab { int Type; // Should be zero, allows a tab to be the parent of an element - struct sElement *Parent; - struct sElement *FirstChild; - struct sElement *LastChild; + tElement *Parent; + tElement *FirstChild; + tElement *LastChild; + tTab *NextTab; char *Name; tElement *RootElement; -} tTab; +}; -typedef struct sApplication +struct sApplication { - pid_t PID; + tApplication *Next; + + void *Ident; + tMessages_Handle_Callback *SendMessage; int nTabs; tTab *Tabs; + tTab *CurrentTab; char Name[]; -} tApplication; - -// === CONSTANTS === -enum eElementFlags -{ - /** - * \brief Rendered - * - * If set, the element will be ignored in calculating sizes and - * rendering. - */ - ELEFLAG_NORENDER = 0x001, - /** - * \brief Element visibility - * - * If set, the element is not drawn. - */ - ELEFLAG_INVISIBLE = 0x002, - - /** - * \brief Position an element absulutely - */ - ELEFLAG_ABSOLUTEPOS = 0x004, - - /** - * \brief Fixed size element - */ - ELEFLAG_FIXEDSIZE = 0x008, - - /** - * \brief Element "orientation" - */ - ELEFLAG_VERTICAL = 0x010,// ELEFLAG_HORIZONTAL = 0x000, - /** - * \brief Action for text that overflows - */ - ELEFLAG_WRAP = 0x020,// ELEFLAG_NOWRAP = 0x000, - /** - * \brief Cross size action - * - * If this flag is set, the element will only be as large (across - * its parent) as is needed to encase the contents of the element. - * Otherwise, the element will expand to fill all avaliable space. - */ - ELEFLAG_NOEXPAND = 0x040, - - /** - * \brief With (length) size action - * If this flag is set, the element will only be as large as - * is required - */ - ELEFLAG_NOSTRETCH = 0x080, - - /** - * \brief Center alignment - */ - ELEFLAG_ALIGN_CENTER= 0x100, - /** - * \brief Right/Bottom alignment - */ - ELEFLAG_ALIGN_END = 0x200 -}; - -/** - */ -enum eElementTypes -{ - ELETYPE_NONE, - - ELETYPE_BOX, //!< Content box - ELETYPE_TABBAR, //!< Tab Bar - ELETYPE_TOOLBAR, //!< Tool Bar - - ELETYPE_BUTTON, //!< Push Button - ELETYPE_TEXT, //!< Text - ELETYPE_IMAGE, //!< Image - - ELETYPE_SPACER, //!< Visual Spacer - - MAX_ELETYPES = 0x100 }; -// === FUNCTIONS === -/** - * \brief Create a new element as a child of \a Parent - */ -extern tElement *WM_CreateElement(tElement *Parent, int Type, int Flags, const char *DebugName); -extern void WM_SetFlags(tElement *Element, int Flags); -extern void WM_SetSize(tElement *Element, int Size); -extern void WM_SetText(tElement *Element, char *Text); - #endif