-int UtcDaliHitTestAlgorithmWithFunctorOnRenderTask(void)
-{
- TestApplication application;
- tet_infoline("Testing Dali::HitTestAlgorithm functor, specific to a given render task");
-
- Stage stage = Stage::GetCurrent();
- Size stageSize = stage.GetSize();
- RenderTaskList taskList = stage.GetRenderTaskList();
-
- Actor actor[2];
-
- for( int i=0; i<2; i++ )
- {
- actor[i] = Actor::New();
- actor[i].SetSize(100.f, 100.f);
- actor[i].SetParentOrigin(ParentOrigin::TOP_LEFT);
- actor[i].SetAnchorPoint(AnchorPoint::TOP_LEFT);
- actor[i].SetName("HittableActor");
- stage.Add(actor[i]);
- }
- Vector2 position( 50.f, 40.f );
- actor[1].SetPosition( position.x, position.y );
-
- RenderTask renderTask[2];
- renderTask[0] = taskList.GetTask( 0u );
-
- FrameBufferImage frameBufferImage = FrameBufferImage::New(stageSize.width, stageSize.height, Pixel::A8);
- renderTask[1] = taskList.CreateTask();
- renderTask[1].SetSourceActor( actor[1] );
- renderTask[1].SetExclusive( true );
- renderTask[1].SetInputEnabled( true );
- renderTask[1].SetTargetFrameBuffer( frameBufferImage );
- renderTask[1].SetRefreshRate( RenderTask::REFRESH_ONCE );
- renderTask[1].SetScreenToFrameBufferFunction( RenderTask::FULLSCREEN_FRAMEBUFFER_FUNCTION );
- application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
-
- // Render and notify
- application.SendNotification();
- application.Render();
- application.Render();
- application.SendNotification();
-
- // Perform a hit-test at the given screen coordinates with different render tasks
-
- Dali::HitTestAlgorithm::Results results;
- Vector2 screenCoordinates( 25.f, 25.f );
-
- Dali::HitTestAlgorithm::HitTest( renderTask[0], screenCoordinates, results, IsActorHittableFunction );
- DALI_TEST_CHECK( results.actor == actor[0] );
- DALI_TEST_EQUALS( screenCoordinates, results.actorCoordinates, 0.1f, TEST_LOCATION );
-
- results.actor = Actor();
- results.actorCoordinates = Vector2::ZERO;
- Dali::HitTestAlgorithm::HitTest( renderTask[1], screenCoordinates, results, IsActorHittableFunction );
- DALI_TEST_CHECK( !results.actor );
- DALI_TEST_EQUALS( Vector2::ZERO, results.actorCoordinates, 0.1f, TEST_LOCATION );
-
- screenCoordinates.x = 80.f;
- screenCoordinates.y = 70.f;
-
- results.actor = Actor();
- results.actorCoordinates = Vector2::ZERO;
- Dali::HitTestAlgorithm::HitTest( renderTask[0], screenCoordinates, results, IsActorHittableFunction );
- DALI_TEST_CHECK( results.actor == actor[0] );
- DALI_TEST_EQUALS( screenCoordinates, results.actorCoordinates, 0.1f, TEST_LOCATION );
-
- results.actor = Actor();
- results.actorCoordinates = Vector2::ZERO;
- Dali::HitTestAlgorithm::HitTest( renderTask[1], screenCoordinates, results, IsActorHittableFunction );
- DALI_TEST_CHECK( results.actor == actor[1]);
- DALI_TEST_EQUALS( screenCoordinates - position, results.actorCoordinates, 0.1f, TEST_LOCATION );
-
- screenCoordinates.x = 120.f;
- screenCoordinates.y = 130.f;
-
- results.actor = Actor();
- results.actorCoordinates = Vector2::ZERO;
- Dali::HitTestAlgorithm::HitTest( renderTask[0], screenCoordinates, results, IsActorHittableFunction );
- DALI_TEST_CHECK( !results.actor );
- DALI_TEST_EQUALS( Vector2::ZERO, results.actorCoordinates, 0.1f, TEST_LOCATION );
-
- results.actor = Actor();
- results.actorCoordinates = Vector2::ZERO;
- Dali::HitTestAlgorithm::HitTest( renderTask[1], screenCoordinates, results, IsActorHittableFunction );
- DALI_TEST_CHECK( results.actor == actor[1]);
- DALI_TEST_EQUALS( screenCoordinates - position, results.actorCoordinates, 0.1f, TEST_LOCATION );
- END_TEST;
-}
-
-