MCPcopy Create free account
hub / github.com/VictorGordan/opengl-tutorials / SetCurrentChannel

Method SetCurrentChannel

ImGUI GLFW Tutorial/imgui/imgui_draw.cpp:1776–1798  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1774}
1775
1776void ImDrawListSplitter::SetCurrentChannel(ImDrawList* draw_list, int idx)
1777{
1778 IM_ASSERT(idx >= 0 && idx < _Count);
1779 if (_Current == idx)
1780 return;
1781
1782 // Overwrite ImVector (12/16 bytes), four times. This is merely a silly optimization instead of doing .swap()
1783 memcpy(&_Channels.Data[_Current]._CmdBuffer, &draw_list->CmdBuffer, sizeof(draw_list->CmdBuffer));
1784 memcpy(&_Channels.Data[_Current]._IdxBuffer, &draw_list->IdxBuffer, sizeof(draw_list->IdxBuffer));
1785 _Current = idx;
1786 memcpy(&draw_list->CmdBuffer, &_Channels.Data[idx]._CmdBuffer, sizeof(draw_list->CmdBuffer));
1787 memcpy(&draw_list->IdxBuffer, &_Channels.Data[idx]._IdxBuffer, sizeof(draw_list->IdxBuffer));
1788 draw_list->_IdxWritePtr = draw_list->IdxBuffer.Data + draw_list->IdxBuffer.Size;
1789
1790 // If current command is used with different settings we need to add a new command
1791 ImDrawCmd* curr_cmd = (draw_list->CmdBuffer.Size == 0) ? NULL : &draw_list->CmdBuffer.Data[draw_list->CmdBuffer.Size - 1];
1792 if (curr_cmd == NULL)
1793 draw_list->AddDrawCmd();
1794 else if (curr_cmd->ElemCount == 0)
1795 ImDrawCmd_HeaderCopy(curr_cmd, &draw_list->_CmdHeader); // Copy ClipRect, TextureId, VtxOffset
1796 else if (ImDrawCmd_HeaderCompare(curr_cmd, &draw_list->_CmdHeader) != 0)
1797 draw_list->AddDrawCmd();
1798}
1799
1800//-----------------------------------------------------------------------------
1801// [SECTION] ImDrawData

Callers 12

TableUpdateLayoutMethod · 0.45
EndTableMethod · 0.45
TableEndRowMethod · 0.45
TableBeginCellMethod · 0.45
TableDrawBordersMethod · 0.45
PushColumnsBackgroundMethod · 0.45
PopColumnsBackgroundMethod · 0.45
BeginColumnsMethod · 0.45
NextColumnMethod · 0.45
ChannelsSetCurrentMethod · 0.45

Calls 1

AddDrawCmdMethod · 0.45

Tested by

no test coverage detected