MCPcopy Create free account
hub / github.com/GPUOpen-LibrariesAndSDKs/Cauldron / InputTextFilterCharacter

Function InputTextFilterCharacter

libs/imgui/imgui.cpp:8347–8398  ·  view source on GitHub ↗

Return false to discard a character.

Source from the content-addressed store, hash-verified

8345
8346// Return false to discard a character.
8347static bool InputTextFilterCharacter(unsigned int* p_char, ImGuiInputTextFlags flags, ImGuiTextEditCallback callback, void* user_data)
8348{
8349 unsigned int c = *p_char;
8350
8351 if (c < 128 && c != ' ' && !isprint((int)(c & 0xFF)))
8352 {
8353 bool pass = false;
8354 pass |= (c == '\n' && (flags & ImGuiInputTextFlags_Multiline));
8355 pass |= (c == '\t' && (flags & ImGuiInputTextFlags_AllowTabInput));
8356 if (!pass)
8357 return false;
8358 }
8359
8360 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.
8361 return false;
8362
8363 if (flags & (ImGuiInputTextFlags_CharsDecimal | ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_CharsUppercase | ImGuiInputTextFlags_CharsNoBlank))
8364 {
8365 if (flags & ImGuiInputTextFlags_CharsDecimal)
8366 if (!(c >= '0' && c <= '9') && (c != '.') && (c != '-') && (c != '+') && (c != '*') && (c != '/'))
8367 return false;
8368
8369 if (flags & ImGuiInputTextFlags_CharsHexadecimal)
8370 if (!(c >= '0' && c <= '9') && !(c >= 'a' && c <= 'f') && !(c >= 'A' && c <= 'F'))
8371 return false;
8372
8373 if (flags & ImGuiInputTextFlags_CharsUppercase)
8374 if (c >= 'a' && c <= 'z')
8375 *p_char = (c += (unsigned int)('A'-'a'));
8376
8377 if (flags & ImGuiInputTextFlags_CharsNoBlank)
8378 if (ImCharIsSpace(c))
8379 return false;
8380 }
8381
8382 if (flags & ImGuiInputTextFlags_CallbackCharFilter)
8383 {
8384 ImGuiTextEditCallbackData callback_data;
8385 memset(&callback_data, 0, sizeof(ImGuiTextEditCallbackData));
8386 callback_data.EventFlag = ImGuiInputTextFlags_CallbackCharFilter;
8387 callback_data.EventChar = (ImWchar)c;
8388 callback_data.Flags = flags;
8389 callback_data.UserData = user_data;
8390 if (callback(&callback_data) != 0)
8391 return false;
8392 *p_char = callback_data.EventChar;
8393 if (!callback_data.EventChar)
8394 return false;
8395 }
8396
8397 return true;
8398}
8399
8400// Edit a string of text
8401// 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 1

ImCharIsSpaceFunction · 0.85

Tested by

no test coverage detected