X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftransition-effects%2Fcube-transition-effect-impl.cpp;h=29fd9e814ad68cc16b56902b611b8571d033970c;hb=610495b8647d1a25c98bf0773ccc0dd6d1996263;hp=5a76197fbca3b05fde4da5717b8307283991d45b;hpb=e84f2b4052f5a042c6a08d02b87e771bac5ddf44;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/transition-effects/cube-transition-effect-impl.cpp b/dali-toolkit/internal/transition-effects/cube-transition-effect-impl.cpp index 5a76197..29fd9e8 100644 --- a/dali-toolkit/internal/transition-effects/cube-transition-effect-impl.cpp +++ b/dali-toolkit/internal/transition-effects/cube-transition-effect-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 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. @@ -21,10 +21,13 @@ // EXTERNAL INCLUDES #include // for strcmp #include -#include -#include +#include +#include #include +// INTERNAL INCLUDES +#include + namespace Dali { @@ -79,45 +82,18 @@ const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER( Actor CreateTile( const Vector4& samplerRect ) { Actor tile = Actor::New(); - tile.SetAnchorPoint( AnchorPoint::CENTER ); + tile.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); tile.RegisterProperty( "uTextureRect", samplerRect ); return tile; } - -Geometry CreateQuadGeometry() -{ - const float halfWidth = 0.5f; - const float halfHeight = 0.5f; - struct QuadVertex { Vector2 position;}; - QuadVertex quadVertexData[4] = - { - { Vector2(-halfWidth, -halfHeight) }, - { Vector2( halfWidth, -halfHeight) }, - { Vector2(-halfWidth, halfHeight) }, - { Vector2( halfWidth, halfHeight) } - }; - - Property::Map quadVertexFormat; - quadVertexFormat["aPosition"] = Property::VECTOR2; - PropertyBuffer quadVertices = PropertyBuffer::New( quadVertexFormat ); - quadVertices.SetData( quadVertexData, 4 ); - - // Create the geometry object - Geometry geometry = Geometry::New(); - geometry.AddVertexBuffer( quadVertices ); - geometry.SetGeometryType( Geometry::TRIANGLE_STRIP ); - - return geometry; -} - } const Vector4 CubeTransitionEffect::FULL_BRIGHTNESS( 1.0f, 1.0f, 1.0f, 1.0f ); const Vector4 CubeTransitionEffect::HALF_BRIGHTNESS( 0.5f, 0.5f, 0.5f, 1.0f ); CubeTransitionEffect::CubeTransitionEffect( unsigned int rows, unsigned int columns ) -: Control( ControlBehaviour( 0 ) ), +: Control( ControlBehaviour( DISABLE_STYLE_CHANGE_SIGNALS ) ), mRows( rows ), mColumns( columns ), mIsAnimating( false ), @@ -137,8 +113,8 @@ void CubeTransitionEffect::SetTargetRight( unsigned int idx ) mBoxes[ idx ].SetProperty(Actor::Property::PARENT_ORIGIN_Z, 1.0f - mTileSize.x * 0.5f ); - mTargetTiles[ idx ].SetParentOrigin( Vector3( 1.f, 0.5f, 0.5f) ); - mTargetTiles[ idx ].SetOrientation( Degree( 90.f ), Vector3::YAXIS ); + mTargetTiles[ idx ].SetProperty( Actor::Property::PARENT_ORIGIN, Vector3( 1.f, 0.5f, 0.5f) ); + mTargetTiles[ idx ].SetProperty( Actor::Property::ORIENTATION, Quaternion( Degree( 90.f ), Vector3::YAXIS ) ); } void CubeTransitionEffect::SetTargetLeft( unsigned int idx ) @@ -147,8 +123,8 @@ void CubeTransitionEffect::SetTargetLeft( unsigned int idx ) mBoxes[ idx ].SetProperty(Actor::Property::PARENT_ORIGIN_Z, 1.0f - mTileSize.x * 0.5f ); - mTargetTiles[ idx ].SetParentOrigin( Vector3( 0.f, 0.5f, 0.5f) ); - mTargetTiles[ idx ].SetOrientation( Degree( -90.f ), Vector3::YAXIS ); + mTargetTiles[ idx ].SetProperty( Actor::Property::PARENT_ORIGIN, Vector3( 0.f, 0.5f, 0.5f) ); + mTargetTiles[ idx ].SetProperty( Actor::Property::ORIENTATION, Quaternion( Degree( -90.f ), Vector3::YAXIS ) ); } void CubeTransitionEffect::SetTargetBottom( unsigned int idx ) @@ -157,8 +133,8 @@ void CubeTransitionEffect::SetTargetBottom( unsigned int idx ) mBoxes[ idx ].SetProperty(Actor::Property::PARENT_ORIGIN_Z, 1.0f - mTileSize.y * 0.5f ); - mTargetTiles[ idx ].SetParentOrigin( Vector3( 0.5f, 0.f, 0.5f) ); - mTargetTiles[ idx ].SetOrientation( Degree( 90.f ), Vector3::XAXIS ); + mTargetTiles[ idx ].SetProperty( Actor::Property::PARENT_ORIGIN, Vector3( 0.5f, 0.f, 0.5f) ); + mTargetTiles[ idx ].SetProperty( Actor::Property::ORIENTATION, Quaternion( Degree( 90.f ), Vector3::XAXIS ) ); } void CubeTransitionEffect::SetTargetTop( unsigned int idx ) @@ -167,8 +143,8 @@ void CubeTransitionEffect::SetTargetTop( unsigned int idx ) mBoxes[ idx ].SetProperty(Actor::Property::PARENT_ORIGIN_Z, 1.0f - mTileSize.y * 0.5f ); - mTargetTiles[ idx ].SetParentOrigin( Vector3( 0.5f, 1.f, 0.5f) ); - mTargetTiles[ idx ].SetOrientation( Degree( -90.f ), Vector3::XAXIS ); + mTargetTiles[ idx ].SetProperty( Actor::Property::PARENT_ORIGIN, Vector3( 0.5f, 1.f, 0.5f) ); + mTargetTiles[ idx ].SetProperty( Actor::Property::ORIENTATION, Quaternion( Degree( -90.f ), Vector3::XAXIS ) ); } void CubeTransitionEffect::OnRelayout( const Vector2& size, RelayoutContainer& container ) @@ -223,8 +199,8 @@ void CubeTransitionEffect::Initialize() //create the box parents mBoxRoot = Actor::New(); - mBoxRoot.SetParentOrigin( ParentOrigin::CENTER ); - mBoxRoot.SetAnchorPoint( AnchorPoint::CENTER ); + mBoxRoot.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + mBoxRoot.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); mCurrentTiles.clear(); mTargetTiles.clear(); @@ -245,7 +221,7 @@ void CubeTransitionEffect::Initialize() Actor currentTile = CreateTile( textureRect ); currentTile.SetProperty( Actor::Property::COLOR, FULL_BRIGHTNESS ); - currentTile.SetParentOrigin( ParentOrigin::CENTER ); + currentTile.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); mCurrentTiles.push_back( currentTile ); Actor targetTile = CreateTile( textureRect ); @@ -253,8 +229,8 @@ void CubeTransitionEffect::Initialize() mTargetTiles.push_back( targetTile ); Actor box = Actor::New(); - box.SetParentOrigin( anchor + offset ); - box.SetAnchorPoint( AnchorPoint::CENTER ); + box.SetProperty( Actor::Property::PARENT_ORIGIN, anchor + offset ); + box.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); box.Add( currentTile ); box.Add( targetTile ); @@ -268,26 +244,27 @@ void CubeTransitionEffect::Initialize() OnInitialize(); } -void CubeTransitionEffect::OnStageConnection( int depth ) +void CubeTransitionEffect::OnSceneConnection( int depth ) { - Control::OnStageConnection( depth ); - - Geometry geometry = CreateQuadGeometry(); + Geometry geometry = VisualFactoryCache::CreateQuadGeometry(); Shader shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER ); - Material material = Material::New( shader ); + TextureSet textureSet = TextureSet::New(); - if( mCurrentImage ) + if( mCurrentTexture ) { - material.AddTexture( mCurrentImage, "sTexture" ); + textureSet.SetTexture( 0u, mCurrentTexture ); } - mCurrentRenderer = Renderer::New( geometry, material ); + mCurrentRenderer = Renderer::New( geometry, shader ); + mCurrentRenderer.SetTextures( textureSet ); mCurrentRenderer.SetProperty( Renderer::Property::DEPTH_INDEX, depth ); Self().AddRenderer( mCurrentRenderer ); + + Control::OnSceneConnection( depth ); } -void CubeTransitionEffect::OnStageDisconnection() +void CubeTransitionEffect::OnSceneDisconnection() { if( mCurrentRenderer ) { @@ -309,7 +286,7 @@ void CubeTransitionEffect::OnStageDisconnection() mTargetRenderer.Reset(); } - Control::OnStageDisconnection(); + Control::OnSceneDisconnection(); } void CubeTransitionEffect::SetTransitionDuration( float duration ) @@ -337,40 +314,31 @@ bool CubeTransitionEffect::IsTransitioning() return mIsAnimating; } -void CubeTransitionEffect::SetCurrentImage( Image image ) +void CubeTransitionEffect::SetCurrentTexture( Texture texture ) { - mCurrentImage = image; + mCurrentTexture = texture; if( mCurrentRenderer ) { - Material material = mCurrentRenderer.GetMaterial(); - - int index = material.GetTextureIndex("sTexture" ); - if( index != -1 ) - { - material.SetTextureImage( index, mCurrentImage ); - } - else - { - material.AddTexture( mCurrentImage, "sTexture" ); - } + TextureSet textureSet = mCurrentRenderer.GetTextures(); + textureSet.SetTexture( 0u, mCurrentTexture); } } -void CubeTransitionEffect::SetTargetImage( Image image ) +void CubeTransitionEffect::SetTargetTexture( Texture texture ) { - mTargetImage = image; + mTargetTexture = texture; if( mTargetRenderer ) { - Material material = mTargetRenderer.GetMaterial(); - material.AddTexture( mTargetImage, "sTexture" ); + TextureSet textureSet = mTargetRenderer.GetTextures(); + textureSet.SetTexture( 0u, mTargetTexture ); } } void CubeTransitionEffect::StartTransition( bool toNextImage ) { - Vector3 size = Self().GetCurrentSize(); + Vector3 size = Self().GetCurrentProperty< Vector3 >( Actor::Property::SIZE ); if( toNextImage ) { StartTransition( Vector2(size.x* 0.5f, size.y*0.5f), Vector2( -10.f, 0.f ) ); @@ -385,18 +353,20 @@ void CubeTransitionEffect::StartTransition( Vector2 panPosition, Vector2 panDisp { if( !mCurrentRenderer ) { - DALI_LOG_ERROR( "Trying to transition a cube transition without an image set" ); + DALI_LOG_ERROR( "Trying to transition a cube transition without an image set\n" ); return; } //create the target renderer - Material material = Material::New( mCurrentRenderer.GetMaterial().GetShader() ); - if( mTargetImage ) + TextureSet textureSet = TextureSet::New(); + if( mTargetTexture ) { - material.AddTexture( mTargetImage, "sTexture" ); + textureSet.SetTexture( 0u, mTargetTexture ); } Geometry geometry = mCurrentRenderer.GetGeometry(); - mTargetRenderer = Renderer::New( geometry, material ); + Shader shader( mCurrentRenderer.GetShader() ); + mTargetRenderer = Renderer::New( geometry, shader ); + mTargetRenderer.SetTextures( textureSet ); int depthIndex = mCurrentRenderer.GetProperty(Renderer::Property::DEPTH_INDEX); mTargetRenderer.SetProperty( Dali::Renderer::Property::DEPTH_INDEX, depthIndex ); @@ -408,7 +378,7 @@ void CubeTransitionEffect::StartTransition( Vector2 panPosition, Vector2 panDisp for( ActorArray::iterator it = mCurrentTiles.begin(); it != mCurrentTiles.end(); ++it ) { - it->SetParentOrigin( Vector3( 0.5f, 0.5f, 1.0f) ); + it->SetProperty( Actor::Property::PARENT_ORIGIN, Vector3( 0.5f, 0.5f, 1.0f) ); it->SetProperty( Actor::Property::ORIENTATION, Quaternion( Radian( 0.0f ), Vector3::XAXIS ) ); it->AddRenderer( mCurrentRenderer ); } @@ -470,7 +440,7 @@ void CubeTransitionEffect::ResetToInitialState() for( ActorArray::iterator it = mCurrentTiles.begin(); it != mCurrentTiles.end(); ++it ) { - it->SetParentOrigin( Vector3( 0.5f, 0.5f, 1.0f) ); + it->SetProperty( Actor::Property::PARENT_ORIGIN, Vector3( 0.5f, 0.5f, 1.0f) ); it->SetProperty( Actor::Property::ORIENTATION, Quaternion( Radian( 0.0f ), Vector3::XAXIS ) ); it->SetProperty( Actor::Property::COLOR, FULL_BRIGHTNESS ); } @@ -501,13 +471,13 @@ void CubeTransitionEffect::OnTransitionFinished(Animation& source) std::swap( mCurrentTiles, mTargetTiles ); std::swap( mCurrentRenderer, mTargetRenderer ); - std::swap( mCurrentImage, mTargetImage ); + std::swap( mCurrentTexture, mTargetTexture ); ResetToInitialState(); //Emit signal Toolkit::CubeTransitionEffect handle( GetOwner() ); - mTransitionCompletedSignal.Emit( handle, mCurrentImage ); + mTransitionCompletedSignal.Emit( handle, mCurrentTexture ); } Toolkit::CubeTransitionEffect::TransitionCompletedSignalType& CubeTransitionEffect::TransitionCompletedSignal()