Skip to content
Prev Previous commit
Next Next commit
Add addPenLayer() method to PenLayer
  • Loading branch information
adazem009 committed Jan 22, 2024
commit 0484ed3a7e4da3d9c033288524033ed3c6917ef8
5 changes: 5 additions & 0 deletions src/penlayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,11 @@ IPenLayer *PenLayer::getProjectPenLayer(libscratchcpp::IEngine *engine)
return nullptr;
}

void PenLayer::addPenLayer(libscratchcpp::IEngine *engine, IPenLayer *penLayer)
{
m_projectPenLayers[engine] = penLayer;
}

QNanoQuickItemPainter *PenLayer::createItemPainter() const
{
return new PenLayerPainter;
Expand Down
1 change: 1 addition & 0 deletions src/penlayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class PenLayer : public IPenLayer
QOpenGLFramebufferObject *framebufferObject() const override;

static IPenLayer *getProjectPenLayer(libscratchcpp::IEngine *engine);
static void addPenLayer(libscratchcpp::IEngine *engine, IPenLayer *penLayer); // for tests

signals:
void engineChanged();
Expand Down
22 changes: 13 additions & 9 deletions test/penlayer/penlayer_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -99,27 +99,31 @@ TEST_F(PenLayerTest, FramebufferObject)
TEST_F(PenLayerTest, GetProjectPenLayer)
{
PenLayer penLayer;
ASSERT_EQ(penLayer.getProjectPenLayer(nullptr), nullptr);
ASSERT_EQ(PenLayer::getProjectPenLayer(nullptr), nullptr);

EngineMock engine1, engine2;
ASSERT_EQ(penLayer.getProjectPenLayer(&engine1), nullptr);
ASSERT_EQ(penLayer.getProjectPenLayer(&engine2), nullptr);
ASSERT_EQ(PenLayer::getProjectPenLayer(&engine1), nullptr);
ASSERT_EQ(PenLayer::getProjectPenLayer(&engine2), nullptr);

EXPECT_CALL(engine1, stageWidth()).WillOnce(Return(1));
EXPECT_CALL(engine1, stageHeight()).WillOnce(Return(1));
penLayer.setEngine(&engine1);
ASSERT_EQ(penLayer.getProjectPenLayer(&engine1), &penLayer);
ASSERT_EQ(penLayer.getProjectPenLayer(&engine2), nullptr);
ASSERT_EQ(PenLayer::getProjectPenLayer(&engine1), &penLayer);
ASSERT_EQ(PenLayer::getProjectPenLayer(&engine2), nullptr);

EXPECT_CALL(engine2, stageWidth()).WillOnce(Return(1));
EXPECT_CALL(engine2, stageHeight()).WillOnce(Return(1));
penLayer.setEngine(&engine2);
ASSERT_EQ(penLayer.getProjectPenLayer(&engine1), nullptr);
ASSERT_EQ(penLayer.getProjectPenLayer(&engine2), &penLayer);
ASSERT_EQ(PenLayer::getProjectPenLayer(&engine1), nullptr);
ASSERT_EQ(PenLayer::getProjectPenLayer(&engine2), &penLayer);

penLayer.setEngine(nullptr);
ASSERT_EQ(penLayer.getProjectPenLayer(&engine1), nullptr);
ASSERT_EQ(penLayer.getProjectPenLayer(&engine2), nullptr);
ASSERT_EQ(PenLayer::getProjectPenLayer(&engine1), nullptr);
ASSERT_EQ(PenLayer::getProjectPenLayer(&engine2), nullptr);

PenLayer::addPenLayer(&engine1, &penLayer);
ASSERT_EQ(PenLayer::getProjectPenLayer(&engine1), &penLayer);
ASSERT_EQ(PenLayer::getProjectPenLayer(&engine2), nullptr);
}

TEST_F(PenLayerTest, Clear)
Expand Down