mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-30 20:51:06 +01:00 
			
		
		
		
	ImDrawList: Tweaks to make style consistent (using pointers, same local names). Added comments. Should be no-op.
This commit is contained in:
		| @@ -4077,15 +4077,15 @@ static void AddWindowToSortBuffer(ImVector<ImGuiWindow*>* out_sorted_windows, Im | |||||||
|  |  | ||||||
| static void AddDrawListToDrawData(ImVector<ImDrawList*>* out_list, ImDrawList* draw_list) | static void AddDrawListToDrawData(ImVector<ImDrawList*>* out_list, ImDrawList* draw_list) | ||||||
| { | { | ||||||
|     if (draw_list->CmdBuffer.empty()) |     if (draw_list->CmdBuffer.Size == 0) | ||||||
|         return; |         return; | ||||||
|  |  | ||||||
|     // Remove trailing command if unused |     // Remove trailing command if unused | ||||||
|     ImDrawCmd& last_cmd = draw_list->CmdBuffer.back(); |     ImDrawCmd* curr_cmd = &draw_list->CmdBuffer.back(); | ||||||
|     if (last_cmd.ElemCount == 0 && last_cmd.UserCallback == NULL) |     if (curr_cmd->ElemCount == 0 && curr_cmd->UserCallback == NULL) | ||||||
|     { |     { | ||||||
|         draw_list->CmdBuffer.pop_back(); |         draw_list->CmdBuffer.pop_back(); | ||||||
|         if (draw_list->CmdBuffer.empty()) |         if (draw_list->CmdBuffer.Size == 0) | ||||||
|             return; |             return; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										20
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -1878,13 +1878,13 @@ typedef void (*ImDrawCallback)(const ImDrawList* parent_list, const ImDrawCmd* c | |||||||
| // is enabled, those fields allow us to render meshes larger than 64K vertices while keeping 16-bit indices. | // is enabled, those fields allow us to render meshes larger than 64K vertices while keeping 16-bit indices. | ||||||
| struct ImDrawCmd | struct ImDrawCmd | ||||||
| { | { | ||||||
|     unsigned int    ElemCount;              // Number of indices (multiple of 3) to be rendered as triangles. Vertices are stored in the callee ImDrawList's vtx_buffer[] array, indices in idx_buffer[]. |     unsigned int    ElemCount;          // 4    // Number of indices (multiple of 3) to be rendered as triangles. Vertices are stored in the callee ImDrawList's vtx_buffer[] array, indices in idx_buffer[]. | ||||||
|     ImVec4          ClipRect;               // Clipping rectangle (x1, y1, x2, y2). Subtract ImDrawData->DisplayPos to get clipping rectangle in "viewport" coordinates |     ImVec4          ClipRect;           // 4*4  // Clipping rectangle (x1, y1, x2, y2). Subtract ImDrawData->DisplayPos to get clipping rectangle in "viewport" coordinates | ||||||
|     ImTextureID     TextureId;              // User-provided texture ID. Set by user in ImfontAtlas::SetTexID() for fonts or passed to Image*() functions. Ignore if never using images or multiple fonts atlas. |     ImTextureID     TextureId;          // 4-8  // User-provided texture ID. Set by user in ImfontAtlas::SetTexID() for fonts or passed to Image*() functions. Ignore if never using images or multiple fonts atlas. | ||||||
|     unsigned int    VtxOffset;              // Start offset in vertex buffer. Pre-1.71 or without ImGuiBackendFlags_RendererHasVtxOffset: always 0. With ImGuiBackendFlags_RendererHasVtxOffset: may be >0 to support meshes larger than 64K vertices with 16-bit indices. |     unsigned int    VtxOffset;          // 4    // Start offset in vertex buffer. Pre-1.71 or without ImGuiBackendFlags_RendererHasVtxOffset: always 0. With ImGuiBackendFlags_RendererHasVtxOffset: may be >0 to support meshes larger than 64K vertices with 16-bit indices. | ||||||
|     unsigned int    IdxOffset;              // Start offset in index buffer. Always equal to sum of ElemCount drawn so far. |     unsigned int    IdxOffset;          // 4    // Start offset in index buffer. Always equal to sum of ElemCount drawn so far. | ||||||
|     ImDrawCallback  UserCallback;           // If != NULL, call the function instead of rendering the vertices. clip_rect and texture_id will be set normally. |     ImDrawCallback  UserCallback;       // 4-8  // If != NULL, call the function instead of rendering the vertices. clip_rect and texture_id will be set normally. | ||||||
|     void*           UserCallbackData;       // The draw callback code can access this. |     void*           UserCallbackData;   // 4-8  // The draw callback code can access this. | ||||||
|  |  | ||||||
|     ImDrawCmd() { ElemCount = 0; TextureId = (ImTextureID)NULL; VtxOffset = IdxOffset = 0;  UserCallback = NULL; UserCallbackData = NULL; } |     ImDrawCmd() { ElemCount = 0; TextureId = (ImTextureID)NULL; VtxOffset = IdxOffset = 0;  UserCallback = NULL; UserCallbackData = NULL; } | ||||||
| }; | }; | ||||||
| @@ -1984,7 +1984,7 @@ struct ImDrawList | |||||||
|     ImVector<ImVec4>        _ClipRectStack;     // [Internal] |     ImVector<ImVec4>        _ClipRectStack;     // [Internal] | ||||||
|     ImVector<ImTextureID>   _TextureIdStack;    // [Internal] |     ImVector<ImTextureID>   _TextureIdStack;    // [Internal] | ||||||
|     ImVector<ImVec2>        _Path;              // [Internal] current path building |     ImVector<ImVec2>        _Path;              // [Internal] current path building | ||||||
|     ImDrawListSplitter      _Splitter;          // [Internal] for channels api |     ImDrawListSplitter      _Splitter;          // [Internal] for channels api (note: prefer using your own persistent instance of ImDrawListSplitter!) | ||||||
|  |  | ||||||
|     // If you want to create ImDrawList instances, pass them ImGui::GetDrawListSharedData() or create and use your own ImDrawListSharedData (so you can use ImDrawList without ImGui) |     // If you want to create ImDrawList instances, pass them ImGui::GetDrawListSharedData() or create and use your own ImDrawListSharedData (so you can use ImDrawList without ImGui) | ||||||
|     ImDrawList(const ImDrawListSharedData* shared_data) { _Data = shared_data; _OwnerName = NULL; Clear(); } |     ImDrawList(const ImDrawListSharedData* shared_data) { _Data = shared_data; _OwnerName = NULL; Clear(); } | ||||||
| @@ -2048,13 +2048,13 @@ struct ImDrawList | |||||||
|     // - Use to split render into layers. By switching channels to can render out-of-order (e.g. submit FG primitives before BG primitives) |     // - Use to split render into layers. By switching channels to can render out-of-order (e.g. submit FG primitives before BG primitives) | ||||||
|     // - Use to minimize draw calls (e.g. if going back-and-forth between multiple clipping rectangles, prefer to append into separate channels then merge at the end) |     // - Use to minimize draw calls (e.g. if going back-and-forth between multiple clipping rectangles, prefer to append into separate channels then merge at the end) | ||||||
|     // - FIXME-OBSOLETE: This API shouldn't have been in ImDrawList in the first place! |     // - FIXME-OBSOLETE: This API shouldn't have been in ImDrawList in the first place! | ||||||
|     //   Prefer using your own persistent copy of ImDrawListSplitter as you can stack them. |     //   Prefer using your own persistent instance of ImDrawListSplitter as you can stack them. | ||||||
|     //   Using the ImDrawList::ChannelsXXXX you cannot stack a split over another. |     //   Using the ImDrawList::ChannelsXXXX you cannot stack a split over another. | ||||||
|     inline void     ChannelsSplit(int count)    { _Splitter.Split(this, count); } |     inline void     ChannelsSplit(int count)    { _Splitter.Split(this, count); } | ||||||
|     inline void     ChannelsMerge()             { _Splitter.Merge(this); } |     inline void     ChannelsMerge()             { _Splitter.Merge(this); } | ||||||
|     inline void     ChannelsSetCurrent(int n)   { _Splitter.SetCurrentChannel(this, n); } |     inline void     ChannelsSetCurrent(int n)   { _Splitter.SetCurrentChannel(this, n); } | ||||||
|  |  | ||||||
|     // Internal helpers |     // [Internal helpers] | ||||||
|     // NB: all primitives needs to be reserved via PrimReserve() beforehand! |     // NB: all primitives needs to be reserved via PrimReserve() beforehand! | ||||||
|     IMGUI_API void  Clear(); |     IMGUI_API void  Clear(); | ||||||
|     IMGUI_API void  ClearFreeMemory(); |     IMGUI_API void  ClearFreeMemory(); | ||||||
|   | |||||||
| @@ -434,14 +434,14 @@ void ImDrawList::AddDrawCmd() | |||||||
|  |  | ||||||
| void ImDrawList::AddCallback(ImDrawCallback callback, void* callback_data) | void ImDrawList::AddCallback(ImDrawCallback callback, void* callback_data) | ||||||
| { | { | ||||||
|     ImDrawCmd* current_cmd = CmdBuffer.Size ? &CmdBuffer.back() : NULL; |     ImDrawCmd* curr_cmd = CmdBuffer.Size > 0 ? &CmdBuffer.Data[CmdBuffer.Size - 1] : NULL; | ||||||
|     if (!current_cmd || current_cmd->ElemCount != 0 || current_cmd->UserCallback != NULL) |     if (!curr_cmd || curr_cmd->ElemCount != 0 || curr_cmd->UserCallback != NULL) | ||||||
|     { |     { | ||||||
|         AddDrawCmd(); |         AddDrawCmd(); | ||||||
|         current_cmd = &CmdBuffer.back(); |         curr_cmd = &CmdBuffer.Data[CmdBuffer.Size - 1]; | ||||||
|     } |     } | ||||||
|     current_cmd->UserCallback = callback; |     curr_cmd->UserCallback = callback; | ||||||
|     current_cmd->UserCallbackData = callback_data; |     curr_cmd->UserCallbackData = callback_data; | ||||||
|  |  | ||||||
|     AddDrawCmd(); // Force a new command after us (see comment below) |     AddDrawCmd(); // Force a new command after us (see comment below) | ||||||
| } | } | ||||||
| @@ -452,7 +452,7 @@ void ImDrawList::UpdateClipRect() | |||||||
| { | { | ||||||
|     // If current command is used with different settings we need to add a new command |     // If current command is used with different settings we need to add a new command | ||||||
|     const ImVec4 curr_clip_rect = GetCurrentClipRect(); |     const ImVec4 curr_clip_rect = GetCurrentClipRect(); | ||||||
|     ImDrawCmd* curr_cmd = CmdBuffer.Size > 0 ? &CmdBuffer.Data[CmdBuffer.Size-1] : NULL; |     ImDrawCmd* curr_cmd = CmdBuffer.Size > 0 ? &CmdBuffer.Data[CmdBuffer.Size - 1] : NULL; | ||||||
|     if (!curr_cmd || (curr_cmd->ElemCount != 0 && memcmp(&curr_cmd->ClipRect, &curr_clip_rect, sizeof(ImVec4)) != 0) || curr_cmd->UserCallback != NULL) |     if (!curr_cmd || (curr_cmd->ElemCount != 0 && memcmp(&curr_cmd->ClipRect, &curr_clip_rect, sizeof(ImVec4)) != 0) || curr_cmd->UserCallback != NULL) | ||||||
|     { |     { | ||||||
|         AddDrawCmd(); |         AddDrawCmd(); | ||||||
| @@ -477,7 +477,7 @@ void ImDrawList::UpdateTextureID() | |||||||
| { | { | ||||||
|     // If current command is used with different settings we need to add a new command |     // If current command is used with different settings we need to add a new command | ||||||
|     const ImTextureID curr_texture_id = GetCurrentTextureId(); |     const ImTextureID curr_texture_id = GetCurrentTextureId(); | ||||||
|     ImDrawCmd* curr_cmd = CmdBuffer.Size ? &CmdBuffer.back() : NULL; |     ImDrawCmd* curr_cmd = CmdBuffer.Size > 0 ? &CmdBuffer.Data[CmdBuffer.Size - 1] : NULL; | ||||||
|     if (!curr_cmd || (curr_cmd->ElemCount != 0 && curr_cmd->TextureId != curr_texture_id) || curr_cmd->UserCallback != NULL) |     if (!curr_cmd || (curr_cmd->ElemCount != 0 && curr_cmd->TextureId != curr_texture_id) || curr_cmd->UserCallback != NULL) | ||||||
|     { |     { | ||||||
|         AddDrawCmd(); |         AddDrawCmd(); | ||||||
| @@ -559,8 +559,8 @@ void ImDrawList::PrimReserve(int idx_count, int vtx_count) | |||||||
|         AddDrawCmd(); |         AddDrawCmd(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     ImDrawCmd& draw_cmd = CmdBuffer.Data[CmdBuffer.Size - 1]; |     ImDrawCmd* draw_cmd = &CmdBuffer.Data[CmdBuffer.Size - 1]; | ||||||
|     draw_cmd.ElemCount += idx_count; |     draw_cmd->ElemCount += idx_count; | ||||||
|  |  | ||||||
|     int vtx_buffer_old_size = VtxBuffer.Size; |     int vtx_buffer_old_size = VtxBuffer.Size; | ||||||
|     VtxBuffer.resize(vtx_buffer_old_size + vtx_count); |     VtxBuffer.resize(vtx_buffer_old_size + vtx_count); | ||||||
| @@ -576,8 +576,8 @@ void ImDrawList::PrimUnreserve(int idx_count, int vtx_count) | |||||||
| { | { | ||||||
|     IM_ASSERT_PARANOID(idx_count >= 0 && vtx_count >= 0); |     IM_ASSERT_PARANOID(idx_count >= 0 && vtx_count >= 0); | ||||||
|  |  | ||||||
|     ImDrawCmd& draw_cmd = CmdBuffer.Data[CmdBuffer.Size - 1]; |     ImDrawCmd* draw_cmd = &CmdBuffer.Data[CmdBuffer.Size - 1]; | ||||||
|     draw_cmd.ElemCount -= idx_count; |     draw_cmd->ElemCount -= idx_count; | ||||||
|     VtxBuffer.shrink(VtxBuffer.Size - vtx_count); |     VtxBuffer.shrink(VtxBuffer.Size - vtx_count); | ||||||
|     IdxBuffer.shrink(IdxBuffer.Size - idx_count); |     IdxBuffer.shrink(IdxBuffer.Size - idx_count); | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user