mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-16 02:56:09 -04:00
C client: make MenuInputValidator smaller by using a VTABLE
This commit is contained in:
parent
1ddd9419e2
commit
5b36da921c
@ -14,7 +14,7 @@ typedef signed __int8 Int8;
|
||||
typedef signed __int16 Int16;
|
||||
typedef signed __int32 Int32;
|
||||
typedef signed __int64 Int64;
|
||||
#define FUNC_ATTRIB(args) __declspec(args)
|
||||
#define FUNC_NOINLINE __declspec(noinline)
|
||||
#elif __GNUC__
|
||||
#include <stdint.h>
|
||||
typedef uint8_t UInt8;
|
||||
@ -26,7 +26,7 @@ typedef int8_t Int8;
|
||||
typedef int16_t Int16;
|
||||
typedef int32_t Int32;
|
||||
typedef int64_t Int64;
|
||||
#define FUNC_ATTRIB(args) __attribute__((args))
|
||||
#define FUNC_NOINLINE __attribute__((noinline))
|
||||
#else
|
||||
#error "I don't recognise this compiler. You'll need to add required definitions in Core.h!"
|
||||
#endif
|
||||
|
10
src/Menus.c
10
src/Menus.c
@ -993,7 +993,8 @@ Int32 GenLevelScreen_GetInt(struct GenLevelScreen* s, Int32 index) {
|
||||
struct MenuInputWidget* input = &s->Inputs[index];
|
||||
String text = input->Base.Text;
|
||||
|
||||
if (!input->Validator.IsValidValue(&input->Validator, &text)) return 0;
|
||||
struct MenuInputValidator* v = &input->Validator;
|
||||
if (!v->VTABLE->IsValidValue(v, &text)) return 0;
|
||||
Int32 value; Convert_TryParseInt32(&text, &value); return value;
|
||||
}
|
||||
|
||||
@ -1006,7 +1007,8 @@ Int32 GenLevelScreen_GetSeedInt(struct GenLevelScreen* s, Int32 index) {
|
||||
return Random_Next(&rnd, Int32_MaxValue);
|
||||
}
|
||||
|
||||
if (!input->Validator.IsValidValue(&input->Validator, &text)) return 0;
|
||||
struct MenuInputValidator* v = &input->Validator;
|
||||
if (!v->VTABLE->IsValidValue(v, &text)) return 0;
|
||||
Int32 value; Convert_TryParseInt32(&text, &value); return value;
|
||||
}
|
||||
|
||||
@ -1961,9 +1963,9 @@ static void MenuOptionsScreen_FreeInput(struct MenuOptionsScreen* s) {
|
||||
|
||||
static void MenuOptionsScreen_EnterInput(struct MenuOptionsScreen* s) {
|
||||
String text = s->Input.Base.Text;
|
||||
struct MenuInputValidator* validator = &s->Input.Validator;
|
||||
struct MenuInputValidator* v = &s->Input.Validator;
|
||||
|
||||
if (validator->IsValidValue(validator, &text)) {
|
||||
if (v->VTABLE->IsValidValue(v, &text)) {
|
||||
MenuOptionsScreen_Set(s, s->ActiveI, &text);
|
||||
}
|
||||
|
||||
|
@ -35,10 +35,10 @@ void Platform_Exit(ReturnCode code);
|
||||
STRING_PURE String Platform_GetCommandLineArgs(void);
|
||||
ReturnCode Platform_StartShell(STRING_PURE String* args);
|
||||
|
||||
FUNC_ATTRIB(noinline) void* Mem_Alloc(UInt32 numElems, UInt32 elemsSize, const char* place);
|
||||
FUNC_ATTRIB(noinline) void* Mem_AllocCleared(UInt32 numElems, UInt32 elemsSize, const char* place);
|
||||
FUNC_ATTRIB(noinline) void* Mem_Realloc(void* mem, UInt32 numElems, UInt32 elemsSize, const char* place);
|
||||
FUNC_ATTRIB(noinline) void Mem_Free(void* mem);
|
||||
FUNC_NOINLINE void* Mem_Alloc(UInt32 numElems, UInt32 elemsSize, const char* place);
|
||||
FUNC_NOINLINE void* Mem_AllocCleared(UInt32 numElems, UInt32 elemsSize, const char* place);
|
||||
FUNC_NOINLINE void* Mem_Realloc(void* mem, UInt32 numElems, UInt32 elemsSize, const char* place);
|
||||
FUNC_NOINLINE void Mem_Free(void* mem);
|
||||
void Mem_Set(void* dst, UInt8 value, UInt32 numBytes);
|
||||
void Mem_Copy(void* dst, void* src, UInt32 numBytes);
|
||||
|
||||
@ -123,7 +123,6 @@ void Audio_Init(AudioHandle* handle, Int32 buffers);
|
||||
void Audio_Free(AudioHandle handle);
|
||||
struct AudioFormat* Audio_GetFormat(AudioHandle handle);
|
||||
void Audio_SetFormat(AudioHandle handle, struct AudioFormat* format);
|
||||
void Audio_SetVolume(AudioHandle handle, Real32 volume);
|
||||
void Audio_BufferData(AudioHandle handle, Int32 idx, void* data, UInt32 dataSize);
|
||||
void Audio_Play(AudioHandle handle);
|
||||
bool Audio_IsCompleted(AudioHandle handle, Int32 idx);
|
||||
|
@ -1297,49 +1297,47 @@ void InputWidget_Create(struct InputWidget* w, struct FontDesc* font, STRING_REF
|
||||
/*########################################################################################################################*
|
||||
*---------------------------------------------------MenuInputValidator----------------------------------------------------*
|
||||
*#########################################################################################################################*/
|
||||
static bool MenuInputValidator_AlwaysValidString(struct MenuInputValidator* v, STRING_PURE String* s) { return true; }
|
||||
|
||||
static void HexColValidator_GetRange(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
|
||||
static void Hex_Range(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
|
||||
String_AppendConst(range, "&7(#000000 - #FFFFFF)");
|
||||
}
|
||||
|
||||
static bool HexColValidator_IsValidChar(struct MenuInputValidator* v, char c) {
|
||||
static bool Hex_ValidChar(struct MenuInputValidator* v, char c) {
|
||||
return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f');
|
||||
}
|
||||
|
||||
static bool HexColValidator_IsValidString(struct MenuInputValidator* v, STRING_PURE String* s) {
|
||||
static bool Hex_ValidString(struct MenuInputValidator* v, STRING_PURE String* s) {
|
||||
return s->length <= 6;
|
||||
}
|
||||
|
||||
static bool HexColValidator_IsValidValue(struct MenuInputValidator* v, STRING_PURE String* s) {
|
||||
static bool Hex_ValidValue(struct MenuInputValidator* v, STRING_PURE String* s) {
|
||||
PackedCol col;
|
||||
return PackedCol_TryParseHex(s, &col);
|
||||
}
|
||||
|
||||
struct MenuInputValidatorVTABLE HexInputValidator_VTABLE = {
|
||||
Hex_Range, Hex_ValidChar, Hex_ValidString, Hex_ValidValue,
|
||||
};
|
||||
struct MenuInputValidator MenuInputValidator_Hex(void) {
|
||||
struct MenuInputValidator v;
|
||||
v.GetRange = HexColValidator_GetRange;
|
||||
v.IsValidChar = HexColValidator_IsValidChar;
|
||||
v.IsValidString = HexColValidator_IsValidString;
|
||||
v.IsValidValue = HexColValidator_IsValidValue;
|
||||
v.VTABLE = &HexInputValidator_VTABLE;
|
||||
return v;
|
||||
}
|
||||
|
||||
static void IntegerValidator_GetRange(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
|
||||
static void Integer_Range(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
|
||||
String_Format2(range, "&7(%i - %i)", &v->Meta_Int[0], &v->Meta_Int[1]);
|
||||
}
|
||||
|
||||
static bool IntegerValidator_IsValidChar(struct MenuInputValidator* v, char c) {
|
||||
static bool Integer_ValidChar(struct MenuInputValidator* v, char c) {
|
||||
return (c >= '0' && c <= '9') || c == '-';
|
||||
}
|
||||
|
||||
static bool IntegerValidator_IsValidString(struct MenuInputValidator* v, STRING_PURE String* s) {
|
||||
static bool Integer_ValidString(struct MenuInputValidator* v, STRING_PURE String* s) {
|
||||
Int32 value;
|
||||
if (s->length == 1 && s->buffer[0] == '-') return true; /* input is just a minus sign */
|
||||
return Convert_TryParseInt32(s, &value);
|
||||
}
|
||||
|
||||
static bool IntegerValidator_IsValidValue(struct MenuInputValidator* v, STRING_PURE String* s) {
|
||||
static bool Integer_ValidValue(struct MenuInputValidator* v, STRING_PURE String* s) {
|
||||
Int32 value;
|
||||
if (!Convert_TryParseInt32(s, &value)) return false;
|
||||
|
||||
@ -1347,75 +1345,78 @@ static bool IntegerValidator_IsValidValue(struct MenuInputValidator* v, STRING_P
|
||||
return min <= value && value <= max;
|
||||
}
|
||||
|
||||
struct MenuInputValidatorVTABLE IntegerInputValidator_VTABLE = {
|
||||
Integer_Range, Integer_ValidChar, Integer_ValidString, Integer_ValidValue,
|
||||
};
|
||||
struct MenuInputValidator MenuInputValidator_Integer(Int32 min, Int32 max) {
|
||||
struct MenuInputValidator v;
|
||||
v.GetRange = IntegerValidator_GetRange;
|
||||
v.IsValidChar = IntegerValidator_IsValidChar;
|
||||
v.IsValidString = IntegerValidator_IsValidString;
|
||||
v.IsValidValue = IntegerValidator_IsValidValue;
|
||||
|
||||
v.VTABLE = &IntegerInputValidator_VTABLE;
|
||||
v.Meta_Int[0] = min;
|
||||
v.Meta_Int[1] = max;
|
||||
return v;
|
||||
}
|
||||
|
||||
static void SeedValidator_GetRange(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
|
||||
static void Seed_Range(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
|
||||
String_AppendConst(range, "&7(an integer)");
|
||||
}
|
||||
|
||||
struct MenuInputValidatorVTABLE SeedInputValidator_VTABLE = {
|
||||
Seed_Range, Integer_ValidChar, Integer_ValidString, Integer_ValidValue,
|
||||
};
|
||||
struct MenuInputValidator MenuInputValidator_Seed(void) {
|
||||
struct MenuInputValidator v = MenuInputValidator_Integer(Int32_MinValue, Int32_MaxValue);
|
||||
v.GetRange = SeedValidator_GetRange;
|
||||
v.VTABLE = &SeedInputValidator_VTABLE;
|
||||
return v;
|
||||
}
|
||||
|
||||
static void RealValidator_GetRange(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
|
||||
static void Real_Range(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
|
||||
String_Format2(range, "&7(%f2 - %f2)", &v->Meta_Real[0], &v->Meta_Real[1]);
|
||||
}
|
||||
|
||||
static bool RealValidator_IsValidChar(struct MenuInputValidator* v, char c) {
|
||||
static bool Real_ValidChar(struct MenuInputValidator* v, char c) {
|
||||
return (c >= '0' && c <= '9') || c == '-' || c == '.' || c == ',';
|
||||
}
|
||||
|
||||
static bool RealValidator_IsValidString(struct MenuInputValidator* v, STRING_PURE String* s) {
|
||||
static bool Real_ValidString(struct MenuInputValidator* v, STRING_PURE String* s) {
|
||||
Real32 value;
|
||||
if (s->length == 1 && RealValidator_IsValidChar(v, s->buffer[0])) return true;
|
||||
if (s->length == 1 && Real_ValidChar(v, s->buffer[0])) return true;
|
||||
return Convert_TryParseReal32(s, &value);
|
||||
}
|
||||
|
||||
static bool RealValidator_IsValidValue(struct MenuInputValidator* v, STRING_PURE String* s) {
|
||||
static bool Real_ValidValue(struct MenuInputValidator* v, STRING_PURE String* s) {
|
||||
Real32 value;
|
||||
if (!Convert_TryParseReal32(s, &value)) return false;
|
||||
Real32 min = v->Meta_Real[0], max = v->Meta_Real[1];
|
||||
return min <= value && value <= max;
|
||||
}
|
||||
|
||||
struct MenuInputValidatorVTABLE RealInputValidator_VTABLE = {
|
||||
Real_Range, Real_ValidChar, Real_ValidString, Real_ValidValue,
|
||||
};
|
||||
struct MenuInputValidator MenuInputValidator_Real(Real32 min, Real32 max) {
|
||||
struct MenuInputValidator v;
|
||||
v.GetRange = RealValidator_GetRange;
|
||||
v.IsValidChar = RealValidator_IsValidChar;
|
||||
v.IsValidString = RealValidator_IsValidString;
|
||||
v.IsValidValue = RealValidator_IsValidValue;
|
||||
v.VTABLE = &RealInputValidator_VTABLE;
|
||||
v.Meta_Real[0] = min;
|
||||
v.Meta_Real[1] = max;
|
||||
return v;
|
||||
}
|
||||
|
||||
static void PathValidator_GetRange(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
|
||||
static void Path_Range(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
|
||||
String_AppendConst(range, "&7(Enter name)");
|
||||
}
|
||||
|
||||
static bool PathValidator_IsValidChar(struct MenuInputValidator* v, char c) {
|
||||
static bool Path_ValidChar(struct MenuInputValidator* v, char c) {
|
||||
return !(c == '/' || c == '\\' || c == '?' || c == '*' || c == ':'
|
||||
|| c == '<' || c == '>' || c == '|' || c == '"' || c == '.');
|
||||
}
|
||||
static bool Path_ValidString(struct MenuInputValidator* v, STRING_PURE String* s) { return true; }
|
||||
|
||||
struct MenuInputValidatorVTABLE PathInputValidator_VTABLE = {
|
||||
Path_Range, Path_ValidChar, Path_ValidString, Path_ValidString,
|
||||
};
|
||||
struct MenuInputValidator MenuInputValidator_Path(void) {
|
||||
struct MenuInputValidator v;
|
||||
v.GetRange = PathValidator_GetRange;
|
||||
v.IsValidChar = PathValidator_IsValidChar;
|
||||
v.IsValidString = MenuInputValidator_AlwaysValidString;
|
||||
v.IsValidValue = MenuInputValidator_AlwaysValidString;
|
||||
v.VTABLE = &PathInputValidator_VTABLE;
|
||||
return v;
|
||||
}
|
||||
|
||||
@ -1426,24 +1427,24 @@ struct MenuInputValidator MenuInputValidator_Enum(const char** names, UInt32 nam
|
||||
return v;
|
||||
}
|
||||
|
||||
static void StringValidator_GetRange(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
|
||||
static void String_Range(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
|
||||
String_AppendConst(range, "&7(Enter text)");
|
||||
}
|
||||
|
||||
static bool StringValidator_IsValidChar(struct MenuInputValidator* v, char c) {
|
||||
static bool String_ValidChar(struct MenuInputValidator* v, char c) {
|
||||
return c != '&' && Utils_IsValidInputChar(c, true);
|
||||
}
|
||||
|
||||
static bool StringValidator_IsValidString(struct MenuInputValidator* v, STRING_PURE String* s) {
|
||||
static bool String_ValidString(struct MenuInputValidator* v, STRING_PURE String* s) {
|
||||
return s->length <= STRING_SIZE;
|
||||
}
|
||||
|
||||
struct MenuInputValidatorVTABLE StringInputValidator_VTABLE = {
|
||||
String_Range, String_ValidChar, String_ValidString, String_ValidString,
|
||||
};
|
||||
struct MenuInputValidator MenuInputValidator_String(void) {
|
||||
struct MenuInputValidator v;
|
||||
v.GetRange = StringValidator_GetRange;
|
||||
v.IsValidChar = StringValidator_IsValidChar;
|
||||
v.IsValidString = StringValidator_IsValidString;
|
||||
v.IsValidValue = StringValidator_IsValidString;
|
||||
v.VTABLE = &StringInputValidator_VTABLE;
|
||||
return v;
|
||||
}
|
||||
|
||||
@ -1472,8 +1473,8 @@ static void MenuInputWidget_RemakeTexture(void* widget) {
|
||||
|
||||
char rangeBuffer[STRING_SIZE];
|
||||
String range = String_FromArray(rangeBuffer);
|
||||
struct MenuInputValidator* validator = &w->Validator;
|
||||
validator->GetRange(validator, &range);
|
||||
struct MenuInputValidator* v = &w->Validator;
|
||||
v->VTABLE->GetRange(v, &range);
|
||||
|
||||
/* Ensure we don't have 0 text height */
|
||||
if (size.Height == 0) {
|
||||
@ -1516,13 +1517,13 @@ static bool MenuInputWidget_AllowedChar(void* widget, char c) {
|
||||
if (c == '&' || !Utils_IsValidInputChar(c, true)) return false;
|
||||
struct MenuInputValidator* v = &((struct MenuInputWidget*)w)->Validator;
|
||||
|
||||
if (!v->IsValidChar(v, c)) return false;
|
||||
if (!v->VTABLE->IsValidChar(v, c)) return false;
|
||||
Int32 maxChars = w->GetMaxLines() * INPUTWIDGET_LEN;
|
||||
if (w->Text.length == maxChars) return false;
|
||||
|
||||
/* See if the new string is in valid format */
|
||||
InputWidget_AppendChar(w, c);
|
||||
bool valid = v->IsValidString(v, &w->Text);
|
||||
bool valid = v->VTABLE->IsValidString(v, &w->Text);
|
||||
InputWidget_DeleteChar(w);
|
||||
return valid;
|
||||
}
|
||||
|
@ -16,9 +16,9 @@ struct TextWidget {
|
||||
bool ReducePadding;
|
||||
PackedCol Col;
|
||||
};
|
||||
void TextWidget_Make(struct TextWidget* widget);
|
||||
void TextWidget_Create(struct TextWidget* widget, STRING_PURE String* text, struct FontDesc* font);
|
||||
void TextWidget_Set(struct TextWidget* widget, STRING_PURE String* text, struct FontDesc* font);
|
||||
void TextWidget_Make(struct TextWidget* w);
|
||||
void TextWidget_Create(struct TextWidget* w, STRING_PURE String* text, struct FontDesc* font);
|
||||
void TextWidget_Set(struct TextWidget* w, STRING_PURE String* text, struct FontDesc* font);
|
||||
|
||||
|
||||
typedef void (*Button_Get)(STRING_TRANSIENT String* raw);
|
||||
@ -32,8 +32,8 @@ struct ButtonWidget {
|
||||
Button_Get GetValue;
|
||||
Button_Set SetValue;
|
||||
};
|
||||
void ButtonWidget_Create(struct ButtonWidget* widget, Int32 minWidth, STRING_PURE String* text, struct FontDesc* font, Widget_LeftClick onClick);
|
||||
void ButtonWidget_Set(struct ButtonWidget* widget, STRING_PURE String* text, struct FontDesc* font);
|
||||
void ButtonWidget_Create(struct ButtonWidget* w, Int32 minWidth, STRING_PURE String* text, struct FontDesc* font, Widget_LeftClick onClick);
|
||||
void ButtonWidget_Set(struct ButtonWidget* w, STRING_PURE String* text, struct FontDesc* font);
|
||||
|
||||
|
||||
struct ScrollbarWidget {
|
||||
@ -43,7 +43,7 @@ struct ScrollbarWidget {
|
||||
Int32 MouseOffset;
|
||||
bool DraggingMouse;
|
||||
};
|
||||
void ScrollbarWidget_Create(struct ScrollbarWidget* widget);
|
||||
void ScrollbarWidget_Create(struct ScrollbarWidget* w);
|
||||
|
||||
|
||||
struct HotbarWidget {
|
||||
@ -54,7 +54,7 @@ struct HotbarWidget {
|
||||
Real32 ScrollAcc;
|
||||
bool AltHandled;
|
||||
};
|
||||
void HotbarWidget_Create(struct HotbarWidget* widget);
|
||||
void HotbarWidget_Create(struct HotbarWidget* w);
|
||||
|
||||
|
||||
struct TableWidget {
|
||||
@ -73,10 +73,10 @@ struct TableWidget {
|
||||
Int32 LastX, LastY;
|
||||
};
|
||||
|
||||
void TableWidget_Create(struct TableWidget* widget);
|
||||
void TableWidget_SetBlockTo(struct TableWidget* widget, BlockID block);
|
||||
void TableWidget_OnInventoryChanged(struct TableWidget* widget);
|
||||
void TableWidget_MakeDescTex(struct TableWidget* widget, BlockID block);
|
||||
void TableWidget_Create(struct TableWidget* w);
|
||||
void TableWidget_SetBlockTo(struct TableWidget* w, BlockID block);
|
||||
void TableWidget_OnInventoryChanged(struct TableWidget* w);
|
||||
void TableWidget_MakeDescTex(struct TableWidget* w, BlockID block);
|
||||
|
||||
|
||||
#define INPUTWIDGET_MAX_LINES 3
|
||||
@ -107,22 +107,25 @@ struct InputWidget {
|
||||
Real64 CaretAccumulator;
|
||||
};
|
||||
|
||||
void InputWidget_Create(struct InputWidget* widget, struct FontDesc* font, STRING_REF String* prefix);
|
||||
void InputWidget_Create(struct InputWidget* w, struct FontDesc* font, STRING_REF String* prefix);
|
||||
/* Clears all the characters from the text buffer. Deletes the native texture. */
|
||||
void InputWidget_Clear(struct InputWidget* widget);
|
||||
void InputWidget_Clear(struct InputWidget* w);
|
||||
/* Appends a sequence of characters to current text buffer. May recreate the native texture. */
|
||||
void InputWidget_AppendString(struct InputWidget* widget, STRING_PURE String* text);
|
||||
void InputWidget_AppendString(struct InputWidget* w, STRING_PURE String* text);
|
||||
/* Appends a single character to current text buffer. May recreate the native texture. */
|
||||
void InputWidget_Append(struct InputWidget* widget, char c);
|
||||
void InputWidget_Append(struct InputWidget* w, char c);
|
||||
|
||||
|
||||
struct MenuInputValidator;
|
||||
struct MenuInputValidator {
|
||||
void (*GetRange)(struct MenuInputValidator* validator, STRING_TRANSIENT String* range);
|
||||
bool (*IsValidChar)(struct MenuInputValidator* validator, char c);
|
||||
bool (*IsValidString)(struct MenuInputValidator* validator, STRING_PURE String* s);
|
||||
bool (*IsValidValue)(struct MenuInputValidator* validator, STRING_PURE String* s);
|
||||
struct MenuInputValidatorVTABLE {
|
||||
void (*GetRange)(struct MenuInputValidator* v, STRING_TRANSIENT String* range);
|
||||
bool (*IsValidChar)(struct MenuInputValidator* v, char c);
|
||||
bool (*IsValidString)(struct MenuInputValidator* v, STRING_PURE String* s);
|
||||
bool (*IsValidValue)(struct MenuInputValidator* v, STRING_PURE String* s);
|
||||
};
|
||||
|
||||
struct MenuInputValidator {
|
||||
struct MenuInputValidatorVTABLE* VTABLE;
|
||||
union {
|
||||
void* Meta_Ptr[2];
|
||||
Int32 Meta_Int[2];
|
||||
@ -144,7 +147,7 @@ struct MenuInputWidget {
|
||||
struct MenuInputValidator Validator;
|
||||
char __TextBuffer[INPUTWIDGET_LEN];
|
||||
};
|
||||
void MenuInputWidget_Create(struct MenuInputWidget* widget, Int32 width, Int32 height, STRING_PURE String* text, struct FontDesc* font, struct MenuInputValidator* validator);
|
||||
void MenuInputWidget_Create(struct MenuInputWidget* w, Int32 width, Int32 height, STRING_PURE String* text, struct FontDesc* font, struct MenuInputValidator* validator);
|
||||
|
||||
|
||||
struct ChatInputWidget {
|
||||
@ -155,7 +158,7 @@ struct ChatInputWidget {
|
||||
String OrigStr;
|
||||
};
|
||||
|
||||
void ChatInputWidget_Create(struct ChatInputWidget* widget, struct FontDesc* font);
|
||||
void ChatInputWidget_Create(struct ChatInputWidget* w, struct FontDesc* font);
|
||||
|
||||
|
||||
#define TEXTGROUPWIDGET_MAX_LINES 30
|
||||
@ -170,13 +173,13 @@ struct TextGroupWidget {
|
||||
char* Buffer;
|
||||
};
|
||||
|
||||
void TextGroupWidget_Create(struct TextGroupWidget* widget, Int32 linesCount, struct FontDesc* font, struct FontDesc* underlineFont, STRING_REF struct Texture* textures, STRING_REF char* buffer);
|
||||
void TextGroupWidget_SetUsePlaceHolder(struct TextGroupWidget* widget, Int32 index, bool placeHolder);
|
||||
void TextGroupWidget_PushUpAndReplaceLast(struct TextGroupWidget* widget, STRING_PURE String* text);
|
||||
Int32 TextGroupWidget_UsedHeight(struct TextGroupWidget* widget);
|
||||
void TextGroupWidget_GetSelected(struct TextGroupWidget* widget, STRING_TRANSIENT String* text, Int32 mouseX, Int32 mouseY);
|
||||
void TextGroupWidget_GetText(struct TextGroupWidget* widget, Int32 index, STRING_TRANSIENT String* text);
|
||||
void TextGroupWidget_SetText(struct TextGroupWidget* widget, Int32 index, STRING_PURE String* text);
|
||||
void TextGroupWidget_Create(struct TextGroupWidget* w, Int32 linesCount, struct FontDesc* font, struct FontDesc* underlineFont, STRING_REF struct Texture* textures, STRING_REF char* buffer);
|
||||
void TextGroupWidget_SetUsePlaceHolder(struct TextGroupWidget* w, Int32 index, bool placeHolder);
|
||||
void TextGroupWidget_PushUpAndReplaceLast(struct TextGroupWidget* w, STRING_PURE String* text);
|
||||
Int32 TextGroupWidget_UsedHeight(struct TextGroupWidget* w);
|
||||
void TextGroupWidget_GetSelected(struct TextGroupWidget* w, STRING_TRANSIENT String* text, Int32 mouseX, Int32 mouseY);
|
||||
void TextGroupWidget_GetText(struct TextGroupWidget* w, Int32 index, STRING_TRANSIENT String* text);
|
||||
void TextGroupWidget_SetText(struct TextGroupWidget* w, Int32 index, STRING_PURE String* text);
|
||||
|
||||
|
||||
struct PlayerListWidget {
|
||||
@ -189,8 +192,8 @@ struct PlayerListWidget {
|
||||
UInt16 IDs[TABLIST_MAX_NAMES * 2];
|
||||
struct Texture Textures[TABLIST_MAX_NAMES * 2];
|
||||
};
|
||||
void PlayerListWidget_Create(struct PlayerListWidget* widget, struct FontDesc* font, bool classic);
|
||||
void PlayerListWidget_GetNameUnder(struct PlayerListWidget* widget, Int32 mouseX, Int32 mouseY, STRING_TRANSIENT String* name);
|
||||
void PlayerListWidget_Create(struct PlayerListWidget* w, struct FontDesc* font, bool classic);
|
||||
void PlayerListWidget_GetNameUnder(struct PlayerListWidget* w, Int32 mouseX, Int32 mouseY, STRING_TRANSIENT String* name);
|
||||
|
||||
|
||||
typedef void (*SpecialInputAppendFunc)(void* userData, char c);
|
||||
@ -212,7 +215,7 @@ struct SpecialInputWidget {
|
||||
char __ColBuffer[DRAWER2D_MAX_COLS * 4];
|
||||
};
|
||||
|
||||
void SpecialInputWidget_Create(struct SpecialInputWidget* widget, struct FontDesc* font, struct InputWidget* appendObj);
|
||||
void SpecialInputWidget_UpdateCols(struct SpecialInputWidget* widget);
|
||||
void SpecialInputWidget_SetActive(struct SpecialInputWidget* widget, bool active);
|
||||
void SpecialInputWidget_Create(struct SpecialInputWidget* w, struct FontDesc* font, struct InputWidget* appendObj);
|
||||
void SpecialInputWidget_UpdateCols(struct SpecialInputWidget* w);
|
||||
void SpecialInputWidget_SetActive(struct SpecialInputWidget* w, bool active);
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user