MCPcopy Create free account
hub / github.com/bulletphysics/bullet3 / InputTextFilterCharacter

Function InputTextFilterCharacter

examples/ThirdPartyLibs/imgui/imgui.cpp:10011–10062  ·  view source on GitHub ↗

Return false to discard a character.

Source from the content-addressed store, hash-verified

10009
10010// Return false to discard a character.
10011static bool InputTextFilterCharacter(unsigned int* p_char, ImGuiInputTextFlags flags, ImGuiTextEditCallback callback, void* user_data)
10012{
10013 unsigned int c = *p_char;
10014
10015 if (c < 128 && c != ' ' && !isprint((int)(c & 0xFF)))
10016 {
10017 bool pass = false;
10018 pass |= (c == '\n' && (flags & ImGuiInputTextFlags_Multiline));
10019 pass |= (c == '\t' && (flags & ImGuiInputTextFlags_AllowTabInput));
10020 if (!pass)
10021 return false;
10022 }
10023
10024 if (c >= 0xE000 && c <= 0xF8FF) // Filter private Unicode range. I don't imagine anybody would want to input them. GLFW on OSX seems to send private characters for special keys like arrow keys.
10025 return false;
10026
10027 if (flags & (ImGuiInputTextFlags_CharsDecimal | ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_CharsUppercase | ImGuiInputTextFlags_CharsNoBlank))
10028 {
10029 if (flags & ImGuiInputTextFlags_CharsDecimal)
10030 if (!(c >= '0' && c <= '9') && (c != '.') && (c != '-') && (c != '+') && (c != '*') && (c != '/'))
10031 return false;
10032
10033 if (flags & ImGuiInputTextFlags_CharsHexadecimal)
10034 if (!(c >= '0' && c <= '9') && !(c >= 'a' && c <= 'f') && !(c >= 'A' && c <= 'F'))
10035 return false;
10036
10037 if (flags & ImGuiInputTextFlags_CharsUppercase)
10038 if (c >= 'a' && c <= 'z')
10039 *p_char = (c += (unsigned int)('A' - 'a'));
10040
10041 if (flags & ImGuiInputTextFlags_CharsNoBlank)
10042 if (ImCharIsSpace(c))
10043 return false;
10044 }
10045
10046 if (flags & ImGuiInputTextFlags_CallbackCharFilter)
10047 {
10048 ImGuiTextEditCallbackData callback_data;
10049 memset(&callback_data, 0, sizeof(ImGuiTextEditCallbackData));
10050 callback_data.EventFlag = ImGuiInputTextFlags_CallbackCharFilter;
10051 callback_data.EventChar = (ImWchar)c;
10052 callback_data.Flags = flags;
10053 callback_data.UserData = user_data;
10054 if (callback(&callback_data) != 0)
10055 return false;
10056 *p_char = callback_data.EventChar;
10057 if (!callback_data.EventChar)
10058 return false;
10059 }
10060
10061 return true;
10062}
10063
10064// Edit a string of text
10065// NB: when active, hold on a privately held copy of the text (and apply back to 'buf'). So changing 'buf' while active has no effect.

Callers 1

InputTextExMethod · 0.85

Calls 2

ImCharIsSpaceFunction · 0.85
callbackFunction · 0.50

Tested by

no test coverage detected