mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 21:21:06 +01:00 
			
		
		
		
	fix build for WideCharToMultiByte [3181ff1e] Full Unicode Support [6c9e73ac] Fix ImTextCountUtf8BytesFromChar and ImTextCharToUtf8, these APIs assume the input is an unicode code point, not UTF-16 [ba85665b] Add AddInputCharacterUTF16 for windows backend to handle WM_CHAR [fafdcaf0] Use Windows API to convert UTF-16 for ImFileOpen [dc7d5925] Use windows API to convert UTF-16 for clipboard
This commit is contained in:
		
							
								
								
									
										14
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -143,7 +143,11 @@ struct ImGuiTextFilter;             // Helper to parse and apply text filters (e | ||||
| typedef void* ImTextureID;          // User data to identify a texture (this is whatever to you want it to be! read the FAQ about ImTextureID in imgui.cpp) | ||||
| #endif | ||||
| typedef unsigned int ImGuiID;       // Unique ID used by widgets (typically hashed from a stack of string) | ||||
| typedef unsigned short ImWchar;     // A single U16 character for keyboard input/display. We encode them as multi bytes UTF-8 when used in strings. | ||||
| #ifndef ImWchar | ||||
| #define ImWchar ImWchar16 | ||||
| #endif | ||||
| typedef unsigned short ImWchar16;   // A single U16 character for keyboard input/display. We encode them as multi bytes UTF-8 when used in strings. | ||||
| typedef int ImWchar32;              // A single 32bit character for keyboard input/display, define ImWchar to ImWchar32 to use it. See imconfig.h . | ||||
| typedef int ImGuiCol;               // -> enum ImGuiCol_             // Enum: A color identifier for styling | ||||
| typedef int ImGuiCond;              // -> enum ImGuiCond_            // Enum: A condition for many Set*() functions | ||||
| typedef int ImGuiDataType;          // -> enum ImGuiDataType_        // Enum: A primary data type | ||||
| @@ -1465,6 +1469,7 @@ struct ImGuiIO | ||||
|  | ||||
|     // Functions | ||||
|     IMGUI_API void  AddInputCharacter(unsigned int c);          // Queue new character input | ||||
|     IMGUI_API void  AddInputCharacterUTF16(ImWchar16 c);        // Queue new character input from an UTF-16 character, it can be a surrogate | ||||
|     IMGUI_API void  AddInputCharactersUTF8(const char* str);    // Queue new characters input from an UTF-8 string | ||||
|     IMGUI_API void  ClearInputCharacters();                     // Clear the text input buffer manually | ||||
|  | ||||
| @@ -1507,6 +1512,7 @@ struct ImGuiIO | ||||
|     float       KeysDownDurationPrev[512];      // Previous duration the key has been down | ||||
|     float       NavInputsDownDuration[ImGuiNavInput_COUNT]; | ||||
|     float       NavInputsDownDurationPrev[ImGuiNavInput_COUNT]; | ||||
|     ImWchar16   Surrogate;                      // For AddInputCharacterUTF16 | ||||
|     ImVector<ImWchar> InputQueueCharacters;     // Queue of _characters_ input (obtained by platform back-end). Fill using AddInputCharacter() helper. | ||||
|  | ||||
|     IMGUI_API   ImGuiIO(); | ||||
| @@ -2092,7 +2098,11 @@ struct ImFontGlyphRangesBuilder | ||||
|     ImVector<ImU32> UsedChars;            // Store 1-bit per Unicode code point (0=unused, 1=used) | ||||
|  | ||||
|     ImFontGlyphRangesBuilder()          { Clear(); } | ||||
|     inline void     Clear()             { int size_in_bytes = (IM_UNICODE_CODEPOINT_MAX+1) / 8; UsedChars.resize(size_in_bytes / (int)sizeof(ImU32)); memset(UsedChars.Data, 0, (size_t)size_in_bytes); } | ||||
|     inline void     Clear()              | ||||
|     { | ||||
|         int MaxUnicode = sizeof(ImWchar) == 2 ? 0x10000 : 0x110000; | ||||
|         UsedChars.resize(MaxUnicode / sizeof(int)); memset(UsedChars.Data, 0, MaxUnicode / sizeof(int)); | ||||
|     } | ||||
|     inline bool     GetBit(int n) const { int off = (n >> 5); ImU32 mask = 1u << (n & 31); return (UsedChars[off] & mask) != 0; }  // Get bit n in the array | ||||
|     inline void     SetBit(int n)       { int off = (n >> 5); ImU32 mask = 1u << (n & 31); UsedChars[off] |= mask; }               // Set bit n in the array | ||||
|     inline void     AddChar(ImWchar c)  { SetBit(c); }                          // Add character | ||||
|   | ||||
		Reference in New Issue
	
	Block a user