| 5003 | } |
| 5004 | |
| 5005 | static void SetupViewportDrawData(ImGuiViewportP* viewport, ImVector<ImDrawList*>* draw_lists) |
| 5006 | { |
| 5007 | ImGuiIO& io = ImGui::GetIO(); |
| 5008 | ImDrawData* draw_data = &viewport->DrawDataP; |
| 5009 | draw_data->Valid = true; |
| 5010 | draw_data->CmdLists = (draw_lists->Size > 0) ? draw_lists->Data : NULL; |
| 5011 | draw_data->CmdListsCount = draw_lists->Size; |
| 5012 | draw_data->TotalVtxCount = draw_data->TotalIdxCount = 0; |
| 5013 | draw_data->DisplayPos = viewport->Pos; |
| 5014 | draw_data->DisplaySize = viewport->Size; |
| 5015 | draw_data->FramebufferScale = io.DisplayFramebufferScale; |
| 5016 | for (int n = 0; n < draw_lists->Size; n++) |
| 5017 | { |
| 5018 | ImDrawList* draw_list = draw_lists->Data[n]; |
| 5019 | draw_list->_PopUnusedDrawCmd(); |
| 5020 | draw_data->TotalVtxCount += draw_list->VtxBuffer.Size; |
| 5021 | draw_data->TotalIdxCount += draw_list->IdxBuffer.Size; |
| 5022 | } |
| 5023 | } |
| 5024 | |
| 5025 | // Push a clipping rectangle for both ImGui logic (hit-testing etc.) and low-level ImDrawList rendering. |
| 5026 | // - When using this function it is sane to ensure that float are perfectly rounded to integer values, |
no test coverage detected