A destructor is present on this object, but not explicitly documented in the source.
Redraws the whole widget without consideration for drawing only in dirty rects. That is a lot of maps to fill. On the plus side, this happen quite infrequently.
TODO: useless until we have resizeable UIs. Meant to be overriden almost everytime for custom behaviour. Default behaviour is to span the whole area and reflow children. Any layout algorithm is up to you. Like in the DOM, children elements don't need to be inside _position of their parent.
Forces the position of the element. It is typically used in the parent reflow() method
Removes a child (but does not destroy it, you take back the ownership of it). Useful for creating dynamic UI's. MAYDO: there are restrictions for where this is allowed. Find them.
Mark this element as wholly dirty. Important: you could call this from the audio thread, however it is much more efficient to mark the widget dirty with an atomic and call setDirty in animation callback.
Mark a part of the element dirty. This part must be a subrect of its _position.
Appends the Elements that should be drawn, in order. You should empty it before calling this function. Everything visible get into the draw list, but that doesn't mean they will get drawn if they don't overlap with a dirty area.
Draw method. This gives you 3 surfaces cropped by _position for drawing. Note that you are not forced to draw all the surfaces at all, in which case the below backgroundUIElement will be displayed.
Called periodically for every UIElement. Override this to create animations. Using setDirty there allows to redraw an element continuously (like a meter or an animated object). Warning: Summing dt will not lead to a time that increase like time. time can go backwards if the window was reopen. time is guaranteed to increase as fast as system time but is not synced to audio time.
Parent element. Following this chain gets to the root element.
Position is the graphical extent of the element, or something larger. An UIElement is not allowed though to draw further than its _position. For efficiency it's best to keep _position as small as feasible.
The list of children UI elements.
If _visible is false, neither the Element nor its children are drawn.
Higher z-order = above other UIElement. By default, every UIElement have the same z-order. Because the sort is stable, tree traversal order is the default order (depth first).
Extending the UIElement with an owned drawing buffer. This is intended to have easier dirtyrect-compliant widgets. Also caches expensive drawing, but it's not free at all.
No less than three additional opacity channels must be filled to be able to blend the widgets explicitely. The semantic of the opacity channels are: opacity left at 0 => pixel untouched opacity > 0 => pixel is touched, blending will occur