MCPcopy Create free account
hub / github.com/PCSX2/pcsx2 / SetCurrentChannel

Method SetCurrentChannel

3rdparty/imgui/src/imgui_draw.cpp:2250–2272  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2248}
2249
2250void ImDrawListSplitter::SetCurrentChannel(ImDrawList* draw_list, int idx)
2251{
2252 IM_ASSERT(idx >= 0 && idx < _Count);
2253 if (_Current == idx)
2254 return;
2255
2256 // Overwrite ImVector (12/16 bytes), four times. This is merely a silly optimization instead of doing .swap()
2257 memcpy(&_Channels.Data[_Current]._CmdBuffer, &draw_list->CmdBuffer, sizeof(draw_list->CmdBuffer));
2258 memcpy(&_Channels.Data[_Current]._IdxBuffer, &draw_list->IdxBuffer, sizeof(draw_list->IdxBuffer));
2259 _Current = idx;
2260 memcpy(&draw_list->CmdBuffer, &_Channels.Data[idx]._CmdBuffer, sizeof(draw_list->CmdBuffer));
2261 memcpy(&draw_list->IdxBuffer, &_Channels.Data[idx]._IdxBuffer, sizeof(draw_list->IdxBuffer));
2262 draw_list->_IdxWritePtr = draw_list->IdxBuffer.Data + draw_list->IdxBuffer.Size;
2263
2264 // If current command is used with different settings we need to add a new command
2265 ImDrawCmd* curr_cmd = (draw_list->CmdBuffer.Size == 0) ? NULL : &draw_list->CmdBuffer.Data[draw_list->CmdBuffer.Size - 1];
2266 if (curr_cmd == NULL)
2267 draw_list->AddDrawCmd();
2268 else if (curr_cmd->ElemCount == 0)
2269 ImDrawCmd_HeaderCopy(curr_cmd, &draw_list->_CmdHeader); // Copy ClipRect, TexRef, VtxOffset
2270 else if (ImDrawCmd_HeaderCompare(curr_cmd, &draw_list->_CmdHeader) != 0)
2271 draw_list->AddDrawCmd();
2272}
2273
2274//-----------------------------------------------------------------------------
2275// [SECTION] ImDrawData

Callers 15

TableUpdateLayoutMethod · 0.80
EndTableMethod · 0.80
TableEndRowMethod · 0.80
TableBeginCellMethod · 0.80
TablePopColumnChannelMethod · 0.80
TableDrawBordersMethod · 0.80
PushColumnsBackgroundMethod · 0.80
PopColumnsBackgroundMethod · 0.80

Calls 1

AddDrawCmdMethod · 0.80

Tested by

no test coverage detected