cOMS/ui/UIElementType.h

120 lines
3.5 KiB
C++

#ifndef TOS_UI_ELEMENT_TYPE_H
#define TOS_UI_ELEMENT_TYPE_H
#include <stdio.h>
#include "../stdlib/Types.h"
#include "../compiler/CompilerUtils.h"
#include "UIButton.h"
#include "UISelect.h"
#include "UIInput.h"
#include "UIText.h"
#include "UITextarea.h"
#include "UIImage.h"
#include "UILink.h"
#include "UIWindow.h"
#include "UITable.h"
#include "UIPanel.h"
#include "UITab.h"
#include "UICursor.h"
constexpr
int32 ui_element_type_size(UIElementType e)
{
switch (e) {
case UI_ELEMENT_TYPE_BUTTON:
return sizeof(UIButton);
case UI_ELEMENT_TYPE_SELECT:
return sizeof(UISelect);
case UI_ELEMENT_TYPE_INPUT:
return sizeof(UIInput);
case UI_ELEMENT_TYPE_TEXT:
return sizeof(UIText);
case UI_ELEMENT_TYPE_TEXTAREA:
return sizeof(UITextarea);
case UI_ELEMENT_TYPE_IMAGE:
return sizeof(UIImage);
case UI_ELEMENT_TYPE_LINK:
return sizeof(UILink);
case UI_ELEMENT_TYPE_TABLE:
return sizeof(UITable);
case UI_ELEMENT_TYPE_VIEW_WINDOW:
return sizeof(UIWindow);
case UI_ELEMENT_TYPE_VIEW_PANEL:
return sizeof(UIPanel);
case UI_ELEMENT_TYPE_VIEW_TAB:
return sizeof(UITab);
case UI_ELEMENT_TYPE_CURSOR:
return sizeof(UICursor);
default: {
UNREACHABLE();
return 0;
}
}
}
constexpr
int32 ui_element_state_size(UIElementType e)
{
switch (e) {
case UI_ELEMENT_TYPE_BUTTON:
return sizeof(UIButtonState);
case UI_ELEMENT_TYPE_SELECT:
return sizeof(UISelectState);
case UI_ELEMENT_TYPE_INPUT:
return sizeof(UIInputState);
case UI_ELEMENT_TYPE_TEXT:
return sizeof(UITextState);
case UI_ELEMENT_TYPE_TEXTAREA:
return sizeof(UITextareaState);
case UI_ELEMENT_TYPE_IMAGE:
return sizeof(UIImageState);
case UI_ELEMENT_TYPE_LINK:
return sizeof(UILinkState);
case UI_ELEMENT_TYPE_TABLE:
return sizeof(UITableState);
case UI_ELEMENT_TYPE_VIEW_WINDOW:
return sizeof(UIWindowState);
case UI_ELEMENT_TYPE_VIEW_PANEL:
return sizeof(UIPanelState);
case UI_ELEMENT_TYPE_VIEW_TAB:
return sizeof(UITabState);
case UI_ELEMENT_TYPE_CURSOR:
return sizeof(UICursorState);
default: {
UNREACHABLE();
return 0;
}
}
}
constexpr
int32 ui_element_type_to_id(const char* str)
{
if (str_compare("button", str) == 0) {
return UI_ELEMENT_TYPE_BUTTON;
} else if (str_compare("select", str) == 0) {
return UI_ELEMENT_TYPE_SELECT;
} else if (str_compare("input", str) == 0) {
return UI_ELEMENT_TYPE_INPUT;
} else if (str_compare("textarea", str) == 0) {
return UI_ELEMENT_TYPE_TEXTAREA;
} else if (str_compare("image", str) == 0) {
return UI_ELEMENT_TYPE_IMAGE;
} else if (str_compare("text", str) == 0) {
return UI_ELEMENT_TYPE_TEXT;
} else if (str_compare("link", str) == 0) {
return UI_ELEMENT_TYPE_LINK;
} else if (str_compare("table", str) == 0) {
return UI_ELEMENT_TYPE_TABLE;
} else if (str_compare("view_window", str) == 0) {
return UI_ELEMENT_TYPE_VIEW_WINDOW;
} else if (str_compare("view_panel", str) == 0) {
return UI_ELEMENT_TYPE_VIEW_PANEL;
} else if (str_compare("view_tab", str) == 0) {
return UI_ELEMENT_TYPE_VIEW_TAB;
}
return -1;
}
#endif