mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 05:01:05 +01:00 
			
		
		
		
	Merge branch 'master' into drag_and_drop
This commit is contained in:
		
							
								
								
									
										31
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -77,6 +77,7 @@ typedef int ImGuiStyleVar;          // enum: a variable identifier for styling | ||||
| typedef int ImGuiKey;               // enum: a key identifier (ImGui-side enum) // enum ImGuiKey_ | ||||
| typedef int ImGuiMouseCursor;       // enum: a mouse cursor identifier          // enum ImGuiMouseCursor_ | ||||
| typedef int ImGuiCond;              // enum: a condition for Set*()             // enum ImGuiCond_ | ||||
| typedef int ImDrawCornerFlags;      // flags: corner flags for AddRect*() etc.  // enum ImDrawCornerFlags_ | ||||
| typedef int ImGuiColorEditFlags;    // flags: color edit flags for Color*()     // enum ImGuiColorEditFlags_ | ||||
| typedef int ImGuiDragDropFlags;     // flags: for *DragDrop*()                  // enum ImGuiDragDropFlags_ | ||||
| typedef int ImGuiWindowFlags;       // flags: window flags for Begin*()         // enum ImGuiWindowFlags_ | ||||
| @@ -683,6 +684,7 @@ enum ImGuiCol_ | ||||
|  | ||||
|     // Obsolete names (will be removed) | ||||
| #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS | ||||
|     //, ImGuiCol_ComboBg = ImGuiCol_PopupBg     // ComboBg has been merged with PopupBg, so a redirect isn't accurate. | ||||
|     , ImGuiCol_ChildWindowBg = ImGuiCol_ChildBg, ImGuiCol_Column = ImGuiCol_Separator, ImGuiCol_ColumnHovered = ImGuiCol_SeparatorHovered, ImGuiCol_ColumnActive = ImGuiCol_SeparatorActive | ||||
| #endif | ||||
| }; | ||||
| @@ -1005,6 +1007,7 @@ public: | ||||
|  | ||||
|     inline void                 push_back(const value_type& v)  { if (Size == Capacity) reserve(_grow_capacity(Size+1)); Data[Size++] = v; } | ||||
|     inline void                 pop_back()                      { IM_ASSERT(Size > 0); Size--; } | ||||
|     inline void                 push_front(const value_type& v) { if (Size == 0) push_back(v); else insert(Data, v); } | ||||
|  | ||||
|     inline iterator             erase(const_iterator it)        { IM_ASSERT(it >= Data && it < Data+Size); const ptrdiff_t off = it - Data; memmove(Data + off, Data + off + 1, ((size_t)Size - (size_t)off - 1) * sizeof(value_type)); Size--; return Data + off; } | ||||
|     inline iterator             insert(const_iterator it, const value_type& v)  { IM_ASSERT(it >= Data && it <= Data+Size); const ptrdiff_t off = it - Data; if (Size == Capacity) reserve(Capacity ? Capacity * 2 : 4); if (off < (int)Size) memmove(Data + off + 1, Data + off, ((size_t)Size - (size_t)off) * sizeof(value_type)); Data[off] = v; Size++; return Data + off; } | ||||
| @@ -1070,9 +1073,10 @@ struct ImGuiTextBuffer | ||||
|     int                 size() const { return Buf.Size - 1; } | ||||
|     bool                empty() { return Buf.Size <= 1; } | ||||
|     void                clear() { Buf.clear(); Buf.push_back(0); } | ||||
|     void                reserve(int capacity) { Buf.reserve(capacity); } | ||||
|     const char*         c_str() const { return Buf.Data; } | ||||
|     IMGUI_API void      append(const char* fmt, ...) IM_FMTARGS(2); | ||||
|     IMGUI_API void      appendv(const char* fmt, va_list args) IM_FMTLIST(2); | ||||
|     IMGUI_API void      appendf(const char* fmt, ...) IM_FMTARGS(2); | ||||
|     IMGUI_API void      appendfv(const char* fmt, va_list args) IM_FMTLIST(2); | ||||
| }; | ||||
|  | ||||
| // Helper: Simple Key->value storage | ||||
| @@ -1119,6 +1123,9 @@ struct ImGuiStorage | ||||
|  | ||||
|     // Use on your own storage if you know only integer are being stored (open/close all tree nodes) | ||||
|     IMGUI_API void      SetAllInt(int val); | ||||
|  | ||||
|     // For quicker full rebuild of a storage (instead of an incremental one), you may add all your contents and then sort once. | ||||
|     IMGUI_API void      BuildSortByKey(); | ||||
| }; | ||||
|  | ||||
| // Shared state of InputText(), passed to callback when a ImGuiInputTextFlags_Callback* flag is used and the corresponding callback is triggered. | ||||
| @@ -1303,6 +1310,19 @@ struct ImDrawChannel | ||||
|     ImVector<ImDrawIdx>     IdxBuffer; | ||||
| }; | ||||
|  | ||||
| enum ImDrawCornerFlags_ | ||||
| { | ||||
|     ImDrawCornerFlags_TopLeft   = 1 << 0, // 0x1 | ||||
|     ImDrawCornerFlags_TopRight  = 1 << 1, // 0x2 | ||||
|     ImDrawCornerFlags_BotLeft   = 1 << 2, // 0x4 | ||||
|     ImDrawCornerFlags_BotRight  = 1 << 3, // 0x8 | ||||
|     ImDrawCornerFlags_Top       = ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_TopRight,   // 0x3 | ||||
|     ImDrawCornerFlags_Bot       = ImDrawCornerFlags_BotLeft | ImDrawCornerFlags_BotRight,   // 0xC | ||||
|     ImDrawCornerFlags_Left      = ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_BotLeft,    // 0x5 | ||||
|     ImDrawCornerFlags_Right     = ImDrawCornerFlags_TopRight | ImDrawCornerFlags_BotRight,  // 0xA | ||||
|     ImDrawCornerFlags_All       = 0xF     // In your function calls you may use ~0 (= all bits sets) instead of ImDrawCornerFlags_All, as a convenience | ||||
| }; | ||||
|  | ||||
| // Draw command list | ||||
| // This is the low-level list of polygons that ImGui functions are filling. At the end of the frame, all command lists are passed to your ImGuiIO::RenderDrawListFn function for rendering. | ||||
| // At the moment, each ImGui window contains its own ImDrawList but they could potentially be merged in the future. | ||||
| @@ -1341,8 +1361,8 @@ struct ImDrawList | ||||
|  | ||||
|     // Primitives | ||||
|     IMGUI_API void  AddLine(const ImVec2& a, const ImVec2& b, ImU32 col, float thickness = 1.0f); | ||||
|     IMGUI_API void  AddRect(const ImVec2& a, const ImVec2& b, ImU32 col, float rounding = 0.0f, int rounding_corners_flags = ~0, float thickness = 1.0f);   // a: upper-left, b: lower-right, rounding_corners_flags: 4-bits corresponding to which corner to round | ||||
|     IMGUI_API void  AddRectFilled(const ImVec2& a, const ImVec2& b, ImU32 col, float rounding = 0.0f, int rounding_corners_flags = ~0);                     // a: upper-left, b: lower-right | ||||
|     IMGUI_API void  AddRect(const ImVec2& a, const ImVec2& b, ImU32 col, float rounding = 0.0f, int rounding_corners_flags = ImDrawCornerFlags_All, float thickness = 1.0f);   // a: upper-left, b: lower-right, rounding_corners_flags: 4-bits corresponding to which corner to round | ||||
|     IMGUI_API void  AddRectFilled(const ImVec2& a, const ImVec2& b, ImU32 col, float rounding = 0.0f, int rounding_corners_flags = ImDrawCornerFlags_All);                     // a: upper-left, b: lower-right | ||||
|     IMGUI_API void  AddRectFilledMultiColor(const ImVec2& a, const ImVec2& b, ImU32 col_upr_left, ImU32 col_upr_right, ImU32 col_bot_right, ImU32 col_bot_left); | ||||
|     IMGUI_API void  AddQuad(const ImVec2& a, const ImVec2& b, const ImVec2& c, const ImVec2& d, ImU32 col, float thickness = 1.0f); | ||||
|     IMGUI_API void  AddQuadFilled(const ImVec2& a, const ImVec2& b, const ImVec2& c, const ImVec2& d, ImU32 col); | ||||
| @@ -1354,6 +1374,7 @@ struct ImDrawList | ||||
|     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& uv_a = ImVec2(0,0), const ImVec2& uv_b = ImVec2(1,1), ImU32 col = 0xFFFFFFFF); | ||||
|     IMGUI_API void  AddImageQuad(ImTextureID user_texture_id, const ImVec2& a, const ImVec2& b, const ImVec2& c, const ImVec2& d, const ImVec2& uv_a = ImVec2(0,0), const ImVec2& uv_b = ImVec2(1,0), const ImVec2& uv_c = ImVec2(1,1), const ImVec2& uv_d = ImVec2(0,1), ImU32 col = 0xFFFFFFFF); | ||||
|     IMGUI_API void  AddImageRounded(ImTextureID user_texture_id, const ImVec2& a, const ImVec2& b, const ImVec2& uv_a, const ImVec2& uv_b, ImU32 col, float rounding, int rounding_corners = ImDrawCornerFlags_All); | ||||
|     IMGUI_API void  AddPolyline(const ImVec2* points, const int num_points, ImU32 col, bool closed, float thickness, bool anti_aliased); | ||||
|     IMGUI_API void  AddConvexPolyFilled(const ImVec2* points, const int num_points, ImU32 col, bool anti_aliased); | ||||
|     IMGUI_API void  AddBezierCurve(const ImVec2& pos0, const ImVec2& cp0, const ImVec2& cp1, const ImVec2& pos1, ImU32 col, float thickness, int num_segments = 0); | ||||
| @@ -1367,7 +1388,7 @@ struct ImDrawList | ||||
|     IMGUI_API void  PathArcTo(const ImVec2& centre, float radius, float a_min, float a_max, int num_segments = 10); | ||||
|     IMGUI_API void  PathArcToFast(const ImVec2& centre, float radius, int a_min_of_12, int a_max_of_12);                                // Use precomputed angles for a 12 steps circle | ||||
|     IMGUI_API void  PathBezierCurveTo(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3, int num_segments = 0); | ||||
|     IMGUI_API void  PathRect(const ImVec2& rect_min, const ImVec2& rect_max, float rounding = 0.0f, int rounding_corners_flags = ~0);   // rounding_corners_flags: 4-bits corresponding to which corner to round | ||||
|     IMGUI_API void  PathRect(const ImVec2& rect_min, const ImVec2& rect_max, float rounding = 0.0f, int rounding_corners_flags = ImDrawCornerFlags_All); | ||||
|  | ||||
|     // Channels | ||||
|     // - Use to simulate layers. By switching channels to can render out-of-order (e.g. submit foreground primitives before background primitives) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user