Compare commits

..

87 Commits
v1.40 ... v1.41

Author SHA1 Message Date
f66be0e7b2 Demo: satisfying buffer size 2015-06-25 21:52:16 -06:00
ea2c824192 Version 1.41 2015-06-25 21:38:24 -06:00
8224ca16b6 Carriage return in demo tooltip 2015-06-24 20:45:06 -06:00
4976bf97a6 Fix for correctness and allow non-auto resized modals to have window minimum size applied - hopefully no-side effects (#249) 2015-06-24 20:35:40 -06:00
af5890b276 AutoFit can be triggered on each axis separately via SetNextWindowSize() (mentioned in #249) 2015-06-24 20:08:08 -06:00
975ef00682 Minor construction fix (-1.0 is correct "disabled" value for TextWrapPos, didn't have any incidence anyway) 2015-06-24 19:53:41 -06:00
d171e48b20 Fixed SetNextWindowPosCenter() being processed too early for windows that are still measuring their size (for #249) 2015-06-23 15:45:34 -06:00
5436266963 Added SetNextWindowPosCenter() (#249) 2015-06-23 15:34:44 -06:00
bcbf53857c BeginPopupModal() default to NoCollapse for modal windows (#249) 2015-06-23 15:17:27 -06:00
06ed9257ef Modal windows centered when appearing (#249) 2015-06-23 14:28:11 -06:00
2a041cfbe1 Added GetGlyphRangesCyrillic() helper (#237) 2015-06-23 14:13:22 -06:00
0f38a53d28 Added stacked modal windows example (#249) 2015-06-23 13:58:47 -06:00
f0311b643a Added modal dialog example (#249) 2015-06-23 13:22:37 -06:00
a4cd585f54 Reorganized demo window 2015-06-23 12:47:38 -06:00
fe17f6e735 Added modal window darkening of previous windows (#249) 2015-06-23 12:34:15 -06:00
8c790a3234 BeginPopupModal() can have an optional close-window button (#249) 2015-06-23 11:08:19 -06:00
bce495c581 Added BeginPopupModal() with actual modal behaviour (WIP api) (#249) 2015-06-23 10:02:56 -06:00
f10bbbb851 Minor comment fix (#248) 2015-06-22 07:57:45 -06:00
0884cb51cd Added IsKeyReleased() (#248), added keyboard & mouse state panel in the demo window 2015-06-21 19:04:43 -06:00
68534c2319 Added IsMouseReleased() helper (#248) 2015-06-21 18:15:31 -06:00
eec047c9f7 Fixed leak on Shutdown (#200) 2015-06-19 18:14:50 -06:00
9e8da4dba0 Comments 2015-06-19 18:09:58 -06:00
747999bbaf Fixed mouse wheel scroll issues, introduced a few weeks ago (#200) 2015-06-19 18:01:13 -06:00
e7b43b014b Can't scroll with mouse wheel when window is collapsed. 2015-06-19 17:43:51 -06:00
1b28f11acb InputTextMultiline() filtering out \r for now (#200) 2015-06-19 17:34:19 -06:00
73db855c77 InputTextMultiline() painfully merged most computation passes into one, better clipping, much faster for large text (#200) 2015-06-18 23:23:20 -06:00
84987ac3e0 ImFont::RenderText() better vertical clipping for large amount of text (for #200) 2015-06-18 23:08:42 -06:00
324b1c2a28 InputTextMultiline(): made ctrl+up/down closer to windows behavior (#200) 2015-06-18 22:35:08 -06:00
c4720ec90f InputTextMultiline() fixed a frame of lag in handling vertical scrolling (#200) 2015-06-18 21:20:15 -06:00
cd27f8a8e6 InputText(): adjusting selection block height differently for single and multi-line (#200) 2015-06-18 21:01:56 -06:00
b524c59c70 InputText(): removed a call to strlen() in the active edit path (#200) 2015-06-18 20:49:20 -06:00
2b68a5c0cf InputTextMultine() optimised height calculation for inactive multi-line edit box (#200) 2015-06-18 19:09:04 -06:00
86666489df ImFont: CalcTextSizeA() fixed font scaling with fallback character. 2015-06-18 18:31:49 -06:00
c6d77f3bf5 InputText: fixed handling of scaled font. re-organized bits of code toward merging all sizes calculations (#200) 2015-06-18 18:31:13 -06:00
10b4fa44c1 Fixed framerate counter averaging buffer size (shouldn't have been included in previous commit) 2015-06-18 17:45:11 -06:00
26d2b361d1 InputText(): removed extraneous CalcTextSizeW call for tracking cursor/scrolling, remove spike (#200) 2015-06-18 17:40:51 -06:00
5f362cabe9 InputText(): char width calculation calls font->GetCharAdvance() directly (#200) 2015-06-18 17:11:20 -06:00
60079988bd ImFont::RenderText() faster handling of rendering above clipping rect (useful for #200) 2015-06-18 12:41:48 -06:00
846cfc74a2 InputText() clear selection when using undo/redo (#200) 2015-06-18 12:32:55 -06:00
d30e8f38b7 InputText() tidying up (#200) 2015-06-18 12:29:43 -06:00
8fbb4a566a InputTextMultiline() preserve activeid/cursor/selection when using scrollbar + tidying up (#200) 2015-06-18 11:57:43 -06:00
9180126db6 Speeding up some wchar<>UTF8 functions and some specialization for Ascii. (testing 500 KB text for #200) 2015-06-18 11:30:10 -06:00
c06373de93 Cleanup 2015-06-18 10:40:11 -06:00
d0ea5942a9 InputTextMultiline() can clip + BeginChildFrame() returns bool. (#200) 2015-06-18 08:49:57 -06:00
9c399ee3be Demo for InputTextMultiline() (#200) 2015-06-17 18:36:06 -06:00
b0e8643523 Demo for InputTextMultiline() (#200) 2015-06-17 18:31:15 -06:00
490e9e42ff InputText(): shallow tweaks (#200) 2015-06-17 18:14:25 -06:00
5e323561be InputTextMultiline() fixes, vertical scrolling, optimizations (#200)
Using a child window for multi-line text.
2015-06-17 17:07:49 -06:00
3df91b52ea Increased key repeat rate for non-character input key repeat.
Dodgy - we should have a match here for character input and
non-character input (e.g. holding 'a' vs holding 'backspace' should be
same rate), but for the earlier we don't have the info?
2015-06-17 16:02:50 -06:00
7dc5228235 InputText: doesn't reset scrolling when active text input becomes bigger than its content. (#200)
Mostly because it's expensive.
2015-06-17 15:49:18 -06:00
f75b8c72cf InputTextMultiline(): vertical scrolling wip, selection rendering fix (#200) 2015-06-16 21:53:04 -06:00
417a7bc29b InputTextMultiline(): multi-line selection draw fix (#200) 2015-06-16 21:19:47 -06:00
f1dfc4d7c4 InputTextMultiline(): multi-line selection draw fix (#200) 2015-06-16 21:17:02 -06:00
917a1fdbf7 InputText() fixing cancel (#200) 2015-06-16 21:08:54 -06:00
73491e5adc InputText() lifted 1024 characters limit (#200)
Bit messy & not happy with using ImVector<char>
2015-06-16 21:04:27 -06:00
0795a60c6b InputText() fixed multi-line selection clipping. (#200) 2015-06-16 20:35:46 -06:00
ec7c1834b3 InputTextMultiline() tabbing to a multi-line edit doesn't select all (unless ImGuiInputTextFlags_AutoSelectAll is set), somehow arbitrary (#
Seems reasonable
2015-06-16 20:25:08 -06:00
6d31c498c0 InputText: multi-line selection, better scrolling, cleaning up (#200)
Not horizontally scrolling on char boundaries anymore
2015-06-16 20:14:54 -06:00
d06ad43dca ImFont::RenderText() additional early out (typically performed at TextUnformatted() level for large chunks but this is also useful) (#200) 2015-06-16 17:50:55 -06:00
748837acfd Merge remote-tracking branch 'origin' into 2015-06-multiline_textedit
Conflicts:
	imgui.h
2015-06-16 17:23:28 -06:00
a248575dea Text rendering can be finely clipped cpu-side on top and left axises (for #200) 2015-06-16 17:21:07 -06:00
9765559a28 Merge remote-tracking branch 'origin' into 2015-06-multiline_textedit
Conflicts:
	imgui.cpp
2015-06-16 15:59:28 -06:00
34986771b4 Moved InputFloat() InputInt() below InputText() and not in the middle of internal bits 2015-06-16 15:57:04 -06:00
0df7b472c2 InputTextMultiline() WIP - still gazillion problems with selection visualisation & scrolling 2015-06-16 15:46:45 -06:00
6eb1fec7a9 ImFont: added GetCharAdvance() helper. Exposed font Ascent and font Descent. 2015-06-14 17:30:06 -06:00
b503e5ee5b ImageButton() changed default bg_col parameter from (0,0,0,1) black to (0,0,0,0) tranparent + drawing frame even when no padding (#243) 2015-06-14 16:18:22 -06:00
4f0fa58ff2 Selectable() changed prototype moved flags before size. size override should rarely have been used! sorry. #125 2015-06-14 15:19:47 -06:00
c82e72eecb Selectable() parameter comment 2015-06-14 15:14:33 -06:00
cf481e1a7b Selectable() added flags ImGuiSelectableFlags_DontClosePopups , ImGuiSelectableFlags_SpanAllColumns (#125) 2015-06-14 12:41:40 -06:00
2bcafc861e SelectableEx - replaced unnecessary extra size_draw parameter by a flag. 2015-06-13 14:20:02 -06:00
96496ced5f Metrics windows display storage size 2015-06-11 16:04:06 -06:00
039418f393 ColorButton(), ColorEdit4(): colored square stays square, used vertical padding on both axis. 2015-06-09 14:39:27 -06:00
6bb06fdb81 Selectable, MenuItem: don't use frame rounding for hovering/selection. 2015-06-09 14:32:37 -06:00
3fd4441f70 SetScrollPosHere() fixed imprecisions 2015-06-09 13:14:22 -06:00
3ca54ad369 SetScrollPosHere() takes account of item height + more accurate centering 2015-06-09 12:57:27 -06:00
e8422f7aa0 SetScrollPosHere() rewrote to that window size is not required at the time of calling, can be used on frame 0 of an auto-resizing window 2015-06-09 12:49:13 -06:00
8c86322068 Combo() now using the popup facility. More consistent + when combo open hovering other widgets is disabled. (#241) 2015-06-09 12:35:55 -06:00
6f1dd7a688 Allow Set*WindowSize() calls to be used with popups (fix for using e.g. scroll function on the first frame) 2015-06-09 12:32:19 -06:00
6807546caf Allow Set*WindowSize() calls to be used with popups. 2015-06-09 11:35:29 -06:00
4536668482 Fixed issue with activating a Combo() not taking active id (#241) 2015-06-09 10:09:12 -06:00
20088303e9 ImFont: ignoring \r 2015-06-04 12:26:23 +01:00
d31cf1af5d Merge branch 'master' of https://github.com/ocornut/imgui 2015-06-03 15:31:13 +01:00
eb75ffdc5d DragFloat(), SliderFloat() Fixed rounding of negative which sometimes made the negative lower range unreachable. 2015-06-03 15:31:08 +01:00
e57d460e31 Update README.md 2015-06-03 12:48:55 +01:00
0e04dfbad7 Added IsWindowHovered() helper. 2015-06-02 20:57:29 +01:00
9928d19af1 Version 1.41 WIP 2015-06-02 14:41:14 +01:00
82d4180f39 Bits of TODO list 2015-05-31 21:15:35 +01:00
3 changed files with 1242 additions and 759 deletions

View File

@ -44,7 +44,10 @@ Gallery
![screenshot 4](/web/test_window_04.png?raw=true)
![screenshot 5](/web/test_window_05_menus.png?raw=true)
![screenshot 6](/web/examples_03.png?raw=true)
![screenshot 7](/web/examples_02.png?raw=true)
![screenshot 7](https://cloud.githubusercontent.com/assets/8225057/7903336/96f0fb7c-07d0-11e5-95d6-41c6a1595e5a.png)
![screenshot 8](/web/examples_02.png?raw=true)
ImGui can load TTF fonts. UTF-8 is supported for text display and input. Here using Arial Unicode font to display Japanese. Initialize custom font with:
```

1924
imgui.cpp

File diff suppressed because it is too large Load Diff

72
imgui.h
View File

@ -1,4 +1,4 @@
// ImGui library v1.40
// ImGui library v1.41
// See .cpp file for documentation.
// See ImGui::ShowTestWindow() for sample code.
// Read 'Programmer guide' in .cpp for notes on how to setup ImGui in your codebase.
@ -13,7 +13,7 @@
#include <stdlib.h> // NULL, malloc, free, qsort, atoi
#include <string.h> // memset, memmove, memcpy, strlen, strchr, strcpy, strcmp
#define IMGUI_VERSION "1.40"
#define IMGUI_VERSION "1.41"
// Define assertion handler.
#ifndef IM_ASSERT
@ -48,6 +48,7 @@ typedef int ImGuiMouseCursor; // enum ImGuiMouseCursor_
typedef int ImGuiWindowFlags; // enum ImGuiWindowFlags_
typedef int ImGuiSetCond; // enum ImGuiSetCond_
typedef int ImGuiInputTextFlags; // enum ImGuiInputTextFlags_
typedef int ImGuiSelectableFlags; // enum ImGuiSelectableFlags_
struct ImGuiTextEditCallbackData; // for advanced uses of InputText()
typedef int (*ImGuiTextEditCallback)(ImGuiTextEditCallbackData *data);
@ -121,10 +122,11 @@ namespace ImGui
IMGUI_API float GetWindowWidth();
IMGUI_API bool IsWindowCollapsed();
IMGUI_API void SetNextWindowPos(const ImVec2& pos, ImGuiSetCond cond = 0); // set next window position - call before Begin()
IMGUI_API void SetNextWindowSize(const ImVec2& size, ImGuiSetCond cond = 0); // set next window size. set to ImVec2(0,0) to force an auto-fit
IMGUI_API void SetNextWindowCollapsed(bool collapsed, ImGuiSetCond cond = 0); // set next window collapsed state
IMGUI_API void SetNextWindowFocus(); // set next window to be focused / front-most
IMGUI_API void SetNextWindowPos(const ImVec2& pos, ImGuiSetCond cond = 0); // set next window position. call before Begin()
IMGUI_API void SetNextWindowPosCenter(ImGuiSetCond cond = 0); // set next window position to be centered on screen. call before Begin()
IMGUI_API void SetNextWindowSize(const ImVec2& size, ImGuiSetCond cond = 0); // set next window size. set to ImVec2(0,0) to force an auto-fit. call before Begin()
IMGUI_API void SetNextWindowCollapsed(bool collapsed, ImGuiSetCond cond = 0); // set next window collapsed state. call before Begin()
IMGUI_API void SetNextWindowFocus(); // set next window to be focused / front-most. call before Begin()
IMGUI_API void SetWindowPos(const ImVec2& pos, ImGuiSetCond cond = 0); // set current window position - call within Begin()/End(). may incur tearing
IMGUI_API void SetWindowSize(const ImVec2& size, ImGuiSetCond cond = 0); // set current window size. set to ImVec2(0,0) to force an auto-fit. may incur tearing
IMGUI_API void SetWindowCollapsed(bool collapsed, ImGuiSetCond cond = 0); // set current window collapsed state
@ -170,9 +172,10 @@ namespace ImGui
// Popup
IMGUI_API void OpenPopup(const char* str_id); // mark popup as open. popup identifiers are relative to the current ID-stack (so OpenPopup and BeginPopup needs to be at the same level). close childs popups if any. will close popup when user click outside, or activate a pressable item, or CloseCurrentPopup() is called within a BeginPopup()/EndPopup() block.
IMGUI_API bool BeginPopup(const char* str_id); // return true if popup if opened and start outputting to it. only call EndPopup() if BeginPopup() returned true!
IMGUI_API bool BeginPopupContextItem(const char* str_id, int mouse_button = 1); // open and begin popup when clicked on last item
IMGUI_API bool BeginPopupContextWindow(bool also_over_items = true, const char* str_id = NULL, int mouse_button = 1); // open and begin popup when clicked on current window
IMGUI_API bool BeginPopupContextVoid(const char* str_id = NULL, int mouse_button = 1); // open and begin popup when clicked in void (no window)
IMGUI_API bool BeginPopupModal(const char* name, bool* p_opened = NULL, ImGuiWindowFlags extra_flags = 0); // modal dialog (can't close them by clicking outside)
IMGUI_API bool BeginPopupContextItem(const char* str_id, int mouse_button = 1); // helper to open and begin popup when clicked on last item
IMGUI_API bool BeginPopupContextWindow(bool also_over_items = true, const char* str_id = NULL, int mouse_button = 1); // helper to open and begin popup when clicked on current window
IMGUI_API bool BeginPopupContextVoid(const char* str_id = NULL, int mouse_button = 1); // helper to open and begin popup when clicked in void (no window)
IMGUI_API void EndPopup();
IMGUI_API void CloseCurrentPopup(); // close the popup we have begin-ed into. clicking on a MenuItem or Selectable automatically close the current popup.
@ -236,7 +239,7 @@ namespace ImGui
IMGUI_API bool SmallButton(const char* label);
IMGUI_API bool InvisibleButton(const char* str_id, const ImVec2& size);
IMGUI_API void Image(ImTextureID user_texture_id, const ImVec2& size, const ImVec2& uv0 = ImVec2(0,0), const ImVec2& uv1 = ImVec2(1,1), const ImVec4& tint_col = ImVec4(1,1,1,1), const ImVec4& border_col = ImVec4(0,0,0,0));
IMGUI_API bool ImageButton(ImTextureID user_texture_id, const ImVec2& size, const ImVec2& uv0 = ImVec2(0,0), const ImVec2& uv1 = ImVec2(1,1), int frame_padding = -1, const ImVec4& bg_col = ImVec4(0,0,0,1), const ImVec4& tint_col = ImVec4(1,1,1,1)); // <0 frame_padding uses default frame padding settings. 0 for no padding
IMGUI_API bool ImageButton(ImTextureID user_texture_id, const ImVec2& size, const ImVec2& uv0 = ImVec2(0,0), const ImVec2& uv1 = ImVec2(1,1), int frame_padding = -1, const ImVec4& bg_col = ImVec4(0,0,0,0), const ImVec4& tint_col = ImVec4(1,1,1,1)); // <0 frame_padding uses default frame padding settings. 0 for no padding
IMGUI_API bool CollapsingHeader(const char* label, const char* str_id = NULL, bool display_frame = true, bool default_open = false);
IMGUI_API bool Checkbox(const char* label, bool* v);
IMGUI_API bool CheckboxFlags(const char* label, unsigned int* flags, unsigned int flags_value);
@ -266,6 +269,7 @@ namespace ImGui
// Widgets: Input
IMGUI_API bool InputText(const char* label, char* buf, size_t buf_size, ImGuiInputTextFlags flags = 0, ImGuiTextEditCallback callback = NULL, void* user_data = NULL);
IMGUI_API bool InputTextMultiline(const char* label, char* buf, size_t buf_size, const ImVec2& size = ImVec2(0,0), ImGuiInputTextFlags flags = 0, ImGuiTextEditCallback callback = NULL, void* user_data = NULL);
IMGUI_API bool InputFloat(const char* label, float* v, float step = 0.0f, float step_fast = 0.0f, int decimal_precision = -1, ImGuiInputTextFlags extra_flags = 0);
IMGUI_API bool InputFloat2(const char* label, float v[2], int decimal_precision = -1, ImGuiInputTextFlags extra_flags = 0);
IMGUI_API bool InputFloat3(const char* label, float v[3], int decimal_precision = -1, ImGuiInputTextFlags extra_flags = 0);
@ -300,8 +304,8 @@ namespace ImGui
IMGUI_API void SetNextTreeNodeOpened(bool opened, ImGuiSetCond cond = 0); // set next tree node to be opened.
// Widgets: Selectable / Lists
IMGUI_API bool Selectable(const char* label, bool selected = false, const ImVec2& size = ImVec2(0,0));
IMGUI_API bool Selectable(const char* label, bool* p_selected, const ImVec2& size = ImVec2(0,0));
IMGUI_API bool Selectable(const char* label, bool selected = false, ImGuiSelectableFlags flags = 0, const ImVec2& size = ImVec2(0,0)); // size.x==0.0: use remaining width, size.x>0.0: specify width. size.y==0.0: use label height, size.y>0.0: specify height
IMGUI_API bool Selectable(const char* label, bool* p_selected, ImGuiSelectableFlags flags = 0, const ImVec2& size = ImVec2(0,0));
IMGUI_API bool ListBox(const char* label, int* current_item, const char** items, int items_count, int height_in_items = -1);
IMGUI_API bool ListBox(const char* label, int* current_item, bool (*items_getter)(void* data, int idx, const char** out_text), void* data, int items_count, int height_in_items = -1);
IMGUI_API bool ListBoxHeader(const char* label, const ImVec2& size = ImVec2(0,0)); // use if you want to reimplement ListBox() will custom data or interactions. make sure to call ListBoxFooter() afterwards.
@ -344,15 +348,18 @@ namespace ImGui
IMGUI_API ImVec2 GetItemRectMin(); // get bounding rect of last item in screen space
IMGUI_API ImVec2 GetItemRectMax(); // "
IMGUI_API ImVec2 GetItemRectSize(); // "
IMGUI_API bool IsWindowHovered();
IMGUI_API bool IsWindowFocused(); // is current window focused (differentiate child windows from each others)
IMGUI_API bool IsRootWindowFocused(); // is current root window focused (top parent window in case of child windows)
IMGUI_API bool IsRootWindowOrAnyChildFocused(); // is current root window or any of its child (including current window) focused
IMGUI_API bool IsRectVisible(const ImVec2& size); // test if rectangle of given size starting from cursor pos is visible (not clipped). to perform coarse clipping on user's side (as an optimization)
IMGUI_API bool IsKeyDown(int key_index); // key_index into the keys_down[512] array, imgui doesn't know the semantic of each entry
IMGUI_API bool IsKeyDown(int key_index); // key_index into the keys_down[512] array, imgui doesn't know the semantic of each entry, uses your own indices!
IMGUI_API bool IsKeyPressed(int key_index, bool repeat = true); // "
IMGUI_API bool IsKeyReleased(int key_index); // "
IMGUI_API bool IsMouseDown(int button);
IMGUI_API bool IsMouseClicked(int button, bool repeat = false);
IMGUI_API bool IsMouseDoubleClicked(int button);
IMGUI_API bool IsMouseReleased(int button);
IMGUI_API bool IsMouseHoveringWindow(); // is mouse hovering current window ("window" in API names always refer to current window)
IMGUI_API bool IsMouseHoveringAnyWindow(); // is mouse hovering any active imgui window
IMGUI_API bool IsMouseHoveringRect(const ImVec2& rect_min, const ImVec2& rect_max);// is mouse hovering given bounding rect
@ -370,7 +377,7 @@ namespace ImGui
IMGUI_API ImVec2 CalcTextSize(const char* text, const char* text_end = NULL, bool hide_text_after_double_hash = false, float wrap_width = -1.0f);
IMGUI_API void CalcListClipping(int items_count, float items_height, int* out_items_display_start, int* out_items_display_end); // calculate coarse clipping for large list of evenly sized items. Prefer using the ImGuiListClipper higher-level helper if you can.
IMGUI_API void BeginChildFrame(ImGuiID id, const ImVec2& size); // helper to create a child window / scrolling region that looks like a normal widget frame
IMGUI_API bool BeginChildFrame(ImGuiID id, const ImVec2& size); // helper to create a child window / scrolling region that looks like a normal widget frame
IMGUI_API void EndChildFrame();
IMGUI_API ImU32 ColorConvertFloat4ToU32(const ImVec4& in);
@ -423,7 +430,8 @@ enum ImGuiWindowFlags_
ImGuiWindowFlags_ComboBox = 1 << 23, // Don't use! For internal use by ComboBox()
ImGuiWindowFlags_Tooltip = 1 << 24, // Don't use! For internal use by BeginTooltip()
ImGuiWindowFlags_Popup = 1 << 25, // Don't use! For internal use by BeginPopup()
ImGuiWindowFlags_ChildMenu = 1 << 26 // Don't use! For internal use by BeginMenu()
ImGuiWindowFlags_Modal = 1 << 26, // Don't use! For internal use by BeginPopupModal()
ImGuiWindowFlags_ChildMenu = 1 << 27 // Don't use! For internal use by BeginMenu()
};
// Flags for ImGui::InputText()
@ -439,7 +447,19 @@ enum ImGuiInputTextFlags_
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_CallbackAlways = 1 << 8, // Call user function every time
ImGuiInputTextFlags_CallbackCharFilter = 1 << 9 // Call user function to filter character. Modify data->EventChar to replace/filter input, or return 1 to discard character.
ImGuiInputTextFlags_CallbackCharFilter = 1 << 9, // Call user function to filter character. Modify data->EventChar to replace/filter input, or return 1 to discard character.
ImGuiInputTextFlags_AllowTabInput = 1 << 10, // Pressing TAB input a '\t' character into the text field
ImGuiInputTextFlags_CtrlEnterForNewLine = 1 << 11, // In multi-line mode, allow exiting edition by pressing Enter. Ctrl+Enter to add new line (by default adds new lines with Enter).
// [Internal]
ImGuiInputTextFlags_Multiline = 1 << 20 // For internal use by InputTextMultiline()
};
// Flags for ImGui::Selectable()
enum ImGuiSelectableFlags_
{
// Default: 0
ImGuiSelectableFlags_DontClosePopups = 1 << 0, // Clicking this don't close parent popup window
ImGuiSelectableFlags_SpanAllColumns = 1 << 1 // Selectable frame can span all columns (text will still fit in current column)
};
// User fill ImGuiIO.KeyMap[] array with indices into the ImGuiIO.KeysDown[512] array
@ -509,6 +529,7 @@ enum ImGuiCol_
ImGuiCol_PlotHistogramHovered,
ImGuiCol_TextSelectedBg,
ImGuiCol_TooltipBg,
ImGuiCol_ModalWindowDarkening, // darken entire screen when a modal window is active
ImGuiCol_COUNT
};
@ -686,10 +707,13 @@ struct ImGuiIO
ImVec2 MouseClickedPos[5]; // Position at time of clicking
float MouseClickedTime[5]; // Time of last click (used to figure out double-click)
bool MouseDoubleClicked[5]; // Has mouse button been double-clicked?
bool MouseReleased[5]; // Mouse button went from Down to !Down
bool MouseDownOwned[5]; // Track if button was clicked inside a window. We don't request mouse capture from the application if click started outside ImGui bounds.
float MouseDownTime[5]; // Time the mouse button has been down
float MouseDownDuration[5]; // Duration the mouse button has been down (0.0f == just clicked)
float MouseDownDurationPrev[5]; // Previous time the mouse button has been down
float MouseDragMaxDistanceSqr[5]; // Squared maximum distance of how much mouse has traveled from the click point
float KeysDownTime[512]; // Time the keyboard key has been down
float KeysDownDuration[512]; // Duration the keyboard key has been down (0.0f == just pressed)
float KeysDownDurationPrev[512]; // Previous duration the key has been down
IMGUI_API ImGuiIO();
};
@ -1012,7 +1036,7 @@ struct ImDrawList
IMGUI_API void AddCircle(const ImVec2& centre, float radius, ImU32 col, int num_segments = 12);
IMGUI_API void AddCircleFilled(const ImVec2& centre, float radius, ImU32 col, int num_segments = 12);
IMGUI_API void AddArcFast(const ImVec2& center, float radius, ImU32 col, int a_min_12, int a_max_12, bool filled = false, const ImVec2& third_point_offset = ImVec2(0,0)); // Angles in 0..12 range
IMGUI_API void AddText(const ImFont* font, float font_size, const ImVec2& pos, ImU32 col, const char* text_begin, const char* text_end = NULL, float wrap_width = 0.0f, const ImVec2* cpu_clip_max = NULL);
IMGUI_API void AddText(const ImFont* font, float font_size, const ImVec2& pos, ImU32 col, const char* text_begin, const char* text_end = NULL, float wrap_width = 0.0f, const ImVec4* cpu_fine_clip_rect = NULL);
IMGUI_API void AddImage(ImTextureID user_texture_id, const ImVec2& a, const ImVec2& b, const ImVec2& uv0, const ImVec2& uv1, ImU32 col = 0xFFFFFFFF);
// Advanced
@ -1066,6 +1090,7 @@ struct ImFontAtlas
IMGUI_API const ImWchar* GetGlyphRangesDefault(); // Basic Latin, Extended Latin
IMGUI_API const ImWchar* GetGlyphRangesJapanese(); // Default + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs
IMGUI_API const ImWchar* GetGlyphRangesChinese(); // Japanese + full set of about 21000 CJK Unified Ideographs
IMGUI_API const ImWchar* GetGlyphRangesCyrillic(); // Default + about 400 Cyrillic characters
// Members
// (Access texture data via GetTexData*() calls which will setup a default font for you.)
@ -1104,7 +1129,8 @@ struct ImFont
signed short XOffset, YOffset;
float U0, V0, U1, V1; // Texture coordinates
};
float BaseLine; // Distance from top to bottom of e.g. 'A' [0..FontSize]
float Ascent; // Distance from top to bottom of e.g. 'A' [0..FontSize]
float Descent; //
ImFontAtlas* ContainerAtlas; // What we has been loaded into
ImVector<Glyph> Glyphs;
const Glyph* FallbackGlyph; // == FindGlyph(FontFallbackChar)
@ -1117,16 +1143,16 @@ struct ImFont
IMGUI_API ~ImFont();
IMGUI_API void Clear();
IMGUI_API void BuildLookupTable();
IMGUI_API float GetCharAdvance(unsigned short c) const { return ((size_t)c < IndexXAdvance.size()) ? IndexXAdvance[(size_t)c] : FallbackXAdvance; }
IMGUI_API const Glyph* FindGlyph(unsigned short c) const;
IMGUI_API void SetFallbackChar(ImWchar c);
IMGUI_API bool IsLoaded() const { return ContainerAtlas != NULL; }
IMGUI_API bool IsLoaded() const { return ContainerAtlas != NULL; }
// 'max_width' stops rendering after a certain width (could be turned into a 2d size). FLT_MAX to disable.
// 'wrap_width' enable automatic word-wrapping across multiple lines to fit into given width. 0.0f to disable.
IMGUI_API ImVec2 CalcTextSizeA(float size, float max_width, float wrap_width, const char* text_begin, const char* text_end = NULL, const char** remaining = NULL) const; // utf8
IMGUI_API ImVec2 CalcTextSizeW(float size, float max_width, const ImWchar* text_begin, const ImWchar* text_end, const ImWchar** remaining = NULL) const; // wchar
IMGUI_API void RenderText(float size, ImVec2 pos, ImU32 col, const ImVec4& clip_rect, const char* text_begin, const char* text_end, ImDrawList* draw_list, float wrap_width = 0.0f, const ImVec2* cpu_clip_max = NULL) const;
IMGUI_API const char* CalcWordWrapPositionA(float scale, const char* text, const char* text_end, float wrap_width) const;
IMGUI_API void RenderText(float size, ImVec2 pos, ImU32 col, const ImVec4& clip_rect, const char* text_begin, const char* text_end, ImDrawList* draw_list, float wrap_width = 0.0f, bool cpu_fine_clip = false) const;
};
//---- Include imgui_user.h at the end of imgui.h