@ -53,10 +53,10 @@ typedef int (*ImGuiTextEditCallback)(ImGuiTextEditCallbackData *data);
struct ImVec2
{
float x , y ;
ImVec2 ( ) { }
ImVec2 ( ) { x = y = 0.0f ; }
ImVec2 ( float _x , float _y ) { x = _x ; y = _y ; }
# ifdef IM_VEC2_CLASS_EXTRA
# ifdef IM_VEC2_CLASS_EXTRA // Define constructor and implicit cast operators to convert back<>forth from your math types and ImVec2.
IM_VEC2_CLASS_EXTRA
# endif
} ;
@ -64,10 +64,10 @@ struct ImVec2
struct ImVec4
{
float x , y , z , w ;
ImVec4 ( ) { }
ImVec4 ( ) { x = y = z = w = 0.0f ; }
ImVec4 ( float _x , float _y , float _z , float _w ) { x = _x ; y = _y ; z = _z ; w = _w ; }
# ifdef IM_VEC4_CLASS_EXTRA
# ifdef IM_VEC4_CLASS_EXTRA // Define constructor and implicit cast operators to convert back<>forth from your math types and ImVec4.
IM_VEC4_CLASS_EXTRA
# endif
} ;
@ -147,7 +147,7 @@ public:
// - struct ImFont // TTF font loader, bake glyphs into bitmap
// ImGui end-user API
// In a namespace so that user can add extra functions (e.g. Value() helpers for your vector or common types)
// In a namespace so that user can add extra functions in a separate file (e.g. Value() helpers for your vector or common types)
namespace ImGui
{
// Main
@ -156,9 +156,10 @@ namespace ImGui
IMGUI_API void NewFrame ( ) ;
IMGUI_API void Render ( ) ;
IMGUI_API void Shutdown ( ) ;
IMGUI_API void ShowUserGuide ( ) ;
IMGUI_API void ShowStyleEditor ( ImGuiStyle * ref = NULL ) ;
IMGUI_API void ShowTestWindow ( bool * open = NULL ) ;
IMGUI_API void ShowUserGuide ( ) ; // help block
IMGUI_API void ShowStyleEditor ( ImGuiStyle * ref = NULL ) ; // style editor block
IMGUI_API void ShowTestWindow ( bool * opened = NULL ) ; // test window, demonstrate ImGui features
IMGUI_API void ShowMetricsWindow ( bool * opened = NULL ) ; // metrics window
// Window
// See implementation in .cpp for details
@ -191,7 +192,7 @@ namespace ImGui
IMGUI_API void SetWindowPos ( const char * name , const ImVec2 & pos , ImGuiSetCond cond = 0 ) ; // set named window position - call within Begin()/End(). may incur tearing
IMGUI_API void SetWindowSize ( const char * name , const ImVec2 & size , ImGuiSetCond cond = 0 ) ; // set named window size. set to ImVec2(0,0) to force an auto-fit. may incur tearing
IMGUI_API void SetWindowCollapsed ( const char * name , bool collapsed , ImGuiSetCond cond = 0 ) ; // set named window collapsed state
IMGUI_API void SetWindowFocus ( const char * name ) ; // set named window to be focused / front-most
IMGUI_API void SetWindowFocus ( const char * name ) ; // set named window to be focused / front-most . use NULL to remove focus.
IMGUI_API float GetScrollPosY ( ) ; // get scrolling position [0..GetScrollMaxY()]
IMGUI_API float GetScrollMaxY ( ) ; // get maximum scrolling position == ContentSize.Y - WindowSize.Y
@ -284,25 +285,41 @@ namespace ImGui
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 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 ) ;
IMGUI_API bool RadioButton ( const char * label , bool active ) ;
IMGUI_API bool RadioButton ( const char * label , int * v , int v_button ) ;
IMGUI_API bool Combo ( const char * label , int * current_item , const char * * items , int items_count , int height_in_items = - 1 ) ;
IMGUI_API bool Combo ( const char * label , int * current_item , const char * items_separated_by_zeros , int height_in_items = - 1 ) ; // separate items with \0, end item-list with \0\0
IMGUI_API bool Combo ( 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 ColorButton ( const ImVec4 & col , bool small_height = false , bool outline_border = true ) ;
IMGUI_API bool ColorEdit3 ( const char * label , float col [ 3 ] ) ;
IMGUI_API bool ColorEdit4 ( const char * label , float col [ 4 ] , bool show_alpha = true ) ;
IMGUI_API void ColorEditMode ( ImGuiColorEditMode mode ) ;
IMGUI_API void PlotLines ( const char * label , const float * values , int values_count , int values_offset = 0 , const char * overlay_text = NULL , float scale_min = FLT_MAX , float scale_max = FLT_MAX , ImVec2 graph_size = ImVec2 ( 0 , 0 ) , size_t stride = sizeof ( float ) ) ;
IMGUI_API void PlotLines ( const char * label , float ( * values_getter ) ( void * data , int idx ) , void * data , int values_count , int values_offset = 0 , const char * overlay_text = NULL , float scale_min = FLT_MAX , float scale_max = FLT_MAX , ImVec2 graph_size = ImVec2 ( 0 , 0 ) ) ;
IMGUI_API void PlotHistogram ( const char * label , const float * values , int values_count , int values_offset = 0 , const char * overlay_text = NULL , float scale_min = FLT_MAX , float scale_max = FLT_MAX , ImVec2 graph_size = ImVec2 ( 0 , 0 ) , size_t stride = sizeof ( float ) ) ;
IMGUI_API void PlotHistogram ( const char * label , float ( * values_getter ) ( void * data , int idx ) , void * data , int values_count , int values_offset = 0 , const char * overlay_text = NULL , float scale_min = FLT_MAX , float scale_max = FLT_MAX , ImVec2 graph_size = ImVec2 ( 0 , 0 ) ) ;
// Widgets: Sliders (tip: ctrl+click on a slider to input text)
IMGUI_API bool SliderFloat ( const char * label , float * v , float v_min , float v_max , const char * display_format = " %.3f " , float power = 1.0f ) ; // adjust display_format to decorate the value with a prefix or a suffix. Use power!=1.0 for logarithmic sliders
IMGUI_API bool SliderFloat2 ( const char * label , float v [ 2 ] , float v_min , float v_max , const char * display_format = " %.3f " , float power = 1.0f ) ;
IMGUI_API bool SliderFloat3 ( const char * label , float v [ 3 ] , float v_min , float v_max , const char * display_format = " %.3f " , float power = 1.0f ) ;
IMGUI_API bool SliderFloat4 ( const char * label , float v [ 4 ] , float v_min , float v_max , const char * display_format = " %.3f " , float power = 1.0f ) ;
IMGUI_API bool SliderAngle ( const char * label , float * v , float v_degrees_min = - 360.0f , float v_degrees_max = + 360.0f ) ; // *v in radians
IMGUI_API bool SliderAngle ( const char * label , float * v _rad , float v_degrees_min = - 360.0f , float v_degrees_max = + 360.0f ) ;
IMGUI_API bool SliderInt ( const char * label , int * v , int v_min , int v_max , const char * display_format = " %.0f " ) ;
IMGUI_API bool SliderInt2 ( const char * label , int v [ 2 ] , int v_min , int v_max , const char * display_format = " %.0f " ) ;
IMGUI_API bool SliderInt3 ( const char * label , int v [ 3 ] , int v_min , int v_max , const char * display_format = " %.0f " ) ;
IMGUI_API bool SliderInt4 ( const char * label , int v [ 4 ] , int v_min , int v_max , const char * display_format = " %.0f " ) ;
IMGUI_API bool VSliderFloat ( const char * label , const ImVec2 & size , float * v , float v_min , float v_max , const char * display_format = " %.3f " , float power = 1.0f ) ;
IMGUI_API bool VSliderInt ( const char * label , const ImVec2 & size , int * v , int v_min , int v_max , const char * display_format = " %.0f " ) ;
IMGUI_API void PlotLines ( const char * label , const float * values , int values_count , int values_offset = 0 , const char * overlay_text = NULL , float scale_min = FLT_MAX , float scale_max = FLT_MAX , ImVec2 graph_size = ImVec2 ( 0 , 0 ) , size_t stride = sizeof ( float ) ) ;
IMGUI_API void PlotLines ( const char * label , float ( * values_getter ) ( void * data , int idx ) , void * data , int values_count , int values_offset = 0 , const char * overlay_text = NULL , float scale_min = FLT_MAX , float scale_max = FLT_MAX , ImVec2 graph_size = ImVec2 ( 0 , 0 ) ) ;
IMGUI_API void PlotHistogram ( const char * label , const float * values , int values_count , int values_offset = 0 , const char * overlay_text = NULL , float scale_min = FLT_MAX , float scale_max = FLT_MAX , ImVec2 graph_size = ImVec2 ( 0 , 0 ) , size_t stride = sizeof ( float ) ) ;
IMGUI_API void PlotHistogram ( const char * label , float ( * values_getter ) ( void * data , int idx ) , void * data , int values_count , int values_offset = 0 , const char * overlay_text = NULL , float scale_min = FLT_MAX , float scale_max = FLT_MAX , ImVec2 graph_size = ImVec2 ( 0 , 0 ) ) ;
IMGUI_API bool Checkbox ( const char * label , bool * v ) ;
IMGUI_API bool CheckboxFlags ( const char * label , unsigned int * flags , unsigned int flags_value ) ;
IMGUI_API bool RadioButton ( const char * label , bool active ) ;
IMGUI_API bool RadioButton ( const char * label , int * v , int v_button ) ;
// Widgets: Drags (tip: ctrl+click on a drag box to input text)
// ImGui 1.38+ work-in-progress, may change name or API.
IMGUI_API bool DragFloat ( const char * label , float * v , float v_step = 1.0f , float v_min = 0.0f , float v_max = 0.0f , const char * display_format = " %.3f " ) ; // If v_max >= v_max we have no bound
IMGUI_API bool DragInt ( const char * label , int * v , int v_step = 1 , int v_min = 0.0f , int v_max = 0.0f , const char * display_format = " %.0f " ) ; // If v_max >= v_max we have no bound
// 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 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 ) ;
@ -312,15 +329,8 @@ namespace ImGui
IMGUI_API bool InputInt2 ( const char * label , int v [ 2 ] ) ;
IMGUI_API bool InputInt3 ( const char * label , int v [ 3 ] ) ;
IMGUI_API bool InputInt4 ( const char * label , int v [ 4 ] ) ;
IMGUI_API bool Combo ( const char * label , int * current_item , const char * * items , int items_count , int height_in_items = - 1 ) ;
IMGUI_API bool Combo ( const char * label , int * current_item , const char * items_separated_by_zeros , int height_in_items = - 1 ) ; // separate items with \0, end item-list with \0\0
IMGUI_API bool Combo ( 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 ColorButton ( const ImVec4 & col , bool small_height = false , bool outline_border = true ) ;
IMGUI_API bool ColorEdit3 ( const char * label , float col [ 3 ] ) ;
IMGUI_API bool ColorEdit4 ( const char * label , float col [ 4 ] , bool show_alpha = true ) ;
IMGUI_API void ColorEditMode ( ImGuiColorEditMode mode ) ;
// Trees
// Widgets: Trees
IMGUI_API bool TreeNode ( const char * str_label_id ) ; // if returning 'true' the node is open and the user is responsible for calling TreePop
IMGUI_API bool TreeNode ( const char * str_id , const char * fmt , . . . ) ; // "
IMGUI_API bool TreeNode ( const void * ptr_id , const char * fmt , . . . ) ; // "
@ -331,7 +341,7 @@ namespace ImGui
IMGUI_API void TreePop ( ) ;
IMGUI_API void SetNextTreeNodeOpened ( bool opened , ImGuiSetCond cond = 0 ) ; // set next tree node to be opened.
// Selectable / Lists
// 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 ListBox ( const char * label , int * current_item , const char * * items , int items_count , int height_in_items = - 1 ) ;
@ -340,7 +350,7 @@ namespace ImGui
IMGUI_API bool ListBoxHeader ( const char * label , int items_count , int height_in_items = - 1 ) ; // "
IMGUI_API void ListBoxFooter ( ) ; // terminate the scrolling region
// Value() Helpers: output single value in "name: value" format. T ip: freely declare your own within the ImGui namespace!
// Widgets: Value() Helpers. Output single value in "name: value" format (t ip: freely declare your own within the ImGui namespace!)
IMGUI_API void Value ( const char * prefix , bool b ) ;
IMGUI_API void Value ( const char * prefix , int v ) ;
IMGUI_API void Value ( const char * prefix , unsigned int v ) ;
@ -348,7 +358,7 @@ namespace ImGui
IMGUI_API void Color ( const char * prefix , const ImVec4 & v ) ;
IMGUI_API void Color ( const char * prefix , unsigned int v ) ;
// Logging: All text output from your interface are redirected to tty/file/clipboard. Tree nodes are automatically opened.
// Logging: all text output from interface is redirected to tty/file/clipboard. Tree nodes are automatically opened.
IMGUI_API void LogToTTY ( int max_depth = - 1 ) ; // start logging to tty
IMGUI_API void LogToFile ( int max_depth = - 1 , const char * filename = NULL ) ; // start logging to file
IMGUI_API void LogToClipboard ( int max_depth = - 1 ) ; // start logging to OS clipboard
@ -480,6 +490,8 @@ enum ImGuiCol_
ImGuiCol_Border ,
ImGuiCol_BorderShadow ,
ImGuiCol_FrameBg , // Background of checkbox, radio button, plot, slider, text input
ImGuiCol_FrameBgHovered ,
ImGuiCol_FrameBgActive ,
ImGuiCol_TitleBg ,
ImGuiCol_TitleBgCollapsed ,
ImGuiCol_ScrollbarBg ,
@ -487,8 +499,6 @@ enum ImGuiCol_
ImGuiCol_ScrollbarGrabHovered ,
ImGuiCol_ScrollbarGrabActive ,
ImGuiCol_ComboBg ,
ImGuiCol_CheckHovered ,
ImGuiCol_CheckActive ,
ImGuiCol_CheckMark ,
ImGuiCol_SliderGrab ,
ImGuiCol_SliderGrabActive ,
@ -546,12 +556,12 @@ enum ImGuiColorEditMode_
enum ImGuiMouseCursor_
{
ImGuiMouseCursor_Arrow = 0 ,
ImGuiMouseCursor_TextInput ,
ImGuiMouseCursor_Move , // Unused by ImGui
ImGuiMouseCursor_ResizeNS , // Unused by ImGui
ImGuiMouseCursor_ResizeEW , // Unused by ImGui
ImGuiMouseCursor_ResizeNESW , // Unused by ImGui
ImGuiMouseCursor_ResizeNWSE ,
ImGuiMouseCursor_TextInput , // When hovering over InputText, etc.
ImGuiMouseCursor_Move , // Unused
ImGuiMouseCursor_ResizeNS , // Unused
ImGuiMouseCursor_ResizeEW , // When hovering over a column
ImGuiMouseCursor_ResizeNESW , // Unused
ImGuiMouseCursor_ResizeNWSE , // When hovering over the bottom-right corner of a window
ImGuiMouseCursor_Count_
} ;
@ -660,6 +670,7 @@ struct ImGuiIO
bool WantCaptureMouse ; // Mouse is hovering a window or widget is active (= ImGui will use your mouse input)
bool WantCaptureKeyboard ; // Widget is active (= ImGui will use your keyboard input)
float Framerate ; // Framerate estimation, in frame per second. Rolling average estimation based on IO.DeltaTime over 120 frames
int MetricsVertices ; // Vertices processed during last call to Render()
//------------------------------------------------------------------
// [Internal] ImGui will maintain those fields for you
@ -873,6 +884,7 @@ IMGUI_OVERRIDE_DRAWVERT_STRUCT_LAYOUT;
// At the moment, each ImGui window contains its own ImDrawList but they could potentially be merged in the future.
// If you want to add custom rendering within a window, you can use ImGui::GetWindowDrawList() to access the current draw list and add your own primitives.
// You can interleave normal ImGui:: calls and adding primitives to the current draw list.
// All positions are in screen coordinates (0,0=top-left, 1 pixel per unit). Primitives are always added to the list and not culled (culling is done at render time and at a higher-level by ImGui:: functions).
// Note that this only gives you access to rendering polygons. If your intent is to create custom widgets and the publicly exposed functions/data aren't sufficient, you can add code in imgui_user.inl
struct ImDrawList
{
@ -1008,7 +1020,7 @@ struct ImFont
// Methods
IMGUI_API ImFont ( ) ;
IMGUI_API ~ ImFont ( ) { Clear ( ) ; }
IMGUI_API ~ ImFont ( ) ;
IMGUI_API void Clear ( ) ;
IMGUI_API void BuildLookupTable ( ) ;
IMGUI_API const Glyph * FindGlyph ( unsigned short c ) const ;