X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-HoverProcessing.cpp;h=93630eddcd8af8f21c1efe696e61760425afa697;hb=81bb4cb83cede27341dc55ffdd85ee6ce50b5340;hp=4462bd864762d0d2499a7973e0095b59366fa9a8;hpb=b2b474f488d2bcb9f688a5106f578d141bbb8ddd;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-HoverProcessing.cpp b/automated-tests/src/dali/utc-Dali-HoverProcessing.cpp index 4462bd8..93630ed 100644 --- a/automated-tests/src/dali/utc-Dali-HoverProcessing.cpp +++ b/automated-tests/src/dali/utc-Dali-HoverProcessing.cpp @@ -117,10 +117,13 @@ struct RemoveActorFunctor : public HoverEventFunctor } }; -Integration::HoverEvent GenerateSingleHover( TouchPoint::State state, Vector2 screenPosition ) +Integration::HoverEvent GenerateSingleHover( TouchPoint::State state, const Vector2& screenPosition ) { Integration::HoverEvent hoverEvent; - hoverEvent.points.push_back( TouchPoint ( 0, state, screenPosition.x, screenPosition.y ) ); + Integration::Point point; + point.SetState( static_cast< PointState::Type >( state ) ); + point.SetScreenPosition( screenPosition ); + hoverEvent.points.push_back( point ); return hoverEvent; } @@ -157,6 +160,12 @@ int UtcDaliHoverNormalProcessing(void) DALI_TEST_EQUALS( TouchPoint::Started, data.hoverEvent.points[0].state, TEST_LOCATION ); DALI_TEST_EQUALS( screenCoordinates, data.hoverEvent.points[0].screen, TEST_LOCATION ); DALI_TEST_EQUALS( localCoordinates, data.hoverEvent.points[0].local, 0.1f, TEST_LOCATION ); + + TouchPoint point = data.hoverEvent.GetPoint(0); + DALI_TEST_EQUALS( TouchPoint::Started, point.state, TEST_LOCATION ); + DALI_TEST_EQUALS( screenCoordinates, point.screen, TEST_LOCATION ); + DALI_TEST_EQUALS( localCoordinates, point.local, 0.1f, TEST_LOCATION ); + data.Reset(); // Emit a motion signal @@ -953,12 +962,12 @@ int UtcDaliHoverOffscreenRenderTasks(void) // FrameBufferImage for offscreen RenderTask FrameBufferImage frameBufferImage( FrameBufferImage::New( stageSize.width, stageSize.height, Pixel::RGBA8888 ) ); - // Create an image actor to display the FrameBufferImage - ImageActor imageActor ( ImageActor::New( frameBufferImage ) ); - imageActor.SetParentOrigin(ParentOrigin::CENTER); - imageActor.SetSize( stageSize.x, stageSize.y ); - imageActor.ScaleBy( Vector3(1.0f, -1.0f, 1.0f) ); // FIXME - stage.Add( imageActor ); + // Create a renderable actor to display the FrameBufferImage + Actor renderableActor = CreateRenderableActor( frameBufferImage ); + renderableActor.SetParentOrigin(ParentOrigin::CENTER); + renderableActor.SetSize( stageSize.x, stageSize.y ); + renderableActor.ScaleBy( Vector3(1.0f, -1.0f, 1.0f) ); // FIXME + stage.Add( renderableActor ); Actor actor = Actor::New(); actor.SetSize(100.0f, 100.0f); @@ -1000,14 +1009,12 @@ int UtcDaliHoverMultipleRenderableActors(void) Stage stage ( Stage::GetCurrent() ); Vector2 stageSize ( stage.GetSize() ); - Actor parent = ImageActor::New(); - parent.SetRelayoutEnabled( false ); + Actor parent = CreateRenderableActor(); parent.SetSize( 100.0f, 100.0f ); parent.SetAnchorPoint(AnchorPoint::TOP_LEFT); stage.Add(parent); - Actor actor = ImageActor::New(); - actor.SetRelayoutEnabled( false ); + Actor actor = CreateRenderableActor(); actor.SetSize( 100.0f, 100.0f ); actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); parent.Add(actor); @@ -1241,212 +1248,52 @@ int UtcDaliHoverLeaveActorReadded(void) END_TEST; } -int UtcDaliHoverStencil(void) +int UtcDaliHoverClippingActor(void) { TestApplication application; Stage stage = Stage::GetCurrent(); - TextActor actor = TextActor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - stage.Add(actor); - - Actor stencil = Actor::New(); - stencil.SetSize(50.0f, 50.0f); - stencil.SetAnchorPoint(AnchorPoint::TOP_LEFT); - stencil.SetDrawMode( DrawMode::STENCIL ); - stage.Add(stencil); - - // Render and notify - application.SendNotification(); - application.Render(); - - // Connect to actor's hovered signal - SignalData data; - HoverEventFunctor functor( data ); - actor.HoveredSignal().Connect( &application, functor ); - - // Emit an event within stencil area - application.ProcessEvent( GenerateSingleHover( TouchPoint::Started, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - data.Reset(); - - // Emit an event outside the stencil area but within the actor area - application.ProcessEvent( GenerateSingleHover( TouchPoint::Started, Vector2( 60.0f, 60.0f ) ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); - data.Reset(); - - END_TEST; -} - -int UtcDaliHoverStencilInActorHierarchy(void) -{ - TestApplication application; - Stage stage = Stage::GetCurrent(); - - TextActor parent = TextActor::New(); - parent.SetSize(100.0f, 100.0f); - parent.SetAnchorPoint(AnchorPoint::TOP_LEFT); - stage.Add(parent); - - TextActor child = TextActor::New(); - child.SetSize(25.0f, 25.0f); - child.SetAnchorPoint(AnchorPoint::TOP_LEFT); - parent.Add(child); - - Actor stencil = Actor::New(); - stencil.SetSize(50.0f, 50.0f); - stencil.SetAnchorPoint(AnchorPoint::TOP_LEFT); - stencil.SetDrawMode( DrawMode::STENCIL ); - stage.Add(stencil); - - // Render and notify - application.SendNotification(); - application.Render(); - - // Connect to hover signals - SignalData parentData; - parent.HoveredSignal().Connect( &application, HoverEventFunctor(parentData) ); - SignalData childData; - child.HoveredSignal().Connect( &application, HoverEventFunctor(childData) ); - - // Emit an event within stencil area - application.ProcessEvent( GenerateSingleHover( TouchPoint::Started, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( false, parentData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, childData.functorCalled, TEST_LOCATION ); - parentData.Reset(); - childData.Reset(); - - // Emit an event outside child area and within stencil area - application.ProcessEvent( GenerateSingleHover( TouchPoint::Motion, Vector2( 40.0f, 40.0f ) ) ); - DALI_TEST_EQUALS( true, parentData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( false, childData.functorCalled, TEST_LOCATION ); - parentData.Reset(); - childData.Reset(); - - // Emit an event outside stencil are but within parent area - application.ProcessEvent( GenerateSingleHover( TouchPoint::Motion, Vector2( 60.0f, 60.0f ) ) ); - DALI_TEST_EQUALS( false, parentData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( false, childData.functorCalled, TEST_LOCATION ); - parentData.Reset(); - childData.Reset(); - - // Readd actor (so that stencil is the first child) - stage.Remove(parent); - application.SendNotification(); - application.Render(); - stage.Add(parent); - application.SendNotification(); - application.Render(); - - // Redo hit in same area... - - // Emit an event within stencil area - application.ProcessEvent( GenerateSingleHover( TouchPoint::Motion, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( false, parentData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, childData.functorCalled, TEST_LOCATION ); - parentData.Reset(); - childData.Reset(); - - // Emit an event outside child area and within stencil area - application.ProcessEvent( GenerateSingleHover( TouchPoint::Motion, Vector2( 40.0f, 40.0f ) ) ); - DALI_TEST_EQUALS( true, parentData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( false, childData.functorCalled, TEST_LOCATION ); - parentData.Reset(); - childData.Reset(); - - // Emit an event outside stencil are but within parent area - application.ProcessEvent( GenerateSingleHover( TouchPoint::Motion, Vector2( 60.0f, 60.0f ) ) ); - DALI_TEST_EQUALS( false, parentData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( false, childData.functorCalled, TEST_LOCATION ); - parentData.Reset(); - childData.Reset(); - - END_TEST; -} - -int UtcDaliHoverMultipleStencils(void) -{ - TestApplication application; - Stage stage = Stage::GetCurrent(); - - TextActor actor = TextActor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - stage.Add(actor); + Actor actor = Actor::New(); + actor.SetSize( 100.0f, 100.0f ); + actor.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + stage.Add( actor ); - Actor stencil = Actor::New(); - stencil.SetSize(50.0f, 50.0f); - stencil.SetAnchorPoint(AnchorPoint::TOP_LEFT); - stencil.SetDrawMode( DrawMode::STENCIL ); - stage.Add(stencil); + Actor clippingActor = Actor::New(); + clippingActor.SetSize( 50.0f, 50.0f ); + clippingActor.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + clippingActor.SetProperty( Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN ); + stage.Add( clippingActor ); - Actor stencil2 = Actor::New(); - stencil2.SetSize(50.0f, 50.0f); - stencil2.SetAnchorPoint(AnchorPoint::TOP_LEFT); - stencil2.SetDrawMode( DrawMode::STENCIL ); - stencil2.SetPosition(50.0f, 50.0f); - stage.Add(stencil2); + // Add a child to the clipped region. + Actor clippingChild = Actor::New(); + clippingChild.SetSize( 50.0f, 50.0f ); + clippingChild.SetPosition( 25.0f, 25.0f ); + clippingChild.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + clippingActor.Add( clippingChild ); - // Render and notify + // Render and notify. application.SendNotification(); application.Render(); - // Connect to actor's hovered signal + // Connect to actor's hovered signal. SignalData data; HoverEventFunctor functor( data ); actor.HoveredSignal().Connect( &application, functor ); - // Emit an event within stencil area + // Emit an event within clipped area - no hit. application.ProcessEvent( GenerateSingleHover( TouchPoint::Started, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); data.Reset(); - // Emit an event inside the second stencil area + // Emit an event outside the clipped area but within the actor area, we should have a hit. application.ProcessEvent( GenerateSingleHover( TouchPoint::Started, Vector2( 60.0f, 60.0f ) ) ); DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); data.Reset(); - // Emit an event outside both stencil areas but within the actor area - application.ProcessEvent( GenerateSingleHover( TouchPoint::Started, Vector2( 10.0f, 60.0f ) ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); - data.Reset(); - - END_TEST; -} - -int UtcDaliHoverStencilNonRenderableActor(void) -{ - TestApplication application; - Stage stage = Stage::GetCurrent(); - - Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - stage.Add(actor); - - Actor stencil = Actor::New(); - stencil.SetSize(50.0f, 50.0f); - stencil.SetAnchorPoint(AnchorPoint::TOP_LEFT); - stencil.SetDrawMode( DrawMode::STENCIL ); - stage.Add(stencil); - - // Render and notify - application.SendNotification(); - application.Render(); - - // Connect to actor's hovered signal - SignalData data; - HoverEventFunctor functor( data ); - actor.HoveredSignal().Connect( &application, functor ); - - // Emit an event within stencil area - application.ProcessEvent( GenerateSingleHover( TouchPoint::Started, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - data.Reset(); + clippingChild.HoveredSignal().Connect( &application, functor ); - // Emit an event outside the stencil area but within the actor area, we should have a hit! - application.ProcessEvent( GenerateSingleHover( TouchPoint::Started, Vector2( 60.0f, 60.0f ) ) ); + // Emit an event inside part of the child which is within the clipped area, we should have a hit. + application.ProcessEvent( GenerateSingleHover( TouchPoint::Started, Vector2( 30.0f, 30.0f ) ) ); DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); data.Reset();