Skip to content

Commit 31e66d9

Browse files
committed
Add stageScale property to ProjectScene
1 parent c602272 commit 31e66d9

File tree

3 files changed

+35
-5
lines changed

3 files changed

+35
-5
lines changed

ScratchCPPGui/projectscene.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,21 @@ void ProjectScene::setEngine(IEngine *newEngine)
3737
emit engineChanged();
3838
}
3939

40+
double ProjectScene::stageScale() const
41+
{
42+
return m_stageScale;
43+
}
44+
45+
void ProjectScene::setStageScale(double newStageScale)
46+
{
47+
if (qFuzzyCompare(m_stageScale, newStageScale))
48+
return;
49+
50+
m_stageScale = newStageScale;
51+
Q_ASSERT(m_stageScale > 0);
52+
emit stageScaleChanged();
53+
}
54+
4055
void ProjectScene::handleMouseMove(qreal x, qreal y)
4156
{
4257
if (m_engine) {

ScratchCPPGui/projectscene.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,17 @@ class ProjectScene : public QQuickItem
1919
Q_OBJECT
2020
QML_ELEMENT
2121
Q_PROPERTY(libscratchcpp::IEngine *engine READ engine WRITE setEngine NOTIFY engineChanged)
22+
Q_PROPERTY(double stageScale READ stageScale WRITE setStageScale NOTIFY stageScaleChanged)
2223

2324
public:
2425
ProjectScene(QQuickItem *parent = nullptr);
2526

2627
libscratchcpp::IEngine *engine() const;
2728
void setEngine(libscratchcpp::IEngine *newEngine);
2829

30+
double stageScale() const;
31+
void setStageScale(double newStageScale);
32+
2933
Q_INVOKABLE void handleMouseMove(qreal x, qreal y);
3034
Q_INVOKABLE void handleMousePress();
3135
Q_INVOKABLE void handleMouseRelease();
@@ -35,11 +39,13 @@ class ProjectScene : public QQuickItem
3539

3640
signals:
3741
void engineChanged();
42+
void stageScaleChanged();
3843

3944
private:
4045
void installKeyHandler(QQuickWindow *window);
4146

4247
libscratchcpp::IEngine *m_engine = nullptr;
48+
double m_stageScale = 1;
4349
KeyEventHandler *m_keyHandler = nullptr;
4450
};
4551

test/projectscene/projectscene_test.cpp

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ using namespace scratchcppgui;
88

99
using ::testing::Return;
1010

11-
TEST(ProjectScene, Engine)
11+
TEST(ProjectSceneTest, Engine)
1212
{
1313
ProjectScene scene;
1414
ASSERT_EQ(scene.engine(), nullptr);
@@ -18,7 +18,16 @@ TEST(ProjectScene, Engine)
1818
ASSERT_EQ(scene.engine(), &engine);
1919
}
2020

21-
TEST(ProjectScene, HandleMouseMove)
21+
TEST(ProjectSceneTest, StageScale)
22+
{
23+
ProjectScene scene;
24+
ASSERT_EQ(scene.stageScale(), 1);
25+
26+
scene.setStageScale(5.79);
27+
ASSERT_EQ(scene.stageScale(), 5.79);
28+
}
29+
30+
TEST(ProjectSceneTest, HandleMouseMove)
2231
{
2332
ProjectScene scene;
2433
EngineMock engine;
@@ -31,7 +40,7 @@ TEST(ProjectScene, HandleMouseMove)
3140
scene.handleMouseMove(46.9, -16.7);
3241
}
3342

34-
TEST(ProjectScene, HandleMousePress)
43+
TEST(ProjectSceneTest, HandleMousePress)
3544
{
3645
ProjectScene scene;
3746
EngineMock engine;
@@ -44,7 +53,7 @@ TEST(ProjectScene, HandleMousePress)
4453
scene.handleMousePress();
4554
}
4655

47-
TEST(ProjectScene, HandleMouseRelease)
56+
TEST(ProjectSceneTest, HandleMouseRelease)
4857
{
4958
ProjectScene scene;
5059
EngineMock engine;
@@ -57,7 +66,7 @@ TEST(ProjectScene, HandleMouseRelease)
5766
scene.handleMouseRelease();
5867
}
5968

60-
TEST(ProjectScene, HandleKeyPressAndRelease)
69+
TEST(ProjectSceneTest, HandleKeyPressAndRelease)
6170
{
6271
static const std::unordered_map<Qt::Key, KeyEvent::Type> SPECIAL_KEY_MAP = {
6372
{ Qt::Key_Space, KeyEvent::Type::Space }, { Qt::Key_Left, KeyEvent::Type::Left }, { Qt::Key_Up, KeyEvent::Type::Up }, { Qt::Key_Right, KeyEvent::Type::Right },

0 commit comments

Comments
 (0)