short PaddingT, PaddingB;
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;
// -- Render Cache
short CachedX, CachedY;
short CachedW, CachedH;
+
+ char DebugName[];
} tElement;
typedef struct sTab
/**
* \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,
/**
* \brief Element "orientation"
+ *
+ * Vertical means that the children of this element are stacked,
+ * otherwise they list horizontally
*/
ELEFLAG_VERTICAL = 0x010,// ELEFLAG_HORIZONTAL = 0x000,
/**
* 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
};
/**
{
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
};
/**
* \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