X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=Usermode%2FApplications%2Faxwin2_src%2FWM%2Fwm.h;h=ab2a629c5106e242f5d22fabaa4b5933a464bcbe;hb=fe24894229067f695d5db33c213fc09086740dec;hp=8de9e206e6925ca43c157173a7c9068fc9131b03;hpb=ad2ec62655e1d6eb8f2b4a4684eb5d7952aea0fb;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin2_src/WM/wm.h b/Usermode/Applications/axwin2_src/WM/wm.h index 8de9e206..ab2a629c 100644 --- a/Usermode/Applications/axwin2_src/WM/wm.h +++ b/Usermode/Applications/axwin2_src/WM/wm.h @@ -7,35 +7,47 @@ #include #include "common.h" +/** + * \brief Number of elements that can be owned by each application + */ +// TODO: Fine tune these values +#define MAX_ELEMENTS_PER_APP 1024 +#define DEFAULT_ELEMENTS_PER_APP 128 + typedef struct sAxWin_Element tElement; -typedef struct sTab tTab; typedef struct sApplication tApplication; struct sAxWin_Element { - int Type; + enum eElementTypes Type; + // Element Tree tElement *Parent; tElement *FirstChild; tElement *LastChild; tElement *NextSibling; + // Application + tApplication *Owner; //!< Owning application + uint16_t ApplicationID; //!< Index into sApplication::EleIndex + + // User modifiable attributes short PaddingL, PaddingR; short PaddingT, PaddingB; short GapSize; - short FixedWith; // Fixed Long Size attribute (height) - short FixedCross; // Fixed Cross Size attribute (width) + uint32_t Flags; + + short FixedWith; //!< Fixed Long Size attribute (height) + short FixedCross; //!< Fixed Cross Size attribute (width) char *Text; // -- Attributes maitained by the element code // Not touched by the user - short MinWith; // Minimum long size - short MinCross; // Minimum cross size - void *Data; - - uint32_t Flags; + short MinWith; //!< Minimum long size + short MinCross; //!< Minimum cross size + void *Data; //!< Per-type data // -- Render Cache short CachedX, CachedY; @@ -44,32 +56,28 @@ struct sAxWin_Element char DebugName[]; }; -struct sTab +struct sApplication { - int Type; // Should be zero, allows a tab to be the parent of an element + tApplication *Next; + + tIPC_Type *IPCType; + void *Ident; //!< Client Identifier - tElement *Parent; - tElement *FirstChild; - tElement *LastChild; - tTab *NextTab; + char *Name; //!< Application name - char *Name; + int MaxElementIndex; //!< Number of entries in \a EleIndex + tElement **EleIndex; //!< Array of pointers to elements owned by this application - tElement *RootElement; + tElement MetaElement; //!< Windows child off this }; -struct sApplication -{ - tApplication *Next; +// === FUNCTIONS === - void *Ident; - tMessages_Handle_Callback *SendMessage; - - int nTabs; - tTab *Tabs; - tTab *CurrentTab; - - char Name[]; -}; +// --- Render +extern void WM_UpdateMinDims(tElement *Element); +extern void WM_UpdateDimensions(tElement *Element, int Pass); +extern void WM_UpdatePosition(tElement *Element); +extern void WM_RenderWidget(tElement *Element); +extern void WM_Update(void); #endif