From 0ed4900fd78679c938b9bcf39eeeaf4273103c30 Mon Sep 17 00:00:00 2001 From: adazem009 <68537469+adazem009@users.noreply.github.com> Date: Sun, 18 Feb 2024 11:52:11 +0100 Subject: [PATCH 1/2] RenderedTarget: Optimize calculateSize() --- src/renderedtarget.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/renderedtarget.cpp b/src/renderedtarget.cpp index 9ddb101..dcb6805 100644 --- a/src/renderedtarget.cpp +++ b/src/renderedtarget.cpp @@ -602,11 +602,10 @@ void RenderedTarget::calculateRotation() void RenderedTarget::calculateSize() { if (m_skin && m_costume) { - Texture texture = m_skin->getTexture(m_size * m_stageScale); - m_texture = texture; - m_width = texture.width(); - m_height = texture.height(); - setScale(m_size * m_stageScale / m_skin->getTextureScale(texture) / m_costume->bitmapResolution()); + m_texture = m_skin->getTexture(m_size * m_stageScale); + m_width = m_texture.width(); + m_height = m_texture.height(); + setScale(m_size * m_stageScale / m_skin->getTextureScale(m_texture) / m_costume->bitmapResolution()); } } From 86a2cf118117db4727d1b603504d981238ceab79 Mon Sep 17 00:00:00 2001 From: adazem009 <68537469+adazem009@users.noreply.github.com> Date: Sun, 18 Feb 2024 11:52:59 +0100 Subject: [PATCH 2/2] fix #95: Update target dimensions after changing stage scale --- src/renderedtarget.cpp | 1 + test/renderedtarget/renderedtarget_test.cpp | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/src/renderedtarget.cpp b/src/renderedtarget.cpp index dcb6805..2cf7854 100644 --- a/src/renderedtarget.cpp +++ b/src/renderedtarget.cpp @@ -307,6 +307,7 @@ void RenderedTarget::setStageScale(double newStageScale) m_stageScale = newStageScale; calculateSize(); calculatePos(); + beforeRedraw(); emit stageScaleChanged(); } diff --git a/test/renderedtarget/renderedtarget_test.cpp b/test/renderedtarget/renderedtarget_test.cpp index ba79e3b..0ff9acc 100644 --- a/test/renderedtarget/renderedtarget_test.cpp +++ b/test/renderedtarget/renderedtarget_test.cpp @@ -270,6 +270,13 @@ TEST_F(RenderedTargetTest, UpdateMethods) ASSERT_EQ(texture.width(), 26); ASSERT_EQ(texture.height(), 26); + // Stage scale (SVG) - should update width and height + EXPECT_CALL(engine, stageWidth()).WillOnce(Return(480)); + EXPECT_CALL(engine, stageHeight()).WillOnce(Return(360)); + target.setStageScale(3.5); + ASSERT_EQ(target.width(), 52); + ASSERT_EQ(target.height(), 52); + context.doneCurrent(); }