/*
- * 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.
// EXTERNAL INCLUDES
#include <cstring> // for strcmp
#include <dali/public-api/object/type-registry.h>
-#include <dali/devel-api/object/type-registry-helper.h>
-#include <dali-toolkit/devel-api/controls/renderer-factory/renderer-factory.h>
+#include <dali/public-api/object/type-registry-helper.h>
+#include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
#include <dali/integration-api/debug.h>
+// INTERNAL INCLUDES
+#include <dali-toolkit/internal/visuals/visual-factory-cache.h>
+
namespace Dali
{
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 ),
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 )
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 )
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 )
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 )
//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();
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 );
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 );
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 );
TextureSet textureSet = TextureSet::New();
- if( mCurrentImage )
+ if( mCurrentTexture )
{
- textureSet.SetImage( 0u, mCurrentImage );
+ textureSet.SetTexture( 0u, mCurrentTexture );
}
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 )
{
mTargetRenderer.Reset();
}
- Control::OnStageDisconnection();
+ Control::OnSceneDisconnection();
}
void CubeTransitionEffect::SetTransitionDuration( float duration )
return mIsAnimating;
}
-void CubeTransitionEffect::SetCurrentImage( Image image )
+void CubeTransitionEffect::SetCurrentTexture( Texture texture )
{
- mCurrentImage = image;
+ mCurrentTexture = texture;
+
if( mCurrentRenderer )
{
TextureSet textureSet = mCurrentRenderer.GetTextures();
- textureSet.SetImage( 0u, mCurrentImage );
+ textureSet.SetTexture( 0u, mCurrentTexture);
}
}
-void CubeTransitionEffect::SetTargetImage( Image image )
+void CubeTransitionEffect::SetTargetTexture( Texture texture )
{
- mTargetImage = image;
+ mTargetTexture = texture;
if( mTargetRenderer )
{
TextureSet textureSet = mTargetRenderer.GetTextures();
- textureSet.SetImage( 0u, mTargetImage );
+ 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 ) );
{
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
TextureSet textureSet = TextureSet::New();
- if( mTargetImage )
+ if( mTargetTexture )
{
- textureSet.SetImage( 0u, mTargetImage );
+ textureSet.SetTexture( 0u, mTargetTexture );
}
Geometry geometry = mCurrentRenderer.GetGeometry();
Shader shader( mCurrentRenderer.GetShader() );
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 );
}
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 );
}
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()