X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin3_src%2FWM%2Finclude%2Frenderer_widget.h;h=fd0fa42159d0f0a7475372727bf790a9c0378b38;hb=6457e97e47fa29a23975daf853a3c032ce6650ef;hp=680fb4f64fed565fb8d7e0cb03f46e0b457409cc;hpb=9b2597c18780e7b9946336aa76c81c8c6106813a;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin3_src/WM/include/renderer_widget.h b/Usermode/Applications/axwin3_src/WM/include/renderer_widget.h index 680fb4f6..fd0fa421 100644 --- a/Usermode/Applications/axwin3_src/WM/include/renderer_widget.h +++ b/Usermode/Applications/axwin3_src/WM/include/renderer_widget.h @@ -9,106 +9,62 @@ #define _RENDERER_WIDGET_H_ #include +#include -enum -{ - MSG_WIDGET_CREATE, - MSG_WIDGET_DELETE, - MSG_WIDGET_SETTEXT -}; +#include + +// === TYPES === +typedef struct sWidgetWin tWidgetWin; +typedef struct sAxWin_Element tElement; -enum eElementTypes +// === STRUCTURES === +struct sAxWin_Element { - ELETYPE_NONE, + enum eElementTypes Type; - ELETYPE_WINDOW, //!< Window root element + tWindow *Window; + uint32_t ID; //!< Application provided ID number + tElement *ListNext; //!< Next element in bucket - ELETYPE_BOX, //!< Content box (invisible in itself) - ELETYPE_TABBAR, //!< Tab Bar - ELETYPE_TOOLBAR, //!< Tool Bar + // Element Tree + tElement *Parent; + tElement *FirstChild; + tElement *LastChild; + tElement *NextSibling; - ELETYPE_BUTTON, //!< Push Button + // User modifiable attributes + short PaddingL, PaddingR; + short PaddingT, PaddingB; + short GapSize; - ELETYPE_TEXT, //!< Text - ELETYPE_IMAGE, //!< Image + uint32_t Flags; - ELETYPE_SPACER, //!< Visual Spacer (horizontal / vertical rule) + short FixedWith; //!< Fixed lengthways Size attribute (height) + short FixedCross; //!< Fixed Cross Size attribute (width) - MAX_ELETYPES = 0x100 -}; + tColour BackgroundColour; -enum eElementFlags -{ - /** - * \brief Rendered - * - * If set, the element will be ignored in calculating sizes and - * rendering. - */ - ELEFLAG_NORENDER = 0x001, - /** - * \brief Element visibility - * - * If set, the element is not drawn (but still is used for size calculations) - */ - ELEFLAG_INVISIBLE = 0x002, - - /** - * \brief Position an element absulutely (ignored in size calcs) - */ - ELEFLAG_ABSOLUTEPOS = 0x004, + char *Text; - /** - * \brief Fixed size element - */ - ELEFLAG_FIXEDSIZE = 0x008, + // -- Attributes maitained by the element code + // Not touched by the user + short MinW; //!< Minimum long size + short MinH; //!< Minimum cross size + void *Data; //!< Per-type data - /** - * \brief Element "orientation" - * - * Vertical means that the children of this element are stacked, - * otherwise they list horizontally - */ - ELEFLAG_VERTICAL = 0x010,// ELEFLAG_HORIZONTAL = 0x000, - /** - * \brief Action for text that overflows - */ - ELEFLAG_WRAP = 0x020,// ELEFLAG_NOWRAP = 0x000, - /** - * \brief Cross size action - * - * If this flag is set, the element will only be as large (across - * 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, - - /** - * \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= 0x100, - /** - * \brief Right/Bottom alignment - * - * If set, the element aligns to the end of avaliable space (instead - * of the beginning) - */ - ELEFLAG_ALIGN_END = 0x200 + // -- Render Cache + short CachedX, CachedY; + short CachedW, CachedH; }; - -typedef struct +struct sWidgetWin { - uint32_t Parent; - uint32_t NewID; - char DebugName[]; -} tWidgetMsg_Create; + tElement RootElement; + + tElement *FocusedElement; + + int TableSize; //!< Number of entries, anything over will wrap + tElement *ElementTable[]; //!< Hash table essentially +}; #endif