ImageVisual Action::Reload added
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-CubeTransitionEffect.cpp
index 671e19d..8d8cefb 100644 (file)
 #include <stdlib.h>
 #include <dali-toolkit-test-suite-utils.h>
 #include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/devel-api/transition-effects/cube-transition-effect.h>
+#include <dali-toolkit/devel-api/transition-effects/cube-transition-cross-effect.h>
+#include <dali-toolkit/devel-api/transition-effects/cube-transition-fold-effect.h>
+#include <dali-toolkit/devel-api/transition-effects/cube-transition-wave-effect.h>
+#include <dali/public-api/images/buffer-image.h>
+#include <dali/devel-api/adaptor-framework/image-loading.h>
+#include <dali/devel-api/adaptor-framework/pixel-buffer.h>
+
 
 using namespace Dali;
 using namespace Dali::Toolkit;
@@ -35,9 +43,12 @@ const Vector2 PAN_POSITION1( VIEW_AREA_SIZE.x * 0.75f, VIEW_AREA_SIZE.y * 0.25f
 const Vector2 PAN_DISPLACEMENT1( -5.f, 5.f );
 const Vector2 PAN_POSITION2( VIEW_AREA_SIZE.x * 0.25f, VIEW_AREA_SIZE.y * 0.75f );
 const Vector2 PAN_DISPLACEMENT2( 5.f, 5.f );
+const Vector4 FULL_BRIGHTNESS(1.f,1.f,1.f,1.f);
+const Vector4 HALF_BRIGHTNESS(0.5f, 0.5f, 0.5f, 1.f);
 const int RENDER_FRAME_INTERVAL = 16;
 static const float FLT_EPISILON = 0.0001f;
-const float OFFSCREEN_RENDER_DURATION = 0.05f;
+static const float EPISILON = 0.05f;
+const float TRANSITION_BEFORE_END_DURATION = TRANSITION_DURATION - 0.05f;
 
 static bool gObjectCreatedCallBackCalled;
 static void TestCallback(BaseHandle handle)
@@ -53,7 +64,7 @@ static void TestCallback(BaseHandle handle)
 void Wait(ToolkitTestApplication& application, float durationToPass)
 {
   int duration = static_cast<int>(durationToPass*1000.f);
-  // wait 2 more frames to compensate the two frames used by the bitmapImage waiting for the loading succeeded signal
+  // wait 2 more frames to compensate the two frames used by the image waiting for the loading succeeded signal
   for(int i = 0; i <=  duration/RENDER_FRAME_INTERVAL+2 ; i++)
   {
     application.SendNotification();
@@ -67,18 +78,18 @@ void Wait(ToolkitTestApplication& application, float durationToPass)
 class TransitionCompletedCallback : public Dali::ConnectionTracker
 {
 public:
-  TransitionCompletedCallback( bool& signalReceived, CubeTransitionEffect& effect, ImageActor& imageActor )
+  TransitionCompletedCallback( bool& signalReceived, CubeTransitionEffect& effect, Texture& image )
   : mSignalVerified( signalReceived ),
     mCurrentEffect( effect ),
-    mActorTransitTo( imageActor )
+    mActorTransitTo( image )
   {
   }
 
-  void Callback( CubeTransitionEffect effect, ImageActor imageActor )
+  void Callback( CubeTransitionEffect effect, Texture image )
   {
     tet_infoline( "Verifying TransitionCompletedSignal" );
 
-    if( mCurrentEffect == effect && mActorTransitTo == imageActor )
+    if( mCurrentEffect == effect && mActorTransitTo == image )
     {
       mSignalVerified = true;
     }
@@ -91,7 +102,7 @@ public:
 
   bool&                  mSignalVerified;
   CubeTransitionEffect&  mCurrentEffect;
-  ImageActor&            mActorTransitTo;
+  Texture&               mActorTransitTo;
 };
 
 } // namespace
@@ -117,7 +128,8 @@ int UtcDaliCubeTransitionWaveEffectNew(void)
 
   DALI_TEST_CHECK( !waveEffect );
 
-  waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
+  waveEffect.SetSize( VIEW_AREA_SIZE );
 
   DALI_TEST_CHECK( waveEffect );
 
@@ -130,7 +142,8 @@ int UtcDaliCubeTransitionWaveEffectNew(void)
   gObjectCreatedCallBackCalled = false;
   registry.ObjectCreatedSignal().Connect( &TestCallback );
   {
-    CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+    CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
+    waveEffect.SetSize( VIEW_AREA_SIZE );
   }
   DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
   END_TEST;
@@ -145,7 +158,8 @@ int UtcDaliCubeTransitionCrossEffectNew(void)
 
   DALI_TEST_CHECK( !crossEffect );
 
-  crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
+  crossEffect.SetSize( VIEW_AREA_SIZE );
 
   DALI_TEST_CHECK( crossEffect );
 
@@ -158,7 +172,8 @@ int UtcDaliCubeTransitionCrossEffectNew(void)
   gObjectCreatedCallBackCalled = false;
   registry.ObjectCreatedSignal().Connect( &TestCallback );
   {
-    CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+    CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
+    crossEffect.SetSize( VIEW_AREA_SIZE );
   }
   DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
   END_TEST;
@@ -173,7 +188,8 @@ int UtcDaliCubeTransitionFoldEffectNew(void)
 
   DALI_TEST_CHECK( !foldEffect );
 
-  foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
+  foldEffect.SetSize( VIEW_AREA_SIZE );
 
   DALI_TEST_CHECK( foldEffect );
 
@@ -186,7 +202,8 @@ int UtcDaliCubeTransitionFoldEffectNew(void)
   gObjectCreatedCallBackCalled = false;
   registry.ObjectCreatedSignal().Connect( &TestCallback );
   {
-    CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+    CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
+    foldEffect.SetSize( VIEW_AREA_SIZE );
   }
   DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
   END_TEST;
@@ -197,15 +214,18 @@ int UtcDaliCubeTransitionEffectSetGetTransitionDuration(void)
   ToolkitTestApplication application;
   tet_infoline(" UtcDaliCubeTransitionEffectSetGetTransitionDuration ");
 
-  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
   waveEffect.SetTransitionDuration( TRANSITION_DURATION );
+  waveEffect.SetSize( VIEW_AREA_SIZE );
   DALI_TEST_EQUALS( TRANSITION_DURATION, waveEffect.GetTransitionDuration(), TEST_LOCATION );
 
-  CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
   crossEffect.SetTransitionDuration( TRANSITION_DURATION );
+  crossEffect.SetSize( VIEW_AREA_SIZE );
   DALI_TEST_EQUALS( TRANSITION_DURATION, crossEffect.GetTransitionDuration(), TEST_LOCATION );
 
-  CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
+  foldEffect.SetSize( VIEW_AREA_SIZE );
   foldEffect.SetTransitionDuration( TRANSITION_DURATION );
   DALI_TEST_EQUALS( TRANSITION_DURATION, foldEffect.GetTransitionDuration(), TEST_LOCATION );
   END_TEST;
@@ -216,11 +236,13 @@ int UtcDaliCubeTransitionEffectSetGetCubeDisplacement(void)
   ToolkitTestApplication application;
   tet_infoline(" UtcDaliCubeTransitionEffectSetGetTransitionDuration ");
 
-  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS);
+  waveEffect.SetSize( VIEW_AREA_SIZE );
   waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
   DALI_TEST_EQUALS( CUBE_DISPLACEMENT, waveEffect.GetCubeDisplacement(), TEST_LOCATION );
 
-  CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
+  crossEffect.SetSize( VIEW_AREA_SIZE );
   crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
   DALI_TEST_EQUALS( CUBE_DISPLACEMENT, crossEffect.GetCubeDisplacement(), TEST_LOCATION );
 
@@ -236,131 +258,169 @@ int UtcDaliCubeTransitionEffectGetRoot(void)
 
   unsigned int totalNum = NUM_ROWS*NUM_COLUMNS;
 
-  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
-  Actor rootActor = waveEffect.GetRoot();
+  Texture texture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 40, 40 );
+
+  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
+  waveEffect.SetSize( VIEW_AREA_SIZE );
+  Stage::GetCurrent().Add( waveEffect );
+  waveEffect.SetCurrentTexture( texture );
+  waveEffect.SetTargetTexture( texture );
+
+  application.SendNotification();
+  application.Render();
+
+  waveEffect.StartTransition();
+
+  Wait( application, TRANSITION_DURATION * 0.5f );
 
   // check that we have a total of NUM_ROWS*NUM_COLUMNS cubes;
-  DALI_TEST_CHECK( totalNum == rootActor.GetChildCount() );
+  Actor boxesRoot = waveEffect.GetChildAt(0);
+  DALI_TEST_CHECK( totalNum == boxesRoot.GetChildCount() );
 
   // check that every cube has two children
-  DALI_TEST_CHECK( 2 == rootActor.GetChildAt(0).GetChildCount() );
-  DALI_TEST_CHECK( 2 == rootActor.GetChildAt(totalNum/2).GetChildCount() );
-  DALI_TEST_CHECK( 2 == rootActor.GetChildAt(totalNum-1).GetChildCount() );
+  DALI_TEST_CHECK( 2 == boxesRoot.GetChildAt(0).GetChildCount() );
+  DALI_TEST_CHECK( 2 == boxesRoot.GetChildAt(totalNum/2).GetChildCount() );
+  DALI_TEST_CHECK( 2 == boxesRoot.GetChildAt(totalNum-1).GetChildCount() );
   END_TEST;
 }
 
-int UtcDaliCubeTransitionEffectIsTransiting(void)
+int UtcDaliCubeTransitionEffectIsTransitioning(void)
 {
   ToolkitTestApplication application;
   tet_infoline(" UtcDaliCubeTransitionEffectIsTransiting ");
 
   application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
-  ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,30,30);
+  Texture texture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 40, 40 );
 
-  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
-  Actor rootActor = waveEffect.GetRoot();
-  Stage::GetCurrent().Add( rootActor );
+  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
+  waveEffect.SetSize( VIEW_AREA_SIZE );
+  Stage::GetCurrent().Add( waveEffect );
 
   waveEffect.SetTransitionDuration( TRANSITION_DURATION );
   waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
-  DALI_TEST_CHECK( !waveEffect.IsTransiting() );
+  DALI_TEST_CHECK( !waveEffect.IsTransitioning() );
 
-  waveEffect.SetCurrentImage(imageActor);
-  waveEffect.SetTargetImage(imageActor);
+  waveEffect.SetCurrentTexture( texture );
+  waveEffect.SetTargetTexture( texture );
   //transition is started
   waveEffect.StartTransition();
-  DALI_TEST_CHECK( waveEffect.IsTransiting() );
+  DALI_TEST_CHECK( waveEffect.IsTransitioning() );
   //transition is finished
   Wait( application, TRANSITION_DURATION );
-  DALI_TEST_CHECK( !waveEffect.IsTransiting() );
+  DALI_TEST_CHECK( !waveEffect.IsTransitioning() );
+
+  CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
+  crossEffect.SetSize( VIEW_AREA_SIZE );
+  Stage::GetCurrent().Add( crossEffect );
 
-  CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
   crossEffect.SetTransitionDuration( TRANSITION_DURATION );
   crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
-  DALI_TEST_CHECK( !crossEffect.IsTransiting() );
+  DALI_TEST_CHECK( !crossEffect.IsTransitioning() );
 
-  crossEffect.SetCurrentImage(imageActor);
-  crossEffect.SetTargetImage(imageActor);
+  crossEffect.SetCurrentTexture( texture );
+  crossEffect.SetTargetTexture( texture );
   //transition is started
   crossEffect.StartTransition(false);
-  DALI_TEST_CHECK( crossEffect.IsTransiting() );
+  DALI_TEST_CHECK( crossEffect.IsTransitioning() );
   //transition is finished
   Wait( application, TRANSITION_DURATION );
-  DALI_TEST_CHECK( !crossEffect.IsTransiting() );
+  DALI_TEST_CHECK( !crossEffect.IsTransitioning() );
+
+  CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
+  foldEffect.SetSize( VIEW_AREA_SIZE );
+  Stage::GetCurrent().Add( foldEffect );
 
-  CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
   foldEffect.SetTransitionDuration( TRANSITION_DURATION );
-  DALI_TEST_CHECK( !foldEffect.IsTransiting() );
+  DALI_TEST_CHECK( !foldEffect.IsTransitioning() );
 
-  foldEffect.SetCurrentImage( imageActor );
-  foldEffect.SetTargetImage( imageActor );
+  foldEffect.SetCurrentTexture( texture );
+  foldEffect.SetTargetTexture( texture );
   //transition is started
   foldEffect.StartTransition(true);
-  DALI_TEST_CHECK(foldEffect.IsTransiting() );
+  DALI_TEST_CHECK(foldEffect.IsTransitioning() );
   //transition is finished
   Wait( application, TRANSITION_DURATION );
-  DALI_TEST_CHECK( !foldEffect.IsTransiting() );
+  DALI_TEST_CHECK( !foldEffect.IsTransitioning() );
 
   END_TEST;
 }
 
 //Test common codes in base class
-int UtcDaliCubeTransitionEffectSetCurrentImage(void)
+int UtcDaliCubeTransitionEffectSetCurrentTexture(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliCubeTransitionEffectSetCurrentImage ");
+  tet_infoline(" UtcDaliCubeTransitionEffectSetCurrentTexture ");
 
   application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
-  ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,40,40) ;
+  Texture texture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 40, 40 );
 
-  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
-  waveEffect.SetCurrentImage( imageActor );
+  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
+  waveEffect.SetSize( VIEW_AREA_SIZE );
+  waveEffect.SetCurrentTexture( texture );
+
+  Stage::GetCurrent().Add( waveEffect );
+
+  application.SendNotification();
+  application.Render();
+
+  waveEffect.StartTransition();
 
   // the current image content is set to the tiles facing the camera
-  ImageActor tile = ImageActor::DownCast( (waveEffect.GetRoot().GetChildAt(0).GetChildAt(0)));
+  Actor currentTile = waveEffect.GetChildAt(0).GetChildAt(0).GetChildAt(0);
+  Actor targetTile = waveEffect.GetChildAt(0).GetChildAt(0).GetChildAt(1);
 
   //check the pixel area set to the cube
-  ImageActor::PixelArea pixelAreaDef( 0, 0, VIEW_AREA_SIZE.x / NUM_COLUMNS, VIEW_AREA_SIZE.y / NUM_ROWS);
-  ImageActor::PixelArea pixelArea = tile.GetPixelArea();
-  DALI_TEST_CHECK ( pixelAreaDef == pixelArea );
-
-  //check the size of the off screen rendered image
-  Wait( application, OFFSCREEN_RENDER_DURATION );
-  ImageAttributes attributes( tile.GetImage().GetAttributes() );
-  DALI_TEST_EQUALS( static_cast<float>(attributes.GetWidth()), VIEW_AREA_SIZE.x, TEST_LOCATION  );
-  DALI_TEST_EQUALS( static_cast<float>(attributes.GetHeight()), VIEW_AREA_SIZE.y, TEST_LOCATION  );
+  Vector4 pixelAreaDef( 0.f, 0.f, 1.f / NUM_COLUMNS, 1.f / NUM_ROWS);
+
+  Property::Index textureRectIndex = currentTile.GetPropertyIndex( "uTextureRect" );
+  DALI_TEST_CHECK( textureRectIndex != Property::INVALID_INDEX );
+  Property::Value textureRectValue = currentTile.GetProperty( textureRectIndex );
+  DALI_TEST_CHECK( textureRectValue.GetType() == Property::VECTOR4 );
+  Vector4 pixelArea;
+  DALI_TEST_CHECK( textureRectValue.Get( pixelArea ) );
+
+  DALI_TEST_EQUALS( pixelAreaDef, pixelArea, FLT_EPISILON, TEST_LOCATION );
+
   END_TEST;
 }
 
 //Test common codes in base class
-int UtcDaliCubeTransitionEffectSetTargetImage(void)
+int UtcDaliCubeTransitionEffectSetTargetTexture(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliCubeTransitionEffectSetTargetImage ");
+  tet_infoline(" UtcDaliCubeTransitionEffectSetTargetTexture ");
 
   application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
- ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,30,30);
+  Texture texture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 40, 40 );
+  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
+  waveEffect.SetSize( VIEW_AREA_SIZE );
+  Stage::GetCurrent().Add( waveEffect );
 
-  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
-  Actor rootActor = waveEffect.GetRoot();
-  Stage::GetCurrent().Add( rootActor );
+  waveEffect.SetCurrentTexture( texture );
+  waveEffect.SetTargetTexture( texture );
 
-  waveEffect.SetCurrentImage( imageActor );
-  waveEffect.SetTargetImage( imageActor );
+  Stage::GetCurrent().Add( waveEffect );
+
+  application.SendNotification();
+  application.Render();
+
+  waveEffect.StartTransition();
 
   // the target image content is set to the tiles currently invisible to the camera
-  ImageActor tile = ImageActor::DownCast( (rootActor.GetChildAt(0).GetChildAt(1)));
+  Actor tile = waveEffect.GetChildAt(0).GetChildAt(0).GetChildAt(1);
 
   //check the pixel area set to the cube
-  ImageActor::PixelArea pixelAreaDef( 0, 0, VIEW_AREA_SIZE.x / NUM_COLUMNS, VIEW_AREA_SIZE.y / NUM_ROWS);
-  ImageActor::PixelArea pixelArea = tile.GetPixelArea();
-  DALI_TEST_CHECK ( pixelAreaDef == pixelArea );
-
-  //check the size of the off screen rendered image
-  Wait( application, OFFSCREEN_RENDER_DURATION );
-  ImageAttributes attributes( tile.GetImage().GetAttributes() );
-  DALI_TEST_EQUALS( static_cast<float>(attributes.GetWidth()), VIEW_AREA_SIZE.x, TEST_LOCATION  );
-  DALI_TEST_EQUALS( static_cast<float>(attributes.GetHeight()), VIEW_AREA_SIZE.y, TEST_LOCATION  );
+  Vector4 pixelAreaDef( 0.f, 0.f, 1.f / NUM_COLUMNS, 1.f / NUM_ROWS);
+
+  Property::Index textureRectIndex = tile.GetPropertyIndex( "uTextureRect" );
+  DALI_TEST_CHECK( textureRectIndex != -1 );
+  Property::Value textureRectValue = tile.GetProperty( textureRectIndex );
+  DALI_TEST_CHECK( textureRectValue.GetType() == Property::VECTOR4 );
+  Vector4 pixelArea;
+  DALI_TEST_CHECK( textureRectValue.Get( pixelArea ) );
+
+  DALI_TEST_EQUALS( pixelAreaDef, pixelArea, FLT_EPISILON, TEST_LOCATION );
+
   END_TEST;
 }
 
@@ -370,48 +430,54 @@ int UtcDaliCubeTransitionWaveEffectStartTransition(void)
   tet_infoline(" UtcDaliCubeTransitionWaveEffectStartTransition ");
 
   application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
-  ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,30,30);
 
-  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  Devel::PixelBuffer pixelBuffer = LoadImageFromFile(TEST_RESOURCE_DIR "/gallery-small-1.jpg");
+  PixelData pixelData = Devel::PixelBuffer::Convert( pixelBuffer );
+  Texture texture = Texture::New( TextureType::TEXTURE_2D, pixelData.GetPixelFormat(), pixelData.GetWidth(), pixelData.GetHeight() );
+  texture.Upload( pixelData );
+
+  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
+  waveEffect.SetSize( VIEW_AREA_SIZE );
   waveEffect.SetTransitionDuration( TRANSITION_DURATION );
   waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
-  Actor rootActor = waveEffect.GetRoot();
-  Stage::GetCurrent().Add( rootActor );
-  Actor cube = rootActor.GetChildAt(0);
+  waveEffect.SetCurrentTexture( texture );
 
-  waveEffect.SetCurrentImage( imageActor );
+  Stage::GetCurrent().Add( waveEffect );
 
-  Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
-  Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
+  application.SendNotification();
+  application.Render();
 
-  //check the cube rotation value and color values after different transitions
-  waveEffect.SetTargetImage( imageActor );
-  waveEffect.StartTransition(true);
-  Wait( application, TRANSITION_DURATION );
-  DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( -Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
+  waveEffect.StartTransition( true );
+
+  Actor cube = waveEffect.GetChildAt(0).GetChildAt(0);
+
+  //check the cube rotation value and color values just before the end of different transitions
+  waveEffect.SetTargetTexture( texture );
+  Wait( application, TRANSITION_BEFORE_END_DURATION );
+  DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90,  Vector3::YAXIS), EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
 
-  waveEffect.SetTargetImage( imageActor );
+  waveEffect.SetTargetTexture( texture );
   waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
-  Wait( application, TRANSITION_DURATION );
-  DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
+  Wait( application, TRANSITION_BEFORE_END_DURATION );
+  DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90,  Vector3::YAXIS), EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
 
-  waveEffect.SetTargetImage( imageActor );
+  waveEffect.SetTargetTexture( texture );
   waveEffect.StartTransition(false);
-  Wait( application, TRANSITION_DURATION );
-  DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( -Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
+  Wait( application, TRANSITION_BEFORE_END_DURATION );
+  DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90,  Vector3::YAXIS), EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
 
-  waveEffect.SetTargetImage( imageActor );
+  waveEffect.SetTargetTexture( texture );
   waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
-  Wait( application, TRANSITION_DURATION );
-  DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( 0.f,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
+  Wait( application, TRANSITION_BEFORE_END_DURATION );
+  DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90,  Vector3::YAXIS), EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
   END_TEST;
 }
 
@@ -421,54 +487,61 @@ int UtcDaliCubeTransitionCrossEffectStartTransition(void)
   tet_infoline(" UtcDaliCubeTransitionCrossEffectStartTransition ");
 
   application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
-  ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,30,30);
 
-  CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  Devel::PixelBuffer pixelBuffer = LoadImageFromFile(TEST_RESOURCE_DIR "/gallery-small-1.jpg");
+  PixelData pixelData = Devel::PixelBuffer::Convert( pixelBuffer );
+  Texture texture = Texture::New( TextureType::TEXTURE_2D, pixelData.GetPixelFormat(), pixelData.GetWidth(), pixelData.GetHeight() );
+  texture.Upload( pixelData );
+
+  CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
+  crossEffect.SetSize( VIEW_AREA_SIZE );
   crossEffect.SetTransitionDuration( TRANSITION_DURATION );
   crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
-  Actor rootActor = crossEffect.GetRoot();
-  Stage::GetCurrent().Add( rootActor );
-  crossEffect.SetCurrentImage( imageActor );
-  Actor cube0 = rootActor.GetChildAt(0);
-  Actor cube1 = rootActor.GetChildAt(1);
+  crossEffect.SetCurrentTexture( texture );
+  crossEffect.SetTargetTexture( texture );
 
-  Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
-  Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
+  Stage::GetCurrent().Add( crossEffect );
+
+  application.SendNotification();
+  application.Render();
 
-  //check the cube rotation values and color values after different transitions
-  crossEffect.SetTargetImage( imageActor );
   crossEffect.StartTransition(true);
-  Wait( application, TRANSITION_DURATION );
-  DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2,  Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
+
+  Actor cube0 = crossEffect.GetChildAt(0).GetChildAt(0);
+  Actor cube1 = crossEffect.GetChildAt(0).GetChildAt(1);
+
+  //check the cube rotation value and color values just before the end of different transitions
+  Wait( application, TRANSITION_BEFORE_END_DURATION );
+  DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90,  Vector3::YAXIS), EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90,  Vector3::XAXIS), EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
 
 
-  crossEffect.SetTargetImage( imageActor );
+  crossEffect.SetTargetTexture( texture );
   crossEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
-  Wait( application, TRANSITION_DURATION );
-  DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 2.f*Math::PI_2,  Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
+  Wait( application, TRANSITION_BEFORE_END_DURATION );
+  DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90,  Vector3::YAXIS), EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90,  Vector3::XAXIS), EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
 
 
-  crossEffect.SetTargetImage( imageActor );
+  crossEffect.SetTargetTexture( texture );
   crossEffect.StartTransition(false);
-  Wait( application, TRANSITION_DURATION );
-  DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2,  Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
+  Wait( application, TRANSITION_BEFORE_END_DURATION );
+  DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90,  Vector3::YAXIS), EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90,  Vector3::XAXIS), EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
 
-  crossEffect.SetTargetImage( imageActor );
+  crossEffect.SetTargetTexture( texture );
   crossEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
-  Wait( application, TRANSITION_DURATION );
-  DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( 0.f,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 0.f,  Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
+  Wait( application, TRANSITION_BEFORE_END_DURATION );
+  DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90,  Vector3::YAXIS), EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90,  Vector3::XAXIS), EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
   END_TEST;
 }
 
@@ -478,52 +551,54 @@ int UtcDaliCubeTransitionFoldEffectStartTransition(void)
   tet_infoline(" UtcDaliCubeTransitionFoldEffectStartTransition ");
 
   application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
-  ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,30,30);
-
-  CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  Texture texture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 40, 40 );
+  CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
+  foldEffect.SetSize( VIEW_AREA_SIZE );
   foldEffect.SetTransitionDuration( TRANSITION_DURATION );
-  Actor rootActor = foldEffect.GetRoot();
-  Stage::GetCurrent().Add( rootActor );
-  foldEffect.SetCurrentImage( imageActor );
-  Actor cube0 = rootActor.GetChildAt(0);
-  Actor cube1 = rootActor.GetChildAt(1);
+  foldEffect.SetCurrentTexture( texture );
+  foldEffect.SetTargetTexture( texture );
 
-  Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
-  Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
+  Stage::GetCurrent().Add( foldEffect );
+
+  application.SendNotification();
+  application.Render();
 
-  //check the cube rotation values and color values after different transitions
-  foldEffect.SetTargetImage( imageActor );
   foldEffect.StartTransition(true);
-  Wait( application, TRANSITION_DURATION );
-  DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
 
-  foldEffect.SetTargetImage( imageActor );
+  Actor cube0 = foldEffect.GetChildAt(0).GetChildAt(0);
+  Actor cube1 = foldEffect.GetChildAt(0).GetChildAt(1);
+
+  //check the cube rotation value and color values just before the end of different transitions
+  Wait( application, TRANSITION_BEFORE_END_DURATION );
+  DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90,  Vector3::YAXIS), EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90,  Vector3::YAXIS), EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
+
+  foldEffect.SetTargetTexture( texture );
   foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
-  Wait( application, TRANSITION_DURATION );
-  DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 2.f*Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
+  Wait( application, TRANSITION_BEFORE_END_DURATION );
+  DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90,  Vector3::YAXIS), EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90,  Vector3::YAXIS), EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
 
 
-  foldEffect.SetTargetImage( imageActor );
+  foldEffect.SetTargetTexture( texture );
   foldEffect.StartTransition(false);
-  Wait( application, TRANSITION_DURATION );
-  DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(),fullBrightness, FLT_EPISILON, TEST_LOCATION );
+  Wait( application, TRANSITION_BEFORE_END_DURATION );
+  DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90,  Vector3::YAXIS), EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90,  Vector3::YAXIS), EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(),FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
 
-  foldEffect.SetTargetImage( imageActor );
+  foldEffect.SetTargetTexture( texture );
   foldEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
-  Wait( application, TRANSITION_DURATION );
-  DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( 0.f,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 0.f,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
+  Wait( application, TRANSITION_BEFORE_END_DURATION );
+  DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90,  Vector3::YAXIS), EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90,  Vector3::YAXIS), EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
   END_TEST;
 }
 
@@ -533,84 +608,84 @@ int UtcDaliCubeTransitionEffectSignalTransitionCompleted(void)
   tet_infoline(" UtcDaliCubeTransitionEffectSignalTransitionCompleted ");
 
   application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
-  ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
-  ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
-  ImageActor thirdImageActor = CreateSolidColorImageActor(application, Color::BLUE,40,40);
+  Texture firstTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 30, 30 );
+  Texture secondTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 20, 20 );
+  Texture thirdTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 40, 40 );
 
-  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
+  waveEffect.SetSize( VIEW_AREA_SIZE );
   waveEffect.SetTransitionDuration( TRANSITION_DURATION );
   waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
-  Actor rootActor = waveEffect.GetRoot();
-  Stage::GetCurrent().Add( rootActor );
+  Stage::GetCurrent().Add( waveEffect );
 
-  CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
+  crossEffect.SetSize( VIEW_AREA_SIZE );
   crossEffect.SetTransitionDuration( TRANSITION_DURATION );
   crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
-  rootActor = crossEffect.GetRoot();
-  Stage::GetCurrent().Add( rootActor );
+  Stage::GetCurrent().Add( crossEffect );
 
-  CubeTransitionEffect foldEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  CubeTransitionEffect foldEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
+  foldEffect.SetSize( VIEW_AREA_SIZE );
   foldEffect.SetTransitionDuration( TRANSITION_DURATION );
-  rootActor = foldEffect.GetRoot();
-  Stage::GetCurrent().Add( rootActor );
+  Stage::GetCurrent().Add( foldEffect );
 
   bool signalVerified = false;
   CubeTransitionEffect currentEffect;
-  ImageActor actorTransitTo;
+  Texture actorTransitTo;
   TransitionCompletedCallback callback(signalVerified, currentEffect, actorTransitTo);
   waveEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
   crossEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
   foldEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
 
-  //check that the wave effect is used to transit to secondImageActor
+  //check that the wave effect is used to transit to secondTexture
   currentEffect = waveEffect;
-  actorTransitTo = secondImageActor;
-  waveEffect.SetCurrentImage( firstImageActor );
-  waveEffect.SetTargetImage( secondImageActor );
+  actorTransitTo = secondTexture;
+  waveEffect.SetCurrentTexture( firstTexture );
+  waveEffect.SetTargetTexture( secondTexture );
   waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
   Wait( application, TRANSITION_DURATION );
   DALI_TEST_CHECK(callback.mSignalVerified);
   callback.Reset();
 
-  //check that the wave effect is used to transit to thirdImageActor
-  actorTransitTo = thirdImageActor;
-  waveEffect.SetTargetImage( thirdImageActor );
+  //check that the wave effect is used to transit to thirdTexture
+  actorTransitTo = thirdTexture;
+  waveEffect.SetTargetTexture( thirdTexture );
   waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
   Wait( application, TRANSITION_DURATION );
   DALI_TEST_CHECK(callback.mSignalVerified);
   callback.Reset();
 
-  //check that the cross effect is used to transit to secondImageActor
+  //check that the cross effect is used to transit to secondTexture
   currentEffect = crossEffect;
-  actorTransitTo = secondImageActor;
-  crossEffect.SetCurrentImage( thirdImageActor );
-  crossEffect.SetTargetImage( secondImageActor );
+  actorTransitTo = secondTexture;
+  crossEffect.SetCurrentTexture( thirdTexture );
+  crossEffect.SetTargetTexture( secondTexture );
   crossEffect.StartTransition(true);
   Wait( application, TRANSITION_DURATION );
   DALI_TEST_CHECK(callback.mSignalVerified);
   callback.Reset();
 
-  //check that the cross effect is used to transit to firstImageActor
-  actorTransitTo = firstImageActor;
-  crossEffect.SetTargetImage( firstImageActor );
+  //check that the cross effect is used to transit to firstTexture
+  actorTransitTo = firstTexture;
+  crossEffect.SetTargetTexture( firstTexture );
   crossEffect.StartTransition(false);
   Wait( application, TRANSITION_DURATION );
   DALI_TEST_CHECK(callback.mSignalVerified);
   callback.Reset();
 
-  //check that the fold effect is used to transit to secondImageActor
+  //check that the fold effect is used to transit to secondTexture
   currentEffect = foldEffect;
-  actorTransitTo = secondImageActor;
-  foldEffect.SetCurrentImage( firstImageActor );
-  foldEffect.SetTargetImage( secondImageActor );
+  actorTransitTo = secondTexture;
+  foldEffect.SetCurrentTexture( firstTexture );
+  foldEffect.SetTargetTexture( secondTexture );
   foldEffect.StartTransition();
   Wait( application, TRANSITION_DURATION );
   DALI_TEST_CHECK( callback.mSignalVerified );
   callback.Reset();
 
-  //check that the fold effect is used to transit to thirdImageActor
-  actorTransitTo = thirdImageActor;
-  foldEffect.SetTargetImage( thirdImageActor );
+  //check that the fold effect is used to transit to thirdTexture
+  actorTransitTo = thirdTexture;
+  foldEffect.SetTargetTexture( thirdTexture );
   foldEffect.StartTransition( false );
   Wait( application, TRANSITION_DURATION );
   DALI_TEST_CHECK( callback.mSignalVerified );
@@ -623,38 +698,38 @@ int UtcDaliCubeTransitionEffectPauseResumeTransition(void)
   tet_infoline(" UtcDaliCubeTransitionEffectPauseResumeTransition ");
 
   application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
-  ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
-  ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
+  Texture firstTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 30, 30 );
+  Texture secondTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 20, 20 );
 
-  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
+  waveEffect.SetSize( VIEW_AREA_SIZE );
   waveEffect.SetTransitionDuration( TRANSITION_DURATION );
   waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
-  Actor rootActor = waveEffect.GetRoot();
-  Stage::GetCurrent().Add( rootActor );
+  Stage::GetCurrent().Add( waveEffect );
 
-  CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
+  crossEffect.SetSize( VIEW_AREA_SIZE );
   crossEffect.SetTransitionDuration( TRANSITION_DURATION );
   crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
-  rootActor = crossEffect.GetRoot();
-  Stage::GetCurrent().Add( rootActor );
+  Stage::GetCurrent().Add( crossEffect );
 
-  CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
+  foldEffect.SetSize( VIEW_AREA_SIZE );
   foldEffect.SetTransitionDuration( TRANSITION_DURATION );
-  rootActor = crossEffect.GetRoot();
-  Stage::GetCurrent().Add( rootActor );
+  Stage::GetCurrent().Add( foldEffect );
 
   bool signalVerified = false;
   CubeTransitionEffect currentEffect;
-  ImageActor actorTransitTo;
+  Texture actorTransitTo;
   TransitionCompletedCallback callback(signalVerified, currentEffect, actorTransitTo);
   waveEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
   crossEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
   foldEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
 
   currentEffect = waveEffect;
-  actorTransitTo = secondImageActor;
-  waveEffect.SetCurrentImage( firstImageActor );
-  waveEffect.SetTargetImage( secondImageActor );
+  actorTransitTo = secondTexture;
+  waveEffect.SetCurrentTexture( firstTexture );
+  waveEffect.SetTargetTexture( secondTexture );
   // start transition; transit for 0.5*duration; pause for 0.5*duration;
   // resume for 0.25*duration; pause for 0.25*duration; resume for another 0.25*duration;
   // only until now the transition finished signal can be received
@@ -676,9 +751,9 @@ int UtcDaliCubeTransitionEffectPauseResumeTransition(void)
   callback.Reset();
 
   currentEffect = crossEffect;
-  actorTransitTo = firstImageActor;
-  crossEffect.SetCurrentImage( secondImageActor );
-  crossEffect.SetTargetImage( firstImageActor );
+  actorTransitTo = firstTexture;
+  crossEffect.SetCurrentTexture( secondTexture );
+  crossEffect.SetTargetTexture( firstTexture );
   // start transition; transit for 0.25*duration; pause for 0.2*duration;
   // resume for 0.5*duration; pause for 0.2*duration; resume for another 0.25*duration;
   // only until now the transition finished signal can be received
@@ -700,9 +775,9 @@ int UtcDaliCubeTransitionEffectPauseResumeTransition(void)
   callback.Reset();
 
   currentEffect = foldEffect;
-  actorTransitTo = secondImageActor;
-  foldEffect.SetCurrentImage( firstImageActor );
-  foldEffect.SetTargetImage( secondImageActor );
+  actorTransitTo = secondTexture;
+  foldEffect.SetCurrentTexture( firstTexture );
+  foldEffect.SetTargetTexture( secondTexture );
   // start transition; transit for 0.5*duration; pause for 0.5*duration;
   // resume for 0.25*duration; pause for 0.25*duration; resume for another 0.25*duration;
   // only until now the transition finished signal can be received
@@ -730,60 +805,63 @@ int UtcDaliCubeTransitionWaveEffectStopTransition(void)
   tet_infoline(" UtcDaliCubeTransitionWaveEffectStopTransition ");
 
   application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
-  ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
-  ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
+  Texture firstTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 30, 30 );
+  Texture secondTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 20, 20 );
 
-  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
+  waveEffect.SetSize( VIEW_AREA_SIZE );
   waveEffect.SetTransitionDuration( TRANSITION_DURATION );
   waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
-  Actor rootActor = waveEffect.GetRoot();
-  Stage::GetCurrent().Add( rootActor );
-  Actor cube = rootActor.GetChildAt(0);
-  waveEffect.SetCurrentImage( firstImageActor );
+  waveEffect.SetCurrentTexture( firstTexture );
+  waveEffect.SetTargetTexture( secondTexture );
 
-  Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
-  Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
+  Stage::GetCurrent().Add( waveEffect );
+
+  application.SendNotification();
+  application.Render();
 
-  //check the cube rotation value and color values after stopping different transitions in the middle
-  waveEffect.SetTargetImage( secondImageActor );
   waveEffect.StartTransition(true);
+
+  Actor cube = waveEffect.GetChildAt(0).GetChildAt(0);
+
+  //check the cube rotation value and color values reset after stopping different transitions in the middle
   Wait( application, TRANSITION_DURATION*0.2f );
   waveEffect.StopTransition();
   application.SendNotification();
   application.Render(RENDER_FRAME_INTERVAL);
-  DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( -Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::ZERO), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
 
-  waveEffect.SetTargetImage( firstImageActor );
+  waveEffect.SetTargetTexture( firstTexture );
   waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
   Wait( application, TRANSITION_DURATION*0.4f );
   waveEffect.StopTransition();
   application.SendNotification();
   application.Render(RENDER_FRAME_INTERVAL);
-  DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::ZERO), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
 
-  waveEffect.SetTargetImage( secondImageActor );
+  waveEffect.SetTargetTexture( secondTexture );
   waveEffect.StartTransition(false);
   Wait( application, TRANSITION_DURATION*0.6f );
   waveEffect.StopTransition();
   application.SendNotification();
   application.Render(RENDER_FRAME_INTERVAL);
-  DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( -Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::ZERO), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
 
-  waveEffect.SetTargetImage( firstImageActor );
+  waveEffect.SetTargetTexture( firstTexture );
   waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
   Wait( application, TRANSITION_DURATION*0.8f );
   waveEffect.StopTransition();
   application.SendNotification();
   application.Render(RENDER_FRAME_INTERVAL);
-  DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( 0.f,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::ZERO), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
   END_TEST;
 }
 
@@ -793,66 +871,68 @@ int UtcDaliCubeTransitionCrossEffectStopTransition(void)
   tet_infoline(" UtcDaliCubeTransitionCrossEffectStopTransition ");
 
   application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
-  ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
-  ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
+  Texture firstTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 30, 30 );
+  Texture secondTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 20, 20 );
 
-  CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
+  crossEffect.SetSize( VIEW_AREA_SIZE );
   crossEffect.SetTransitionDuration( TRANSITION_DURATION );
   crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
-  Actor rootActor = crossEffect.GetRoot();
-  Stage::GetCurrent().Add( rootActor );
-  crossEffect.SetCurrentImage( firstImageActor );
-  Actor cube0 = rootActor.GetChildAt(0);
-  Actor cube1 = rootActor.GetChildAt(1);
+  crossEffect.SetCurrentTexture( firstTexture );
+  crossEffect.SetTargetTexture( secondTexture );
 
-  Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
-  Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
+  Stage::GetCurrent().Add( crossEffect );
+
+  application.SendNotification();
+  application.Render();
 
-  //check the cube rotation values and color values after stop the different transitions in the middle
-  crossEffect.SetTargetImage( secondImageActor );
   crossEffect.StartTransition(true);
+
+  Actor cube0 = crossEffect.GetChildAt(0).GetChildAt(0);
+  Actor cube1 = crossEffect.GetChildAt(0).GetChildAt(1);
+
+  //check the cube rotation values and color values reset after stop the different transitions in the middle
   Wait( application, TRANSITION_DURATION*0.2f );
   crossEffect.StopTransition();
   application.SendNotification();
   application.Render(RENDER_FRAME_INTERVAL);
-  DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2,  Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::ZERO), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::ZERO), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
 
-  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
-
-  crossEffect.SetTargetImage( firstImageActor );
+  crossEffect.SetTargetTexture( firstTexture );
   crossEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
   Wait( application, TRANSITION_DURATION*0.4f );
   crossEffect.StopTransition();
   application.SendNotification();
   application.Render(RENDER_FRAME_INTERVAL);
-  DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 2.f*Math::PI_2,  Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::ZERO), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::ZERO), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
 
-  crossEffect.SetTargetImage( secondImageActor );
+  crossEffect.SetTargetTexture( secondTexture );
   crossEffect.StartTransition(false);
   Wait( application, TRANSITION_DURATION*0.6f );
   crossEffect.StopTransition();
   application.SendNotification();
   application.Render(RENDER_FRAME_INTERVAL);
-  DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2,  Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::ZERO), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::ZERO), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
 
-  crossEffect.SetTargetImage( firstImageActor );
+  crossEffect.SetTargetTexture( firstTexture );
   crossEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
   Wait( application, TRANSITION_DURATION*0.8f );
   crossEffect.StopTransition();
   application.SendNotification();
   application.Render(RENDER_FRAME_INTERVAL);
-  DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( 0.f,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 0.f,  Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
   END_TEST;
 }
 
@@ -862,63 +942,67 @@ int UtcDaliCubeTransitionFoldEffectStopTransition(void)
   tet_infoline(" UtcDaliCubeTransitionFoldEffectStopTransition ");
 
   application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
-  ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
-  ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
+  Texture firstTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 30, 30 );
+  Texture secondTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 20, 20 );
 
-  CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
+  CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
+  foldEffect.SetSize( VIEW_AREA_SIZE );
   foldEffect.SetTransitionDuration( TRANSITION_DURATION );
-  Actor rootActor = foldEffect.GetRoot();
-  Stage::GetCurrent().Add( rootActor );
-  foldEffect.SetCurrentImage( firstImageActor );
-  Actor cube0 = rootActor.GetChildAt(0);
-  Actor cube1 = rootActor.GetChildAt(1);
+  foldEffect.SetCurrentTexture( firstTexture );
+  foldEffect.SetTargetTexture( secondTexture );
 
-  Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
-  Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
+  Stage::GetCurrent().Add( foldEffect );
+
+  application.SendNotification();
+  application.Render();
 
-  //check the cube rotation values and color values after stop the different transitions in the middle
-  foldEffect.SetTargetImage( secondImageActor );
   foldEffect.StartTransition(true);
+
+  Actor cube0 = foldEffect.GetChildAt(0).GetChildAt(0);
+  Actor cube1 = foldEffect.GetChildAt(0).GetChildAt(1);
+
+  //check the cube rotation values and color values after stop the different transitions in the middle
   Wait( application, TRANSITION_DURATION*0.2f );
   foldEffect.StopTransition();
   application.SendNotification();
   application.Render(RENDER_FRAME_INTERVAL);
-  DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
 
-  foldEffect.SetTargetImage( firstImageActor );
+  DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
+
+  foldEffect.SetTargetTexture( firstTexture );
   foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
   Wait( application, TRANSITION_DURATION*0.4f );
   foldEffect.StopTransition();
   application.SendNotification();
   application.Render(RENDER_FRAME_INTERVAL);
-  DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 2.f*Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
 
-  foldEffect.SetTargetImage( secondImageActor );
+  foldEffect.SetTargetTexture( secondTexture );
   foldEffect.StartTransition(false);
   Wait( application, TRANSITION_DURATION*0.6f );
   foldEffect.StopTransition();
   application.SendNotification();
   application.Render(RENDER_FRAME_INTERVAL);
-  DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
 
-  foldEffect.SetTargetImage( firstImageActor );
+  foldEffect.SetTargetTexture( firstTexture );
   foldEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
   Wait( application, TRANSITION_DURATION*0.8f );
   foldEffect.StopTransition();
   application.SendNotification();
   application.Render(RENDER_FRAME_INTERVAL);
-  DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( 0.f,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 0.f,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
-  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
-  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0,  Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION  );
+  DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
+  DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
   END_TEST;
 }