mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-26 05:27:01 +00:00
Comments
This commit is contained in:
parent
185744e697
commit
2f9ef13be3
22
imgui.cpp
22
imgui.cpp
@ -289,6 +289,7 @@
|
|||||||
- text edit: flag to disable live update of the user buffer.
|
- text edit: flag to disable live update of the user buffer.
|
||||||
- text edit: field resize behavior - field could stretch when being edited? hover tooltip shows more text?
|
- text edit: field resize behavior - field could stretch when being edited? hover tooltip shows more text?
|
||||||
- text edit: add multi-line text edit
|
- text edit: add multi-line text edit
|
||||||
|
- tree: reformulate OpenNextNode() into SetNextWindowCollapsed() api
|
||||||
- tree: add treenode/treepush int variants? because (void*) cast from int warns on some platforms/settings
|
- tree: add treenode/treepush int variants? because (void*) cast from int warns on some platforms/settings
|
||||||
- settings: write more decent code to allow saving/loading new fields
|
- settings: write more decent code to allow saving/loading new fields
|
||||||
- settings: api for per-tool simple persistent data (bool,int,float) in .ini file
|
- settings: api for per-tool simple persistent data (bool,int,float) in .ini file
|
||||||
@ -531,8 +532,8 @@ ImGuiStyle::ImGuiStyle()
|
|||||||
Colors[ImGuiCol_TooltipBg] = ImVec4(0.05f, 0.05f, 0.10f, 0.90f);
|
Colors[ImGuiCol_TooltipBg] = ImVec4(0.05f, 0.05f, 0.10f, 0.90f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Statically allocated font atlas. This is merely a maneuver to keep its definition at the bottom of the .H file.
|
// Statically allocated font atlas. This is merely a maneuver to keep ImFontAtlas definition at the bottom of the .h file (otherwise it'd be inside ImGuiIO)
|
||||||
// Because we cannot new() at this point (before users may define IO.MemAllocFn)
|
// Also we wouldn't be able to new() one at this point, before users may define IO.MemAllocFn.
|
||||||
static ImFontAtlas GDefaultFontAtlas;
|
static ImFontAtlas GDefaultFontAtlas;
|
||||||
|
|
||||||
ImGuiIO::ImGuiIO()
|
ImGuiIO::ImGuiIO()
|
||||||
@ -564,7 +565,7 @@ ImGuiIO::ImGuiIO()
|
|||||||
|
|
||||||
// Pass in translated ASCII characters for text input.
|
// Pass in translated ASCII characters for text input.
|
||||||
// - with glfw you can get those from the callback set in glfwSetCharCallback()
|
// - with glfw you can get those from the callback set in glfwSetCharCallback()
|
||||||
// - on Windows you can get those using ToAscii+keyboard state, or via the VM_CHAR message
|
// - on Windows you can get those using ToAscii+keyboard state, or via the WM_CHAR message
|
||||||
void ImGuiIO::AddInputCharacter(ImWchar c)
|
void ImGuiIO::AddInputCharacter(ImWchar c)
|
||||||
{
|
{
|
||||||
const size_t n = ImStrlenW(InputCharacters);
|
const size_t n = ImStrlenW(InputCharacters);
|
||||||
@ -590,7 +591,7 @@ const float PI = 3.14159265358979323846f;
|
|||||||
#define IM_INT_MAX 2147483647
|
#define IM_INT_MAX 2147483647
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Play it nice with Windows users. Notepad in 2014 still doesn't display text data with Unix-style \n.
|
// Play it nice with Windows users. Notepad in 2015 still doesn't display text data with Unix-style \n.
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#define STR_NEWLINE "\r\n"
|
#define STR_NEWLINE "\r\n"
|
||||||
#else
|
#else
|
||||||
@ -649,8 +650,7 @@ static char* ImStrdup(const char *str)
|
|||||||
static size_t ImStrlenW(const ImWchar* str)
|
static size_t ImStrlenW(const ImWchar* str)
|
||||||
{
|
{
|
||||||
size_t n = 0;
|
size_t n = 0;
|
||||||
while (*str++)
|
while (*str++) n++;
|
||||||
n++;
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -935,7 +935,7 @@ struct ImGuiTextEditState
|
|||||||
float ScrollX;
|
float ScrollX;
|
||||||
STB_TexteditState StbState;
|
STB_TexteditState StbState;
|
||||||
float CursorAnim;
|
float CursorAnim;
|
||||||
ImVec2 LastCursorPos; // Cursor position in screen space to be used by IME callback.
|
ImVec2 InputCursorScreenPos; // Cursor position in screen space to be used by IME callback.
|
||||||
bool SelectedAllMouseLock;
|
bool SelectedAllMouseLock;
|
||||||
ImFont* Font;
|
ImFont* Font;
|
||||||
float FontSize;
|
float FontSize;
|
||||||
@ -5362,7 +5362,7 @@ bool ImGui::InputText(const char* label, char* buf, size_t buf_size, ImGuiInputT
|
|||||||
edit_state.Width = w;
|
edit_state.Width = w;
|
||||||
stb_textedit_initialize_state(&edit_state.StbState, true);
|
stb_textedit_initialize_state(&edit_state.StbState, true);
|
||||||
edit_state.CursorAnimReset();
|
edit_state.CursorAnimReset();
|
||||||
edit_state.LastCursorPos = ImVec2(-1.f,-1.f);
|
edit_state.InputCursorScreenPos = ImVec2(-1.f,-1.f);
|
||||||
|
|
||||||
if (tab_focus_requested || is_ctrl_down)
|
if (tab_focus_requested || is_ctrl_down)
|
||||||
select_all = true;
|
select_all = true;
|
||||||
@ -5610,11 +5610,11 @@ bool ImGui::InputText(const char* label, char* buf, size_t buf_size, ImGuiInputT
|
|||||||
if (g.InputTextState.CursorIsVisible())
|
if (g.InputTextState.CursorIsVisible())
|
||||||
window->DrawList->AddRect(cursor_pos - font_off_up + ImVec2(0,2), cursor_pos + font_off_dn - ImVec2(0,3), window->Color(ImGuiCol_Text));
|
window->DrawList->AddRect(cursor_pos - font_off_up + ImVec2(0,2), cursor_pos + font_off_dn - ImVec2(0,3), window->Color(ImGuiCol_Text));
|
||||||
|
|
||||||
// Notify OS of text input position
|
// Notify OS of text input position for advanced IME
|
||||||
if (io.ImeSetInputScreenPosFn && ImLengthSqr(edit_state.LastCursorPos - cursor_pos) > 0.0001f)
|
if (io.ImeSetInputScreenPosFn && ImLengthSqr(edit_state.InputCursorScreenPos - cursor_pos) > 0.0001f)
|
||||||
io.ImeSetInputScreenPosFn((int)cursor_pos.x - 1, (int)(cursor_pos.y - window->FontSize())); // -1 x offset so that Windows IME can cover our cursor. Bit of an extra nicety.
|
io.ImeSetInputScreenPosFn((int)cursor_pos.x - 1, (int)(cursor_pos.y - window->FontSize())); // -1 x offset so that Windows IME can cover our cursor. Bit of an extra nicety.
|
||||||
|
|
||||||
edit_state.LastCursorPos = cursor_pos;
|
edit_state.InputCursorScreenPos = cursor_pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderText(ImVec2(frame_bb.Max.x + style.ItemInnerSpacing.x, frame_bb.Min.y + style.FramePadding.y), label);
|
RenderText(ImVec2(frame_bb.Max.x + style.ItemInnerSpacing.x, frame_bb.Min.y + style.FramePadding.y), label);
|
||||||
|
21
imgui.h
21
imgui.h
@ -391,7 +391,7 @@ enum ImGuiInputTextFlags_
|
|||||||
ImGuiInputTextFlags_CharsHexadecimal = 1 << 1, // Allow 0123456789ABCDEFabcdef
|
ImGuiInputTextFlags_CharsHexadecimal = 1 << 1, // Allow 0123456789ABCDEFabcdef
|
||||||
ImGuiInputTextFlags_CharsUppercase = 1 << 2, // Turn a..z into A..Z
|
ImGuiInputTextFlags_CharsUppercase = 1 << 2, // Turn a..z into A..Z
|
||||||
ImGuiInputTextFlags_CharsNoBlank = 1 << 3, // Filter out spaces, tabs
|
ImGuiInputTextFlags_CharsNoBlank = 1 << 3, // Filter out spaces, tabs
|
||||||
ImGuiInputTextFlags_AutoSelectAll = 1 << 4, // Select entire text when first taking focus
|
ImGuiInputTextFlags_AutoSelectAll = 1 << 4, // Select entire text when first taking mouse focus
|
||||||
ImGuiInputTextFlags_EnterReturnsTrue = 1 << 5, // Return 'true' when Enter is pressed (as opposed to when the value was modified)
|
ImGuiInputTextFlags_EnterReturnsTrue = 1 << 5, // Return 'true' when Enter is pressed (as opposed to when the value was modified)
|
||||||
ImGuiInputTextFlags_CallbackCompletion = 1 << 6, // Call user function on pressing TAB (for completion handling)
|
ImGuiInputTextFlags_CallbackCompletion = 1 << 6, // Call user function on pressing TAB (for completion handling)
|
||||||
ImGuiInputTextFlags_CallbackHistory = 1 << 7, // Call user function on pressing Up/Down arrows (for history handling)
|
ImGuiInputTextFlags_CallbackHistory = 1 << 7, // Call user function on pressing Up/Down arrows (for history handling)
|
||||||
@ -498,7 +498,7 @@ enum ImGuiColorEditMode_
|
|||||||
enum ImGuiSetCondition_
|
enum ImGuiSetCondition_
|
||||||
{
|
{
|
||||||
ImGuiSetCondition_Always = 1 << 0, // Set the variable
|
ImGuiSetCondition_Always = 1 << 0, // Set the variable
|
||||||
ImGuiSetCondition_FirstUseThisSession = 1 << 1, // Only set the variable on the first call for this window (once per session)
|
ImGuiSetCondition_FirstUseThisSession = 1 << 1, // Only set the variable on the first call per runtime session
|
||||||
ImGuiSetCondition_FirstUseEver = 1 << 2 // Only set the variable if the window doesn't exist in the .ini file
|
ImGuiSetCondition_FirstUseEver = 1 << 2 // Only set the variable if the window doesn't exist in the .ini file
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -534,7 +534,7 @@ struct ImGuiIO
|
|||||||
|
|
||||||
ImVec2 DisplaySize; // <unset> // Display size, in pixels. For clamping windows positions.
|
ImVec2 DisplaySize; // <unset> // Display size, in pixels. For clamping windows positions.
|
||||||
float DeltaTime; // = 1.0f/60.0f // Time elapsed since last frame, in seconds.
|
float DeltaTime; // = 1.0f/60.0f // Time elapsed since last frame, in seconds.
|
||||||
float IniSavingRate; // = 5.0f // Maximum time between saving .ini file, in seconds.
|
float IniSavingRate; // = 5.0f // Maximum time between saving positions/sizes to .ini file, in seconds.
|
||||||
const char* IniFilename; // = "imgui.ini" // Path to .ini file. NULL to disable .ini saving.
|
const char* IniFilename; // = "imgui.ini" // Path to .ini file. NULL to disable .ini saving.
|
||||||
const char* LogFilename; // = "imgui_log.txt" // Path to .log file (default parameter to ImGui::LogToFile when no file is specified).
|
const char* LogFilename; // = "imgui_log.txt" // Path to .log file (default parameter to ImGui::LogToFile when no file is specified).
|
||||||
float MouseDoubleClickTime; // = 0.30f // Time for a double-click, in seconds.
|
float MouseDoubleClickTime; // = 0.30f // Time for a double-click, in seconds.
|
||||||
@ -556,8 +556,8 @@ struct ImGuiIO
|
|||||||
// See example code if you are unsure of how to implement this.
|
// See example code if you are unsure of how to implement this.
|
||||||
void (*RenderDrawListsFn)(ImDrawList** const draw_lists, int count);
|
void (*RenderDrawListsFn)(ImDrawList** const draw_lists, int count);
|
||||||
|
|
||||||
// Optional: access OS clipboard (default to use native Win32 clipboard on Windows, otherwise use a ImGui private clipboard)
|
// Optional: access OS clipboard
|
||||||
// Override to access OS clipboard on other architectures.
|
// (default to use native Win32 clipboard on Windows, otherwise uses a private clipboard. Override to access OS clipboard on other architectures)
|
||||||
const char* (*GetClipboardTextFn)();
|
const char* (*GetClipboardTextFn)();
|
||||||
void (*SetClipboardTextFn)(const char* text);
|
void (*SetClipboardTextFn)(const char* text);
|
||||||
|
|
||||||
@ -565,7 +565,7 @@ struct ImGuiIO
|
|||||||
void* (*MemAllocFn)(size_t sz);
|
void* (*MemAllocFn)(size_t sz);
|
||||||
void (*MemFreeFn)(void* ptr);
|
void (*MemFreeFn)(void* ptr);
|
||||||
|
|
||||||
// Optional: notify OS Input Method Editor of the screen position of your cursor for text input position (e.g. when using Japanese/Chinese inputs in Windows)
|
// Optional: notify OS Input Method Editor of the screen position of your cursor for text input position (e.g. when using Japanese/Chinese IME in Windows)
|
||||||
void (*ImeSetInputScreenPosFn)(int x, int y);
|
void (*ImeSetInputScreenPosFn)(int x, int y);
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
@ -573,12 +573,12 @@ struct ImGuiIO
|
|||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
|
|
||||||
ImVec2 MousePos; // Mouse position, in pixels (set to -1,-1 if no mouse / on another screen, etc.)
|
ImVec2 MousePos; // Mouse position, in pixels (set to -1,-1 if no mouse / on another screen, etc.)
|
||||||
bool MouseDown[5]; // Mouse buttons. ImGui itself only uses button 0 (left button) but you can use others as storage for convenience.
|
bool MouseDown[5]; // Mouse buttons. ImGui itself only uses button 0 (left button). Others buttons allows to track if mouse is being used by your application + available to user as a convenience via IsMouse** API.
|
||||||
float MouseWheel; // Mouse wheel: 1 unit scrolls about 5 lines text.
|
float MouseWheel; // Mouse wheel: 1 unit scrolls about 5 lines text.
|
||||||
bool MouseDrawCursor; // Request ImGui to draw a mouse cursor for you (if you are on a platform without a mouse cursor).
|
bool MouseDrawCursor; // Request ImGui to draw a mouse cursor for you (if you are on a platform without a mouse cursor).
|
||||||
bool KeyCtrl; // Keyboard modifier pressed: Control
|
bool KeyCtrl; // Keyboard modifier pressed: Control
|
||||||
bool KeyShift; // Keyboard modifier pressed: Shift
|
bool KeyShift; // Keyboard modifier pressed: Shift
|
||||||
bool KeysDown[512]; // Keyboard keys that are pressed (in whatever order user naturally has access to keyboard data)
|
bool KeysDown[512]; // Keyboard keys that are pressed (in whatever storage order you naturally have access to keyboard data)
|
||||||
ImWchar InputCharacters[16+1]; // List of characters input (translated by user from keypress+keyboard state). Fill using AddInputCharacter() helper.
|
ImWchar InputCharacters[16+1]; // List of characters input (translated by user from keypress+keyboard state). Fill using AddInputCharacter() helper.
|
||||||
|
|
||||||
// Function
|
// Function
|
||||||
@ -596,7 +596,7 @@ struct ImGuiIO
|
|||||||
// [Internal] ImGui will maintain those fields for you
|
// [Internal] ImGui will maintain those fields for you
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
|
|
||||||
ImVec2 MousePosPrev; //
|
ImVec2 MousePosPrev; // Previous mouse position
|
||||||
ImVec2 MouseDelta; // Mouse delta. Note that this is zero if either current or previous position are negative to allow mouse enabling/disabling.
|
ImVec2 MouseDelta; // Mouse delta. Note that this is zero if either current or previous position are negative to allow mouse enabling/disabling.
|
||||||
bool MouseClicked[5]; // Mouse button went from !Down to Down
|
bool MouseClicked[5]; // Mouse button went from !Down to Down
|
||||||
ImVec2 MouseClickedPos[5]; // Position at time of clicking
|
ImVec2 MouseClickedPos[5]; // Position at time of clicking
|
||||||
@ -752,7 +752,6 @@ struct ImColor
|
|||||||
ImColor(int r, int g, int b, int a = 255) { Value.x = (float)r / 255.0f; Value.y = (float)g / 255.0f; Value.z = (float)b / 255.0f; Value.w = (float)a / 255.0f; }
|
ImColor(int r, int g, int b, int a = 255) { Value.x = (float)r / 255.0f; Value.y = (float)g / 255.0f; Value.z = (float)b / 255.0f; Value.w = (float)a / 255.0f; }
|
||||||
ImColor(float r, float g, float b, float a = 1.0f) { Value.x = r; Value.y = g; Value.z = b; Value.w = a; }
|
ImColor(float r, float g, float b, float a = 1.0f) { Value.x = r; Value.y = g; Value.z = b; Value.w = a; }
|
||||||
ImColor(const ImVec4& col) { Value = col; }
|
ImColor(const ImVec4& col) { Value = col; }
|
||||||
|
|
||||||
operator ImU32() const { return ImGui::ColorConvertFloat4ToU32(Value); }
|
operator ImU32() const { return ImGui::ColorConvertFloat4ToU32(Value); }
|
||||||
operator ImVec4() const { return Value; }
|
operator ImVec4() const { return Value; }
|
||||||
|
|
||||||
@ -775,7 +774,7 @@ struct ImColor
|
|||||||
// It is up to you to decide if your rendering loop or the callback should be responsible for backup/restoring rendering state.
|
// It is up to you to decide if your rendering loop or the callback should be responsible for backup/restoring rendering state.
|
||||||
typedef void (*ImDrawCallback)(const ImDrawList* parent_list, const ImDrawCmd* cmd);
|
typedef void (*ImDrawCallback)(const ImDrawList* parent_list, const ImDrawCmd* cmd);
|
||||||
|
|
||||||
// Typically, 1 command = 1 gpu draw call
|
// Typically, 1 command = 1 gpu draw call (unless command is a callback)
|
||||||
struct ImDrawCmd
|
struct ImDrawCmd
|
||||||
{
|
{
|
||||||
unsigned int vtx_count; // Number of vertices (multiple of 3) to be drawn as triangles. The vertices are stored in the callee ImDrawList's vtx_buffer[] array.
|
unsigned int vtx_count; // Number of vertices (multiple of 3) to be drawn as triangles. The vertices are stored in the callee ImDrawList's vtx_buffer[] array.
|
||||||
|
Loading…
Reference in New Issue
Block a user