diff options
Diffstat (limited to '3rdparty/bgfx/examples/00-helloworld/helloworld.cpp')
-rw-r--r-- | 3rdparty/bgfx/examples/00-helloworld/helloworld.cpp | 191 |
1 files changed, 177 insertions, 14 deletions
diff --git a/3rdparty/bgfx/examples/00-helloworld/helloworld.cpp b/3rdparty/bgfx/examples/00-helloworld/helloworld.cpp index 92996ae0314..e2e8a599a15 100644 --- a/3rdparty/bgfx/examples/00-helloworld/helloworld.cpp +++ b/3rdparty/bgfx/examples/00-helloworld/helloworld.cpp @@ -7,6 +7,7 @@ #include "common.h" #include "bgfx_utils.h" #include "logo.h" +#include "imgui/imgui.h" class ExampleHelloWorld : public entry::AppI { @@ -28,23 +29,111 @@ class ExampleHelloWorld : public entry::AppI // Set view 0 clear state. bgfx::setViewClear(0 , BGFX_CLEAR_COLOR|BGFX_CLEAR_DEPTH - , 0x303030ff + , 0x000000ff , 1.0f , 0 ); + imguiCreate(); + ImGui::GetIO().FontGlobalScale = 1.5; } virtual int shutdown() BX_OVERRIDE { + // Cleanup. + imguiDestroy(); + // Shutdown bgfx. bgfx::shutdown(); return 0; } + void displayMainMenu() + { + if (ImGui::BeginMainMenuBar()) + { + if (ImGui::BeginMenu("Left")) + { + if (ImGui::MenuItem("Brief", "CTRL+1")) {} + if (ImGui::MenuItem("Medium", "CTRL+2")) {} + if (ImGui::MenuItem("Two columns", "CTRL+3")) {} + if (ImGui::MenuItem("Full (name)", "CTRL+4")) {} + if (ImGui::MenuItem("Full (size, time)", "CTRL+5")) {} + if (ImGui::MenuItem("Full (access)", "CTRL+6")) {} + ImGui::Separator(); + if (ImGui::BeginMenu("Sort mode")) + { + ImGui::MenuItem("Name"); + ImGui::MenuItem("Extension"); + ImGui::MenuItem("Modif. Time"); + ImGui::MenuItem("Size"); + ImGui::MenuItem("Unsorted"); + ImGui::EndMenu(); + } + if (ImGui::MenuItem("Change source")) {} + ImGui::EndMenu(); + } + if (ImGui::BeginMenu("Files")) + { + if (ImGui::MenuItem("User menu", "F2")) {} + if (ImGui::MenuItem("View", "F3")) {} + if (ImGui::MenuItem("Edit", "F4")) {} + if (ImGui::MenuItem("Copy", "F5")) {} + if (ImGui::MenuItem("Rename or move", "F6")) {} + if (ImGui::MenuItem("Make directory", "F7")) {} + if (ImGui::MenuItem("Delete", "F8")) {} + ImGui::Separator(); + if (ImGui::MenuItem("File attributes", "CTRL+A")) {} + if (ImGui::MenuItem("Apply command", "CTRL+G")) {} + ImGui::Separator(); + if (ImGui::MenuItem("Select group")) {} + if (ImGui::MenuItem("Unselect group")) {} + if (ImGui::MenuItem("Invert selection")) {} + ImGui::EndMenu(); + } + if (ImGui::BeginMenu("Commands")) + { + if (ImGui::MenuItem("Find file", "ALT+F7")) {} + if (ImGui::MenuItem("History", "ALT+F8")) {} + if (ImGui::MenuItem("Maximize window", "ALT+F9")) {} + ImGui::Separator(); + if (ImGui::MenuItem("Panel on/off", "CTRL+O")) {} + if (ImGui::MenuItem("Equal panels", "CTRL+=")) {} + ImGui::EndMenu(); + } + if (ImGui::BeginMenu("Options")) + { + if (ImGui::MenuItem("Settings")) {} + ImGui::EndMenu(); + } + if (ImGui::BeginMenu("Right")) + { + if (ImGui::MenuItem("Brief", "CTRL+1")) {} + if (ImGui::MenuItem("Medium", "CTRL+2")) {} + if (ImGui::MenuItem("Two columns", "CTRL+3")) {} + if (ImGui::MenuItem("Full (name)", "CTRL+4")) {} + if (ImGui::MenuItem("Full (size, time)", "CTRL+5")) {} + if (ImGui::MenuItem("Full (access)", "CTRL+6")) {} + ImGui::Separator(); + if (ImGui::BeginMenu("Sort mode")) + { + ImGui::MenuItem("Name"); + ImGui::MenuItem("Extension"); + ImGui::MenuItem("Modif. Time"); + ImGui::MenuItem("Size"); + ImGui::MenuItem("Unsorted"); + ImGui::EndMenu(); + } + if (ImGui::MenuItem("Change source")) {} + ImGui::EndMenu(); + } + ImGui::EndMainMenuBar(); + } + } + bool update() BX_OVERRIDE { - if (!entry::processEvents(m_width, m_height, m_debug, m_reset) ) + if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState) ) { // Set view 0 default viewport. bgfx::setViewRect(0, 0, 0, m_width, m_height); @@ -53,18 +142,91 @@ class ExampleHelloWorld : public entry::AppI // if no other draw calls are submitted to view 0. bgfx::touch(0); - // Use debug font to print information about this example. - bgfx::dbgTextClear(); - bgfx::dbgTextImage(bx::uint16_max(m_width /2/8, 20)-20 - , bx::uint16_max(m_height/2/16, 6)-6 - , 40 - , 12 - , s_logo - , 160 - ); - bgfx::dbgTextPrintf(0, 1, 0x4f, "bgfx/examples/00-helloworld"); - bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Initialization and debug text."); - + imguiBeginFrame(m_mouseState.m_mx + , m_mouseState.m_my + , (m_mouseState.m_buttons[entry::MouseButton::Left] ? IMGUI_MBUT_LEFT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Right] ? IMGUI_MBUT_RIGHT : 0) + , m_mouseState.m_mz + , m_width + , m_height + ); + displayMainMenu(); + ImGui::SetNextWindowPos(ImVec2(0, 32)); + ImGui::SetNextWindowSize(ImVec2(m_width/2, m_height - 32)); + if (ImGui::Begin("Window1", nullptr, ImVec2(m_width/2, m_height-32), 1.0f, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar)) + { + ImGui::PushStyleVar(ImGuiStyleVar_ChildWindowRounding, 5.0f); + ImGui::BeginChild("Sub1", ImVec2(0, m_height - 48), true); + + + ImGui::Columns(4, "mycolumns"); + ImGui::Separator(); + ImGui::Text("ID"); ImGui::NextColumn(); + ImGui::Text("Name"); ImGui::NextColumn(); + ImGui::Text("Path"); ImGui::NextColumn(); + ImGui::Text("Flags"); ImGui::NextColumn(); + ImGui::Separator(); + const char* names[3] = { "One", "Two", "Three" }; + const char* paths[3] = { "/path/one", "/path/two", "/path/three" }; + static int selected = -1; + for (int i = 0; i < 50; i++) + { + char label[32]; + sprintf(label, "%04d", i); + if (ImGui::Selectable(label, selected == i, ImGuiSelectableFlags_SpanAllColumns)) + selected = i; + ImGui::NextColumn(); + ImGui::Text(names[i%3]); ImGui::NextColumn(); + ImGui::Text(paths[i % 3]); ImGui::NextColumn(); + ImGui::Text("...."); ImGui::NextColumn(); + } + ImGui::Columns(1); + ImGui::Separator(); + + + + ImGui::EndChild(); + ImGui::PopStyleVar(); + } + ImGui::End(); + ImGui::SameLine(); + ImGui::SetNextWindowPos(ImVec2(m_width / 2, 32)); + ImGui::SetNextWindowSize(ImVec2(m_width / 2, m_height - 32)); + if (ImGui::Begin("Window2", nullptr, ImVec2(m_width/2, m_height - 32), 1.0f, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar)) + { + ImGui::PushStyleVar(ImGuiStyleVar_ChildWindowRounding, 5.0f); + ImGui::BeginChild("Sub2", ImVec2(0, m_height - 48), true); + + ImGui::Columns(4, "mycolumns"); + ImGui::Separator(); + ImGui::Text("ID"); ImGui::NextColumn(); + ImGui::Text("Name"); ImGui::NextColumn(); + ImGui::Text("Path"); ImGui::NextColumn(); + ImGui::Text("Flags"); ImGui::NextColumn(); + ImGui::Separator(); + const char* names[3] = { "One", "Two", "Three" }; + const char* paths[3] = { "/path/one", "/path/two", "/path/three" }; + static int selected = -1; + for (int i = 0; i < 3; i++) + { + char label[32]; + sprintf(label, "%04d", i); + if (ImGui::Selectable(label, selected == i, ImGuiSelectableFlags_SpanAllColumns)) + selected = i; + ImGui::NextColumn(); + ImGui::Text(names[i]); ImGui::NextColumn(); + ImGui::Text(paths[i]); ImGui::NextColumn(); + ImGui::Text("...."); ImGui::NextColumn(); + } + ImGui::Columns(1); + ImGui::Separator(); + + + ImGui::EndChild(); + ImGui::PopStyleVar(); + } + ImGui::End(); + imguiEndFrame(); // Advance to next frame. Rendering thread will be kicked to // process submitted rendering primitives. bgfx::frame(); @@ -79,6 +241,7 @@ class ExampleHelloWorld : public entry::AppI uint32_t m_height; uint32_t m_debug; uint32_t m_reset; + entry::MouseState m_mouseState; }; ENTRY_IMPLEMENT_MAIN(ExampleHelloWorld); |