refactor: move built-in icon upload into imgui backend

This commit is contained in:
2026-04-01 20:03:44 +08:00
parent bc6e20de48
commit 6cd4cd9be9
5 changed files with 385 additions and 273 deletions

View File

@@ -11,6 +11,7 @@ set(EDITOR_TEST_SOURCES
test_scene_viewport_picker.cpp
test_scene_viewport_overlay_renderer.cpp
test_viewport_host_surface_utils.cpp
test_builtin_icon_layout_utils.cpp
${CMAKE_SOURCE_DIR}/editor/src/Core/UndoManager.cpp
${CMAKE_SOURCE_DIR}/editor/src/Managers/SceneManager.cpp
${CMAKE_SOURCE_DIR}/editor/src/Managers/ProjectManager.cpp

View File

@@ -0,0 +1,40 @@
#include <gtest/gtest.h>
#include "UI/BuiltInIconLayoutUtils.h"
namespace {
using XCEngine::Editor::UI::ComputeFittedIconSize;
TEST(BuiltInIconLayoutUtilsTest, ReturnsZeroWhenTextureOrBoundsAreInvalid) {
EXPECT_EQ(
ComputeFittedIconSize(0, 64, ImVec2(0.0f, 0.0f), ImVec2(64.0f, 64.0f)).x,
0.0f);
EXPECT_EQ(
ComputeFittedIconSize(64, 64, ImVec2(10.0f, 0.0f), ImVec2(10.0f, 64.0f)).y,
0.0f);
}
TEST(BuiltInIconLayoutUtilsTest, FitsWidthLimitedRegions) {
const ImVec2 size = ComputeFittedIconSize(
256,
128,
ImVec2(0.0f, 0.0f),
ImVec2(64.0f, 64.0f));
EXPECT_FLOAT_EQ(size.x, 64.0f);
EXPECT_FLOAT_EQ(size.y, 32.0f);
}
TEST(BuiltInIconLayoutUtilsTest, FitsHeightLimitedRegions) {
const ImVec2 size = ComputeFittedIconSize(
128,
256,
ImVec2(0.0f, 0.0f),
ImVec2(80.0f, 40.0f));
EXPECT_FLOAT_EQ(size.x, 20.0f);
EXPECT_FLOAT_EQ(size.y, 40.0f);
}
} // namespace