// Copyright (C) 2009-2021, Panagiotis Christopoulos Charitos and contributors. // All rights reserved. // Code licensed under the BSD License. // http://www.anki3d.org/LICENSE #include #include #include #include #include #include namespace anki { class Label : public UiImmediateModeBuilder { public: using UiImmediateModeBuilder::UiImmediateModeBuilder; Bool m_windowInitialized = false; U32 m_buttonClickCount = 0; void build(CanvasPtr canvas) final { Vec4 oldBackground = ImGui::GetStyle().Colors[ImGuiCol_WindowBg]; ImGui::GetStyle().Colors[ImGuiCol_WindowBg].w = 0.8f; ImGui::Begin("ImGui Demo", nullptr); if(!m_windowInitialized) { ImGui::SetWindowPos(Vec2(20, 10)); ImGui::SetWindowSize(Vec2(200, 500)); m_windowInitialized = true; } ImGui::Text("Label default size"); canvas->pushFont(canvas->getDefaultFont(), 30); ImGui::Text("Label size 30"); ImGui::PopFont(); m_buttonClickCount += ImGui::Button("Toggle"); if(m_buttonClickCount & 1) { ImGui::Button("Toggled"); } ImGui::End(); ImGui::GetStyle().Colors[ImGuiCol_WindowBg] = oldBackground; } }; ANKI_TEST(Ui, Ui) { ConfigSet cfg = DefaultConfigSet::get(); initConfig(cfg); cfg.set("gr_vsync", 1); cfg.set("gr_validation", 0); cfg.set("width", 1024); cfg.set("height", 760); cfg.set("rsrc_dataPaths", "EngineAssets"); NativeWindow* win = createWindow(cfg); Input* in; ANKI_TEST_EXPECT_NO_ERR(Input::newInstance(allocAligned, nullptr, win, in)); GrManager* gr = createGrManager(cfg, win); PhysicsWorld* physics; ResourceFilesystem* fs; ResourceManager* resource = createResourceManager(cfg, gr, physics, fs); UiManager* ui = new UiManager(); StagingGpuMemoryManager* stagingMem = new StagingGpuMemoryManager(); ANKI_TEST_EXPECT_NO_ERR(stagingMem->init(gr, cfg)); HeapAllocator alloc(allocAligned, nullptr); ANKI_TEST_EXPECT_NO_ERR(ui->init(allocAligned, nullptr, resource, gr, stagingMem, in)); { FontPtr font; ANKI_TEST_EXPECT_NO_ERR(ui->newInstance(font, "UbuntuRegular.ttf", Array{10, 20, 30, 60})); CanvasPtr canvas; ANKI_TEST_EXPECT_NO_ERR(ui->newInstance(canvas, font, 20, win->getWidth(), win->getHeight())); IntrusivePtr