Skip to content

Commit 1feba43

Browse files
committed
Add properties for stage width and height
1 parent 423eb1d commit 1feba43

File tree

3 files changed

+53
-6
lines changed

3 files changed

+53
-6
lines changed

ScratchCPPGui/ProjectPlayer.qml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,17 @@ import ScratchCPPGui
55

66
ProjectScene {
77
property string fileName
8-
property int stageWidth: 480
9-
property int stageHeight: 360
108
property alias fps: loader.fps
119
property alias turboMode: loader.turboMode
1210

1311
id: root
14-
width: stageWidth
15-
height: stageHeight
16-
clip: true
12+
clip: true
1713

1814
ProjectLoader {
1915
id: loader
2016
fileName: root.fileName
17+
stageWidth: parent.width
18+
stageHeight: parent.height
2119
}
2220

2321
RenderedTarget {

ScratchCPPGui/projectloader.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ void ProjectLoader::setFileName(const QString &newFileName)
7575

7676
m_engine->setFps(m_fps);
7777
m_engine->setTurboModeEnabled(m_turboMode);
78+
m_engine->setStageWidth(m_stageWidth);
79+
m_engine->setStageHeight(m_stageHeight);
7880

7981
auto handler = std::bind(&ProjectLoader::emitTick, this);
8082
m_engine->setRedrawHandler(std::function<void()>(handler));
@@ -208,3 +210,39 @@ void ProjectLoader::setTurboMode(bool newTurboMode)
208210

209211
emit turboModeChanged();
210212
}
213+
214+
unsigned int ProjectLoader::stageWidth() const
215+
{
216+
return m_stageWidth;
217+
}
218+
219+
void ProjectLoader::setStageWidth(unsigned int newStageWidth)
220+
{
221+
if (m_stageWidth == newStageWidth)
222+
return;
223+
224+
m_stageWidth = newStageWidth;
225+
226+
if (m_engine)
227+
m_engine->setStageWidth(m_stageWidth);
228+
229+
emit stageWidthChanged();
230+
}
231+
232+
unsigned int ProjectLoader::stageHeight() const
233+
{
234+
return m_stageHeight;
235+
}
236+
237+
void ProjectLoader::setStageHeight(unsigned int newStageHeight)
238+
{
239+
if (m_stageHeight == newStageHeight)
240+
return;
241+
242+
m_stageHeight = newStageHeight;
243+
244+
if (m_engine)
245+
m_engine->setStageHeight(m_stageHeight);
246+
247+
emit stageHeightChanged();
248+
}

ScratchCPPGui/projectloader.h

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ class ProjectLoader : public QObject
2525
Q_PROPERTY(QQmlListProperty<SpriteModel> sprites READ sprites NOTIFY spritesChanged)
2626
Q_PROPERTY(double fps READ fps WRITE setFps NOTIFY fpsChanged)
2727
Q_PROPERTY(bool turboMode READ turboMode WRITE setTurboMode NOTIFY turboModeChanged)
28+
Q_PROPERTY(unsigned int stageWidth READ stageWidth WRITE setStageWidth NOTIFY stageWidthChanged)
29+
Q_PROPERTY(unsigned int stageHeight READ stageHeight WRITE setStageHeight NOTIFY stageHeightChanged)
2830

2931
public:
3032
explicit ProjectLoader(QObject *parent = nullptr);
@@ -53,15 +55,22 @@ class ProjectLoader : public QObject
5355
bool turboMode() const;
5456
void setTurboMode(bool newTurboMode);
5557

58+
unsigned int stageWidth() const;
59+
void setStageWidth(unsigned int newStageWidth);
60+
61+
unsigned int stageHeight() const;
62+
void setStageHeight(unsigned int newStageHeight);
63+
5664
signals:
5765
void fileNameChanged();
5866
void loadedChanged();
5967
void engineChanged();
6068
void stageChanged();
6169
void spritesChanged();
6270
void fpsChanged();
63-
6471
void turboModeChanged();
72+
void stageWidthChanged();
73+
void stageHeightChanged();
6574

6675
protected:
6776
void timerEvent(QTimerEvent *event) override;
@@ -80,6 +89,8 @@ class ProjectLoader : public QObject
8089
QFuture<void> m_eventLoop;
8190
double m_fps = 30;
8291
bool m_turboMode = false;
92+
unsigned int m_stageWidth;
93+
unsigned int m_stageHeight;
8394
};
8495

8596
} // namespace scratchcppgui

0 commit comments

Comments
 (0)