X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fgestures%2Fgesture-example.cpp;h=d04c63eccc9a0785f7ff730311f9c8db2e90e1ac;hb=2b7d60cb939a675c3a14b6dce8425fd4403dcf8c;hp=a28ab95500304068f26990be4cb5338924fad336;hpb=dfae08c311da83f100b4eba9ea01470d00b4ec04;p=platform%2Fcore%2Fuifw%2Fdali-demo.git diff --git a/examples/gestures/gesture-example.cpp b/examples/gestures/gesture-example.cpp index a28ab95..d04c63e 100644 --- a/examples/gestures/gesture-example.cpp +++ b/examples/gestures/gesture-example.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,11 +18,10 @@ // EXTERNAL INCLUDES #include #include -#include -#include using namespace Dali; using namespace Dali::Toolkit; +using namespace std; namespace { @@ -79,15 +78,15 @@ const float ROTATE_BACK_ANIMATION_DURATION( 0.25f ); * @param[in] startTime When to start the animators * @param[in] endTime When to end the animators */ -void AddHelpInfo( const std::string&& string, Actor parent, Animation animation, float startTime, float endTime ) +void AddHelpInfo( const std::string&& string, const Vector2& windowSize, Actor parent, Animation animation, float startTime, float endTime ) { Actor text = TextLabel::New( std::move( string ) ); - Vector3 position( Stage::GetCurrent().GetSize() * HELP_TEXT_POSITION_MULTIPLIER ); + Vector3 position( windowSize * HELP_TEXT_POSITION_MULTIPLIER ); - text.SetAnchorPoint( AnchorPoint::TOP_CENTER ); - text.SetParentOrigin( ParentOrigin::TOP_CENTER ); - text.SetPosition( position ); - text.SetOpacity( 0.0f ); + text.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER ); + text.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER ); + text.SetProperty( Actor::Property::POSITION, position ); + text.SetProperty( Actor::Property::OPACITY, 0.0f ); text.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, Text::HorizontalAlignment::CENTER ); text.SetProperty( TextLabel::Property::MULTI_LINE, true ); parent.Add( text ); @@ -139,27 +138,28 @@ private: */ void Create( Application& application ) { - // Get a handle to the stage & connect to the key event signal - Stage stage = Stage::GetCurrent(); - stage.KeyEventSignal().Connect(this, &GestureExample::OnKeyEvent); + // Get a handle to the window & connect to the key event signal + auto window = application.GetWindow(); + Vector2 windowSize = window.GetSize(); + window.KeyEventSignal().Connect(this, &GestureExample::OnKeyEvent); // Create a background with a linear gradient which matches parent size & is placed in the center. Actor background = Control::New(); background.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); - background.SetParentOrigin( ParentOrigin::CENTER ); + background.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); background.SetProperty( Control::Property::BACKGROUND, BACKGROUND ); - stage.Add( background ); + window.Add( background ); - // Create a control with a circular gradient that we'll use for the gestures and be a quarter of the size of the stage. + // Create a control with a circular gradient that we'll use for the gestures and be a quarter of the size of the window. Actor touchControl = Control::New(); - touchControl.SetSize( stage.GetSize() * 0.25f ); - touchControl.SetParentOrigin( ParentOrigin::CENTER ); + touchControl.SetProperty( Actor::Property::SIZE, windowSize * 0.25f ); + touchControl.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); touchControl.SetProperty( Control::Property::BACKGROUND, CONTROL_BACKGROUND ); background.Add( touchControl ); // Connect to the touch signal - touchControl.TouchSignal().Connect( this, &GestureExample::OnTouch ); - touchControl.SetLeaveRequired( true ); + touchControl.TouchedSignal().Connect( this, &GestureExample::OnTouch ); + touchControl.SetProperty( Actor::Property::LEAVE_REQUIRED, true ); // Create a long press gesture detector, attach the actor & connect mLongPressDetector = LongPressGestureDetector::New(); @@ -204,10 +204,10 @@ private: float startTime( 0.0f ); float endTime( startTime + HELP_ANIMATION_SEGMENT_TIME ); - AddHelpInfo( "Tap image for animation", background, helpAnimation, startTime, endTime ); - AddHelpInfo( "Press & Hold image to drag", background, helpAnimation, startTime += HELP_ANIMATION_SEGMENT_TIME, endTime += HELP_ANIMATION_SEGMENT_TIME ); - AddHelpInfo( "Pinch image to resize", background, helpAnimation, startTime += HELP_ANIMATION_SEGMENT_TIME, endTime += HELP_ANIMATION_SEGMENT_TIME ); - AddHelpInfo( "Move fingers in a circular motion on image to rotate", background, helpAnimation, startTime += HELP_ANIMATION_SEGMENT_TIME, endTime += HELP_ANIMATION_SEGMENT_TIME ); + AddHelpInfo( "Tap image for animation", windowSize, background, helpAnimation, startTime, endTime ); + AddHelpInfo( "Press & Hold image to drag", windowSize, background, helpAnimation, startTime += HELP_ANIMATION_SEGMENT_TIME, endTime += HELP_ANIMATION_SEGMENT_TIME ); + AddHelpInfo( "Pinch image to resize", windowSize, background, helpAnimation, startTime += HELP_ANIMATION_SEGMENT_TIME, endTime += HELP_ANIMATION_SEGMENT_TIME ); + AddHelpInfo( "Move fingers in a circular motion on image to rotate", windowSize, background, helpAnimation, startTime += HELP_ANIMATION_SEGMENT_TIME, endTime += HELP_ANIMATION_SEGMENT_TIME ); helpAnimation.SetLooping( true ); helpAnimation.Play(); } @@ -218,7 +218,7 @@ private: * @param[in] actor The touched actor * @param[in] touch The touch event */ - bool OnTouch( Actor actor, const TouchData& touch ) + bool OnTouch( Actor actor, const TouchEvent& touch ) { switch( touch.GetState( 0 ) ) { @@ -255,7 +255,7 @@ private: break; } } - return true; + return false; } /** @@ -266,14 +266,14 @@ private: */ void OnLongPress( Actor actor, const LongPressGesture& longPress ) { - if( longPress.state == Gesture::Started ) + if( longPress.GetState() == GestureState::STARTED ) { // When we first receive a long press, attach the actor to the pan detector. mPanDetector.Attach( actor ); // Do a small animation to indicate to the user that we are in pan mode. Animation anim = Animation::New( PAN_MODE_CHANGE_ANIMATION_DURATION ); - anim.AnimateTo( Property( actor, Actor::Property::SCALE ), actor.GetCurrentScale() * PAN_MODE_START_ANIMATION_SCALE, AlphaFunction::BOUNCE ); + anim.AnimateTo( Property( actor, Actor::Property::SCALE ), actor.GetCurrentProperty< Vector3 >( Actor::Property::SCALE ) * PAN_MODE_START_ANIMATION_SCALE, AlphaFunction::BOUNCE ); anim.Play(); // Start the shake animation so the user knows when they are in pan mode. @@ -294,36 +294,36 @@ private: // As the displacement is in local actor coords, we will have to multiply the displacement by the // actor's scale so that it moves the correct amount in the parent's coordinate system. - Vector3 scaledDisplacement( pan.displacement ); - scaledDisplacement *= actor.GetCurrentScale(); + Vector3 scaledDisplacement( pan.GetDisplacement() ); + scaledDisplacement *= actor.GetCurrentProperty< Vector3 >( Actor::Property::SCALE ); Vector3 currentPosition; actor.GetProperty( Actor::Property::POSITION ).Get( currentPosition ); Vector3 newPosition = currentPosition + scaledDisplacement; - actor.SetPosition( newPosition ); + actor.SetProperty( Actor::Property::POSITION, newPosition ); - switch( pan.state ) + switch( pan.GetState() ) { - case Gesture::Started: + case GestureState::STARTED: { mPanStarted = true; break; } - case Gesture::Finished: - case Gesture::Cancelled: + case GestureState::FINISHED: + case GestureState::CANCELLED: { // If we cancel or finish the pan, do an animation to indicate this and stop the shake animation. Animation anim = Animation::New( PAN_MODE_CHANGE_ANIMATION_DURATION ); anim.AnimateTo( Property( actor, Actor::Property::COLOR ), Vector4::ONE ); - anim.AnimateTo( Property( actor, Actor::Property::SCALE ), actor.GetCurrentScale() * PAN_MODE_END_ANIMATION_SCALE, AlphaFunction::BOUNCE ); + anim.AnimateTo( Property( actor, Actor::Property::SCALE ), actor.GetCurrentProperty< Vector3 >( Actor::Property::SCALE ) * PAN_MODE_END_ANIMATION_SCALE, AlphaFunction::BOUNCE ); // Move actor back to center if we're out of bounds - Vector2 halfStageSize = Stage::GetCurrent().GetSize() * 0.5f; - if( ( std::abs( newPosition.x ) > halfStageSize.width ) || - ( std::abs( newPosition.y ) > halfStageSize.height ) ) + Vector2 halfWindowSize = Vector2(mApplication.GetWindow().GetSize()) * 0.5f; + if( ( abs( newPosition.x ) > halfWindowSize.width ) || + ( abs( newPosition.y ) > halfWindowSize.height ) ) { anim.AnimateTo( Property( actor, Actor::Property::POSITION ), Vector3::ZERO, AlphaFunction::EASE_IN ); } @@ -369,19 +369,19 @@ private: */ void OnPinch( Actor actor, const PinchGesture& pinch ) { - switch( pinch.state ) + switch( pinch.GetState() ) { - case Gesture::Started: + case GestureState::STARTED: { // Starting scale is required so that we know what to multiply the pinch.scale by. - mStartingScale = actor.GetCurrentScale(); + mStartingScale = actor.GetCurrentProperty< Vector3 >( Actor::Property::SCALE ); break; } - case Gesture::Finished: - case Gesture::Cancelled: + case GestureState::FINISHED: + case GestureState::CANCELLED: { - Vector3 scale( actor.GetCurrentScale() ); + Vector3 scale( actor.GetCurrentProperty< Vector3 >( Actor::Property::SCALE ) ); // Ensure the actor sizes itself to be within the limits defined. if ( scale.x < MINIMUM_SCALE.x ) @@ -406,7 +406,7 @@ private: } } - actor.SetScale( mStartingScale * pinch.scale ); + actor.SetProperty( Actor::Property::SCALE, mStartingScale * pinch.GetScale() ); } /** @@ -417,17 +417,17 @@ private: */ void OnRotation( Actor actor, const RotationGesture& rotation ) { - switch( rotation.state ) + switch( rotation.GetState() ) { - case Gesture::Started: + case GestureState::STARTED: { // Starting orientation is required so that we know what to multiply the rotation.rotation by. - mStartingOrientation = actor.GetCurrentOrientation(); + mStartingOrientation = actor.GetCurrentProperty< Quaternion >( Actor::Property::ORIENTATION ); break; } - case Gesture::Finished: - case Gesture::Cancelled: + case GestureState::FINISHED: + case GestureState::CANCELLED: { // Do an animation to come back to go back to the original orientation. Animation anim = Animation::New( ROTATE_BACK_ANIMATION_DURATION ); @@ -442,7 +442,7 @@ private: } } - actor.SetOrientation( mStartingOrientation * Quaternion( rotation.rotation, Vector3::ZAXIS ) ); + actor.SetProperty( Actor::Property::ORIENTATION, Quaternion( mStartingOrientation * Quaternion( rotation.GetRotation(), Vector3::ZAXIS ) ) ); } /** @@ -453,7 +453,7 @@ private: */ void OnKeyEvent( const KeyEvent& event ) { - if( event.state == KeyEvent::Down ) + if( event.GetState() == KeyEvent::DOWN ) { if( IsKey( event, Dali::DALI_KEY_ESCAPE ) || IsKey( event, Dali::DALI_KEY_BACK ) ) {