5 typedef struct sElement
9 struct sElement *Parent;
10 struct sElement *FirstChild;
11 struct sElement *LastChild;
12 struct sElement *NextSibling;
14 short PaddingL, PaddingR;
15 short PaddingT, PaddingB;
18 short FixedWith; // Fixed Long Size attribute (height)
19 short FixedCross; // Fixed Cross Size attribute (width)
23 // -- Attributes maitained by the element code
24 // Not touched by the user
25 short MinWith; // Minimum long size
26 short MinCross; // Minimum cross size
32 short CachedX, CachedY;
33 short CachedW, CachedH;
40 int Type; // Should be zero, allows a tab to be the parent of an element
42 struct sElement *Parent;
43 struct sElement *FirstChild;
44 struct sElement *LastChild;
48 tElement *RootElement;
51 typedef struct sApplication
67 * If set, the element will be ignored in calculating sizes and
70 ELEFLAG_NORENDER = 0x001,
72 * \brief Element visibility
74 * If set, the element is not drawn (but still is used for size calculations)
76 ELEFLAG_INVISIBLE = 0x002,
79 * \brief Position an element absulutely (ignored in size calcs)
81 ELEFLAG_ABSOLUTEPOS = 0x004,
84 * \brief Fixed size element
86 ELEFLAG_FIXEDSIZE = 0x008,
89 * \brief Element "orientation"
91 * Vertical means that the children of this element are stacked,
92 * otherwise they list horizontally
94 ELEFLAG_VERTICAL = 0x010,// ELEFLAG_HORIZONTAL = 0x000,
96 * \brief Action for text that overflows
98 ELEFLAG_WRAP = 0x020,// ELEFLAG_NOWRAP = 0x000,
100 * \brief Cross size action
102 * If this flag is set, the element will only be as large (across
103 * its parent) as is needed to encase the contents of the element.
104 * Otherwise, the element will expand to fill all avaliable space.
106 ELEFLAG_NOEXPAND = 0x040,
109 * \brief With (length) size action
110 * If this flag is set, the element will only be as large as
111 * is required along it's parent
113 ELEFLAG_NOSTRETCH = 0x080,
116 * \brief Center alignment
118 ELEFLAG_ALIGN_CENTER= 0x100,
120 * \brief Right/Bottom alignment
122 * If set, the element aligns to the end of avaliable space (instead
125 ELEFLAG_ALIGN_END = 0x200
134 ELETYPE_BOX, //!< Content box (invisible in itself)
135 ELETYPE_TABBAR, //!< Tab Bar
136 ELETYPE_TOOLBAR, //!< Tool Bar
138 ELETYPE_BUTTON, //!< Push Button
140 ELETYPE_TEXT, //!< Text
141 ELETYPE_IMAGE, //!< Image
143 ELETYPE_SPACER, //!< Visual Spacer (horizontal / vertical rule)
150 * \brief Create a new element as a child of \a Parent
152 extern tElement *WM_CreateElement(tElement *Parent, int Type, int Flags, const char *DebugName);
153 extern void WM_SetFlags(tElement *Element, int Flags);
154 extern void WM_SetSize(tElement *Element, int Size);
155 extern void WM_SetText(tElement *Element, const char *Text);