Add XCUI native image UV support
This commit is contained in:
@@ -135,13 +135,18 @@ TEST(NativeXCUIPanelCanvasHostTest, SurfaceImagePathCapturesSurfaceAndPreviewFra
|
||||
EXPECT_TRUE(snapshot.surfaceImage.IsValid());
|
||||
EXPECT_EQ(snapshot.surfaceImage.texture.nativeHandle, 17u);
|
||||
EXPECT_EQ(snapshot.overlayDrawData.GetDrawListCount(), 1u);
|
||||
EXPECT_EQ(snapshot.overlayDrawData.GetTotalCommandCount(), 3u);
|
||||
EXPECT_EQ(snapshot.overlayDrawData.GetTotalCommandCount(), 4u);
|
||||
|
||||
const auto& commands = snapshot.overlayDrawData.GetDrawLists().front().GetCommands();
|
||||
ASSERT_EQ(commands.size(), 3u);
|
||||
ASSERT_EQ(commands.size(), 4u);
|
||||
EXPECT_EQ(commands[0].type, XCEngine::UI::UIDrawCommandType::PushClipRect);
|
||||
EXPECT_EQ(commands[1].type, XCEngine::UI::UIDrawCommandType::RectOutline);
|
||||
EXPECT_EQ(commands[2].type, XCEngine::UI::UIDrawCommandType::PopClipRect);
|
||||
EXPECT_EQ(commands[1].type, XCEngine::UI::UIDrawCommandType::Image);
|
||||
EXPECT_FLOAT_EQ(commands[1].uvMin.x, 0.0f);
|
||||
EXPECT_FLOAT_EQ(commands[1].uvMin.y, 0.0f);
|
||||
EXPECT_FLOAT_EQ(commands[1].uvMax.x, 1.0f);
|
||||
EXPECT_FLOAT_EQ(commands[1].uvMax.y, 1.0f);
|
||||
EXPECT_EQ(commands[2].type, XCEngine::UI::UIDrawCommandType::RectOutline);
|
||||
EXPECT_EQ(commands[3].type, XCEngine::UI::UIDrawCommandType::PopClipRect);
|
||||
}
|
||||
|
||||
TEST(NativeXCUIPanelCanvasHostTest, ClearingConfiguredSessionFallsBackToPassiveSnapshot) {
|
||||
|
||||
@@ -239,4 +239,33 @@ TEST(XCUIRHICommandCompilerTest, CompilePreservesMirroredImageUvForNegativeRectE
|
||||
EXPECT_EQ(compiled.stats.compiledCommandCount, 1u);
|
||||
}
|
||||
|
||||
TEST(XCUIRHICommandCompilerTest, CompileUsesExplicitImageUvRectWhenProvided) {
|
||||
XCUIRHICommandCompiler compiler = {};
|
||||
UIDrawData drawData = {};
|
||||
UIDrawList& drawList = drawData.EmplaceDrawList("ExplicitUvImage");
|
||||
drawList.AddImage(
|
||||
UIRect(8.0f, 6.0f, 16.0f, 12.0f),
|
||||
UITextureHandle{ 123u, 64u, 64u, UITextureHandleKind::ShaderResourceView },
|
||||
UIColor(0.9f, 0.8f, 0.7f, 1.0f),
|
||||
UIPoint(0.25f, 0.40f),
|
||||
UIPoint(0.75f, 0.90f));
|
||||
|
||||
XCUIRHICommandCompiler::CompileConfig config = {};
|
||||
config.surfaceClipRect = UIRect(0.0f, 0.0f, 64.0f, 64.0f);
|
||||
|
||||
XCUIRHICommandCompiler::CompiledDrawData compiled = {};
|
||||
compiler.Compile(drawData, config, compiled);
|
||||
|
||||
ASSERT_EQ(compiled.batches.size(), 1u);
|
||||
ASSERT_EQ(compiled.texturedVertices.size(), 6u);
|
||||
EXPECT_FLOAT_EQ(compiled.texturedVertices[0].uv[0], 0.25f);
|
||||
EXPECT_FLOAT_EQ(compiled.texturedVertices[0].uv[1], 0.40f);
|
||||
EXPECT_FLOAT_EQ(compiled.texturedVertices[1].uv[0], 0.75f);
|
||||
EXPECT_FLOAT_EQ(compiled.texturedVertices[1].uv[1], 0.40f);
|
||||
EXPECT_FLOAT_EQ(compiled.texturedVertices[2].uv[0], 0.75f);
|
||||
EXPECT_FLOAT_EQ(compiled.texturedVertices[2].uv[1], 0.90f);
|
||||
EXPECT_EQ(compiled.stats.imageCommandCount, 1u);
|
||||
EXPECT_EQ(compiled.stats.compiledCommandCount, 1u);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user