Skip to content

Commit 5655f81

Browse files
committed
Use bitmap resolution to calculate coordinates
1 parent 8bad035 commit 5655f81

File tree

2 files changed

+15
-14
lines changed

2 files changed

+15
-14
lines changed

ScratchCPPGui/renderedtarget.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,21 +53,21 @@ void RenderedTarget::loadProperties()
5353

5454
// Coordinates
5555
double size = sprite->size() / 100;
56-
m_x = static_cast<double>(m_engine->stageWidth()) / 2 + sprite->x() - m_costume->rotationCenterX() * size / 2 * (m_newMirrorHorizontally ? -1 : 1);
57-
m_y = static_cast<double>(m_engine->stageHeight()) / 2 - sprite->y() - m_costume->rotationCenterY() * size / 2;
58-
m_originX = m_costume->rotationCenterX() * size / 2.0;
59-
m_originY = m_costume->rotationCenterY() * size / 2.0;
56+
m_x = static_cast<double>(m_engine->stageWidth()) / 2 + sprite->x() - m_costume->rotationCenterX() * size / m_costume->bitmapResolution() * (m_newMirrorHorizontally ? -1 : 1);
57+
m_y = static_cast<double>(m_engine->stageHeight()) / 2 - sprite->y() - m_costume->rotationCenterY() * size / m_costume->bitmapResolution();
58+
m_originX = m_costume->rotationCenterX() * size / m_costume->bitmapResolution();
59+
m_originY = m_costume->rotationCenterY() * size / m_costume->bitmapResolution();
6060

6161
// Layer
6262
m_z = sprite->layerOrder();
6363
}
6464

6565
mutex.unlock();
6666
} else if (m_stageModel) {
67-
m_x = static_cast<double>(m_engine->stageWidth()) / 2 - m_costume->rotationCenterX() / 2.0;
68-
m_y = static_cast<double>(m_engine->stageHeight()) / 2 - m_costume->rotationCenterY() / 2.0;
69-
m_originX = m_costume->rotationCenterX() / 2.0;
70-
m_originY = m_costume->rotationCenterY() / 2.0;
67+
m_x = static_cast<double>(m_engine->stageWidth()) / 2 - m_costume->rotationCenterX() / m_costume->bitmapResolution();
68+
m_y = static_cast<double>(m_engine->stageHeight()) / 2 - m_costume->rotationCenterY() / m_costume->bitmapResolution();
69+
m_originX = m_costume->rotationCenterX() / m_costume->bitmapResolution();
70+
m_originY = m_costume->rotationCenterY() / m_costume->bitmapResolution();
7171
}
7272
}
7373

test/renderedtarget/renderedtarget_test.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@ TEST(RenderedTargetTest, LoadAndUpdateProperties)
6363
target.updateProperties();
6464
ASSERT_EQ(target.width(), 4);
6565
ASSERT_EQ(target.height(), 6);
66-
ASSERT_EQ(target.x(), 283.5);
67-
ASSERT_EQ(target.y(), 88.5);
66+
ASSERT_EQ(target.x(), 295);
67+
ASSERT_EQ(target.y(), 52.5);
6868
ASSERT_EQ(target.z(), 0);
6969
ASSERT_EQ(target.rotation(), 0);
70-
ASSERT_EQ(target.transformOriginPoint(), QPointF(-11.5, 36));
70+
ASSERT_EQ(target.transformOriginPoint(), QPointF(-23, 72));
7171

7272
target.setStageModel(nullptr);
7373
ASSERT_TRUE(mirrorHorizontallySpy.empty());
@@ -107,11 +107,12 @@ TEST(RenderedTargetTest, LoadAndUpdateProperties)
107107
target.updateProperties();
108108
ASSERT_EQ(target.width(), 14.3);
109109
ASSERT_EQ(target.height(), 5.8);
110-
ASSERT_EQ(std::round(target.x() * 100) / 100, 220.62);
111-
ASSERT_EQ(std::round(target.y() * 100) / 100, -49.09);
110+
ASSERT_EQ(std::round(target.x() * 100) / 100, 237.18);
111+
ASSERT_EQ(std::round(target.y() * 100) / 100, -100.93);
112112
ASSERT_EQ(target.z(), 3);
113113
ASSERT_EQ(target.rotation(), -157.16);
114-
ASSERT_EQ(target.transformOriginPoint(), QPointF(-16.5577, 51.8328));
114+
ASSERT_EQ(target.transformOriginPoint().x(), -33.1154);
115+
ASSERT_EQ(std::round(target.transformOriginPoint().y() * 100) / 100, 103.67);
115116
ASSERT_TRUE(mirrorHorizontallySpy.empty());
116117

117118
EXPECT_CALL(engine, stageWidth()).WillOnce(Return(544));

0 commit comments

Comments
 (0)