#include #include #include #include "MainWindow.hpp" #include "gui_exceptions.hpp" #include "../common/ougge_format.hpp" #include "../resources/fonts.hpp" #include "../resources/textures.hpp" #include "../common/math.hpp" namespace ougge::gui { f32 MainWindow::getDPI(){ i32 w=0, h=0; SDL_GetRendererOutputSize(sdl_renderer, &w, &h); i32 sim_w=0, sim_h=0; SDL_GetWindowSize(sdl_window, &sim_w, &sim_h); f32 wdpi=(f32)w / sim_w; f32 hdpi=(f32)h / sim_h; f32 dpi=SDL_sqrtf(wdpi*wdpi + hdpi*hdpi); return dpi; } void MainWindow::open(const std::string& window_title){ SDL_TRY(SDL_Init(SDL_INIT_EVERYTHING)); SDL_version v; SDL_GetVersion(&v); std::cout<Pos, ImGuiCond_Always); ImGui::SetNextWindowSize(viewport->Size, ImGuiCond_Always); ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f)); ImGui::Begin("bg_window", nullptr, window_flags); ImGui::PopStyleVar(3); // DockSpace ImGuiID dockspace_id = ImGui::GetID("bg_dockspace"); ImGui::DockSpace(dockspace_id, ImVec2(0.0f, 0.0f), dockspace_flags); // MenuBar if(ImGui::BeginMainMenuBar()){ if(ImGui::BeginMenu("test")){ if(ImGui::MenuItem("throw exception")){ ImGui::EndMenu(); ImGui::EndMainMenuBar(); ImGui::End(); throw UsefulException("example exception"); } if(ImGui::MenuItem("throw const char*")){ ImGui::EndMenu(); ImGui::EndMainMenuBar(); ImGui::End(); throw "cptr"; } if(ImGui::MenuItem("throw std::string")){ ImGui::EndMenu(); ImGui::EndMainMenuBar(); ImGui::End(); throw std::string("str"); } if(ImGui::MenuItem("throw unknown")){ ImGui::EndMenu(); ImGui::EndMainMenuBar(); ImGui::End(); throw 111; } ImGui::EndMenu(); } ImGui::EndMainMenuBar(); } ImGui::End(); } void MainWindow::draw_debug_window(){ ImGuiIO& io = ImGui::GetIO(); if(ImGui::Begin("Debug Options", &show_debug_window)){ ImGui::ColorEdit3("clear_color", (float*)&clear_color); ImGui::InputInt("fps_max", &fps_max); ImGui::Text("Application average %.3f ms/frame (%.2f FPS)", 1000.0f / io.Framerate, io.Framerate); ImGui::Checkbox("Demo Window", &show_demo_window); ImGui::Checkbox("Metrics/Debug Window", &show_metrics_window); ImGui::End(); } if (show_demo_window) ImGui::ShowDemoWindow(&show_demo_window); if (show_metrics_window) ImGui::ShowMetricsWindow(&show_metrics_window); } }