Skip to content

Commit a98a222

Browse files
committed
Enable convex hull points for stage
1 parent 34f668c commit a98a222

File tree

2 files changed

+45
-7
lines changed

2 files changed

+45
-7
lines changed

src/renderedtarget.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -463,9 +463,6 @@ void RenderedTarget::clearGraphicEffects()
463463

464464
void RenderedTarget::updateHullPoints(QOpenGLFramebufferObject *fbo)
465465
{
466-
if (m_stageModel)
467-
return; // hull points are useless for the stage
468-
469466
Q_ASSERT(fbo);
470467
int width = fbo->width();
471468
int height = fbo->height();

test/renderedtarget/renderedtarget_test.cpp

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -326,10 +326,6 @@ TEST_F(RenderedTargetTest, HullPoints)
326326
target.updateHullPoints(&fbo);
327327
ASSERT_EQ(target.hullPoints(), std::vector<QPointF>({ { 1, 1 }, { 2, 1 }, { 3, 1 }, { 1, 2 }, { 3, 2 }, { 1, 3 }, { 2, 3 }, { 3, 3 } }));
328328

329-
// Release
330-
fbo.release();
331-
context.doneCurrent();
332-
333329
// Test contains()
334330
ASSERT_FALSE(target.contains({ 0, 0 }));
335331
ASSERT_FALSE(target.contains({ 1, 0 }));
@@ -351,6 +347,51 @@ TEST_F(RenderedTargetTest, HullPoints)
351347
ASSERT_TRUE(target.contains({ 2, 3 }));
352348
ASSERT_TRUE(target.contains({ 3, 3 }));
353349
ASSERT_FALSE(target.contains({ 3.3, 3.5 }));
350+
351+
// Stage: hull points
352+
Stage stage;
353+
StageModel stageModel;
354+
stageModel.init(&stage);
355+
target.setSpriteModel(nullptr);
356+
target.setStageModel(&stageModel);
357+
358+
target.setWidth(3);
359+
target.setHeight(3);
360+
fbo.release();
361+
QOpenGLFramebufferObject emptyFbo(fbo.size(), format);
362+
emptyFbo.bind();
363+
target.updateHullPoints(&emptyFbo); // clear the convex hull points list
364+
ASSERT_TRUE(target.hullPoints().empty());
365+
emptyFbo.release();
366+
fbo.bind();
367+
target.updateHullPoints(&fbo);
368+
ASSERT_EQ(target.hullPoints(), std::vector<QPointF>({ { 1, 1 }, { 2, 1 }, { 3, 1 }, { 1, 2 }, { 3, 2 }, { 1, 3 }, { 2, 3 }, { 3, 3 } }));
369+
370+
// Stage: contains()
371+
ASSERT_TRUE(target.contains({ 0, 0 }));
372+
ASSERT_TRUE(target.contains({ 1, 0 }));
373+
ASSERT_TRUE(target.contains({ 2, 0 }));
374+
ASSERT_TRUE(target.contains({ 3, 0 }));
375+
376+
ASSERT_TRUE(target.contains({ 0, 1 }));
377+
ASSERT_TRUE(target.contains({ 1, 1 }));
378+
ASSERT_TRUE(target.contains({ 1.4, 1.25 }));
379+
ASSERT_TRUE(target.contains({ 2, 1 }));
380+
ASSERT_TRUE(target.contains({ 3, 1 }));
381+
382+
ASSERT_TRUE(target.contains({ 1, 2 }));
383+
ASSERT_TRUE(target.contains({ 2, 2 }));
384+
ASSERT_TRUE(target.contains({ 3, 2 }));
385+
ASSERT_TRUE(target.contains({ 3.5, 2.1 }));
386+
387+
ASSERT_TRUE(target.contains({ 1, 3 }));
388+
ASSERT_TRUE(target.contains({ 2, 3 }));
389+
ASSERT_TRUE(target.contains({ 3, 3 }));
390+
ASSERT_TRUE(target.contains({ 3.3, 3.5 }));
391+
392+
// Release
393+
fbo.release();
394+
context.doneCurrent();
354395
}
355396

356397
TEST_F(RenderedTargetTest, SpriteDragging)

0 commit comments

Comments
 (0)