Skip to content

Commit 3f6e062

Browse files
committed
Add stageScale property to RenderedTarget
1 parent 31e66d9 commit 3f6e062

File tree

5 files changed

+36
-0
lines changed

5 files changed

+36
-0
lines changed

ScratchCPPGui/irenderedtarget.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ class IRenderedTarget : public QNanoQuickItem
5151
virtual SceneMouseArea *mouseArea() const = 0;
5252
virtual void setMouseArea(SceneMouseArea *newMouseArea) = 0;
5353

54+
virtual double stageScale() const = 0;
55+
virtual void setStageScale(double scale) = 0;
56+
5457
virtual qreal width() const = 0;
5558
virtual void setWidth(qreal width) = 0;
5659

ScratchCPPGui/renderedtarget.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,21 @@ void RenderedTarget::setMouseArea(SceneMouseArea *newMouseArea)
213213
emit mouseAreaChanged();
214214
}
215215

216+
double RenderedTarget::stageScale() const
217+
{
218+
return m_stageScale;
219+
}
220+
221+
void RenderedTarget::setStageScale(double newStageScale)
222+
{
223+
if (qFuzzyCompare(m_stageScale, newStageScale))
224+
return;
225+
226+
m_stageScale = newStageScale;
227+
Q_ASSERT(m_stageScale > 0);
228+
emit stageScaleChanged();
229+
}
230+
216231
qreal RenderedTarget::width() const
217232
{
218233
return QNanoQuickItem::width();

ScratchCPPGui/renderedtarget.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class RenderedTarget : public IRenderedTarget
2525
Q_PROPERTY(SpriteModel *spriteModel READ spriteModel WRITE setSpriteModel NOTIFY spriteModelChanged)
2626
Q_PROPERTY(bool mirrorHorizontally READ mirrorHorizontally NOTIFY mirrorHorizontallyChanged)
2727
Q_PROPERTY(SceneMouseArea *mouseArea READ mouseArea WRITE setMouseArea NOTIFY mouseAreaChanged)
28+
Q_PROPERTY(double stageScale READ stageScale WRITE setStageScale NOTIFY stageScaleChanged)
2829

2930
public:
3031
RenderedTarget(QNanoQuickItem *parent = nullptr);
@@ -47,6 +48,9 @@ class RenderedTarget : public IRenderedTarget
4748
SceneMouseArea *mouseArea() const override;
4849
void setMouseArea(SceneMouseArea *newMouseArea) override;
4950

51+
double stageScale() const override;
52+
void setStageScale(double newStageScale) override;
53+
5054
qreal width() const override;
5155
void setWidth(qreal width) override;
5256

@@ -77,6 +81,7 @@ class RenderedTarget : public IRenderedTarget
7781
void spriteModelChanged();
7882
void mouseAreaChanged();
7983
void mirrorHorizontallyChanged();
84+
void stageScaleChanged();
8085

8186
protected:
8287
QNanoQuickItemPainter *createItemPainter() const override;
@@ -116,6 +121,7 @@ class RenderedTarget : public IRenderedTarget
116121
bool m_newMirrorHorizontally = false;
117122
double m_originX = 0;
118123
double m_originY = 0;
124+
double m_stageScale = 1;
119125
qreal m_maximumWidth = std::numeric_limits<double>::infinity();
120126
qreal m_maximumHeight = std::numeric_limits<double>::infinity();
121127
std::vector<QPointF> m_hullPoints;

test/mocks/renderedtargetmock.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ class RenderedTargetMock : public IRenderedTarget
3030
MOCK_METHOD(SceneMouseArea *, mouseArea, (), (const, override));
3131
MOCK_METHOD(void, setMouseArea, (SceneMouseArea *), (override));
3232

33+
MOCK_METHOD(double, stageScale, (), (const, override));
34+
MOCK_METHOD(void, setStageScale, (double), (override));
35+
3336
MOCK_METHOD(qreal, width, (), (const, override));
3437
MOCK_METHOD(void, setWidth, (qreal), (override));
3538

test/renderedtarget/renderedtarget_test.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,3 +603,12 @@ TEST_F(RenderedTargetTest, MouseArea)
603603
target.setMouseArea(&mouseArea);
604604
ASSERT_EQ(target.mouseArea(), &mouseArea);
605605
}
606+
607+
TEST_F(RenderedTargetTest, StageScale)
608+
{
609+
RenderedTarget target;
610+
ASSERT_EQ(target.stageScale(), 1);
611+
612+
target.setStageScale(6.4);
613+
ASSERT_EQ(target.stageScale(), 6.4);
614+
}

0 commit comments

Comments
 (0)