Move more gui screens to separate Layout method

This commit is contained in:
UnknownShadow200 2020-08-16 15:37:35 +10:00
parent dcd1f6be71
commit d20962b804
4 changed files with 95 additions and 65 deletions

View File

@ -69,13 +69,13 @@ static void Menu_Label(void* s, int i, struct TextWidget* label, int horAnchor,
} }
static void Menu_Input(void* s, int i, struct MenuInputWidget* input, int width, const String* text, struct MenuInputDesc* desc, int horAnchor, int verAnchor, int x, int y) { static void Menu_Input(void* s, int i, struct MenuInputWidget* input, int width, const String* text, struct MenuInputDesc* desc, int horAnchor, int verAnchor, int x, int y) {
MenuInputWidget_Create(input, width, 30, text, desc); MenuInputWidget_Create(input, width, text, desc);
Widget_SetLocation(input, horAnchor, verAnchor, x, y); Widget_SetLocation(input, horAnchor, verAnchor, x, y);
((struct Screen*)s)->widgets[i] = (struct Widget*)input; ((struct Screen*)s)->widgets[i] = (struct Widget*)input;
} }
static void Menu_MakeInput(struct MenuInputWidget* input, int width, const String* text, struct MenuInputDesc* desc, int horAnchor, int verAnchor, int x, int y) { static void Menu_MakeInput(struct MenuInputWidget* input, int width, const String* text, struct MenuInputDesc* desc, int horAnchor, int verAnchor, int x, int y) {
MenuInputWidget_Create(input, width, 30, text, desc); MenuInputWidget_Create(input, width, text, desc);
Widget_SetLocation(input, horAnchor, verAnchor, x, y); Widget_SetLocation(input, horAnchor, verAnchor, x, y);
} }
@ -90,6 +90,14 @@ static void Menu_MakeBack(struct ButtonWidget* btn, Widget_LeftClick onClick) {
ButtonWidget_Make(btn, width, onClick, ANCHOR_CENTRE, ANCHOR_MAX, 0, 25); ButtonWidget_Make(btn, width, onClick, ANCHOR_CENTRE, ANCHOR_MAX, 0, 25);
} }
static void Menu_InitBack(struct ButtonWidget* btn, Widget_LeftClick onClick) {
ButtonWidget_Init(btn, Gui.ClassicMenu ? 400 : 200, onClick);
}
static void Menu_LayoutBack(struct ButtonWidget* btn) {
Widget_SetLocation(btn, ANCHOR_CENTRE, ANCHOR_MAX, 0, 25);
}
CC_NOINLINE static void Menu_MakeTitleFont(struct FontDesc* font) { Drawer2D_MakeFont(font, 16, FONT_STYLE_BOLD); } CC_NOINLINE static void Menu_MakeTitleFont(struct FontDesc* font) { Drawer2D_MakeFont(font, 16, FONT_STYLE_BOLD); }
CC_NOINLINE static void Menu_MakeBodyFont(struct FontDesc* font) { Drawer2D_MakeFont(font, 16, FONT_STYLE_NORMAL); } CC_NOINLINE static void Menu_MakeBodyFont(struct FontDesc* font) { Drawer2D_MakeFont(font, 16, FONT_STYLE_NORMAL); }
static void Menu_CloseKeyboard(void* s) { Window_CloseKeyboard(); } static void Menu_CloseKeyboard(void* s) { Window_CloseKeyboard(); }
@ -718,10 +726,6 @@ static struct Widget* edithotkey_widgets[7] = {
}; };
#define EDITHOTKEY_MAX_VERTICES (MENUINPUTWIDGET_MAX + 6 * BUTTONWIDGET_MAX) #define EDITHOTKEY_MAX_VERTICES (MENUINPUTWIDGET_MAX + 6 * BUTTONWIDGET_MAX)
static void EditHotkeyScreen_Make(struct ButtonWidget* btn, int x, int y, Widget_LeftClick onClick) {
ButtonWidget_Make(btn, 300, onClick, ANCHOR_CENTRE, ANCHOR_CENTRE, x, y);
}
static void HotkeyListScreen_MakeFlags(int flags, String* str); static void HotkeyListScreen_MakeFlags(int flags, String* str);
static void EditHotkeyScreen_MakeFlags(int flags, String* str) { static void EditHotkeyScreen_MakeFlags(int flags, String* str) {
if (flags == 0) String_AppendConst(str, " None"); if (flags == 0) String_AppendConst(str, " None");
@ -900,6 +904,17 @@ static void EditHotkeyScreen_Update(void* screen, double delta) {
s->input.base.caretAccumulator += delta; s->input.base.caretAccumulator += delta;
} }
static void EditHotkeyScreen_Layout(void* screen) {
struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen;
Widget_SetLocation(&s->btns[0], ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -150);
Widget_SetLocation(&s->btns[1], ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -100);
Widget_SetLocation(&s->btns[2], ANCHOR_CENTRE, ANCHOR_CENTRE, -100, 10);
Widget_SetLocation(&s->btns[3], ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 80);
Widget_SetLocation(&s->btns[4], ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 130);
Widget_SetLocation(&s->input, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -35);
Menu_LayoutBack(&s->cancel);
}
static void EditHotkeyScreen_Init(void* screen) { static void EditHotkeyScreen_Init(void* screen) {
struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen; struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen;
struct MenuInputDesc desc; struct MenuInputDesc desc;
@ -911,19 +926,18 @@ static void EditHotkeyScreen_Init(void* screen) {
s->maxVertices = EDITHOTKEY_MAX_VERTICES; s->maxVertices = EDITHOTKEY_MAX_VERTICES;
MenuInput_String(desc); MenuInput_String(desc);
EditHotkeyScreen_Make(&s->btns[0], 0, -150, EditHotkeyScreen_BaseKey); ButtonWidget_Init(&s->btns[0], 300, EditHotkeyScreen_BaseKey);
EditHotkeyScreen_Make(&s->btns[1], 0, -100, EditHotkeyScreen_Modifiers); ButtonWidget_Init(&s->btns[1], 300, EditHotkeyScreen_Modifiers);
EditHotkeyScreen_Make(&s->btns[2], -100, 10, EditHotkeyScreen_LeaveOpen); ButtonWidget_Init(&s->btns[2], 300, EditHotkeyScreen_LeaveOpen);
EditHotkeyScreen_Make(&s->btns[3], 0, 80, EditHotkeyScreen_SaveChanges); ButtonWidget_Init(&s->btns[3], 300, EditHotkeyScreen_SaveChanges);
EditHotkeyScreen_Make(&s->btns[4], 0, 130, EditHotkeyScreen_RemoveHotkey); ButtonWidget_Init(&s->btns[4], 300, EditHotkeyScreen_RemoveHotkey);
if (s->origHotkey.Trigger) { if (s->origHotkey.Trigger) {
text = StringsBuffer_UNSAFE_Get(&HotkeysText, s->origHotkey.TextIndex); text = StringsBuffer_UNSAFE_Get(&HotkeysText, s->origHotkey.TextIndex);
} else { text = String_Empty; } } else { text = String_Empty; }
Menu_MakeInput(&s->input, 500, &text, &desc, MenuInputWidget_Create(&s->input, 500, &text, &desc);
ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -35); Menu_InitBack(&s->cancel, Menu_SwitchHotkeys);
Menu_MakeBack( &s->cancel, Menu_SwitchHotkeys);
Window_OpenKeyboard(); Window_OpenKeyboard();
Window_SetKeyboardText(&text); Window_SetKeyboardText(&text);
} }
@ -933,7 +947,7 @@ static const struct ScreenVTABLE EditHotkeyScreen_VTABLE = {
EditHotkeyScreen_Render, Screen_BuildMesh, EditHotkeyScreen_Render, Screen_BuildMesh,
EditHotkeyScreen_KeyDown, Screen_TInput, EditHotkeyScreen_KeyPress, EditHotkeyScreen_TextChanged, EditHotkeyScreen_KeyDown, Screen_TInput, EditHotkeyScreen_KeyPress, EditHotkeyScreen_TextChanged,
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Screen_Layout, EditHotkeyScreen_ContextLost, EditHotkeyScreen_ContextRecreated EditHotkeyScreen_Layout, EditHotkeyScreen_ContextLost, EditHotkeyScreen_ContextRecreated
}; };
void EditHotkeyScreen_Show(struct HotkeyData original) { void EditHotkeyScreen_Show(struct HotkeyData original) {
struct EditHotkeyScreen* s = &EditHotkeyScreen; struct EditHotkeyScreen* s = &EditHotkeyScreen;
@ -1101,6 +1115,15 @@ static void GenLevelScreen_Update(void* screen, double delta) {
if (s->selected) s->selected->base.caretAccumulator += delta; if (s->selected) s->selected->base.caretAccumulator += delta;
} }
static void GenLevelScreen_Layout(void* screen) {
struct GenLevelScreen* s = (struct GenLevelScreen*)screen;
Widget_SetLocation(&s->title, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -130);
Widget_SetLocation(&s->flatgrass, ANCHOR_CENTRE, ANCHOR_CENTRE, -120, 100);
Widget_SetLocation(&s->vanilla, ANCHOR_CENTRE, ANCHOR_CENTRE, 120, 100);
Menu_LayoutBack(&s->cancel);
Screen_Layout(screen);
}
static void GenLevelScreen_Init(void* screen) { static void GenLevelScreen_Init(void* screen) {
struct GenLevelScreen* s = (struct GenLevelScreen*)screen; struct GenLevelScreen* s = (struct GenLevelScreen*)screen;
s->widgets = gen_widgets; s->widgets = gen_widgets;
@ -1113,13 +1136,10 @@ static void GenLevelScreen_Init(void* screen) {
GenLevelScreen_Make(s, 2, 0, World.Length); GenLevelScreen_Make(s, 2, 0, World.Length);
GenLevelScreen_Make(s, 3, 40, 0); GenLevelScreen_Make(s, 3, 40, 0);
TextWidget_Make( &s->title, TextWidget_Init(&s->title);
ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -130); ButtonWidget_Init(&s->flatgrass, 200, GenLevelScreen_Flatgrass);
ButtonWidget_Make(&s->flatgrass, 200, GenLevelScreen_Flatgrass, ButtonWidget_Init(&s->vanilla, 200, GenLevelScreen_Notchy);
ANCHOR_CENTRE, ANCHOR_CENTRE, -120, 100); Menu_InitBack(&s->cancel, Menu_SwitchPause);
ButtonWidget_Make(&s->vanilla, 200, GenLevelScreen_Notchy,
ANCHOR_CENTRE, ANCHOR_CENTRE, 120, 100);
Menu_MakeBack( &s->cancel, Menu_SwitchPause);
Window_OpenKeyboard(); Window_OpenKeyboard();
} }
@ -1128,7 +1148,7 @@ static const struct ScreenVTABLE GenLevelScreen_VTABLE = {
MenuScreen_Render2, Screen_BuildMesh, MenuScreen_Render2, Screen_BuildMesh,
GenLevelScreen_KeyDown, Screen_TInput, GenLevelScreen_KeyPress, GenLevelScreen_TextChanged, GenLevelScreen_KeyDown, Screen_TInput, GenLevelScreen_KeyPress, GenLevelScreen_TextChanged,
GenLevelScreen_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, GenLevelScreen_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Screen_Layout, GenLevelScreen_ContextLost, GenLevelScreen_ContextRecreated GenLevelScreen_Layout, GenLevelScreen_ContextLost, GenLevelScreen_ContextRecreated
}; };
void GenLevelScreen_Show(void) { void GenLevelScreen_Show(void) {
struct GenLevelScreen* s = &GenLevelScreen; struct GenLevelScreen* s = &GenLevelScreen;
@ -1179,8 +1199,12 @@ static void ClassicGenScreen_ContextRecreated(void* screen) {
Font_Free(&titleFont); Font_Free(&titleFont);
} }
static void ClassicGenScreen_Make(struct ClassicGenScreen* s, int i, int y, Widget_LeftClick onClick) { static void ClassicGenScreen_Layout(void* screen) {
ButtonWidget_Make(&s->btns[i], 400, onClick, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, y); struct ClassicGenScreen* s = (struct ClassicGenScreen*)screen;
Widget_SetLocation(&s->btns[0], ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -100);
Widget_SetLocation(&s->btns[1], ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -50);
Widget_SetLocation(&s->btns[2], ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 0);
Menu_LayoutBack(&s->cancel);
} }
static void ClassicGenScreen_Init(void* screen) { static void ClassicGenScreen_Init(void* screen) {
@ -1189,11 +1213,10 @@ static void ClassicGenScreen_Init(void* screen) {
s->numWidgets = Array_Elems(classicgen_widgets); s->numWidgets = Array_Elems(classicgen_widgets);
s->maxVertices = CLASSICGEN_MAX_VERTICES; s->maxVertices = CLASSICGEN_MAX_VERTICES;
ClassicGenScreen_Make(s, 0, -100, ClassicGenScreen_Small); ButtonWidget_Init(&s->btns[0], 400, ClassicGenScreen_Small);
ClassicGenScreen_Make(s, 1, -50, ClassicGenScreen_Medium); ButtonWidget_Init(&s->btns[1], 400, ClassicGenScreen_Medium);
ClassicGenScreen_Make(s, 2, 0, ClassicGenScreen_Huge); ButtonWidget_Init(&s->btns[2], 400, ClassicGenScreen_Huge);
Menu_InitBack(&s->cancel, Menu_SwitchPause);
Menu_MakeBack(&s->cancel, Menu_SwitchPause);
} }
static const struct ScreenVTABLE ClassicGenScreen_VTABLE = { static const struct ScreenVTABLE ClassicGenScreen_VTABLE = {
@ -1201,7 +1224,7 @@ static const struct ScreenVTABLE ClassicGenScreen_VTABLE = {
MenuScreen_Render2, Screen_BuildMesh, MenuScreen_Render2, Screen_BuildMesh,
Screen_InputDown, Screen_TInput, Screen_TKeyPress, Screen_TText, Screen_InputDown, Screen_TInput, Screen_TKeyPress, Screen_TText,
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Screen_Layout, Screen_ContextLost, ClassicGenScreen_ContextRecreated ClassicGenScreen_Layout, Screen_ContextLost, ClassicGenScreen_ContextRecreated
}; };
void ClassicGenScreen_Show(void) { void ClassicGenScreen_Show(void) {
struct ClassicGenScreen* s = &ClassicGenScreen; struct ClassicGenScreen* s = &ClassicGenScreen;
@ -1433,6 +1456,25 @@ static void SaveLevelScreen_Update(void* screen, double delta) {
s->input.base.caretAccumulator += delta; s->input.base.caretAccumulator += delta;
} }
static void SaveLevelScreen_Layout(void* screen) {
struct SaveLevelScreen* s = (struct SaveLevelScreen*)screen;
Widget_SetLocation(&s->save, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 20);
#ifdef CC_BUILD_WEB
Widget_SetLocation(&s->alt, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 70);
#else
Widget_SetLocation(&s->alt, ANCHOR_CENTRE, ANCHOR_CENTRE, -150, 120);
Widget_SetLocation(&s->mcEdit, ANCHOR_CENTRE, ANCHOR_CENTRE, 110, 120);
#endif
Menu_LayoutBack(&s->cancel);
Widget_SetLocation(&s->input, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -30);
#ifdef CC_BUILD_WEB
Widget_SetLocation(&s->desc, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 115);
#else
Widget_SetLocation(&s->desc, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 65);
#endif
}
static void SaveLevelScreen_Init(void* screen) { static void SaveLevelScreen_Init(void* screen) {
struct SaveLevelScreen* s = (struct SaveLevelScreen*)screen; struct SaveLevelScreen* s = (struct SaveLevelScreen*)screen;
struct MenuInputDesc desc; struct MenuInputDesc desc;
@ -1442,29 +1484,18 @@ static void SaveLevelScreen_Init(void* screen) {
s->maxVertices = SAVE_MAX_VERTICES; s->maxVertices = SAVE_MAX_VERTICES;
MenuInput_Path(desc); MenuInput_Path(desc);
ButtonWidget_Make(&s->save, 300, SaveLevelScreen_Main, ButtonWidget_Init(&s->save, 300, SaveLevelScreen_Main);
ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 20);
#ifdef CC_BUILD_WEB #ifdef CC_BUILD_WEB
ButtonWidget_Make(&s->alt, 300, SaveLevelScreen_Alt, ButtonWidget_Init(&s->alt, 300, SaveLevelScreen_Alt);
ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 70);
s->widgets[2] = NULL; /* null mcEdit widget */ s->widgets[2] = NULL; /* null mcEdit widget */
#else #else
ButtonWidget_Make(&s->alt, 200, SaveLevelScreen_Alt, ButtonWidget_Init(&s->alt, 200, SaveLevelScreen_Alt);
ANCHOR_CENTRE, ANCHOR_CENTRE, -150, 120); TextWidget_Init(&s->mcEdit);
TextWidget_Make( &s->mcEdit,
ANCHOR_CENTRE, ANCHOR_CENTRE, 110, 120);
#endif #endif
Menu_MakeBack( &s->cancel, Menu_SwitchPause); Menu_InitBack(&s->cancel, Menu_SwitchPause);
Menu_MakeInput( &s->input, 500, &String_Empty, &desc, MenuInputWidget_Create(&s->input, 500, &String_Empty, &desc);
ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -30); TextWidget_Init(&s->desc);
#ifdef CC_BUILD_WEB
TextWidget_Make( &s->desc,
ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 115);
#else
TextWidget_Make( &s->desc,
ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 65);
#endif
Window_OpenKeyboard(); Window_OpenKeyboard();
} }
@ -1473,7 +1504,7 @@ static const struct ScreenVTABLE SaveLevelScreen_VTABLE = {
SaveLevelScreen_Render, Screen_BuildMesh, SaveLevelScreen_Render, Screen_BuildMesh,
SaveLevelScreen_KeyDown, Screen_TInput, SaveLevelScreen_KeyPress, SaveLevelScreen_TextChanged, SaveLevelScreen_KeyDown, Screen_TInput, SaveLevelScreen_KeyPress, SaveLevelScreen_TextChanged,
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Screen_Layout, SaveLevelScreen_ContextLost, SaveLevelScreen_ContextRecreated SaveLevelScreen_Layout, SaveLevelScreen_ContextLost, SaveLevelScreen_ContextRecreated
}; };
void SaveLevelScreen_Show(void) { void SaveLevelScreen_Show(void) {
struct SaveLevelScreen* s = &SaveLevelScreen; struct SaveLevelScreen* s = &SaveLevelScreen;

View File

@ -1948,7 +1948,7 @@ static struct Widget* touch_widgets[7] = {
static const struct TouchBindDesc { static const struct TouchBindDesc {
const char* text; const char* text;
cc_uint8 bind, width; cc_uint8 bind, width;
cc_int16 xOffset, yOffset; cc_int16 x, y;
} touchDescs[7] = { } touchDescs[7] = {
{ "<", KEYBIND_LEFT, 40, 10, 50 }, { "<", KEYBIND_LEFT, 40, 10, 50 },
{ ">", KEYBIND_RIGHT, 40, 150, 50 }, { ">", KEYBIND_RIGHT, 40, 150, 50 },
@ -2039,7 +2039,6 @@ static int TouchScreen_PointerUp(void* screen, int id, int x, int y) {
static void TouchScreen_Init(void* screen) { static void TouchScreen_Init(void* screen) {
struct TouchScreen* s = (struct TouchScreen*)screen; struct TouchScreen* s = (struct TouchScreen*)screen;
const struct TouchBindDesc* desc;
int i; int i;
s->widgets = touch_widgets; s->widgets = touch_widgets;
@ -2047,10 +2046,8 @@ static void TouchScreen_Init(void* screen) {
s->maxVertices = TOUCH_MAX_VERTICES; s->maxVertices = TOUCH_MAX_VERTICES;
for (i = 0; i < s->numWidgets; i++) { for (i = 0; i < s->numWidgets; i++) {
desc = &touchDescs[i]; ButtonWidget_Init(&s->btns[i], touchDescs[i].width, NULL);
ButtonWidget_Make(&s->btns[i], desc->width, NULL, i < 4 ? ANCHOR_MIN : ANCHOR_MAX, s->binds[i] = touchDescs[i].bind;
ANCHOR_MAX, desc->xOffset, desc->yOffset);
s->binds[i] = desc->bind;
} }
s->btns[5].MenuClick = TouchScreen_ModeClick; s->btns[5].MenuClick = TouchScreen_ModeClick;
@ -2066,9 +2063,11 @@ static void TouchScreen_Layout(void* screen) {
height = Gui_HUD->hotbar.height; height = Gui_HUD->hotbar.height;
for (i = 0; i < s->numWidgets; i++) { for (i = 0; i < s->numWidgets; i++) {
s->btns[i].yOffset = height + Display_ScaleY(touchDescs[i].yOffset); Widget_SetLocation(&s->btns[i], i < 4 ? ANCHOR_MIN : ANCHOR_MAX,
ANCHOR_MAX, touchDescs[i].x, touchDescs[i].y);
s->btns[i].yOffset += height;
Widget_Layout(&s->btns[i]);
} }
Screen_Layout(screen);
} }
static const struct ScreenVTABLE TouchScreen_VTABLE = { static const struct ScreenVTABLE TouchScreen_VTABLE = {

View File

@ -1510,12 +1510,12 @@ static const struct WidgetVTABLE MenuInputWidget_VTABLE = {
InputWidget_PointerDown, Widget_Pointer, Widget_PointerMove, InputWidget_PointerDown, Widget_Pointer, Widget_PointerMove,
MenuInputWidget_BuildMesh, MenuInputWidget_Render2 MenuInputWidget_BuildMesh, MenuInputWidget_Render2
}; };
void MenuInputWidget_Create(struct MenuInputWidget* w, int width, int height, const String* text, struct MenuInputDesc* desc) { void MenuInputWidget_Create(struct MenuInputWidget* w, int width, const String* text, struct MenuInputDesc* desc) {
InputWidget_Reset(&w->base); InputWidget_Reset(&w->base);
w->base.VTABLE = &MenuInputWidget_VTABLE; w->base.VTABLE = &MenuInputWidget_VTABLE;
w->minWidth = Display_ScaleX(width); w->minWidth = Display_ScaleX(width);
w->minHeight = Display_ScaleY(height); w->minHeight = Display_ScaleY(30);
w->desc = *desc; w->desc = *desc;
w->base.convertPercents = false; w->base.convertPercents = false;

View File

@ -198,7 +198,7 @@ struct MenuInputWidget {
}; };
#define MENUINPUTWIDGET_MAX 8 #define MENUINPUTWIDGET_MAX 8
CC_NOINLINE void MenuInputWidget_Create(struct MenuInputWidget* w, int width, int height, const String* text, struct MenuInputDesc* d); CC_NOINLINE void MenuInputWidget_Create(struct MenuInputWidget* w, int width, const String* text, struct MenuInputDesc* d);
/* Sets the font used, then redraws the input widget. */ /* Sets the font used, then redraws the input widget. */
CC_NOINLINE void MenuInputWidget_SetFont(struct MenuInputWidget* w, struct FontDesc* font); CC_NOINLINE void MenuInputWidget_SetFont(struct MenuInputWidget* w, struct FontDesc* font);