X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin2_src%2FWM%2Fwm.h;h=565697d71c528474c4b7d926ed9b879ee6dc2545;hb=3764c294f21229bdf700f436fa4884f5e76e0d3a;hp=8e6efa4aff9e563bb5d86e042eda3e162767600f;hpb=a98b0e6ff33593616a21337492bb2fd48e9e5845;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin2_src/WM/wm.h b/Usermode/Applications/axwin2_src/WM/wm.h index 8e6efa4a..565697d7 100644 --- a/Usermode/Applications/axwin2_src/WM/wm.h +++ b/Usermode/Applications/axwin2_src/WM/wm.h @@ -13,12 +13,17 @@ typedef struct sElement short PaddingL, PaddingR; short PaddingT, PaddingB; - short MinWidth, MinHeight; short GapSize; - short Size; // Size attribute + 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; @@ -26,6 +31,8 @@ typedef struct sElement // -- Render Cache short CachedX, CachedY; short CachedW, CachedH; + + char DebugName[]; } tElement; typedef struct sTab @@ -64,12 +71,12 @@ enum eElementFlags /** * \brief Element visibility * - * If set, the element is not drawn. + * If set, the element is not drawn (but still is used for size calculations) */ ELEFLAG_INVISIBLE = 0x002, /** - * \brief Position an element absulutely + * \brief Position an element absulutely (ignored in size calcs) */ ELEFLAG_ABSOLUTEPOS = 0x004, @@ -80,6 +87,9 @@ enum eElementFlags /** * \brief Element "orientation" + * + * Vertical means that the children of this element are stacked, + * otherwise they list horizontally */ ELEFLAG_VERTICAL = 0x010,// ELEFLAG_HORIZONTAL = 0x000, /** @@ -93,16 +103,26 @@ enum eElementFlags * 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, // ELEFLAG_EXPAND = 0x000 + ELEFLAG_NOEXPAND = 0x040, + + /** + * \brief With (length) size action + * If this flag is set, the element will only be as large as + * is required along it's parent + */ + ELEFLAG_NOSTRETCH = 0x080, /** * \brief Center alignment */ - ELEFLAG_ALIGN_CENTER= 0x080, + ELEFLAG_ALIGN_CENTER= 0x100, /** * \brief Right/Bottom alignment + * + * If set, the element aligns to the end of avaliable space (instead + * of the beginning) */ - ELEFLAG_ALIGN_END = 0x100 + ELEFLAG_ALIGN_END = 0x200 }; /** @@ -111,15 +131,16 @@ enum eElementTypes { ELETYPE_NONE, - ELETYPE_BOX, //!< Content box + ELETYPE_BOX, //!< Content box (invisible in itself) ELETYPE_TABBAR, //!< Tab Bar ELETYPE_TOOLBAR, //!< Tool Bar ELETYPE_BUTTON, //!< Push Button + ELETYPE_TEXT, //!< Text ELETYPE_IMAGE, //!< Image - ELETYPE_SPACER, //!< Visual Spacer + ELETYPE_SPACER, //!< Visual Spacer (horizontal / vertical rule) MAX_ELETYPES = 0x100 }; @@ -128,9 +149,9 @@ enum eElementTypes /** * \brief Create a new element as a child of \a Parent */ -extern tElement *WM_CreateElement(tElement *Parent, int Type, int Flags); +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); +extern void WM_SetText(tElement *Element, const char *Text); #endif